import React from 'react'; import numberPipe from 'app/shared/pipes/number.pipe'; import moneyPipe from 'app/shared/pipes/money.pipe'; import cx from 'classnames'; interface StepProp { key: string; value: number | null; isMoney?: boolean; operation?: string; } const summaryCalculationStep = ({ key, value, isMoney, operation }: StepProp) => { const safeValue = value ?? 0; return (
{key}
{operation && operation?.length > 0 ? ({operation}) : null} {isMoney ? moneyPipe.prefixedFormat(safeValue) : numberPipe.format(safeValue, 2)}
); }; interface ResultProp extends StepProp { isLarge?: boolean; } const summaryCalculationResult = ({ key, value, isLarge }: ResultProp) => { const safeValue = value ?? 0; const resultWrapperClasses = cx({ 'c-bunker-adjustment-calculation-steps__result-wrapper--large': isLarge, 'c-bunker-adjustment-calculation-steps__result-wrapper': !isLarge, }); const resultClasses = cx( 'c-bunker-adjustment-calculation-steps__result o-layout o-layout--space-between', { 'c-bunker-adjustment-calculation-steps__result--large': isLarge } ); const valueColor = cx('o-`gutter-left', 'u-no-wrap', 'u-margin-bottom--none', 'u-font--clear-spacings', { 'u-color--money-positive': value !== null && value > 0, 'u-color--money-negative': value !== null && value < 0, }); return (

{key}

{moneyPipe.prefixedFormat(safeValue)}

); }; export interface Props { steps: StepProp[]; result: ResultProp; } const BunkerAdjustmentCalculationSteps = ({ steps, result }: Props) => { const resultWrapperStyles = cx({ 'o-gutter-top': result.isLarge, 'o-gutter-top--small': !result.isLarge, }); return <> {steps.map((item, index) => { const styles = cx('o-gutter-left', 'o-gutter-right', 'o-gutter-bottom--small'); return (
{summaryCalculationStep(item)}
); })}
{summaryCalculationResult(result)}
; }; export { BunkerAdjustmentCalculationSteps };