All files / src/table/addons/filterable SingleFilterButton.tsx

100% Statements 7/7
50% Branches 2/4
100% Functions 2/2
100% Lines 7/7

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45                              1x 1x 1x 1x 1x   1x                           5x                  
import classNames from "classnames";
import React from "react";
import { FilterButtonProps } from "./FilterableTypes";
import { Select } from "../../../select";
import { useConfig } from "../../../_util/config-context";
 
export function SingleFilterButton({
  all,
  className,
  style,
  children,
  options,
  value,
  ...selectProps
}: FilterButtonProps<string>) {
  const { classPrefix } = useConfig();
  let active = Boolean(value);
  Eif (all) {
    options = [all, ...options]; // eslint-disable-line no-param-reassign
    active = value !== all.value;
  }
  return (
    <span
      className={classNames(
        `${classPrefix}-table__filterbtn`,
        { "is-active": active },
        className
      )}
      style={style}
    >
      <Select
        {...selectProps}
        type="simulate"
        appearance="filter"
        button={children}
        options={options.map(({ label, text, ...option }) => ({
          ...option,
          text: text || label,
        }))}
        value={value}
      />
    </span>
  );
}