I have the same issue. To sort correctly the dates you have to make a new instance of Date object in the data you are adding into the table (this code should work)
dateTemplate(rowData, field) {
return rowData[field.field].toLocaleDateString(navigator.language, {
day: '2-digit',
month: '2-digit',
year: 'numeric',
})
}
The only thing different in my code is that i specify what dataType has the column, but it dosen't work.
If i multi sort by other columns it dose well.
this.state.columns.map((item) => {
if (item.datatype == "date" || item.datatype == "datetime") {
return (
<Column
key={item.field}
field={item.field}
header={item.header}
body={item.datatype == "date" ? this.dateTemplate : this.dateTimeTemplate}
sortable
filter
filterPlaceholder={item.filterPlaceholder}
filterField={item.field}
sortField={item.field}
style={{width: item.header.length + 1 + "rem"}}
dataType="date"
filterElement={this.dateFilterTemplate}
/>
);
} else if (item.datatype == "number" || item.datatype == "decimal" || item.datatype == "amount") {
return(
<Column
key={item.field}
field={item.field}
header={item.header}
sortable
filter
filterPlaceholder={item.filterPlaceholder}
filterField={item.field}
sortField={item.field}
dataType="numeric"
style={{width: item.header.length + 1 + "rem"}}
/>
);
} else {
return (
<Column
key={item.field}
field={item.field}
header={item.header}
sortable
filter
filterPlaceholder={item.filterPlaceholder}
filterField={item.field}
sortField={item.field}
dataType="text"
style={{width: item.header.length + 1 + "rem"}}
/>
);
}
})