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

サインアップブロック

SignUp は MUI 上に構築された制御された登録フォームブロックです。

インストール

npm install @nodeblocks/frontend-signup-block

必要なもの

項目重要な理由
dataフォーム state の単一の信頼できる情報源
onDataChange検証や分析のために更新済み state とメタデータを受け取ります
errors (optional)フィールド単位のエラーフィードバックを表示します
termsOfUseUrl (optional)利用規約チェックボックスリンクの遷移先 URL(デフォルトは /terms-of-use
privacyPolicyUrl (optional)プライバシーチェックボックスリンクの遷移先 URL(デフォルトは /privacy-policy
loginUrl (optional)サインインリンクの遷移先 URL(デフォルトは /auth/login
制御されたコンポーネント

SignUp はフォーム state を所有しません。state はアプリ側で保持し、data を通じて渡してください。デフォルトの形には emailpasswordagreesUserAgreementagreesPrivacyPolicy が含まれます。

コード例

ライブエディター
function Example() {
  const defaultData = {
    email: '',
    password: '',
    agreesUserAgreement: false,
    agreesPrivacyPolicy: false,
  };

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

  return (
    <SignUp
      data={data}
      onDataChange={(nextData) => {
        setData(nextData);
      }}
    />
  );
}
結果
Loading...

重要な props

コア props

プロパティ必須デフォルト説明
dataSignUpFormData ({ email, password, agreesUserAgreement, agreesPrivacyPolicy } or extended Record<string, unknown>)Yes-現在のフォーム data オブジェクト
onDataChange(data, meta) => voidYes-更新時に呼び出されます。meta には namevaluecauseinputchangeblurclearresetprogrammatic)、任意の event が含まれます
errors{ [fieldName: string]: string | string[] }Noundefineddata のフィールド名に紐づくフィールドエラー(例: emailpasswordagreesUserAgreementagreesPrivacyPolicy

コンテンツ props

プロパティ必須デフォルト説明
labels{ signUpTitle?, emailField?, passwordField?, termsOfUse?, privacyPolicy?, signUpButton?, gotoSignIn?, backButton? }NosignUpTitle: 'Create Your Account', emailField: 'Email Address', passwordField: 'Password', termsOfUse: 'Accept the terms of use.', privacyPolicy: 'Accept the privacy policy.', signUpButton: 'Sign Up', gotoSignIn: 'Already have an account? Sign In.', backButton: 'Back to previous page'デフォルトのテキストラベルを上書きします
placeholders{ emailField?, passwordField? }NoemailField: 'Enter your email address', passwordField: 'Enter your password'メール / パスワードのプレースホルダーを上書きします
termsOfUseUrlstringNo/terms-of-use利用規約リンクの遷移先 URL
privacyPolicyUrlstringNo/privacy-policyプライバシーリンクの遷移先 URL
loginUrlstringNo/auth/login「サインインへ移動」リンクの遷移先 URL

レイアウトと構成 props

プロパティ必須デフォルト説明
childrenBlocksOverride | ReactNodeNoundefinedデフォルトのブロックを上書きするか、カスタムの JSX children を提供します
blockSpacingBeforePartial<Record<string, number | Partial<Record<'xs' | 'sm' | 'md' | 'lg' | 'xl', number>>>>No{ passwordField: 3, termsOfUse: 3, privacyPolicy: 0 }列挙されたブロックの前に置くテーマ間隔。デフォルトブロックまたはブロック上書きパターンにのみ適用されます
componentReact.ElementTypeNo'form'ルート要素の型
classNamestringNoundefinedルートコンテナのクラス名
sxSxPropsNoundefinedルートコンテナ向けの MUI システムスタイル

SignUpStackProps<'form'>children を除く)も継承するため、onSubmitidnoValidate などの標準的な form / stack props がサポートされます。上書きなしのデフォルトのブロック順は signUpTitleemailFieldpasswordFieldtermsOfUseprivacyPolicysignUpButtongotoSignInbackButton (defaultBlockOrder) です。

デフォルト UI ブロック

ブロック基盤補足
SignUp (root)Stack (component="form")制御されたフォームコンテナ。最大幅 496px、中央寄せのカードレイアウト
SignUp.SignUpTitleTypographyタイトルテキストブロック(variant="h4")。labels.signUpTitle または children で上書き可能
SignUp.EmailFieldTextFieldメール入力(name="email", autoComplete="username")。デフォルトラベルは Email Address、プレースホルダーは Enter your email address
SignUp.PasswordFieldTextField + IconButton表示切り替え付きのパスワード入力。autoComplete="new-password"。デフォルトラベルは Password、プレースホルダーは Enter your password
SignUp.TermsOfUseCheckbox + FormControlLabel + Linkチェックボックス(name="agreesUserAgreement")。ラベルは termsOfUseUrl へのリンク(target="_blank")です
SignUp.PrivacyPolicyCheckbox + FormControlLabel + Linkチェックボックス(name="agreesPrivacyPolicy")。ラベルは privacyPolicyUrl へのリンク(target="_blank")です
SignUp.SignUpButtonButton送信ボタン(variant="contained"size="large"type="submit"fullWidth
SignUp.GotoSignInBox + Linkサインインへのナビゲーション。loginUrl またはカスタム children を使用
SignUp.BackButtonButton補助アクション(variant="outlined"size="large"type="button"fullWidth)。デフォルト順に含まれます。不要なら blockOrder から外してください

追加のフィールドプリミティブ

プリミティブ基盤補足
SignUp.TextFieldTextField汎用テキスト入力
SignUp.TimeFieldTextField時刻入力(type="time"
SignUp.CheckboxFieldCheckbox + FormControlヘルパーテキスト / エラーテキスト付きのチェックボックス
SignUp.SelectFieldSelect + TextFieldMUI TextField 経由で表示されるセレクト入力

TypeScript

import {SignUp, SignUpFormData} from '@nodeblocks/frontend-signup-block';

type MySignUpData = SignUpFormData & {
companyName?: string;
};