From 6fc725279b7a5fb1eb6d57aa6b7a27907a5b8901 Mon Sep 17 00:00:00 2001 From: Giovanny Gongora Date: Tue, 21 Mar 2023 16:12:13 +0100 Subject: [PATCH] change textarea for div to show the mnemonic seed (#1147) --- .../CreateAccount/CreateAccount.spec.tsx | 4 +- .../src/Popup/CreateAccount/Mnemonic.tsx | 14 ------ .../src/components/BoxWithLabel.tsx | 44 +++++++++++++++++++ .../src/components/MnemonicSeed.tsx | 24 +++++----- 4 files changed, 59 insertions(+), 27 deletions(-) create mode 100644 packages/extension-ui/src/components/BoxWithLabel.tsx diff --git a/packages/extension-ui/src/Popup/CreateAccount/CreateAccount.spec.tsx b/packages/extension-ui/src/Popup/CreateAccount/CreateAccount.spec.tsx index ba343d54..6105d1b1 100644 --- a/packages/extension-ui/src/Popup/CreateAccount/CreateAccount.spec.tsx +++ b/packages/extension-ui/src/Popup/CreateAccount/CreateAccount.spec.tsx @@ -72,8 +72,8 @@ describe('Create Account', () => { }); describe('Phase 1', () => { - it('shows seed phrase in textarea', () => { - expect(wrapper.find('textarea').text()).toBe(exampleAccount.seed); + it('shows seed phrase in a span inside a div', () => { + expect(wrapper.find('.seedBox span').text()).toBe(exampleAccount.seed); }); it('next step button is disabled when checkbox is not checked', () => { diff --git a/packages/extension-ui/src/Popup/CreateAccount/Mnemonic.tsx b/packages/extension-ui/src/Popup/CreateAccount/Mnemonic.tsx index 3afc9590..7d4d411b 100644 --- a/packages/extension-ui/src/Popup/CreateAccount/Mnemonic.tsx +++ b/packages/extension-ui/src/Popup/CreateAccount/Mnemonic.tsx @@ -12,26 +12,12 @@ interface Props { seed: string; } -const onCopy = (): void => { - const mnemonicSeedTextElement = document.querySelector('textarea'); - - if (!mnemonicSeedTextElement) { - return; - } - - mnemonicSeedTextElement.select(); - - // eslint-disable-next-line deprecation/deprecation - document.execCommand('copy'); -}; - function Mnemonic ({ onNextStep, seed }: Props): React.ReactElement { const { t } = useTranslation(); const [isMnemonicSaved, setIsMnemonicSaved] = useState(false); const { show } = useToast(); const _onCopy = useCallback((): void => { - onCopy(); show(t('Copied')); }, [show, t]); diff --git a/packages/extension-ui/src/components/BoxWithLabel.tsx b/packages/extension-ui/src/components/BoxWithLabel.tsx new file mode 100644 index 00000000..0e6a35c5 --- /dev/null +++ b/packages/extension-ui/src/components/BoxWithLabel.tsx @@ -0,0 +1,44 @@ +// Copyright 2019-2023 @polkadot/extension-ui authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { ThemeProps } from '../types.js'; + +import React from 'react'; +import styled from 'styled-components'; + +import Label from './Label.js'; + +interface Props { + className?: string; + label: string; + value?: string; +} + +function BoxWithLabel ({ className, label, value }: Props): React.ReactElement { + return ( + + ); +} + +export default styled(BoxWithLabel)(({ theme }: ThemeProps) => ` + .seedBox { + background: ${theme.readonlyInputBackground}; + box-shadow: none; + border-radius: ${theme.borderRadius}; + border: 1px solid ${theme.inputBorderColor}; + border-color: ${theme.inputBorderColor}; + box-sizing: border-box; + display: block; + font-family: ${theme.fontFamily}; + outline: none; + resize: none; + width: 100%; + } +`); diff --git a/packages/extension-ui/src/components/MnemonicSeed.tsx b/packages/extension-ui/src/components/MnemonicSeed.tsx index 225de7af..b18b3d4e 100644 --- a/packages/extension-ui/src/components/MnemonicSeed.tsx +++ b/packages/extension-ui/src/components/MnemonicSeed.tsx @@ -5,11 +5,12 @@ import type { ThemeProps } from '../types.js'; import { faCopy } from '@fortawesome/free-regular-svg-icons'; import React, { MouseEventHandler } from 'react'; +import CopyToClipboard from 'react-copy-to-clipboard'; import useTranslation from '../hooks/useTranslation.js'; import { styled } from '../styled.js'; import ActionText from './ActionText.js'; -import TextAreaWithLabel from './TextAreaWithLabel.js'; +import BoxWithLabel from './BoxWithLabel.js'; interface Props { seed: string; @@ -22,20 +23,21 @@ function MnemonicSeed ({ className, onCopy, seed }: Props): React.ReactElement

- ('Generated 12-word mnemonic seed:')} value={seed} />

- ('Copy to clipboard')} - /> + + ('Copy to clipboard')} + /> +
); @@ -54,7 +56,7 @@ export default styled(MnemonicSeed)(({ theme }: ThemeProps) => ` } .mnemonicDisplay { - textarea { + .seedBox { color: ${theme.primaryColor}; font-size: ${theme.fontSize}; height: unset;