import Button from 'flarum/components/Button';

/**
 * The `LinkButton` component defines a `Button` which links to a route.
 *
 * ### Props
 *
 * All of the props accepted by `Button`, plus:
 *
 * - `active` Whether or not the page that this button links to is currently
 *   active.
 * - `href` The URL to link to. If the current URL `m.route()` matches this,
 *   the `active` prop will automatically be set to true.
 */
export default class LinkButton extends Button {
  static initProps(props) {
    props.active = this.isActive(props);
    props.config = props.config || m.route;
  }

  view() {
    const vdom = super.view();

    vdom.tag = 'a';

    return vdom;
  }

  /**
   * Determine whether a component with the given props is 'active'.
   *
   * @param {Object} props
   * @return {Boolean}
   */
  static isActive(props) {
    return typeof props.active !== 'undefined'
      ? props.active
      : m.route() === props.href;
  }
}