|
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- //
- // Copyright (C) Stanislaw Adaszewski, 2020
- // Contact: s.adaszewski@gmail.com
- // Website: https://adared.ch/wba
- // License: GNU Affero General Public License, Version 3
- //
-
- import { h, Component, VNode } from 'preact';
-
- class WBTabs extends Component {
- render({ tabs, onTabChanged }) {
- return (
- <ul class={ 'nav nav-tabs ' + this.props.class }>
- { tabs.map((t, idx) => {
- let name, isActive, isDisabled, onClick;
-
- if (!t)
- return null;
-
- if (typeof(t) === 'object') {
- name = t.name;
- isActive = t.isActive;
- isDisabled = t.isDisabled;
- onClick = t.onClick;
-
- } else if (typeof(t) === 'string') {
- name = t;
- }
-
- let cls = ['nav-link'];
- if (isActive)
- cls.push('active');
- if (isDisabled)
- cls.push('disabled');
- cls = cls.join(' ');
- return (
- <li class="nav-item">
- <a class={ cls } href="#"
- onclick={ e => { e.preventDefault();
- onClick ? onClick() : onTabChanged(t); } }>
- { name }
- </a>
- </li>
- );
- }) }
- </ul>
- );
- }
- }
-
- WBTabs.defaultProps = {
- 'onTabChanged': () => {}
- };
-
- export default WBTabs;
|