Element Framework

Tab Bar

  • HTML
  • JS
  • CSS
<ef-tab-bar>
  <ef-tab label="Market" active></ef-tab>
  <ef-tab label="Company"></ef-tab>
  <ef-tab label="News"></ef-tab>
  <ef-tab label="Charting"></ef-tab>
  <ef-tab label="Monitors"></ef-tab>
  <ef-tab icon="settings"></ef-tab>
</ef-tab-bar>
<ef-panel spacing>
  <h6 id="title">Market</h6>
  <div id="detail">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin pulvinar euismod libero auctor facilisis. Praesent vestibulum feugiat augue a dapibus. Donec auctor malesuada pellentesque. Duis at massa quis mauris faucibus.</div>
</ef-panel>
var tabs = document.querySelectorAll('ef-tab');
var title = document.getElementById('title');
for (var i = 0; i < tabs.length; i++) {
  tabs[i].addEventListener('tap', function(e) {
    for (var x = 0; x < tabs.length; x++) {
      tabs[x].active = false;
    }
    if (e.target.label && e.target.label.length > 0) {
      title.textContent = e.target.label;
    } else {
      title.textContent = "Settings";
    }
    e.target.active = true;
  })
}

                  

A standard tab navigation control that can be used to navigate between views.

Basic usage

You can create a navigation tab by wrapping ef-tab with ef-tab-bar.
Tab bar will provide left and right navigation buttons if there is not enough space to display all tabs on the screen.

For full features of ef-tab such as icon, please see Tab.

  • HTML
  • JS
  • CSS
<ef-tab-bar>
  <ef-tab label="Tab 1"></ef-tab>
  <ef-tab label="Tab 2"></ef-tab>
  <ef-tab label="Tab 3"></ef-tab>
</ef-tab-bar><br>
<ef-tab-bar style="max-width:350px">
  <ef-tab label="Tab 1"></ef-tab>
  <ef-tab label="Tab 2"></ef-tab>
  <ef-tab label="Tab 3"></ef-tab>
  <ef-tab label="Tab 4"></ef-tab>
  <ef-tab label="Tab 5"></ef-tab>
  <ef-tab label="Tab 6"></ef-tab>
  <ef-tab label="Tab 7"></ef-tab>
  <ef-tab label="Tab 8"></ef-tab>
  <ef-tab label="Tab 9"></ef-tab>
  <ef-tab label="Tab 10"></ef-tab>
</ef-tab-bar>

                  

                  
<ef-tab-bar>
  <ef-tab label="Tab 1"></ef-tab>
  <ef-tab label="Tab 2"></ef-tab>
  <ef-tab label="Tab 3"></ef-tab>
</ef-tab-bar>

Levels

A level can be set to ef-tab-bar to change the style of the tab bar. Level styling is managed by the theme.

  • HTML
  • JS
  • CSS
<ef-tab-bar level="1">
  <ef-tab label="Tab1"></ef-tab>
  <ef-tab label="Tab2" active></ef-tab>
  <ef-tab label="Tab3"></ef-tab>
</ef-tab-bar>
<br>
<ef-tab-bar level="2">
  <ef-tab label="Tab1"></ef-tab>
  <ef-tab label="Tab2" active></ef-tab>
  <ef-tab label="Tab3"></ef-tab>
</ef-tab-bar>
<br>
<ef-tab-bar level="3">
  <ef-tab label="Tab1"></ef-tab>
  <ef-tab label="Tab2" active></ef-tab>
  <ef-tab label="Tab3"></ef-tab>
</ef-tab-bar>

                  

                  
<ef-tab-bar level="1">
  <ef-tab label="Tab1"></ef-tab>
  <ef-tab label="Tab2" active></ef-tab>
  <ef-tab label="Tab3"></ef-tab>
</ef-tab-bar>
<ef-tab-bar level="2">
  <ef-tab label="Tab1"></ef-tab>
  <ef-tab label="Tab2" active></ef-tab>
  <ef-tab label="Tab3"></ef-tab>
</ef-tab-bar>
<ef-tab-bar level="3">
  <ef-tab label="Tab1"></ef-tab>
  <ef-tab label="Tab2" active></ef-tab>
  <ef-tab label="Tab3"></ef-tab>
</ef-tab-bar>

Vertical

Setting the vertical attribute/property to true will change the layout of the Tab Bar from horizontal to vertical.

  • HTML
  • JS
  • CSS
<div class="container">
  <ef-tab-bar vertical>
    <ef-tab label="Home" sub-label="The family or social unit occupying a home" icon="home"></ef-tab>
    <ef-tab label="Calendar" sub-label="A chart or series of pages showing the days, weeks, and months of a particular year" icon="calendar" active></ef-tab>
    <ef-tab label="Setting" sub-label="A factor at which a machine or device can be adjusted to operate." icon="settings"></ef-tab>
  </ef-tab-bar>
  <section>
    <h6 id="header">Calendar</h6>
    Lorem ipsum dolor sit amet consectetur adipisicing elit. Iste tempore doloribus error? Veniam reiciendis minus itaque eius temporibus quos totam nihil nisi, praesentium perspiciatis laudantium non quidem esse architecto et eos excepturi doloribus quas nulla impedit amet odio! Laborum fuga exercitationem quae autem provident, sint neque ex iure numquam tenetur.
  </section>
</div>
const tabs = document.querySelectorAll('ef-tab');

/* reset all tabs to inactive */
const resetActive = () => {
  tabs.forEach((tab) => tab.active = false);
}

tabs.forEach((tab) => {
  tab.addEventListener('tap', (e) => {
    resetActive();
    document.getElementById('header').textContent = e.target.label;
    e.target.active = true;
  });
});
.container {
  display: flex;
  border: 1px solid #262626;
}

section {
  padding: 1em;
}
  <div class="container">
    <ef-tab-bar vertical>
      <ef-tab label="Home" sub-label="The family or social unit occupying a home" icon="home"></ef-tab>
      <ef-tab label="Calendar" sub-label="A chart or series of pages showing the days, weeks, and months of a particular year" icon="calendar" active></ef-tab>
      <ef-tab label="Setting" sub-label="A factor at which a machine or device can be adjusted to operate." icon="settings"></ef-tab>
    </ef-tab-bar>
    <section>
      <h6>Calendar</h6>
      Lorem ipsum dolor sit amet consectetur adipisicing elit. Iste tempore doloribus error? Veniam reiciendis minus itaque eius temporibus quos totam nihil nisi, praesentium perspiciatis laudantium non quidem esse architecto et eos excepturi doloribus quas nulla impedit amet odio! Laborum fuga exercitationem quae autem provident, sint neque ex iure numquam tenetur.
    </section>
  </div>

Switching tab

ef-tab provides an active attribute/property to set the active tab. You can add a tap event listener to each ef-tab and then add the actions you need to perform -- the tap event is similar to the click event, but will work for both desktop and touch devices.

  • HTML
  • JS
  • CSS
<ef-tab-bar>
  <ef-tab label="Market" active></ef-tab>
  <ef-tab label="Company"></ef-tab>
  <ef-tab label="News"></ef-tab>
  <ef-tab label="Charting"></ef-tab>
  <ef-tab label="Monitors"></ef-tab>
  <ef-tab icon="settings"></ef-tab>
</ef-tab-bar>
<pre id="event"></pre>
var tabs = document.querySelectorAll('ef-tab');
var event = document.getElementById('event');
for (var i = 0; i < tabs.length; i++) {
  tabs[i].addEventListener('tap', function(e) {
    for (var x = 0; x < tabs.length; x++) {
      tabs[x].active = false;
    }
    if (e.target.label && e.target.label.length > 0) {
      event.textContent = e.target.label + " is clicked";
    } else {
      event.textContent = "Settings is clicked";
    }
    e.target.active = true;
  })
}

                  
<ef-tab-bar>
  <ef-tab label="Market" active></ef-tab>
  <ef-tab label="Company"></ef-tab>
  <ef-tab label="News"></ef-tab>
  <ef-tab label="Charting"></ef-tab>
  <ef-tab label="Monitors"></ef-tab>
  <ef-tab icon="settings"></ef-tab>
</ef-tab-bar>
<pre id="event"></pre>
const tabs = document.querySelectorAll('ef-tab');

/* reset all tabs to inactive */
const resetActive = () => {
  tabs.forEach((tab) => tab.active = false);
}

tabs.forEach((tab) => {
  tab.addEventListener('tap', (e) => {
    resetActive();
    document.getElementById('event').textContent = e.target.label + ' is clicked';
    e.target.active = true;
  });
});

API Reference

Attributes

"left" | "center" | "right"
alignment
Specify tab's horizontal alignment
"1" | "2" | "3"
level
Use level styling from theme
boolean
vertical
Use to switch from horizontal to vertical layout.

Properties

"left" | "center" | "right"
alignment
Specify tab's horizontal alignment
"left"
"1" | "2" | "3"
level
Use level styling from theme
"1"
boolean
vertical
Use to switch from horizontal to vertical layout.
false