Skip to content

Commit 08505c8

Browse files
committed
Issue 53983: Sort fields by caption
1 parent 73719ac commit 08505c8

2 files changed

Lines changed: 11 additions & 2 deletions

File tree

packages/components/src/internal/components/ColumnSelectionModal.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import classNames from 'classnames';
55

66
import { QueryColumn } from '../../public/QueryColumn';
77
import { QueryInfo } from '../../public/QueryInfo';
8+
import { naturalSortByProperty } from '../../public/sort';
89

910
import { Modal, ModalProps } from '../Modal';
1011

@@ -219,6 +220,7 @@ export const ColumnChoiceGroup: FC<ColumnChoiceGroupProps> = memo(props => {
219220
{isLookupExpanded &&
220221
expandedColumns[column.index].columns.valueArray
221222
.filter(fkCol => expandedColumnFilter?.(fkCol, showAllColumns) ?? true)
223+
.sort(naturalSortByProperty('caption')) // Issue 53983: Sort fields by caption
222224
.map(fkCol => (
223225
<ColumnChoiceGroup
224226
column={fkCol}
@@ -506,7 +508,8 @@ export const ColumnSelectionModal: FC<ColumnSelectionModalProps> = memo(props =>
506508
if (!isLoaded || !queryInfo) return [];
507509
return queryInfo.columns.valueArray
508510
.filter(c => expandedColumnFilter?.(c, showAllColumns) ?? true)
509-
.filter(c => c.fieldKeyArray.length === 1); // at the top level don't include lookup fields
511+
.filter(c => c.fieldKeyArray.length === 1) // at the top level don't include lookup fields
512+
.sort(naturalSortByProperty('caption')); // Issue 53983: Sort fields by caption
510513
}, [expandedColumnFilter, isLoaded, queryInfo, showAllColumns]);
511514

512515
const disabledMsg = useMemo<string>(() => {

packages/components/src/internal/components/search/QueryFilterPanel.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { ChoicesListItem } from '../base/ChoicesListItem';
99

1010
import { QueryColumn } from '../../../public/QueryColumn';
1111
import { QueryInfo } from '../../../public/QueryInfo';
12+
import { naturalSortByProperty } from '../../../public/sort';
1213

1314
import { NOT_ANY_FILTER_TYPE } from '../../url/NotAnyFilterType';
1415

@@ -146,7 +147,7 @@ export const QueryFilterPanel: FC<Props> = memo(props => {
146147
setActiveField(undefined);
147148
if (!queryInfo) return;
148149

149-
let validFields;
150+
let validFields: QueryColumn[];
150151
if (fields) validFields = fields;
151152
else {
152153
const qFields = skipDefaultViewCheck
@@ -159,6 +160,11 @@ export const QueryFilterPanel: FC<Props> = memo(props => {
159160
);
160161
}
161162

163+
// Issue 53983: Sort fields by caption
164+
if (validFields) {
165+
validFields = validFields.sort(naturalSortByProperty('caption'));
166+
}
167+
162168
setQueryFields(validFields);
163169
if (fieldKey) {
164170
const field = validFields.find(f => f.getDisplayFieldKey() === fieldKey);

0 commit comments

Comments
 (0)