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

基本情報ブロック

BasicInformation は MUI ベースの、住所と連絡先情報を扱う制御型フォームブロックです。

インストール

npm install @nodeblocks/frontend-basic-information-block

必要なもの

項目理由
dataフォーム状態の単一の信頼源(NameInput, FuriganaInput, PostalCodeInput, PrefectureSelect など)
onDataChange検証、分析、または副作用のための更新済み状態とメタデータを受け取ります
errors (optional)フィールドパスをキーにしたフィールドエラー
labels (optional)タイトル、サブタイトル、フィールドラベル、検索ボタン文言、送信ボタン文言のルート文言
placeholders (optional)テキストフィールドとセレクトのルートプレースホルダー文言
selectOptions (optional)都道府県セレクトの選択肢を上書きします
onSearchAddressClick (optional)郵便番号検索ボタンを処理します
blockSpacingBefore (optional)デフォルトまたはオーバーライドレイアウト内の指定ブロックの前にカスタム余白を追加します
制御コンポーネント

BasicInformation はフォーム状態を保持しません。状態はアプリ側で管理し、data に渡してください。デフォルトの形には NameInput, FuriganaInput, PostalCodeInput, PrefectureSelect, CityInput, AddressInput, PhoneInput が含まれます。

コード例

ライブエディター
function Example() {
  const defaultData = {
    NameInput: '',
    FuriganaInput: '',
    PostalCodeInput: '',
    PrefectureSelect: '',
    CityInput: '',
    AddressInput: '',
    PhoneInput: '',
  };

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

  return (
    <BasicInformation
      data={data}
      onDataChange={setData}
      onSearchAddressClick={() => {
        setData((current) => ({ ...current }));
      }}
      onSubmit={(event) => {
        event.preventDefault();
        setData((current) => ({ ...current }));
      }}
    />
  );
}
結果
Loading...

重要なプロパティ

コアプロパティ

プロパティ必須デフォルト説明
dataBasicInformationFormData ({ NameInput, FuriganaInput, PostalCodeInput, PrefectureSelect, CityInput, AddressInput, PhoneInput } or extended Record<string, unknown>)Yes-制御されたフォームデータオブジェクト
onDataChange(data, meta) => voidYes-更新時に呼び出されます。meta には name, value, causeinput, change, blur, clear, reset, programmatic)、および任意の event が含まれます
errors{ [fieldName: string]: string | string[] }NoundefinedField errors keyed by field path; common keys are NameInput, FuriganaInput, PostalCodeInput, PrefectureSelect, CityInput, AddressInput, and PhoneInput

コンテンツプロパティ

プロパティ必須デフォルト説明
labels{ title?, subtitle?, nameInput?, furiganaInput?, postalCodeInput?, searchAddressButton?, prefectureSelect?, cityInput?, addressInput?, phoneInput?, submitButton? }Notitle: '基本情報', subtitle: '* は必須事項です', nameInput: '氏名', furiganaInput: 'フリガナ', postalCodeInput: '郵便番号', searchAddressButton: '住所を検索', prefectureSelect: '都道府県', cityInput: '市区町村', addressInput: '町名・番地・建物', phoneInput: '連絡先電話番号', submitButton: '次へ'タイトル、ヘルパーテキスト、フィールドラベル、検索ボタン、送信ボタンのルート文言
placeholders{ nameInput?, furiganaInput?, postalCodeInput?, prefectureSelect?, cityInput?, addressInput?, phoneInput? }NonameInput: '氏名を入力', furiganaInput: 'フリガナを入力', postalCodeInput: '郵便番号を入力', prefectureSelect: '都道府県を選択', cityInput: '市区町村を入力', addressInput: '町名・番地・建物を入力', phoneInput: '電話番号を入力(ハイフンなしで入力)'テキスト入力とセレクトのルートプレースホルダー文言
selectOptions{ prefectureSelect?: { value: string; label: string }[] }NoPREFECTURES都道府県セレクトに表示する選択肢を上書きします
onSearchAddressClickMouseEventHandler<HTMLButtonElement>Noundefined郵便番号検索ボタンを有効にし、ユーザーがクリックしたときに実行されます

レイアウトと構成のプロパティ

プロパティ必須デフォルト説明
componentStackProps<'form'>['component']No'form'ルートコンテナ要素
childrenReactNode or block override functionNoundefinedコンパウンドコンポーネント用の JSX children を渡すか、ブロックをオーバーライドする関数を渡します
blockSpacingBeforePartial<Record<string, number | { xs?: number; sm?: number; md?: number; lg?: number; xl?: number }>>No{ subtitle: 4, nameInput: { xs: 4, sm: 3 }, submitButton: 4 }Extra spacing before selected blocks
classNamestringNoundefinedルートコンテナの追加クラス名
sxStackProps<'form'>['sx']Noundefinedルートコンテナの MUI sx スタイリング

Inherits StackProps<'form'> props except children. When using block overrides, the default block order is title, subtitle, nameInput, furiganaInput, postalCodeInput, prefectureSelect, cityInput, addressInput, phoneInput, submitButton, input.

デフォルト UI ブロック

ブロックMUI ベースコンポーネント備考
BasicInformationStackルートフォームコンテナ。component="form" がデフォルトで、組み込みの余白と縦方向の間隔があります
TitleTypographyデフォルト文言は 基本情報 です
SubtitleTypographyデフォルト文言は * は必須事項です です
NameInputTextFieldname="NameInput"、デフォルトラベルは 氏名、デフォルトプレースホルダーは 氏名を入力 です
FuriganaInputTextFieldname="FuriganaInput"、デフォルトラベルは フリガナ、デフォルトプレースホルダーは フリガナを入力 です
PostalCodeInputTextField + Buttonname="PostalCodeInput"、デフォルトラベルは 郵便番号、デフォルトプレースホルダーは 郵便番号を入力inputMode="numeric"onSearchAddressClick がある場合の検索ボタン文言のデフォルトは 住所を検索 です
PrefectureSelectFormControl + InputLabel + Select + MenuItemname="PrefectureSelect"、デフォルトラベルは 都道府県、デフォルトプレースホルダーは 都道府県を選択、選択肢のデフォルトは PREFECTURES です
CityInputTextFieldname="CityInput"、デフォルトラベルは 市区町村、デフォルトプレースホルダーは 市区町村を入力 です
AddressInputTextFieldname="AddressInput"、デフォルトラベルは 町名・番地・建物、デフォルトプレースホルダーは 町名・番地・建物を入力 です
PhoneInputTextFieldname="PhoneInput"、デフォルトラベルは 連絡先電話番号、デフォルトプレースホルダーは 電話番号を入力(ハイフンなしで入力)inputMode="numeric" です
SubmitButtonButtonデフォルト文言は 次へ です

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

プリミティブMUI ベースコンポーネント備考
InputTextFieldカスタムフローやオーバーライド用に BasicInformation.Input として公開されている内部フィールドプリミティブです

TypeScript

export type BasicInformationFormData =
| {
NameInput: string;
FuriganaInput: string;
PostalCodeInput: string;
PrefectureSelect: string;
CityInput: string;
AddressInput: string;
PhoneInput: string;
}
| Record<string, unknown>;