render()

in src/amo/components/PaginatorLink/index.js [26:86]


  render() {
    const {
      className,
      currentPage,
      page,
      pageCount,
      pageParam,
      pathname,
      queryParams,
      text,
    } = this.props;

    invariant(
      currentPage !== undefined,
      'The currentPage property cannot be undefined',
    );
    invariant(
      pathname !== undefined,
      'The pathname property cannot be undefined',
    );
    invariant(page !== undefined, 'The page property cannot be undefined');
    invariant(
      pageCount !== undefined,
      'The pageCount property cannot be undefined',
    );

    let rel = null;
    if (page + 1 === currentPage) {
      rel = 'prev';
    } else if (page - 1 === currentPage) {
      rel = 'next';
    }

    if (currentPage === page || page < 1 || page > pageCount) {
      const classNames = makeClassName('Paginate-item', className, {
        'Paginate-item--current-page': currentPage === page,
      });

      return (
        <Button buttonType="cancel" className={classNames} disabled key={page}>
          {text || page}
        </Button>
      );
    }

    const parsedPath = url.parse(pathname, true);

    return (
      <Button
        buttonType="cancel"
        className={makeClassName('Paginate-item', className)}
        rel={rel}
        to={{
          pathname: parsedPath.pathname,
          query: { ...parsedPath.query, ...queryParams, [pageParam]: page },
        }}
      >
        {text || page}
      </Button>
    );
  }