UNPKG

grommet

Version:

focus on the essential experience

98 lines 2.86 kB
var _excluded = ["search"]; function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; } import React, { useContext } from 'react'; import { Box, DataFilters, DataFilter, DataSearch, DataSummary, DataTable, DataTableGroupBy, Grid, Heading, ResponsiveContext, Toolbar } from 'grommet'; import { Data } from '../Data'; var sizes = ['small', 'medium', 'large']; var DATA = []; for (var i = 0; i < 11; i += 1) { DATA.push({ id: "x-" + i, sub: { name: "Name " + (i + 1) }, size: sizes[i % sizes.length], date: "2022-12-" + (i % 30 + 1) }); } var columns = [{ property: 'id', header: 'ID' }, { property: 'sub.name', header: 'Name' }, { property: 'size', header: 'Size' }, { property: 'date', header: 'Date' }]; var Filters = function Filters(_ref) { var search = _ref.search, rest = _objectWithoutPropertiesLoose(_ref, _excluded); return /*#__PURE__*/React.createElement(DataFilters, rest, search && /*#__PURE__*/React.createElement(DataSearch, null), /*#__PURE__*/React.createElement(DataFilter, { property: "size" }), /*#__PURE__*/React.createElement(DataTableGroupBy, { options: ['size'] })); }; export var Inline = function Inline() { var size = useContext(ResponsiveContext); var toolbar; var sidebar; if (size === 'small' || size === 'xsmall') { toolbar = /*#__PURE__*/React.createElement(Toolbar, { key: "tool" }, /*#__PURE__*/React.createElement(DataSearch, { property: "sub.name" }), /*#__PURE__*/React.createElement(Filters, { drop: true })); } else { sidebar = /*#__PURE__*/React.createElement(Filters, { search: true, updateOn: "change" }); } return ( /*#__PURE__*/ // Uncomment <Grommet> lines when using outside of storybook // <Grommet theme={...}> React.createElement(Data, { properties: { 'sub.name': { label: 'Name' }, size: { label: 'Size' }, date: { label: 'Date' } }, data: DATA }, /*#__PURE__*/React.createElement(Grid, { columns: sidebar ? ['auto', ['small', 'large']] : 'auto', gap: "large", pad: "large", justifyContent: "center" }, sidebar, /*#__PURE__*/React.createElement(Box, { flex: false }, /*#__PURE__*/React.createElement(Heading, { size: "small", margin: "none" }, "People"), toolbar, /*#__PURE__*/React.createElement(DataSummary, null), /*#__PURE__*/React.createElement(Box, { flex: false }, /*#__PURE__*/React.createElement(DataTable, { columns: columns }))))) // </Grommet> ); }; Inline.args = { full: true }; export default { title: 'Data/Data/Inline' };