import React from "react"; import styled from "styled-components"; import Dropdown, { DropdownOption } from "components/ads/Dropdown"; import Icon, { IconSize } from "components/ads/Icon"; import { countryToFlag } from "./utilities"; import { ISDCodeOptions, ISDCodeProps } from "constants/ISDCodes"; const DropdownTriggerIconWrapper = styled.div<{ disabled?: boolean }>` padding: 9px 0px 9px 12px; width: 85px; min-width: 85px; opacity: ${(props) => props.disabled && "0.6"}; display: flex; align-items: center; justify-content: space-between; font-size: 14px; height: ${(props) => (props.disabled ? 32 : 19)}px; line-height: ${(props) => (props.disabled ? 32 : 19)}px; letter-spacing: -0.24px; color: #090707; position: ${(props) => props.disabled && "absolute"}; .code { margin-right: 4px; pointer-events: none; } .icon-dropdown { display: flex; width: 30px; justify-content: space-between; } `; const getISDCodeOptions = (): Array => { return ISDCodeOptions.map((item: ISDCodeProps) => { return { leftElement: countryToFlag(item.code), searchText: item.name, label: `${item.name} (${item.dial_code})`, value: item.code, id: item.dial_code, }; }); }; export const ISDCodeDropdownOptions = getISDCodeOptions(); export const getSelectedISDCode = (code?: string): DropdownOption => { let selectedCountry: ISDCodeProps | undefined = code ? ISDCodeOptions.find((item: ISDCodeProps) => { return item.code === code; }) : undefined; if (!selectedCountry) { selectedCountry = { name: "United States", dial_code: "+1", code: "US", }; } return { label: `${selectedCountry.name} (${selectedCountry.dial_code})`, searchText: selectedCountry.name, value: selectedCountry.code, id: selectedCountry.dial_code, }; }; interface ISDCodeDropdownProps { onISDCodeChange: (code?: string) => void; options: Array; selected: DropdownOption; allowCountryCodeChange?: boolean; disabled: boolean; } export default function ISDCodeDropdown(props: ISDCodeDropdownProps) { const selectedCountry = getSelectedISDCode(props.selected.value); const dropdownTrigger = (
{selectedCountry.value && countryToFlag(selectedCountry.value)}
{selectedCountry.id && selectedCountry.id}
); if (props.disabled) { return dropdownTrigger; } return ( ); }