fIwJlxSzApHEZIl
fIwJlxSzApHEZIl

Reputation: 13280

AntD Table Columns do not render leading or trailing whitespace in their values

I'm displaying values from a database in an AntD Table that can lead or end with whitespace and the whitespaces are not being rendered. I've forked a simple Table example to show the issue:

https://codesandbox.io/s/agitated-frog-obmh1

What is the correct way to get AntD to stop trimming extra whitespace in the values?

I've included the code below for posterity:


import React from 'react';
import ReactDOM from 'react-dom';
import 'antd/dist/antd.css';
import './index.css';
import { Table } from 'antd';

const columns = [
  {
    title: 'Name',
    dataIndex: 'name',
    filters: [
      {
        text: 'Joe',
        value: 'Joe',
      },
      {
        text: 'Jim',
        value: 'Jim',
      },
      {
        text: 'Submenu',
        value: 'Submenu',
        children: [
          {
            text: 'Green',
            value: 'Green',
          },
          {
            text: 'Black',
            value: 'Black',
          },
        ],
      },
    ],
    // specify the condition of filtering result
    // here is that finding the name started with `value`
    onFilter: (value, record) => record.name.indexOf(value) === 0,
    sorter: (a, b) => a.name.length - b.name.length,
    sortDirections: ['descend'],
  },
  {
    title: 'Age',
    dataIndex: 'age',
    defaultSortOrder: 'descend',
    sorter: (a, b) => a.age - b.age,
  },
  {
    title: 'Address',
    dataIndex: 'address',
    filters: [
      {
        text: 'London',
        value: 'London',
      },
      {
        text: 'New York',
        value: 'New York',
      },
    ],
    filterMultiple: false,
    onFilter: (value, record) => record.address.indexOf(value) === 0,
    sorter: (a, b) => a.address.length - b.address.length,
    sortDirections: ['descend', 'ascend'],
  },
];

const data = [
  {
    key: '1',
    name: '        John Brown          ', // WHITESPACE ADDED HERE
    age: 32,
    address: '        New York No. 1 Lake Park            ', // WHITESPACE ADDED HERE
  },
  {
    key: '2',
    name: 'Jim Green',
    age: 42,
    address: 'London No. 1 Lake Park',
  },
  {
    key: '3',
    name: 'Joe Black',
    age: 32,
    address: 'Sidney No. 1 Lake Park',
  },
  {
    key: '4',
    name: 'Jim Red',
    age: 32,
    address: 'London No. 2 Lake Park',
  },
];

function onChange(pagination, filters, sorter, extra) {
  console.log('params', pagination, filters, sorter, extra);
}

ReactDOM.render(<Table columns={columns} dataSource={data} onChange={onChange} />, document.getElementById('container'));

Upvotes: 0

Views: 852

Answers (1)

Zmen Hu
Zmen Hu

Reputation: 805

Seems there is no such an option to stop trimming. However, you can replace whitespace(\u0020) to (\u00a0) to get the same view:

const data = [{
  key: '1',
  name: '\u00a0\u00a0\u00a0\u00a0\u00a0John Brown\u00a0\u00a0\u00a0\u00a0',
  age: 32,
  address: 'London No. 2 Lake Park'
}]

Upvotes: 1

Related Questions