diff --git a/packages/ffe-datepicker-react/src/datepicker/DatepickerComp.tsx b/packages/ffe-datepicker-react/src/datepicker/DatepickerComp.tsx index c9ba3630b5..53503b5a0c 100644 --- a/packages/ffe-datepicker-react/src/datepicker/DatepickerComp.tsx +++ b/packages/ffe-datepicker-react/src/datepicker/DatepickerComp.tsx @@ -8,7 +8,7 @@ import React, { } from 'react'; import { DatepickerContext } from './DatepickerContext'; import { SpinButton } from './SpinButton'; -import { PadZero } from './PadZero'; +import { padZero } from './padZero'; import { Button } from '../button'; import { Calendar } from '../calendar'; import { isDateInputWithTwoDigitYear, validateDate } from '../util/dateUtil'; @@ -18,6 +18,7 @@ import { getSimpleDateFromString } from '../datelogic/simpledate'; import { ErrorFieldMessage } from '@sb1/ffe-form-react'; import i18n from '../i18n/i18n'; import { isMonth } from '../types'; +import { toNumber } from './toNumber'; export interface DatepickerCompProps { 'aria-invalid'?: React.ComponentProps<'input'>['aria-invalid']; @@ -261,7 +262,10 @@ export const DatepickerComp: React.FC = ({ min={1} max={31} onSpinButtonChange={(newValue, allowFocusNext = true) => { - onChange(`${newValue}.${month}.${year}`); + onChange( + `${padZero(toNumber(newValue))}.${month}.${year}`, + ); + return allowFocusNext ? setDay(newValue, () => monthRef.current?.focus({ @@ -279,7 +283,7 @@ export const DatepickerComp: React.FC = ({ aria-describedby={ariaDescribedby()} aria-labelledby={labelId} > - {day ? : 'dd'} + {day ? padZero(day) : 'dd'} . = ({ min={1} max={12} onSpinButtonChange={(newValue, allowFocusNext = true) => { - onChange(`${day}.${newValue}.${year}`); + onChange( + `${day}.${padZero(toNumber(newValue))}.${year}`, + ); return allowFocusNext ? setMonth(newValue, () => yearRef.current?.focus({ @@ -313,7 +319,7 @@ export const DatepickerComp: React.FC = ({ aria-describedby={ariaDescribedby()} aria-labelledby={labelId} > - {month ? : 'mm'} + {month ? padZero(month) : 'mm'} . = ({ newDate?.toString() ?? '', ); - const getTotal = (numbers: (number | undefined)[]) => { - const validNumbers = numbers.filter(it => typeof it === 'number'); - return validNumbers - .map( - (it, index) => - (it ?? 1) * Math.pow(10, validNumbers.length - index - 1), - ) - .reduce((acc, curr) => acc + curr, 0); - }; - return ( = ({ setDay: (newValue, focusNext = undefined) => { const numbers = newValue.slice(-2); const [first, second] = numbers; - const total = getTotal(numbers); + const total = toNumber(numbers); if (total > MAX_DAYS) { focusNext?.(); } else if (first > 3) { @@ -90,7 +81,7 @@ export const DatepickerProvider: React.FC = ({ setMonth: (newValue, focusNext = undefined) => { const numbers = newValue.slice(-2); const [first, second] = numbers; - const total = getTotal(numbers); + const total = toNumber(numbers); if (total > MONTHS_PER_YEAR) { focusNext?.(); @@ -105,7 +96,7 @@ export const DatepickerProvider: React.FC = ({ } }, setYear: newValue => { - setYear(getTotal(newValue.slice(-4))); + setYear(toNumber(newValue.slice(-4))); }, calendarActiveDate, setCalendarActiveDate: date => { diff --git a/packages/ffe-datepicker-react/src/datepicker/PadZero.tsx b/packages/ffe-datepicker-react/src/datepicker/PadZero.tsx deleted file mode 100644 index 0bae17ad0d..0000000000 --- a/packages/ffe-datepicker-react/src/datepicker/PadZero.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import React from 'react'; - -interface Props { - value: number; -} - -export const PadZero: React.FC = ({ value }) => { - if (value < 10) { - return `0${value}`; - } - return value; -}; diff --git a/packages/ffe-datepicker-react/src/datepicker/padZero.ts b/packages/ffe-datepicker-react/src/datepicker/padZero.ts new file mode 100644 index 0000000000..d18a1ccf87 --- /dev/null +++ b/packages/ffe-datepicker-react/src/datepicker/padZero.ts @@ -0,0 +1,6 @@ +export const padZero = (value: number) => { + if (value < 10) { + return `0${value}`; + } + return value; +}; diff --git a/packages/ffe-datepicker-react/src/datepicker/toNumber.ts b/packages/ffe-datepicker-react/src/datepicker/toNumber.ts new file mode 100644 index 0000000000..0889b1b2b4 --- /dev/null +++ b/packages/ffe-datepicker-react/src/datepicker/toNumber.ts @@ -0,0 +1,9 @@ +export const toNumber = (numbers: (number | undefined)[]) => { + const validNumbers = numbers.filter(it => typeof it === 'number'); + return validNumbers + .map( + (it, index) => + (it ?? 1) * Math.pow(10, validNumbers.length - index - 1), + ) + .reduce((acc, curr) => acc + curr, 0); +};