Codeer.LowCode.Blazor の拡張 Field ライブラリ。標準の Bootstrap ベースコンポーネントを MudBlazor コンポーネントに置き換える。Calendar/Chart フィールドなど独自コンポーネントも含む。
- Version: 0.4.0
- Target: .NET 8.0
- Base Library: Codeer.LowCode.Blazor (現在 v1.2.49)
- UI Library: MudBlazor (現在 v7.8.0)
- Standard Library Source (参照用):
C:\tfs\codeer\Codeer.LowCode.Blazor
Designs/MudXxxFieldDesign.cs → 標準の XxxFieldDesign を継承
Components/MudXxxFieldComponent.razor → MudFieldComponentBase<TField, TDesign> を継承
Search/MudXxxComponent.razor → 検索用コンポーネント (該当する型のみ)
[IgnoreBaseProperties(nameof(Variant), nameof(ImageResourceSet), nameof(ShowTextInToolTip))]
public class MudXxxFieldDesign : XxxFieldDesign
{
public MudXxxFieldDesign() => TypeFullName = typeof(MudXxxFieldDesign).FullName!;
public override string GetWebComponentTypeFullName() => typeof(MudXxxFieldComponent).FullName!;
public override string GetSearchWebComponentTypeFullName() => typeof(MudXxxComponent).FullName!;
[Designer(DisplayName = "Variant")]
public Variant MudVariant { get; set; } // MudBlazor.Variant
[Designer]
public Color Color { get; set; } // MudBlazor.Color
}@inherits MudFieldComponentBase<XxxField, MudXxxFieldDesign>
@if (IsViewMode) {
<span class="d-block py-2">@ViewOnlyValue</span>
} else {
<MudTextField @bind-Value:get="@Value" @bind-Value:set="@OnValueChanged"
Variant="MudDesign.Variant" Error="!Field.IsValid" ErrorText="@(Field.ErrorText)" />
}
@code {
private bool IsDisabled => Field.IsEnabled == false;
private bool IsViewMode => Field.IsViewOnly;
// Field.Services.AppInfoService.Localize() でローカライズ
// Field.Services.AppInfoService.IsDesignMode でデザインモード判定
// MudDesign プロパティで MudBlazor 固有のデザイン設定にアクセス
}// NG: Field.Localize() は internal - 外部アセンブリからアクセス不可
// OK:
Field.Services.AppInfoService.Localize(text)以下は Codeer.LowCode.Blazor の internal メソッドなので直接呼べない:
Field.Localize()→Field.Services.AppInfoService.Localize()を使うField.GetRowCount()→ 自前で計算 (AutoFitRows対応含む)LabelField.IsRequired()→ 関連フィールドを自前で確認するロジックを実装
MudSlider<T> は nullable 型を受け付けない。
decimal? → decimal に変換してバインドする必要がある。
ButtonField:Field.Textを使う (スクリプトによる実行時上書きをサポート)SubmitButtonField:Field.Design.Textを使う
現在 v7.8.0。
# ソリューション全体ビルド
dotnet build Codeer.LowCode.Bindings.MudBlazor.sln
# メインライブラリのみ
dotnet build Codeer.LowCode.Bindings.MudBlazor/Codeer.LowCode.Bindings.MudBlazor.csprojNuGet パッケージはビルド時に自動生成 (GeneratePackageOnBuild: True)。
- NuGet 更新:
Codeer.LowCode.Blazorのバージョンを上げる - 標準コンポーネントとの差分確認: 各フィールドの標準実装を読み、変更点を特定
- 標準コンポーネント:
C:\tfs\codeer\Codeer.LowCode.Blazor\Source\Codeer.LowCode.Blazor\Components\Fields\ - 標準検索コンポーネント:
C:\tfs\codeer\Codeer.LowCode.Blazor\Source\Codeer.LowCode.Blazor\Components\Search\
- 標準コンポーネント:
- Design クラスの確認: 新しいプロパティが追加された場合、
[IgnoreBaseProperties]の更新要否を確認 - ビルド検証: 全プロジェクトでビルドエラーがないことを確認
- Example プロジェクト: 標準の Example (
C:\tfs\codeer\...\Source\App\) と差分確認
MaintenanceDocs/ フォルダに詳細情報あり:
ComponentMapping.md- 全コンポーネントの対応表と実装状況StandardDifferences.md- 標準との既知の差異・制約事項ProjectStructure.md- ファイル構成の詳細
Codeer.LowCode.Bindings.MudBlazor/
├── _Imports.razor # グローバル using
├── Components/ # 18 フィールドコンポーネント (Calendar/Chart含む)
├── Designs/ # 17 デザインクラス
├── Search/ # 10 検索コンポーネント
├── Infrastructure/ # MudFieldComponentBase.cs (基底クラス)
├── Internal/ # DateTimeHelper.cs, InternalMudDatePicker等
├── Fields/ # MudCalendarField.cs, MudChartField.cs (独自フィールド)
├── Models/ # ModuleCalendarItem.cs
├── Installer/ # MudBlazorInstaller.razor, MudBlazorLoader.cs
└── Properties/ # Resource.resx, Resource.ja-JP.resx (ローカライズ)
-
MudCalendarField - カレンダー表示 (Heron.MudCalendar 使用)
- Design:
MudCalendarFieldDesign.cs - Component:
MudCalendarFieldComponent.razor - Field:
MudCalendarField.cs - Model:
ModuleCalendarItem.cs
- Design:
-
MudChartField - グラフ表示 (MudChart 使用)
- Design:
MudChartFieldDesign.cs - Component:
MudChartFieldComponent.razor - Field:
MudChartField.cs
- Design:
- C# インデント: 4スペース
- Razor/JSON: 2スペース
- 改行: CRLF
- Nullable: enable
- ImplicitUsings: enable
- コンポーネント内のコードは
@code {}に記述 (コードビハインド不使用)