Browse Source

replace the table loading with spin

pull/435/head
KgTong 9 years ago
parent
commit
b9ce4c7ddf
  1. 2
      components/spin/index.jsx
  2. 23
      components/table/index.jsx
  3. 26
      style/components/table.less

2
components/spin/index.jsx

@ -17,7 +17,7 @@ let AntSpin = React.createClass({
render() {
const props = this.props;
let className = classSet({
spin: 1,
[`spin-${props.type}`]: 1,

23
components/table/index.jsx

@ -5,6 +5,7 @@ import Checkbox from '../checkbox';
import FilterDropdown from './filterDropdown';
import Pagination from '../pagination';
import objectAssign from 'object-assign';
import Spin from '../spin';
function noop() {
}
@ -468,9 +469,6 @@ let AntTable = React.createClass({
let columns = this.renderRowSelection();
let classString = '';
let expandIconAsCell = this.props.expandedRowRender && this.props.expandIconAsCell !== false;
if (this.state.loading && !this.isLocalDataSource()) {
classString += ' ant-table-loading';
}
if (this.props.size === 'small') {
classString += ' ant-table-small';
}
@ -490,7 +488,23 @@ let AntTable = React.createClass({
</div>;
emptyClass = ' ant-table-empty';
}
return <div className={'clearfix' + emptyClass}>
// spin holder
let spinEl;
let spinWrapperClass = '';
if (this.state.loading && !this.isLocalDataSource()) {
// if there is no pagination or no data, the height of spin should decrease by half of pagination
let paginationPatchClass = (this.hasPagination() && data && data.length !== 0)
? 'ant-table-with-pagination'
: 'ant-table-without-pagination';
let spinClass = `${paginationPatchClass} ant-table-spin-holder`;
spinEl = <div className={spinClass}>
<Spin size="md" type="primary"/>
</div>;
spinWrapperClass = ' ant-table-loading';
}
return <div className={'clearfix' + emptyClass + spinWrapperClass}>
<Table
{...this.props}
data={data}
@ -499,6 +513,7 @@ let AntTable = React.createClass({
expandIconAsCell={expandIconAsCell}
/>
{emptyText}
{spinEl}
{this.renderPagination()}
</div>;
}

26
style/components/table.less

@ -82,23 +82,21 @@
&-loading {
position: relative;
.@{table-prefix-cls}-body {
opacity: 0.42;
opacity: 0.6;
}
&:after {
position: absolute;
display: inline-block;
.animation(loadingCircle 1.5s infinite linear);
content: "\e610";
top: 50%;
left: 50%;
margin-top: -10px;
margin-left: -10px;
font-family: anticon;
width: 20px;
.@{table-prefix-cls}-spin-holder {
height: 20px;
line-height: 20px;
font-size: 20px;
color: @primary-color;
left: 50%;
top: 50%;
margin-left: -30px;
position: absolute;
}
.@{table-prefix-cls}-with-pagination {
margin-top: -20px;
}
.@{table-prefix-cls}-without-pagination {
margin-top: 10px;
}
}

Loading…
Cancel
Save