All files / app/promotion PromotionBannerList.tsx

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38  3x   3x 3x           3x 47x   47x         47x 44x     3x     8x                     3x  
import { Banner, Promotion } from '@bigcommerce/checkout-sdk';
import React, { memo, FunctionComponent } from 'react';
 
import PromotionBanner from './PromotionBanner';
import './PromotionBannerList.scss';
 
export interface PromotionBannerListProps {
    promotions: Promotion[];
}
 
const PromotionBannerList: FunctionComponent<PromotionBannerListProps> = ({
    promotions,
}) => {
    const banners = (promotions || []).reduce((result, promotion) => ([
        ...result,
        ...promotion.banners,
    ]), [] as Banner[]);
 
    if (!banners.length) {
        return null;
    }
 
    return (
        <div className="discountBanner">
            <ul className="discountBannerList">
                { banners.map((banner, index) => (
                    <PromotionBanner
                        key={ index }
                        message={ banner.text }
                    />
                )) }
            </ul>
        </div>
    );
};
 
export default memo(PromotionBannerList);