/** * Copyright (c) 2023-present Plane Software, Inc. and contributors * SPDX-License-Identifier: AGPL-3.0-only * See the LICENSE file for details. */ // ui import { observer } from "mobx-react"; import { Eraser } from "lucide-react"; import { ArrowNarrowRightOutline, ChevronDownOutline, SortAscendingOutline, SortDescendingOutline, TickOutline, } from "@makeplane/propel/icons"; // constants import type { IProjectMemberDisplayProperties, TMemberOrderByOptions } from "@plane/constants"; import { MEMBER_PROPERTY_DETAILS } from "@plane/constants"; // i18n import { useTranslation } from "@plane/i18n"; // types import { CustomMenu } from "@plane/ui"; import type { IMemberFilters } from "@/store/member/utils"; interface Props { property: keyof IProjectMemberDisplayProperties; displayFilters?: IMemberFilters; handleDisplayFilterUpdate: (data: Partial) => void; } export const MemberHeaderColumn = observer(function MemberHeaderColumn(props: Props) { const { displayFilters, handleDisplayFilterUpdate, property } = props; // i18n const { t } = useTranslation(); const propertyDetails = MEMBER_PROPERTY_DETAILS[property]; const activeSortingProperty = displayFilters?.order_by; const handleOrderBy = (order: TMemberOrderByOptions, _itemKey: keyof IProjectMemberDisplayProperties) => { handleDisplayFilterUpdate({ order_by: order }); }; const handleClearSorting = () => { handleDisplayFilterUpdate({ order_by: undefined }); }; if (!propertyDetails) return null; return ( {t(propertyDetails.i18n_title)}
{(activeSortingProperty === propertyDetails.ascendingOrderKey || activeSortingProperty === propertyDetails.descendingOrderKey) && (
{propertyDetails.ascendingOrderKey === activeSortingProperty ? ( ) : ( )}
)}
} placement="bottom-end" closeOnSelect > {propertyDetails.isSortingAllowed && ( <> handleOrderBy(propertyDetails.ascendingOrderKey, property)}>
{propertyDetails.ascendingOrderTitle} {propertyDetails.descendingOrderTitle}
{activeSortingProperty === propertyDetails.ascendingOrderKey && }
handleOrderBy(propertyDetails.descendingOrderKey, property)}>
{propertyDetails.descendingOrderTitle} {propertyDetails.ascendingOrderTitle}
{activeSortingProperty === propertyDetails.descendingOrderKey && }
{(activeSortingProperty === propertyDetails.ascendingOrderKey || activeSortingProperty === propertyDetails.descendingOrderKey) && (
{t("common.actions.clear_sorting")}
)} )}
); });