export function DeliveryAgentsSelect()

in support-frontend/assets/pages/paper-subscription-checkout/components/deliveryAgentsSelect.tsx [42:116]


export function DeliveryAgentsSelect(
	props: DeliveryAgentsSelectProps,
): JSX.Element | null {
	const postcodeError = firstError('postCode', props.deliveryAddressErrors);
	if (postcodeError ?? !props.deliveryAgentsResponse) {
		return null;
	}

	switch (props.deliveryAgentsResponse.type) {
		case 'Covered': {
			if (props.deliveryAgentsResponse.agents?.length === 1) {
				if (!props.deliveryAgentsResponse.agents[0]) {
					return null;
				}

				return (
					<SingleDeliveryProvider
						singleDeliveryProvider={props.deliveryAgentsResponse.agents[0]}
					/>
				);
			}

			return (
				<RadioGroup
					label="Select delivery provider"
					id="delivery-provider"
					cssOverrides={marginBottom}
					error={firstError('deliveryProvider', props.formErrors)}
				>
					<>
						{props.deliveryAgentsResponse.agents?.map((agent) => (
							<div
								css={css`
									border-bottom: 1px solid ${palette.neutral[86]};
								`}
								key={agent.agentId}
							>
								<Radio
									value={agent.agentId}
									checked={props.chosenDeliveryAgent === agent.agentId}
									onChange={() => props.setDeliveryAgent(agent.agentId)}
									label={
										<>
											{agent.agentName}{' '}
											<GreenLabel deliveryMethod={agent.deliveryMethod} />
										</>
									}
								/>
								<DeliveryProviderSummary summary={agent.summary} />
								<GreenDeliverySummary deliveryMethod={agent.deliveryMethod} />
							</div>
						))}
					</>
				</RadioGroup>
			);
		}
		case 'UnknownPostcode':
			return ErrorMessage(
				'Unknown postcode',
				'Please check that you have entered your postcode correctly',
			);
		case 'NotCovered':
			return ErrorMessage(
				'Not covered',
				'Sorry, we do not deliver to this postcode. Please check that you have entered your postcode correctly or contact us for further assistance.',
			);
		default:
			return ErrorMessage(
				'Error fetching delivery agents',
				'Sorry an error occurred fetching delivery agents, please try again later.',
			);
	}

	return null;
}