import React, { FC, useEffect, useState } from 'react'; import { Typography } from '../Typography'; import styles from './Credentials.styles'; import color from '../../styles/colors'; import { ICredentialsProps } from './types'; import CredentialsHeader from './components/CredentialsHeader'; import { HideButton } from '../HideButton'; import { CopyButton } from '../CopyButton'; import TruncateString from './components/TruncateString'; const { CredentialsStyled, DividerStyled, DivWrapperStyled, PreformattedStyled, ToolsStyled, } = styles; const Credentials: FC = ({ hasCopyButton = true, hasHideButton = true, title, titleColor, icon, iconColor, iconSize, isHidden = false, text, textColor = color.blueDark, width = 'auto', hiddenText = '•••••••••••••••••••••••••••••••', ...props }) => { const [isValueHidden, setIsValueHidden] = useState(isHidden); const [isMultiline, setIsMultiline] = useState( (text.match(/\n/g) || []).length > 0, ); useEffect(() => setIsValueHidden(isHidden), [isHidden]); useEffect( () => setIsMultiline((text.match(/\n/g) || []).length > 0), [text], ); return ( {isValueHidden ? ( hiddenText ) : isMultiline ? ( // Multiline text will be shown with scrollbar text ) : ( )} {hasHideButton && ( setIsValueHidden(!isValueHidden)} isHidden={isValueHidden} /> )} {hasHideButton && hasCopyButton && } {hasCopyButton && } ); }; export default Credentials;