Fix Angular 22 change detection and dialog visibility bugs - #36907
Conversation
…t responsiveness - Updated dialog components to use `onVisibleChange` method for better synchronization of visibility state with PrimeNG's dialog. - Refactored dialog templates to ensure proper binding of visibility properties and added `appendTo="body"` for improved rendering. - Enhanced `ChangeDetectorRef` usage in various components to ensure UI updates occur correctly after asynchronous operations. - Added tests to verify dialog behavior, including visibility changes and responsiveness to user interactions. These changes improve the user experience by ensuring dialogs behave consistently and responsively across the application.
Aligns existing components with Angular's new default change detection strategy so they behave the same as before the Angular 22 upgrade, where the previous implicit default changes.
|
Claude finished @nicobytes's task in 7m 15s —— View job Code ReviewI focused on the behavioral changes (the mechanical New Issues
Resolved
Notes (non-blocking)
Overall this is a clean, low-risk PR — the one item worth addressing before merge is the |
There was a problem hiding this comment.
Pull request overview
This PR addresses Angular 22 upgrade regressions by standardizing change-detection behavior across core-web components, fixing PrimeNG dialog visibility handling, and ensuring iframe “ng-event” custom events are not lost while feature-flag resolution is pending.
Changes:
- Apply
ChangeDetectionStrategy.Eagerbroadly across Angular components (apps + libs) to restore expected view updates after the Angular 22 upgrade. - Fix multiple PrimeNG dialogs by switching from
[(visible)]to one-way[visible]with explicit(visibleChange)handling, plusappendTo="body"and close behavior tweaks. - Rework
DotCustomEventHandlerServiceto register handlers synchronously (and update/extend related unit tests).
Reviewed changes
Copilot reviewed 215 out of 215 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| core-web/libs/utils-testing/src/lib/test-setup-helpers.ts | Add ChangeDetectionStrategy.Eager to common test mocks. |
| core-web/libs/utils-testing/src/lib/split-button.mock.ts | Add ChangeDetectionStrategy.Eager to split-button mock component. |
| core-web/libs/utils-testing/src/lib/dot-not-licensed.component.mock.ts | Add ChangeDetectionStrategy.Eager to not-licensed mock. |
| core-web/libs/ui/src/lib/dot-tab-buttons/dot-tab-buttons.component.ts | Add ChangeDetectionStrategy.Eager to tab buttons. |
| core-web/libs/ui/src/lib/dot-spinner/dot-spinner.component.ts | Add ChangeDetectionStrategy.Eager to spinner. |
| core-web/libs/ui/src/lib/dot-icon/dot-icon.component.ts | Add ChangeDetectionStrategy.Eager to icon component. |
| core-web/libs/ui/src/lib/components/dot-severity-icon/dot-severity-icon.component.ts | Add ChangeDetectionStrategy.Eager to severity icon. |
| core-web/libs/ui/src/lib/components/dot-pages-favorite-page-empty-skeleton/dot-pages-favorite-page-empty-skeleton.component.ts | Add ChangeDetectionStrategy.Eager to skeleton component. |
| core-web/libs/ui/src/lib/components/dot-menu/dot-menu.component.ts | Add ChangeDetectionStrategy.Eager to menu component. |
| core-web/libs/ui/src/lib/components/dot-link/dot-link.component.ts | Add ChangeDetectionStrategy.Eager to link component. |
| core-web/libs/ui/src/lib/components/dot-key-value-ng/dot-key-value-table-header-row/dot-key-value-table-header-row.component.ts | Add ChangeDetectionStrategy.Eager to key/value header row. |
| core-web/libs/ui/src/lib/components/dot-form-dialog/dot-form-dialog.component.ts | Add ChangeDetectionStrategy.Eager to form dialog. |
| core-web/libs/ui/src/lib/components/dot-api-link/dot-api-link.component.ts | Add ChangeDetectionStrategy.Eager to API link component. |
| core-web/libs/ui/src/lib/components/dot-ai-image-prompt/components/ai-image-prompt-gallery/ai-image-prompt-gallery.component.ts | Add ChangeDetectionStrategy.Eager to AI prompt gallery. |
| core-web/libs/ui/src/lib/components/dot-action-menu-button/dot-action-menu-button.component.ts | Add ChangeDetectionStrategy.Eager to action menu button. |
| core-web/libs/ui/src/lib/components/add-to-bundle/dot-add-to-bundle.component.ts | Add ChangeDetectionStrategy.Eager to add-to-bundle. |
| core-web/libs/template-builder/src/lib/components/template-builder/components/template-builder-sidebar/template-builder-sidebar.component.ts | Add ChangeDetectionStrategy.Eager to template builder sidebar. |
| core-web/libs/template-builder/src/lib/components/template-builder/components/dot-layout-properties/dot-layout-property-sidebar/dot-layout-property-sidebar.component.ts | Add ChangeDetectionStrategy.Eager to layout property sidebar. |
| core-web/libs/template-builder/src/lib/components/template-builder/components/dot-layout-properties/dot-layout-properties.component.ts | Add ChangeDetectionStrategy.Eager to layout properties panel. |
| core-web/libs/template-builder/src/lib/components/template-builder/components/dot-layout-properties/dot-layout-properties-item/dot-layout-properties-item.component.ts | Add ChangeDetectionStrategy.Eager to layout properties item. |
| core-web/libs/sdk/angular/src/lib/components/dotcms-layout-body/components/container/components/empty-container/empty-container.component.ts | Add ChangeDetectionStrategy.Eager to empty container. |
| core-web/libs/sdk/angular/src/lib/components/dotcms-layout-body/components/container/components/container-not-found/container-not-found.component.ts | Add ChangeDetectionStrategy.Eager to container-not-found. |
| core-web/libs/sdk/angular/src/lib/components/dotcms-editable-text/dotcms-editable-text.component.ts | Add ChangeDetectionStrategy.Eager to editable text. |
| core-web/libs/sdk/angular/src/lib/components/dotcms-block-editor-renderer/item/dotcms-block-editor-item.component.ts | Add ChangeDetectionStrategy.Eager to block editor item. |
| core-web/libs/sdk/angular/src/lib/components/dotcms-block-editor-renderer/dotcms-block-editor-renderer.component.ts | Add ChangeDetectionStrategy.Eager to block editor renderer. |
| core-web/libs/sdk/angular/src/lib/components/dotcms-block-editor-renderer/blocks/unknown.component.ts | Add ChangeDetectionStrategy.Eager to unknown block component. |
| core-web/libs/sdk/angular/src/lib/components/dotcms-block-editor-renderer/blocks/table.component.ts | Add ChangeDetectionStrategy.Eager to table block component. |
| core-web/libs/sdk/angular/src/lib/components/dotcms-block-editor-renderer/blocks/grid-block.component.ts | Add ChangeDetectionStrategy.Eager to grid block component. |
| core-web/libs/sdk/angular/src/lib/components/dotcms-block-editor-renderer/blocks/dot-contentlet.component.ts | Add ChangeDetectionStrategy.Eager to “no component provided” view. |
| core-web/libs/portlets/edit-ema/ui/src/lib/palette/components/dot-favorite-selector/dot-favorite-selector.component.ts | Add ChangeDetectionStrategy.Eager to favorite selector. |
| core-web/libs/portlets/edit-ema/ui/src/lib/dot-favorite-page/dot-favorite-page.component.ts | Add ChangeDetectionStrategy.Eager to favorite page. |
| core-web/libs/portlets/edit-ema/ui/src/lib/dot-content-compare/dot-content-compare.component.ts | Add ChangeDetectionStrategy.Eager to content compare root. |
| core-web/libs/portlets/edit-ema/ui/src/lib/dot-content-compare/components/fields/dot-content-compare-preview-field/dot-content-compare-preview-field.component.ts | Add ChangeDetectionStrategy.Eager to preview field. |
| core-web/libs/portlets/edit-ema/ui/src/lib/dot-content-compare/components/dot-content-compare-table/dot-content-compare-table.component.ts | Add ChangeDetectionStrategy.Eager to compare table. |
| core-web/libs/portlets/edit-ema/ui/src/lib/dot-content-compare/components/dot-content-compare-dialog/dot-content-compare-dialog.component.ts | Add eager CD and explicit visibleChange handling + forced CD on open. |
| core-web/libs/portlets/edit-ema/ui/src/lib/dot-content-compare/components/dot-content-compare-dialog/dot-content-compare-dialog.component.html | Switch to [visible] + (visibleChange), add appendTo="body" and close options. |
| core-web/libs/portlets/edit-ema/ui/src/lib/dot-content-compare/components/dot-content-compare-block-editor/dot-content-compare-block-editor.component.ts | Add ChangeDetectionStrategy.Eager to compare block editor. |
| core-web/libs/portlets/edit-ema/portlet/src/lib/edit-ema-editor/components/dot-uve-toolbar/components/edit-ema-persona-selector/edit-ema-persona-selector.component.ts | Add ChangeDetectionStrategy.Eager to persona selector. |
| core-web/libs/portlets/edit-ema/portlet/src/lib/edit-ema-editor/components/dot-uve-toolbar/components/dot-uve-workflow-actions/dot-uve-workflow-actions.component.ts | Add ChangeDetectionStrategy.Eager to workflow actions. |
| core-web/libs/portlets/edit-ema/portlet/src/lib/edit-ema-editor/components/dot-uve-palette/components/dot-uve-style-editor-form/components/uve-style-editor-field-radio/uve-style-editor-field-radio.component.ts | Add ChangeDetectionStrategy.Eager to style editor radio field. |
| core-web/libs/portlets/edit-ema/portlet/src/lib/edit-ema-editor/components/dot-uve-palette/components/dot-uve-style-editor-form/components/uve-style-editor-field-input/uve-style-editor-field-input.component.ts | Add ChangeDetectionStrategy.Eager to style editor input field. |
| core-web/libs/portlets/edit-ema/portlet/src/lib/edit-ema-editor/components/dot-uve-palette/components/dot-uve-style-editor-form/components/uve-style-editor-field-dropdown/uve-style-editor-field-dropdown.component.ts | Add ChangeDetectionStrategy.Eager to style editor dropdown field. |
| core-web/libs/portlets/edit-ema/portlet/src/lib/edit-ema-editor/components/dot-uve-palette/components/dot-uve-style-editor-form/components/uve-style-editor-field-checkbox-group/uve-style-editor-field-checkbox-group.component.ts | Add ChangeDetectionStrategy.Eager to style editor checkbox-group field. |
| core-web/libs/portlets/edit-ema/portlet/src/lib/components/dot-block-editor-sidebar/dot-block-editor-sidebar.component.ts | Add ChangeDetectionStrategy.Eager to block editor sidebar. |
| core-web/libs/portlets/dot-locales/portlet/src/lib/dot-locales-shell/dot-locales-shell.component.ts | Add ChangeDetectionStrategy.Eager to locales shell. |
| core-web/libs/portlets/dot-content-drive/portlet/src/lib/components/dialogs/dot-content-drive-dialog-folder/dot-content-drive-dialog-folder.component.ts | Add ChangeDetectionStrategy.Eager to folder dialog component. |
| core-web/libs/portlets/dot-analytics/portlet/src/lib/dot-analytics-search/dot-analytics-search.component.ts | Add ChangeDetectionStrategy.Eager to analytics search. |
| core-web/libs/portlets/dot-analytics/portlet/src/lib/dot-analytics-error/dot-analytics-error.component.ts | Add ChangeDetectionStrategy.Eager to analytics error page. |
| core-web/libs/edit-content/src/lib/fields/dot-edit-content-relationship-field/components/pagination/pagination.component.ts | Add ChangeDetectionStrategy.Eager to pagination component. |
| core-web/libs/dot-rules/src/lib/features/rule/dot-rule.component.ts | Switch rule component change detection to eager. |
| core-web/libs/dot-rules/src/lib/features/rule-engine/dot-rule-engine.component.ts | Add ChangeDetectionStrategy.Eager to rule engine. |
| core-web/libs/dot-rules/src/lib/features/rule-engine/container/dot-rule-engine-container.component.ts | Add ChangeDetectionStrategy.Eager to rule engine container. |
| core-web/libs/dot-rules/src/lib/features/conditions/rule-condition/dot-rule-condition.component.ts | Add ChangeDetectionStrategy.Eager to rule condition. |
| core-web/libs/dot-rules/src/lib/features/conditions/geolocation/dialog/dot-area-picker-dialog.component.ts | Switch area picker dialog change detection to eager. |
| core-web/libs/dot-rules/src/lib/features/conditions/condition-group/dot-condition-group.component.ts | Add ChangeDetectionStrategy.Eager to condition group. |
| core-web/libs/dot-rules/src/lib/features/actions/dot-rule-action.component.ts | Add ChangeDetectionStrategy.Eager to rule action. |
| core-web/libs/dot-rules/src/lib/entry/dot-rules.component.ts | Add ChangeDetectionStrategy.Eager to dot-rules entry. |
| core-web/libs/block-editor/src/lib/shared/components/suggestions/suggestions.component.ts | Add ChangeDetectionStrategy.Eager to suggestions component. |
| core-web/libs/block-editor/src/lib/shared/components/suggestion-loading-list/suggestion-loading-list.component.ts | Add ChangeDetectionStrategy.Eager to suggestion loading list. |
| core-web/libs/block-editor/src/lib/shared/components/suggestion-list/suggestion-list.component.ts | Add ChangeDetectionStrategy.Eager to suggestion list. |
| core-web/libs/block-editor/src/lib/shared/components/suggestion-list/components/suggestions-list-item/suggestions-list-item.component.ts | Add ChangeDetectionStrategy.Eager to suggestion list item. |
| core-web/libs/block-editor/src/lib/shared/components/empty-message/empty-message.component.ts | Add ChangeDetectionStrategy.Eager to empty message component. |
| core-web/libs/block-editor/src/lib/NodeViewRenderer.ts | Add eager CD to Angular node view wrapper component. |
| core-web/libs/block-editor/src/lib/nodes/contentlet-block/contentlet-block.component.ts | Add ChangeDetectionStrategy.Eager to contentlet block node. |
| core-web/libs/block-editor/src/lib/extensions/floating-button/floating-button.component.ts | Add ChangeDetectionStrategy.Eager to floating button. |
| core-web/libs/block-editor/src/lib/extensions/bubble-form/bubble-form.component.ts | Add ChangeDetectionStrategy.Eager to bubble form. |
| core-web/libs/block-editor/src/lib/extensions/ai-content-prompt/ai-content-prompt.component.ts | Add ChangeDetectionStrategy.Eager to AI content prompt. |
| core-web/libs/block-editor/src/lib/elements/dot-context-menu/dot-context-menu.component.ts | Add ChangeDetectionStrategy.Eager to editor context menu. |
| core-web/libs/block-editor/src/lib/elements/dot-bubble-menu/components/dot-link-editor-popover/dot-link-editor-popover.component.ts | Add ChangeDetectionStrategy.Eager to link editor popover. |
| core-web/libs/block-editor/src/lib/elements/dot-bubble-menu/components/dot-image-editor-popover/dot-image-editor-popover.component.ts | Add ChangeDetectionStrategy.Eager to image editor popover. |
| core-web/libs/block-editor/src/lib/components/dot-editor-count-bar/dot-editor-count-bar.component.ts | Add ChangeDetectionStrategy.Eager to editor count bar. |
| core-web/libs/block-editor/src/lib/components/dot-block-editor/dot-block-editor.component.ts | Add ChangeDetectionStrategy.Eager to block editor root component. |
| core-web/apps/dotcms-ui/src/stories/primeng/overlay/DynamicDialogProducts.component.ts | Add eager CD to PrimeNG story component. |
| core-web/apps/dotcms-ui/src/stories/primeng/overlay/DynamicDialogButton.component.ts | Add eager CD to PrimeNG story component. |
| core-web/apps/dotcms-ui/src/stories/primeng/overlay/ConfirmDialog.component.ts | Add eager CD to PrimeNG story component. |
| core-web/apps/dotcms-ui/src/stories/primeng/misc/Ripple.component.ts | Add eager CD to PrimeNG story component. |
| core-web/apps/dotcms-ui/src/stories/primeng/misc/Defer.component.ts | Add eager CD to PrimeNG story component. |
| core-web/apps/dotcms-ui/src/stories/primeng/messages/Toast.component.ts | Add eager CD to PrimeNG story component. |
| core-web/apps/dotcms-ui/src/app/view/components/not-license/not-license.component.ts | Add ChangeDetectionStrategy.Eager to not-licensed page wrapper. |
| core-web/apps/dotcms-ui/src/app/view/components/main-legacy/main-legacy.component.ts | Add eager CD to legacy main shell. |
| core-web/apps/dotcms-ui/src/app/view/components/main-core-legacy/main-core-legacy-component.ts | Add eager CD to core legacy main component. |
| core-web/apps/dotcms-ui/src/app/view/components/login/reset-password-component/reset-password.component.ts | Add eager CD to reset password component. |
| core-web/apps/dotcms-ui/src/app/view/components/login/main/dot-login-page.component.ts | Add eager CD to login page component. |
| core-web/apps/dotcms-ui/src/app/view/components/login/forgot-password-component/forgot-password.component.ts | Add eager CD to forgot password component. |
| core-web/apps/dotcms-ui/src/app/view/components/login/dot-logout-container-component/dot-log-out-container.ts | Add eager CD to logout container. |
| core-web/apps/dotcms-ui/src/app/view/components/login/dot-login-component/dot-login.component.ts | Add eager CD to login component. |
| core-web/apps/dotcms-ui/src/app/view/components/dot-workflow-task-detail/dot-workflow-task-detail.component.ts | Add eager CD to workflow task detail component. |
| core-web/apps/dotcms-ui/src/app/view/components/dot-toolbar/dot-toolbar.component.ts | Add eager CD to toolbar component. |
| core-web/apps/dotcms-ui/src/app/view/components/dot-toolbar/components/dot-toolbar-notifications/components/dot-notification-item/dot-notification-item.component.ts | Add eager CD to notification item component. |
| core-web/apps/dotcms-ui/src/app/view/components/dot-toolbar/components/dot-toolbar-announcements/dot-toolbar-announcements.component.ts | Add eager CD to announcements component. |
| core-web/apps/dotcms-ui/src/app/view/components/dot-relationship-tree/dot-relationship-tree.component.ts | Add eager CD to relationship tree component. |
| core-web/apps/dotcms-ui/src/app/view/components/dot-portlet-base/dot-portlet-base.component.ts | Add eager CD to portlet base component. |
| core-web/apps/dotcms-ui/src/app/view/components/dot-portlet-base/components/dot-portlet-box/dot-portlet-box.component.ts | Add eager CD to portlet box component. |
| core-web/apps/dotcms-ui/src/app/view/components/dot-persona-selector/dot-persona-selector.component.ts | Add eager CD to persona selector. |
| core-web/apps/dotcms-ui/src/app/view/components/dot-persona-selector-option/dot-persona-selector-option.component.ts | Add eager CD to persona selector option. |
| core-web/apps/dotcms-ui/src/app/view/components/dot-persona-selected-item/dot-persona-selected-item.component.ts | Add eager CD to persona selected item. |
| core-web/apps/dotcms-ui/src/app/view/components/dot-navigation/dot-navigation.component.ts | Add eager CD to navigation component. |
| core-web/apps/dotcms-ui/src/app/view/components/dot-navigation/components/dot-sub-nav/dot-sub-nav.component.ts | Add eager CD to sub-nav component. |
| core-web/apps/dotcms-ui/src/app/view/components/dot-navigation/components/dot-nav-item/dot-nav-item.component.ts | Add eager CD to nav item component. |
| core-web/apps/dotcms-ui/src/app/view/components/dot-navigation/components/dot-nav-icon/dot-nav-icon.component.ts | Add eager CD to nav icon component. |
| core-web/apps/dotcms-ui/src/app/view/components/dot-navigation/components/dot-nav-header/dot-nav-header.component.ts | Add eager CD to nav header component. |
| core-web/apps/dotcms-ui/src/app/view/components/dot-message-display/dot-message-display.component.ts | Add eager CD to message display component. |
| core-web/apps/dotcms-ui/src/app/view/components/dot-listing-data-table/dot-listing-data-table.component.ts | Add eager CD to listing data table. |
| core-web/apps/dotcms-ui/src/app/view/components/dot-link/dot-link.component.ts | Add eager CD to app-level dot-link component. |
| core-web/apps/dotcms-ui/src/app/view/components/dot-large-message-display/dot-large-message-display.component.ts | Add eager CD to large message display. |
| core-web/apps/dotcms-ui/src/app/view/components/dot-iframe-dialog/dot-iframe-dialog.component.ts | Add eager CD to iframe dialog. |
| core-web/apps/dotcms-ui/src/app/view/components/dot-field-helper/dot-field-helper.component.ts | Add eager CD to field helper. |
| core-web/apps/dotcms-ui/src/app/view/components/dot-copy-link/dot-copy-link.component.ts | Add eager CD to copy link component. |
| core-web/apps/dotcms-ui/src/app/view/components/dot-contentlet-editor/components/dot-reorder-menu/dot-reorder-menu.component.ts | Add eager CD to reorder menu. |
| core-web/apps/dotcms-ui/src/app/view/components/dot-contentlet-editor/components/dot-edit-contentlet/dot-edit-contentlet.component.ts | Add eager CD to edit contentlet component. |
| core-web/apps/dotcms-ui/src/app/view/components/dot-contentlet-editor/components/dot-create-contentlet/dot-create-contentlet.component.ts | Add eager CD to create contentlet component. |
| core-web/apps/dotcms-ui/src/app/view/components/dot-contentlet-editor/components/dot-contentlet-wrapper/dot-contentlet-wrapper.component.ts | Add eager CD to contentlet wrapper. |
| core-web/apps/dotcms-ui/src/app/view/components/dot-contentlet-editor/components/dot-add-contentlet/dot-add-contentlet.component.ts | Add eager CD to add contentlet component. |
| core-web/apps/dotcms-ui/src/app/view/components/dot-content-type-selector/dot-content-type-selector.component.ts | Add eager CD to content type selector. |
| core-web/apps/dotcms-ui/src/app/view/components/dot-container-selector/dot-container-selector.component.ts | Add eager CD to container selector. |
| core-web/apps/dotcms-ui/src/app/view/components/dot-base-type-selector/dot-base-type-selector.component.ts | Add eager CD to base type selector. |
| core-web/apps/dotcms-ui/src/app/view/components/dot-add-persona-dialog/dot-create-persona-form/dot-create-persona-form.component.ts | Add eager CD to create persona form. |
| core-web/apps/dotcms-ui/src/app/view/components/dot-add-persona-dialog/dot-add-persona-dialog.component.ts | Add eager CD to add persona dialog. |
| core-web/apps/dotcms-ui/src/app/view/components/_common/searchable-dropdown/component/searchable-dropdown.component.ts | Add eager CD to searchable dropdown. |
| core-web/apps/dotcms-ui/src/app/view/components/_common/iframe/iframe-porlet-legacy/iframe-porlet-legacy.component.ts | Add eager CD to legacy iframe portlet. |
| core-web/apps/dotcms-ui/src/app/view/components/_common/iframe/iframe-component/iframe.component.ts | Add eager CD to iframe component. |
| core-web/apps/dotcms-ui/src/app/view/components/_common/iframe/dot-loading-indicator/dot-loading-indicator.component.ts | Add eager CD to iframe loading indicator. |
| core-web/apps/dotcms-ui/src/app/view/components/_common/forms/dot-push-publish-form/dot-push-publish-form.component.ts | Add eager CD to push publish form. |
| core-web/apps/dotcms-ui/src/app/view/components/_common/forms/dot-comment-and-assign-form/dot-comment-and-assign-form.component.ts | Add eager CD to comment/assign form. |
| core-web/apps/dotcms-ui/src/app/view/components/_common/dot-workflows-selector-field/dot-workflows-selector-field.component.ts | Add eager CD to workflows selector field. |
| core-web/apps/dotcms-ui/src/app/view/components/_common/dot-workflows-actions-selector-field/dot-workflows-actions-selector-field.component.ts | Add eager CD to workflow actions selector field. |
| core-web/apps/dotcms-ui/src/app/view/components/_common/dot-wizard/dot-wizard.component.ts | Add eager CD to wizard component. |
| core-web/apps/dotcms-ui/src/app/view/components/_common/dot-push-publish-env-selector/dot-push-publish-env-selector.component.ts | Add eager CD to env selector. |
| core-web/apps/dotcms-ui/src/app/view/components/_common/dot-push-publish-dialog/dot-push-publish-dialog.component.ts | Add eager CD, explicit visibleChange handling, and forced CD on open. |
| core-web/apps/dotcms-ui/src/app/view/components/_common/dot-push-publish-dialog/dot-push-publish-dialog.component.spec.ts | Update tests for new dialog visibility + CD behavior. |
| core-web/apps/dotcms-ui/src/app/view/components/_common/dot-push-publish-dialog/dot-push-publish-dialog.component.html | Switch to [visible] + (visibleChange), add appendTo="body" and close options. |
| core-web/apps/dotcms-ui/src/app/view/components/_common/dot-page-selector/dot-page-selector.component.ts | Add eager CD to page selector. |
| core-web/apps/dotcms-ui/src/app/view/components/_common/dot-overlay-mask/dot-overlay-mask.component.ts | Add eager CD to overlay mask. |
| core-web/apps/dotcms-ui/src/app/view/components/_common/dot-md-icon-selector/dot-md-icon-selector.component.ts | Add eager CD to MD icon selector. |
| core-web/apps/dotcms-ui/src/app/view/components/_common/dot-inline-edit/dot-inline-edit.component.ts | Add eager CD to inline edit. |
| core-web/apps/dotcms-ui/src/app/view/components/_common/dot-global-message/dot-global-message.component.ts | Add eager CD to global message. |
| core-web/apps/dotcms-ui/src/app/view/components/_common/dot-generate-secure-password/dot-generate-secure-password.component.ts | Add eager CD, explicit visibleChange handling, and forced CD on open. |
| core-web/apps/dotcms-ui/src/app/view/components/_common/dot-generate-secure-password/dot-generate-secure-password.component.html | Switch to [visible] + (visibleChange), add appendTo="body" and close options. |
| core-web/apps/dotcms-ui/src/app/view/components/_common/dot-empty-state/dot-empty-state.component.ts | Add eager CD to empty state component. |
| core-web/apps/dotcms-ui/src/app/view/components/_common/dot-download-bundle-dialog/dot-download-bundle-dialog.component.ts | Add eager CD, explicit visibleChange handling, and forced CD on open. |
| core-web/apps/dotcms-ui/src/app/view/components/_common/dot-download-bundle-dialog/dot-download-bundle-dialog.component.html | Switch to [visible] + (visibleChange), add appendTo="body" and close options. |
| core-web/apps/dotcms-ui/src/app/view/components/_common/dot-bulk-information/dot-bulk-information.component.ts | Add eager CD to bulk info component. |
| core-web/apps/dotcms-ui/src/app/view/components/_common/dot-autocomplete-tags/dot-autocomplete-tags.component.ts | Add eager CD to autocomplete tags. |
| core-web/apps/dotcms-ui/src/app/view/components/_common/dot-alert-confirm/dot-alert-confirm.ts | Add eager CD to alert confirm component. |
| core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-listing/dot-content-types.component.ts | Add eager CD to content types listing. |
| core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-listing/components/dot-add-to-menu/dot-add-to-menu.component.ts | Add eager CD to add-to-menu dialog. |
| core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/dot-content-types-edit.component.ts | Add eager CD to content type editor wrapper. |
| core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/layout/content-types-layout.component.ts | Add eager CD to content types layout. |
| core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/form/content-types-form.component.ts | Add eager CD to content types form. |
| core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/fields/dot-edit-field-dialog/dot-edit-field-dialog.component.ts | Add eager CD to edit-field dialog. |
| core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/fields/content-types-fields-list/content-types-fields-list.component.ts | Add eager CD to fields list. |
| core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/fields/content-type-fields-tab/content-type-fields-tab.component.ts | Add eager CD to fields tab. |
| core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/fields/content-type-fields-row/content-type-fields-row.component.ts | Add eager CD to fields row. |
| core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/fields/content-type-fields-properties-form/field-properties/values-property/values-property.component.ts | Add eager CD to values property. |
| core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/fields/content-type-fields-properties-form/field-properties/render-mode-property/render-mode-property.component.ts | Add eager CD to render-mode property. |
| core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/fields/content-type-fields-properties-form/field-properties/regex-check-property/regex-check-property.component.ts | Add eager CD to regex-check property. |
| core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/fields/content-type-fields-properties-form/field-properties/name-property/name-property.component.ts | Add eager CD to name property. |
| core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/fields/content-type-fields-properties-form/field-properties/hint-property/hint-property.component.ts | Add eager CD to hint property. |
| core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/fields/content-type-fields-properties-form/field-properties/dot-relationships-property/dot-relationships-property.component.ts | Add eager CD to relationships property. |
| core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/fields/content-type-fields-properties-form/field-properties/dot-relationships-property/dot-new-relationships/dot-new-relationships.component.ts | Add eager CD to new relationships component. |
| core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/fields/content-type-fields-properties-form/field-properties/dot-relationships-property/dot-edit-relationship/dot-edit-relationships.component.ts | Add eager CD to edit relationships component. |
| core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/fields/content-type-fields-properties-form/field-properties/dot-relationships-property/dot-cardinality-selector/dot-cardinality-selector.component.ts | Add eager CD to cardinality selector. |
| core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/fields/content-type-fields-properties-form/field-properties/default-value-property/default-value-property.component.ts | Add eager CD to default-value property. |
| core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/fields/content-type-fields-properties-form/field-properties/data-type-property/data-type-property.component.ts | Add eager CD to data-type property. |
| core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/fields/content-type-fields-properties-form/field-properties/checkbox-property/checkbox-property.component.ts | Add eager CD to checkbox property. |
| core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/fields/content-type-fields-properties-form/field-properties/categories-property/categories-property.component.ts | Add eager CD to categories property. |
| core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/fields/content-type-fields-properties-form/content-type-fields-properties-form.component.ts | Add eager CD to properties form wrapper. |
| core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/fields/content-type-fields-drop-zone/content-type-fields-drop-zone.component.ts | Add eager CD to drop zone component. |
| core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/fields/content-type-fields-add-row/content-type-fields-add-row.component.ts | Add eager CD to add-row component. |
| core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/dot-convert-wysiwyg-to-block/dot-convert-wysiwyg-to-block.component.ts | Add eager CD to conversion component. |
| core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/dot-convert-to-block-info/dot-convert-to-block-info.component.ts | Add eager CD to conversion info component. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-templates/dot-template-list/dot-template-list.component.ts | Add eager CD to template list. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-templates/dot-template-create-edit/dot-template-props/dot-template-thumbnail-field/dot-template-thumbnail-field.component.spec.ts | Add async-binding test coverage for thumbnail preview updates. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-templates/dot-template-create-edit/dot-template-props/dot-template-props.component.ts | Add eager CD to template props. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-templates/dot-template-create-edit/dot-template-new/dot-template-new.component.ts | Add eager CD to template-new component. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-templates/dot-template-create-edit/dot-template-create-edit.component.ts | Add eager CD to template create/edit wrapper. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-templates/dot-template-create-edit/dot-template-builder/dot-template-builder.component.ts | Add eager CD to template builder. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-templates/dot-template-create-edit/dot-template-advanced/dot-template-advanced.component.ts | Add eager CD to template advanced editor. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-starter/dot-starter.component.ts | Add eager CD to starter portlet. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-starter/components/onboarding-dev/onboarding-dev.component.ts | Add eager CD to onboarding dev component. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-starter/components/onboarding-author/onboarding-author.component.ts | Add eager CD to onboarding author component. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-porlet-detail/dot-workflow-task/dot-workflow-task.component.ts | Add eager CD to workflow task wrapper. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-porlet-detail/dot-portlet-detail.component.ts | Add eager CD to portlet detail component. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-porlet-detail/dot-contentlets/dot-contentlets.component.ts | Add eager CD to contentlets wrapper. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-pages/dot-pages.component.ts | Add eager CD to pages portlet. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-pages/dot-pages-table/dot-pages-table.component.ts | Add eager CD to pages table. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-pages/dot-page-favorites-panel/dot-pages-card/dot-pages-card.component.ts | Add eager CD to pages card. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-pages/dot-page-favorites-panel/dot-page-favorites-panel.component.ts | Add eager CD to favorites panel. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-pages/dot-create-page-dialog/dot-create-page-dialog.component.ts | Add eager CD to create-page dialog. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-form-builder/dot-form-builder.component.ts | Add eager CD to form builder wrapper. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-containers/dot-container-create/dot-loop-editor/dot-loop-editor.component.ts | Add eager CD to loop editor. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-containers/dot-container-create/dot-container-properties/dot-container-properties.component.ts | Add eager CD to container properties. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-containers/dot-container-create/dot-container-permissions/dot-container-permissions.component.ts | Add eager CD to container permissions. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-containers/dot-container-create/dot-container-history/dot-container-history.component.ts | Add eager CD to container history. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-containers/dot-container-create/dot-container-create.component.ts | Add eager CD to container create root. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-containers/dot-container-create/dot-container-code/dot-container-code.component.ts | Add eager CD to container code editor. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-containers/dot-container-create/dot-container-code/dot-add-variable/dot-add-variable.component.ts | Add eager CD to add-variable dialog. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-containers/container-list/container-list.component.ts | Add eager CD to container list. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/dot-apps-list/dot-apps-list.component.ts | Add eager CD to apps list. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/dot-apps-list/dot-apps-card/dot-apps-card.component.ts | Add eager CD to apps card. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/dot-apps-import-export-dialog/dot-apps-import-export-dialog.component.ts | Add eager CD to import/export dialog. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/components/dot-apps-configuration/dot-apps-configuration.component.ts | Add eager CD to apps configuration. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/components/dot-apps-configuration/dot-apps-configuration-list/dot-apps-configuration-list.component.ts | Add eager CD to configuration list. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/components/dot-apps-configuration/dot-apps-configuration-list/dot-apps-configuration-item/dot-apps-configuration-item.component.ts | Add eager CD to configuration item. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/components/dot-apps-configuration-detail/dot-apps-configuration-detail.component.ts | Add eager CD to configuration detail. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/components/dot-apps-configuration-detail/components/dot-apps-configuration-header/dot-apps-configuration-header.component.ts | Add eager CD to configuration header. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/components/dot-apps-configuration-detail/components/dot-apps-configuration-detail-form/dot-apps-configuration-detail-form.component.ts | Add eager CD to configuration form. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/components/dot-ai-config-detail/dot-ai-config-detail.component.ts | Add eager CD to AI config detail. |
| core-web/apps/dotcms-ui/src/app/app.component.ts | Add eager CD to app root component. |
| core-web/apps/dotcms-ui/src/app/api/services/dot-remote-module-wrapper.component.ts | Add eager CD to remote module wrapper. |
| core-web/apps/dotcms-ui/src/app/api/services/dot-custom-event-handler/dot-custom-event-handler.service.ts | Register iframe event handlers synchronously; switch handlers on flag resolution. |
| core-web/apps/dotcms-ui/src/app/api/services/dot-custom-event-handler/dot-custom-event-handler.service.spec.ts | Add/adjust tests for early event handling before flag resolution. |
| core-web/apps/dotcms-binary-field-builder/src/app/app.component.ts | Add eager CD to binary-field-builder app root. |
| core-web/apps/dotcdn/src/app/app.component.ts | Add eager CD to dotcdn app root. |
Updated the app component to explicitly set the ChangeDetectionStrategy to Eager, aligning it with Angular's new default behavior post-upgrade. Additionally, removed a commented-out note regarding testing for the 'edit-host' event in the DotCustomEventHandlerService, streamlining the code for clarity.
…ore into nicobytes/35930-angular-22-bugs
|
Tick the box to add this pull request to the merge queue (same as
|
This pull request introduces several improvements focused on performance and event handling reliability across multiple Angular components in the codebase. The most significant change is the consistent application of
ChangeDetectionStrategy.Eagerto various components, which can improve UI responsiveness and predictability. Additionally, the event handler service is refactored to ensure that custom events are never dropped, even if feature flags are still loading.Change Detection Strategy Enhancements:
ChangeDetectionStrategy.Eagerto a wide range of components, includingAppComponentfiles, configuration forms, dialogs, and list/card components, to ensure immediate change detection and improved UI consistency. [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13]ChangeDetectionStrategywhere needed. [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13]Event Handler Reliability and Testing:
DotCustomEventHandlerServiceto register event handlers synchronously, ensuring iframe events (such as push-publish) are never dropped while waiting for feature-flag resolution. Handlers foredit-contentletandcreate-contentletare now updated dynamically after feature-flag resolution. [1] [2]NEVERfromrxjsfor improved test scenarios.Fix #35930