UNPKG

grommet

Version:

focus on the essential experience

74 lines (73 loc) 2.64 kB
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } import React from 'react'; import { Box, DataTable, CheckBox } from 'grommet'; // Source code for the data can be found here // https://github.com/grommet/grommet/blob/master/src/js/components/DataTable/stories/data.js import { columns, DATA } from './data'; var controlledColumns = columns.map(function (col) { return _extends({}, col); }); delete controlledColumns[0].footer; delete controlledColumns[3].footer; delete controlledColumns[4].footer; delete controlledColumns[4].aggregate; export var ControlledDataTable = function ControlledDataTable() { var _React$useState = React.useState([]), checked = _React$useState[0], setChecked = _React$useState[1]; var onCheck = function onCheck(event, value) { if (event.target.checked) { setChecked([].concat(checked, [value])); } else { setChecked(checked.filter(function (item) { return item !== value; })); } }; var onCheckAll = function onCheckAll(event) { return setChecked(event.target.checked ? DATA.map(function (datum) { return datum.name; }) : []); }; return ( /*#__PURE__*/ // Uncomment <Grommet> lines when using outside of storybook // <Grommet theme={grommet}> React.createElement(Box, { align: "center", pad: "medium" }, /*#__PURE__*/React.createElement(DataTable, { columns: [{ property: 'checkbox', render: function render(_ref) { var name = _ref.name; return /*#__PURE__*/React.createElement(CheckBox, { key: name, checked: checked.indexOf(name) !== -1, onChange: function onChange(e) { return onCheck(e, name); }, "aria-label": "row checkbox" }); }, header: /*#__PURE__*/React.createElement(CheckBox, { checked: checked.length === DATA.length, indeterminate: checked.length > 0 && checked.length < DATA.length, onChange: onCheckAll, "aria-label": "header checkbox" }), sortable: false }].concat(controlledColumns).map(function (col) { return _extends({}, col); }), data: DATA, sortable: true, size: "medium" })) // </Grommet> ); }; ControlledDataTable.storyName = 'Controlled'; export default { title: 'Visualizations/DataTable/Controlled' };