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 2021/10/27 12:12:12 UTC

[myfaces-tobago] branch tobago-5.x updated: refactor: clean up CSS class names

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

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


The following commit(s) were added to refs/heads/tobago-5.x by this push:
     new 88b0d10  refactor: clean up CSS class names
88b0d10 is described below

commit 88b0d10047aaff9589b2a72a7bf194af3f6d578f
Author: Udo Schnurpfeil <ud...@irian.eu>
AuthorDate: Wed Oct 27 14:09:04 2021 +0200

    refactor: clean up CSS class names
---
 .../renderkit/renderer/TabGroupRenderer.java       |   8 +-
 .../internal/renderkit/renderer/TabRenderer.java   |   3 +-
 .../myfaces/tobago/renderkit/css/TobagoClass.java  |  10 +-
 .../tobago/renderkit/html/DataAttributes.java      |   5 +
 .../tobago/renderkit/html/HtmlElements.java        |   1 -
 .../internal/config/AbstractTobagoTestBase.java    |   8 ++
 .../renderer/TabGroupRendererUnitTest.java         | 107 +++++++++++++++++++++
 .../resources/renderer/tabGroup/tabGroup-bar.html  |  39 ++++++++
 .../renderer/tabGroup/tabGroup-label.html          |  36 +++++++
 .../test/resources/renderer/tabGroup/tabGroup.html |  36 +++++++
 tobago-theme/src/main/scss/_tobago.scss            |   9 +-
 .../src/main/css/tobago.css                        |  19 ++--
 .../src/main/css/tobago.css.map                    |   2 +-
 .../src/main/css/tobago.css                        |  19 ++--
 .../src/main/css/tobago.css.map                    |   2 +-
 .../src/main/css/tobago.css                        |  19 ++--
 .../src/main/css/tobago.css.map                    |   2 +-
 .../tobago-theme-speyside/src/main/css/tobago.css  |  21 ++--
 .../src/main/css/tobago.css.map                    |   2 +-
 .../src/main/scss/_speyside-overwrites.scss        |   2 +-
 .../tobago-theme-standard/src/main/css/tobago.css  |  19 ++--
 .../src/main/css/tobago.css.map                    |   2 +-
 .../tobago-theme-standard/src/main/js/tobago.js    |  11 +--
 .../src/main/js/tobago.js.map                      |   2 +-
 .../src/main/js/tobago.min.js                      |   4 +-
 .../src/main/js/tobago.min.js.map                  |   2 +-
 .../src/main/ts/tobago-tab.ts                      |  14 +--
 27 files changed, 291 insertions(+), 113 deletions(-)

diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/TabGroupRenderer.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/TabGroupRenderer.java
index 150f89f..b4351e3 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/TabGroupRenderer.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/TabGroupRenderer.java
@@ -244,7 +244,7 @@ public class TabGroupRenderer<T extends AbstractUITabGroup> extends RendererBase
           writer.writeIdAttribute(tabId);
           writer.writeClassAttribute(
               BootstrapClass.NAV_ITEM,
-              barFacet != null ? TobagoClass.TAB__BAR_FACET : null,
+              barFacet != null ? TobagoClass.BAR : null,
               tab.getCustomClass());
           writer.writeAttribute(HtmlAttributes.FOR, tabGroupClientId, true);
           writer.writeAttribute(HtmlAttributes.ROLE, HtmlRoleValues.PRESENTATION.toString(), false);
@@ -333,18 +333,18 @@ public class TabGroupRenderer<T extends AbstractUITabGroup> extends RendererBase
         if (tab.isRendered() && (switchType == SwitchType.client || index == selectedIndex) && !tab.isDisabled()) {
           final Markup markup = tab.getMarkup();
 
-          writer.startElement(HtmlElements.TOBAGO_TAB_CONTENT);
+          writer.startElement(HtmlElements.DIV);
           writer.writeClassAttribute(
               BootstrapClass.TAB_PANE,
               index == selectedIndex ? BootstrapClass.ACTIVE : null);
           writer.writeAttribute(HtmlAttributes.ROLE, HtmlRoleValues.TABPANEL.toString(), false);
           writer.writeIdAttribute(getTabPanelId(facesContext, tab));
 
-          writer.writeAttribute(CustomAttributes.INDEX, index);
+          writer.writeAttribute(DataAttributes.INDEX, index);
 
           tab.encodeAll(facesContext);
 
-          writer.endElement(HtmlElements.TOBAGO_TAB_CONTENT);
+          writer.endElement(HtmlElements.DIV);
         }
         index++;
       }
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/TabRenderer.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/TabRenderer.java
index 1482159..0213125 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/TabRenderer.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/TabRenderer.java
@@ -19,9 +19,10 @@
 
 package org.apache.myfaces.tobago.internal.renderkit.renderer;
 
+import org.apache.myfaces.tobago.internal.component.AbstractUITab;
 import org.apache.myfaces.tobago.renderkit.RendererBase;
 
-public class TabRenderer extends RendererBase {
+public class TabRenderer<T extends AbstractUITab> extends RendererBase<T> {
 
   @Override
   public boolean getRendersChildren() {
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/TobagoClass.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/TobagoClass.java
index 493bfe3..93c78af 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/TobagoClass.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/TobagoClass.java
@@ -29,7 +29,7 @@ public enum TobagoClass implements CssItem {
   ASCENDING("tobago-ascending"),
   AUTO__SPACING("tobago-auto-spacing"),
 //  BADGE("tobago-badge"),
-//  BAR("tobago-bar"),
+  BAR("tobago-bar"),
   BOX__HEADER("tobago-box-header"),
   // tbd: can this be removed, when using <tobago-button>?
   BUTTON("tobago-button"),
@@ -109,10 +109,10 @@ public enum TobagoClass implements CssItem {
   STARS__SLIDER("tobago-stars-slider"),
   STARS__TOOLTIP("tobago-stars-tooltip"),
   STARS__UNSELECTED("tobago-stars-unselected"),
-  TAB("tobago-tab"),
-  TAB__BAR_FACET("tobago-tab-barFacet"),
-  TAB__CONTENT("tobago-tab-content"),
-  TAB_GROUP("tobago-tabGroup"),
+//  TAB("tobago-tab"),
+//  TAB__BAR_FACET("tobago-tab-barFacet"),
+//  TAB__CONTENT("tobago-tab-content"),
+//  TAB_GROUP("tobago-tabGroup"),
   TABLE_LAYOUT__FIXED("tobago-tableLayout-fixed"),
   TEXT__JUSTIFY("tobago-text-justify"),
   TREE_LABEL("tobago-treeLabel"),
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/html/DataAttributes.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/html/DataAttributes.java
index cf8c22e..40fc01f 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/html/DataAttributes.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/html/DataAttributes.java
@@ -80,6 +80,11 @@ public enum DataAttributes implements MarkupLanguageAttributes {
   FIRST_DAY_OF_WEEK("data-tobago-first-day-of-week"),
 
   /**
+   * Defines e.g. the index of a tab inside a tab group.
+   */
+  INDEX("data-index"),
+
+  /**
    * Defines a maximum value.
    */
   LAYOUT("data-tobago-layout"),
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/html/HtmlElements.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/html/HtmlElements.java
index d3af024..7fdd5b0 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/html/HtmlElements.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/html/HtmlElements.java
@@ -180,7 +180,6 @@ public enum HtmlElements {
   TOBAGO_STARS("tobago-stars"),
   TOBAGO_SUGGEST("tobago-suggest"),
   TOBAGO_TAB("tobago-tab"),
-  TOBAGO_TAB_CONTENT("tobago-tab-content"),
   TOBAGO_TAB_GROUP("tobago-tab-group"),
   TOBAGO_TEXTAREA("tobago-textarea"),
   TOBAGO_TREE("tobago-tree"),
diff --git a/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/config/AbstractTobagoTestBase.java b/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/config/AbstractTobagoTestBase.java
index 06a6d8a..685e658 100644
--- a/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/config/AbstractTobagoTestBase.java
+++ b/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/config/AbstractTobagoTestBase.java
@@ -52,6 +52,8 @@ import org.apache.myfaces.tobago.component.UISelectOneRadio;
 import org.apache.myfaces.tobago.component.UISelectReference;
 import org.apache.myfaces.tobago.component.UISeparator;
 import org.apache.myfaces.tobago.component.UIStyle;
+import org.apache.myfaces.tobago.component.UITab;
+import org.apache.myfaces.tobago.component.UITabGroup;
 import org.apache.myfaces.tobago.component.UITextarea;
 import org.apache.myfaces.tobago.component.UITree;
 import org.apache.myfaces.tobago.component.UITreeIndent;
@@ -86,6 +88,8 @@ import org.apache.myfaces.tobago.internal.renderkit.renderer.SelectOneRadioRende
 import org.apache.myfaces.tobago.internal.renderkit.renderer.SelectReferenceRenderer;
 import org.apache.myfaces.tobago.internal.renderkit.renderer.SeparatorRenderer;
 import org.apache.myfaces.tobago.internal.renderkit.renderer.StyleRenderer;
+import org.apache.myfaces.tobago.internal.renderkit.renderer.TabGroupRenderer;
+import org.apache.myfaces.tobago.internal.renderkit.renderer.TabRenderer;
 import org.apache.myfaces.tobago.internal.renderkit.renderer.TextareaRenderer;
 import org.apache.myfaces.tobago.internal.renderkit.renderer.TobagoClientBehaviorRenderer;
 import org.apache.myfaces.tobago.internal.renderkit.renderer.TreeIndentRenderer;
@@ -175,6 +179,8 @@ public abstract class AbstractTobagoTestBase extends AbstractJsfTestCase {
     application.addComponent(Tags.selectReference.componentType(), UISelectReference.class.getName());
     application.addComponent(Tags.separator.componentType(), UISeparator.class.getName());
     application.addComponent(Tags.style.componentType(), UIStyle.class.getName());
+    application.addComponent(Tags.tab.componentType(), UITab.class.getName());
+    application.addComponent(Tags.tabGroup.componentType(), UITabGroup.class.getName());
     application.addComponent(Tags.textarea.componentType(), UITextarea.class.getName());
     application.addComponent(Tags.tree.componentType(), UITree.class.getName());
     application.addComponent(Tags.treeNode.componentType(), UITreeNode.class.getName());
@@ -223,6 +229,8 @@ public abstract class AbstractTobagoTestBase extends AbstractJsfTestCase {
         UISelectReference.COMPONENT_FAMILY, RendererTypes.SELECT_REFERENCE, new SelectReferenceRenderer());
     renderKit.addRenderer(UISeparator.COMPONENT_FAMILY, RendererTypes.SEPARATOR, new SeparatorRenderer());
     renderKit.addRenderer(UIStyle.COMPONENT_FAMILY, RendererTypes.STYLE, new StyleRenderer());
+    renderKit.addRenderer(UITab.COMPONENT_FAMILY, RendererTypes.TAB, new TabRenderer<UITab>());
+    renderKit.addRenderer(UITabGroup.COMPONENT_FAMILY, RendererTypes.TAB_GROUP, new TabGroupRenderer<UITabGroup>());
     renderKit.addRenderer(UITextarea.COMPONENT_FAMILY, RendererTypes.TEXTAREA, new TextareaRenderer());
     renderKit.addRenderer(UITree.COMPONENT_FAMILY, RendererTypes.TREE, new TreeRenderer());
     renderKit.addRenderer(UITreeNode.COMPONENT_FAMILY, RendererTypes.TREE_NODE, new TreeNodeRenderer());
diff --git a/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/renderkit/renderer/TabGroupRendererUnitTest.java b/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/renderkit/renderer/TabGroupRendererUnitTest.java
new file mode 100644
index 0000000..a95a6ce
--- /dev/null
+++ b/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/renderkit/renderer/TabGroupRendererUnitTest.java
@@ -0,0 +1,107 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.tobago.internal.renderkit.renderer;
+
+import org.apache.myfaces.tobago.component.RendererTypes;
+import org.apache.myfaces.tobago.component.Tags;
+import org.apache.myfaces.tobago.component.UIButton;
+import org.apache.myfaces.tobago.component.UIOut;
+import org.apache.myfaces.tobago.component.UITab;
+import org.apache.myfaces.tobago.component.UITabGroup;
+import org.apache.myfaces.tobago.util.ComponentUtils;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import java.io.IOException;
+
+public class TabGroupRendererUnitTest extends RendererTestBase {
+
+  @Test
+  public void tabGroup() throws IOException {
+    final UITabGroup tg = (UITabGroup) ComponentUtils.createComponent(
+        facesContext, Tags.tabGroup.componentType(), RendererTypes.TabGroup, "id");
+
+    final UITab t1 = (UITab) ComponentUtils.createComponent(
+        facesContext, Tags.tab.componentType(), RendererTypes.Tab, "t1");
+    t1.setLabel("T1");
+
+    final UITab t2 = (UITab) ComponentUtils.createComponent(
+        facesContext, Tags.tab.componentType(), RendererTypes.Tab, "t2");
+    t2.setLabel("T2");
+
+    tg.getChildren().add(t1);
+    tg.getChildren().add(t2);
+
+    tg.encodeAll(facesContext);
+
+    Assertions.assertEquals(loadHtml("renderer/tabGroup/tabGroup.html"), formattedResult());
+  }
+
+  @Test
+  public void withBar() throws IOException {
+    final UITabGroup tg = (UITabGroup) ComponentUtils.createComponent(
+        facesContext, Tags.tabGroup.componentType(), RendererTypes.TabGroup, "id");
+
+    final UITab t1 = (UITab) ComponentUtils.createComponent(
+        facesContext, Tags.tab.componentType(), RendererTypes.Tab, "t1");
+    t1.setLabel("T1");
+
+    final UITab t2 = (UITab) ComponentUtils.createComponent(
+        facesContext, Tags.tab.componentType(), RendererTypes.Tab, "t2");
+    t2.setLabel("T2");
+    final UIButton b = (UIButton) ComponentUtils.createComponent(
+        facesContext, Tags.button.componentType(), RendererTypes.Button, "b");
+    b.setLabel("B");
+    t2.getFacets().put("bar", b);
+
+    tg.getChildren().add(t1);
+    tg.getChildren().add(t2);
+
+    tg.encodeAll(facesContext);
+
+    Assertions.assertEquals(loadHtml("renderer/tabGroup/tabGroup-bar.html"), formattedResult());
+  }
+
+  @Test
+  public void withLabel() throws IOException {
+    final UITabGroup tg = (UITabGroup) ComponentUtils.createComponent(
+        facesContext, Tags.tabGroup.componentType(), RendererTypes.TabGroup, "id");
+
+    final UITab t1 = (UITab) ComponentUtils.createComponent(
+        facesContext, Tags.tab.componentType(), RendererTypes.Tab, "t1");
+    t1.setLabel("T1");
+
+    final UITab t2 = (UITab) ComponentUtils.createComponent(
+        facesContext, Tags.tab.componentType(), RendererTypes.Tab, "t2");
+    t2.setLabel("T2");
+    final UIOut o = (UIOut) ComponentUtils.createComponent(
+        facesContext, Tags.out.componentType(), RendererTypes.Out, "o");
+    o.setLabel("Label");
+    t2.getFacets().put("label", o);
+
+    tg.getChildren().add(t1);
+    tg.getChildren().add(t2);
+
+    tg.encodeAll(facesContext);
+
+    Assertions.assertEquals(loadHtml("renderer/tabGroup/tabGroup-label.html"), formattedResult());
+  }
+
+}
diff --git a/tobago-core/src/test/resources/renderer/tabGroup/tabGroup-bar.html b/tobago-core/src/test/resources/renderer/tabGroup/tabGroup-bar.html
new file mode 100644
index 0000000..086a15b
--- /dev/null
+++ b/tobago-core/src/test/resources/renderer/tabGroup/tabGroup-bar.html
@@ -0,0 +1,39 @@
+<!--
+ * 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.
+-->
+
+<tobago-tab-group id='id' class='card tobago-auto-spacing' switch-type='client'>
+  <input type='hidden' value='0' name='id::index' id='id::index'>
+  <div class='card-header'>
+    <ul class='nav nav-tabs card-header-tabs' role='tablist'>
+      <tobago-tab id='t1' class='nav-item' for='id' role='presentation' index='0'>
+        <a data-toggle='tab' class='nav-link active' href='#t1::content' data-target='#t1\:\:content' role='tab'><span>T1</span></a>
+      </tobago-tab>
+      <tobago-tab id='t2' class='nav-item tobago-bar' for='id' role='presentation' index='1'>
+        <a data-toggle='tab' class='nav-link' href='#t2::content' data-target='#t2\:\:content' role='tab'><span>T2</span></a>
+        <div>
+          <button type='button' id='t2:b' name='t2:b' class='tobago-button btn btn-secondary'><tobago-behavior event='click' client-id='t2:b'></tobago-behavior><span>B</span></button>
+        </div>
+      </tobago-tab>
+    </ul>
+  </div>
+  <div class='card-body tab-content'>
+    <div class='tab-pane active' role='tabpanel' id='t1::content' data-index='0'>
+    </div>
+    <div class='tab-pane' role='tabpanel' id='t2::content' data-index='1'>
+    </div>
+  </div>
+</tobago-tab-group>
\ No newline at end of file
diff --git a/tobago-core/src/test/resources/renderer/tabGroup/tabGroup-label.html b/tobago-core/src/test/resources/renderer/tabGroup/tabGroup-label.html
new file mode 100644
index 0000000..ca8e0d8
--- /dev/null
+++ b/tobago-core/src/test/resources/renderer/tabGroup/tabGroup-label.html
@@ -0,0 +1,36 @@
+<!--
+ * 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.
+-->
+
+<tobago-tab-group id='id' class='card tobago-auto-spacing' switch-type='client'>
+  <input type='hidden' value='0' name='id::index' id='id::index'>
+  <div class='card-header'>
+    <ul class='nav nav-tabs card-header-tabs' role='tablist'>
+      <tobago-tab id='t1' class='nav-item' for='id' role='presentation' index='0'>
+        <a data-toggle='tab' class='nav-link active' href='#t1::content' data-target='#t1\:\:content' role='tab'><span>T1</span></a>
+      </tobago-tab>
+      <tobago-tab id='t2' class='nav-item' for='id' role='presentation' index='1'>
+        <a data-toggle='tab' class='nav-link' href='#t2::content' data-target='#t2\:\:content' role='tab'><span>T2</span><tobago-out id='t2:o' class='tobago-label-container'><label for='t2:o' class='col-form-label'>Label</label><span class='form-control-plaintext'></span></tobago-out></a>
+      </tobago-tab>
+    </ul>
+  </div>
+  <div class='card-body tab-content'>
+    <div class='tab-pane active' role='tabpanel' id='t1::content' data-index='0'>
+    </div>
+    <div class='tab-pane' role='tabpanel' id='t2::content' data-index='1'>
+    </div>
+  </div>
+</tobago-tab-group>
\ No newline at end of file
diff --git a/tobago-core/src/test/resources/renderer/tabGroup/tabGroup.html b/tobago-core/src/test/resources/renderer/tabGroup/tabGroup.html
new file mode 100644
index 0000000..c8a6632
--- /dev/null
+++ b/tobago-core/src/test/resources/renderer/tabGroup/tabGroup.html
@@ -0,0 +1,36 @@
+<!--
+ * 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.
+-->
+
+<tobago-tab-group id='id' class='card tobago-auto-spacing' switch-type='client'>
+  <input type='hidden' value='0' name='id::index' id='id::index'>
+  <div class='card-header'>
+    <ul class='nav nav-tabs card-header-tabs' role='tablist'>
+      <tobago-tab id='t1' class='nav-item' for='id' role='presentation' index='0'>
+        <a data-toggle='tab' class='nav-link active' href='#t1::content' data-target='#t1\:\:content' role='tab'><span>T1</span></a>
+      </tobago-tab>
+      <tobago-tab id='t2' class='nav-item' for='id' role='presentation' index='1'>
+        <a data-toggle='tab' class='nav-link' href='#t2::content' data-target='#t2\:\:content' role='tab'><span>T2</span></a>
+      </tobago-tab>
+    </ul>
+  </div>
+  <div class='card-body tab-content'>
+    <div class='tab-pane active' role='tabpanel' id='t1::content' data-index='0'>
+    </div>
+    <div class='tab-pane' role='tabpanel' id='t2::content' data-index='1'>
+    </div>
+  </div>
+</tobago-tab-group>
\ No newline at end of file
diff --git a/tobago-theme/src/main/scss/_tobago.scss b/tobago-theme/src/main/scss/_tobago.scss
index dab2475..83da645 100644
--- a/tobago-theme/src/main/scss/_tobago.scss
+++ b/tobago-theme/src/main/scss/_tobago.scss
@@ -1431,8 +1431,6 @@ tobago-split-layout {
 }
 
 /* tab / tab-group ----------------------------------------------------------------- */
-.tobago-tabGroup, .tobago-tab, .tobago-tab-content {
-}
 
 tobago-tab {
 
@@ -1463,7 +1461,7 @@ tobago-tab {
   }
 }
 
-tobago-tab.tobago-tab-barFacet {
+tobago-tab.tobago-bar {
   display: flex;
 
   > .nav-link {
@@ -1506,11 +1504,6 @@ tobago-tab-group {
   }
 }
 
-/* FIXME: This is to hide the toolbar, until it is implemented */
-.tobago-tabGroup-toolBar {
-  display: none;
-}
-
 /* tree ---------------------------------------------------------------------- */
 .tobago-treeLabel,
 .tobago-treeSelect,
diff --git a/tobago-theme/tobago-theme-charlotteville/src/main/css/tobago.css b/tobago-theme/tobago-theme-charlotteville/src/main/css/tobago.css
index ff81bce..e33fe1a 100644
--- a/tobago-theme/tobago-theme-charlotteville/src/main/css/tobago.css
+++ b/tobago-theme/tobago-theme-charlotteville/src/main/css/tobago.css
@@ -12416,31 +12416,31 @@ tobago-tab .nav-link:not([href]):not([tabindex]).disabled:focus, tobago-tab .nav
   color: #777777;
 }
 
-tobago-tab.tobago-tab-barFacet {
+tobago-tab.tobago-bar {
   display: flex;
 }
-tobago-tab.tobago-tab-barFacet > .nav-link {
+tobago-tab.tobago-bar > .nav-link {
   border-right: 0;
   border-top-right-radius: 0;
 }
-tobago-tab.tobago-tab-barFacet > div {
+tobago-tab.tobago-bar > div {
   border: 1px solid transparent;
   border-top-right-radius: 0.25rem;
   padding-right: 1rem;
 }
-tobago-tab.tobago-tab-barFacet > div > button {
+tobago-tab.tobago-bar > div > button {
   height: 100%;
 }
-tobago-tab.tobago-tab-barFacet > div > a {
+tobago-tab.tobago-bar > div > a {
   display: inline-block;
   padding-top: 0.5rem;
 }
-tobago-tab.tobago-tab-barFacet .nav-link.active + div {
+tobago-tab.tobago-bar .nav-link.active + div {
   background-color: #fffbe8;
   border-top-color: #dee2e6;
   border-right-color: #dee2e6;
 }
-tobago-tab.tobago-tab-barFacet .nav-link:not(.disabled):hover + div {
+tobago-tab.tobago-bar .nav-link:not(.disabled):hover + div {
   border-top-color: #d0d0d0;
   border-right-color: #d0d0d0;
 }
@@ -12452,11 +12452,6 @@ tobago-tab-group tobago-tab > .nav-link > i + span {
   margin-left: 0.4em;
 }
 
-/* FIXME: This is to hide the toolbar, until it is implemented */
-.tobago-tabGroup-toolBar {
-  display: none;
-}
-
 /* tree ---------------------------------------------------------------------- */
 tobago-tree .tobago-treeNode {
   cursor: default;
diff --git a/tobago-theme/tobago-theme-charlotteville/src/main/css/tobago.css.map b/tobago-theme/tobago-theme-charlotteville/src/main/css/tobago.css.map
index fbbfadd..ae863db 100644
--- a/tobago-theme/tobago-theme-charlotteville/src/main/css/tobago.css.map
+++ b/tobago-theme/tobago-theme-charlotteville/src/main/css/tobago.css.map
@@ -1 +1 @@
-{"version":3,"sourceRoot":"","sources":["../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/mixins/_border-radius.scss","../../../../node_modules/bootstrap/scss/_type.scs [...]
\ No newline at end of file
+{"version":3,"sourceRoot":"","sources":["../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/mixins/_border-radius.scss","../../../../node_modules/bootstrap/scss/_type.scs [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-roxborough/src/main/css/tobago.css b/tobago-theme/tobago-theme-roxborough/src/main/css/tobago.css
index 30098db..e841634 100644
--- a/tobago-theme/tobago-theme-roxborough/src/main/css/tobago.css
+++ b/tobago-theme/tobago-theme-roxborough/src/main/css/tobago.css
@@ -12439,31 +12439,31 @@ tobago-tab .nav-link:not([href]):not([tabindex]).disabled:focus, tobago-tab .nav
   color: #777777;
 }
 
-tobago-tab.tobago-tab-barFacet {
+tobago-tab.tobago-bar {
   display: flex;
 }
-tobago-tab.tobago-tab-barFacet > .nav-link {
+tobago-tab.tobago-bar > .nav-link {
   border-right: 0;
   border-top-right-radius: 0;
 }
-tobago-tab.tobago-tab-barFacet > div {
+tobago-tab.tobago-bar > div {
   border: 2px solid transparent;
   border-top-right-radius: 0.25rem;
   padding-right: 1rem;
 }
-tobago-tab.tobago-tab-barFacet > div > button {
+tobago-tab.tobago-bar > div > button {
   height: 100%;
 }
-tobago-tab.tobago-tab-barFacet > div > a {
+tobago-tab.tobago-bar > div > a {
   display: inline-block;
   padding-top: 0.5rem;
 }
-tobago-tab.tobago-tab-barFacet .nav-link.active + div {
+tobago-tab.tobago-bar .nav-link.active + div {
   background-color: #000000;
   border-top-color: #dee2e6;
   border-right-color: #dee2e6;
 }
-tobago-tab.tobago-tab-barFacet .nav-link:not(.disabled):hover + div {
+tobago-tab.tobago-bar .nav-link:not(.disabled):hover + div {
   border-top-color: #e9ecef;
   border-right-color: #e9ecef;
 }
@@ -12475,11 +12475,6 @@ tobago-tab-group tobago-tab > .nav-link > i + span {
   margin-left: 0.4em;
 }
 
-/* FIXME: This is to hide the toolbar, until it is implemented */
-.tobago-tabGroup-toolBar {
-  display: none;
-}
-
 /* tree ---------------------------------------------------------------------- */
 tobago-tree .tobago-treeNode {
   cursor: default;
diff --git a/tobago-theme/tobago-theme-roxborough/src/main/css/tobago.css.map b/tobago-theme/tobago-theme-roxborough/src/main/css/tobago.css.map
index 5e5376b..817be4d 100644
--- a/tobago-theme/tobago-theme-roxborough/src/main/css/tobago.css.map
+++ b/tobago-theme/tobago-theme-roxborough/src/main/css/tobago.css.map
@@ -1 +1 @@
-{"version":3,"sourceRoot":"","sources":["../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/mixins/_border-radius.scss","../../../../node_modules/bootstrap/scss/_type.scs [...]
\ No newline at end of file
+{"version":3,"sourceRoot":"","sources":["../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/mixins/_border-radius.scss","../../../../node_modules/bootstrap/scss/_type.scs [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-scarborough/src/main/css/tobago.css b/tobago-theme/tobago-theme-scarborough/src/main/css/tobago.css
index c29bc69..8564ffc 100644
--- a/tobago-theme/tobago-theme-scarborough/src/main/css/tobago.css
+++ b/tobago-theme/tobago-theme-scarborough/src/main/css/tobago.css
@@ -12426,31 +12426,31 @@ tobago-tab .nav-link:not([href]):not([tabindex]).disabled:focus, tobago-tab .nav
   color: #6c757d;
 }
 
-tobago-tab.tobago-tab-barFacet {
+tobago-tab.tobago-bar {
   display: flex;
 }
-tobago-tab.tobago-tab-barFacet > .nav-link {
+tobago-tab.tobago-bar > .nav-link {
   border-right: 0;
   border-top-right-radius: 0;
 }
-tobago-tab.tobago-tab-barFacet > div {
+tobago-tab.tobago-bar > div {
   border: 1px solid transparent;
   border-top-right-radius: 0.25rem;
   padding-right: 1rem;
 }
-tobago-tab.tobago-tab-barFacet > div > button {
+tobago-tab.tobago-bar > div > button {
   height: 100%;
 }
-tobago-tab.tobago-tab-barFacet > div > a {
+tobago-tab.tobago-bar > div > a {
   display: inline-block;
   padding-top: 0.5rem;
 }
-tobago-tab.tobago-tab-barFacet .nav-link.active + div {
+tobago-tab.tobago-bar .nav-link.active + div {
   background-color: #fff;
   border-top-color: #dee2e6;
   border-right-color: #dee2e6;
 }
-tobago-tab.tobago-tab-barFacet .nav-link:not(.disabled):hover + div {
+tobago-tab.tobago-bar .nav-link:not(.disabled):hover + div {
   border-top-color: #e9ecef;
   border-right-color: #e9ecef;
 }
@@ -12462,11 +12462,6 @@ tobago-tab-group tobago-tab > .nav-link > i + span {
   margin-left: 0.4em;
 }
 
-/* FIXME: This is to hide the toolbar, until it is implemented */
-.tobago-tabGroup-toolBar {
-  display: none;
-}
-
 /* tree ---------------------------------------------------------------------- */
 tobago-tree .tobago-treeNode {
   cursor: default;
diff --git a/tobago-theme/tobago-theme-scarborough/src/main/css/tobago.css.map b/tobago-theme/tobago-theme-scarborough/src/main/css/tobago.css.map
index 09eed32..62ac924 100644
--- a/tobago-theme/tobago-theme-scarborough/src/main/css/tobago.css.map
+++ b/tobago-theme/tobago-theme-scarborough/src/main/css/tobago.css.map
@@ -1 +1 @@
-{"version":3,"sourceRoot":"","sources":["../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/vendor/_rfs.scss","../../../../node_modules/bootstrap/scss/_variables.scss","../../../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../../../../node_modules/bootstrap/scss/_type.scss","../../../../node_mo [...]
\ No newline at end of file
+{"version":3,"sourceRoot":"","sources":["../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/vendor/_rfs.scss","../../../../node_modules/bootstrap/scss/_variables.scss","../../../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../../../../node_modules/bootstrap/scss/_type.scss","../../../../node_mo [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-speyside/src/main/css/tobago.css b/tobago-theme/tobago-theme-speyside/src/main/css/tobago.css
index 6964717..ea9f306 100644
--- a/tobago-theme/tobago-theme-speyside/src/main/css/tobago.css
+++ b/tobago-theme/tobago-theme-speyside/src/main/css/tobago.css
@@ -12125,31 +12125,31 @@ tobago-tab .nav-link:not([href]):not([tabindex]).disabled:focus, tobago-tab .nav
   color: #d7d7d7;
 }
 
-tobago-tab.tobago-tab-barFacet {
+tobago-tab.tobago-bar {
   display: flex;
 }
-tobago-tab.tobago-tab-barFacet > .nav-link {
+tobago-tab.tobago-bar > .nav-link {
   border-right: 0;
   border-top-right-radius: 0;
 }
-tobago-tab.tobago-tab-barFacet > div {
+tobago-tab.tobago-bar > div {
   border: white solid transparent;
   border-top-right-radius: 0.25rem;
   padding-right: 1rem;
 }
-tobago-tab.tobago-tab-barFacet > div > button {
+tobago-tab.tobago-bar > div > button {
   height: 100%;
 }
-tobago-tab.tobago-tab-barFacet > div > a {
+tobago-tab.tobago-bar > div > a {
   display: inline-block;
   padding-top: 0.5rem;
 }
-tobago-tab.tobago-tab-barFacet .nav-link.active + div {
+tobago-tab.tobago-bar .nav-link.active + div {
   background-color: white;
   border-top-color: white;
   border-right-color: white;
 }
-tobago-tab.tobago-tab-barFacet .nav-link:not(.disabled):hover + div {
+tobago-tab.tobago-bar .nav-link:not(.disabled):hover + div {
   border-top-color: #e3e4e5;
   border-right-color: #e3e4e5;
 }
@@ -12161,11 +12161,6 @@ tobago-tab-group tobago-tab > .nav-link > i + span {
   margin-left: 0.4em;
 }
 
-/* FIXME: This is to hide the toolbar, until it is implemented */
-.tobago-tabGroup-toolBar {
-  display: none;
-}
-
 /* tree ---------------------------------------------------------------------- */
 tobago-tree .tobago-treeNode {
   cursor: default;
@@ -12908,7 +12903,7 @@ tobago-tab .nav-link:not([href]):not([tabindex]):not(.active):not(.disabled):hov
   color: #d90;
 }
 
-tobago-tab.tobago-tab-barFacet .nav-link.disabled + div {
+tobago-tab.tobago-bar .nav-link.disabled + div {
   background-color: #f7f7f7;
 }
 
diff --git a/tobago-theme/tobago-theme-speyside/src/main/css/tobago.css.map b/tobago-theme/tobago-theme-speyside/src/main/css/tobago.css.map
index e155586..0e6d5d7 100644
--- a/tobago-theme/tobago-theme-speyside/src/main/css/tobago.css.map
+++ b/tobago-theme/tobago-theme-speyside/src/main/css/tobago.css.map
@@ -1 +1 @@
-{"version":3,"sourceRoot":"","sources":["../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","../. [...]
\ No newline at end of file
+{"version":3,"sourceRoot":"","sources":["../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","../. [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-speyside/src/main/scss/_speyside-overwrites.scss b/tobago-theme/tobago-theme-speyside/src/main/scss/_speyside-overwrites.scss
index 5223bd1..bae6e11 100644
--- a/tobago-theme/tobago-theme-speyside/src/main/scss/_speyside-overwrites.scss
+++ b/tobago-theme/tobago-theme-speyside/src/main/scss/_speyside-overwrites.scss
@@ -581,7 +581,7 @@ tobago-tab .nav-link:not([href]):not([tabindex]):not(.active):not(.disabled) {
   }
 }
 
-tobago-tab.tobago-tab-barFacet {
+tobago-tab.tobago-bar {
   .nav-link.disabled + div {
     background-color: $gray-100;
   }
diff --git a/tobago-theme/tobago-theme-standard/src/main/css/tobago.css b/tobago-theme/tobago-theme-standard/src/main/css/tobago.css
index 978d7b2..52e22d5 100644
--- a/tobago-theme/tobago-theme-standard/src/main/css/tobago.css
+++ b/tobago-theme/tobago-theme-standard/src/main/css/tobago.css
@@ -12396,31 +12396,31 @@ tobago-tab .nav-link:not([href]):not([tabindex]).disabled:focus, tobago-tab .nav
   color: #6c757d;
 }
 
-tobago-tab.tobago-tab-barFacet {
+tobago-tab.tobago-bar {
   display: flex;
 }
-tobago-tab.tobago-tab-barFacet > .nav-link {
+tobago-tab.tobago-bar > .nav-link {
   border-right: 0;
   border-top-right-radius: 0;
 }
-tobago-tab.tobago-tab-barFacet > div {
+tobago-tab.tobago-bar > div {
   border: 1px solid transparent;
   border-top-right-radius: 0.25rem;
   padding-right: 1rem;
 }
-tobago-tab.tobago-tab-barFacet > div > button {
+tobago-tab.tobago-bar > div > button {
   height: 100%;
 }
-tobago-tab.tobago-tab-barFacet > div > a {
+tobago-tab.tobago-bar > div > a {
   display: inline-block;
   padding-top: 0.5rem;
 }
-tobago-tab.tobago-tab-barFacet .nav-link.active + div {
+tobago-tab.tobago-bar .nav-link.active + div {
   background-color: #fff;
   border-top-color: #dee2e6;
   border-right-color: #dee2e6;
 }
-tobago-tab.tobago-tab-barFacet .nav-link:not(.disabled):hover + div {
+tobago-tab.tobago-bar .nav-link:not(.disabled):hover + div {
   border-top-color: #e9ecef;
   border-right-color: #e9ecef;
 }
@@ -12432,11 +12432,6 @@ tobago-tab-group tobago-tab > .nav-link > i + span {
   margin-left: 0.4em;
 }
 
-/* FIXME: This is to hide the toolbar, until it is implemented */
-.tobago-tabGroup-toolBar {
-  display: none;
-}
-
 /* tree ---------------------------------------------------------------------- */
 tobago-tree .tobago-treeNode {
   cursor: default;
diff --git a/tobago-theme/tobago-theme-standard/src/main/css/tobago.css.map b/tobago-theme/tobago-theme-standard/src/main/css/tobago.css.map
index 1b9f060..d4a7b4a 100644
--- a/tobago-theme/tobago-theme-standard/src/main/css/tobago.css.map
+++ b/tobago-theme/tobago-theme-standard/src/main/css/tobago.css.map
@@ -1 +1 @@
-{"version":3,"sourceRoot":"","sources":["../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/vendor/_rfs.scss","../../../../node_modules/bootstrap/scss/_variables.scss","../../../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../../../../node_modules/bootstrap/scss/_type.scss","../../../../node_mo [...]
\ No newline at end of file
+{"version":3,"sourceRoot":"","sources":["../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/vendor/_rfs.scss","../../../../node_modules/bootstrap/scss/_variables.scss","../../../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../../../../node_modules/bootstrap/scss/_type.scss","../../../../node_mo [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-standard/src/main/js/tobago.js b/tobago-theme/tobago-theme-standard/src/main/js/tobago.js
index c357865..5254711 100644
--- a/tobago-theme/tobago-theme-standard/src/main/js/tobago.js
+++ b/tobago-theme/tobago-theme-standard/src/main/js/tobago.js
@@ -10626,20 +10626,11 @@ Type: ${data.type}`);
       }
       get content() {
           return this.closest("tobago-tab-group")
-              .querySelector(`:scope > .card-body.tab-content > .tab-pane[index='${this.index}']`);
-      }
-  }
-  class TabContent extends HTMLElement {
-      constructor() {
-          super();
-      }
-      get index() {
-          return parseInt(this.getAttribute("index"));
+              .querySelector(`:scope > .card-body.tab-content > .tab-pane[data-index='${this.index}']`);
       }
   }
   document.addEventListener("DOMContentLoaded", function (event) {
       window.customElements.define("tobago-tab", Tab);
-      window.customElements.define("tobago-tab-content", TabContent);
       window.customElements.define("tobago-tab-group", TabGroup);
   });
 
diff --git a/tobago-theme/tobago-theme-standard/src/main/js/tobago.js.map b/tobago-theme/tobago-theme-standard/src/main/js/tobago.js.map
index 3e3ff9d..a6fb1ed 100644
--- a/tobago-theme/tobago-theme-standard/src/main/js/tobago.js.map
+++ b/tobago-theme/tobago-theme-standard/src/main/js/tobago.js.map
@@ -1 +1 @@
-{"version":3,"file":"tobago.js","sources":["../ts/tobago-bar.ts","../../../../node_modules/@popperjs/core/lib/enums.js","../../../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../../../node_m [...]
\ No newline at end of file
+{"version":3,"file":"tobago.js","sources":["../ts/tobago-bar.ts","../../../../node_modules/@popperjs/core/lib/enums.js","../../../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../../../node_m [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-standard/src/main/js/tobago.min.js b/tobago-theme/tobago-theme-standard/src/main/js/tobago.min.js
index 1d8b985..82ae46b 100644
--- a/tobago-theme/tobago-theme-standard/src/main/js/tobago.min.js
+++ b/tobago-theme/tobago-theme-standard/src/main/js/tobago.min.js
@@ -1,8 +1,8 @@
-!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";class e extends HTMLElement{constructor(){super(),this.CssClass={SHOW:"show",COLLAPSE:"collapse",COLLAPSING:"collapsing"},this.toggleButton.addEventListener("click",this.toggleCollapse.bind(this))}connectedCallback(){this.expanded="true"===this.toggleButton.ariaExpanded}toggleCollapse(e){window.clearTimeout(this.timeout),this.expanded?(this.expanded=!1,this.navbarContent.style.height=`${this.navbar [...]
+!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";class e extends HTMLElement{constructor(){super(),this.CssClass={SHOW:"show",COLLAPSE:"collapse",COLLAPSING:"collapsing"},this.toggleButton.addEventListener("click",this.toggleCollapse.bind(this))}connectedCallback(){this.expanded="true"===this.toggleButton.ariaExpanded}toggleCollapse(e){window.clearTimeout(this.timeout),this.expanded?(this.expanded=!1,this.navbarContent.style.height=`${this.navbar [...]
 /*!
     * Bootstrap v5.1.3 (https://getbootstrap.com/)
     * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
     * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
     */
-const Ne="transitionend",De=e=>{let t=e.getAttribute("data-bs-target");if(!t||"#"===t){let s=e.getAttribute("href");if(!s||!s.includes("#")&&!s.startsWith("."))return null;s.includes("#")&&!s.startsWith("#")&&(s=`#${s.split("#")[1]}`),t=s&&"#"!==s?s.trim():null}return t},Re=e=>{const t=De(e);return t&&document.querySelector(t)?t:null},Me=e=>{const t=De(e);return t?document.querySelector(t):null},je=e=>{e.dispatchEvent(new Event(Ne))},He=e=>!(!e||"object"!=typeof e)&&(void 0!==e.jquery&&( [...]
+const Ne="transitionend",De=e=>{let t=e.getAttribute("data-bs-target");if(!t||"#"===t){let s=e.getAttribute("href");if(!s||!s.includes("#")&&!s.startsWith("."))return null;s.includes("#")&&!s.startsWith("#")&&(s=`#${s.split("#")[1]}`),t=s&&"#"!==s?s.trim():null}return t},Re=e=>{const t=De(e);return t&&document.querySelector(t)?t:null},Me=e=>{const t=De(e);return t?document.querySelector(t):null},je=e=>{e.dispatchEvent(new Event(Ne))},He=e=>!(!e||"object"!=typeof e)&&(void 0!==e.jquery&&( [...]
 //# sourceMappingURL=tobago.min.js.map
diff --git a/tobago-theme/tobago-theme-standard/src/main/js/tobago.min.js.map b/tobago-theme/tobago-theme-standard/src/main/js/tobago.min.js.map
index e9be650..4d9e9b7 100644
--- a/tobago-theme/tobago-theme-standard/src/main/js/tobago.min.js.map
+++ b/tobago-theme/tobago-theme-standard/src/main/js/tobago.min.js.map
@@ -1 +1 @@
-{"version":3,"file":"tobago.min.js","sources":["../ts/tobago-bar.ts","../../../../node_modules/@popperjs/core/lib/enums.js","../../../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../../../no [...]
\ No newline at end of file
+{"version":3,"file":"tobago.min.js","sources":["../ts/tobago-bar.ts","../../../../node_modules/@popperjs/core/lib/enums.js","../../../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../../../no [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-standard/src/main/ts/tobago-tab.ts b/tobago-theme/tobago-theme-standard/src/main/ts/tobago-tab.ts
index ef73d66..4c20ee9 100644
--- a/tobago-theme/tobago-theme-standard/src/main/ts/tobago-tab.ts
+++ b/tobago-theme/tobago-theme-standard/src/main/ts/tobago-tab.ts
@@ -100,23 +100,11 @@ export class Tab extends HTMLElement {
 
   get content(): HTMLElement {
     return this.closest("tobago-tab-group")
-        .querySelector(`:scope > .card-body.tab-content > .tab-pane[index='${this.index}']`);
-  }
-}
-
-export class TabContent extends HTMLElement {
-
-  constructor() {
-    super();
-  }
-
-  get index(): number {
-    return parseInt(this.getAttribute("index"));
+        .querySelector(`:scope > .card-body.tab-content > .tab-pane[data-index='${this.index}']`);
   }
 }
 
 document.addEventListener("DOMContentLoaded", function (event: Event): void {
   window.customElements.define("tobago-tab", Tab);
-  window.customElements.define("tobago-tab-content", TabContent);
   window.customElements.define("tobago-tab-group", TabGroup);
 });