IF YOU WOULD LIKE TO GET AN ACCOUNT, please write an email to s dot adaszewski at gmail dot com. User accounts are meant only to report issues and/or generate pull requests. This is a purpose-specific Git hosting for ADARED projects. Thank you for your understanding!
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

56 lines
1.4KB

  1. //
  2. // Copyright (C) Stanislaw Adaszewski, 2020
  3. // Contact: s.adaszewski@gmail.com
  4. // Website: https://adared.ch/wba
  5. // License: GNU Affero General Public License, Version 3
  6. //
  7. import { h, Component, VNode } from 'preact';
  8. class WBTabs extends Component {
  9. render({ tabs, onTabChanged }) {
  10. return (
  11. <ul class={ 'nav nav-tabs ' + this.props.class }>
  12. { tabs.map((t, idx) => {
  13. let name, isActive, isDisabled, onClick;
  14. if (!t)
  15. return null;
  16. if (typeof(t) === 'object') {
  17. name = t.name;
  18. isActive = t.isActive;
  19. isDisabled = t.isDisabled;
  20. onClick = t.onClick;
  21. } else if (typeof(t) === 'string') {
  22. name = t;
  23. }
  24. let cls = ['nav-link'];
  25. if (isActive)
  26. cls.push('active');
  27. if (isDisabled)
  28. cls.push('disabled');
  29. cls = cls.join(' ');
  30. return (
  31. <li class="nav-item">
  32. <a class={ cls } href="#"
  33. onclick={ e => { e.preventDefault();
  34. onClick ? onClick() : onTabChanged(t); } }>
  35. { name }
  36. </a>
  37. </li>
  38. );
  39. }) }
  40. </ul>
  41. );
  42. }
  43. }
  44. WBTabs.defaultProps = {
  45. 'onTabChanged': () => {}
  46. };
  47. export default WBTabs;