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}
-
+