Advertisement
Guest User

Untitled

a guest
Feb 24th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.82 KB | None | 0 0
  1. import React, { Component } from 'react';
  2. import { render } from "react-dom";
  3. import { makeData, Logo, Tips } from "./Utils";
  4. import matchSorter from 'match-sorter'
  5.  
  6. // Import React Table
  7. import ReactTable from "react-table";
  8. import "react-table/react-table.css";
  9.  
  10. class Table extends Component {
  11. constructor() {
  12. super();
  13. this.state = {
  14. data: makeData()
  15. };
  16. }
  17. render() {
  18. const { data } = this.state;
  19. return (
  20. <div>
  21. <ReactTable
  22. data={data}
  23. filterable
  24. defaultFilterMethod={(filter, row) =>
  25. String(row[filter.id]) === filter.value}
  26. columns={[
  27. {
  28. Header: "Name",
  29. columns: [
  30. {
  31. Header: "First Name",
  32. accessor: "firstName",
  33. filterMethod: (filter, row) =>
  34. row[filter.id].startsWith(filter.value) &&
  35. row[filter.id].endsWith(filter.value)
  36. },
  37. {
  38. Header: "Last Name",
  39. id: "lastName",
  40. accessor: d => d.lastName,
  41. filterMethod: (filter, rows) =>
  42. matchSorter(rows, filter.value, { keys: ["lastName"] }),
  43. filterAll: true
  44. }
  45. ]
  46. },
  47. {
  48. Header: "Info",
  49. columns: [
  50. {
  51. Header: "Age",
  52. accessor: "age"
  53. },
  54. {
  55. Header: "Over 21",
  56. accessor: "age",
  57. id: "over",
  58. Cell: ({ value }) => (value >= 21 ? "Yes" : "No"),
  59. filterMethod: (filter, row) => {
  60. if (filter.value === "all") {
  61. return true;
  62. }
  63. if (filter.value === "true") {
  64. return row[filter.id] >= 21;
  65. }
  66. return row[filter.id] < 21;
  67. },
  68. Filter: ({ filter, onChange }) =>
  69. <select
  70. onChange={event => onChange(event.target.value)}
  71. style={{ width: "100%" }}
  72. value={filter ? filter.value : "all"}
  73. >
  74. <option value="all">Show All</option>
  75. <option value="true">Can Drink</option>
  76. <option value="false">Cant Drink</option>
  77. </select>
  78. }
  79. ]
  80. }
  81. ]}
  82. defaultPageSize={10}
  83. className="-striped -highlight"
  84. />
  85. <br />
  86. <Tips />
  87. <Logo />
  88. </div>
  89. );
  90. }
  91. }
  92.  
  93. export default Table;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement