From 525423708920437723d1b453e595397456206f42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuzhan=20A=C4=9F=C4=B1r?= <90545225+oguzhanagir@users.noreply.github.com> Date: Fri, 21 Aug 2026 10:47:33 +0300 Subject: [PATCH 1/3] Add Power Tools Custom Code Documentation --- docs/en/Power-Tools-Custom-Code-Angular.md | 215 ++++++++++++++ docs/en/Power-Tools-Custom-Code-Mvc.md | 216 ++++++++++++++ docs/en/Power-Tools-Custom-Code-React.md | 273 ++++++++++++++++++ ...ower-tools-generate-overridable-entity.png | Bin 0 -> 187342 bytes docs/en/nav-aspnet-core-angular.json | 4 + docs/en/nav-aspnet-core-mvc.json | 4 + docs/en/nav-aspnet-core-react.json | 4 + 7 files changed, 716 insertions(+) create mode 100644 docs/en/Power-Tools-Custom-Code-Angular.md create mode 100644 docs/en/Power-Tools-Custom-Code-Mvc.md create mode 100644 docs/en/Power-Tools-Custom-Code-React.md create mode 100644 docs/en/images/aspnet-zero-power-tools-generate-overridable-entity.png diff --git a/docs/en/Power-Tools-Custom-Code-Angular.md b/docs/en/Power-Tools-Custom-Code-Angular.md new file mode 100644 index 00000000..4323a284 --- /dev/null +++ b/docs/en/Power-Tools-Custom-Code-Angular.md @@ -0,0 +1,215 @@ +# Power Tools Custom Code - Angular + +ASP.NET Zero Power Tools generates code that can be fully regenerated whenever you change an entity. The **Custom Code** feature lets you add your own code to the generated pages and classes so that your additions survive regeneration. + +This page covers how Custom Code works in **Angular** projects. For other UI frameworks. + +## Enabling Custom Code + +Open Power Tools, select your entity, and turn on the **Generate Overridable Entity** switch in the Entity Information section. + + + +When this switch is on, Power Tools generates additional extension files that you own. These files are created once and never overwritten, even when you regenerate the entity. + +> The switch affects both the server side and the client side. + +## How It Works + +Angular uses two complementary mechanisms to preserve your code during regeneration: + +| Mechanism | How It Works | Applies To | +|---|---|---| +| **Extension files** (SkipIfExists) | A base class is regenerated every time. A developer-owned subclass is generated once and never overwritten. You override methods or add logic in the subclass. | Server-side C# files and Angular TypeScript components | +| **Preserved region slots** (`az:begin` / `az:end`) | Named regions inside regenerated HTML templates. Power Tools preserves any markup you place between the markers. | Angular component HTML templates | + +## Server Side + +When **Generate Overridable Entity** is enabled, the following server-side extension files are generated. These are shared across all UI frameworks. + +| File | Base Class | Purpose | +|---|---|---| +| `AppService.Extended.cs` | `AppServiceBase` | Override application service methods | +| `AppServiceInterface.Extended.cs` | - | Extend the service interface | +| `Entity.Extended.cs` | `EntityBase` | Add custom properties or methods to the entity | +| `CreateOrEditDto.Extended.cs` | `CreateOrEditDtoBase` | Extend the input DTO | +| `EntityDto.Extended.cs` | `EntityDtoBase` | Extend the list DTO | +| `GetAllInput.Extended.cs` | `GetAllInputBase` | Add custom filter parameters | +| `GetAllForExcelInput.Extended.cs` | `GetAllForExcelInputBase` | Add custom Excel export filter parameters | +| `GetAllOutput.Extended.cs` | `GetAllOutputBase` | Extend the output DTO | +| `GetForEditOutput.Extended.cs` | `GetForEditOutputBase` | Extend the edit output DTO | +| `LookupDto.Extended.cs` | `LookupDtoBase` | Extend the lookup DTO | +| `HostController.Extended.cs` | `HostControllerBase` | Extend the API controller | + +Each `.Extended.cs` file contains: + +```csharp +// Write your custom code here. +// ASP.NET Zero Power Tools will not overwrite this class +// when you regenerate the related entity. +``` + +The base files (without `.Extended`) are fully regenerated on every run. New entity properties automatically flow into them. Your customizations in the extension files are preserved because Power Tools never touches them after the first generation. + +## Angular TypeScript - Extension Files + +When you enable **Generate Overridable Entity**, each Angular component is split into two TypeScript files: + +| Generated File | Description | +|---|---| +| `*.component.base.ts` | Abstract base class with all generated logic. **Regenerated every time.** | +| `*.component.ts` | Your subclass that extends the base. **Generated once, never overwritten.** | + +This pattern applies to all component types: + +- **Page component** -- the list page +- **Create/edit component** -- modal, full page, or offcanvas variant +- **Detail/view component** -- modal or full page variant + +### Example for a `Product` Entity + +``` +products.component.base.ts ← regenerated (abstract base) +products.component.ts ← yours (extends ProductsComponentBase) + +create-or-edit-product-modal.component.base.ts ← regenerated +create-or-edit-product-modal.component.ts ← yours + +view-product-modal.component.base.ts ← regenerated +view-product-modal.component.ts ← yours +``` + +### Customizing in the Subclass + +Your `.component.ts` extends the base class. Override any method to customize behavior: + +```typescript +import { ProductsComponentBase } from "./products.component.base"; + +@Component({ + // ... +}) +export class ProductsComponent extends ProductsComponentBase { + // Write your custom code here. + // ASP.NET Zero Power Tools will not overwrite this class + // when you regenerate the related entity. +} +``` + +Because the concrete class sits at the standard `.component.ts` path, routing, lazy-loading, and module imports remain untouched. When you regenerate, the base class picks up new entity properties and the subclass keeps your code. + +**Key points about the base class:** + +- The class is declared `abstract` so it cannot be instantiated directly. +- Members use `protected` access (instead of `private`) so your subclass can reach them. +- The standalone imports array is exported as a named constant (e.g. `ProductsComponentImports`) so the subclass can use it in its `@Component` decorator. +- The `@Component` decorator on the base has `{ template: '' }` -- just a stub. The real template belongs to the concrete class. + +## Angular HTML - Preserved Region Slots + +Angular HTML templates contain named `az:begin` / `az:end` markers. You can place custom markup between these markers and it will be preserved on regeneration. The rest of the template is fully regenerated. + +### List Page Slots + +```html + + + + + + + + + + + + + + + + + + + +``` + +### Create/Edit Page Slots + +```html + + + +``` + +### Detail/View Page Slots + +```html + + + +``` + +### Slot Reference + +| Slot Name | File | Purpose | +|---|---|---| +| `filters` | List page HTML | Custom advanced filter controls | +| `column-headers` | List page HTML | Custom table column headers (``) | +| `column-cells` | List page HTML | Custom table column cells (``) | +| `row-actions` | List page HTML | Custom row action menu items | +| `toolbar-actions` | List page HTML | Custom toolbar buttons | +| `form-fields` | Create/edit HTML | Custom form fields | +| `detail-fields` | Detail/view HTML | Custom detail display fields | + +> The `column-headers` and `column-cells` slots are paired. Adding a custom column requires entries in both slots. + +### Example - Adding a Custom Filter + +```html + +
+ + +
+ +``` + +After regeneration, your `
` stays in place while the rest of the template is updated with any new entity properties. + +### Example - Adding a Custom Table Column + +```html + +Custom Score + + + +{{ record.product.customScore }} + +``` + +## Preserved Region Rules + +The `az:begin` / `az:end` markers follow these rules: + +| Rule | Description | +|---|---| +| **Comment wrapper** | Must use HTML comment syntax: `` | +| **Region names** | Letters, digits, underscores, hyphens, and dots only | +| **No nesting** | Regions cannot be placed inside other regions | +| **No duplicates** | Each region name must be unique within a file | +| **Empty regions are no-ops** | If you don't add anything between the markers, the region is ignored | + +## Safety Features + +Power Tools includes safety mechanisms to prevent code loss: + +- **Abort on malformed markers:** If region markers are broken (unclosed, nested, duplicated, mismatched), the entire file is left untouched. No partial merge ever occurs. +- **Orphan rescue:** If a region name existed in the old file but not in the newly generated output (for example, if a template update removes a slot), the content is saved to a sidecar file (`.orphaned.txt`) and a warning is shown. Content is never silently dropped. +- **Ownership guard:** When you toggle the **Generate Overridable Entity** switch on an already-generated entity, Power Tools detects whether existing files contain developer code and refuses to overwrite them. + +## Next + +[How to Create & Edit Power Tools Templates](How-To-Create-Edit-Power-Tools-Templates.md) diff --git a/docs/en/Power-Tools-Custom-Code-Mvc.md b/docs/en/Power-Tools-Custom-Code-Mvc.md new file mode 100644 index 00000000..5ff9fd23 --- /dev/null +++ b/docs/en/Power-Tools-Custom-Code-Mvc.md @@ -0,0 +1,216 @@ +# Power Tools Custom Code - MVC + +ASP.NET Zero Power Tools generates code that can be fully regenerated whenever you change an entity. The **Custom Code** feature lets you add your own code to the generated pages and classes so that your additions survive regeneration. + +This page covers how Custom Code works in **ASP.NET Core MVC** projects. For other UI frameworks. + +## Enabling Custom Code + +Open Power Tools, select your entity, and turn on the **Generate Overridable Entity** switch in the Entity Information section. + + + +When this switch is on, Power Tools generates additional extension files that you own. These files are created once and never overwritten, even when you regenerate the entity. + +> The switch affects both the server side and the client side. + +## How It Works + +MVC uses two complementary mechanisms to preserve your code during regeneration: + +| Mechanism | How It Works | Applies To | +|---|---|---| +| **Extension files** (SkipIfExists) | A base class is regenerated every time. A developer-owned subclass is generated once and never overwritten. | Server-side C# files and MVC Controller / ViewModel classes | +| **Preserved region slots** (`az:begin` / `az:end`) | Named regions inside regenerated files. Power Tools preserves any code you place between the markers. | Razor views (`.cshtml`) and JavaScript files (`.js`) | + +> Razor views and JavaScript files cannot use the base/subclass pattern, so they rely entirely on preserved region slots. + +## Server Side + +When **Generate Overridable Entity** is enabled, the following server-side extension files are generated. These are shared across all UI frameworks. + +| File | Base Class | Purpose | +|---|---|---| +| `AppService.Extended.cs` | `AppServiceBase` | Override application service methods | +| `AppServiceInterface.Extended.cs` | - | Extend the service interface | +| `Entity.Extended.cs` | `EntityBase` | Add custom properties or methods to the entity | +| `CreateOrEditDto.Extended.cs` | `CreateOrEditDtoBase` | Extend the input DTO | +| `EntityDto.Extended.cs` | `EntityDtoBase` | Extend the list DTO | +| `GetAllInput.Extended.cs` | `GetAllInputBase` | Add custom filter parameters | +| `GetAllForExcelInput.Extended.cs` | `GetAllForExcelInputBase` | Add custom Excel export filter parameters | +| `GetAllOutput.Extended.cs` | `GetAllOutputBase` | Extend the output DTO | +| `GetForEditOutput.Extended.cs` | `GetForEditOutputBase` | Extend the edit output DTO | +| `LookupDto.Extended.cs` | `LookupDtoBase` | Extend the lookup DTO | +| `HostController.Extended.cs` | `HostControllerBase` | Extend the API controller | + +Each `.Extended.cs` file contains: + +```csharp +// Write your custom code here. +// ASP.NET Zero Power Tools will not overwrite this class +// when you regenerate the related entity. +``` + +The base files (without `.Extended`) are fully regenerated on every run. New entity properties automatically flow into them. Your customizations in the extension files are preserved because Power Tools never touches them after the first generation. + +## MVC C# - Extension Files + +When you enable **Generate Overridable Entity**, the MVC Controller and ViewModel classes are split into base and extension files: + +| Generated File | Description | +|---|---| +| `*Controller.cs` (base) | Abstract base controller with all generated logic. **Regenerated every time.** | +| `*Controller.Extended.cs` | Your controller subclass. **Generated once, never overwritten.** | +| `*ViewModel.cs` (base) | Abstract base view model. **Regenerated every time.** | +| `*ViewModel.Extended.cs` | Your view model subclass. **Generated once, never overwritten.** | + +If the entity has a view-only page enabled, a `*ViewEntityViewModel.Extended.cs` is also generated. + +### Example for a `Product` Entity + +``` +ProductsController.cs ← regenerated (abstract base) +ProductsController.Extended.cs ← yours (extends base) + +ProductsViewModel.cs ← regenerated (abstract base) +ProductsViewModel.Extended.cs ← yours (extends base) +``` + +Override any method in the extension file: + +```csharp +public class ProductsController : ProductsControllerBase +{ + // Write your custom code here. + // ASP.NET Zero Power Tools will not overwrite this class + // when you regenerate the related entity. +} +``` + +## MVC Razor & JavaScript - Preserved Region Slots + +Razor views and JavaScript files use named `az:begin` / `az:end` markers. You can place custom markup or code between these markers and it will be preserved on regeneration. + +### Index Page - Razor Slots + +```html + + + + + + + +``` + +### Index Page Toolbar - Razor Slot + +```html + + + +``` + +### Index Page - JavaScript Slot + +```javascript +// az:begin(columns) +// Add custom DataTables columnDefs entries here +// az:end(columns) +``` + +### Create/Edit Modal - Razor Slot + +```html + + + +``` + +### View Entity Modal - Razor Slot + +```html + + + +``` + +### Slot Reference + +| Slot Name | File | Comment Style | Purpose | +|---|---|---|---| +| `filters` | Index Razor (`.cshtml`) | HTML | Custom advanced filter controls | +| `column-headers` | Index Razor (`.cshtml`) | HTML | Custom table column headers | +| `toolbar-actions` | Index Razor (`.cshtml`) | HTML | Custom toolbar buttons | +| `columns` | Index JavaScript (`.js`) | JS | Custom DataTables column definitions | +| `form-fields` | Create/edit Razor (`.cshtml`) | HTML | Custom form fields | +| `detail-fields` | View entity Razor (`.cshtml`) | HTML | Custom detail display fields | + +> The `column-headers` slot in the Razor file and the `columns` slot in the JavaScript file are **paired**. Adding a custom column requires entries in both files. + +### Example - Adding a Custom Column + +In the Razor file (`.cshtml`): + +```html + +Custom Score + +``` + +In the JavaScript file (`.js`): + +```javascript +// az:begin(columns) +{ + data: "product.customScore", + name: "customScore", + render: function(data) { return data || "-"; } +}, +// az:end(columns) +``` + +### Example - Adding a Custom Form Field + +```html + +
+ + +
+ +``` + +### Example - Adding a Custom Toolbar Button + +```html + + + +``` + +## Preserved Region Rules + +The `az:begin` / `az:end` markers follow these rules: + +| Rule | Description | +|---|---| +| **Comment wrapper matches the file type** | HTML: ``, JavaScript: `// az:begin(name)` | +| **Region names** | Letters, digits, underscores, hyphens, and dots only | +| **No nesting** | Regions cannot be placed inside other regions | +| **No duplicates** | Each region name must be unique within a file | +| **Empty regions are no-ops** | If you don't add anything between the markers, the region is ignored | + +## Safety Features + +Power Tools includes safety mechanisms to prevent code loss: + +- **Abort on malformed markers:** If region markers are broken (unclosed, nested, duplicated, mismatched), the entire file is left untouched. No partial merge ever occurs. +- **Orphan rescue:** If a region name existed in the old file but not in the newly generated output (for example, if a template update removes a slot), the content is saved to a sidecar file (`.orphaned.txt`) and a warning is shown. Content is never silently dropped. +- **Ownership guard:** When you toggle the **Generate Overridable Entity** switch on an already-generated entity, Power Tools detects whether existing files contain developer code and refuses to overwrite them. + +## Next + +[How to Create & Edit Power Tools Templates](How-To-Create-Edit-Power-Tools-Templates.md) diff --git a/docs/en/Power-Tools-Custom-Code-React.md b/docs/en/Power-Tools-Custom-Code-React.md new file mode 100644 index 00000000..fe99ab4d --- /dev/null +++ b/docs/en/Power-Tools-Custom-Code-React.md @@ -0,0 +1,273 @@ +# Power Tools Custom Code - React + +ASP.NET Zero Power Tools generates code that can be fully regenerated whenever you change an entity. The **Custom Code** feature lets you add your own code to the generated pages and classes so that your additions survive regeneration. + +This page covers how Custom Code works in **React** projects. For other UI frameworks. + +## Enabling Custom Code + +Open Power Tools, select your entity, and turn on the **Generate Overridable Entity** switch in the Entity Information section. + + + +When this switch is on, Power Tools generates additional customization files that you own. These files are created once and never overwritten, even when you regenerate the entity. + +> The switch affects both the server side and the client side. + +## How It Works + +React uses a different approach than Angular and MVC. Instead of inline region markers or base/subclass patterns for UI files, React generates **separate customization files** with typed hook functions that the generated page imports and calls at fixed extension points. + +| Mechanism | How It Works | Applies To | +|---|---|---| +| **Extension files** (SkipIfExists) | A base class is regenerated every time. A developer-owned subclass is generated once and never overwritten. | Server-side C# files only | +| **Customization files** | Separate `.tsx` files with hook functions. Never overwritten. The generated page imports and calls them. | React pages, forms, and detail views | +| **Regenerated type definitions** | A `customizations.types.ts` file that is regenerated to keep TypeScript types in sync with the entity. | React customization contexts | + +## Server Side + +When **Generate Overridable Entity** is enabled, the following server-side extension files are generated. These are shared across all UI frameworks. + +| File | Base Class | Purpose | +|---|---|---| +| `AppService.Extended.cs` | `AppServiceBase` | Override application service methods | +| `AppServiceInterface.Extended.cs` | - | Extend the service interface | +| `Entity.Extended.cs` | `EntityBase` | Add custom properties or methods to the entity | +| `CreateOrEditDto.Extended.cs` | `CreateOrEditDtoBase` | Extend the input DTO | +| `EntityDto.Extended.cs` | `EntityDtoBase` | Extend the list DTO | +| `GetAllInput.Extended.cs` | `GetAllInputBase` | Add custom filter parameters | +| `GetAllForExcelInput.Extended.cs` | `GetAllForExcelInputBase` | Add custom Excel export filter parameters | +| `GetAllOutput.Extended.cs` | `GetAllOutputBase` | Extend the output DTO | +| `GetForEditOutput.Extended.cs` | `GetForEditOutputBase` | Extend the edit output DTO | +| `LookupDto.Extended.cs` | `LookupDtoBase` | Extend the lookup DTO | +| `HostController.Extended.cs` | `HostControllerBase` | Extend the API controller | + +Each `.Extended.cs` file contains: + +```csharp +// Write your custom code here. +// ASP.NET Zero Power Tools will not overwrite this class +// when you regenerate the related entity. +``` + +The base files (without `.Extended`) are fully regenerated on every run. New entity properties automatically flow into them. Your customizations in the extension files are preserved because Power Tools never touches them after the first generation. + +## React Customization Files + +When you enable **Generate Overridable Entity**, Power Tools generates the following files alongside the main page: + +| Generated File | Overwritten? | Purpose | +|---|---|---| +| `customizations.tsx` | **Never** | Hook functions for the list page: extra columns, row actions, toolbar actions | +| `customizations.types.ts` | **Yes** (regenerated) | TypeScript types for the customization context | +| `CreateOrEdit*Modal.custom.tsx` | **Never** | Hook functions for the form: extra fields, before/after save | +| `View*Modal.custom.tsx` | **Never** | Hook functions for the detail view: extra detail items | + +> `customizations.types.ts` is the only customization-related file that gets regenerated. This is intentional, when the entity shape changes, the type definitions update and any stale code in your customization files produces a compile error rather than breaking silently. + +### File Layout Example for a `Product` Entity + +``` +pages/admin/inventory/products/ +├── index.tsx ← regenerated (main page) +├── customizations.tsx ← yours (list page hooks) +├── customizations.types.ts ← regenerated (types) +├── components/ +│ ├── CreateOrEditProductModal.tsx ← regenerated +│ ├── CreateOrEditProductModal.custom.tsx ← yours (form hooks) +│ ├── ViewProductModal.tsx ← regenerated +│ └── ViewProductModal.custom.tsx ← yours (detail hooks) +``` + +## List Page Hooks + +The `customizations.tsx` file provides three hook functions for the list page: + +```tsx +import type { ReactNode } from "react"; +import type { + ProductColumn, + ProductRowAction, + ProductsPageContext, +} from "./customizations.types"; + +/** Columns appended after the generated ones. */ +export const extraColumns = (ctx: ProductsPageContext): ProductColumn[] => []; + +/** Extra entries for a row's action menu, appended after the generated ones. */ +export const extraRowActions = ( + ctx: ProductsPageContext, + record: Parameters>[1], +): ProductRowAction[] => []; + +/** Extra buttons in the page header, rendered after the generated ones. */ +export const extraToolbarActions = (ctx: ProductsPageContext): ReactNode => null; +``` + +The generated `index.tsx` imports these functions and calls them at the right points: + +- `extraColumns` is spread into the Ant Design table column definitions +- `extraRowActions` is pushed into each row's action dropdown menu +- `extraToolbarActions` is rendered in the page header area + +### Example - Adding a Custom Column + +```tsx +export const extraColumns = (ctx: ProductsPageContext): ProductColumn[] => [ + { + title: "Custom Score", + dataIndex: ["product", "customScore"], + render: (text: any) => {text ?? "-"}, + }, +]; +``` + +### Example - Adding a Custom Toolbar Button + +```tsx +export const extraToolbarActions = (ctx: ProductsPageContext): ReactNode => ( + +); +``` + +### Example - Adding a Custom Row Action + +```tsx +export const extraRowActions = ( + ctx: ProductsPageContext, + record: Parameters>[1], +): ProductRowAction[] => [ + { + key: "duplicate", + label: "Duplicate", + onClick: () => { + // your duplication logic here + }, + }, +]; +``` + +## Form Hooks + +The `CreateOrEdit*Modal.custom.tsx` file provides three hook functions for the create/edit form: + +```tsx +import type { ReactNode } from "react"; +import type { CreateOrEditProductFormContext } from "../customizations.types"; +import type { CreateOrEditProductDto } from "@api/generated/service-proxies"; + +/** Form items rendered after the generated ones. */ +export const extraFormFields = ( + ctx: CreateOrEditProductFormContext, +): ReactNode => null; + +/** + * Runs after validation, just before the record is sent to the server. + * Adjust `dto` in place to add computed values. + * Throw to cancel the save. + */ +export const beforeSave = async ( + ctx: CreateOrEditProductFormContext, + dto: CreateOrEditProductDto, +): Promise => {}; + +/** Runs after the record is saved and before the modal closes. */ +export const afterSave = async ( + ctx: CreateOrEditProductFormContext, + dto: CreateOrEditProductDto, +): Promise => {}; +``` + +The generated `CreateOrEditProductModal.tsx` calls these hooks: + +- `extraFormFields` is rendered after the generated form fields inside the `
` +- `beforeSave` is called after form validation, before the API call -- **throw to cancel the save** +- `afterSave` is called after a successful save, before the modal closes + +### Example - Adding a Custom Form Field + +```tsx +export const extraFormFields = ( + ctx: CreateOrEditProductFormContext, +): ReactNode => ( + + + +); +``` + +### Example - Modifying DTO Before Save + +```tsx +export const beforeSave = async ( + ctx: CreateOrEditProductFormContext, + dto: CreateOrEditProductDto, +): Promise => { + // Set a computed field before sending to the server + dto.slug = dto.name?.toLowerCase().replace(/\s+/g, "-"); +}; +``` + +## Detail View Hooks + +The `View*Modal.custom.tsx` file provides one hook function for the detail/view modal: + +```tsx +import type { ReactNode } from "react"; +import type { ViewProductContext } from "../customizations.types"; + +/** Detail items rendered after the generated ones. */ +export const extraDetailItems = (ctx: ViewProductContext): ReactNode => null; +``` + +### Example - Adding Custom Detail Fields + +```tsx +export const extraDetailItems = (ctx: ViewProductContext): ReactNode => ( + <> + + {ctx.entity?.margin ? `${ctx.entity.margin}%` : "-"} + + +); +``` + +## Context Objects + +Each hook receives a typed context object. The context provides access to useful values without coupling your code to the generated component's internals. + +### Page Context + +| Property | Type | Description | +|---|---|---| +| `refresh` | `() => void` | Reloads the table data | +| `isGranted` | `(permission: string) => boolean` | Checks a permission | +| `navigate` | React Router `navigate` | Navigates to a route | + +### Form Context + +| Property | Type | Description | +|---|---|---| +| `form` | Ant Design `FormInstance` | The form instance for reading/setting field values | +| `isEditMode` | `boolean` | Whether the form is editing an existing record | +| `entityId` | Primary key type or `undefined` | The entity's primary key (in edit mode) | +| `service` | Service proxy instance | The service proxy for making API calls | + +## Safety Features + +- **SkipIfExists:** Customization files (`customizations.tsx`, `*.custom.tsx`) are generated once and never overwritten, even on regeneration. +- **Type safety:** `customizations.types.ts` is regenerated to keep types in sync. If the entity changes shape, stale code in your customization files produces a compile error rather than breaking silently. +- **Ownership guard:** When you toggle the **Generate Overridable Entity** switch on an already-generated entity, Power Tools detects whether existing files contain developer code and refuses to overwrite them. + +## Next + +[How to Create & Edit Power Tools Templates](How-To-Create-Edit-Power-Tools-Templates.md) diff --git a/docs/en/images/aspnet-zero-power-tools-generate-overridable-entity.png b/docs/en/images/aspnet-zero-power-tools-generate-overridable-entity.png new file mode 100644 index 0000000000000000000000000000000000000000..e14f2be959203bc5ddd6d15b9d8a30edbb02c46e GIT binary patch literal 187342 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

-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

  • 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 JtaD0e0swFH)lC2Z literal 0 HcmV?d00001 diff --git a/docs/en/nav-aspnet-core-angular.json b/docs/en/nav-aspnet-core-angular.json index 1d976418..ad393930 100644 --- a/docs/en/nav-aspnet-core-angular.json +++ b/docs/en/nav-aspnet-core-angular.json @@ -581,6 +581,10 @@ "text": "Master Detail Tables", "path": "Power-Tools-Master-Detail-Tables.md" }, + { + "text": "Custom Code", + "path": "Power-Tools-Custom-Code-Angular.md" + }, { "text": "How to Create & Edit Power Tools Templates", "path": "How-To-Create-Edit-Power-Tools-Templates.md" diff --git a/docs/en/nav-aspnet-core-mvc.json b/docs/en/nav-aspnet-core-mvc.json index 4f648527..c363daab 100644 --- a/docs/en/nav-aspnet-core-mvc.json +++ b/docs/en/nav-aspnet-core-mvc.json @@ -617,6 +617,10 @@ "text": "Master Detail Tables", "path": "Power-Tools-Master-Detail-Tables.md" }, + { + "text": "Custom Code", + "path": "Power-Tools-Custom-Code-Mvc.md" + }, { "text": "How to Create & Edit Power Tools Templates", "path": "How-To-Create-Edit-Power-Tools-Templates.md" diff --git a/docs/en/nav-aspnet-core-react.json b/docs/en/nav-aspnet-core-react.json index 93e78ce6..3ff95fd4 100644 --- a/docs/en/nav-aspnet-core-react.json +++ b/docs/en/nav-aspnet-core-react.json @@ -569,6 +569,10 @@ "text": "Master Detail Tables", "path": "Power-Tools-Master-Detail-Tables.md" }, + { + "text": "Custom Code", + "path": "Power-Tools-Custom-Code-React.md" + }, { "text": "How to Create & Edit Power Tools Templates", "path": "How-To-Create-Edit-Power-Tools-Templates.md" From 4e43b5392933b158be8c1fb0f0bde0a8010d182e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=B0smail=20=C3=87A=C4=9EDA=C5=9E?= Date: Tue, 25 Aug 2026 09:01:15 +0300 Subject: [PATCH 2/3] Document custom code support for MAUI Add a dedicated Power Tools Custom Code guide for the MAUI Blazor Hybrid app and link it from the Angular, MVC, and React documentation. The existing custom code pages were also expanded with clearer cross-links, version requirements, master-detail limitations, concrete server-side file naming examples, corrected React context usage, and more explicit ownership-guard behavior when toggling overridable generation. --- docs/en/Power-Tools-Custom-Code-Angular.md | 60 +++++++-- docs/en/Power-Tools-Custom-Code-Maui.md | 146 +++++++++++++++++++++ docs/en/Power-Tools-Custom-Code-Mvc.md | 58 ++++++-- docs/en/Power-Tools-Custom-Code-React.md | 91 ++++++++++--- docs/en/nav-aspnet-core-angular.json | 4 + docs/en/nav-aspnet-core-mvc.json | 4 + docs/en/nav-aspnet-core-react.json | 4 + 7 files changed, 318 insertions(+), 49 deletions(-) create mode 100644 docs/en/Power-Tools-Custom-Code-Maui.md diff --git a/docs/en/Power-Tools-Custom-Code-Angular.md b/docs/en/Power-Tools-Custom-Code-Angular.md index 4323a284..48e0c9d8 100644 --- a/docs/en/Power-Tools-Custom-Code-Angular.md +++ b/docs/en/Power-Tools-Custom-Code-Angular.md @@ -2,7 +2,7 @@ ASP.NET Zero Power Tools generates code that can be fully regenerated whenever you change an entity. The **Custom Code** feature lets you add your own code to the generated pages and classes so that your additions survive regeneration. -This page covers how Custom Code works in **Angular** projects. For other UI frameworks. +This page covers how Custom Code works in **Angular** projects. For other UI frameworks, see [Custom Code - MVC](Power-Tools-Custom-Code-Mvc.md) and [Custom Code - React](Power-Tools-Custom-Code-React.md). For the MAUI mobile app, see [Custom Code - MAUI](Power-Tools-Custom-Code-Maui.md). ## Enabling Custom Code @@ -14,6 +14,20 @@ When this switch is on, Power Tools generates additional extension files that yo > The switch affects both the server side and the client side. +### Requirements + +**Project version.** The Angular component split ships with the ng-zorro template set, which Power Tools uses +for **v15.5+** projects. On v15.3-v15.4 (PrimeNG templates) and older (module-based templates) the switch +still generates the server-side extension files, but no `.component.base.ts` split and no `az:begin` slots in +the HTML. + +### Limitations + +**Master-detail child entities.** The switch has no effect on the server layer of a child entity in a +master-detail pair - none of the server-side extension files are generated for it. On the client, a child +entity gets the split for its detail/view component only; the list page and create/edit components are +generated for the parent, not the child. + ## How It Works Angular uses two complementary mechanisms to preserve your code during regeneration: @@ -27,19 +41,30 @@ Angular uses two complementary mechanisms to preserve your code during regenerat When **Generate Overridable Entity** is enabled, the following server-side extension files are generated. These are shared across all UI frameworks. -| File | Base Class | Purpose | +Power Tools splits each generated class in two: the generated half keeps the original file name and gains a +`Base` suffix on the **class** name, and your half is a new `.Extended.cs` file holding a subclass at the +original class name. Existing references keep resolving to your class, so nothing else in the solution has to +change. + +For a `Product` entity, the generated files are: + +| Your file (never overwritten) | Regenerated file | Purpose | |---|---|---| -| `AppService.Extended.cs` | `AppServiceBase` | Override application service methods | -| `AppServiceInterface.Extended.cs` | - | Extend the service interface | -| `Entity.Extended.cs` | `EntityBase` | Add custom properties or methods to the entity | -| `CreateOrEditDto.Extended.cs` | `CreateOrEditDtoBase` | Extend the input DTO | -| `EntityDto.Extended.cs` | `EntityDtoBase` | Extend the list DTO | -| `GetAllInput.Extended.cs` | `GetAllInputBase` | Add custom filter parameters | -| `GetAllForExcelInput.Extended.cs` | `GetAllForExcelInputBase` | Add custom Excel export filter parameters | -| `GetAllOutput.Extended.cs` | `GetAllOutputBase` | Extend the output DTO | -| `GetForEditOutput.Extended.cs` | `GetForEditOutputBase` | Extend the edit output DTO | -| `LookupDto.Extended.cs` | `LookupDtoBase` | Extend the lookup DTO | -| `HostController.Extended.cs` | `HostControllerBase` | Extend the API controller | +| `ProductsAppService.Extended.cs` | `ProductsAppService.cs` | Override application service methods | +| `IProductsAppService.Extended.cs` | `IProductsAppService.cs` | Extend the service interface | +| `Product.cs` | `ProductBase.cs` | Add custom properties or methods to the entity | +| `CreateOrEditProductDto.Extended.cs` | `CreateOrEditProductDto.cs` | Extend the input DTO | +| `ProductDto.Extended.cs` | `ProductDto.cs` | Extend the list DTO | +| `GetAllProductsInput.Extended.cs` | `GetAllProductsInput.cs` | Add custom filter parameters | +| `GetAllProductsForExcelInput.Extended.cs` | `GetAllProductsForExcelInput.cs` | Add custom Excel export filter parameters | +| `GetProductForViewDto.Extended.cs` | `GetProductForViewDto.cs` | Extend the view/list output DTO | +| `GetProductForEditOutput.Extended.cs` | `GetProductForEditOutput.cs` | Extend the edit output DTO | +| `ProductXLookupTableDto.Extended.cs` | `ProductXLookupTableDto.cs` | Extend the lookup DTO for navigation property `X` | +| `ProductsController.Extended.cs` | `ProductsController.cs` | Extend the `Web.Host` API controller | + +> **The entity is the one exception to the naming pattern.** Because EF Core maps the class by name, the +> *file* is renamed rather than the class: `ProductBase.cs` is regenerated, and **`Product.cs` is yours** and +> is never overwritten. Do not expect a `Product.Extended.cs`, and do not treat `Product.cs` as generated. Each `.Extended.cs` file contains: @@ -208,7 +233,14 @@ Power Tools includes safety mechanisms to prevent code loss: - **Abort on malformed markers:** If region markers are broken (unclosed, nested, duplicated, mismatched), the entire file is left untouched. No partial merge ever occurs. - **Orphan rescue:** If a region name existed in the old file but not in the newly generated output (for example, if a template update removes a slot), the content is saved to a sidecar file (`.orphaned.txt`) and a warning is shown. Content is never silently dropped. -- **Ownership guard:** When you toggle the **Generate Overridable Entity** switch on an already-generated entity, Power Tools detects whether existing files contain developer code and refuses to overwrite them. +- **Ownership guard:** Toggling the **Generate Overridable Entity** switch on an entity that already has + generated files is handled in both directions: + - Turning it **off** points a fully generated template back at the file that holds your code. Power Tools + detects your code and refuses to overwrite it. + - Turning it **on** makes a path that used to be fully generated developer-owned. The file already sitting + there is old generated code, so Power Tools **deletes it** and lets the template write the new split - + saving a copy as `.bak` beside it first. If you had hand-edited that file, your changes are in + the `.bak`, not in the regenerated one. ## Next diff --git a/docs/en/Power-Tools-Custom-Code-Maui.md b/docs/en/Power-Tools-Custom-Code-Maui.md new file mode 100644 index 00000000..ea7a8a4d --- /dev/null +++ b/docs/en/Power-Tools-Custom-Code-Maui.md @@ -0,0 +1,146 @@ +# Power Tools Custom Code - MAUI + +ASP.NET Zero Power Tools generates code that can be fully regenerated whenever you change an entity. The **Custom Code** feature lets you add your own code to the generated pages and classes so that your additions survive regeneration. + +This page covers how Custom Code works in the **MAUI Blazor Hybrid** mobile app. The MAUI app ships alongside every UI framework, so this page applies whether your web project is [Angular](Power-Tools-Custom-Code-Angular.md), [ASP.NET Core MVC](Power-Tools-Custom-Code-Mvc.md), or [React](Power-Tools-Custom-Code-React.md). + +## Enabling Custom Code + +Open Power Tools, select your entity, and turn on both the **Mobile** and **Generate Overridable Entity** switches in the Entity Information section. + +When both switches are on, Power Tools generates additional customization files that you own. These files are created once and never overwritten, even when you regenerate the entity. + +### Requirements + +**Project version.** The MAUI customization files require a **v15.5+** project. MAUI code generation itself is supported from v13.3, so on a v13.3-v15.4 project the **Mobile** switch still produces pages, but the `.custom.cs` files and the `az:begin` slots are not part of them. + +**Both switches.** **Mobile** alone generates the pages without customization files. **Generate Overridable Entity** alone customizes the server side and the web client but leaves the MAUI app untouched. You need both. + +**Detail page.** `ViewProduct.custom.cs` is generated only when the entity's MAUI view page is enabled - the **Create View** option that appears under **Mobile** in the Visual Studio extension. + +## How It Works + +MAUI uses a third approach, different from Angular's base/subclass split and React's hook files: + +| Mechanism | How It Works | Applies To | +|---|---|---| +| **Partial class files** (SkipIfExists) | A second `partial` of the same component class. Generated once, never overwritten. No base class and no wiring. | MAUI Razor component code (`.custom.cs`) | +| **Preserved region slots** (`az:begin` / `az:end`) | Named regions inside regenerated `.razor` markup. Power Tools preserves any markup you place between the markers. | MAUI Razor pages (`.razor`) | + +Because your code is a partial of the *same* class rather than a subclass, there is no separate type to register and no route to update - the component is still `ProductIndex`. The generated `.razor.cs` beside it keeps being rewritten on every run, so new entity properties keep flowing in. + +## Partial Class Files + +For a `Product` entity, Power Tools generates these files under `.Maui\Pages\\`: + +| Your file (never overwritten) | Regenerated file | Purpose | +|---|---|---| +| `ProductIndex.custom.cs` | `ProductIndex.razor.cs` | Add fields, methods, or overrides for the list page | +| `CreateOrEditProduct.custom.cs` | `CreateOrEditProduct.razor.cs` | Add fields, methods, or overrides for the create/edit page | +| `ViewProduct.custom.cs` | `ViewProduct.razor.cs` | Add fields, methods, or overrides for the detail page | + +Each `.custom.cs` file starts out as an empty partial: + +```csharp +namespace MyCompany.MyProject.Maui.Pages.Inventory; + +public partial class ProductIndex +{ +} +``` + +Add fields, methods, or overrides of virtual members from the component base class here. Because it is the same class, you can reach any `protected` member the generated `.razor.cs` declares without any extra plumbing. + +### Example - Running Custom Logic After the Page Loads + +```csharp +namespace MyCompany.MyProject.Maui.Pages.Inventory; + +public partial class ProductIndex +{ + private int _lowStockCount; + + protected override async Task OnInitializedAsync() + { + await base.OnInitializedAsync(); + _lowStockCount = await CountLowStockAsync(); + } + + private Task CountLowStockAsync() + { + // your logic here + return Task.FromResult(0); + } +} +``` + +## Razor - Preserved Region Slots + +MAUI `.razor` pages contain named `az:begin` / `az:end` markers. You can place custom markup between these markers and it will be preserved on regeneration. The rest of the page is fully regenerated. + +### Slot Reference + +| Slot Name | File | Purpose | +|---|---|---| +| `list-fields` | `ProductIndex.razor` | Custom fields in each list row | +| `form-fields` | `CreateOrEditProduct.razor` | Custom form fields | +| `detail-fields` | `ViewProduct.razor` | Custom detail display fields | + +### Example - Adding a Custom List Field + +```html + +
    + Margin + @(product.Margin?.ToString("P0") ?? "-") +
    + +``` + +### Example - Adding a Custom Form Field + +```html + +
    + + +
    + +``` + +After regeneration, your markup stays in place while the rest of the page is updated with any new entity properties. + +## Preserved Region Rules + +The `az:begin` / `az:end` markers follow these rules: + +| Rule | Description | +|---|---| +| **Comment wrapper** | Must use HTML comment syntax in `.razor` files: `` | +| **Region names** | Letters, digits, underscores, hyphens, and dots only | +| **No nesting** | Regions cannot be placed inside other regions | +| **No duplicates** | Each region name must be unique within a file | +| **Empty regions are no-ops** | If you don't add anything between the markers, the region is ignored | + +## Server Side + +The MAUI app consumes the same application services as the web client, so the server-side extension files are the ones described on the [Angular](Power-Tools-Custom-Code-Angular.md#server-side), [MVC](Power-Tools-Custom-Code-Mvc.md#server-side), and [React](Power-Tools-Custom-Code-React.md#server-side) pages. They are generated once for the entity regardless of which clients you target. + +## Safety Features + +Power Tools includes safety mechanisms to prevent code loss: + +- **Abort on malformed markers:** If region markers are broken (unclosed, nested, duplicated, mismatched), the entire file is left untouched. No partial merge ever occurs. +- **Orphan rescue:** If a region name existed in the old file but not in the newly generated output (for example, if a template update removes a slot), the content is saved to a sidecar file (`.orphaned.txt`) and a warning is shown. Content is never silently dropped. +- **Ownership guard:** Toggling the **Generate Overridable Entity** switch on an entity that already has + generated files is handled in both directions: + - Turning it **off** points a fully generated template back at the file that holds your code. Power Tools + detects your code and refuses to overwrite it. + - Turning it **on** makes a path that used to be fully generated developer-owned. The file already sitting + there is old generated code, so Power Tools **deletes it** and lets the template write the new split - + saving a copy as `.bak` beside it first. If you had hand-edited that file, your changes are in + the `.bak`, not in the regenerated one. + +## Next + +[How to Create & Edit Power Tools Templates](How-To-Create-Edit-Power-Tools-Templates.md) diff --git a/docs/en/Power-Tools-Custom-Code-Mvc.md b/docs/en/Power-Tools-Custom-Code-Mvc.md index 5ff9fd23..224b0e81 100644 --- a/docs/en/Power-Tools-Custom-Code-Mvc.md +++ b/docs/en/Power-Tools-Custom-Code-Mvc.md @@ -2,7 +2,7 @@ ASP.NET Zero Power Tools generates code that can be fully regenerated whenever you change an entity. The **Custom Code** feature lets you add your own code to the generated pages and classes so that your additions survive regeneration. -This page covers how Custom Code works in **ASP.NET Core MVC** projects. For other UI frameworks. +This page covers how Custom Code works in **ASP.NET Core MVC** projects. For other UI frameworks, see [Custom Code - Angular](Power-Tools-Custom-Code-Angular.md) and [Custom Code - React](Power-Tools-Custom-Code-React.md). For the MAUI mobile app, see [Custom Code - MAUI](Power-Tools-Custom-Code-Maui.md). ## Enabling Custom Code @@ -14,6 +14,18 @@ When this switch is on, Power Tools generates additional extension files that yo > The switch affects both the server side and the client side. +### Requirements + +**Project version.** The Controller and ViewModel extension files are available on all supported project +versions. The `az:begin` / `az:end` region slots live in the current MVC template set, which Power Tools uses +for **v15.3+** projects; older projects get the extension files but no region slots. + +### Limitations + +**Master-detail child entities.** The switch has no effect on the server layer of a child entity in a +master-detail pair - none of the server-side extension files are generated for it, and neither is +`Controller.Extended.cs`. The ViewModel extension files are still generated. + ## How It Works MVC uses two complementary mechanisms to preserve your code during regeneration: @@ -29,19 +41,30 @@ MVC uses two complementary mechanisms to preserve your code during regeneration: When **Generate Overridable Entity** is enabled, the following server-side extension files are generated. These are shared across all UI frameworks. -| File | Base Class | Purpose | +Power Tools splits each generated class in two: the generated half keeps the original file name and gains a +`Base` suffix on the **class** name, and your half is a new `.Extended.cs` file holding a subclass at the +original class name. Existing references keep resolving to your class, so nothing else in the solution has to +change. + +For a `Product` entity, the generated files are: + +| Your file (never overwritten) | Regenerated file | Purpose | |---|---|---| -| `AppService.Extended.cs` | `AppServiceBase` | Override application service methods | -| `AppServiceInterface.Extended.cs` | - | Extend the service interface | -| `Entity.Extended.cs` | `EntityBase` | Add custom properties or methods to the entity | -| `CreateOrEditDto.Extended.cs` | `CreateOrEditDtoBase` | Extend the input DTO | -| `EntityDto.Extended.cs` | `EntityDtoBase` | Extend the list DTO | -| `GetAllInput.Extended.cs` | `GetAllInputBase` | Add custom filter parameters | -| `GetAllForExcelInput.Extended.cs` | `GetAllForExcelInputBase` | Add custom Excel export filter parameters | -| `GetAllOutput.Extended.cs` | `GetAllOutputBase` | Extend the output DTO | -| `GetForEditOutput.Extended.cs` | `GetForEditOutputBase` | Extend the edit output DTO | -| `LookupDto.Extended.cs` | `LookupDtoBase` | Extend the lookup DTO | -| `HostController.Extended.cs` | `HostControllerBase` | Extend the API controller | +| `ProductsAppService.Extended.cs` | `ProductsAppService.cs` | Override application service methods | +| `IProductsAppService.Extended.cs` | `IProductsAppService.cs` | Extend the service interface | +| `Product.cs` | `ProductBase.cs` | Add custom properties or methods to the entity | +| `CreateOrEditProductDto.Extended.cs` | `CreateOrEditProductDto.cs` | Extend the input DTO | +| `ProductDto.Extended.cs` | `ProductDto.cs` | Extend the list DTO | +| `GetAllProductsInput.Extended.cs` | `GetAllProductsInput.cs` | Add custom filter parameters | +| `GetAllProductsForExcelInput.Extended.cs` | `GetAllProductsForExcelInput.cs` | Add custom Excel export filter parameters | +| `GetProductForViewDto.Extended.cs` | `GetProductForViewDto.cs` | Extend the view/list output DTO | +| `GetProductForEditOutput.Extended.cs` | `GetProductForEditOutput.cs` | Extend the edit output DTO | +| `ProductXLookupTableDto.Extended.cs` | `ProductXLookupTableDto.cs` | Extend the lookup DTO for navigation property `X` | +| `ProductsController.Extended.cs` | `ProductsController.cs` | Extend the `Web.Host` API controller | + +> **The entity is the one exception to the naming pattern.** Because EF Core maps the class by name, the +> *file* is renamed rather than the class: `ProductBase.cs` is regenerated, and **`Product.cs` is yours** and +> is never overwritten. Do not expect a `Product.Extended.cs`, and do not treat `Product.cs` as generated. Each `.Extended.cs` file contains: @@ -209,7 +232,14 @@ Power Tools includes safety mechanisms to prevent code loss: - **Abort on malformed markers:** If region markers are broken (unclosed, nested, duplicated, mismatched), the entire file is left untouched. No partial merge ever occurs. - **Orphan rescue:** If a region name existed in the old file but not in the newly generated output (for example, if a template update removes a slot), the content is saved to a sidecar file (`.orphaned.txt`) and a warning is shown. Content is never silently dropped. -- **Ownership guard:** When you toggle the **Generate Overridable Entity** switch on an already-generated entity, Power Tools detects whether existing files contain developer code and refuses to overwrite them. +- **Ownership guard:** Toggling the **Generate Overridable Entity** switch on an entity that already has + generated files is handled in both directions: + - Turning it **off** points a fully generated template back at the file that holds your code. Power Tools + detects your code and refuses to overwrite it. + - Turning it **on** makes a path that used to be fully generated developer-owned. The file already sitting + there is old generated code, so Power Tools **deletes it** and lets the template write the new split - + saving a copy as `.bak` beside it first. If you had hand-edited that file, your changes are in + the `.bak`, not in the regenerated one. ## Next diff --git a/docs/en/Power-Tools-Custom-Code-React.md b/docs/en/Power-Tools-Custom-Code-React.md index fe99ab4d..5dbafbbe 100644 --- a/docs/en/Power-Tools-Custom-Code-React.md +++ b/docs/en/Power-Tools-Custom-Code-React.md @@ -2,7 +2,7 @@ ASP.NET Zero Power Tools generates code that can be fully regenerated whenever you change an entity. The **Custom Code** feature lets you add your own code to the generated pages and classes so that your additions survive regeneration. -This page covers how Custom Code works in **React** projects. For other UI frameworks. +This page covers how Custom Code works in **React** projects. For other UI frameworks, see [Custom Code - Angular](Power-Tools-Custom-Code-Angular.md) and [Custom Code - MVC](Power-Tools-Custom-Code-Mvc.md). For the MAUI mobile app, see [Custom Code - MAUI](Power-Tools-Custom-Code-Maui.md). ## Enabling Custom Code @@ -14,6 +14,18 @@ When this switch is on, Power Tools generates additional customization files tha > The switch affects both the server side and the client side. +### Requirements + +**Project version.** Every React customization file requires a **v15.5+** project. React code generation +itself is supported from v15.0, so on a v15.0-v15.4 project the switch generates the server-side extension +files and nothing on the client. If you turn the switch on and no `customizations.tsx` appears, check the +project version first. + +### Limitations + +**Master-detail child entities.** The switch has no effect on a child entity in a master-detail pair - +neither the server-side extension files nor any of the React customization files are generated for it. + ## How It Works React uses a different approach than Angular and MVC. Instead of inline region markers or base/subclass patterns for UI files, React generates **separate customization files** with typed hook functions that the generated page imports and calls at fixed extension points. @@ -28,19 +40,30 @@ React uses a different approach than Angular and MVC. Instead of inline region m When **Generate Overridable Entity** is enabled, the following server-side extension files are generated. These are shared across all UI frameworks. -| File | Base Class | Purpose | +Power Tools splits each generated class in two: the generated half keeps the original file name and gains a +`Base` suffix on the **class** name, and your half is a new `.Extended.cs` file holding a subclass at the +original class name. Existing references keep resolving to your class, so nothing else in the solution has to +change. + +For a `Product` entity, the generated files are: + +| Your file (never overwritten) | Regenerated file | Purpose | |---|---|---| -| `AppService.Extended.cs` | `AppServiceBase` | Override application service methods | -| `AppServiceInterface.Extended.cs` | - | Extend the service interface | -| `Entity.Extended.cs` | `EntityBase` | Add custom properties or methods to the entity | -| `CreateOrEditDto.Extended.cs` | `CreateOrEditDtoBase` | Extend the input DTO | -| `EntityDto.Extended.cs` | `EntityDtoBase` | Extend the list DTO | -| `GetAllInput.Extended.cs` | `GetAllInputBase` | Add custom filter parameters | -| `GetAllForExcelInput.Extended.cs` | `GetAllForExcelInputBase` | Add custom Excel export filter parameters | -| `GetAllOutput.Extended.cs` | `GetAllOutputBase` | Extend the output DTO | -| `GetForEditOutput.Extended.cs` | `GetForEditOutputBase` | Extend the edit output DTO | -| `LookupDto.Extended.cs` | `LookupDtoBase` | Extend the lookup DTO | -| `HostController.Extended.cs` | `HostControllerBase` | Extend the API controller | +| `ProductsAppService.Extended.cs` | `ProductsAppService.cs` | Override application service methods | +| `IProductsAppService.Extended.cs` | `IProductsAppService.cs` | Extend the service interface | +| `Product.cs` | `ProductBase.cs` | Add custom properties or methods to the entity | +| `CreateOrEditProductDto.Extended.cs` | `CreateOrEditProductDto.cs` | Extend the input DTO | +| `ProductDto.Extended.cs` | `ProductDto.cs` | Extend the list DTO | +| `GetAllProductsInput.Extended.cs` | `GetAllProductsInput.cs` | Add custom filter parameters | +| `GetAllProductsForExcelInput.Extended.cs` | `GetAllProductsForExcelInput.cs` | Add custom Excel export filter parameters | +| `GetProductForViewDto.Extended.cs` | `GetProductForViewDto.cs` | Extend the view/list output DTO | +| `GetProductForEditOutput.Extended.cs` | `GetProductForEditOutput.cs` | Extend the edit output DTO | +| `ProductXLookupTableDto.Extended.cs` | `ProductXLookupTableDto.cs` | Extend the lookup DTO for navigation property `X` | +| `ProductsController.Extended.cs` | `ProductsController.cs` | Extend the `Web.Host` API controller | + +> **The entity is the one exception to the naming pattern.** Because EF Core maps the class by name, the +> *file* is renamed rather than the class: `ProductBase.cs` is regenerated, and **`Product.cs` is yours** and +> is never overwritten. Do not expect a `Product.Extended.cs`, and do not treat `Product.cs` as generated. Each `.Extended.cs` file contains: @@ -235,7 +258,7 @@ export const extraDetailItems = (ctx: ViewProductContext): ReactNode => null; export const extraDetailItems = (ctx: ViewProductContext): ReactNode => ( <> - {ctx.entity?.margin ? `${ctx.entity.margin}%` : "-"} + {ctx.record.product?.margin ? `${ctx.record.product.margin}%` : "-"} ); @@ -247,26 +270,52 @@ Each hook receives a typed context object. The context provides access to useful ### Page Context +`ProductsPageContext`, passed to every hook in `customizations.tsx`: + | Property | Type | Description | |---|---|---| -| `refresh` | `() => void` | Reloads the table data | -| `isGranted` | `(permission: string) => boolean` | Checks a permission | -| `navigate` | React Router `navigate` | Navigates to a route | +| `refresh` | `() => void` | Reloads the table data. Call it after anything that changes data | +| `isGranted` | `(permission: string) => boolean` | Checks a permission, same check the generated page uses | +| `navigate` | React Router `NavigateFunction` | Navigates to a route | +| `service` | `ProductsServiceProxy` | The entity's service proxy, ready to call | ### Form Context +`CreateOrEditProductFormContext`, passed to every hook in `CreateOrEdit*Modal.custom.tsx`: + | Property | Type | Description | |---|---|---| | `form` | Ant Design `FormInstance` | The form instance for reading/setting field values | -| `isEditMode` | `boolean` | Whether the form is editing an existing record | -| `entityId` | Primary key type or `undefined` | The entity's primary key (in edit mode) | -| `service` | Service proxy instance | The service proxy for making API calls | +| `isEditMode` | `boolean` | `false` while creating, `true` while editing an existing record | +| `productId` | Primary key type or `undefined` | The record's primary key, `undefined` while creating | +| `service` | `ProductsServiceProxy` | The entity's service proxy, ready to call | + +> The primary key property is named after the entity - `productId` for a `Product`, `orderId` for an +> `Order` - not `entityId`. + +### Detail Context + +`ViewProductContext`, passed to `extraDetailItems`: + +| Property | Type | Description | +|---|---|---| +| `record` | `GetProductForViewDto` | The record being displayed. Not optional - the hook is called at a point where the record is already loaded | + +> `GetProductForViewDto` wraps the entity, so the entity's own properties are one level down: +> `ctx.record.product.name`, not `ctx.record.name`. ## Safety Features - **SkipIfExists:** Customization files (`customizations.tsx`, `*.custom.tsx`) are generated once and never overwritten, even on regeneration. - **Type safety:** `customizations.types.ts` is regenerated to keep types in sync. If the entity changes shape, stale code in your customization files produces a compile error rather than breaking silently. -- **Ownership guard:** When you toggle the **Generate Overridable Entity** switch on an already-generated entity, Power Tools detects whether existing files contain developer code and refuses to overwrite them. +- **Ownership guard:** Toggling the **Generate Overridable Entity** switch on an entity that already has + generated files is handled in both directions: + - Turning it **off** points a fully generated template back at the file that holds your code. Power Tools + detects your code and refuses to overwrite it. + - Turning it **on** makes a path that used to be fully generated developer-owned. The file already sitting + there is old generated code, so Power Tools **deletes it** and lets the template write the new split - + saving a copy as `.bak` beside it first. If you had hand-edited that file, your changes are in + the `.bak`, not in the regenerated one. ## Next diff --git a/docs/en/nav-aspnet-core-angular.json b/docs/en/nav-aspnet-core-angular.json index ad393930..1291dbf5 100644 --- a/docs/en/nav-aspnet-core-angular.json +++ b/docs/en/nav-aspnet-core-angular.json @@ -585,6 +585,10 @@ "text": "Custom Code", "path": "Power-Tools-Custom-Code-Angular.md" }, + { + "text": "Custom Code - MAUI", + "path": "Power-Tools-Custom-Code-Maui.md" + }, { "text": "How to Create & Edit Power Tools Templates", "path": "How-To-Create-Edit-Power-Tools-Templates.md" diff --git a/docs/en/nav-aspnet-core-mvc.json b/docs/en/nav-aspnet-core-mvc.json index c363daab..a70d8723 100644 --- a/docs/en/nav-aspnet-core-mvc.json +++ b/docs/en/nav-aspnet-core-mvc.json @@ -621,6 +621,10 @@ "text": "Custom Code", "path": "Power-Tools-Custom-Code-Mvc.md" }, + { + "text": "Custom Code - MAUI", + "path": "Power-Tools-Custom-Code-Maui.md" + }, { "text": "How to Create & Edit Power Tools Templates", "path": "How-To-Create-Edit-Power-Tools-Templates.md" diff --git a/docs/en/nav-aspnet-core-react.json b/docs/en/nav-aspnet-core-react.json index 3ff95fd4..e806cc84 100644 --- a/docs/en/nav-aspnet-core-react.json +++ b/docs/en/nav-aspnet-core-react.json @@ -573,6 +573,10 @@ "text": "Custom Code", "path": "Power-Tools-Custom-Code-React.md" }, + { + "text": "Custom Code - MAUI", + "path": "Power-Tools-Custom-Code-Maui.md" + }, { "text": "How to Create & Edit Power Tools Templates", "path": "How-To-Create-Edit-Power-Tools-Templates.md" From e1647cbafde24bf0cfa0a0f261d1956c77478d5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuzhan=20A=C4=9F=C4=B1r?= <90545225+oguzhanagir@users.noreply.github.com> Date: Tue, 25 Aug 2026 09:21:10 +0300 Subject: [PATCH 3/3] Enhance MAUI Custom Code documentation with detailed requirements --- docs/en/Power-Tools-Custom-Code-Maui.md | 45 ++++++++++++++++--------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/docs/en/Power-Tools-Custom-Code-Maui.md b/docs/en/Power-Tools-Custom-Code-Maui.md index ea7a8a4d..755a7cda 100644 --- a/docs/en/Power-Tools-Custom-Code-Maui.md +++ b/docs/en/Power-Tools-Custom-Code-Maui.md @@ -6,17 +6,28 @@ This page covers how Custom Code works in the **MAUI Blazor Hybrid** mobile app. ## Enabling Custom Code -Open Power Tools, select your entity, and turn on both the **Mobile** and **Generate Overridable Entity** switches in the Entity Information section. +MAUI Custom Code has two layers, each with its own requirements: -When both switches are on, Power Tools generates additional customization files that you own. These files are created once and never overwritten, even when you regenerate the entity. +| Layer | What it gives you | What to enable | +|---|---|---| +| **Preserved region slots** (`az:begin` / `az:end`) | Named markers inside `.razor` pages where you can place custom markup that survives regeneration. | **Mobile** switch only | +| **Partial class files** (`.custom.cs`) | A second `partial` of the same component class where you can add fields, methods, or overrides. | **Mobile** + **Generate Overridable Entity** switches, on a **v15.5+** project | ### Requirements -**Project version.** The MAUI customization files require a **v15.5+** project. MAUI code generation itself is supported from v13.3, so on a v13.3-v15.4 project the **Mobile** switch still produces pages, but the `.custom.cs` files and the `az:begin` slots are not part of them. +**Region slots** are available on any project that supports MAUI code generation (**v13.3+**). Turn on the **Mobile** switch and the generated `.razor` pages will include `az:begin` / `az:end` markers. + +**Partial class files** require all three conditions: + +1. The **Mobile** switch is on. +2. The **Generate Overridable Entity** switch is on. +3. The project version is **v15.5** or later. + +On a v13.3–v15.4 project the **Mobile** switch still produces pages with region slots, but the `.custom.cs` companion files are not generated. -**Both switches.** **Mobile** alone generates the pages without customization files. **Generate Overridable Entity** alone customizes the server side and the web client but leaves the MAUI app untouched. You need both. +**Generate Overridable Entity** alone (without **Mobile**) customizes the server side and the web client but leaves the MAUI app untouched. -**Detail page.** `ViewProduct.custom.cs` is generated only when the entity's MAUI view page is enabled - the **Create View** option that appears under **Mobile** in the Visual Studio extension. +**Detail page.** `ViewProduct.custom.cs` is generated only when the entity's MAUI view page is enabled — the **Create View** option that appears under **Mobile** in the Visual Studio extension. ## How It Works @@ -24,14 +35,14 @@ MAUI uses a third approach, different from Angular's base/subclass split and Rea | Mechanism | How It Works | Applies To | |---|---|---| -| **Partial class files** (SkipIfExists) | A second `partial` of the same component class. Generated once, never overwritten. No base class and no wiring. | MAUI Razor component code (`.custom.cs`) | -| **Preserved region slots** (`az:begin` / `az:end`) | Named regions inside regenerated `.razor` markup. Power Tools preserves any markup you place between the markers. | MAUI Razor pages (`.razor`) | +| **Partial class files** (SkipIfExists) | A second `partial` of the same component class. Generated once, never overwritten. No separate base class to register and no wiring. Requires **Generate Overridable Entity** + **v15.5+**. | MAUI Razor component code (`.custom.cs`) | +| **Preserved region slots** (`az:begin` / `az:end`) | Named regions inside regenerated `.razor` markup. Power Tools preserves any markup you place between the markers. Available with **Mobile** switch only (v13.3+). | MAUI Razor pages (`.razor`) | Because your code is a partial of the *same* class rather than a subclass, there is no separate type to register and no route to update - the component is still `ProductIndex`. The generated `.razor.cs` beside it keeps being rewritten on every run, so new entity properties keep flowing in. ## Partial Class Files -For a `Product` entity, Power Tools generates these files under `.Maui\Pages\\`: +For a `Product` entity with namespace `Inventory`, Power Tools generates these files under `.Maui\Pages\Inventory\`: | Your file (never overwritten) | Regenerated file | Purpose | |---|---|---| @@ -49,7 +60,7 @@ public partial class ProductIndex } ``` -Add fields, methods, or overrides of virtual members from the component base class here. Because it is the same class, you can reach any `protected` member the generated `.razor.cs` declares without any extra plumbing. +Add fields, methods, or lifecycle overrides (such as `OnInitializedAsync` from Blazor's `ComponentBase`) here. Because it is the same class, you can reach any `protected` member the generated `.razor.cs` declares without any extra plumbing. ### Example - Running Custom Logic After the Page Loads @@ -90,9 +101,11 @@ MAUI `.razor` pages contain named `az:begin` / `az:end` markers. You can place c ```html -
    - Margin - @(product.Margin?.ToString("P0") ?? "-") +
    +
    Margin
    +
    + @(model.Product.Margin?.ToString("P0") ?? "-") +
    ``` @@ -101,9 +114,9 @@ MAUI `.razor` pages contain named `az:begin` / `az:end` markers. You can place c ```html -
    - - +
    + +
    ``` @@ -133,7 +146,7 @@ Power Tools includes safety mechanisms to prevent code loss: - **Abort on malformed markers:** If region markers are broken (unclosed, nested, duplicated, mismatched), the entire file is left untouched. No partial merge ever occurs. - **Orphan rescue:** If a region name existed in the old file but not in the newly generated output (for example, if a template update removes a slot), the content is saved to a sidecar file (`.orphaned.txt`) and a warning is shown. Content is never silently dropped. - **Ownership guard:** Toggling the **Generate Overridable Entity** switch on an entity that already has - generated files is handled in both directions: + generated `.custom.cs` files is handled in both directions: - Turning it **off** points a fully generated template back at the file that holds your code. Power Tools detects your code and refuses to overwrite it. - Turning it **on** makes a path that used to be fully generated developer-owned. The file already sitting