Skip to content

Commit e7fe81f

Browse files
authored
fix: change FieldGuesser key in ListGuesser when orderField is updated (#446)
This fix is needed to force the DatagridHeaderCell to render again when the order field is resolved and to enable sorting for the column
1 parent 783c924 commit e7fe81f

File tree

2 files changed

+13
-5
lines changed

2 files changed

+13
-5
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Changelog
22

3+
## 3.0.1
4+
5+
* Make sure columns can be sorted when there is an order filter in `ListGuesser`
6+
37
## 3.0.0
48

59
* Compatibility with react-admin 4 (see UPGRADE.md)

src/ListGuesser.tsx

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,9 @@ export const IntrospectedListGuesser = ({
7777
...props
7878
}: IntrospectedListGuesserProps) => {
7979
const { hasShow, hasEdit } = useResourceDefinition(props);
80-
const [orderParameters, setOrderParameters] = useState<string[]>([]);
80+
const [orderParameters, setOrderParameters] = useState<
81+
string[] | undefined
82+
>();
8183

8284
useEffect(() => {
8385
if (schema) {
@@ -90,21 +92,23 @@ export const IntrospectedListGuesser = ({
9092
let fieldChildren = children;
9193
if (!fieldChildren) {
9294
fieldChildren = readableFields.map((field) => {
93-
const orderField = orderParameters.find(
95+
const orderField = (orderParameters ?? []).find(
9496
(orderParameter) => orderParameter.split('.')[0] === field.name,
9597
);
9698

9799
return (
98100
<FieldGuesser
99-
key={field.name}
101+
key={field.name + (orderField ? `-${orderField}` : '')}
100102
source={field.name}
101103
sortable={!!orderField}
102104
sortBy={orderField}
103105
resource={props.resource}
104106
/>
105107
);
106108
});
107-
displayOverrideCode(schema, readableFields);
109+
if (orderParameters !== undefined) {
110+
displayOverrideCode(schema, readableFields);
111+
}
108112
}
109113

110114
return (
@@ -150,7 +154,7 @@ const ListGuesser = ({
150154
/* eslint-disable tree-shaking/no-side-effects-in-initialization */
151155
ListGuesser.propTypes = {
152156
children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),
153-
resource: PropTypes.string.isRequired,
157+
resource: PropTypes.string,
154158
filters: PropTypes.element,
155159
hasShow: PropTypes.bool,
156160
hasEdit: PropTypes.bool,

0 commit comments

Comments
 (0)