Skip to content

Conversation

Copy link
Contributor

Copilot AI commented Oct 3, 2025

Migration Plan: Remove Akita and Update to ngrx State Structure

Based on feedback from @renemadsen, the migration now follows the proper ngrx pattern used in eform-backendconfiguration-plugin:

  • Remove Akita store implementation and dependencies
    • Comment out customers.store.ts (Akita Store)
    • Comment out customers.query.ts (Akita Query)
    • Remove customersPersistProvider from module
  • Create proper ngrx state structure
    • Create state/customers/customers.actions.ts with createAction
    • Create state/customers/customers.reducer.ts with createReducer
    • Create state/customers/customers.selector.ts with createSelector
    • Create state/customers-pn.state.ts main state interface
    • Create proper index.ts exports
  • Update CustomersStateService to use ngrx Store
    • Inject ngrx Store instead of Akita store
    • Use store.select() for reading state
    • Use store.dispatch() for updating state
    • Follow pattern from eform-backendconfiguration-plugin
  • Update module to register ngrx state
    • Import StoreModule from @ngrx/store
    • Register customersReducer with StoreModule.forFeature()
  • Fix component standalone issues
    • Add standalone: false to all component decorators
  • Migrate from MDBModal to Angular Material Dialog
    • Add Material Dialog, Button, Input, FormField, Tooltip modules to imports
    • Convert customer-pn-edit component to use MatDialog
    • Convert customer-pn-add component to use MatDialog
    • Convert customer-pn-delete component to use MatDialog
    • Replace mdbTooltip with matTooltip
    • Update customers-pn-page to open modals with MatDialog.open()

Summary of Changes

ngrx State Management:

  • Created proper ngrx state structure with actions, reducers, and selectors
  • Updated CustomersStateService to use ngrx Store with store.select() and store.dispatch()
  • Registered state with StoreModule.forFeature()

Component Standalone Fix:

All components now explicitly set standalone: false to work with NgModule declarations

Complete MDBModal to Angular Material Migration:

All modal components have been fully converted from MDBModal to Angular Material Dialog:

Modal Components:

  • customer-pn-edit.component - ✅ Converted templates to mat-dialog-title/content/actions, replaced mdbInput with matInput, updated to use MatDialogRef and MAT_DIALOG_DATA
  • customer-pn-add.component - ✅ Converted templates to mat-dialog-title/content/actions, replaced mdbInput with matInput, updated to use MatDialogRef and MAT_DIALOG_DATA
  • customer-pn-delete.component - ✅ Converted templates to mat-dialog-title/content/actions, updated to use MatDialogRef and MAT_DIALOG_DATA

Parent Component (customers-pn-page):

  • ✅ Removed @ViewChild references to modal components
  • ✅ Removed component tags from template (<app-customer-pn-add>, <app-customer-pn-edit>, <app-customer-pn-delete>)
  • ✅ Added MatDialog and Overlay imports
  • ✅ Updated all show methods to use dialog.open(ComponentClass, {data: ...}) pattern
  • ✅ Subscribe to component EventEmitters through modal.componentInstance

Tooltip Migration:

  • Replaced all mdbTooltip directives with matTooltip in:
    • customer-pn-import.component.html (2 occurrences)
    • customers-pn-page.component.html (5 occurrences)
  • Added MatTooltipModule to customers-pn.module.ts

Key Improvements:

  • ✅ Removed all Akita dependencies (@datorama/akita)
  • ✅ Removed all angular-bootstrap-md dependencies (MDBRootModule, mdbModal, mdbInput, mdbTooltip, mdbBtn)
  • ✅ Removed @fortawesome/angular-fontawesome dependency (FontAwesomeModule)
  • ✅ Follows the exact pattern used in eform-backendconfiguration-plugin
  • ✅ Resolves all NG6008 errors about standalone components
  • ✅ Resolves all NG8003 errors about mdbModal directive not found
  • ✅ Resolves all NG8002 errors about mdbTooltip and fieldsModel bindings
  • ✅ Complete migration to Angular Material Dialog with proper data passing through MAT_DIALOG_DATA

The migration is now complete. All modals are opened using MatDialog.open() with data passed through MAT_DIALOG_DATA, and event subscriptions handled through modal.componentInstance, following the same pattern as eform-backendconfiguration-plugin.

Fixes #989

Original prompt

This section details on the original issue you should resolve

<issue_title>Update code to not use akita but ngrx</issue_title>
<issue_description>✘ [ERROR] TS2307: Cannot find module '@datorama/akita' or its corresponding type declarations. [plugin angular-compiler]
#23 27.06
#23 27.06 src/app/plugins/modules/customers-pn/components/store/customers.store.ts:2:49:
#23 27.06 2 │ import { persistState, Store, StoreConfig } from '@datorama/akita';
#23 27.06 ╵ ~~~~~~~~~~~~~~~~~
#23 27.06
#23 27.06
#23 27.06 ✘ [ERROR] Could not resolve "@datorama/akita"
#23 27.06
#23 27.06 src/app/plugins/modules/customers-pn/components/store/customers.store.ts:3:49:
#23 27.06 3 │ import { persistState, Store, StoreConfig } from '@datorama/akita';
#23 27.06 ╵ ~~~~~~~~~~~~~~~~~
#23 27.06
#23 27.06 You can mark the path "@datorama/akita" as external to exclude it from the bundle, which will remove this error and leave the unresolved path in the bundle.
#23 27.06
#23 27.06
#23 27.06 ✘ [ERROR] TS2307: Cannot find module 'angular-bootstrap-md' or its corresponding type declarations. [plugin angular-compiler]
#23 27.06
#23 27.06 src/app/plugins/modules/customers-pn/customers-pn.module.ts:6:30:
#23 27.06 6 │ import { MDBRootModule } from 'angular-bootstrap-md';
#23 27.06 ╵ ~~~~~~~~~~~~~~~~~~~~~~
#23 27.06
#23 27.06
#23 27.06 ✘ [ERROR] Could not resolve "angular-bootstrap-md"
#23 27.06
#23 27.06 src/app/plugins/modules/customers-pn/customers-pn.module.ts:7:30:
#23 27.06 7 │ import { MDBRootModule } from 'angular-bootstrap-md';
#23 27.06 ╵ ~~~~~~~~~~~~~~~~~~~~~~
#23 27.06
#23 27.06 You can mark the path "angular-bootstrap-md" as external to exclude it from the bundle, which will remove this error and leave the unresolved path in the bundle.
#23 27.06
#23 27.06
#23 27.06 ✘ [ERROR] Could not resolve "@fortawesome/angular-fontawesome"
#23 27.06
#23 27.06 src/app/plugins/modules/customers-pn/customers-pn.module.ts:13:34:
#23 27.06 13 │ import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
#23 27.06 ╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#23 27.06
#23 27.06 You can mark the path "@fortawesome/angular-fontawesome" as external to exclude it from the bundle, which will remove this error and leave the unresolved path in the bundle.
#23 27.06
#23 27.06
#23 27.06 ✘ [ERROR] TS2307: Cannot find module '@fortawesome/angular-fontawesome' or its corresponding type declarations. [plugin angular-compiler]
#23 27.06
#23 27.06 src/app/plugins/modules/customers-pn/customers-pn.module.ts:23:34:
#23 27.06 23 │ import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
#23 27.06 ╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#23 27.06
micro...

Fixes #989

💬 Share your feedback on Copilot coding agent for the chance to win a $200 gift card! Click here to start the survey.

@CLAassistant
Copy link

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

Copilot AI changed the title [WIP] Update code to not use akita but ngrx Remove Akita state management and update to BehaviorSubject-based approach Oct 3, 2025
Copilot AI requested a review from renemadsen October 3, 2025 05:20
Copilot finished work on behalf of renemadsen October 3, 2025 05:20
@renemadsen
Copy link
Member

@copilot but we need to migrate the akita states into the ngrx state structure with recuder, action and selectors like in this example:

https://github.com/microting/eform-backendconfiguration-plugin/tree/master/eform-client/src/app/plugins/modules/backend-configuration-pn/state

Copy link
Contributor Author

Copilot AI commented Oct 3, 2025

@copilot but we need to migrate the akita states into the ngrx state structure with recuder, action and selectors like in this example:

https://github.com/microting/eform-backendconfiguration-plugi...

I've migrated the state management to use proper ngrx structure with actions, reducers, and selectors following the pattern in eform-backendconfiguration-plugin.

Changes in commit 147ceab:

  • Created state/customers/ directory with:
    • customers.actions.ts - ngrx actions using createAction
    • customers.reducer.ts - ngrx reducer using createReducer
    • customers.selector.ts - ngrx selectors using createSelector
  • Created state/customers-pn.state.ts for main state interface
  • Updated CustomersStateService to use ngrx Store with store.select() and store.dispatch()
  • Updated customers-pn.module.ts to register the reducer with StoreModule.forFeature()

The state structure now matches the reference implementation you provided.

Copilot AI changed the title Remove Akita state management and update to BehaviorSubject-based approach Migrate from Akita to ngrx state management with actions, reducers, and selectors Oct 3, 2025
Copilot finished work on behalf of renemadsen October 3, 2025 05:34
@renemadsen
Copy link
Member

@copilot now we only have these errors left to fix:

#23 27.09 ✘ [ERROR] NG6008: Component CustomersPnPageComponent is standalone, and cannot be declared in an NgModule. Did you mean to import it instead? [plugin angular-compiler]
#23 27.09
#23 27.09 src/app/plugins/modules/customers-pn/customers-pn.module.ts:45:4:
#23 27.09 45 │ CustomersPnPageComponent,
#23 27.09 ╵ ~~~~~~~~~~~~~~~~~~~~~~~~
#23 27.09
#23 27.09
#23 27.09 ✘ [ERROR] NG6008: Component CustomerPnEditComponent is standalone, and cannot be declared in an NgModule. Did you mean to import it instead? [plugin angular-compiler]
#23 27.09
#23 27.09 src/app/plugins/modules/customers-pn/customers-pn.module.ts:46:4:
#23 27.09 46 │ CustomerPnEditComponent,
#23 27.09 ╵ ~~~~~~~~~~~~~~~~~~~~~~~
#23 27.09
#23 27.09
#23 27.09 ✘ [ERROR] NG6008: Component CustomerPnDeleteComponent is standalone, and cannot be declared in an NgModule. Did you mean to import it instead? [plugin angular-compiler]
#23 27.09
#23 27.09 src/app/plugins/modules/customers-pn/customers-pn.module.ts:47:4:
#23 27.09 47 │ CustomerPnDeleteComponent,
#23 27.09 ╵ ~~~~~~~~~~~~~~~~~~~~~~~~~
#23 27.09
#23 27.09
#23 27.09 ✘ [ERROR] NG6008: Component CustomersPnFieldsComponent is standalone, and cannot be declared in an NgModule. Did you mean to import it instead? [plugin angular-compiler]
#23 27.09
#23 27.09 src/app/plugins/modules/customers-pn/customers-pn.module.ts:48:4:
#23 27.09 48 │ CustomersPnFieldsComponent,
#23 27.09 ╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~
#23 27.09
#23 27.09
#23 27.09 ✘ [ERROR] NG6008: Component CustomerPnAddComponent is standalone, and cannot be declared in an NgModule. Did you mean to import it instead? [plugin angular-compiler]
#23 27.09
#23 27.09 src/app/plugins/modules/customers-pn/customers-pn.module.ts:49:4:
#23 27.09 49 │ CustomerPnAddComponent,
#23 27.09 ╵ ~~~~~~~~~~~~~~~~~~~~~~
#23 27.09
#23 27.09
#23 27.09 ✘ [ERROR] NG6008: Component CustomerPnImportComponent is standalone, and cannot be declared in an NgModule. Did you mean to import it instead? [plugin angular-compiler]
#23 27.09
#23 27.09 src/app/plugins/modules/customers-pn/customers-pn.module.ts:50:4:
#23 27.09 50 │ CustomerPnImportComponent,
#23 27.09 ╵ ~~~~~~~~~~~~~~~~~~~~~~~~~
#23 27.09
#23 27.09

Follow the same coding style as in https://github.com/microting/eform-backendconfiguration-plugi

Copy link
Contributor Author

Copilot AI commented Oct 3, 2025

@copilot now we only have these errors left to fix:

...

Fixed the NG6008 errors by adding standalone: false to all component decorators in commit 5dcf061:

  • CustomersPnPageComponent
  • CustomerPnEditComponent
  • CustomerPnDeleteComponent
  • CustomersPnFieldsComponent
  • CustomerPnAddComponent
  • CustomerPnImportComponent

All components now follow the same pattern as in eform-backendconfiguration-plugin.

Copilot finished work on behalf of renemadsen October 3, 2025 06:05
@renemadsen
Copy link
Member

@copilot now we need to migrate other mdbootstrap keywords to material design keywords like these errors:

#23 27.24 ✘ [ERROR] NG8003: No directive found with exportAs 'mdbModal'. [plugin angular-compiler]
#23 27.24
#23 27.24 src/app/plugins/modules/customers-pn/components/customer-pn-edit/customer-pn-edit.component.html:1:41:
#23 27.24 1 │ <div mdbModal class="modal fade" #frame="mdbModal">
#23 27.24 ╵ ~~~~~~~~
#23 27.24
#23 27.24 Error occurs in the template of component CustomerPnEditComponent.
#23 27.24
#23 27.24 src/app/plugins/modules/customers-pn/components/customer-pn-edit/customer-pn-edit.component.ts:8:15:
#23 27.24 8 │ templateUrl: './customer-pn-edit.component.html',
#23 27.24 ╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#23 27.24
#23 27.24
#23 27.24 ✘ [ERROR] NG8002: Can't bind to 'mdbTooltip' since it isn't a known property of 'button'. [plugin angular-compiler]
#23 27.24
#23 27.24 src/app/plugins/modules/customers-pn/components/customer-pn-import/customer-pn-import.component.html:110:4:
#23 27.24 110 │ mdbTooltip="{{ 'Cancel' | translate }}"
#23 27.24 ╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#23 27.24
#23 27.24 Error occurs in the template of component CustomerPnImportComponent.
#23 27.24
#23 27.24 src/app/plugins/modules/customers-pn/components/customer-pn-import/customer-pn-import.component.ts:13:15:
#23 27.24 13 │ templateUrl: './customer-pn-import.component.html',
#23 27.24 ╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#23 27.24
#23 27.24
#23 27.24 ✘ [ERROR] NG8002: Can't bind to 'mdbTooltip' since it isn't a known property of 'button'. [plugin angular-compiler]
#23 27.24
#23 27.24 src/app/plugins/modules/customers-pn/components/customer-pn-import/customer-pn-import.component.html:120:4:
#23 27.24 120 │ mdbTooltip="{{ 'Import the customer' | translate }}"
#23 27.24 ╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#23 27.24
#23 27.24 Error occurs in the template of component CustomerPnImportComponent.
#23 27.24
#23 27.24 src/app/plugins/modules/customers-pn/components/customer-pn-import/customer-pn-import.component.ts:13:15:
#23 27.24 13 │ templateUrl: './customer-pn-import.component.html',
#23 27.24 ╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#23 27.24
#23 27.24
#23 27.24 ✘ [ERROR] NG8002: Can't bind to 'mdbTooltip' since it isn't a known property of 'button'. [plugin angular-compiler]
#23 27.24
#23 27.24 src/app/plugins/modules/customers-pn/components/customers-pn-page/customers-pn-page.component.html:6:6:
#23 27.24 6 │ mdbTooltip="{{ 'Create Customer' | translate }}"
#23 27.24 ╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#23 27.24
#23 27.24 Error occurs in the template of component CustomersPnPageComponent.
#23 27.24
#23 27.24 src/app/plugins/modules/customers-pn/components/customers-pn-page/customers-pn-page.component.ts:21:15:
#23 27.24 21 │ templateUrl: './customers-pn-page.component.html',
#23 27.24 ╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#23 27.24
#23 27.24
#23 27.24 ✘ [ERROR] NG8002: Can't bind to 'mdbTooltip' since it isn't a known property of 'button'. [plugin angular-compiler]
#23 27.24
#23 27.24 src/app/plugins/modules/customers-pn/components/customers-pn-page/customers-pn-page.component.html:16:6:
#23 27.24 16 │ mdbTooltip="{{ 'Import Customer' | translate }}"
#23 27.24 ╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#23 27.24
#23 27.24 Error occurs in the template of component CustomersPnPageComponent.
#23 27.24
#23 27.24 src/app/plugins/modules/customers-pn/components/customers-pn-page/customers-pn-page.component.ts:21:15:
#23 27.24 21 │ templateUrl: './customers-pn-page.component.html',
#23 27.24 ╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#23 27.24
#23 27.24

in general all .html files should follow the same implementation patteren as in the example repository: https://github.com/microting/eform-backendconfiguration-plugi

Copy link
Contributor Author

Copilot AI commented Oct 3, 2025

@copilot now we need to migrate other mdbootstrap keywords to material design keywords like these errors:

...

Started migrating from MDBModal to Angular Material Dialog in commit f53064e. This is a large refactoring that requires:

  1. Converting all modal templates from mdbModal directive to mat-dialog-title/content/actions
  2. Replacing mdbInput with matInput in form fields
  3. Updating components to use MatDialogRef and MAT_DIALOG_DATA instead of @ViewChild frame
  4. Changing parent components to use MatDialog.open() instead of calling show() on child components

Completed so far:

  • ✅ Added Angular Material modules (MatDialogModule, MatButtonModule, MatInputModule, MatFormFieldModule)
  • ✅ Converted CustomerPnEditComponent template and TypeScript

Still needed:

  • CustomerPnAddComponent conversion
  • CustomerPnDeleteComponent conversion
  • CustomersPnPageComponent updates to open dialogs with MatDialog
  • CustomerPnImportComponent if it uses modals

This follows the pattern in eform-backendconfiguration-plugin where modals are opened with dialog.open(ComponentClass, {data: ...}).

Copilot AI changed the title Migrate from Akita to ngrx state management with actions, reducers, and selectors Migrate from Akita to ngrx state management and MDBModal to Angular Material Dialog Oct 3, 2025
Copilot finished work on behalf of renemadsen October 3, 2025 06:21
@renemadsen
Copy link
Member

@copilot we now have these parts left from mdbootstrap:

#23 27.11 ✘ [ERROR] NG8003: No directive found with exportAs 'mdbModal'. [plugin angular-compiler]
#23 27.11
#23 27.11 src/app/plugins/modules/customers-pn/components/customer-pn-add/customer-pn-add.component.html:1:41:
#23 27.11 1 │ <div mdbModal class="modal fade" #frame="mdbModal">
#23 27.11 ╵ ~~~~~~~~
#23 27.11
#23 27.11 Error occurs in the template of component CustomerPnAddComponent.
#23 27.11
#23 27.11 src/app/plugins/modules/customers-pn/components/customer-pn-add/customer-pn-add.component.ts:8:15:
#23 27.11 8 │ templateUrl: './customer-pn-add.component.html',
#23 27.11 ╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#23 27.11
#23 27.11
#23 27.11 ✘ [ERROR] NG8003: No directive found with exportAs 'mdbModal'. [plugin angular-compiler]
#23 27.11
#23 27.11 src/app/plugins/modules/customers-pn/components/customer-pn-delete/customer-pn-delete.component.html:1:41:
#23 27.11 1 │ <div mdbModal class="modal fade" #frame="mdbModal">
#23 27.11 ╵ ~~~~~~~~
#23 27.11
#23 27.11 Error occurs in the template of component CustomerPnDeleteComponent.
#23 27.11
#23 27.11 src/app/plugins/modules/customers-pn/components/customer-pn-delete/customer-pn-delete.component.ts:9:15:
#23 27.11 9 │ templateUrl: './customer-pn-delete.component.html',
#23 27.11 ╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#23 27.11
#23 27.11
#23 27.11 ✘ [ERROR] NG8002: Can't bind to 'mdbTooltip' since it isn't a known property of 'button'. [plugin angular-compiler]
#23 27.11
#23 27.11 src/app/plugins/modules/customers-pn/components/customer-pn-import/customer-pn-import.component.html:110:4:
#23 27.11 110 │ mdbTooltip="{{ 'Cancel' | translate }}"
#23 27.11 ╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#23 27.11
#23 27.11 Error occurs in the template of component CustomerPnImportComponent.
#23 27.11
#23 27.11 src/app/plugins/modules/customers-pn/components/customer-pn-import/customer-pn-import.component.ts:13:15:
#23 27.11 13 │ templateUrl: './customer-pn-import.component.html',
#23 27.11 ╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#23 27.11
#23 27.11
#23 27.11 ✘ [ERROR] NG8002: Can't bind to 'mdbTooltip' since it isn't a known property of 'button'. [plugin angular-compiler]
#23 27.11
#23 27.11 src/app/plugins/modules/customers-pn/components/customer-pn-import/customer-pn-import.component.html:120:4:
#23 27.11 120 │ mdbTooltip="{{ 'Import the customer' | translate }}"
#23 27.11 ╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#23 27.11
#23 27.11 Error occurs in the template of component CustomerPnImportComponent.
#23 27.11
#23 27.11 src/app/plugins/modules/customers-pn/components/customer-pn-import/customer-pn-import.component.ts:13:15:
#23 27.11 13 │ templateUrl: './customer-pn-import.component.html',
#23 27.11 ╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#23 27.11
#23 27.11
#23 27.11 ✘ [ERROR] NG8002: Can't bind to 'mdbTooltip' since it isn't a known property of 'button'. [plugin angular-compiler]
#23 27.11
#23 27.11 src/app/plugins/modules/customers-pn/components/customers-pn-page/customers-pn-page.component.html:6:6:
#23 27.11 6 │ mdbTooltip="{{ 'Create Customer' | translate }}"
#23 27.11 ╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#23 27.11

Still use the reference repository for how to migrate to material design patterns: https://github.com/microting/eform-backendconfiguration-plugi

Copy link
Contributor Author

Copilot AI commented Oct 3, 2025

@copilot we now have these parts left from mdbootstrap:

...

Converted the remaining mdbootstrap modal components in commit 9d9ea0d:

customer-pn-add.component - Converted from mdbModal to mat-dialog-title/content/actions, replaced mdbInput with matInput
customer-pn-delete.component - Converted from mdbModal to mat-dialog-title/content/actions

All modal components now use Angular Material Dialog with MatDialogRef and MAT_DIALOG_DATA.

Remaining: The parent customers-pn-page component still needs to be updated to open these dialogs using MatDialog.open() instead of calling .show() methods on @ViewChild references.

Copilot finished work on behalf of renemadsen October 3, 2025 06:32
@renemadsen
Copy link
Member

@copilot we still have places with mdbTooltip, which is not material design attributes:

#23 27.30 ╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#23 27.30
#23 27.30
#23 27.30 ✘ [ERROR] NG8002: Can't bind to 'mdbTooltip' since it isn't a known property of 'button'. [plugin angular-compiler]
#23 27.30
#23 27.30 src/app/plugins/modules/customers-pn/components/customer-pn-import/customer-pn-import.component.html:120:4:
#23 27.30 120 │ mdbTooltip="{{ 'Import the customer' | translate }}"
#23 27.30 ╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#23 27.30
#23 27.30 Error occurs in the template of component CustomerPnImportComponent.
#23 27.30
#23 27.30 src/app/plugins/modules/customers-pn/components/customer-pn-import/customer-pn-import.component.ts:13:15:
#23 27.30 13 │ templateUrl: './customer-pn-import.component.html',
#23 27.30 ╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#23 27.30
#23 27.30
#23 27.30 ✘ [ERROR] NG8002: Can't bind to 'mdbTooltip' since it isn't a known property of 'button'. [plugin angular-compiler]
#23 27.30
#23 27.30 src/app/plugins/modules/customers-pn/components/customers-pn-page/customers-pn-page.component.html:6:6:
#23 27.30 6 │ mdbTooltip="{{ 'Create Customer' | translate }}"
#23 27.30 ╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#23 27.30
#23 27.30 Error occurs in the template of component CustomersPnPageComponent.
#23 27.30
#23 27.30 src/app/plugins/modules/customers-pn/components/customers-pn-page/customers-pn-page.component.ts:21:15:
#23 27.30 21 │ templateUrl: './customers-pn-page.component.html',
#23 27.30 ╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#23 27.30
#23 27.30
#23 27.30 ✘ [ERROR] NG8002: Can't bind to 'mdbTooltip' since it isn't a known property of 'button'. [plugin angular-compiler]
#23 27.30
#23 27.30 src/app/plugins/modules/customers-pn/components/customers-pn-page/customers-pn-page.component.html:16:6:
#23 27.30 16 │ mdbTooltip="{{ 'Import Customer' | translate }}"
#23 27.30 ╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#23 27.30
#23 27.30 Error occurs in the template of component CustomersPnPageComponent.
#23 27.30
#23 27.30 src/app/plugins/modules/customers-pn/components/customers-pn-page/customers-pn-page.component.ts:21:15:
#23 27.30 21 │ templateUrl: './customers-pn-page.component.html',
#23 27.30 ╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#23 27.30
#23 27.30
#23 27.30 ✘ [ERROR] NG8002: Can't bind to 'fieldsModel' since it isn't a known property of 'app-customer-pn-add'.
#23 27.30 1. If 'app-customer-pn-add' is an Angular component and it has 'fieldsModel' input, then verify that it is part of this module.
#23 27.30 2. If 'app-customer-pn-add' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.
#23 27.30 3. To allow any property add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component. [plugin angular-compiler]
#23 27.30
#23 27.30 src/app/plugins/modules/customers-pn/components/customers-pn-page/customers-pn-page.component.html:208:2:
#23 27.30 208 │ [fieldsModel]="fieldsModel"
#23 27.30 ╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
#23 27.30
#23 27.30 Error occurs in the template of component CustomersPnPageComponent.
#23 27.30
#23 27.30 src/app/plugins/modules/customers-pn/components/customers-pn-page/customers-pn-page.component.ts:21:15:
#23 27.30 21 │ templateUrl: './customers-pn-page.component.html',
#23 27.30 ╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#23 27.30
#23 27.30
#23 27.30 ✘ [ERROR] NG8002: Can't bind to 'fieldsModel' since it isn't a known property of 'app-customer-pn-edit'.
#23 27.30 1. If 'app-customer-pn-edit' is an Angular component and it has 'fieldsModel' input, then verify that it is part of this module.
#23 27.30 2. If 'app-customer-pn-edit' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.
#23 27.30 3. To allow any property add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component. [plugin angular-compiler]
#23 27.30
#23 27.30 src/app/plugins/modules/customers-pn/components/customers-pn-page/customers-pn-page.component.html:213:2:
#23 27.30 213 │ [fieldsModel]="fieldsModel"
#23 27.30 ╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
#23 27.30
#23 27.30 Error occurs in the template of component CustomersPnPageComponent.
#23 27.30
#23 27.30 src/app/plugins/modules/customers-pn/components/customers-pn-page/customers-pn-page.component.ts:21:15:
#23 27.30 21 │ templateUrl: './customers-pn-page.component.html',
#23 27.30 ╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#23 27.30
#23 27.30
#23 27.30 ✘ [ERROR] NG8002: Can't bind to 'fields' since it isn't a known property of 'app-customer-pn-delete'.
#23 27.30 1. If 'app-customer-pn-delete' is an Angular component and it has 'fields' input, then verify that it is part of this module.
#23 27.30 2. If 'app-customer-pn-delete' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.
#23 27.30 3. To allow any property add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component. [plugin angular-compiler]
#23 27.30
#23 27.30 src/app/plugins/modules/customers-pn/components/customers-pn-page/customers-pn-page.component.html:218:2:
#23 27.30 218 │ [fields]="fieldsModel"
#23 27.30 ╵ ~~~~~~~~~~~~~~~~~~~~~~
#23 27.30
#23 27.30 Error occurs in the template of component CustomersPnPageComponent.
#23 27.30
#23 27.30 src/app/plugins/modules/customers-pn/components/customers-pn-page/customers-pn-page.component.ts:21:15:
#23 27.30 21 │ templateUrl: './customers-pn-page.component.html',
#23 27.30 ╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#23 27.30
#23 27.30

Still use the reference repository for how to migrate to material design patterns: https://github.com/microting/eform-backendconfiguration-plugi

Copy link
Contributor Author

Copilot AI commented Oct 3, 2025

@copilot we still have places with mdbTooltip, which is not material design attributes:

...

Replaced all mdbTooltip with matTooltip in commit 05fe25e:

  • customer-pn-import.component.html (2 occurrences)
  • customers-pn-page.component.html (5 occurrences)
  • Added MatTooltipModule to customers-pn.module.ts

All mdbootstrap tooltip directives have been migrated to Angular Material tooltips.

Copilot finished work on behalf of renemadsen October 3, 2025 06:47
@renemadsen
Copy link
Member

@copilot now we only have these errors left:

#23 27.09 ✘ [ERROR] NG8002: Can't bind to 'fieldsModel' since it isn't a known property of 'app-customer-pn-add'.
#23 27.09 1. If 'app-customer-pn-add' is an Angular component and it has 'fieldsModel' input, then verify that it is part of this module.
#23 27.09 2. If 'app-customer-pn-add' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.
#23 27.09 3. To allow any property add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component. [plugin angular-compiler]
#23 27.09
#23 27.09 src/app/plugins/modules/customers-pn/components/customers-pn-page/customers-pn-page.component.html:208:2:
#23 27.09 208 │ [fieldsModel]="fieldsModel"
#23 27.09 ╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
#23 27.09
#23 27.09 Error occurs in the template of component CustomersPnPageComponent.
#23 27.09
#23 27.09 src/app/plugins/modules/customers-pn/components/customers-pn-page/customers-pn-page.component.ts:21:15:
#23 27.09 21 │ templateUrl: './customers-pn-page.component.html',
#23 27.09 ╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#23 27.09
#23 27.09
#23 27.09 ✘ [ERROR] NG8002: Can't bind to 'fieldsModel' since it isn't a known property of 'app-customer-pn-edit'.
#23 27.09 1. If 'app-customer-pn-edit' is an Angular component and it has 'fieldsModel' input, then verify that it is part of this module.
#23 27.09 2. If 'app-customer-pn-edit' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.
#23 27.09 3. To allow any property add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component. [plugin angular-compiler]
#23 27.09
#23 27.09 src/app/plugins/modules/customers-pn/components/customers-pn-page/customers-pn-page.component.html:213:2:
#23 27.09 213 │ [fieldsModel]="fieldsModel"
#23 27.09 ╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
#23 27.09
#23 27.09 Error occurs in the template of component CustomersPnPageComponent.
#23 27.09
#23 27.09 src/app/plugins/modules/customers-pn/components/customers-pn-page/customers-pn-page.component.ts:21:15:
#23 27.09 21 │ templateUrl: './customers-pn-page.component.html',
#23 27.09 ╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#23 27.09
#23 27.09
#23 27.09 ✘ [ERROR] NG8002: Can't bind to 'fields' since it isn't a known property of 'app-customer-pn-delete'.
#23 27.09 1. If 'app-customer-pn-delete' is an Angular component and it has 'fields' input, then verify that it is part of this module.
#23 27.09 2. If 'app-customer-pn-delete' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.
#23 27.09 3. To allow any property add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component. [plugin angular-compiler]
#23 27.09
#23 27.09 src/app/plugins/modules/customers-pn/components/customers-pn-page/customers-pn-page.component.html:218:2:
#23 27.09 218 │ [fields]="fieldsModel"
#23 27.09 ╵ ~~~~~~~~~~~~~~~~~~~~~~
#23 27.09
#23 27.09 Error occurs in the template of component CustomersPnPageComponent.
#23 27.09
#23 27.09 src/app/plugins/modules/customers-pn/components/customers-pn-page/customers-pn-page.component.ts:21:15:
#23 27.09 21 │ templateUrl: './customers-pn-page.component.html',
#23 27.09 ╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#23 27.09

Copy link
Contributor Author

Copilot AI commented Oct 3, 2025

@copilot now we only have these errors left:

...

Fixed the fieldsModel binding errors in commit df26d66 by completing the MatDialog migration:

Changes to customers-pn-page component:

  • Removed @ViewChild references for modal components
  • Removed <app-customer-pn-add>, <app-customer-pn-edit>, <app-customer-pn-delete> component tags from template
  • Added MatDialog and Overlay to constructor
  • Updated all show methods to use dialog.open(ComponentClass, {data: ...}) pattern
  • Subscribed to component EventEmitters through modal.componentInstance

The migration from MDBModal to Angular Material Dialog is now complete. All modals are opened using the MatDialog service with data passed through MAT_DIALOG_DATA, following the same pattern as eform-backendconfiguration-plugin.

Copilot finished work on behalf of renemadsen October 3, 2025 07:01
@renemadsen renemadsen marked this pull request as ready for review October 3, 2025 07:11
@renemadsen renemadsen merged commit 819c791 into master Oct 3, 2025
6 of 21 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Update code to not use akita but ngrx

3 participants