d2cf05f4f4
quality-feedbacks : https://discord.com/channels/1130383047699738754/1486711185436053514/1486711185436053514 <img width="1000" height="500" alt="Screenshot 2026-03-30 at 09 42 48" src="https://github.com/user-attachments/assets/fe9027fe-0056-4fec-af51-5b39bb467bb5" /> <img width="1000" height="500" alt="Screenshot 2026-03-30 at 09 42 34" src="https://github.com/user-attachments/assets/8cd05ea0-7eb2-4490-b87e-3a7dcd57add2" /> --------- Co-authored-by: Weiko <corentin@twenty.com>
89 lines
3.6 KiB
TypeScript
89 lines
3.6 KiB
TypeScript
import { type ReactNode } from 'react';
|
|
|
|
import { ObjectSortDropdownButton } from '@/object-record/object-sort-dropdown/components/ObjectSortDropdownButton';
|
|
import { useRecordIndexContextOrThrow } from '@/object-record/record-index/contexts/RecordIndexContext';
|
|
import { TopBar } from '@/ui/layout/top-bar/components/TopBar';
|
|
import { QueryParamsFiltersEffect } from '@/views/components/QueryParamsFiltersEffect';
|
|
import { QueryParamsSortsEffect } from '@/views/components/QueryParamsSortsEffect';
|
|
import { ViewBarPageTitle } from '@/views/components/ViewBarPageTitle';
|
|
import { ViewPickerDropdown } from '@/views/view-picker/components/ViewPickerDropdown';
|
|
|
|
import { ObjectFilterDropdownComponentInstanceContext } from '@/object-record/object-filter-dropdown/states/contexts/ObjectFilterDropdownComponentInstanceContext';
|
|
import { VIEW_SORT_DROPDOWN_ID } from '@/object-record/object-sort-dropdown/constants/ViewSortDropdownId';
|
|
import { ObjectSortDropdownComponentInstanceContext } from '@/object-record/object-sort-dropdown/states/context/ObjectSortDropdownComponentInstanceContext';
|
|
import { QueryParamsCleanupEffect } from '@/views/components/QueryParamsCleanupEffect';
|
|
import { ViewBarAnyFieldFilterEffect } from '@/views/components/ViewBarAnyFieldFilterEffect';
|
|
import { ViewBarFilterDropdown } from '@/views/components/ViewBarFilterDropdown';
|
|
import { ViewBarRecordFieldEffect } from '@/views/components/ViewBarRecordFieldEffect';
|
|
import { ViewBarRecordFilterEffect } from '@/views/components/ViewBarRecordFilterEffect';
|
|
import { ViewBarRecordFilterGroupEffect } from '@/views/components/ViewBarRecordFilterGroupEffect';
|
|
import { ViewBarRecordSortEffect } from '@/views/components/ViewBarRecordSortEffect';
|
|
import { ViewBarFilterDropdownIds } from '@/views/constants/ViewBarFilterDropdownIds';
|
|
import { UpdateViewButtonGroup } from './UpdateViewButtonGroup';
|
|
import { ViewBarDetails } from './ViewBarDetails';
|
|
|
|
type ViewBarProps = {
|
|
viewBarId: string;
|
|
className?: string;
|
|
optionsDropdownButton: ReactNode;
|
|
isReadOnly?: boolean;
|
|
};
|
|
|
|
export const ViewBar = ({
|
|
viewBarId,
|
|
className,
|
|
optionsDropdownButton,
|
|
isReadOnly = false,
|
|
}: ViewBarProps) => {
|
|
const { objectNamePlural } = useRecordIndexContextOrThrow();
|
|
|
|
if (!objectNamePlural) {
|
|
return;
|
|
}
|
|
|
|
if (isReadOnly) {
|
|
return (
|
|
<TopBar className={className} leftComponent={<ViewPickerDropdown />} />
|
|
);
|
|
}
|
|
|
|
return (
|
|
<ObjectSortDropdownComponentInstanceContext.Provider
|
|
value={{ instanceId: VIEW_SORT_DROPDOWN_ID }}
|
|
>
|
|
<ViewBarRecordFilterGroupEffect />
|
|
<ViewBarAnyFieldFilterEffect />
|
|
<ViewBarRecordFieldEffect />
|
|
<ViewBarRecordFilterEffect />
|
|
<ViewBarRecordSortEffect />
|
|
<QueryParamsFiltersEffect />
|
|
<QueryParamsSortsEffect />
|
|
<QueryParamsCleanupEffect />
|
|
<ViewBarPageTitle />
|
|
<TopBar
|
|
className={className}
|
|
leftComponent={<ViewPickerDropdown />}
|
|
rightComponent={
|
|
<>
|
|
<ObjectFilterDropdownComponentInstanceContext.Provider
|
|
value={{ instanceId: ViewBarFilterDropdownIds.MAIN }}
|
|
>
|
|
<ViewBarFilterDropdown />
|
|
</ObjectFilterDropdownComponentInstanceContext.Provider>
|
|
<ObjectSortDropdownButton />
|
|
{optionsDropdownButton}
|
|
</>
|
|
}
|
|
bottomComponent={
|
|
<ViewBarDetails
|
|
hasFilterButton
|
|
viewBarId={viewBarId}
|
|
objectNamePlural={objectNamePlural}
|
|
rightComponent={<UpdateViewButtonGroup />}
|
|
/>
|
|
}
|
|
/>
|
|
</ObjectSortDropdownComponentInstanceContext.Provider>
|
|
);
|
|
};
|