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.

46 lines
1.1KB

  1. import { h, Component, VNode } from 'preact';
  2. class WBTabs extends Component {
  3. render({ tabs, onTabChanged }) {
  4. return (
  5. <ul class="nav nav-tabs">
  6. { tabs.map((t, idx) => {
  7. let name, isActive, isDisabled, onClick;
  8. if (typeof(t) === 'object') {
  9. name = t.name;
  10. isActive = t.isActive;
  11. isDisabled = t.isDisabled;
  12. onClick = t.onClick;
  13. } else if (typeof(t) === 'string') {
  14. name = t;
  15. }
  16. let cls = ['nav-link'];
  17. if (isActive)
  18. cls.push('active');
  19. if (isDisabled)
  20. cls.push('disabled');
  21. cls = cls.join(' ');
  22. return (
  23. <li class="nav-item">
  24. <a class={ cls } href="#"
  25. onclick={ e => { e.preventDefault();
  26. onClick ? onClick() : onTabChanged(t); } }>
  27. { name }
  28. </a>
  29. </li>
  30. );
  31. }) }
  32. </ul>
  33. );
  34. }
  35. }
  36. WBTabs.defaultProps = {
  37. 'onTabChanged': () => {}
  38. };
  39. export default WBTabs;