summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOskar Nyberg <oskar@mullvad.net>2020-12-08 08:11:18 +0100
committerOskar Nyberg <oskar@mullvad.net>2020-12-10 13:29:26 +0100
commit6cb7b3d380f72731f431783a656431ef71d9b0ff (patch)
tree93edd7cf9ad9fa4c5c96dc9d781cda2472adf00c
parentdbf60a64c3a0925f39dae497260d05a263aff126 (diff)
downloadmullvadvpn-6cb7b3d380f72731f431783a656431ef71d9b0ff.tar.xz
mullvadvpn-6cb7b3d380f72731f431783a656431ef71d9b0ff.zip
Use formattable text input for voucher code field
-rw-r--r--gui/src/renderer/components/RedeemVoucher.tsx14
-rw-r--r--gui/src/renderer/components/RedeemVoucherStyles.tsx3
2 files changed, 12 insertions, 5 deletions
diff --git a/gui/src/renderer/components/RedeemVoucher.tsx b/gui/src/renderer/components/RedeemVoucher.tsx
index 29a84f868c..290506309e 100644
--- a/gui/src/renderer/components/RedeemVoucher.tsx
+++ b/gui/src/renderer/components/RedeemVoucher.tsx
@@ -106,9 +106,9 @@ export function RedeemVoucherInput() {
const { value, setValue, onSubmit, submitting, response } = useContext(RedeemVoucherContext);
const disabled = submitting || response?.type === 'success';
- const onChange = useCallback(
- (event: React.ChangeEvent<HTMLInputElement>) => {
- setValue(event.target.value);
+ const handleChange = useCallback(
+ (value: string) => {
+ setValue(value);
},
[setValue],
);
@@ -124,10 +124,16 @@ export function RedeemVoucherInput() {
return (
<StyledInput
+ allowedCharacters="[A-Z0-9]"
+ separator="-"
+ uppercaseOnly
+ groupLength={4}
+ maxLength={16}
+ addTrailingSeparator
disabled={disabled}
value={value}
placeholder={'XXXX-XXXX-XXXX-XXXX'}
- onChange={onChange}
+ handleChange={handleChange}
onKeyPress={onKeyPress}
/>
);
diff --git a/gui/src/renderer/components/RedeemVoucherStyles.tsx b/gui/src/renderer/components/RedeemVoucherStyles.tsx
index cd7d0cc7eb..e710bfe5bf 100644
--- a/gui/src/renderer/components/RedeemVoucherStyles.tsx
+++ b/gui/src/renderer/components/RedeemVoucherStyles.tsx
@@ -1,5 +1,6 @@
import styled from 'styled-components';
import { colors } from '../../config.json';
+import FormattableTextInput from './FormattableTextInput';
import ImageView from './ImageView';
export const StyledLabel = styled.span({
@@ -11,7 +12,7 @@ export const StyledLabel = styled.span({
marginBottom: '9px',
});
-export const StyledInput = styled.input({
+export const StyledInput = styled(FormattableTextInput)({
flex: 1,
overflow: 'hidden',
padding: '14px',