diff --git a/packages/neuron-ui/src/components/Send/index.tsx b/packages/neuron-ui/src/components/Send/index.tsx index 8127d2ae24..0a026f1b34 100644 --- a/packages/neuron-ui/src/components/Send/index.tsx +++ b/packages/neuron-ui/src/components/Send/index.tsx @@ -208,6 +208,7 @@ const Send = () => {
`${t('send.release-on')}${time == null ? '' : ` ${display}`}`} onConfirm={(time: number) => { updateTransactionOutput('date')(locktimeIndex)(`${time}`) setLocktimeIndex(-1) diff --git a/packages/neuron-ui/src/styles/mixin.scss b/packages/neuron-ui/src/styles/mixin.scss index b04b62dcc2..2e0454198f 100644 --- a/packages/neuron-ui/src/styles/mixin.scss +++ b/packages/neuron-ui/src/styles/mixin.scss @@ -43,7 +43,7 @@ @mixin dialog-confirm-button { border: none; - width: 5.125rem; + min-width: 5.125rem; height: 1.875rem; background-color: var(--nervos-green); color: #fff; diff --git a/packages/neuron-ui/src/widgets/Calendar/focusControl.tsx b/packages/neuron-ui/src/widgets/Calendar/focusControl.tsx index 7b2eaae4cd..043294341a 100644 --- a/packages/neuron-ui/src/widgets/Calendar/focusControl.tsx +++ b/packages/neuron-ui/src/widgets/Calendar/focusControl.tsx @@ -121,6 +121,11 @@ export const useTableFocusControl = ( moveDate(calendarYear, calendarMonth, focusDate.getDate()) }, [calendarYear, calendarMonth, minDate?.toDateString(), maxDate?.toDateString()]) + useEffect(() => { + setYear(value?.getFullYear() ?? new Date().getFullYear()) + setMonth((value?.getMonth() ?? new Date().getMonth()) + 1) + }, [value?.toDateString()]) + const onKeyDown = (e: KeyboardEvent) => { const keyEventMap = { Enter: () => onChange(focusDate), diff --git a/packages/neuron-ui/src/widgets/Calendar/index.tsx b/packages/neuron-ui/src/widgets/Calendar/index.tsx index e7c6b71b2d..73d267bf69 100644 --- a/packages/neuron-ui/src/widgets/Calendar/index.tsx +++ b/packages/neuron-ui/src/widgets/Calendar/index.tsx @@ -1,4 +1,4 @@ -import React, { useState, useEffect, useMemo, useCallback } from 'react' +import React, { useState, useMemo, useCallback } from 'react' import { useTranslation } from 'react-i18next' import { getMonthCalendar, @@ -71,11 +71,6 @@ const Calendar: React.FC = ({ const [month, setMonth] = useState(new Date().getMonth() + 1) const [status, setStatus] = useState<'year' | 'month' | 'date'>('date') - useEffect(() => { - setYear(value?.getFullYear() ?? new Date().getFullYear()) - setMonth((value?.getMonth() ?? new Date().getMonth()) + 1) - }, [value?.toDateString()]) - const [uId] = useState(() => (+new Date()).toString(16).slice(-4)) const [t, { language }] = useTranslation() @@ -87,12 +82,10 @@ const Calendar: React.FC = ({ const monthName = monthNames[month - 1] const monthShortName = monthShortNames[month - 1] - const calendar = useMemo(() => getMonthCalendar(year, month, firstDayOfWeek, language), [ - year, - month, - firstDayOfWeek, - language, - ]) + const calendar = useMemo( + () => getMonthCalendar(year, month, firstDayOfWeek, language), + [year, month, firstDayOfWeek, language] + ) function isDisabledTime(date: Date): boolean { return !isDayInRange(date, { minDate, maxDate }) } diff --git a/packages/neuron-ui/src/widgets/DatetimePicker/index.tsx b/packages/neuron-ui/src/widgets/DatetimePicker/index.tsx index 1e0bd99252..e698282aaf 100644 --- a/packages/neuron-ui/src/widgets/DatetimePicker/index.tsx +++ b/packages/neuron-ui/src/widgets/DatetimePicker/index.tsx @@ -4,7 +4,6 @@ import Button from 'widgets/Button' import { useTranslation } from 'react-i18next' import styles from './datetimePicker.module.scss' -const SECONDS_PER_DAY = 24 * 3600 * 1000 let UTC: string | number = -new Date().getTimezoneOffset() / 60 if (UTC > 0) { UTC = `UTC+${UTC}` @@ -14,10 +13,7 @@ if (UTC > 0) { export const formatDate = (datetime: Date) => { const month = (datetime.getMonth() + 1).toString().padStart(2, '0') - const date = datetime - .getDate() - .toString() - .padStart(2, '0') + const date = datetime.getDate().toString().padStart(2, '0') const year = datetime.getFullYear() return `${month}/${date}/${year}` } @@ -28,14 +24,9 @@ export interface DatetimePickerProps { notice?: string onConfirm: (time: number) => void onCancel: (e: React.MouseEvent) => void + confirmText?: string | ((time?: number, display?: string) => string) } -const DatetimePicker = ({ - preset = new Date(Date.now() + SECONDS_PER_DAY), - onConfirm, - onCancel, - title, - notice, -}: DatetimePickerProps) => { +const DatetimePicker = ({ preset, onConfirm, onCancel, confirmText, title, notice }: DatetimePickerProps) => { const [t] = useTranslation() const [status, setStatus] = useState<'done' | 'edit'>('done') const [display, setDisplay] = useState(preset ? formatDate(new Date(+preset)) : '') @@ -138,7 +129,16 @@ const DatetimePicker = ({ ) : null}