メインコンテンツまでスキップ

パスワードリセットブロック

ResetPassword は MUI 上に構築された、制御された2段階のリセットフロー(requestconfirm_password)です。

インストール

npm install @nodeblocks/frontend-reset-password-block

必要なもの

項目重要な理由
dataフォーム state の単一の信頼できる情報源
onDataChangeフィールド変更時に更新済み state とメタデータを受け取る
viewメールリクエスト UI とパスワード確認 UI を切り替える
onSendRequestリクエストフォーム送信時に呼び出される(view="request"
onResetPassword確認フォーム送信時に呼び出される(view="confirm_password"
errors (optional)フィールド単位のエラーフィードバックを表示する
制御されたコンポーネントと view

ResetPassword はフォーム state を所有しません。state はアプリ側で保持し、data を通じて渡してください。view="request" では { email } の data を、view="confirm_password" では { password, confirmPassword } の data を使います。

コード例

ライブエディター
function Example() {
  const [view] = React.useState('request');
  const [data, setData] = React.useState({email: ''});

  return (
    <ResetPassword
      view={view}
      data={data}
      onDataChange={setData}
      onSendRequest={formData => {
        alert(`Send request:\n${JSON.stringify(formData, null, 2)}`);
      }}
      onResetPassword={formData => {
        alert(`Reset password:\n${JSON.stringify(formData, null, 2)}`);
      }}
    />
  );
}
結果
Loading...

重要な props

コア props

PropTypeRequiredDefaultDescription
dataResetPasswordFormData ({ email? } or { password?, confirmPassword? }, or extended Record<string, unknown>)Yes-現在のフォーム data。形は view と一致している必要があります
onDataChange(data, meta) => voidYes-更新時に呼び出されます。meta には name, value, cause (input, change, blur, clear, reset, programmatic), optional event が含まれます
view'request' | 'confirm_password'Yes'request'リセットフローのアクティブなステップ
onSendRequest(data) => voidYes-view="request" の送信ハンドラー
onResetPassword(data) => voidYes-view="confirm_password" の送信ハンドラー
errors{ [fieldName: string]: string | string[] }Noundefineddata のフィールド名(例: email, password, confirmPassword)に紐づくフィールドエラー

コンテンツ props

PropTypeRequiredDefaultDescription
resetPasswordTitleReactNodeNo'Reset Password'タイトルコンテンツ
descriptionReactNodeNo'Please enter your email address you registered'タイトル下に表示する説明。非表示にするには null を渡してください
labels{ emailField?, passwordField?, confirmPasswordField?, resetPasswordButton? }NoemailField: 'Email', passwordField: 'Password', confirmPasswordField: 'Confirm Password', resetPasswordButton: 'Reset Password'フィールドとボタンのラベルを上書き
placeholders{ emailField?, passwordField?, confirmPasswordField? }NoemailField: 'Please enter your email', passwordField: 'Please enter your new password', confirmPasswordField: 'Please confirm your password'フィールドのプレースホルダーを上書き
showPasswordbooleanNointernal falseForm.PasswordField のパスワード表示状態(confirm_password view)
onShowPasswordClick(show: boolean) => voidNointernal toggleパスワード表示ハンドラー
showConfirmPasswordbooleanNointernal falseForm.ConfirmPasswordField の確認パスワード表示状態
onShowConfirmPasswordClick(show: boolean) => voidNointernal toggle確認パスワード表示ハンドラー

レイアウトと構成 props

PropTypeRequiredDefaultDescription
childrenBlocksOverride | ReactNodeNoundefinedデフォルトのブロックを上書きするか、カスタムの JSX children を提供します
componentReact.ElementTypeNo'form'ルート要素の型
classNamestringNoundefinedルートコンテナのクラス名
sxSxPropsNoundefinedルートコンテナ向けの MUI システムスタイル

ResetPasswordStackPropschildrenonSubmit を除く)も継承するため、idspacingcomponent などの標準的な stack props がサポートされます。フォーム送信は ResetPassword.Form の内部で処理されます。オーバーライドなしのデフォルトのブロック順は title, description, form (defaultBlockOrder) です。

デフォルト UI ブロック

BlockBuilt onNotes
ResetPassword (root)Stack制御されたコンテナ。デフォルト component="form"。送信ハンドラーは Form にあります
ResetPassword.TitleTypographyタイトルテキストブロック(variant="h4")。デフォルト Reset Password
ResetPassword.DescriptionTypography説明テキスト(variant="body2")。デフォルト Please enter your email address you registereddescriptionnull のときは非表示
ResetPassword.FormStack (component="form")フォームコンテナ。view に応じて onSendRequest または onResetPassword を呼び出します
ResetPassword.Form.EmailFieldTextFieldview="request" のときのみ表示。name="email"。デフォルト Email / Please enter your email
ResetPassword.Form.PasswordFieldTextField + IconButtonview="confirm_password" のときのみ表示。name="password"。デフォルト Password / Please enter your new password。表示切替あり
ResetPassword.Form.ConfirmPasswordFieldTextField + IconButtonview="confirm_password" のときのみ表示。name="confirmPassword"。デフォルト Confirm Password / Please confirm your password。個別の表示切替あり
ResetPassword.Form.ResetPasswordButtonButton送信ボタン(variant="contained", type="submit")。デフォルト Reset Password

TypeScript

import {ResetPassword, ResetPasswordFormData} from '@nodeblocks/frontend-reset-password-block';

type MyResetPasswordData = ResetPasswordFormData & {
token?: string;
};