summaryrefslogtreecommitdiffhomepage
path: root/gui/src/renderer
diff options
context:
space:
mode:
Diffstat (limited to 'gui/src/renderer')
-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',