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

パスワード変更ブロック

ChangePassword は MUI 上に構築された制御済みのパスワード変更フォームブロックです。

インストール

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

必要なもの

項目重要な理由
dataフォーム state の単一の信頼できる情報源 (currentPassword, newPassword, confirmPassword)
onDataChangeフィールド変更時に更新済み state とメタデータを受け取る。meta には name, value, cause (input, change, blur, clear, reset, programmatic), optional event が含まれます
errors (optional)フィールド単位のエラーフィードバックを表示する
resetPasswordUrl (optional)「パスワードを忘れた」リンクの遷移先 URL
制御されたコンポーネント

ChangePassword はフォーム state を所有しません。state はアプリ側で保持し、data を通じて渡してください。

コード例

ライブエディター
function Example() {
  const defaultData = {
    currentPassword: '',
    newPassword: '',
    confirmPassword: '',
  };

  const [data, setData] = React.useState(defaultData);

  return (
    <ChangePassword
      data={data}
      onDataChange={setData}
      onSubmit={e => {
        e.preventDefault();
        alert(`Submit:\n${JSON.stringify(data, null, 2)}`);
      }}
    />
  );
}
結果
Loading...

重要な props

コア props

PropTypeRequiredDefaultDescription
dataChangePasswordFormData ({ currentPassword?, newPassword?, confirmPassword? } or extended Record<string, unknown>)Yes-現在のフォーム data オブジェクト
onDataChange(data, meta) => voidYes-更新時に呼び出されます。meta には name, value, cause (input, change, blur, clear, reset, programmatic), optional event が含まれます
errors{ [fieldName: string]: string | string[] }Noundefineddata のフィールド名(currentPassword, newPassword, confirmPassword)に紐づくフィールドエラー

コンテンツ props

PropTypeRequiredDefaultDescription
resetPasswordUrlstringNo/auth/resetpasswordForm.ResetPasswordLink の URL(リンク文言のデフォルト: パスワードを忘れた方

レイアウトと構成 props

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

ChangePasswordStackProps<'form'>children を除く)も継承するため、onSubmitidnoValidate などの標準的なフォーム props がサポートされます。オーバーライドなしのデフォルトのブロック順は title, form (defaultBlockOrder) です。

デフォルト UI ブロック

BlockBuilt onNotes
ChangePassword (root)Stack (component="form")制御されたフォームコンテナ。内部コンテンツの最大幅は 684px
ChangePassword.TitleTypographyタイトル(variant="h6")。デフォルト パスワードを変更
ChangePassword.FormStackフォームフィールドのコンテナ(送信はルート form が処理)
ChangePassword.Form.CurrentPasswordFieldTextField + IconButtonデフォルトのラベル/プレースホルダー 現在のパスワード / 現在のパスワードを入力
ChangePassword.Form.ResetPasswordLinkBox + Linkデフォルトのリンク文言 パスワードを忘れた方; href は resetPasswordUrl または /auth/resetpassword にフォールバック
ChangePassword.Form.NewPasswordFieldTextField + IconButtonデフォルト 新しいパスワード / 新しいパスワードを入力
ChangePassword.Form.ConfirmPasswordFieldTextField + IconButtonデフォルト 新しいパスワードを再入力(ラベルとプレースホルダー)
ChangePassword.Form.ChangePasswordButtonButton送信(variant="contained", type="submit")。デフォルト パスワードを変更

TypeScript

import {ChangePassword, ChangePasswordFormData} from '@nodeblocks/frontend-change-password-block';

type MyChangePasswordData = ChangePasswordFormData & {
userId?: string;
};