From eb10d25e32e5e0c86b9c974f52c322f408e53ee0 Mon Sep 17 00:00:00 2001 From: Jiann Date: Sat, 14 Feb 2026 11:48:42 +0800 Subject: [PATCH] fix: parse date using date picker and add password strength validation, etc (#8647) * fix: date parse by picker * fix: password --- .../DateTimeFieldModel/DateTimeNoTzFieldModel.tsx | 10 +++++----- .../fields/DateTimeFieldModel/DateTimeTzFieldModel.tsx | 10 +++++++++- .../src/flow/models/fields/PasswordFieldModel.tsx | 4 ++-- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/packages/core/client/src/flow/models/fields/DateTimeFieldModel/DateTimeNoTzFieldModel.tsx b/packages/core/client/src/flow/models/fields/DateTimeFieldModel/DateTimeNoTzFieldModel.tsx index d6feb632939..31b3dc98e9e 100644 --- a/packages/core/client/src/flow/models/fields/DateTimeFieldModel/DateTimeNoTzFieldModel.tsx +++ b/packages/core/client/src/flow/models/fields/DateTimeFieldModel/DateTimeNoTzFieldModel.tsx @@ -28,11 +28,11 @@ export const DateTimeNoTzPicker = (props) => { return onChange(val); } const outputFormat = showTime ? 'YYYY-MM-DD HH:mm:ss' : 'YYYY-MM-DD'; - if (showTime) { - onChange(dayjs(val, format).format(outputFormat)); - } else { - onChange(dayjs(val, format).startOf(picker).format(outputFormat)); - } + + // Adjust to start of period for month/quarter/year pickers + const adjustedVal = picker !== 'date' ? dayjs(val).startOf(picker) : dayjs(val); + + onChange(adjustedVal.format(outputFormat)); }, }; diff --git a/packages/core/client/src/flow/models/fields/DateTimeFieldModel/DateTimeTzFieldModel.tsx b/packages/core/client/src/flow/models/fields/DateTimeFieldModel/DateTimeTzFieldModel.tsx index 7c1b3dde4aa..52addad453e 100644 --- a/packages/core/client/src/flow/models/fields/DateTimeFieldModel/DateTimeTzFieldModel.tsx +++ b/packages/core/client/src/flow/models/fields/DateTimeFieldModel/DateTimeTzFieldModel.tsx @@ -56,7 +56,15 @@ export const DateTimeTzPicker = (props) => { picker, showTime, onChange: (val: any) => { - const result = parseToDate(val, format); + let result = parseToDate(val, format); + // Adjust to start of period for month/quarter/year pickers + if (result && picker !== 'date') { + const date = dayjs(result); + if (date.isValid()) { + result = date.startOf(picker).toDate(); + } + } + rest.onChange(result); }, }; diff --git a/packages/core/client/src/flow/models/fields/PasswordFieldModel.tsx b/packages/core/client/src/flow/models/fields/PasswordFieldModel.tsx index 4e04068fb42..844824ab985 100644 --- a/packages/core/client/src/flow/models/fields/PasswordFieldModel.tsx +++ b/packages/core/client/src/flow/models/fields/PasswordFieldModel.tsx @@ -7,14 +7,14 @@ * For more information, please refer to: https://www.nocobase.com/agreement. */ -import { Input } from 'antd'; import React from 'react'; import { EditableItemModel, tExpr } from '@nocobase/flow-engine'; +import { Password } from '../../../schema-component/antd/password'; import { FieldModel } from '../base'; export class PasswordFieldModel extends FieldModel { render() { - return ; + return ; } }