feat: display record identifier field as first column in table (#3788)
* feat: display record identifier field as first column in table & forbid hiding and moving record identifier column Closes #3303 * refactor: add availableTableColumnKeysSelectorScopeMap * feat: show plus icon button for label identifier column and dropdown menu for other columns * fix: use label identifier field value in RecordShowPage title * refactor: remove availableColumnKeys selector * refactor: review - compute label identifier logic in mapViewFieldsToColumnDefinitions + remove selectors * fix: several fixes * fix: fix board fields isVisible * fix: fix board fields reordering * fix: more board fields fixes * fix: fix hiddenTableColumnsSelectorScopeMap
This commit is contained in:
@ -3,6 +3,7 @@ import { useMemo } from 'react';
|
||||
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
||||
import { FieldMetadata } from '@/object-record/record-field/types/FieldMetadata';
|
||||
import { ColumnDefinition } from '@/object-record/record-table/types/ColumnDefinition';
|
||||
import { filterAvailableTableColumns } from '@/object-record/utils/filterAvailableTableColumns';
|
||||
import { Nullable } from '~/types/Nullable';
|
||||
|
||||
import { formatFieldMetadataItemAsColumnDefinition } from '../utils/formatFieldMetadataItemAsColumnDefinition';
|
||||
@ -25,13 +26,15 @@ export const useColumnDefinitionsFromFieldMetadata = (
|
||||
const columnDefinitions: ColumnDefinition<FieldMetadata>[] = useMemo(
|
||||
() =>
|
||||
objectMetadataItem
|
||||
? activeFieldMetadataItems.map((field, index) =>
|
||||
formatFieldMetadataItemAsColumnDefinition({
|
||||
position: index,
|
||||
field,
|
||||
objectMetadataItem,
|
||||
}),
|
||||
)
|
||||
? activeFieldMetadataItems
|
||||
.map((field, index) =>
|
||||
formatFieldMetadataItemAsColumnDefinition({
|
||||
position: index,
|
||||
field,
|
||||
objectMetadataItem,
|
||||
}),
|
||||
)
|
||||
.filter(filterAvailableTableColumns)
|
||||
: [],
|
||||
[activeFieldMetadataItems, objectMetadataItem],
|
||||
);
|
||||
|
||||
@ -2,6 +2,7 @@ import {
|
||||
FieldMetadataItemAsFieldDefinitionProps,
|
||||
formatFieldMetadataItemAsFieldDefinition,
|
||||
} from '@/object-metadata/utils/formatFieldMetadataItemAsFieldDefinition';
|
||||
import { isLabelIdentifierField } from '@/object-metadata/utils/isLabelIdentifierField';
|
||||
import { FieldMetadata } from '@/object-record/record-field/types/FieldMetadata';
|
||||
import { ColumnDefinition } from '@/object-record/record-table/types/ColumnDefinition';
|
||||
|
||||
@ -15,14 +16,22 @@ export const formatFieldMetadataItemAsColumnDefinition = ({
|
||||
objectMetadataItem,
|
||||
showLabel,
|
||||
labelWidth,
|
||||
}: FieldMetadataItemAsColumnDefinitionProps): ColumnDefinition<FieldMetadata> => ({
|
||||
...formatFieldMetadataItemAsFieldDefinition({
|
||||
field,
|
||||
}: FieldMetadataItemAsColumnDefinitionProps): ColumnDefinition<FieldMetadata> => {
|
||||
const isLabelIdentifier = isLabelIdentifierField({
|
||||
fieldMetadataItem: field,
|
||||
objectMetadataItem,
|
||||
showLabel,
|
||||
labelWidth,
|
||||
}),
|
||||
position,
|
||||
size: 100,
|
||||
isVisible: true,
|
||||
});
|
||||
});
|
||||
|
||||
return {
|
||||
...formatFieldMetadataItemAsFieldDefinition({
|
||||
field,
|
||||
objectMetadataItem,
|
||||
showLabel,
|
||||
labelWidth,
|
||||
}),
|
||||
position: isLabelIdentifier ? 0 : position,
|
||||
size: 100,
|
||||
isLabelIdentifier,
|
||||
isVisible: true,
|
||||
};
|
||||
};
|
||||
|
||||
@ -3,7 +3,10 @@ import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
||||
import { isLabelIdentifierField } from '@/object-metadata/utils/isLabelIdentifierField';
|
||||
|
||||
export const getLabelIdentifierFieldMetadataItem = (
|
||||
objectMetadataItem: ObjectMetadataItem,
|
||||
objectMetadataItem: Pick<
|
||||
ObjectMetadataItem,
|
||||
'fields' | 'labelIdentifierFieldMetadataId'
|
||||
>,
|
||||
): FieldMetadataItem | undefined =>
|
||||
objectMetadataItem.fields.find((fieldMetadataItem) =>
|
||||
isLabelIdentifierField({
|
||||
|
||||
Reference in New Issue
Block a user