Fixes Default View Ordering (#6114) (#6326)

fixes #6114

Co-authored-by: Lucas Bordeau <bordeau.lucas@gmail.com>
This commit is contained in:
Faisal-imtiyaz123
2024-07-19 21:57:33 +05:30
committed by GitHub
parent 088d061b3e
commit 12c33159e0
2 changed files with 36 additions and 54 deletions

View File

@ -4,18 +4,11 @@ export const getObjectMetadataItemViews = (
viewObjectMetadataId: string, viewObjectMetadataId: string,
views: GraphQLView[], views: GraphQLView[],
) => { ) => {
const indexView = views.find(
(view) =>
view.key === 'INDEX' && view.objectMetadataId === viewObjectMetadataId,
);
return [ return [
...views ...views.filter((view) => view.objectMetadataId === viewObjectMetadataId),
.filter((view) => view.objectMetadataId === viewObjectMetadataId)
.filter((view) => view.key !== 'INDEX'),
] ]
.sort((a, b) => a.position - b.position) .sort((a, b) => a.position - b.position)
.concat(indexView ? [indexView] : [])
.map((view) => ({ .map((view) => ({
id: view.id, id: view.id,
name: view.name, name: view.name,

View File

@ -64,9 +64,6 @@ export const ViewPickerListContent = () => {
const { getIcon } = useIcons(); const { getIcon } = useIcons();
const indexView = viewsOnCurrentObject.find((view) => view.key === 'INDEX'); const indexView = viewsOnCurrentObject.find((view) => view.key === 'INDEX');
const viewsOnCurrentObjectWithoutIndex = viewsOnCurrentObject.filter(
(view) => view.key !== 'INDEX',
);
const handleDragEnd = useCallback( const handleDragEnd = useCallback(
(result: DropResult) => { (result: DropResult) => {
@ -89,49 +86,41 @@ export const ViewPickerListContent = () => {
<DropdownMenuItemsContainer> <DropdownMenuItemsContainer>
<DraggableList <DraggableList
onDragEnd={handleDragEnd} onDragEnd={handleDragEnd}
draggableItems={viewsOnCurrentObjectWithoutIndex.map( draggableItems={viewsOnCurrentObject.map((view, index) => (
(view, index) => (
<DraggableItem <DraggableItem
key={view.id} key={view.id}
draggableId={view.id} draggableId={view.id}
index={index} index={index}
isDragDisabled={viewsOnCurrentObjectWithoutIndex.length === 1} isDragDisabled={viewsOnCurrentObject.length === 1}
itemComponent={ itemComponent={
<MenuItemDraggable <MenuItemDraggable
key={view.id} key={view.id}
iconButtons={[ iconButtons={
indexView?.id === view.id
? [
{
Icon: IconLock,
},
]
: [
{ {
Icon: IconPencil, Icon: IconPencil,
onClick: (event: MouseEvent<HTMLButtonElement>) => onClick: (event: MouseEvent<HTMLButtonElement>) =>
handleEditViewButtonClick(event, view.id), handleEditViewButtonClick(event, view.id),
}, },
].filter(isDefined)} ].filter(isDefined)
isIconDisplayedOnHoverOnly }
isIconDisplayedOnHoverOnly={
indexView?.id === view.id ? false : true
}
onClick={() => handleViewSelect(view.id)} onClick={() => handleViewSelect(view.id)}
LeftIcon={getIcon(view.icon)} LeftIcon={getIcon(view.icon)}
text={view.name} text={view.name}
/> />
} }
/> />
), ))}
)}
/> />
{indexView && (
<MenuItemDraggable
key={indexView.id}
iconButtons={[
{
Icon: IconLock,
},
].filter(isDefined)}
isIconDisplayedOnHoverOnly={false}
onClick={() => handleViewSelect(indexView.id)}
LeftIcon={getIcon(indexView.icon)}
text={indexView.name}
accent="placeholder"
isDragDisabled
/>
)}
</DropdownMenuItemsContainer> </DropdownMenuItemsContainer>
<DropdownMenuSeparator /> <DropdownMenuSeparator />
<StyledBoldDropdownMenuItemsContainer> <StyledBoldDropdownMenuItemsContainer>