Skip to content

Commit

Permalink
feat(Table): BS4 beta 2 updates for Table (#694)
Browse files Browse the repository at this point in the history
* Deprecated `inverse` prop for `dark` on Table
* Add responsive `table-responsive` class option
* Change responsive prop-type to bool/string to allow users to create custom breakpoints
* Remove table-reflow
* Fix responsive classname and remove wrapper
  • Loading branch information
supergibbs authored and TheSharpieOne committed Dec 4, 2017
1 parent 57d07e3 commit 3377cdc
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 91 deletions.
24 changes: 6 additions & 18 deletions docs/lib/Components/TablesPage.js
Expand Up @@ -6,17 +6,15 @@ import Helmet from 'react-helmet';
import TableExample from '../examples/Table';
import TableBorderedExample from '../examples/TableBordered';
import TableHoverExample from '../examples/TableHover';
import TableInverseExample from '../examples/TableInverse';
import TableReflowExample from '../examples/TableReflow';
import TableDarkExample from '../examples/TableDark';
import TableResponsiveExample from '../examples/TableResponsive';
import TableSizingExample from '../examples/TableSizing';
import TableStripedExample from '../examples/TableStriped';

const TableExampleSource = require('!!raw!../examples/Table');
const TableBorderedExampleSource = require('!!raw!../examples/TableBordered');
const TableHoverExampleSource = require('!!raw!../examples/TableHover');
const TableInverseExampleSource = require('!!raw!../examples/TableInverse');
const TableReflowExampleSource = require('!!raw!../examples/TableReflow');
const TableDarkExampleSource = require('!!raw!../examples/TableDark');
const TableResponsiveExampleSource = require('!!raw!../examples/TableResponsive');
const TableSizingExampleSource = require('!!raw!../examples/TableSizing');
const TableStripedExampleSource = require('!!raw!../examples/TableStriped');
Expand Down Expand Up @@ -45,20 +43,19 @@ tag: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),
size: PropTypes.string,
bordered: PropTypes.bool,
striped: PropTypes.bool,
inverse: PropTypes.bool,
dark: PropTypes.bool,
hover: PropTypes.bool,
reflow: PropTypes.bool,
responsive: PropTypes.bool
};`}
</PrismCode>
</pre>
<h3>Inverse table</h3>
<h3>Dark table</h3>
<div className="docs-example">
<TableInverseExample />
<TableDarkExample />
</div>
<pre>
<PrismCode className="language-jsx">
{TableInverseExampleSource}
{TableDarkExampleSource}
</PrismCode>
</pre>
<h3>Striped rows</h3>
Expand Down Expand Up @@ -106,15 +103,6 @@ responsive: PropTypes.bool
{TableResponsiveExampleSource}
</PrismCode>
</pre>
<h3>Reflow</h3>
<div className="docs-example">
<TableReflowExample />
</div>
<pre>
<PrismCode className="language-jsx">
{TableReflowExampleSource}
</PrismCode>
</pre>
</div>
);
}
Expand Down
Expand Up @@ -4,7 +4,7 @@ import { Table } from 'reactstrap';
export default class Example extends React.Component {
render() {
return (
<Table inverse>
<Table dark>
<thead>
<tr>
<th>#</th>
Expand Down
51 changes: 0 additions & 51 deletions docs/lib/examples/TableReflow.js

This file was deleted.

26 changes: 12 additions & 14 deletions src/Table.js
@@ -1,18 +1,18 @@
import React from 'react';
import PropTypes from 'prop-types';
import classNames from 'classnames';
import { mapToCssModules } from './utils';
import { mapToCssModules, deprecated } from './utils';

const propTypes = {
className: PropTypes.string,
cssModule: PropTypes.object,
size: PropTypes.string,
bordered: PropTypes.bool,
striped: PropTypes.bool,
inverse: PropTypes.bool,
inverse: deprecated(PropTypes.bool, 'Please use the prop "dark"'),
dark: PropTypes.bool,
hover: PropTypes.bool,
reflow: PropTypes.bool,
responsive: PropTypes.bool,
responsive: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),
tag: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),
responsiveTag: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),
};
Expand All @@ -30,33 +30,31 @@ const Table = (props) => {
bordered,
striped,
inverse,
dark,
hover,
reflow,
responsive,
tag: Tag,
responsiveTag: ResponsiveTag,
...attributes
} = props;

let responsiveClassName = false;
if (responsive) {
responsiveClassName = responsive === true ? 'table-responsive' : `table-responsive-${responsive}`;
}

const classes = mapToCssModules(classNames(
className,
'table',
size ? 'table-' + size : false,
bordered ? 'table-bordered' : false,
striped ? 'table-striped' : false,
inverse ? 'table-inverse' : false,
(dark || inverse) ? 'table-dark' : false,
hover ? 'table-hover' : false,
reflow ? 'table-reflow' : false
responsiveClassName
), cssModule);

const table = <Tag {...attributes} className={classes} />;

if (responsive) {
return (
<ResponsiveTag className="table-responsive">{table}</ResponsiveTag>
);
}

return table;
};

Expand Down
13 changes: 6 additions & 7 deletions src/__tests__/Table.spec.js
Expand Up @@ -26,23 +26,22 @@ describe('Table', () => {
});

it('should render modifier classes', () => {
const wrapper = shallow(<Table size="sm" bordered striped reflow inverse hover>Yo!</Table>);
const wrapper = shallow(<Table size="sm" bordered striped dark hover responsive>Yo!</Table>);

expect(wrapper.text()).toBe('Yo!');
expect(wrapper.hasClass('table')).toBe(true);
expect(wrapper.hasClass('table-sm')).toBe(true);
expect(wrapper.hasClass('table-bordered')).toBe(true);
expect(wrapper.hasClass('table-striped')).toBe(true);
expect(wrapper.hasClass('table-hover')).toBe(true);
expect(wrapper.hasClass('table-reflow')).toBe(true);
expect(wrapper.hasClass('table-inverse')).toBe(true);
expect(wrapper.hasClass('table-dark')).toBe(true);
expect(wrapper.hasClass('table-responsive')).toBe(true);
});

it('should render responsive wrapper class', () => {
const wrapper = shallow(<Table responsive>Yo!</Table>);
it('should render responsive class for md', () => {
const wrapper = shallow(<Table responsive="md">Yo!</Table>);

expect(wrapper.text()).toBe('Yo!');
expect(wrapper.hasClass('table-responsive')).toBe(true);
expect(wrapper.find('.table').length).toBe(1);
expect(wrapper.hasClass('table-responsive-md')).toBe(true);
});
});

0 comments on commit 3377cdc

Please sign in to comment.