// constants import { DropdownMenuContentConstants } from '../../utils/constants'; // enums import { eDropdownMenu } from '../../enums'; import { StatusTypeEnum } from '../../components/ca-pickup-delivery-block/models'; // models import { IDropdownMenuItem } from '../../components/ca-dropdown-menu/interfaces'; export class DropdownMenuContentConditionalItemsHelper { // conditional items static getConditionalItems( requestedItemTitles: string[], isSharedConditionalItems: boolean, modifiers?: Partial[] ): IDropdownMenuItem[] { const dropdownMenuItems = isSharedConditionalItems ? DropdownMenuContentConstants.DROPDOWN_MENU_SHARED_ITEMS : DropdownMenuContentConstants.DROPDOWN_MENU_CONDITIONAL_ITEMS; // if no specific items are requested, return all items const requestedItems = Array.isArray(requestedItemTitles) && !requestedItemTitles.length ? Object.values(dropdownMenuItems) : requestedItemTitles.map((title) => dropdownMenuItems[title]); // map requested item - optional modifiers const mapDropdownMenuItems = () => { return requestedItems.map((item) => { const modifier = modifiers?.find( (modifier) => modifier.title === item.title ); return modifier ? { ...item, ...modifier } : item; }); }; return mapDropdownMenuItems(); } // modifier items // dispatchboard - pickup delivery component static getPickupDeliveryModifierItems( loadStatus: string ): Partial[] { return [ { title: eDropdownMenu.EDIT, hasBorder: loadStatus !== StatusTypeEnum.PENDING, }, { title: eDropdownMenu.DELETE, isDisabled: loadStatus !== StatusTypeEnum.PENDING, }, ]; } }