From d985923ee173129416159bc2a5cc3c27767fd9f2 Mon Sep 17 00:00:00 2001 From: Luiz Gustavo da Silva Vasconcellos Date: Fri, 12 Jun 2026 17:59:42 -0300 Subject: [PATCH 1/8] feat(angular): atualiza projeto para o Angular 22 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Atualiza o PO UI para o Angular 22, elevando as dependências do core, forms, router e platform-browser para a versao ~22.0.1. Ajusta os arquivos de configuração de build (angular.json e os tsconfig dos projetos), atualiza a documentação de instalação e adapta os testes unitários ao novo comportamento do framework. Adiciona as migrações de ng-update da v22 para ui e sync, mantendo o processo de atualização automatizado para os consumidores da biblioteca. Fixes DTHFUI-13230 --- .github/ISSUE_TEMPLATE/bug_report.md | 2 +- .github/workflows/ci.yml | 3 + .github/workflows/publish_po_angular_ci.yml | 2 +- README.md | 35 +- angular.json | 39 +- docs/guides/browser-support.md | 12 +- docs/guides/development-flow.md | 2 +- docs/guides/getting-started.md | 60 +- docs/guides/migration-poui.md | 15 +- docs/guides/releases.md | 7 +- docs/guides/schematics.md | 4 +- docs/guides/sync-get-started.md | 204 +++-- package.json | 49 +- po-ui-style-22.0.0-next.0.tgz | Bin 0 -> 1244930 bytes projects/app/src/app/app.component.ts | 3 +- projects/app/src/app/app.module.ts | 4 +- projects/app/src/main.ts | 4 +- projects/app/tsconfig.app.json | 5 +- projects/code-editor/karma.conf.js | 3 +- projects/code-editor/package.json | 6 +- .../po-code-editor.component.ts | 13 +- .../sample-po-code-editor-basic.component.ts | 3 +- .../sample-po-code-editor-diff.component.ts | 3 +- .../sample-po-code-editor-labs.component.ts | 3 +- ...ple-po-code-editor-suggestion.component.ts | 3 +- ...mple-po-code-editor-terraform.component.ts | 3 +- projects/code-editor/src/test.ts | 10 +- projects/code-editor/tsconfig.lib.json | 4 +- projects/code-editor/tsconfig.schematics.json | 5 +- projects/code-editor/tsconfig.spec.json | 5 +- projects/mcp/tsconfig.json | 5 +- .../docs/processors/helpers/file-writer.js | 9 +- projects/portal/src/app/app.component.ts | 5 +- projects/portal/src/app/app.module.ts | 7 +- .../documentation-list.component.ts | 3 +- .../documentation/documentation.component.ts | 3 +- .../ia-tools-llms/ia-tools-llms.component.ts | 3 +- .../ia-tools-mcp/ia-tools-mcp.component.ts | 3 +- .../portal/src/app/guide/guides.components.ts | 3 +- .../home-colorful/home-colorful.component.ts | 3 +- .../portal/src/app/home/home.component.ts | 3 +- .../portal/src/app/icons/icons.component.ts | 3 +- .../theme-builder/theme-builder.component.ts | 4 +- .../tools-dynamic-form.component.ts | 5 +- .../tools-dynamic-view.component.ts | 4 +- projects/portal/src/main.ts | 4 +- projects/portal/src/test.ts | 4 +- projects/portal/src/tsconfig.app.json | 1 - projects/portal/src/tsconfig.spec.json | 1 - projects/portal/tsconfig.app.json | 5 +- projects/schematics/package.json | 6 +- .../src/build-component/build-component.ts | 45 +- .../schematics/src/build-component/schema.ts | 10 + .../schematics/src/standalone/standalone.ts | 6 +- .../src/utils/file-name-style-guide.ts | 141 ++++ projects/schematics/src/utils/index.ts | 1 + projects/schematics/tsconfig.json | 5 +- projects/storage/karma.conf.js | 3 +- projects/storage/package.json | 2 +- .../lib/drivers/lokijs/po-loki-driver.spec.ts | 2 +- .../lib/services/po-storage.service.spec.ts | 5 +- projects/storage/tsconfig.lib.json | 4 +- projects/storage/tsconfig.schematics.json | 5 +- projects/storage/tsconfig.spec.json | 5 +- projects/sync/README.md | 2 +- projects/sync/karma.conf.js | 3 +- projects/sync/package.json | 4 +- projects/sync/schematics/migrations.json | 5 + .../sync/schematics/ng-add/setup-project.ts | 2 +- .../sync/schematics/ng-update/v22/changes.ts | 12 + .../sync/schematics/ng-update/v22/index.ts | 16 + .../models/po-entity/po-entity.model.spec.ts | 2 +- .../po-event-sourcing.service.spec.ts | 4 +- .../po-http-client.service.spec.ts | 8 +- .../services/po-sync/po-sync.service.spec.ts | 768 ++++++------------ projects/sync/src/test.ts | 10 +- projects/sync/tsconfig.lib.json | 2 +- projects/sync/tsconfig.schematics.json | 5 +- projects/sync/tsconfig.spec.json | 5 +- projects/templates/karma.conf.js | 3 +- projects/templates/package.json | 14 +- ...ame@dasherize__.component.spec.ts.template | 7 +- ...ame@dasherize__.component.spec.ts.template | 7 +- ...ame@dasherize__.component.spec.ts.template | 7 +- ...ame@dasherize__.component.spec.ts.template | 7 +- ...ame@dasherize__.component.spec.ts.template | 7 +- ...ame@dasherize__.component.spec.ts.template | 7 +- ...ame@dasherize__.component.spec.ts.template | 7 +- ...ame@dasherize__.component.spec.ts.template | 7 +- ...ame@dasherize__.component.spec.ts.template | 7 +- ...ame@dasherize__.component.spec.ts.template | 7 +- ...ame@dasherize__.component.spec.ts.template | 7 +- ...ame@dasherize__.component.spec.ts.template | 7 +- ...ame@dasherize__.component.spec.ts.template | 7 +- ...ame@dasherize__.component.spec.ts.template | 7 +- ...ame@dasherize__.component.spec.ts.template | 7 +- ...ame@dasherize__.component.spec.ts.template | 7 +- ...ssword-recovery-error-message.component.ts | 3 +- .../po-modal-password-recovery.component.html | 213 ++--- ...-modal-password-recovery.component.spec.ts | 10 +- .../po-modal-password-recovery.component.ts | 3 +- ...po-modal-password-recovery.service.spec.ts | 4 +- ...modal-password-recovery-basic.component.ts | 3 +- ...-modal-password-recovery-labs.component.ts | 3 +- ...dal-password-recovery-request.component.ts | 3 +- .../po-page-background.component.ts | 13 +- ...ge-blocked-user-contacts.component.spec.ts | 7 +- ...po-page-blocked-user-reason.component.html | 2 +- .../po-page-blocked-user-reason.component.ts | 12 +- .../po-page-blocked-user.component.html | 2 +- .../po-page-blocked-user.component.spec.ts | 8 +- .../po-page-blocked-user.component.ts | 3 +- ...le-po-page-blocked-user-basic.component.ts | 3 +- ...locked-user-exceeded-attempts.component.ts | 3 +- ...blocked-user-expired-password.component.ts | 3 +- ...ple-po-page-blocked-user-labs.component.ts | 3 +- .../po-page-change-password.component.spec.ts | 13 +- .../po-page-change-password.component.ts | 4 +- .../po-page-change-password.service.spec.ts | 8 +- ...po-page-change-password-basic.component.ts | 3 +- ...o-page-change-password-create.component.ts | 3 +- ...-po-page-change-password-labs.component.ts | 3 +- ...o-page-change-password-modify.component.ts | 3 +- ...-page-change-password-request.component.ts | 3 +- ...age-dynamic-detail-actions.service.spec.ts | 4 +- .../po-page-dynamic-detail.component.spec.ts | 14 +- .../po-page-dynamic-detail.component.ts | 12 +- ...e-po-page-dynamic-detail-user.component.ts | 3 +- ...-page-dynamic-edit-actions.service.spec.ts | 4 +- .../po-page-dynamic-edit.component.spec.ts | 13 +- .../po-page-dynamic-edit.component.ts | 13 +- ...le-po-page-dynamic-edit-basic.component.ts | 3 +- ...ple-po-page-dynamic-edit-user.component.ts | 3 +- .../test/po-dynamic-form-stub-component.ts | 3 +- .../po-advanced-filter.component.spec.ts | 4 +- .../po-advanced-filter.component.ts | 3 +- ...page-dynamic-search-base.component.spec.ts | 3 +- .../po-page-dynamic-search.component.spec.ts | 15 +- .../po-page-dynamic-search.component.ts | 4 +- ...-po-page-dynamic-search-basic.component.ts | 3 +- ...namic-search-hiring-processes.component.ts | 3 +- ...page-dynamic-table-actions.service.spec.ts | 4 +- .../po-page-dynamic-table.component.spec.ts | 13 +- .../po-page-dynamic-table.component.ts | 12 +- ...e-po-page-dynamic-table-basic.component.ts | 3 +- ...e-dynamic-table-drag-and-drop.component.ts | 3 +- ...-po-page-dynamic-table-hotels.component.ts | 3 +- ...-po-page-dynamic-table-people.component.ts | 3 +- ...e-po-page-dynamic-table-users.component.ts | 3 +- ...-page-job-scheduler-base.component.spec.ts | 8 +- ...-job-scheduler-execution.component.spec.ts | 13 +- ...-page-job-scheduler-execution.component.ts | 4 +- ...-page-job-scheduler-lookup.service.spec.ts | 4 +- ...job-scheduler-parameters.component.spec.ts | 13 +- ...page-job-scheduler-parameters.component.ts | 11 +- ...-page-job-scheduler-summary.component.html | 2 +- ...ge-job-scheduler-summary.component.spec.ts | 13 +- ...po-page-job-scheduler-summary.component.ts | 3 +- .../po-page-job-scheduler.component.html | 2 +- .../po-page-job-scheduler.component.spec.ts | 13 +- .../po-page-job-scheduler.component.ts | 4 +- .../po-page-job-scheduler.service.spec.ts | 8 +- ...-scheduler-background-process.component.ts | 3 +- ...ge-job-scheduler-directives.component.html | 4 +- ...page-job-scheduler-directives.component.ts | 3 +- .../po-page-login-popover.component.html | 2 +- .../po-page-login-popover.component.spec.ts | 7 +- .../po-page-login-popover.component.ts | 3 +- .../po-page-login.component.spec.ts | 7 +- .../po-page-login/po-page-login.component.ts | 4 +- .../po-page-login.service.spec.ts | 8 +- ...-page-login-automatic-service.component.ts | 3 +- .../sample-po-page-login-basic.component.ts | 3 +- ...po-page-login-human-resources.component.ts | 3 +- .../sample-po-page-login-labs.component.ts | 3 +- .../po-page-customization.service.spec.ts | 8 +- .../po-page-dynamic.service.spec.ts | 14 +- projects/templates/src/lib/utils/util.spec.ts | 2 +- projects/templates/src/test.ts | 3 - projects/templates/tsconfig.lib.json | 4 +- projects/templates/tsconfig.schematics.json | 5 +- projects/templates/tsconfig.spec.json | 5 +- projects/ui/README.md | 2 +- projects/ui/karma.conf.js | 10 +- projects/ui/package.json | 20 +- projects/ui/schematics/migrations.json | 5 + ... __componentFileName__.__style__.template} | 0 ...te => __componentFileName__.html.template} | 0 .../__componentFileName__.spec.ts.template} | 10 +- ...late => __componentFileName__.ts.template} | 4 +- ...ame@dasherize__.component.spec.ts.template | 31 - ... __componentFileName__.__style__.template} | 0 ...te => __componentFileName__.html.template} | 0 .../__componentFileName__.spec.ts.template} | 8 +- ...late => __componentFileName__.ts.template} | 4 +- ...emplate => __moduleFileName__.ts.template} | 4 +- .../__routingFileName__.ts.template} | 2 +- .../ng-generate/po-page-default/index.spec.ts | 270 +++--- .../ng-generate/po-page-default/schema.json | 5 + ... __componentFileName__.__style__.template} | 0 ...te => __componentFileName__.html.template} | 0 .../__componentFileName__.spec.ts.template | 33 + ...late => __componentFileName__.ts.template} | 4 +- ... __componentFileName__.__style__.template} | 0 ...te => __componentFileName__.html.template} | 0 ...=> __componentFileName__.spec.ts.template} | 8 +- ...late => __componentFileName__.ts.template} | 4 +- ...emplate => __moduleFileName__.ts.template} | 4 +- ...mplate => __routingFileName__.ts.template} | 2 +- .../ng-generate/po-page-detail/index.spec.ts | 231 +++--- .../ng-generate/po-page-detail/schema.json | 5 + ... __componentFileName__.__style__.template} | 0 ...te => __componentFileName__.html.template} | 0 .../__componentFileName__.spec.ts.template | 33 + ...late => __componentFileName__.ts.template} | 4 +- ...ame@dasherize__.component.spec.ts.template | 31 - .../__routingFileName__.ts.template} | 2 +- ... __componentFileName__.__style__.template} | 0 ...te => __componentFileName__.html.template} | 0 .../__componentFileName__.spec.ts.template} | 8 +- ...late => __componentFileName__.ts.template} | 4 +- ...emplate => __moduleFileName__.ts.template} | 4 +- ...mplate => __routingFileName__.ts.template} | 2 +- .../ng-generate/po-page-edit/index.spec.ts | 231 +++--- .../ng-generate/po-page-edit/schema.json | 5 + ... __componentFileName__.__style__.template} | 0 ...te => __componentFileName__.html.template} | 0 ...=> __componentFileName__.spec.ts.template} | 9 +- ...late => __componentFileName__.ts.template} | 4 +- ...ame@dasherize__-routing.module.ts.template | 14 - .../__routingFileName__.ts.template | 14 + ... __componentFileName__.__style__.template} | 0 ...te => __componentFileName__.html.template} | 0 ...=> __componentFileName__.spec.ts.template} | 9 +- ...late => __componentFileName__.ts.template} | 4 +- ...emplate => __moduleFileName__.ts.template} | 4 +- ...ame@dasherize__-routing.module.ts.template | 14 - .../__routingFileName__.ts.template | 14 + .../ng-generate/po-page-list/index.spec.ts | 231 +++--- .../ng-generate/po-page-list/schema.json | 5 + ...ate => __appFileName__.__style__.template} | 0 ...template => __appFileName__.html.template} | 0 ...plate => __appFileName__.spec.ts.template} | 8 +- ...s.template => __appFileName__.ts.template} | 6 +- ...ate => __appFileName__.__style__.template} | 0 ...template => __appFileName__.html.template} | 0 .../files/__appFileName__.spec.ts.template | 35 + ...s.template => __appFileName__.ts.template} | 6 +- .../sidemenu/files/app.spec.ts.template | 33 - .../ng-generate/sidemenu/index.spec.ts | 81 +- .../schematics/ng-generate/sidemenu/index.ts | 20 +- .../ng-generate/sidemenu/schema.json | 5 + .../schematics/ng-generate/sidemenu/schema.ts | 10 + .../ui/schematics/ng-update/v22/changes.ts | 12 + projects/ui/schematics/ng-update/v22/index.ts | 62 ++ .../po-accordion-item-body.component.html | 2 +- .../po-accordion-item-body.component.spec.ts | 43 +- .../po-accordion-item-body.component.ts | 34 +- .../po-accordion-item.component.ts | 13 +- .../po-accordion-manager.component.spec.ts | 3 +- .../po-accordion-manager.component.ts | 4 +- .../po-accordion.component.spec.ts | 6 +- .../po-accordion/po-accordion.component.ts | 11 +- .../po-accordion/po-accordion.module.ts | 38 - .../sample-po-accordion-basic.component.ts | 3 +- .../sample-po-accordion-faq.component.ts | 3 +- .../sample-po-accordion-labs.component.ts | 3 +- .../sample-po-avatar-basic.component.ts | 3 +- ...ample-po-avatar-business-card.component.ts | 3 +- .../sample-po-avatar-labs.component.ts | 3 +- .../components/po-badge/po-badge.component.ts | 3 +- .../sample-po-badge-basic.component.ts | 3 +- .../sample-po-badge-labs.component.ts | 3 +- .../sample-po-badge-message.component.ts | 3 +- .../po-breadcrumb-favorite.component.spec.ts | 4 +- .../po-breadcrumb-favorite.component.ts | 3 +- .../po-breadcrumb-favorite.service.spec.ts | 8 +- .../po-breadcrumb.component.spec.ts | 46 +- .../po-breadcrumb/po-breadcrumb.component.ts | 4 +- .../sample-po-breadcrumb-basic.component.ts | 3 +- .../sample-po-breadcrumb-labs.component.ts | 3 +- .../po-button-group-base.component.ts | 3 +- .../po-button-group.component.ts | 3 +- ...le-po-button-group-attendance.component.ts | 3 +- .../sample-po-button-group-basic.component.ts | 3 +- .../sample-po-button-group-labs.component.ts | 3 +- .../sample-po-button-group-post.component.ts | 3 +- .../po-button/po-button-base.component.ts | 13 +- .../sample-po-button-basic.component.ts | 3 +- .../sample-po-button-labs.component.ts | 3 +- ...mple-po-button-social-network.component.ts | 3 +- .../sample-po-calendar-basic.component.ts | 3 +- .../sample-po-calendar-labs.component.ts | 3 +- ...ple-po-calendar-range-presets.component.ts | 3 +- ...mple-po-calendar-ticket-sales.component.ts | 3 +- .../po-chart-modal-table.component.spec.ts | 7 +- .../po-chart-modal-table.component.ts | 3 +- .../po-chart/po-chart.component.spec.ts | 8 +- .../components/po-chart/po-chart.component.ts | 4 +- .../sample-po-chart-basic.component.ts | 3 +- ...ample-po-chart-coffee-ranking.component.ts | 3 +- .../sample-po-chart-labs.component.ts | 3 +- .../sample-po-chart-stacked.component.ts | 3 +- .../sample-po-chart-summary.component.ts | 3 +- ...ple-po-chart-technology-skill.component.ts | 3 +- ...sample-po-chart-world-exports.component.ts | 3 +- .../po-container/po-container.component.ts | 3 +- .../sample-po-container-basic.component.ts | 3 +- ...sample-po-container-dashboard.component.ts | 3 +- .../sample-po-container-labs.component.ts | 3 +- .../po-context-menu-base.component.spec.ts | 3 +- .../sample-po-context-menu-basic.component.ts | 3 +- .../sample-po-context-menu-labs.component.ts | 3 +- .../sample-po-context-menu-user.component.ts | 3 +- .../po-context-tab-button.component.spec.ts | 2 +- .../po-context-tab-button.component.ts | 12 +- .../po-context-tabs.component.html | 76 +- .../po-context-tabs.component.ts | 3 +- .../sample-po-context-tabs-basic.component.ts | 3 +- ...-context-tabs-business-conf.component.html | 101 +-- ...po-context-tabs-business-conf.component.ts | 3 +- ...sample-po-context-tabs-labs.component.html | 25 +- .../sample-po-context-tabs-labs.component.ts | 3 +- ...sample-po-context-tabs-travel.component.ts | 3 +- .../po-disclaimer-remove.component.ts | 3 +- ...ple-po-disclaimer-group-basic.component.ts | 3 +- ...le-po-disclaimer-group-labs.component.html | 2 +- ...mple-po-disclaimer-group-labs.component.ts | 3 +- ...o-disclaimer-group-sw-planets.component.ts | 3 +- .../po-disclaimer/po-disclaimer.component.ts | 1 + .../samples/sample-po-disclaimer.component.ts | 3 +- .../sample-po-divider-basic.component.ts | 3 +- .../sample-po-divider-labs.component.ts | 3 +- ...sample-po-divider-user-detail.component.ts | 3 +- .../po-dropdown/po-dropdown.component.spec.ts | 8 +- .../sample-po-dropdown-basic.component.ts | 3 +- .../sample-po-dropdown-labs.component.ts | 3 +- ...le-po-dropdown-social-network.component.ts | 3 +- .../sample-po-dropdown-subitems.component.ts | 3 +- .../po-dynamic-container.component.ts | 3 +- .../po-dynamic-form-fields.component.spec.ts | 4 +- .../po-dynamic-form-fields.component.ts | 12 +- .../po-dynamic-form-load.service.spec.ts | 8 +- .../po-dynamic-form-operation.spec.ts | 4 +- ...po-dynamic-form-validation.service.spec.ts | 4 +- .../po-dynamic-form.component.spec.ts | 4 +- .../po-dynamic-form.component.ts | 3 +- .../sample-po-dynamic-form-basic.component.ts | 3 +- ...e-po-dynamic-form-container.component.html | 2 +- ...ple-po-dynamic-form-container.component.ts | 3 +- ...le-po-dynamic-form-register.component.html | 2 +- ...mple-po-dynamic-form-register.component.ts | 3 +- .../po-dynamic-view.component.ts | 3 +- .../sample-po-dynamic-view-basic.component.ts | 3 +- ...ple-po-dynamic-view-container.component.ts | 3 +- ...dynamic-view-employee-on-load.component.ts | 3 +- ...mple-po-dynamic-view-employee.component.ts | 3 +- .../services/po-dynamic-view.service.spec.ts | 8 +- .../po-checkbox-group-base.component.spec.ts | 3 +- ...ample-po-checkbox-group-basic.component.ts | 3 +- ...mple-po-checkbox-group-labs.component.html | 4 +- ...sample-po-checkbox-group-labs.component.ts | 3 +- ...heckbox-group-password-policy.component.ts | 3 +- .../po-checkbox-base.component.spec.ts | 3 +- .../po-checkbox/po-checkbox-base.component.ts | 4 +- ...e-po-checkbox-acceptance-term.component.ts | 3 +- .../sample-po-checkbox-basic.component.ts | 3 +- .../sample-po-checkbox-labs.component.ts | 3 +- .../po-field/po-clean/po-clean.component.ts | 3 +- .../samples/sample-po-clean-labs.component.ts | 3 +- .../po-combo/po-combo-filter.service.spec.ts | 8 +- .../po-combo/po-combo.component.spec.ts | 4 +- .../sample-po-combo-basic.component.ts | 3 +- ...po-combo-heroes-reactive-form.component.ts | 3 +- .../sample-po-combo-heroes.component.ts | 3 +- .../sample-po-combo-hotels.component.ts | 3 +- ...mple-po-combo-infinity-scroll.component.ts | 3 +- .../sample-po-combo-labs.component.html | 6 +- .../sample-po-combo-labs.component.ts | 3 +- .../sample-po-combo-scheduling.component.ts | 3 +- .../sample-po-combo-transfer.component.ts | 3 +- .../po-datepicker-range.component.html | 4 +- ...ple-po-datepicker-range-basic.component.ts | 3 +- ...le-po-datepicker-range-labs.component.html | 8 +- ...mple-po-datepicker-range-labs.component.ts | 3 +- ...e-po-datepicker-range-presets.component.ts | 3 +- ...nge-vacations-reactive-form.component.html | 12 +- ...range-vacations-reactive-form.component.ts | 3 +- ...-datepicker-range-vacations.component.html | 12 +- ...po-datepicker-range-vacations.component.ts | 3 +- ...epicker-airfare-reactive-form.component.ts | 3 +- .../sample-po-datepicker-airfare.component.ts | 3 +- .../sample-po-datepicker-basic.component.ts | 3 +- .../sample-po-datepicker-labs.component.html | 8 +- .../sample-po-datepicker-labs.component.ts | 3 +- ...mple-po-datepicker-month-year.component.ts | 3 +- .../sample-po-datepicker-year.component.ts | 3 +- .../po-datetimepicker.component.spec.ts | 49 +- .../po-datetimepicker.component.ts | 4 +- ...po-datetimepicker-12h-seconds.component.ts | 3 +- ...ample-po-datetimepicker-basic.component.ts | 3 +- ...mple-po-datetimepicker-labs.component.html | 8 +- ...sample-po-datetimepicker-labs.component.ts | 3 +- ...-po-datetimepicker-scheduling.component.ts | 3 +- .../sample-po-decimal-basic.component.ts | 3 +- ...mal-hourly-wage-reactive-form.component.ts | 3 +- ...sample-po-decimal-hourly-wage.component.ts | 3 +- .../sample-po-decimal-labs.component.html | 8 +- .../sample-po-decimal-labs.component.ts | 3 +- .../sample-po-email-basic.component.ts | 3 +- .../sample-po-email-labs.component.html | 10 +- .../sample-po-email-labs.component.ts | 3 +- .../sample-po-email-newsletter.component.ts | 3 +- .../po-input-generic/po-input-generic.spec.ts | 3 +- .../sample-po-input-basic.component.ts | 3 +- .../sample-po-input-labs.component.html | 30 +- .../sample-po-input-labs.component.ts | 3 +- ...sample-po-input-reactive-form.component.ts | 3 +- .../sample-po-login-basic.component.ts | 3 +- .../sample-po-login-confirm.component.ts | 3 +- .../sample-po-login-labs.component.html | 10 +- .../sample-po-login-labs.component.ts | 3 +- .../po-lookup-base.component.spec.ts | 7 +- .../po-lookup-modal-base.component.spec.ts | 2 +- .../po-lookup-modal.component.html | 4 +- .../po-lookup-modal.component.spec.ts | 21 +- .../po-lookup-modal.component.ts | 44 +- .../po-lookup/po-lookup.component.spec.ts | 13 +- .../sample-po-lookup-basic.component.ts | 3 +- ...-po-lookup-hero-reactive-form.component.ts | 3 +- .../sample-po-lookup-hero.component.ts | 3 +- .../sample-po-lookup-labs.component.html | 6 +- .../sample-po-lookup-labs.component.ts | 3 +- .../sample-po-lookup-multiple.component.ts | 3 +- .../sample-po-lookup-sw-films.component.ts | 3 +- .../services/po-lookup-filter.service.spec.ts | 8 +- .../services/po-lookup-modal.service.spec.ts | 11 +- .../po-multiselect-filter.service.spec.ts | 8 +- .../po-multiselect.component.spec.ts | 29 +- ...mple-po-multiselect-any-array.component.ts | 3 +- .../sample-po-multiselect-basic.component.ts | 3 +- .../sample-po-multiselect-heroes.component.ts | 3 +- .../sample-po-multiselect-labs.component.html | 6 +- .../sample-po-multiselect-labs.component.ts | 3 +- ...ample-po-multiselect-template.component.ts | 3 +- ...select-vacation-reactive-form.component.ts | 3 +- ...ample-po-multiselect-vacation.component.ts | 3 +- .../po-number-base.component.spec.ts | 3 +- .../sample-po-number-basic.component.ts | 3 +- .../sample-po-number-calculate.component.ts | 3 +- .../sample-po-number-labs.component.html | 10 +- .../sample-po-number-labs.component.ts | 3 +- .../sample-po-password-basic.component.ts | 3 +- .../sample-po-password-labs.component.html | 10 +- .../sample-po-password-labs.component.ts | 3 +- .../sample-po-password-reset.component.ts | 3 +- .../po-radio-group-base.component.spec.ts | 3 +- .../sample-po-radio-group-basic.component.ts | 3 +- .../sample-po-radio-group-labs.component.html | 6 +- .../sample-po-radio-group-labs.component.ts | 3 +- ...roup-translator-reactive-form.component.ts | 3 +- ...ple-po-radio-group-translator.component.ts | 3 +- .../po-rich-text-base.component.spec.ts | 3 +- .../po-rich-text-body.component.ts | 4 +- ...po-rich-text-image-modal.component.spec.ts | 4 +- .../po-rich-text-image-modal.component.ts | 12 +- .../po-rich-text-link-modal.component.ts | 4 +- .../po-rich-text-toolbar.component.spec.ts | 4 +- .../po-rich-text-toolbar.component.ts | 4 +- .../po-rich-text.component.spec.ts | 3 +- .../sample-po-rich-text-basic.component.ts | 3 +- .../sample-po-rich-text-labs.component.html | 6 +- .../sample-po-rich-text-labs.component.ts | 3 +- .../sample-po-rich-text-recipe.component.ts | 3 +- .../po-search-ai-base.component.ts | 4 - .../po-select/po-select.component.html | 4 +- .../sample-po-select-basic.component.ts | 3 +- .../sample-po-select-companies.component.ts | 3 +- ...-select-customer-registration.component.ts | 3 +- .../sample-po-select-labs.component.html | 6 +- .../sample-po-select-labs.component.ts | 3 +- .../sample-po-switch-basic.component.ts | 3 +- .../sample-po-switch-labs.component.html | 6 +- .../sample-po-switch-labs.component.ts | 3 +- ...po-switch-order-reactive-form.component.ts | 3 +- .../sample-po-switch-order.component.ts | 3 +- .../po-textarea-base.component.spec.ts | 3 +- .../po-textarea/po-textarea.component.spec.ts | 16 + .../sample-po-textarea-basic.component.ts | 3 +- ...-textarea-email-reactive-form.component.ts | 3 +- .../sample-po-textarea-email.component.ts | 3 +- .../sample-po-textarea-labs.component.html | 6 +- .../sample-po-textarea-labs.component.ts | 3 +- .../po-timepicker.component.spec.ts | 12 + .../sample-po-timepicker-basic.component.ts | 3 +- ...-po-timepicker-business-hours.component.ts | 3 +- .../sample-po-timepicker-labs.component.html | 10 +- .../sample-po-timepicker-labs.component.ts | 3 +- ...mple-po-timepicker-scheduling.component.ts | 3 +- .../po-upload-base.component.spec.ts | 3 +- .../po-upload/po-upload-base.service.spec.ts | 8 +- .../po-upload-drag-drop.directive.spec.ts | 3 +- ...po-upload-file-restrictions.component.html | 10 +- .../po-upload/po-upload.component.html | 10 +- .../po-upload/po-upload.component.spec.ts | 10 +- .../sample-po-upload-basic.component.ts | 3 +- .../sample-po-upload-download.component.ts | 3 +- .../sample-po-upload-labs.component.html | 4 +- .../sample-po-upload-labs.component.ts | 3 +- .../sample-po-upload-preview.component.ts | 3 +- ...le-po-upload-resume-drag-drop.component.ts | 3 +- .../sample-po-upload-resume.component.ts | 3 +- .../sample-po-upload-rs.component.ts | 3 +- .../sample-po-url-basic.component.ts | 3 +- .../sample-po-url-labs.component.html | 10 +- .../sample-po-url-labs.component.ts | 3 +- .../sample-po-url-shortener.component.ts | 3 +- .../sample-po-filter-chip-basic.component.ts | 3 +- ...le-po-filter-chip-filter-list.component.ts | 3 +- .../sample-po-filter-chip-labs.component.ts | 3 +- .../po-gauge/po-gauge-base.component.spec.ts | 5 +- .../components/po-gauge/po-gauge.component.ts | 3 +- .../sample-po-gauge-basic.component.ts | 3 +- .../sample-po-gauge-labs.component.ts | 3 +- .../sample-po-gauge-summary.component.ts | 3 +- .../po-grid-cell-action.component.ts | 3 +- .../po-grid-cell/po-grid-cell.component.ts | 4 +- .../po-grid-head/po-grid-head.component.ts | 3 +- .../components/po-grid/po-grid.component.ts | 4 +- .../sample-po-grid-basic.component.ts | 3 +- .../po-header-base.component.spec.ts | 3 +- .../po-header-brand.component.html | 9 +- .../po-header-brand.component.ts | 4 +- .../po-header-customer.component.html | 6 +- .../po-header-customer.component.ts | 3 +- .../po-header-menu-item.component.html | 2 +- .../po-header-menu-item.component.ts | 4 +- .../po-header-tools.component.html | 12 +- .../po-header-tools.component.ts | 4 +- .../po-header/po-header.component.html | 2 +- .../po-header/po-header.component.spec.ts | 62 +- .../po-header/po-header.component.ts | 4 +- .../sample-po-header-apps.component.ts | 11 +- .../sample-po-header-basic.component.ts | 3 +- .../sample-po-header-labs.component.ts | 3 +- .../po-helper/po-helper-base.component.ts | 3 +- .../po-helper/po-helper.component.html | 4 +- .../po-helper/po-helper.component.ts | 6 +- .../sample-po-helper-basic.component.ts | 3 +- .../sample-po-helper-labs.component.ts | 3 +- ...e-po-helper-sales-performance.component.ts | 3 +- .../components/po-image/po-image.component.ts | 3 +- .../sample-po-image-basic.component.ts | 3 +- .../sample-po-image-labs.component.ts | 3 +- .../sample-po-image-travel.component.ts | 3 +- .../sample-po-info-basic.component.ts | 3 +- .../sample-po-info-labs.component.ts | 3 +- .../components/po-label/po-label.component.ts | 3 +- .../components/po-link/po-link.component.ts | 3 +- .../sample-po-link-basic.component.ts | 3 +- .../sample-po-link-heroes.component.ts | 3 +- .../sample-po-link-labs.component.ts | 3 +- .../po-list-view.component.spec.ts | 4 +- .../po-list-view/po-list-view.component.ts | 4 +- .../sample-po-list-view-basic.component.ts | 3 +- ...po-list-view-hiring-processes.component.ts | 3 +- .../sample-po-list-view-labs.component.ts | 3 +- .../po-item-list/po-item-list.component.html | 4 +- .../po-item-list.component.spec.ts | 6 +- .../po-item-list/po-item-list.component.ts | 11 +- .../po-listbox/po-listbox.component.ts | 4 +- .../po-loading-icon.component.spec.ts | 3 +- .../po-loading-icon.component.ts | 4 +- .../po-loading-overlay.component.ts | 3 +- ...mple-po-loading-overlay-basic.component.ts | 3 +- ...ading-overlay-connection-test.component.ts | 3 +- ...ple-po-loading-overlay-labs.component.html | 6 +- ...ample-po-loading-overlay-labs.component.ts | 3 +- .../po-loading/po-loading.component.ts | 3 +- .../components/po-logo/po-logo.component.ts | 3 +- .../po-menu-panel-item.component.spec.ts | 7 +- .../po-menu-panel-item.component.ts | 3 +- .../po-menu-panel.component.spec.ts | 12 +- .../po-menu-panel/po-menu-panel.component.ts | 3 +- .../sample-po-menu-panel-basic.component.ts | 3 +- ...sample-po-menu-panel-customer.component.ts | 3 +- .../sample-po-menu-panel-labs.component.ts | 3 +- .../po-menu/po-menu-base.component.spec.ts | 3 +- .../po-menu-filter.component.ts | 12 +- .../po-menu-item.component.spec.ts | 12 +- .../po-menu-item/po-menu-item.component.ts | 13 +- .../components/po-menu/po-menu.component.html | 4 +- .../po-menu/po-menu.component.spec.ts | 15 +- .../components/po-menu/po-menu.component.ts | 4 +- .../sample-po-menu-basic.component.ts | 3 +- ...ample-po-menu-human-resources.component.ts | 3 +- .../sample-po-menu-labs.component.ts | 3 +- .../po-menu/services/po-menu.service.spec.ts | 4 +- .../po-modal-footer.component.ts | 3 +- .../po-modal/po-modal.component.spec.ts | 3 +- .../components/po-modal/po-modal.component.ts | 3 +- .../sample-po-modal-basic.component.ts | 3 +- .../sample-po-modal-fruits-salad.component.ts | 3 +- .../sample-po-modal-labs.component.ts | 3 +- .../po-navbar-action-popup.component.ts | 3 +- .../po-navbar-action.component.spec.ts | 2 +- .../po-navbar-action.component.ts | 3 +- .../po-navbar-actions.component.ts | 3 +- ...bar-item-navigation-icon.component.spec.ts | 2 +- ...o-navbar-item-navigation-icon.component.ts | 3 +- ...o-navbar-item-navigation.component.spec.ts | 2 +- .../po-navbar-item-navigation.component.ts | 3 +- .../po-navbar-item.component.ts | 3 +- .../po-navbar-items.component.ts | 4 +- .../po-navbar-logo.component.ts | 3 +- .../po-navbar/po-navbar.component.spec.ts | 39 +- .../po-navbar/po-navbar.component.ts | 26 +- .../components/po-navbar/po-navbar.module.ts | 38 - .../po-overlay/po-overlay.component.ts | 3 +- .../po-page-content.component.spec.ts | 48 ++ .../po-page-content.component.ts | 6 +- .../po-page-default.component.spec.ts | 21 +- .../po-page-default.component.ts | 12 +- .../sample-po-page-default-basic.component.ts | 3 +- ...ple-po-page-default-dashboard.component.ts | 3 +- .../sample-po-page-default-labs.component.ts | 3 +- .../po-page-detail.component.spec.ts | 3 +- .../po-page-detail.component.ts | 3 +- .../sample-po-page-detail-basic.component.ts | 3 +- .../sample-po-page-detail-labs.component.ts | 3 +- .../sample-po-page-detail-user.component.ts | 3 +- .../po-page-edit.component.spec.ts | 3 +- .../po-page-edit/po-page-edit.component.ts | 3 +- .../sample-po-page-edit-basic.component.ts | 3 +- .../sample-po-page-edit-labs.component.ts | 3 +- .../sample-po-page-edit-user.component.ts | 3 +- .../po-page-header.component.spec.ts | 12 +- .../po-page-header.component.ts | 3 +- .../po-page-list/po-page-list.component.html | 6 +- .../po-page-list.component.spec.ts | 16 +- .../po-page-list/po-page-list.component.ts | 4 +- .../sample-po-page-list-basic.component.ts | 3 +- ...po-page-list-hiring-processes.component.ts | 3 +- .../sample-po-page-list-labs.component.ts | 3 +- .../po-page-slide-base.component.ts | 39 - .../po-page-slide-footer.component.ts | 3 +- .../po-page-slide.component.html | 9 +- .../po-page-slide.component.spec.ts | 148 +++- .../po-page-slide/po-page-slide.component.ts | 123 ++- .../sample-po-page-slide-basic.component.ts | 3 +- ...e-po-page-slide-configuration.component.ts | 3 +- .../sample-po-page-slide-labs.component.ts | 3 +- .../components/po-page/po-page.component.ts | 3 +- .../po-popover/po-popover-base.component.ts | 3 +- .../po-popover/po-popover.component.spec.ts | 14 +- .../po-popover/po-popover.component.ts | 4 +- .../sample-po-popover-basic.component.ts | 3 +- ...sample-po-popover-credit-card.component.ts | 3 +- .../sample-po-popover-labs.component.ts | 3 +- .../po-popup/po-popup.component.spec.ts | 8 +- .../components/po-popup/po-popup.component.ts | 12 +- .../sample-po-popup-basic.component.ts | 11 +- .../sample-po-popup-email.component.ts | 3 +- .../sample-po-popup-labs.component.ts | 3 +- .../po-progress-base.component.spec.ts | 3 +- .../sample-po-progress-basic.component.ts | 3 +- .../sample-po-progress-circle.component.ts | 3 +- .../sample-po-progress-labs.component.ts | 3 +- ...ample-po-progress-publication.component.ts | 3 +- .../po-search/po-search.component.spec.ts | 23 +- .../components/po-search/po-search.module.ts | 2 +- .../sample-po-search-basic.component.ts | 3 +- .../sample-po-search-execute.component.ts | 3 +- ...ample-po-search-fields-locate.component.ts | 3 +- ...ample-po-search-filter-select.component.ts | 3 +- .../sample-po-search-find-people.component.ts | 3 +- .../sample-po-search-labs.component.ts | 3 +- .../sample-po-search-listbox.component.ts | 3 +- .../po-skeleton-base.component.spec.ts | 3 +- .../sample-po-skeleton-article.component.ts | 3 +- .../sample-po-skeleton-basic.component.ts | 3 +- ...ample-po-skeleton-credit-card.component.ts | 3 +- .../sample-po-skeleton-labs.component.ts | 3 +- ...ample-po-skeleton-social-post.component.ts | 3 +- ...mple-po-skeleton-user-profile.component.ts | 3 +- ...ample-po-skeleton-widget-card.component.ts | 3 +- .../po-slide-circles.component.ts | 3 +- .../po-slide-control.component.ts | 3 +- .../po-slide-item.component.spec.ts | 7 +- .../po-slide-item/po-slide-item.component.ts | 3 +- .../po-slide/po-slide.component.spec.ts | 57 +- .../components/po-slide/po-slide.component.ts | 30 +- .../components/po-slide/po-slide.module.ts | 37 - .../sample-po-slide-basic.component.ts | 3 +- ...le-po-slide-external-controls.component.ts | 3 +- .../sample-po-slide-labs.component.ts | 3 +- .../sample-po-slide-landscapes.component.ts | 3 +- ...mple-po-slide-useful-articles.component.ts | 3 +- .../po-stepper/po-step/po-step.component.ts | 11 +- .../po-stepper-circle.component.ts | 3 +- .../po-stepper-label.component.ts | 4 +- .../po-stepper-step.component.ts | 12 +- .../po-stepper/po-stepper.component.html | 62 +- .../po-stepper/po-stepper.component.ts | 15 +- .../sample-po-stepper-active.component.ts | 12 +- .../sample-po-stepper-basic.component.ts | 3 +- .../sample-po-stepper-labs.component.ts | 3 +- .../sample-po-stepper-sales.component.ts | 3 +- .../sample-po-stepper-steps.component.ts | 3 +- .../po-table/po-table-base.component.spec.ts | 4 +- .../po-table-column-frozen.directive.spec.ts | 3 +- .../po-table-column-icon.component.html | 21 +- .../po-table-column-label.component.html | 10 +- .../po-table-column-link.component.spec.ts | 6 +- .../po-table-column-manager.component.ts | 4 +- .../po-table-detail.component.ts | 3 +- .../po-table-list-manager.component.ts | 13 +- .../po-table-show-subtitle.component.ts | 3 +- .../po-table-subtitle-circle.component.html | 5 +- .../po-table-subtitle-footer.component.ts | 12 +- .../po-table/po-table.component.html | 40 +- .../po-table/po-table.component.spec.ts | 49 +- .../components/po-table/po-table.component.ts | 6 +- .../sample-po-table-airfare.component.html | 6 +- .../sample-po-table-airfare.component.ts | 3 +- .../sample-po-table-basic.component.ts | 3 +- .../sample-po-table-components.component.ts | 3 +- .../sample-po-table-draggable.component.ts | 3 +- .../sample-po-table-heroes.component.ts | 3 +- .../sample-po-table-labs.component.ts | 3 +- .../sample-po-table-transport.component.ts | 3 +- .../sample-po-table-with-api.component.ts | 3 +- .../services/po-table.service.spec.ts | 4 +- .../po-tab-button/po-tab-button.component.ts | 4 +- .../po-tab-dropdown.component.spec.ts | 7 +- .../po-tab-dropdown.component.ts | 4 +- .../po-tab/po-tab.base.component.spec.ts | 3 +- .../po-tabs/po-tab/po-tab.component.ts | 11 +- .../components/po-tabs/po-tabs.component.ts | 4 +- .../sample-po-tabs-basic.component.ts | 3 +- .../sample-po-tabs-business-conf.component.ts | 3 +- .../sample-po-tabs-labs.component.ts | 3 +- .../sample-po-tabs-travel.component.ts | 3 +- .../po-tag/po-tag.component.spec.ts | 3 +- .../sample-po-tag-bank-account.component.ts | 3 +- .../sample-po-tag-basic.component.ts | 3 +- ...ple-po-tag-caption-tag-colors.component.ts | 3 +- .../sample-po-tag-labs.component.ts | 3 +- .../sample-po-timer-alarm.component.ts | 3 +- .../sample-po-timer-basic.component.ts | 3 +- .../sample-po-timer-labs.component.ts | 3 +- .../sample-po-timer-shift.component.ts | 3 +- .../po-toaster/po-toaster.component.ts | 4 +- .../sample-po-toaster-basic.component.ts | 3 +- .../sample-po-toaster-labs.component.ts | 3 +- .../po-toolbar-actions.component.ts | 3 +- .../po-toolbar-notification.component.spec.ts | 6 +- .../po-toolbar-notification.component.ts | 12 +- .../po-toolbar-profile.component.spec.ts | 6 +- .../po-toolbar-profile.component.ts | 3 +- .../po-toolbar/po-toolbar.component.spec.ts | 6 +- .../po-toolbar/po-toolbar.component.ts | 3 +- .../sample-po-toolbar-basic.component.ts | 3 +- .../sample-po-toolbar-labs.component.ts | 3 +- .../sample-po-toolbar-logged.component.ts | 3 +- .../po-tree-view/po-tree-view.module.ts | 1 + .../sample-po-tree-view-basic.component.ts | 3 +- ...po-tree-view-folder-structure.component.ts | 3 +- .../sample-po-tree-view-labs.component.ts | 3 +- ...mple-po-tree-view-supermarket.component.ts | 3 +- .../po-widget-base.component.spec.ts | 3 +- .../po-widget/po-widget.component.ts | 4 +- .../sample-po-widget-basic.component.ts | 3 +- .../sample-po-widget-card.component.ts | 3 +- ...e-po-widget-finance-dashboard.component.ts | 3 +- .../sample-po-widget-labs.component.ts | 3 +- .../input-boolean.decorator.spec.ts | 3 +- .../input-required.decorator.spec.ts | 5 +- .../po-drag-base.directive.spec.ts | 22 +- .../po-drag-drop/po-drag.directive.spec.ts | 42 +- .../po-drop-list-base.directive.spec.ts | 38 +- .../po-drop-list.directive.spec.ts | 32 +- .../po-tooltip/po-tooltip.directive.spec.ts | 3 +- .../sample-po-tooltip-basic.component.ts | 3 +- .../sample-po-tooltip-labs.component.ts | 3 +- .../sample-po-tooltip-new-user.component.ts | 3 +- .../po-http-interceptor-base.service.spec.ts | 5 +- .../po-http-interceptor-base.service.ts | 11 +- .../po-http-interceptor-detail.component.ts | 3 +- ...mple-po-http-interceptor-labs.component.ts | 3 +- ...o-http-request-interceptor.service.spec.ts | 5 +- .../po-http-request-interceptor.service.ts | 1 - ...http-request-interceptor-labs.component.ts | 3 +- .../po-component-injector.service.spec.ts | 3 +- .../po-component-injector.service.ts | 27 +- .../services/po-dialog/po-dialog.component.ts | 13 +- .../po-dialog/po-dialog.service.spec.ts | 3 +- .../sample-po-dialog-basic.component.ts | 3 +- ...-po-dialog-cancel-credit-card.component.ts | 3 +- .../sample-po-dialog-labs.component.ts | 3 +- .../po-i18n/po-i18n-base.service.spec.ts | 6 +- .../sample-po-i18n-pipe-labs.component.ts | 3 +- .../samples/sample-po-i18n-pipe.component.ts | 3 +- .../sample-po-notification-basic.component.ts | 3 +- .../sample-po-notification-labs.component.ts | 3 +- .../sample-po-notification-sales.component.ts | 3 +- .../sample-po-theme-labs.component.ts | 3 +- .../po-user-guide.service.spec.ts | 4 +- .../sample-po-user-guide-basic.component.ts | 3 +- .../sample-po-user-guide-labs.component.ts | 3 +- ...mple-po-user-guide-onboarding.component.ts | 3 +- projects/ui/tsconfig.dts.json | 1 + projects/ui/tsconfig.lib.json | 5 +- projects/ui/tsconfig.schematics-spec.json | 10 + projects/ui/tsconfig.schematics.json | 11 +- projects/ui/tsconfig.spec.json | 5 +- scripts/generate-dist-trees.js | 67 ++ scripts/schematics.js | 34 + tsconfig.json | 3 +- 819 files changed, 4858 insertions(+), 3102 deletions(-) create mode 100644 po-ui-style-22.0.0-next.0.tgz create mode 100644 projects/schematics/src/utils/file-name-style-guide.ts create mode 100644 projects/sync/schematics/ng-update/v22/changes.ts create mode 100644 projects/sync/schematics/ng-update/v22/index.ts rename projects/ui/schematics/ng-generate/po-page-default/files-standalone/__path__/__name@dasherize__/{__name@dasherize__.component.__style__.template => __componentFileName__.__style__.template} (100%) rename projects/ui/schematics/ng-generate/po-page-default/files-standalone/__path__/__name@dasherize__/{__name@dasherize__.component.html.template => __componentFileName__.html.template} (100%) rename projects/ui/schematics/ng-generate/{po-page-detail/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template => po-page-default/files-standalone/__path__/__name@dasherize__/__componentFileName__.spec.ts.template} (71%) rename projects/ui/schematics/ng-generate/po-page-default/files-standalone/__path__/__name@dasherize__/{__name@dasherize__.component.ts.template => __componentFileName__.ts.template} (77%) delete mode 100644 projects/ui/schematics/ng-generate/po-page-default/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template rename projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/{__name@dasherize__.component.__style__.template => __componentFileName__.__style__.template} (100%) rename projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/{__name@dasherize__.component.html.template => __componentFileName__.html.template} (100%) rename projects/ui/schematics/ng-generate/{po-page-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template => po-page-default/files/__path__/__name@dasherize__/__componentFileName__.spec.ts.template} (74%) rename projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/{__name@dasherize__.component.ts.template => __componentFileName__.ts.template} (72%) rename projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/{__name@dasherize__.module.ts.template => __moduleFileName__.ts.template} (64%) rename projects/ui/schematics/ng-generate/{po-page-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template => po-page-default/files/__path__/__name@dasherize__/__routingFileName__.ts.template} (79%) rename projects/ui/schematics/ng-generate/po-page-detail/files-standalone/__path__/__name@dasherize__/{__name@dasherize__.component.__style__.template => __componentFileName__.__style__.template} (100%) rename projects/ui/schematics/ng-generate/po-page-detail/files-standalone/__path__/__name@dasherize__/{__name@dasherize__.component.html.template => __componentFileName__.html.template} (100%) create mode 100644 projects/ui/schematics/ng-generate/po-page-detail/files-standalone/__path__/__name@dasherize__/__componentFileName__.spec.ts.template rename projects/ui/schematics/ng-generate/po-page-detail/files-standalone/__path__/__name@dasherize__/{__name@dasherize__.component.ts.template => __componentFileName__.ts.template} (79%) rename projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/{__name@dasherize__.component.__style__.template => __componentFileName__.__style__.template} (100%) rename projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/{__name@dasherize__.component.html.template => __componentFileName__.html.template} (100%) rename projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/{__name@dasherize__.component.spec.ts.template => __componentFileName__.spec.ts.template} (74%) rename projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/{__name@dasherize__.component.ts.template => __componentFileName__.ts.template} (73%) rename projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/{__name@dasherize__.module.ts.template => __moduleFileName__.ts.template} (64%) rename projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/{__name@dasherize__-routing.module.ts.template => __routingFileName__.ts.template} (79%) rename projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/{__name@dasherize__.component.__style__.template => __componentFileName__.__style__.template} (100%) rename projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/{__name@dasherize__.component.html.template => __componentFileName__.html.template} (100%) create mode 100644 projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__componentFileName__.spec.ts.template rename projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/{__name@dasherize__.component.ts.template => __componentFileName__.ts.template} (79%) delete mode 100644 projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template rename projects/ui/schematics/ng-generate/{po-page-default/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template => po-page-edit/files-standalone/__path__/__name@dasherize__/__routingFileName__.ts.template} (79%) rename projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/{__name@dasherize__.component.__style__.template => __componentFileName__.__style__.template} (100%) rename projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/{__name@dasherize__.component.html.template => __componentFileName__.html.template} (100%) rename projects/ui/schematics/ng-generate/{po-page-default/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template => po-page-edit/files/__path__/__name@dasherize__/__componentFileName__.spec.ts.template} (74%) rename projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/{__name@dasherize__.component.ts.template => __componentFileName__.ts.template} (74%) rename projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/{__name@dasherize__.module.ts.template => __moduleFileName__.ts.template} (64%) rename projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/{__name@dasherize__-routing.module.ts.template => __routingFileName__.ts.template} (79%) rename projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/{__name@dasherize__.component.__style__.template => __componentFileName__.__style__.template} (100%) rename projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/{__name@dasherize__.component.html.template => __componentFileName__.html.template} (100%) rename projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/{__name@dasherize__.component.spec.ts.template => __componentFileName__.spec.ts.template} (77%) rename projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/{__name@dasherize__.component.ts.template => __componentFileName__.ts.template} (88%) delete mode 100644 projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template create mode 100644 projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__routingFileName__.ts.template rename projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/{__name@dasherize__.component.__style__.template => __componentFileName__.__style__.template} (100%) rename projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/{__name@dasherize__.component.html.template => __componentFileName__.html.template} (100%) rename projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/{__name@dasherize__.component.spec.ts.template => __componentFileName__.spec.ts.template} (78%) rename projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/{__name@dasherize__.component.ts.template => __componentFileName__.ts.template} (86%) rename projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/{__name@dasherize__.module.ts.template => __moduleFileName__.ts.template} (64%) delete mode 100644 projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template create mode 100644 projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__routingFileName__.ts.template rename projects/ui/schematics/ng-generate/sidemenu/files-standalone/{app.__style__.template => __appFileName__.__style__.template} (100%) rename projects/ui/schematics/ng-generate/sidemenu/files-standalone/{app.html.template => __appFileName__.html.template} (100%) rename projects/ui/schematics/ng-generate/sidemenu/files-standalone/{app.spec.ts.template => __appFileName__.spec.ts.template} (61%) rename projects/ui/schematics/ng-generate/sidemenu/files-standalone/{app.ts.template => __appFileName__.ts.template} (79%) rename projects/ui/schematics/ng-generate/sidemenu/files/{app.__style__.template => __appFileName__.__style__.template} (100%) rename projects/ui/schematics/ng-generate/sidemenu/files/{app.html.template => __appFileName__.html.template} (100%) create mode 100644 projects/ui/schematics/ng-generate/sidemenu/files/__appFileName__.spec.ts.template rename projects/ui/schematics/ng-generate/sidemenu/files/{app.ts.template => __appFileName__.ts.template} (71%) delete mode 100644 projects/ui/schematics/ng-generate/sidemenu/files/app.spec.ts.template create mode 100644 projects/ui/schematics/ng-update/v22/changes.ts create mode 100644 projects/ui/schematics/ng-update/v22/index.ts create mode 100644 projects/ui/tsconfig.schematics-spec.json create mode 100644 scripts/generate-dist-trees.js diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 556f001e5f..c45949889b 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -10,7 +10,7 @@ assignees: '' #### Reprodução -Utilize StackBlitz (https://stackblitz.com/edit/po-ui) para reproduzir o bug relatado na issue. +Utilize StackBlitz (https://stackblitz.com/edit/poui-module) para reproduzir o bug relatado na issue. Passos para reproduzir: diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e33fb6c51b..eacb97c1cc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -94,6 +94,7 @@ jobs: node-version: 24 - run: npm i + - run: npm run build:schematics - run: npm run build:ui:lite - run: npm run test:templates - run: npm run test:templates:schematics @@ -112,6 +113,7 @@ jobs: node-version: 24 - run: npm i + - run: npm run build:schematics - run: npm run test:code-editor - run: npm run test:code-editor:schematics @@ -178,6 +180,7 @@ jobs: node-version: 24 - run: npm i + - run: npm run build:schematics - run: npm run build:storage:lite - run: npm run test:sync - run: npm run test:sync:schematics diff --git a/.github/workflows/publish_po_angular_ci.yml b/.github/workflows/publish_po_angular_ci.yml index cbd8fa6446..a04ae8a8a7 100644 --- a/.github/workflows/publish_po_angular_ci.yml +++ b/.github/workflows/publish_po_angular_ci.yml @@ -58,7 +58,7 @@ jobs: ;; next) echo "npm_tag=next" >> "$GITHUB_OUTPUT" - echo "required_branch=refs/heads/master" >> "$GITHUB_OUTPUT" + echo "required_branch=refs/heads/22.x.x" >> "$GITHUB_OUTPUT" echo "with_mcp=true" >> "$GITHUB_OUTPUT" ;; latest) diff --git a/README.md b/README.md index 836d8f29c2..dcfac29bf9 100644 --- a/README.md +++ b/README.md @@ -20,16 +20,16 @@ Biblioteca de componentes de UI para Angular. ### Pré-requisitos -Para começar a utilizar o **PO UI** é pré-requisito ter o `Node.js` instalado (versão 20.11.x ou acima) e o seu gerenciador de pacote favorito na versão mais atual. Caso você ainda não tenha instalado o pacote `@angular/cli`, instale-o via `npm` ou `yarn`. +Para começar a utilizar o **PO UI** é pré-requisito ter o `Node.js` instalado (versão 24.15.0 e acima) e o seu gerenciador de pacote favorito na versão mais atual. Caso você ainda não tenha instalado o pacote `@angular/cli`, instale-o via `npm` ou `yarn`. Instalando com npm: ``` -npm i -g @angular/cli@21 +npm i -g @angular/cli@22 ``` Caso prefira instalar com o yarn: ``` -yarn global add @angular/cli@21 +yarn global add @angular/cli@22 ``` ### Passo 1 - Crie o seu primeiro projeto @@ -53,26 +53,25 @@ Veja abaixo a lista de dependências e as versões compatíveis, elas devem ser ```json "dependencies": { - "@angular/animations": "~21.2.17", - "@angular/common": "~21.2.17", - "@angular/compiler": "~21.2.17", - "@angular/core": "~21.2.17", - "@angular/forms": "~21.2.17", - "@angular/platform-browser": "~21.2.17", - "@angular/platform-browser-dynamic": "~21.2.17", - "@angular/router": "~21.2.17", + "@angular/common": "~22.0.1", + "@angular/compiler": "~22.0.1", + "@angular/core": "~22.0.1", + "@angular/forms": "~22.0.1", + "@angular/platform-browser": "~22.0.1", + "@angular/router": "~22.0.1", "rxjs": "~7.8.1", "tslib": "^2.6.2", "zone.js": "~0.15.0" ... }, "devDependencies": { - "@angular-devkit/build-angular": "~21.2.17", - "@angular-devkit/schematics": "~21.2.17", - "@angular/cli": "~21.2.17", - "@angular/compiler-cli": "~21.2.17", + "@angular-devkit/build-angular": "~22.0.1", + "@angular-devkit/schematics": "~22.0.1", + "@angular/build": "~22.2.1", + "@angular/cli": "~22.0.1", + "@angular/compiler-cli": "~22.0.1", ... - "typescript": "~5.9.3" + "typescript": "~6.0.3" } ``` @@ -97,7 +96,7 @@ Utilizando o comando `ng add` do [Angular CLI](https://cli.angular.io/), vamos a Execute o comando abaixo na pasta raiz do seu projeto: ``` -ng add @po-ui/ng-components +ng add @po-ui/ng-components@next ``` > Ao executar o comando acima, será perguntado se deseja incluir uma estrutura inicial em seu projeto com menu lateral, página e toolbar, utilizando componentes do **Po**, **caso desejar, apenas informe: `Y`**. @@ -138,7 +137,7 @@ Agora é só abrir seu **editor / IDE** favorito e começar a trabalhar no seu p Caso você queira utilizar nossos componentes de templates, como o **[po-page-login](https://po-ui.io/documentation/po-page-login)**, **[po-modal-password-recovery](https://po-ui.io/documentation/po-modal-password-recovery)**, **[po-page-blocked-user](https://po-ui.io/documentation/po-page-blocked-user)**, **[po-page-dynamic-table](https://po-ui.io/documentation/po-page-dynamic-table)** entre outros, basta adicionar o pacote `@po-ui/ng-templates` executando o comando abaixo: ``` -ng add @po-ui/ng-templates +ng add @po-ui/ng-templates@next ``` > Ao executar este comando, será instalado o pacote `@po-ui/ng-templates` e configurado o `PoTemplatesModules` no `app.module`. diff --git a/angular.json b/angular.json index fdaee13f89..f532db6c94 100644 --- a/angular.json +++ b/angular.json @@ -10,7 +10,7 @@ "prefix": "po", "architect": { "build": { - "builder": "@angular-devkit/build-angular:ng-packagr", + "builder": "@angular/build:ng-packagr", "options": { "tsConfig": "projects/ui/tsconfig.lib.json", "project": "projects/ui/ng-package.json" @@ -22,11 +22,12 @@ } }, "test": { - "builder": "@angular-devkit/build-angular:karma", + "builder": "@angular/build:karma", "options": { "main": "projects/ui/src/test.ts", "tsConfig": "projects/ui/tsconfig.spec.json", - "karmaConfig": "projects/ui/karma.conf.js" + "karmaConfig": "projects/ui/karma.conf.js", + "codeCoverageExclude": ["projects/ui/src/lib/components/po-grid/**"] } }, "lint": { @@ -45,7 +46,7 @@ "prefix": "app", "architect": { "build": { - "builder": "@angular-devkit/build-angular:application", + "builder": "@angular/build:application", "options": { "outputPath": { "base": "dist/app" @@ -112,7 +113,7 @@ } }, "serve": { - "builder": "@angular-devkit/build-angular:dev-server", + "builder": "@angular/build:dev-server", "options": { "open": true, "host": "0.0.0.0", @@ -138,7 +139,7 @@ "sourceRoot": "projects/storage/src", "architect": { "build": { - "builder": "@angular-devkit/build-angular:ng-packagr", + "builder": "@angular/build:ng-packagr", "options": { "tsConfig": "projects/storage/tsconfig.lib.json", "project": "projects/storage/ng-package.json" @@ -150,7 +151,7 @@ } }, "test": { - "builder": "@angular-devkit/build-angular:karma", + "builder": "@angular/build:karma", "options": { "main": "projects/storage/src/test.ts", "tsConfig": "projects/storage/tsconfig.spec.json", @@ -171,7 +172,7 @@ "sourceRoot": "projects/sync/src", "architect": { "build": { - "builder": "@angular-devkit/build-angular:ng-packagr", + "builder": "@angular/build:ng-packagr", "options": { "tsConfig": "projects/sync/tsconfig.lib.json", "project": "projects/sync/ng-package.json" @@ -183,8 +184,9 @@ } }, "test": { - "builder": "@angular-devkit/build-angular:karma", + "builder": "@angular/build:karma", "options": { + "polyfills": ["zone.js", "zone.js/testing"], "main": "projects/sync/src/test.ts", "tsConfig": "projects/sync/tsconfig.spec.json", "karmaConfig": "projects/sync/karma.conf.js" @@ -205,7 +207,7 @@ "prefix": "po", "architect": { "build": { - "builder": "@angular-devkit/build-angular:ng-packagr", + "builder": "@angular/build:ng-packagr", "options": { "tsConfig": "projects/templates/tsconfig.lib.json", "project": "projects/templates/ng-package.json" @@ -217,8 +219,9 @@ } }, "test": { - "builder": "@angular-devkit/build-angular:karma", + "builder": "@angular/build:karma", "options": { + "polyfills": ["zone.js", "zone.js/testing"], "main": "projects/templates/src/test.ts", "tsConfig": "projects/templates/tsconfig.spec.json", "karmaConfig": "projects/templates/karma.conf.js" @@ -239,7 +242,7 @@ "prefix": "po", "architect": { "build": { - "builder": "@angular-devkit/build-angular:ng-packagr", + "builder": "@angular/build:ng-packagr", "options": { "tsConfig": "projects/code-editor/tsconfig.lib.json", "project": "projects/code-editor/ng-package.json" @@ -251,8 +254,9 @@ } }, "test": { - "builder": "@angular-devkit/build-angular:karma", + "builder": "@angular/build:karma", "options": { + "polyfills": ["zone.js", "zone.js/testing"], "main": "projects/code-editor/src/test.ts", "tsConfig": "projects/code-editor/tsconfig.spec.json", "karmaConfig": "projects/code-editor/karma.conf.js" @@ -274,7 +278,7 @@ "prefix": "app", "architect": { "build": { - "builder": "@angular-devkit/build-angular:application", + "builder": "@angular/build:application", "options": { "outputPath": { "base": "dist/portal" @@ -322,7 +326,8 @@ "sourceMap": true, "optimization": false, "namedChunks": true, - "browser": "projects/portal/src/main.ts" + "browser": "projects/portal/src/main.ts", + "externalDependencies": ["marked-katex-extension", "katex"] }, "configurations": { "production": { @@ -353,7 +358,7 @@ } }, "serve": { - "builder": "@angular-devkit/build-angular:dev-server", + "builder": "@angular/build:dev-server", "options": { "buildTarget": "portal:build" }, @@ -364,7 +369,7 @@ } }, "extract-i18n": { - "builder": "@angular-devkit/build-angular:extract-i18n", + "builder": "@angular/build:extract-i18n", "options": { "buildTarget": "portal:build" } diff --git a/docs/guides/browser-support.md b/docs/guides/browser-support.md index 360cf8a145..38cc267361 100644 --- a/docs/guides/browser-support.md +++ b/docs/guides/browser-support.md @@ -15,20 +15,16 @@ Atualmente o PO está homologado para os seguintes navegadores: Chrome - versões mais recentes (latest) + 2 versões mais recentes Firefox - versões mais recentes (latest) + versão mais recente e versão de suporte estendido (ESR) Edge 2 últimas versões principais - - Safari - 2 últimas versões principais - IOS 2 últimas versões principais @@ -43,10 +39,10 @@ Atualmente o PO está homologado para os seguintes navegadores: > Nossa homologação tem como base os navegadores que o Angular suporta nativamente. Para saber mais, acesse o guia -[*Browser support*](https://angular.io/guide/browser-support) do Angular. +[*Browser support*](https://angular.dev/reference/versions#browser-support) do Angular. > Caso precise de algum *polyfill* em sua aplicação ou precisa de mais informação sobre como funciona um *polyfill* -acesse a documentação [*Browser support*](https://angular.io/guide/browser-support) do Angular. +acesse a documentação [*Browser support*](https://angular.dev/reference/versions#browser-support) do Angular. ## Executando a aplicação localmente diff --git a/docs/guides/development-flow.md b/docs/guides/development-flow.md index 7222cee2a4..e6d5e3ffd9 100644 --- a/docs/guides/development-flow.md +++ b/docs/guides/development-flow.md @@ -55,7 +55,7 @@ Este guia tem por objetivo definir as regras para criação de *Issues* relacion
  • Crie uma nova aplicação em Angular incluindo o componente e o comportamento reportado para nossa análise.
  • Adicione o mínimo de código necessário para reprodução do bug, facilitando assim a verificação da situação.
  • Publique a aplicação no GitHub e inclua o link ao criar a issue.
  • -
  • Pode-se também usar o Stackblitz para reproduzir o bug relatado na issue.
  • +
  • Pode-se também usar o Stackblitz para reproduzir o bug relatado na issue.
  • Certifique-se de incluir os passos para reprodução da issue. Estes passos devem ser claros e simples de seguir.
  • diff --git a/docs/guides/getting-started.md b/docs/guides/getting-started.md index cac977a40b..181b9fa2e1 100644 --- a/docs/guides/getting-started.md +++ b/docs/guides/getting-started.md @@ -3,16 +3,16 @@ ### Pré-requisitos -Para começar a utilizar o **PO UI** é pré-requisito ter o `Node.js` instalado (versão 20.11.x ou acima) e o seu gerenciador de pacote favorito na versão mais atual. Caso você ainda não tenha instalado o pacote `@angular/cli`, instale-o via `npm` ou `yarn`. +Para começar a utilizar o **PO UI** é pré-requisito ter o `Node.js` instalado (versão 24.15.0 e acima) e o seu gerenciador de pacote favorito na versão mais atual. Caso você ainda não tenha instalado o pacote `@angular/cli`, instale-o via `npm` ou `yarn`. Instalando com npm: ``` -npm i -g @angular/cli@21 +npm i -g @angular/cli@22 ``` Caso prefira instalar com o yarn: ``` -yarn global add @angular/cli@21 +yarn global add @angular/cli@22 ``` ### Passo 1 - Crie o seu primeiro projeto @@ -36,26 +36,25 @@ Veja abaixo a lista de dependências e as versões compatíveis, elas devem ser ```json "dependencies": { - "@angular/animations": "~21.2.17", - "@angular/common": "~21.2.17", - "@angular/compiler": "~21.2.17", - "@angular/core": "~21.2.17", - "@angular/forms": "~21.2.17", - "@angular/platform-browser": "~21.2.17", - "@angular/platform-browser-dynamic": "~21.2.17", - "@angular/router": "~21.2.17", + "@angular/common": "~22.0.1", + "@angular/compiler": "~22.0.1", + "@angular/core": "~22.0.1", + "@angular/forms": "~22.0.1", + "@angular/platform-browser": "~22.0.1", + "@angular/router": "~22.0.1", "rxjs": "~7.8.1", "tslib": "^2.6.2", "zone.js": "~0.15.0" ... }, "devDependencies": { - "@angular-devkit/build-angular": "~21.2.17", - "@angular-devkit/schematics": "~21.2.17", - "@angular/cli": "~21.2.17", - "@angular/compiler-cli": "~21.2.17", + "@angular-devkit/schematics": "~22.0.1", + "@angular/build": "~22.2.1", + "@angular/cli": "~22.0.1", + "@angular/compiler-cli": "~22.0.1", ... - "typescript": "~5.9.3" + "typescript": "~6.0.3", + "vitest": "^4.0.0" } ``` @@ -71,27 +70,11 @@ Caso prefira instalar com o yarn: yarn install ``` -### Observação para Angular 19+/21+ +### Observação para Angular 19+ -Em versões mais recentes do Angular, o projeto pode utilizar o novo build system baseado em **@angular/build**. Caso ocorra o erro: +Em versões mais recentes do Angular, o projeto utiliza, por padrão, novo build system baseado em **@angular/build**. -``` -Could not find the @angular/build:dev-server builder's package -``` - -Verifique se o pacote está declarado em **devDependencies**: - -``` -npm install -D @angular/build -``` - -ou - -``` -pnpm install -D @angular/build -``` - -Além disso, valide no arquivo angular.json se o builder está configurado para **@angular/build:***: +Verifique se o pacote está declarado em **devDependencies**. Além disso, valide no arquivo angular.json se o builder está configurado para **@angular/build:***: ``` "projects": { @@ -108,17 +91,16 @@ Além disso, valide no arquivo angular.json se o builder está configurado para } ``` -Se o **builder** for **@angular/build:***, o pacote **@angular/build** deve estar instalado. Caso esteja utilizando **@angular-devkit/build-angular**, o comportamento será o modelo tradicional. Para maiores informações veja na documentação oficial do [Angular](https://angular.dev/tools/cli/build-system-migration). -### Passo 2 - Adiconando o pacote @po-ui/ng-components +### Passo 2 - Adicionando o pacote @po-ui/ng-components Utilizando o comando `ng add` do [Angular CLI](https://cli.angular.io/), vamos adicionar o **Po** em seu projeto e o mesmo se encarregará de configurar o tema, instalar o pacote e importar o módulo do **Po**. Além de importar também o modulo **HttpClientModule**. Execute o comando abaixo na pasta raiz do seu projeto: ``` -ng add @po-ui/ng-components +ng add @po-ui/ng-components@next ``` > Ao executar o comando acima, será perguntado se deseja incluir uma estrutura inicial em seu projeto com menu lateral, página e toolbar, utilizando componentes do **Po**, **caso desejar, apenas informe: `Y`**. @@ -146,7 +128,7 @@ Agora é só abrir seu **editor / IDE** favorito e começar a trabalhar no seu p Caso você queira utilizar nossos componentes de templates, como o **[po-page-login](/documentation/po-page-login)**, **[po-modal-password-recovery](/documentation/po-modal-password-recovery)**, **[po-page-blocked-user](/documentation/po-page-blocked-user)**, **[po-page-dynamic-table](/documentation/po-page-dynamic-table)** entre outros, basta adicionar o pacote `@po-ui/ng-templates` executando o comando abaixo: ``` -ng add @po-ui/ng-templates +ng add @po-ui/ng-templates@next ``` > Ao executar este comando, será instalado o pacote `@po-ui/ng-templates` e configurado o `PoTemplatesModules` no `app.module` somente se sua aplicação for configurada com módulos. diff --git a/docs/guides/migration-poui.md b/docs/guides/migration-poui.md index 0cfa0cceae..a2b097fc42 100644 --- a/docs/guides/migration-poui.md +++ b/docs/guides/migration-poui.md @@ -13,8 +13,7 @@ Antes de atualizar a versão do PO UI, é importante que você tenha atualizado o Angular que o PO UI está homologado, veja nossa [tabela de compatibilidade](https://github.com/po-ui/po-angular/wiki#vers%C3%B5es-angular-x-po-ui) em nosso Github Wiki. -> Caso o seu projeto esteja na versão Angular@20: -Realize a instalação do pacote Schematics do Angular para o nosso script de atualização funcionar corretamente: +> Caso o seu projeto não possua a dependência `@angular-devkit/schematics`, realize a instalação do pacote para o nosso script de atualização funcionar corretamente: ``` npm install @angular-devkit/schematics --save-dev @@ -29,7 +28,7 @@ ng update @angular/cli@ @angular/core@ --force Por exemplo: ``` -ng update @angular/cli@21 @angular/core@21 --force +ng update @angular/cli@22 @angular/core@22 --force ``` > Para realizar a migração completa e avaliar se não precisa fazer alguma alteração veja o [**Guia de Upgrade do Angular**](https://update.angular.io/). @@ -65,16 +64,6 @@ ng update @po-ui/ng-components --allow-dirty --force > Caso ocorra um erro ao concluir o comando acima pode ser necessário fazer uma instalação limpa no projeto apagando a pasta `node_modules` e o arquivo `package-lock.json` e executando o comando `npm i --legacy-peer-deps` antes de realizar o `ng update`. -> Caso sua aplicação seja configurada com módulos, pode ser necessária a inclusão da seguinte `devDependencies`: - -```json - "devDependencies": { - ..., - "@angular-devkit/schematics": "~21.2.17", - ... - } -``` - O `ng update` ajudará nas alterações necessárias para seu projeto seguir atualizado, que são elas: - Caso houver *breaking changes*, serão realizados as alterações possíveis, mas fique atento ao [CHANGELOG](https://github.com/po-ui/po-angular/blob/master/CHANGELOG.md); diff --git a/docs/guides/releases.md b/docs/guides/releases.md index 815ef7d455..6b46443a0a 100644 --- a/docs/guides/releases.md +++ b/docs/guides/releases.md @@ -41,7 +41,12 @@ Consulte abaixo nossos guias de migração de versão para obter mais informaç - + + 22.0.0 + 22.0.0 + Migração do PO UI + + 21.0.0 21.0.0 Migração do PO UI diff --git a/docs/guides/schematics.md b/docs/guides/schematics.md index 2a1a3c2643..02ac187da0 100644 --- a/docs/guides/schematics.md +++ b/docs/guides/schematics.md @@ -13,7 +13,7 @@ Caso esteja iniciando uma aplicação com PO, indica-se utilizar o comando abaix no qual será instalado o pacote `@po-ui/ng-components` e realizadas algumas configurações, que serão descritas em seguida: ``` -ng add @po-ui/ng-components +ng add @po-ui/ng-components@next ``` - Substitui o `AppComponent` com uma estrutura incial de um projeto, utilizando os components `po-page-default`, `po-toolbar`, e `po-menu`; @@ -26,7 +26,7 @@ Para a utilização de componentes de template o processo para inclusão é seme Primeiramente, deve-se utilizar o comando abaixo, no qual será instalado o pacote `@po-ui/ng-templates`: ``` -ng add @po-ui/ng-templates +ng add @po-ui/ng-templates@next ``` - Importa o módulo do PO; diff --git a/docs/guides/sync-get-started.md b/docs/guides/sync-get-started.md index 6499a14c51..f4668494a1 100644 --- a/docs/guides/sync-get-started.md +++ b/docs/guides/sync-get-started.md @@ -9,13 +9,13 @@ Para maiores detalhes sobre os serviços e métodos utilizados neste tutorial, c ### Pré-requisitos - [Node.js e NPM](https://nodejs.org/en/) -- [Angular CLI](https://cli.angular.io/) (~21.2.17): +- [Angular CLI](https://cli.angular.io/) (~22.0.1): - ```shell - npm install -g @angular/cli@21 + npm install -g @angular/cli@22 ``` -- [Ionic](https://ionicframework.com/docs/cli/) (^7.2.0): +- [Ionic](https://ionicframework.com/docs/cli/): - ```shell - npm install -g @ionic/cli@7 + npm install -g @ionic/cli ``` @@ -23,8 +23,6 @@ Para maiores detalhes sobre os serviços e métodos utilizados neste tutorial, c ### Passo 1 - Criando o aplicativo -> Atualmente, a Ionic CLI cria novos projetos utilizando Angular 20 como versão base, independentemente da versão final desejada do Angular. - Para a aplicação de exemplo usaremos o template *blank* do Ionic. Para isso, execute o seguinte comando: ```shell @@ -35,34 +33,24 @@ Caso surja a questão relacionada ao framework desejado, opte por `Angular`. ### Passo 2 - Instalando as dependências -É necessário realizar alguns ajustes de compatibilidade do PO para o projeto criado. +É necessário realizar alguns ajustes de compatibilidade do PO UI para o projeto criado. Navegue até a pasta do aplicativo: ```shell cd po-sync-getting-started ``` -Antes de instalar o po-sync, é necessário atualizar o projeto para o Angular 21, garantindo compatibilidade com o PO UI. - -```shell -ng update @angular/core@21 @angular/cli@21 -``` - -> Esse passo é necessário porque o projeto foi inicialmente criado com Angular 20, e o upgrade garante compatibilidade com as versões utilizadas pelo PO UI. - Veja abaixo a lista de dependências e as versões compatíveis, elas devem ser conferidas e se necessário, ajustadas no seu projeto. ```json ... "dependencies": { - "@angular/animations": "~21.2.17", - "@angular/common": "~21.2.17", - "@angular/compiler": "~21.2.17", - "@angular/core": "~21.2.17", - "@angular/forms": "~21.2.17", - "@angular/platform-browser": "~21.2.17", - "@angular/platform-browser-dynamic": "~21.2.17", - "@angular/router": "~21.2.17", + "@angular/common": "~22.0.1", + "@angular/compiler": "~22.0.1", + "@angular/core": "~22.0.1", + "@angular/forms": "~22.0.1", + "@angular/platform-browser": "~22.0.1", + "@angular/router": "~22.0.1", "@capacitor/app": "8.0.0", "@capacitor/core": "8.0.1", "@capacitor/haptics": "8.0.0", @@ -76,22 +64,31 @@ Veja abaixo a lista de dependências e as versões compatíveis, elas devem ser "zone.js": "~0.15.0" }, "devDependencies": { - "@angular-devkit/schematics": "~21.2.17", - ... - "@angular/cli": "~21.2.17", - "@angular/compiler-cli": "~21.2.17", - "@angular/language-service": "~21.2.17", + "@angular-devkit/schematics": "~22.0.1", + "@angular/build": "~22.2.1", + "@angular/cli": "~22.0.1", + "@angular/compiler-cli": "~22.0.1", + "@angular/language-service": "~22.0.1", "@capacitor/cli": "8.0.1", "@ionic/angular-toolkit": "^12.0.0", ... - "typescript": "~5.9.3" + "typescript": "~6.0.3" }, ... ``` +> **Nota para projetos com módulos (NgModule)**: A CLI do Ionic pode gerar projetos com o arquivo `src/main.ts` utilizando o `platformBrowserDynamic`. Caso isso aconteça, será necessário adicionar o pacote `@angular/platform-browser-dynamic` no arquivo `package.json` (dentro de `dependencies`), juntamente com as outras dependências listadas acima: +> ```json +> "dependencies": { +> ... +> "@angular/platform-browser-dynamic": "~22.0.1", +> ... +> } +> ``` + > Após configurar seu arquivo, certifique-se de salvar as alterações realizadas. -Execute o seguinte comando para instalar as dependências: +Realize a limpeza do arquivo `package-lock.json` e da pasta `node_modules/`, para então executar o seguinte comando para instalar as dependências: ```shell npm install @@ -102,14 +99,14 @@ npm install Para instalar o `po-sync` no aplicativo execute o seguinte comando: ```shell -ng add @po-ui/ng-sync +ng add @po-ui/ng-sync@next ``` ### Passo 4 - Utilizando o po-sync #### Passo 4.1 (NgModule) - Importando o `po-sync` e o `po-storage` -No arquivo `src/app/app.module.ts`, adicione a importação dos módulos do `po-storage` e do `po-sync`: +No arquivo `src/app/app.module.ts`, adicione a importação dos módulos do `po-storage` e do `po-sync`: ```typescript import { NgModule } from '@angular/core'; @@ -145,7 +142,7 @@ export class AppModule {} #### Passo 4.1 (Standalone) - Importando o `po-sync` e o `po-storage` -No arquivo `src/main.ts`, adicione a importação dos módulos do `po-storage` e do `po-sync`: +No arquivo `src/main.ts`, avalie se foi feita a importação dos módulos do `po-storage` e do `po-sync`: ```typescript import { bootstrapApplication } from '@angular/platform-browser'; @@ -201,7 +198,7 @@ Após ter o seu primeiro *schema* criado, configure o seu aplicativo utilizando Substitua o conteúdo do arquivo pelo conteúdo abaixo: ```typescript -import { Component } from '@angular/core'; +import { Component, OnInit, inject } from '@angular/core'; import { Capacitor } from '@capacitor/core'; import { Platform } from '@ionic/angular'; import { SplashScreen } from '@capacitor/splash-screen'; @@ -215,8 +212,11 @@ import { conferenceSchema } from './home/conference-schema.constants'; styleUrls: ['app.component.scss'], standalone: false }) -export class AppComponent { - constructor(private platform: Platform, private poSync: PoSyncService) { +export class AppComponent implements OnInit { + private readonly platform = inject(Platform); + private readonly poSync = inject(PoSyncService); + + ngOnInit() { this.initializeApp(); } @@ -249,7 +249,7 @@ Após utilizar o método `PoSyncService.prepare()`, a aplicação estará pronta Substitua o conteúdo do arquivo pelo conteúdo abaixo: ```typescript -import { Component } from '@angular/core'; +import { Component, OnInit, inject } from '@angular/core'; import { IonApp, IonRouterOutlet } from '@ionic/angular/standalone'; import { Capacitor } from '@capacitor/core'; import { Platform } from '@ionic/angular'; @@ -264,10 +264,11 @@ import { conferenceSchema } from './home/conference-schema.constants'; templateUrl: 'app.component.html', imports: [IonApp, IonRouterOutlet], }) -export class AppComponent { - constructor( - private platform: Platform, private poSync: PoSyncService - ) { +export class AppComponent implements OnInit { + private readonly platform = inject(Platform); + private readonly poSync = inject(PoSyncService); + + ngOnInit() { this.initializeApp(); } @@ -297,10 +298,35 @@ export class AppComponent { ### Passo 6 (NgModule) - Acessando os dados +Caso o projeto tenha sido gerado em uma versão anterior a 9.x do `@ionic/angular`, no arquivo `po-sync-getting-started/src/app/home/home.module.ts`, atualize a importação do `IonicModule` para utilizar o caminho `import { IonicModule } from '@ionic/angular';`: + +```typescript +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { IonicModule } from '@ionic/angular'; +import { FormsModule } from '@angular/forms'; +import { HomePage } from './home.page'; + +import { HomePageRoutingModule } from './home-routing.module'; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + IonicModule, + HomePageRoutingModule + ], + declarations: [HomePage] +}) +export class HomePageModule {} +``` + +> **Nota sobre importação do `IonicModule`**: As versões anteriores à 9.x do `@ionic/angular` não possuem o export `lazy`, devendo ser feito o import de `@ionic/angular`. A partir da versão 9.x, o import de `@ionic/angular/lazy` funciona normalmente (sendo o padrão da CLI do ionic para projetos standalone). + Localize o arquivo `src/app/home/home.page.ts` e faça as seguintes alterações: ```typescript -import { Component } from '@angular/core'; +import { Component, inject, signal } from '@angular/core'; import { PoSyncService } from '@po-ui/ng-sync'; @@ -311,21 +337,21 @@ import { PoSyncService } from '@po-ui/ng-sync'; standalone: false }) export class HomePage { + private readonly poSync = inject(PoSyncService); - conference: any; + readonly conference = signal(null); - constructor(private poSync: PoSyncService) { + constructor() { this.poSync.onSync().subscribe(() => this.loadHomePage()); } async loadHomePage() { - this.conference = await this.poSync.getModel('conference').findOne().exec(); + this.conference.set(await this.poSync.getModel('conference').findOne().exec()); } clear() { - this.conference = null; + this.conference.set(null); } - } ``` @@ -336,31 +362,38 @@ No construtor, foi realizado uma inscrição no método `PoSyncService.onSync()` Localize o arquivo `src/app/home/home.page.ts` e faça as seguintes alterações: ```typescript -import { Component } from '@angular/core'; -import { NgIf } from '@angular/common'; - -import { IonicModule } from '@ionic/angular'; +import { Component, inject, signal } from '@angular/core'; + +import { + IonContent, + IonButton, + IonCard, + IonCardContent, + IonCardTitle +} from '@ionic/angular/standalone'; import { PoSyncService } from '@po-ui/ng-sync'; @Component({ selector: 'app-home', templateUrl: 'home.page.html', styleUrls: ['home.page.scss'], - imports: [IonicModule, NgIf], + imports: [IonContent, IonButton, IonCard, IonCardContent, IonCardTitle], }) export class HomePage { - conference: any; + private readonly poSync = inject(PoSyncService); + + readonly conference = signal(null); - constructor(private poSync: PoSyncService) { + constructor() { this.poSync.onSync().subscribe(() => this.loadHomePage()); } async loadHomePage() { - this.conference = await this.poSync.getModel('conference').findOne().exec(); + this.conference.set(await this.poSync.getModel('conference').findOne().exec()); } clear() { - this.conference = null; + this.conference.set(null); } } @@ -371,18 +404,20 @@ export class HomePage { No arquivo `src/app/home/home.page.html` crie a seguinte estrutura: ```html - Buscar informações - Apagar informações - - - - - {{ conference.title }} - -

    {{ conference.description }}

    -

    {{ conference.location }}

    -
    -
    + Buscar informações + Apagar informações + + @if (conference(); as conference) { + + + + {{ conference.title }} + +

    {{ conference.description }}

    +

    {{ conference.location }}

    +
    +
    + }
    ``` @@ -390,7 +425,38 @@ No arquivo `src/app/home/home.page.html` crie a seguinte estrutura: Execute o comando `ionic serve` e verifique o funcionamento do aplicativo Ionic com `po-sync`. -> Pode ocorrer o seguinte erro `TS2320: Interface 'HTMLIonIconElement' cannot simultaneously extend types 'IonIcon' and 'HTMLStencilElement'` por conta da versão do TypeScript (5.2.x) conforme esta [issue](https://github.com/ionic-team/ionicons/issues/1011), neste caso adicione no arquivo **tsconfig.json** `"skipLibCheck": true`. +> Pode ocorrer o seguinte erro `TypeError: Failed to fetch dynamically imported module...`, sendo necessário adicionar ao arquivo `angular.json` as seguintes configurações: +> ```json +> { +> "projects": { +> "app": { +> ... +> "architect": { +> ... +> "build": { +> ... +> "options": { +> ... +> "polyfills": ["zone.js"], +> }, +> }, +> "serve": { +> ... +> "builder": "@angular/build:dev-server", +> "options": { +> ... +> "prebundle": { +> "exclude": ["@ionic/angular", "@ionic/core", "ionicons"] +> } +> } +> }, +> } +> } +> }, +> } +> ``` + +> Pode ocorrer o seguinte erro `TS2320: Interface 'HTMLIonIconElement' cannot simultaneously extend types 'IonIcon' and 'HTMLStencilElement'` por conta da versão do TypeScript conforme esta [issue](https://github.com/ionic-team/ionicons/issues/1011), neste caso adicione no arquivo **tsconfig.json** `"skipLibCheck": true`. > Ao executar um projeto standalone, pode ocorrer o seguinte erro: `[ERROR] Invalid project type: angular-standalone (project config: ./ionic.config.json).`. Para corrigir, edite o arquivo `ionic.config.json` e ajuste a propriedade `type` para o valor `angular`. diff --git a/package.json b/package.json index 93914b08d4..a25c984c17 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "po-ui-sources", - "version": "21.35.0", + "version": "22.0.0", "description": "PO UI", "homepage": "https://po-ui.io", "license": "MIT", @@ -68,18 +68,16 @@ }, "private": true, "dependencies": { - "@angular/animations": "~21.2.17", - "@angular/cdk": "~21.2.14", - "@angular/common": "~21.2.17", - "@angular/compiler": "~21.2.17", - "@angular/core": "~21.2.17", - "@angular/forms": "~21.2.17", - "@angular/platform-browser": "~21.2.17", - "@angular/platform-browser-dynamic": "~21.2.17", - "@angular/router": "~21.2.17", + "@angular/cdk": "~22.0.1", + "@angular/common": "~22.0.1", + "@angular/compiler": "~22.0.1", + "@angular/core": "~22.0.1", + "@angular/forms": "~22.0.1", + "@angular/platform-browser": "~22.0.1", + "@angular/router": "~22.0.1", "@capacitor/core": "5.7.2", "@capacitor/network": "^5.0.7", - "@po-ui/style": "21.35.0", + "@po-ui/style": "file:po-ui-style-22.0.0-next.0.tgz", "custom-idle-queue": "4.0.0", "driver.js": "~1.4.0", "echarts": "^6.1.0", @@ -92,19 +90,19 @@ "zone.js": "~0.15.0" }, "devDependencies": { - "@angular-devkit/build-angular": "~21.2.17", - "@angular-eslint/builder": "^21.1.0", - "@angular-eslint/eslint-plugin": "^21.1.0", - "@angular-eslint/eslint-plugin-template": "^21.1.0", - "@angular-eslint/schematics": "^21.1.0", - "@angular-eslint/template-parser": "^21.1.0", - "@angular/cli": "~21.2.17", - "@angular/compiler-cli": "~21.2.17", - "@angular/language-service": "~21.2.17", + "@angular-eslint/builder": "^22.0.0", + "@angular-eslint/eslint-plugin": "^22.0.0", + "@angular-eslint/eslint-plugin-template": "^22.0.0", + "@angular-eslint/schematics": "^22.0.0", + "@angular-eslint/template-parser": "^22.0.0", + "@angular/build": "~22.2.1", + "@angular/cli": "~22.0.1", + "@angular/compiler-cli": "~22.0.1", + "@angular/language-service": "~22.0.1", "@animaliads/animalia-icon": "^1.1.0", "@commitlint/cli": "^18.4.3", "@commitlint/config-angular": "^18.4.3", - "@po-ui/ng-schematics": "^18.0.0", + "@po-ui/ng-schematics": "file:dist/ng-schematics", "@types/jasmine": "~5.1.4", "@types/jasminewd2": "~2.0.13", "@types/node": "25.0.1", @@ -129,6 +127,7 @@ "gulp-tap": "^2.0.0", "highlight.js": "^11.9.0", "husky": "^8.0.0", + "istanbul-lib-instrument": "^6.0.3", "jasmine": "2.8.0", "jasmine-core": "5.1.1", "jasmine-spec-reporter": "7.0.0", @@ -139,16 +138,16 @@ "karma-jasmine-html-reporter": "2.1.0", "lint-staged": "^15.1.0", "mkdirp": "3.0.1", - "ng-packagr": "~21.2.5", - "ngx-markdown": "^21.0.1", - "prettier": "^3.9.4", + "ng-packagr": "~22.0.0", + "ngx-markdown": "^22.0.0", + "prettier": "^3.1.0", "rollup": "4.60.1", "run-sequence": "^2.2.1", "rxjs-compat": "~6.6.7", "standard-version": "^9.5.0", "ts-node": "~10.9.1", "typemoq": "^2.1.0", - "typescript": "~5.9.3", + "typescript": "~6.0.3", "validate.js": "file:libs/validate.js-v0.13.2.tgz", "yargs": "^17.7.2" }, diff --git a/po-ui-style-22.0.0-next.0.tgz b/po-ui-style-22.0.0-next.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..6abcf58a29add5de8eab3cb513ecd359418dd5cb GIT binary patch literal 1244930 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℞0dNG(;o=7)iEEKkXJfQG>Q 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�paA_ixR#C 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
    6?tcP(*YU}!qpGU5lvEP-4_68 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%0D0`r4fhhayfqF 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 z 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%0D>un6IntF^01UX_Z9sRe?$#5C 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ΜEJqVX(|XKHFedc=?SP{Y{O`3jvr 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%0A7MeTFIf zEK~MVrtC7NY$;QA1ygn-Q#Qzy-OQA&V9Nf)l-y%!IVs6N}gj%mNF%!Oi3M6 zl4MGAn9`O^>0wOiIZWw!Oz8zo>2Rj>Vy1K?Q+f$gI+`iHj48c>DZPp*y@n}$i78#e z6pC>?Bk0Bm`Y?i17{SAg;2B0Rqv_gvj9>{@U={MPi4l{{h&hrG(}5Awkr8tYBc>B0 zW-ue>CPwT~M(i*~>{*Q1vl+2d8L>|?VxMBfKFx@Ih7tQLBlc59>@r4dDI<0TBX%Pr zHpqzG%!sXE#QwyH-NT6eg%Rn&h)iQdo?}FoG9smnNF5`RWJGfq(Uy$pVT|ZGjOclc z=mm`Ea7OfEMsy@2dI=*sni0K>5xs&Dy^0aNh7o;<5na+$zkcY#8Wb{!f!u^etik)N z!75f`3xlR5YfK*o%^3`uD;c!+v&KHa8v7t?>_e=v53|NjW{sV~8atDl><6r|OITw+ zW{nhZlN`%UGL2*W-Pz#~L=6mRxV9a+sOMVdilTGf!}sy`Sst16*$(t!m}%i~-xA8@@?bG`h;^|FWSHJ|G>!1Y?d^?EGV>v3GK zUAbOQ;Ck)O_1cr`wHMdxNnEcdbG^>wdKj!iEa5h6YmmyrlGF;3uj9>*u zvJ9gb!WdTKGKO&_!+4e<%wz~Juo9mzgry8)IU^`z8CEckmHYv#nZ##|;`63_*D{24 z{3pI(CBEbatmkHI;P*(d3`v$@C(Dpx85&uJT`a?o4B;o1VGql&mu1+`G6R+wVaWJc zX43I zOBu4u8M0*z*_900)ePA+4B52|*)JHf>lw1;4B4+3vYQyPUo&LCVaPVH%r>&j?q-?& zk!AL0R@l9)u=`jcN3c?kWThO%O6kyKxpicv9K%ZK%&^R6NanCiUTLxd=dwaxXIS21 zrOac6%x9&nVn|lAOg>|UtYMja&XBBSSiWFLzGRtv#WD#pEL#|sFv}#ukVIJ~afT(q zknChgQVa_jQp1p1hBTXH+MH$Df)$#}kmj*M+c2zc8P;|T>(MOJjtpsEhO|FJdKyDI zkRdH%NCz{dXE3Bg8PaoEq35$gFJy&Y#0nk33LV7?y_6L?h9SM2A-$3zy_ywzEkin% zm3loZ^$)Dn8(FD0vr=zmrH*H%-p;Vz!LZ)Ru-?Zqoxw7Fks+PK3Z2VJeTyNT&yX%= znSRJJUCFSnW*GOu&n?K|7M#f>&SDa0Gl_GV#3&{)hV{6NAzaB2o@Ej+Smt*~JXm zrA*r8OxiLg?Mf!?Y9{R(Chb}#?H5ei^-S7wChb>D+D%N_ubH&pFeyi{UXEnF9L0L+ zz58d5iTjpY^heN%@>fS<8@o!K4Hkk}V9$_uL{OZjmZ( zkqDC#XGjuE%1$OF#gNcN&Sz3BlbXw^%Vp0b) zsb?^$Lz&buOzP!K>Xl6DwM^<**6a1G*FUgcZ)CmR%zC|*^*WyQdOJgU2Sa)%L;50< zI+ykO7Lz)^DZiCXT(_DboQXWNKr6JsnN51=EJkrQqd1pQjA9heGK!gu;uA)_mi@fx z{#vgkqed7t`HY$ZM$PGrnrj#}*D`8uX4FhY3o{KZ%;RWbo?@FBrA!8MWn%+OHV3n;5lUGitwKRAw_Os~DBf z8I>;>l?bDfU{rQ8Dr8g*qiPw|Tt>AcquQ5I?a!#5#;6WtRErqZ!Hnt|jOtKEbqu3= zIiq?dqk1i)`XZzH7Na_!QTVZrwW#9`?B>_l&pI=J33DqGFxbsf7_378%iu=~Zxs7b zKj|E_@O-5ato8h*%aDUBk@G8`X(@8BicjJ*1nW#4mzzf9nq90jKf#R@ z=i0+rXIr7AZG&9fo^`f2ci28${vUm_`K+}ISZm*At$l~J_FXqtgdDpVIsd0r4N_O$y_d{aJihy<@asijigm1<#pu9Jl1;t=5@u~yq4N82Jt+ac%wZPpxm7jVwYdv4}cI4zrJelUZkmu+Ch?IysJY(v@{` z0_$WQ>tr|UR9UBMS%;Rmf(^Ke4cNg3b21yu5H^^r*dWKTLAtU*PGEzqV}tBwgDM+z zEgMjP%h>2Wc_kZhmFJf=dO5Ub0z6t07x>yX2B=*J)ia5Drrz{t&1N%Zy{x+`@6@R<1RZ zxz0@CI`atEnMb+KJjQjNAMidSb}=K8%b?^jD6JUu{DIDlcs_yi2hzSkqvs2}&WJ2# zos=;sD?G|YWF6}z$cX13Y+*#c=Q;^-om6q1)N-@L8S#9E6eF_BqiVeh8&z4aty!mS z7||nGr)?S0BUz{I7}28`_I!lf8S(stI~ehNg*zG1yBXAb820>zw{47NdOVN+BFo0`N*kqLq{Y`H)nIZIgeFlICq&544P34noAipS9o4r(p<+4W*lqH z@43s|!rA6lZZPAy%S>jenZi=@2usbQEH#g@)XwC5JC8xzz@Tkp(C%i?{>Y%@a+c(A zmbBt5Dd2oLmh)vg=gae)FE21Dvp8SoFer;zD`lJ|E0~nk49Xe?Er36dUGnvO@Gcd16XPbS#Acg+??TQ7$=9b56Yoy z(Ge^+qgZY(Wx2V6<>pFH3pv?bZ^kiZZsAMjR(@tCbD^2Sh2{}1G>>wjd5jC~OulL7 zvD`MW+%~e@?q<3Dk>!%h*^?#bwvESIlXF5mG@`JM|U#D!ADg%W1DL|HDiTrCZJQ+9be*2!ptC!^Uc z*XAtO)=cOTOz4qJc=CBP%XI?Z)QNmkC-F_ao3lN+ypQENm2c_{mg{1c>xV4Y<(#c6 zxLQ|nHAbKxm*FCYaWTUf$uKVSv|~M%dMz17kjqfPWr%Ps5)32BFm^JG6vJp_7`qt8 zZdTzZhOviX>}44H88%?p_!u_LSZCU^-UJvo-555fGHm*DnHj(;Q^>Fx#IPC4W#&Bo zU`8-(MlozIW!PN7u%|h1TNoUr} z9ERm})=L?e$!dmW4a2h5qj*@pVpxK#mo2Q9FvAjMSmLagltv0qMF@gb%W@ICZi&%k+ zy^)9tT)~|vYdQ}yf(k}5vathU#t>ly307bScOuCO>|_N}tUx0xu!|Mg&5ihp71+ZH z>}3V^v%-KC#>WbC6r-jaD>AaN)11l*)1MJDfE!F9E6gBPWMpHf8On$`lQDBPV`c;^ z%qUivOIcyAU`0kQcAD!LHRD)kZehgS%8hm=qjnxEYy&H7BP;A~R@fg|A-Rl59wX9< z5h-9)j%8G)Gb+zBnvsF1%wdHr<_;-iBqIaP!>^Ea+$mqOLcU^!e8;GSSs_tYNG+q% zz-Wf=cV_s0r)IN4o3lb&bB7+m9eN~p=uwR6(X7x3jOs*2brPd`HzRrvV|pJebSk4d zgB7}%75X77bU7osf>B+?C}yAw@^Cz3=*AfOFoshYLqBfA0B*xTR^egB@C;*^!59`H z5AQLC_mPJnw_y`w*o-_>a2viu8&o1Mqv5up4z1CEJp9aUMv-T-88a=BXO3jd9K~&> z17oHmW9AsfOee-ne{M5_88bt<&C^P&fzw5KEq}>^2|lZGo$%~xsFw49JiX^ zBhTFAX|5`B8yn1c zb}D1`Nyh9`jM=9dv(GSQpJmL>WR?8@d3Fi%?8nHnpE72bF=k5{vnv?08yT}f#_VRs zYz1TXC&ug^#_TVQNiMfZ9=Ay=Zj%C5$+4`G9*oIUh z50EEI8Iw}Rq>S6-J61_G@}!pAq>eF3GA0eIlAn+#dyuC&jA={8^f1Oe&DWmWG#_~y zK%N#LPme{O9)~>biab35dDLPddLY|(4JUtnCUc|8T7}E1dJSVbfmJ$@RXT}PdN;Run)P08)2Xb|naIUCG#hp^Xq#VnnOlMM_XEI|aCdK{oQO2E~jrbjtQp-kZ zVA9!tp6%C~DLsNIJ(4M%z@$!O^8c~-9pF(GTcGF6%8 z3Ifs*lt>^TC`eH$c2v{=A}A;hg20sIC8@>>unI0T3w zm95-Ygn_TJ#Ukjus1AW51_DJK1d0R*6ty5wJOF{B4g`vN5GWczph$#3(GUVfBM21f z$_kejc!5jW<%>7yyqI#wQlANdE-5E1@B(NGdfEWKv;iKXxzLoh!^5-;_S0NAL~~ts zSpgJKwz8r%I*8S1J2s)Y%1UlYbFmc_;L}u~?5KXU4+l^Y4yA7}jrQU@v;im62AoP8 za2jpEcWDEgNy~Tu&E-a#%gr>G$I&vLK+E|1w2aT9Wqb}TbJ;|5`B7TNkJAQzf;RAz zw1How?feQYyT`UE5b3l`jG$#=BrOx8X|8yk3d9szCN|Jqv5B^eY}yV<@DQDa=9CW) zQy%Q6v+x_`!y!5gM^#iNAAYBN_=7IM6}pImE@Cp}V-q@yPf$L#q_fzG^06~r#9ow- zgDC&bXe|$iQ9h>AMK+W2cmSQ{Mmo#Qbe6|a9#2pa8X29*V6JTZdu#7N2$qv@=eLV02XorMH=h|WNB)q*qd z8|A?vIs-@VSY^j34}PaS)q+cu2Un;N1r=hlnuBo$pP)Q!NoTMV1ms1P2etFWI6;gFmkCFe#_ zA)858c>oo1BNcKp74kT`$`j}+f1j@MS#*`pQBtRnAEm4Oijpi>#R$48M$%O=nhM1f zx+*qMAvA%`R1D8hF+5Af(347FBNamt6)XRqgG!);is3R9!&NGVYg7!SYHaR+8&nLp zs2FZjF=$kbK*gw|V)UkK7(>3rb>r~ACR2F41-$KPahl=?QD&f1RnD0{-WHCQS#r!&z2%$z? z#llBfjm2Wz9Sbs(ip44_7C%ujB)G+_OQ9E)!g?x&>vRn?x`y5=c3p~1mAzZ~7cuNo zwu(x5JeBhAsg!T0Qof%``7tWJCx%_huTrT9rcx0~r6Qb4#c(PW8B{7pQK{HWrD6+} zLJD*y2RuU#c$OR>=a&?b11>=@l#l~1lLM}j1Fn$+N|m4W65JpM+@woziyUy998gBN zppgTC9H=7))+Gm~k^`I4C2UR(Y(WleO_#6@UBWKpz^>%L=gEOR$$@Efi7h4vyFw0j zjU4PcIoO}%;Pc4Aw~&M9kc00c2j52yewrNo965v+IfM^6LTNSVV9p~7|R06;fpCp#a6abj*73y*ous!RK!r+<0pQU zqhcsV%K1mJleUy2+Eb3`NI9Z2<%lknBf3(Kc%E`R;wrr(-v$5w>9K)XRKjLc3Hypl*c>WhUsDO2 zOC@X`m9THf&b}o(n@@JOfb8r$vR641s3LCg6P2*FRKnI#30qHgwt?(yBiY$zva>B@ zXE|hN+sV#$lAY})JKIZkwvX)W0NL3=va`cv_n1}me_jm1u4XzpV+d#XW-8&?WS6s^ z_%^b;;s|!PID$Vv0sj0X`17-h3+%2~f}LL`yNV^;q!NBxafMwV*##rJnn4vnb~TI2 zGp1k{HK;_yQi+JC5>b;%L~SY&58k2fx>O?SQ;D!piAbUnkxV5bMRAl}G$FfaMt1Qq z*~KGd7mtx$JVAERlI(vwORGECMGvxzUSwA@w)&FYBL*=`ahP4sE|%P>_dkt8 z1S)+ZN5j{t1a49ZXjFm-p=xB@lnSslm0%k>p+>lAR3b;QB7#c98&m=vp%poxH96pE zazI;hKv#0W406Csa=^Mf_qN@+w_Ry1Ii3iB>vR_WR9fmRl+hZ{=qz$_pnw3ZP7aJy z+UaL}Txq7W*oKZ`X9&PP765Y5OT9wvu)gdE~Aa)>9$AzG3{bSH=C zK@QQ29HOt%hG)fBE=7sxP|Nx?}`hRsJM`f30q^z75=@j;-5*$cZFpZw$JLnX@ zPN#&RQzC*ki8p8y_``J?05?^n;%H@UvZmIwU)ADPgNUI0;tkpl-f*2>2936QJaJEH z)waXnE42(A#>sRTr_y1ZMu+iTI?RvLVSa)R^OJNK`avtogw~V^Pg5qerA+8T>Clxj z;du&&9!e)>!c5A9b$7~byHjpEWx}77iJUSqoYJv6Wnvs<;^UNweJB(AQYOAanYfX{ z**BEQzNJhypEB73%4FYBCR;-3Y$>I)Wt7gAQ#$*R(%E{-WE&`xZKO=LnKIcH%49i| z$+lA_+ew*hH)XQDl*#r{CObfx>>y>b!<5NxQaZa$>8za6xsJlQfx@{rg>zpD=l&GV zzotySfYSM5O6S>>$+uEE-$t2yCuQ>86wV7MlNV7Yzf75&C{rM13Pzd2kJ3c|WeOvu zi)hLejVV(!p-jar^z8o>57ncxvVW857K3n zW3?l60k6>oyg?V3kuESZ<+EVAz}rziA43=TM7qo;Q9gf*@`!rviA4u0dZa#`bgxLSYU42Ak*-WP=HI&?z;)XgB4< z9&*4@FvCT<0N3d-Hl@SZh7MpmI)v?M3wEP(*bn@10QlXZ!r1|OnR_$ZyiHgo~o(=qH# z>v0I3#GznPv%=;0zzz&9(O`^HV}}CT4A)iU={My)f11wSmM!BOfD1)zhA zv>poSX}F|mP)tE^od!cW1%O6_fhY)(49Fl64HSUhWWp%z9LCU6Y(OEHNX_vf3c#lH zGCoRAV;l0rcJv6g*Dhl>vSV+p82eKa4y4{VgnV!)=rD~E@l`qq(cnX8)b9uaXs`M$ zK^wXV&(RU+MiPL@QwAspiAN9aby(1T9GEONja%7?YI&qXiW zl-IC;w!n4T0UG6EQ<{WN(?D!Pld&BQ!uIq#cB3oUkFsz8?ZBb52-9dA9-`ftPo?0c zEDfiYyNoe(6`Rs!>`zy5AYH{Yx(poJkOO+qMLa|$;O&}8v_{UDKyNBho`a@T=!!iR z;bfW)3{BuGy^0V7J!m7Wp)Ih3R>DO(4A*HbXmkO+$%aw1A7f}6Hl=ykMp1Ph_NQGq zkal4j?Zj897?0CA%%=jDMCU;VJ!lsmqBVG&u3$c0W=V7vyx=H=z$FO5rzsEHsJL_< z_M@{nfX+z2RON3Prhx&vK>$qB4nsC&LJsA?Q8L3NdIo#bUXOWFhdky<31|bs&Q((GxI*mcqOA4XmLxuz|+IW*Q4yX*T50>#&1t zu#3jSZh8~;&^S0sKSBWn!bQr1LYfDcXe1QVM7T~iD5p0;BO4G+M5Nb|!2@WZH_@9W zU=$6)7&?XxXc8t;CO$-OVpCdyk19-#!*(MpX zu8)BqJV%Al7Xn;;=9ENw=t23gMp1d58mZ;0vHc}5z$7{etLQ5HL?w_-7vU(KlrbS3 zN~Zv&ZvX@yq8wLmUtvjf1yIU;xdne5*Z^Tya2WDX;RX>7G0^ zCiiQUNBQ@ss-eQlqa}2ZF1d~`0?-AwQm1JO0F}z?_t!wVbd5^YaVhPgVwy%Tt6M57 zFI@(pX#jMT*ljluswr_Kdq; z@c0w7&9cLytNR1JD*lMc+wHM0-5$E^s?O{*U{v=-=w4Dtp>ViFBGS z(Lp*XsnkVvJO8qt;gv_(|MH#rwEbU}Ie)L@r{5F>?58|hMf>S!MK96HzpUfI%A@{& z$ItLT?L(`oy!!fIz2onBl;+a1dui@o%+WTd?D%)vq5T8tKwW7)b)`Wxo|38e9eU_1 z7taF2op-%LQ|?M1dRe9R1^QG=r9f2%wCVul_a7ng-;kqK*(7cnVI{5mi{}mk(0aN+ z%Oz*hcl2YW?JD(Rl`E3a4sCQrebmIw24yfy42%4IMjp(K|nod1m5rv zv;Z@-gjP@uo`$C(N@XC5R=J0&tK36z@B+L5@z4`qganm!sJ6;F^Z;bRN_bG^7^<)G zDK=1<6fG+MTp}EX!_W|p!7)gN6YvK#f>TfcjiCsNpanR<0gu3+@FzS9Wl#o>fd&MR z%XK#3NtJ2nDV1rcmC7{KTICpOt8xr=P&tM=s~khms2oFGRF0u%RgR(ORF0wNRgR%< zD#uWFd)pv=p~h1Xo$)#G*o35N>kZ|(p7e$;VQe(2$fwZ zLuD5lrLqf+W)s+VFh*q*n#)$QZ1_%P4qB};2iaBTpv@|CP`1h(v_)kO+RE}-KIEwU zLEBXRpzSJu&<>S9Xs5~_v`gg=+O6^j9aH&(j;s7ZCsh8R-&OvgKUDsplRTIQ!zmuh zL*X6+*%qp)?oXRT{uks2dsJucoRbHW5axE!*KxGtas4@zr@U46oHdDET z9#^@9o>aMnTB=+^PpMo&ZB#CyPAZpBXI{c@V;7Z0sJF@@)K_H@8mO`ey`-`T4OUr% zhN&zEFdXuZlP^sCA!WLFu5HmZz5*(#&Z7L`$Go60D(U1b#7p)v~XQyGQ!i;ZF{9uV8a zPCTk|3H`2e3H_mR37u5AgifhkLZ?+Op))F%&{>sBC=VEpRQy>@@ng9gw5d{lN;Ur2;R2!~`y282e?2trj}u>fcSO~415 zLQ{x_X3z{Gp*b`MGdv6rgCDej7GQ#w&=U0U6g&k6Xa%hxO!2>$;(r01;TaIn1-bx- zXW>~eC|MAqWPvyIgq{!#y`UF(!;A1D7?oTwD7k`~iPJO~`{hh=BqqfEXnyB9x>ER+7S?Bt;F-K!X}UKwwbvqK1+e zHI%$y7>?n+L-i_HT)`-Xi3VJh>P7hB90gJ4V8kHFbV zwhFx2YPK2}`-%ModbWnG0mjy{wV-D|v!8*nb!;8z*)QxD2x9BmdI(eb(t_9qwgJLa z*0dnDk!^%9l{+nnZDyMxOl43*wv}xK9m`=k;KjDFZJ=Y@*>><^JJ=4;v7Kxuc(Gk< z7wFh-wi~?I9<~Q`Y%kjjUhF743PMRqA0;Jym6QxuQZigg$#5kl!`T&f1q8dsu7OZ1 zSqXN7-2h}a*-hZ=7P|$=ZnN9KSs5$4gS~QA4qQpq5G7SZlvE8-QZ+zH)c_?`1C&(t zQBu`MNmU;uReh9H^-)sQM@iL49>?RrkH_RObFn!_$=__v-xZ=^ErGD_(>@bLP~kyQp$t3l=8s&GQJFSd^ukZaoomj;3Ko6 zf-hgiS3ym_ny&`Nf8swu6ko&FKpbDo*Mg3(cjf-w0HNH@?GVH_@{JI{H}Oqi=9~Fu z(DQ7b4PJaJ-wK@P@EkDkZG0Pq@$Gy&c=H{62L$t-d?$GEU3?cr@cn#0c=H4N07Oc? z0+CX$KqNoPkAfdR#*cwFKh94;HGYzxglhaWKMjJP;b(yHv-~XRc^=OLozy+x#V_)U z5X}pDA$ZGdb`Zob^UDy%ukb72$FK6M;LS^UDVX_nejS4O4SoX{zsYZcp5NlPfbrY> zHt4y=HPCV51YQCK124e^2eVv}6M}`W@C6ip!VkFAXL7Z2VFrT;5}2gh5RaF2ccER2S8Oi5j8?=tYc(0VZNaEa*j?hyy0#MLg(5f=B=+YKoem z7qvt!V4}9D4SMl_cmSAqP&^2FQAgAPChCg1pcnN-Jz%1~s1JJ4Kr{d*EW!eMkth;@ zi6oH(deKlc1SXP2GU!Dk(FmAG5hh`(FD9iQ_&Q3qM2w0 zUZS~Z4m$C$co@7y3(*2};t}x(c!@{Fqo5OyiO0Z8JT4vwop?e#0bb%s@g(R(OVJX% zL>titP_z|ofs1yc9iV70+5;CILTs$M50Tf+C7vSPq@hqU| zD!Kv}&xz*%#q;8M;L=I}F0BOckyZluh;)$-eqy*74&Gvf7y*7FLu7!r7%4`ApBN=Z zfw#0FAV7>2V)+Dv^gML ztP-n0h@ZqyAjBH622iXOYavwpEPe)qv_&99+9D7jHj0hlBQ}Xm5G^)~&EPGvMK(l> zEn*9Ji>+cSM9SQUU=rKKb})(^V#gh9?-V;BP}(kXMvB-Efzoz?>e6gLtGdlUgRAmSellJsuNOgs1Scb7_ZePy;TABcufFoEA)ABJ{nejgayxo1N|K*4M%lqhYr2DsO*UOCJ_hiQh)e5+q zNx$;W{q_3-gKBE;9^{x5 zhNAdjh)~<$N_vm@hm`-{eFFYLnJ|cg1m!mfSIZQ6xxVfnFAv{_*FFA?aM%5C*Ll>x zd}mbUbMo!sfAOY&{qg#Tz82=9CicG=-!(iq)BTVA1ys&IAJ?Cs@=e|S!^*$Av?(h8 zbgn;dkn4*WD!)$dx%-6xkw9+0zxdu??yo-ae|hIF_i)9*6<<&Pc))#MUl+Ifs(5F5X1Bit2!pVD zBp!1{ZC&R<_vr~gC4v1^Z*Z5i7L^iRr+WSVo{76hqB7Uk7fgzZDzuz8gs8KC%HH!< zSg!a=YzMnEbg;UwSGvLGN=Uw2w@QV3R3NgQ}rew{K} zLh4S>|KtmQL+9=~-^|u;o0_bZNps>-C3tvF9rLtPyceg zl-8B&rI=lkNK&X5_<=tJKp+@p{1<{MS3_w4hR0rL83TDwJo9V}DhN#cTNK8h*jEuxa zXwJw;Ou_JsjKox|o{^E*7!yXmIw}q8xKXW>ZYAf)ZMdRL33D}d?ycmR#Ict;X0AQD zEG{Sgt7R6IOheamPC5yyw8~J?H!8kDMU|+e8Y&t`6_Z6JOHo-}sUp$f@S5kfBkD~;Dp!KOi`rRD(hQ1e8y)x5uQl^%w-;1-@^!*L(x z;$GZ?yKxup#2vUDx3Of_kR`E1_5c=OKIY+BJcFn46rRLC@OM0c$MF~*#Upqa58*-l z4G-XcJdYPx1{=jjve(!MHkv(y7qJkF@De((7)$UnUcsw)4NLJl{)sp6Cf>r^Scc`O z$(5Ld#u(#FFdfq~1M_0u%!m21X3U=jus~)MH<*b9v0xU$LRlCKXVq9Fi(=JTwDc$O zB;JrG^F};{r}D=9A>M>H<;{3={xEOBAK{Pk$N1y?3H~H+$)Dn_cx(PNZ^PU2cDz0B zz&r9zyfc4>cj3?SuKYRvJnzQ4^A~sz-jny@FY?~J5AVzS@&1DN06vfp;xF;Rd=y^bZ{nahBo2!s;;1+#j*AoGckzcfDNc#g;*2;e@aYbAe*F>qfuH!nP)9Li$PjOS+5@jqxl#AQUkC}D8I=}zF zD%1a?t1{i?{1Z^fhW{r#&IYgyo+x>oTkx!t%O&MXPIpo-7Ky`7ju$7e1WP0ZyEy-r zq}K|LM`EDp_KGO2n)BTyMU_$@j8$W={l|R&*1yB~|25y=&-F*damD3M?sm$6i;9~s zOFm{OuDkQRo4_PGt)H_AHbXXSfvu1O+h9BF zfSs^QtrmC@3ZV!tfdh)61TMoBxC+;x6t2Uca070_Ewz$Pxr}eiMFNo_mr*O!qX84K z5vJlp*c6-N#g>A4szQD$@@oW~G&AwuD*w<_>o5#Lk-?I5^0sD@9&la*D*dn%= zEn!R9GPa!k$gC`j+1Lsh+hISkwQL<*&o;1)Y%|-!a@cmZlkH}E**=S?{Y(d~M!+x76f*TvJy zO8Nohy2c4u8+3Q&4VXdC`m)}vAM4NhsFe%#k|x<{zK7?Er(L#{7off&q{0YT0Lx(w z?0_;1z;JAX18_V}$Di>!0~W`cvkvS%_7z*rPO&RIfj8g}@iu%MpTei}S$rkm!%qnx z(Of(w28*}E46#)l5m$6kx(2$3bdT%W>7LU~)GgNirqlEffF1&rB^3j;pdOnD3>L|l z11w_`WNT#10hX}0fWczv+lHlpAjJ2wggj!u$S0Jy(oZY~hChoR)IHC7r>S~VRlQSH zy${KHMN?JpY*nwbj?ZODc1YHw-n6ue+CEUVwN|yguWEZrL3vEoHb>RQ!Am|PmaF>C zDafp~nAyupa4vS$C`$W~&M!`B=!P-v2`k8`tZY4(7Dm)7C0V9M$6w~B62lcjf>TTb+ zw~GsP-$&hF?*@H`!u z(_7^oen3&YJCiw#+UWFNTw5;L{imxlFM*OI#;JkWM zmIpmuRCkKhofU39a$3E6)qV7IMU}s%%KxPBoT=z(vBH!m{7Y3GZ58}W6#VTKUY0BP z=T*Z0^F35Vib_zu;}`XgZ#}3;r|$cz`@g!u9H_3?tH5NIf~3EK#Ht_}sAwldL9)P& zcDAVZZT6s@L+a@qMIFE0M>{Lk-Qnu)F;#bl>ZMU`v{Or!*sUvX?5^ z`@WKcRLNIW$-%1R%c|ti`%1o~N)A&chp3XTsFG=_r0nbOT$FE8bNK-3LVeJI1sZ`D zq(U>9R|;ClRlwkB2!*!L9wMQmYeruWNKiIU9kq&bJ++E*eYJ{m1GS2>1wMoiArUfR zHY7nVb82PFO7R~Z%-YkGw8f@-Z~$bB_?N*tYf>_Zr+i1^LSo)zj5qcy$6rF zYSBXg{wjZA2JKN&Y1nPp*z!dBq19YrrhZ|6_rUZg;AK zA8W~4v8PyT_B4Bm4Q4~w%j^|4l%**Th#ZC1g=9!^*|Ke2mh0Ub{D8Ap*)TRtwc}}M z%U*W7+W>;u3+zSKjdf+uv*%b3)}8fYJy}QAhP7qwSbNq1A|Q%&VFQ(SCm5mu*dR6t zd{{b52Ve1_nBnqSSJo(IuypaE_(*&#ri)M5An~dAjJ0DOSbNr%bz}n}f^~r?)<)Sv z&KkS27s2NqxO%W&Zjg0nJ=qHo=`k9YWAR{@mnZ5j#H^!)mkn}PXHC`76{qag}H#0*7E&Zu3Kq%YQnbp*z`urA=GAopei*+2;L==Vvg--BG9 zEH7pMNo#PZ%U>2QeSJ6sX8_<9%mHLISWOUa5H<%N%)za=h1Fm&ESANwc$UCwx|N6k zAJziifD9PP9$}BN$JpcS3HGGoJcZZ)|M|b`lis)gD}7%YXc;u@)sY#NXNL6~HgcG2 zSHInmmj;h)FmmLe|MDG)iHVIH2u#TY24qO?ng{WO~OgmWE$e&-w(I=mr3N`lt0x$I;!Y1M|)WFhAA* zwUIHFb<&2ZAwA^X2Bp80HsMy>5@1o`0Qk#GeKXR*3xa^fN*(F<($Loj{X&!Fy5#i$ z^PU?#AZ<*mKF_2B6Keo;;e!YE9Z=SN{}8}p`J0*4!Gj0(^;zWeB{0zl01^hLjU3Z; z|N2J&i^~9l9~wHWf8UVnUyKCIUjX1!J+1GUbVCc?6EOcB89#fqZ`!~}uO{b!)ffzb zAhi~bD&n}QAo0PqKNRuw&yk()pmX7e+eOy(w5 zKcf|LF~thW~E4CQaK z(YH-(O!QlE{?2*W8 z-L05wMN485#!K&BYQxZwV0~OIj2fmN_g=kr_3O8*ho6hcTVKRkEOD{*>&uwS$D$dY z)JqDJ5n(I0SXr)>S*(U!D>qubaubt+czjTDnA}_q?!@~R1$P#GbtAPL-133k0E4ao zB1>n5NT>myz+LDnKs8z-vy2rdsu2OMlL$*>R)j=$v>!8>n~bwYTf(z|-))e{wMMH> zi#A$)bFIFXEHAgazD8?6uH2e)tzJfJuqqasYXzeLJU%EsB{nEFB{nFT z%WrZ>JWmdhj;Pq6Saw<4+P;5#LSq;00zTNWe@ATAaX`oXKf91t+ZJ|BKXEM}WKbe6*MA6gVXTeUt8X$l0jrNiHPPD=ndR-#X%#0i zmdLD_VAn~UB{C~cVuHna%Wn5JW(DEhmNH{jHMi3^qqRn^HO`pz;N6RfN!X}X?OL@` z8l^T)Ne&4O4T*15D?Uyi5*#W*B_$X_;!|qXN=Xh5O>UUVCr@8}X7#qEgRC1z&;RhF zxu0V1xgB?}7`Xk!nAP(?T7fSO`|y!gn`h788L(rA@qEslwV#h0Gj(*@=Ytn)5BPPx z|Jf~HWo62EbQ%@v-qCFVKZt-@&0TW3dcUXpjC!sA`9v`y5jYH`BC%JO z4b|a6NP)4o`l*d&m)190!*b;|#>LNiOJtV50y#mJ$gH3Wz6iHOW`#>?@Ye@PDHGz{ zRad*L8h1P0mf*ZoPwlLFV^*>UMJRGemV&@wz|@rFU_)4ZZN0)(qtwPh4O1IqZG$8c z9vs#@%CI%?~U&V zG-mZt9mW-!{k zf`S!q35zvQmTzP>Hx3J6EF{=$4l~qZ?1S_p5cMNA^*EXFk zD{p8!v-fG^wWDp?x5F;@rGz6^tHYSS517DcGnj)a>JE@HG?+0%?NqZlr4eJb8;6?B zjHMl#6y0xOpFWHFM2|m|&K^FY4bhf&X#W(}!m0UtaS~cuwr{U3*9OSCquHChjm`=I z5aaA_VTsHVs=ITmS-}!+_0Fwk^|pj3CSlFSI-bmHhUtO~oY%%7+R7MgCkA`rld;;0 zlU)z(>dMa#9XJ+8Xzx!Ln4uke1e3IV4}%(Uekzj0YVd_fuzFjhmh(1d>D^=nS28dp z))a4wO^G!nv)6E)*79|&1KM6^dFfhpJd=+5WnIm+5)6c2zyM~jdRelB&YjO{E3p#% zcB>wIlvdK{jkjmNnJb@4Vx5?gtpYBeVwNoQAi&s^SZ35>@g(asP?r9LZeVlx3cMi7 zi4}t-GRq+K7;}GHW68RbaX+cwsX>EI^;^d$B|RlI7D9D;n_W~|G6<~TDP|Ir!s0Rc z{WR8R=$m?_-^Nf8|5GQ|1&xH(HlL_yrM`_;lZyv^ERk706+Fl-ky%{wppP-jmP zR=7v2j4VEmag))U+|V3kXvE^<^afL~JZsGVJaghm0na;rBu|W)|J}C>*rIRdeTS^K zwoBWHO|UNNFd3U`d$q&*TL`zVX=iR~H;~0>sx|q+>*8sv008ves4b`BN%{wAe(YmbFWQoi& z-TMmn_F7r4O_-FKV=`uWyS*_~U6p1}3RVb@koZQaPKl#8V63QCmX24)_4)Rr&sL2d zw)^dErzgzQUS{PzS?b3>cYE)fU%nW-BV+%nL0493(p%Jziug5MHq?blwkVe#z0ZP( zvP5P@Ni<-TQ38b)TW`c(HVa~}l^wA+vf);vG0V#hP+wz|DrwBB;|_iul(I9{SxuBN zE5W0alN(mmCZ$T_<0=)YED?{NjeBWU=dWjcuwu-J9b>oVO&&SzgKN9qIy!pHrp(#P z)~z1Ht35rT%LiY7H+A^BK}UWWl2xzP+KKD(2Cp0U{*QCN{B)M2)F%K$Tb&hrAOPCH z{kDS=AFA2j!rAOB=GIC2Tq{Z&$>yc^Rfef5C7TfvuUH?GG1g?@gU_BFQ{IJr`*!)O zEFuLD4%DV&`jfn@tR{c7r=-Cjs7QqBtPl-DY!TIKRQ3T{BD1gp7=KG-mcQf_Gc#Of`Vd0VtHzEL$edPwUa|Da2uyL9Bajn zlz*H&YR;C6d3%2?GG&;4`1q^2wpm@rKgBMxt;4k7P6P)FwBI&-K6C3&^LEs2A@TVZ z6$vlhItYb$7--`OH6=J)>R`A_>J{w?v_xhFD(!1@7hpCoP)4|y#isL;M_FNRjR`bn zRrjEnkoXwjsjg<|iCE) zv75j8VA(R=x*^(bt+-1M?axCW0x@37W#Lo)>6`53vTVLy_sXr$b!`R#hnJ~HcpYJ-VIOiI5~3 z7*WS%>bjxP8hkGwx-p$JT9io>6UrOaiqRXDDO+LY%Hy-|3>}}T?K@EZ>4c#ZFW|(& zXEtg3?LW_*{Y$N7Q>HCi^zPIpqRH?Tb?Vy3uRDJ1mvNiw)>$!p)uAJ0pHKU7sdn+Z z1-#{(3%_}L;#YGd4GpAHUZl&0Fi3#Dwi-2SNqB2WHgjUZ*AkiKTY&|$B{It_vB1r~ ziqJh82(cP3wOhUa=uqa_;HiZ}=HokFk0@Q4n+Bl`6k$mK%zYZJs>)>HI zZymp;S+#|sSO;}z)E14|@W9$RAFck8ef#1|6VFVUUi7xMTPql!#I)$H6(iT|5kWXy`V8 zj%d-{gT-|QIrOyZES`{}gcDQv6Xi{K`?3}6GqjA=ru5Y&j{^qJ(hc5Lmkr^N0BvpF zPP*`xBbF-kRmIRQE6Q!84!P2HF?#6J#3XDXTrw}dQsL-BxXXl>)PZAI^Q}#4OddVv zGd7wX`(bHLzjudEty{ZR{ra_P*TosHP2b$PZ;LlSes|P@E!&q4T|d6}D$V9L-XE?t z(--JIfK+%KCfX97c+$n)kLH54uEm;c@z6D%+-*pfD#d10JFC$mIk&0Xa6By6nrzI9 zW_PdDHD)Eaof?fW^+Pv zLt#d#8X5;lEHV8tUB6```o0l7^w$sGGY5{|kk)==`(&Sv&ySty9i)A)eRDutmK{C^ zA3omG*1SfOU4w6FnJfJKe#eQWg#8xZUg!Hlo3-8QKha~@{B{gKyFGPK&rMf$&!>;; zK32YU2u=dv|L?!5zmd;K74Bq&krC74s+xD&n2M_qNgGB8<6Z{$15U-@DZt38U< zo>+E^wbo8xrZ!k-z14{!uO{c0tN{?Osqse`#6Y@@#m2cjRi<3It&v-WUavGU!%-Q0 z;TD@E9D8L2y6eQiaCr-iSw=U;#CwEUvMJWxU_w)@Q=iw2by`)iYjF9+D`Q`oF#F~o z+6)~2_1dhjw8_|M)}kM?wB0)E#$SdnOo-YvVdGKuOZn1oKAt+~CI0^84<-Y`+f*br z=&~US9=Gx6>Xov{!@E*x%ljF#%$_p1ny1he@o}|S?UY95)Z~UDES|;2F;j>%=2IJs z4b`*@=fAx<4X4rf7cnq&TmxdNMT|0v^_nnZAqslIp9=Zexm$&9$5AopImmGEn+{HFCVP44km^8jd#8CSb6ucd`elVobp!QO}=l38haLr1G;R8 zgWfjZ_=HNj@zCNGbYlzTN{jp6M?UVBOq?&5h2kup#9vbqRRXJ>VuV;pQ?+WvE22`O zE48sySmMB=TJfSK+VxKn8zMW6=7_P8dl&9<3_tMh+!1XOwAUG1)??5DthZ?mTCjKi z_IclFe`q(Beor4XjID=b2D>m=ta|d9DtgjmY+FfV9)0YsS8VQWv01#amwTtGaiqj( zvMJV-EQ-gK*~gCMkB(zMmp`SmmXBZ`0m1{X7R{CZ{3j9DFtA&BhgP|1EFq_g}vMBhy*SaPRd$a=xCs z=IaVNKc}$M&gSjsU-=#nGE@GCDuuE_pF|QU0<`HXq_9C@1(Olu8SEZAmR+1({x$pL z3wB^f`JXy#Sur=2k10Fif`IF+po0hhhQi&cIx(rHB;jOi#P*i08aH^b&g!g3pR8ng z_bO23fpibm?PZC~@(Q>oVqim1dfedL`G9kv=*^N%@unb*#~@R@346$&3M?4wQ+}p* zd7jT$o%Pmjo$gjA_6B?JR+*sk3FU7&dsDXYn&RSiHuUlJv<$1e15za^R`MIuIRh;^ zmro%cC7RKcEUt|$TQ_bTf9ehK$L%(Z{2@Kw(A|Y+_K!}FcHlaqUR$;UTRb`u3 zV#U|fuP!{;S$X|Le4Lc4=7bnw4l^iEk10fXdQ76|eN9_L+SU(|VJE~7_*lo@otI1Y z?7PU`-LB;>z%)$#A_tSd`&K)$*@y!~2T)Zc@h`pPu z?d*829b(u5tiNTxMDGG^&o=Z#ZyofN?N|jM*14>n{@4j&_G0(u7q$K{s0Qx_5Rxnpce2>~a#Hj~sRwykGua*tDkJ4byoxj>8CZU4D1xjs$ zga^0OZ;Z`{;X|p3Xc(`(|C+YCW`ef-HSL4(`0kk_BI)+tV|k+Xtxh6i`t;i$IyFFJ z0P&;Jvt6n%Zau6J5A9Up`nLfpO{913IOyfhX`0A^xKy<2Kbd9Vtk1OSczK4_O?&QB zyrM;a##^(&$iqtxqIJuK;+Rkm8Osr2?m^J;retXc+Dt?5>6k zvqWZvMO0k{?&?mrwqB&DfEXC%%A_*01_jgE<}io*UWM!6pprF-B_F*;FLBUgj*0 zgh93-XEZIyX}x$^?pm1<_xLqDEj^u|VsIa|lT8ZxyYYE2i;t^qkQTS{iq>}e$4pW; z34Ut*nUT8m(IZaTPmcNi%ZzyszK}O#Av2e2hkux%hw?dD+HvhRKXhSunijt6A|Sj- zMSPd&0MXFiW^{{gD34vlJ@$^x)0(eIMA)d1ZJlobc_66`em!??1mMK5#2x-t{TJEt~Mw#RKts z&r3`Xr6PVnVLAf(+rlGN{3_gN<+)(hTkhgB;%_Z|9rse0R=a!A>=DuoYGh7s7-mW~ z#Y=Y_GpYF!jZLxzLr-r!o-sOImvM4k{_Ed=`FpQk$G`l6)h@%j%UJJQFns~mM=-}&*rL1@S43IdeIC*U;%4L8LY#%X z?}1(?-R3U8c}PgCGZxS|OpkGTLu^W|TI`YcPL6y1$oMVi%E}JR>+@Ojw(n@gQ`ZKw zcXdAmPrLeM-LGzatX;kEMA(|rr`k8!z{|ES^#3Yb%F9OpSe8BnLSV2hPB5kP70DE!YeCQEc)`vX5I~( z^?wzartu^F-u~WZ8sIl}_>_KS4=9?^I`iK|2Q?FCiY=k`11{gLulv}-gEcEo)L6;r zI#GhmNj+gIOye8oa)g-NdqUlmqN}h_6!*9Jb@`m3xt)8=74((NtYihmAH zy95Yd0q|XVnc1R^%}qet_%`@Wo=UEY-CeDcxzua!qSGn9QU=OpT~)o%(OvFZH-Tyyy_*E1C1 zNhPdemYZJZ>4L{m&^eh;G{q)y7R!?j8UQfL)Y@W-E?fPEp{>n7EZiA> zt(-mRA()lbV{FmgJ^Uc2Lq(2NXXIQTKj`c>1dDN(TM<=_#}rM<&hcSh zu0b;7+Vozm5|fp#n8r>Man8GA#tg@=ztmFj>c=eh9j(6}${u_JztkQom)@$y02rrq zzq_|8rfP3h+?X-Wx%yuK=-&|?AO^^QtfWfx7R^__iqNv@rcv0_Fb2oIKgs4Z z1}9DVAGCc3TvJ#7{yFE~o3Kd;Nti-daiCEGM5%jgRkYPQ5!{G4a1jfNd!o4a-n-$7 zyVg-hYpbSOYptWsT34O5D#_vho^z9s8)DzS@B90IT9ODPoPECId7f|1daaR7G4<|! zvEN`k*;)gAJFgIJ7-daF7iZ0wP+$#VQ|!BkZ3h&fBkyb5Jr(*W>Xzufp+_F=3F~2V zl0|WA+J2Xf1pU~0`-V7eBsS$>-+|5>i84LAl|5l2*>=DmR07R-HX_m`$|Gu_0~6~K z;t3TWNu)7AX;0CYBLnGS+ilE^!k?kfnCr8z;8(_PH?04*$L2w6&!Xxp-_OE7yboSg zIvwiXd!Bgr?t69q`JB@4s9l6JSVUVH28Qtpnv<~GMHTj*Xsys=SXR+OVgw6`ac?1o zRJ4%DMo^0_Bx)j|TVLKBojX)A>gI_X#_daotgc#Z?cgQbsExGJ`ZM>-vR(KWT*_W} zp4HF#F0JvoF46vkg28;SVCMx3*2mx9By?TKD%v4Ff*s=H#tsQ~dtpS&-P{si zUmGqNW*mLxt9xU%ExwXbea*ln+v(k~Wx@M66t|pQ3KyRpMghGBJ_EwKMhn<>zz?+G zz5Qk4Oi_rtBgkQ~`pAlr)F}l=ja7oEv|j{du+?a8T(w~YxgUA!mMQ5fmkq@_l(nuV>%(OXeJcqDd2X9saI0X_ak4FMh*j+IJDywec~hO zTL^L~+BLM}0DiiFfNAWUt_&uo2;W-M_NOg-uNl{j8C{eMKU&r127lzSQMzI3*yT{s zHM?Hw@DAg*?3tTBZeYg_U0Zh?-Eqdo{e=TZ4IyKzE_;Gnaj8HFdhvcvmJxNeL!42q zAr(PGw*0pkJw(7l9-_5DQk4PZ0F)CH6I}{w+67`F$>C?WZZ&FCsR^g+kT>ki87>t+ z?rqg|>*Cd0UNj3`>lA}PoZPhRQ%l)#=rD5X-ymeOfj1RB%rp) z4;GD@9aJGc6adEv!6PAb1fRlIc{sZl&dS@wEGj+Crr7LN?l_y`5;tyqF=u*Ox}R50D`7C8!eaA13{oV?;RXM`|YbU0Ua;(1p=JUImp8+BvRX1 z7?+eJi%v?ACnXbaORfx*s+7tAH5$8h`-2B?>$Z^B2M(~WaCX9-!#AKb6LRJJe zPUJFj0dfIjn5;-jG>{f+4JwsVDbp*XH=I z4C}T@)!#q#D=y8%?`|BvlR)vya0~kzqX0o5g%7a(b$<%G_LrHIW|LBc$t4g$mlMs$ zOd)O2Q8fr^SSb~PH3Hm`{cX#HmSgvIN$A=qd;QebQ+hPXFm%a8mPN-5>#B?%1{WQv z|49S=IKt;H#LHkUwp|7P0yyKEMN38{;F_hbAS4p?Q$#C>Z$W&F-9x4MGX(zv@ud&A zeo-}QP!9uw+%j+GJ{JcxpaUNo6>ayiY=IxqapFLAJCk{&l=dN~L>;-TIFxaXpGX9b z3JIYE2pksYAWE~mZJr}M&Mh<^{PEHuQ4?%h|zN)Kah!f5sNYqEiY9`L+zaNni8#S_LZ^n_i| z6#RI1x6Dl6o~=KDs!SO5&C^T8(-s!5z&A6Ar8c1G+YHEBxA4og>mwr=aSyE}Gt z-d;FoSC=og-@3AGV`r2%^ZBg8XESF#n?C)SEoLv_Oh5&4ctE{ZH=%onQwY2%c3TR) zg#*e4737czD(LC-PhT@xfc|C^N6iX`I=hf;TH&_PDCvJfx{3S;^~fI%o{4i{9lRX& z$IJ8ZYS-CIvx`v&^3C;yK7vt657S z*UO0kxyEQT;+G6#u`=JFHvobDSk9(%CqXi31}5{d&0CPJ#mY?e%>uQfSr=2RF0?q7 zd{l#2YWg)01;ThHsDUlk=1+Mb&gY;(c!xn&oZ$4`2t$JHuT(LcVr9kgAA;U$(zv$c5j?yjSkR)Mt^8tEPTQXC zG6od&>pNScE6iT^^__F`_sf@W|r=pJ_p zcmf5eMENXE43mEy!z8;MVE)$uX6KNR6EN2C%610AeZn(0l7c8})QGe_0|pE#d(6F| zDA3Bl0G9FLwd)9(R>DdQmzff6doW%XS{!d*!HK%i;zVliC&mka*%E&gflwOn5uYev z|4M*|%mbzIJ~Y-*?1w}SfU^9be2@?tNt6|bJ5l7~WyP_qcp4*Vcr=pClz z-iOV*&%$nJ&fv{wPvNaUT!3B3&RK=_ptls$7Yiox{?uC{SE?OvuF{1TtH{D<<5U9o zMYz3qq@w1ZH>(m55+;?b*uVT{;RC#h+1}9CCm<{!KA>(un}8kxk~9((2p2I)i#3dh zIH$GY&0W$eN_n7K$f`ss1JMkBN#|*!CU03kt9^%V0|srLnm<1T^GPEjCj5quSJP*Y z>O17~dYyW`!kN`dctNE0=^~kuS z5ELqT45p77cW4v)*;*`T#r}EuKlw@m-mQ|3j}%@->PkSQEE1*h`bso5qt`hjfcdy^ zJ$-}BRNZWflofx3#Lm8by+y_#Ltp?KS-u!K3alV^k4hD&QY)k5$V6y`6G$7~Us!k_ zAKr)e;?a2TzD`?UG;9ZBHm%1uc5KBrHp2_OAzH9{cFWoxp8fqk?)K&04g))9?M7Ga z%kK={df@`>a%K+_6KWxJyT%r41e zAG66vSImg-umB|9%F%+I#s#YE1Q|4XPTziW=btXZBf3uh?6by=y0K?7=M(-6zu#NyQzq7A^H?6X5zfc@Lxu?u6caZqxe$LjkpDhmJ#3-cw?FFadF+*{0 zxOyn;Z8^d;Ve0kAt>M1@a9^n}$-K5f%g_q$AW(tMyob~M?xzba_7g$F0_t}yRv{7p zi~-cZ^^+BQI4v%3KblVsq(7wN4xJcVWbODP4O(G61si5{NbTHn;A+d9(S|#4A6oV? zOc~OuLEEmavghRY@AtXk2ZBpPbI>gAAczCGd?d}DxM^XqF0?o}fcVD2el$x9bwT`4 z2y;l|q)v_Vf_^s6S*+7{17oS(5*`~Ygw%>7MboQyrkvRsXG&+tV^U&tH1z(gL;7bO z+GGq|l{$h&5l96xhU%O{e)dl_Y3kKBh(5CSm z%86iqhu_l}cqJkKPY%%%e-Hss8c9De=3o;;)8Bd~8h$kI!9WSX)QVnDV}dC_0s8TN zPBG$&VPR2#LFO*NKu44uHBMX(-p7MR8Dt(dbc$Ta;@NYOB*F=U$IY0$Jlr@~+WYc> z&be%gb#lqU5hEE?dV2ZpvDUx1Ur0+o1%S~|JW4g5al(Cypg@kiBLtoT;7~4*Z({U% zIog)J_~vNnb?+AP7&j*Boc)+BUL`rH(P#OsTo&D<9s z;FH-mr8DmoiSHt5Qmh`Dvwnw7{m?SBq>i53f*q zmw4%l<%~E*&4>q7?~dyKFE4sp@%#nFruhr_?3~O#BSwBRg3Vrb^yuoI%f33Yh8sS0 zvN3(clNaTkrjtK8N9(} zQ?QO_WWhG{f-{d-87vdFoF9_fh;+mmw-N4=4F(z=NFoawX;H$L>JC%K=gvV!ba4m& zT~<*iDVlDJ7<`d8`pZfKCrv0U9JTq>H@k+Ooz`M-Gni_(nThfokVa7KcL12p2T(r0 zDS$|PxB&*b$E?c*%(`6nHyi}sOZX)(9k26(X|Aja=Nm0RVka>ZXi<0M5)yY50;%r?61Ytj49wm`9Tc+*fjGjwQMyg;N6r_5;AS-3f?!Y@fg!3|>9)^z%(TxP0mra+={c@&KpP$%TD zZRjF{T0-1Fxh6^?l?JK=piyER`(oCax^?f(+IHy1Ip|j~ZsO+Lhx^7BSFU?xV0hI!CAU_rGIrlT)hm;*y#x;F%u`3C{W(Iz`?zGXK$OkY7f(8^1_J&edm@8%Icf* z;%Zj-w|7T(p4_)bLm2=0z`$O^n58GTMl2_4v5U%{uo04~ARNS#9Gt+^_LG^SY-3MN z)kxR0iC-|qy7=jc_32DU_LGT5QR=ELq*4eeb7CX~kfDg9kwUFOr8cM;ZJa#>MAjTr z?GMSYv*RZInE&id-(4S7-FjPpe#Uw2%PlAL$w<3<=(;`K*7TeG1*d+GGl#4xo1J%e z`hDovwn^#MS*^xrH5t&da7-)9<2s*aTs$~nPrrAU00UZri);;c0gZSo!Kb`b*y~d2 zw@76snOTq@k%}-?-sE3DhhFb$k~m&LnaSVrk3jn?!Eb|ht4(fy!Pc;ZFuz%k3s#)X zmYX~hwiL`ctAsq$cu?1}k!%F}6}_jclT)~c&UOk%(o?vqJIsOuI}y&3JO!_%PbMu1 zeUJm!Ib0hqGgYRc^QsjA4fNzy*-#DiNTwbGJ%}aB*u*$`5+^5h9dn~_c;9wC`}WNI z{CZ(_kJO%h`VPr$(F{)cxcj=Z=t|=Tcx=4>i|*-}2D{%}UGkD(k*$@yF63 zU)5tms+E4{Jz!r0%cH1w-_w|91}mjV#V~>i6=5Gfhzb3_LOjUbAReT*j@%e+G>*D{ z>{kKsP<8dNa=?Rht##veiVCHOhrhb@d11p_vJ)hv&QTO7;v*?L&=e`ys)4$SIb!$p zU0ondrN|S`A^-4V~ z$7r$>b_)Pag4M*wVT0V=mcDkZCi}2dEub|02xt?w>|b1L`PvTHL?rUg5uTX>sKH23 zp5=6<`|yEO1H%-k<7I*V!nIlAFN=_&G_nT?B$g4y4m^m3LsBAAr{1Y)7Dz@@C;l=a zy>HVfkw??KK4lzIg^DZl=H*$A<;|Fp$282dG-DcCjWTDpsz>;_QfZlF4=RZKFNf5P~B)XEJk^%`zD~XrXm7p|{ z#DEvH1x=#qn$-)r>5VhSjF}1#&&QD{U@3f#Wo!zLgtx3Ote0(7kQhuYn>07{X2+6) zK6YmikaUK~CT8f;V#Nta4>OVS02FEHMFu}s$x+&@G|3>>!t&sniM~kamVma{YB0gK5>n&rW2Z!8WCe{H!NmPwtIQ;W2B@eA(HMjVCBf7PEoio9 zkFli0$nYcN#uKq&9MP=`unuS zU;(cHzV--&9r>7?lw_kLvJcnKO)>aZPwtX#`8qF;smGb#z28xy=r0>T`ZM-UX(i57 z8o}Ns?OlaGra0&@kiq*p@zh0-3{m*Ru7_AYvNFovA$ewJ4n8>%RW1lS0rOwpV0oeg zYUklKWM7c; z@UhgBDxXAy6+9GtPAD^lnB6SKiXl8#%s(+MoGA_gLOd@($Lj)Mnn)xCh`Q#gnc^ez zONiGdq4a$@rSGd9v~x~47!i@>l6qQ7j(ooI^>j4#&B`eyObfz9C#>|+u~SBlo^tdS zyrWzQeYeAuoiJc=;6UrOOzZ9-KlY^`etR2#cNf1R7H`k8C(;PE9ngRpAQ|lBC5GCz zoV%86GgE@Q+g+4~x2yVz(VtQ;YSHTH6A7O?c^<_2RX989!taI(zZ+}js|c@Hv2E)m zE7n!C5NsB#vfP4=wpqK*Ajn9G(r(Q59CK~voa^=L{xt5?Z&vp7@{1!9r@WqiGo{|O z*;nvi#?$N9o;rh%on}{0JfJ}1x1#E+EYoLA88`pkwT$qCuW~<`IX8deOahiX_2$h5 z_1ACTo`EQ3eK}%lIMwimihGdj9we?M|qKF|hqI z{9?mt>}~02351`(>bXsz7p!LNF%>Vy$Ma9&6Q+Ss_b%yo{3igg>=gbOZI>uPBpAsD zI$@D%b}Z640%Tuv5xUUg2obJ~m|hVwS8#)uXa|x6roWk_(n4Jf5$6Mj(i99%JOw@K z@_JoSZG&HI-7Xm=C0#$6)v%?1^@hDOUo$_KUf9kn`pCwQW^47Hw6ohMiax%1Ia2`w zlgplPTP5Kj7-&IHo~7JZVlBtmCW@Zn6=D`LUz-R`u^Ndir*JX!H>P5|!ofu*8zMm4n=*b5P+08%_XmN99P*@5zE!aT8v?%sPB7Lk-aUY}H zcms}}RfIW{sUlv$#VOs|4j7n~%6xvk@GAZ@_uGx@zCF8sod9*7EA2mN!SaA9#no3@ zro)==1i!~+C_&v;)aEx~_(6Z24jltGp(?nu5m!t z`YkT}+)JL*R-8U8wYGDm=?eHy_A0vq1cNMI=G0b^QzF8tx|LAil?uAzl%n7_FA=`$ zA-diKf@Tcp}#n2=14OBH-O`D)&ni(^m!hODPn zj$WRmp9<0Vg9_{Tt!%sLe=e-O_^-luS9^sY__ML$(^(ego3-Kd50V*Q%RWNiac_VJ z(fwj|PM$xYemJ6!QnN{_+vhKhkm{sN8qY{=^j~GPRvMjT(4+5$Zrw8Yk2dUUul@Ud z%K!vL?62qu_nbuS$>;L^EKC#9^ZWc^1k^z$jR!0xuX>pO<@*x5Rxig~Sr_WJPE?nlH8|g^9PH zker0RUp0B+n*M!EeYlGw=FA@XX_p?Pg2+Nn4eN0Gfj3cU_0$zJT*b@^{g{REag@&! z&-E{l+K*xnz`rE5fEQ2^MzyD%H`{&I+1-`%$0kc z4LyBiVX}BxT^XBJvzCS+ksO%u#AE~PKCpGCWW9f*cI~_6XSN?$tD~l4eAo7^7g1j@ zi+#>`bC-Y;)TiSwF`Fbh-d_UA*b`U9lV;p}#W|_~#`zc%;AC_p9ihWYh=#a~Y$C)UVC-Fh*64YFwM@)v{*BlPjYLvW6s}#rq?e_MtQ_ zxvDucF;|dGXfA1~)EsP*3OQV=1RssY%*7AKB+qy-m@C6SKpp;pAZ~CGJYTkr)--M6 zgi0W)_)6OZ?*ojCiDZ~G;;j4Xiao`%tZ<%XwP=>WW!~?ZB&l6iX4%d@FZ-Cg1f*b-r6Jja*1_yWyj;>1 z_=5%%zehK6LvMeN2oIe{1CLY>E{*pC9>Td-3?(A*6RGofz$77;ZxFKhQfpD?_Jey! zXRPYp39=W*O0_ksC$#OE+W1pxeSj=F_8$J0`-9GVV>%8ET*g6|5W-Z~kqH3=(GzT9 zg&zuwfUzwCGEBnUTYnmZFD^rH@cY^9J?MqsKrhnE415-IWm&>$!03uSolgVK=`^rr z*pGt;_R|1@GaL)2NfQ4dhCn`g@TZbQY$kKGjEiAvOU45R_=8}ONMYu*U*ga36~mMR z2nvNL`UjDo>7~)mEi6au!K+hS_QH4V4TkT9oTOyDMdpItD=V|-@{t4>>DhY_09H$t zn&SUXD2A1Z)dd835>{*V&0~g8X%Z9J#qj`e>9$G~H9w@-n1fZgiE1i48$h0N8s}U!vCE2q}q?-h$ACpogo6(P#lq zo`M2%k#Y)aDP_rsld&EN0PAbR^m>C)prQbaTSf-wVUrc*3ptopQot2)WOO+)x?DPW z9nZluz6W_2!@)EW?#e?Zrji(JS!qV2)Qn`7SqAh%=dB5ym>f${W+o#a$ao9{5F7!3 zeN0t$>ipAWI=Ro>iN0yr$9a}-^4J>oHBFgCYz@u?e8}xsVGJDN8zS{rvrA9@Wzx{~ zP3R~vNu$(2bQ}jW9W8Q%te81yc?@r&2i6IhJXX=l`6^96QEL|8v>WH#3 zAdtob8_%S|u_Q|8Q`&x|irRHvLhr>)Z`xUvnNr*d!YU9@J~0p+EtOiXN7lnvVIF?) zSN>D{h{@~2kIskB{GT2{9#-p1eAOT4!KwZ*>LHR@-{zkf=FJ?ZwQ~V`fICUOT&WY| zk;XMExr@U(YJ&KSY0rLUa+HOLQwMUA+cZU+Yu1WQ4lpDU-F>7~1_r2=nk0=t8zC11 zRmdc)3-ol^PITwXBfsuii)+Ei$xEjFxoY*BsmsPg4Nl5Ug2|62K7*C;uP=r@!N-zw zGkd|7-;6i}HLKR(TL(sdi}&@U9E+i4kJ-+d z-E2Q={>CNO(&E<)TC|l-v0U8ik*4mRbqaF#8$eH3>)b)>sqgQ;fNRIicnc6H#yM*{AL{t&2Hs->{=Y@RTtt`I(mQTXx#9u&5Xk9~;EuUd-2Q3h=Vu9->(kF-7S? zC!^Atj7?x)kc)z91JfcO=NR#@eE5+nh)pTIj~m0U*ig&fu3gDG>R$GQ4U&*5N!39= zUMXaUmF0P1`q7cDQUQz@*yO8Z1Z0G$ltEZkU*W?l1cU6+xj>bgZVa0)ePVz?8yCmW zpbBAhXrm;`U(Rk=Ki;cw_TXvL=9q8iUYm6p|M~qwm_1T*3O4<^$J(?_=Q+>3C5;C( z>b^WPwl2PZI&A6l$uRmwPzm%6^{6__+TzQ{Pfn@&?j0k0a+Hkgpt2{-?`&HT2j=mC zPKa7jUd?_4@PQsNLVB?zKCo^eN-G%}SP+QP_|!m{Q&JFE6o_*8t|Yk{90=1yL};W6 zq{2$V2YARtxsn)BP>_#|5sq?2qM-swTBBDAYDr|3>FEL-bi2=>JEsr+mAiLx;RdKL zKDKnt7Ym9G8?C3#yoOc2Nr@iUZr*y+wC=gt87KO}-r2oIP3*I{WEbguD?FB2#hE}Q z(11r&xj^6wI&B|5&>z@nW1iw1NSHVr25Ga@Y5|3$C3_%-aB>nAP?N;0!o$Y(%_-#5 zTl8zxG&dFBEv#JUHSBAx$C=t;X4QRT`mh*%rB9o-*rct~YmhFnW$T2Nx$mGJ?&}XA zSdDwpJe3@D!w<;=XyZ8ecWtx!kl??y=z!%V1Q24r~kcsO{ZLNHuYS+`P#Rz4M~qwY;{v}TKa@kVCJJ%5N-fSqg}SK$lO)uD;WSB! zC=w|-jZ!EB!+QOG<;O?Nqsu=%M3%Q`?k@bz4m8&~Z0D+_I~kOT&*OctIjr&m)`Ttb zm-upOr}xkkzp?Ib_9uP}xi@6}>??bNG&J&8<) z?9$n*uYb`jrYf!5Q}!oYkNbnxgYmb=MRg)w95F4#=_cm=WfXrE0Av-jA~kC%64YuU z({8(`h<&Zq#zjlD$(EH(L*T-&l&aM{g5ultkH>%E%~RmIH2?TcI!?p=v8++)h1Mx- zAMf@#=xfU~HtdN_fi>umK08NAt^lMd-UCVn^ zuWHj(cTVbrsjAxa6P$CCF`gdfQV+tJ;9NybYaoz1)=`Q=pP*)@7UXR(!4dfdKi%5~ zCw8gQy;bvSZQ9`NW18+vdN0EA+H{b@=w3tED%O00@TS=~UN513u${6BAg} zR_aEmTq_i^A@&5IRD_FlQMxI=Oq4RtX~D#4;{;_mRB!L?;cKR>IsoS_Nbi%e(z)xK9@|*_m?H$vzW4+~ZbwXNqOiWTGLeGoUR=k~Iw;;0F6d(r?pdBA3 z#OcFGY|@R2o&A6yz#Qjg;VE`-fXoy|g;pKWcw!y^y#|UhMr<}dJ$Q`q+RQ8XFX(** z=_~_IuU~WK^oF&km`hD>FVHM}NrZ8N9>N&w#ZzzoG^-CjeRh;6KbAdVzNKycnD=(N zT|{klEMeI{TEaB&;(X8%F5I_xaI-d1jY8^lFBpmEGWpDp*7_Og@~#o{mZKx&o?B7& zg!zt50fC?%FLT9@xK-z|Z!_03mYAUdNr=&_0+i$)AV;kN=8s%_h#5XHrRGcXp2KX4 zwbRP=5PSzEFlbI0n1jpkg`Y2?jY1WUD9(>f0U@-mj7+E>A`@=4U|mI{)2*hQi%uR1 zkoi*Vw%o;M;NpNhF@V(3kP;u2nmj5cb@>#@$w>lm6Xj$4YDQjzo`cX2CyZ%%=SSi@ z7Nha_9dw|uN}@sr<00Gu13vBC?2l;|-pCns&*6oCEq;YB$Z!&>DJwgA=v^IpevQG+ zI4|0_t~{Wp0-!0PzqP8}9&Vyof&dtUguzH=AUPl@j?t@BN*Um&=gP?Sa#es@j-H*l z!OWP{vNnEzaqesUo-?9T$Ji80us?*qzJlD$#}n}*e9i}VhTG+^Dhz-ad)+Jp0nBfN z-&giT;?JglSkRphck*B>o)B&^J2c%+nl6&zh@eM@pP3I=ga}s)VjScq!KFb$XYBP* z5HZlae33w7&LWkei1W&Qro&`_vCJ^-0p43Hw{{|Dfk|Kb^hhaBd{j^;mE1y zX6OMm%gg4J0em%of)!RSTL`&1WW7x(d%}+5%pej}1w;7Cf;U&WoOL1c&mGXRm=Fpr zi_wWok(zmLNr(+mEw-}>WHm$tz9#iGq)H*hCpQRvH6+E66GmXuCL3tngjUdFN44mQ zE}#ASff25qw`d;o5Wmj zWuHX{%t!H7i5g~Z{5}BogR0R30WA9g0Cp007*qnS`4F4^UBP#yepW^GWbwHpGxH(9 zMoY8#Q&Q^nk-a0;Qu|h+HYk#l*?@Y9;X(1qEu-;+JbXWNJ+GS59u~fk)4h-i#1Qkb*@+g<+ zED#B-I$AFm9iqI4oX(@anIKM;W>O*7OJvRRkrHah#Zaq2CET~dDl|kVX_z>zh8!Kv z3sw@lxy#WVf3;72v*T!&CEU|fY%fda-e~fu{3&#~j-1R~I`<0WD;5i^f?r%1V7+ql z-f!2>zdU^y2IJq4oO(&lisZ6Cxiz$Ma1I|xRmR+`M{3i#N}G~(CJMKPsBFL;AF-|` zC${Q^b23=CK?qWUrFWjzW>rXSYU4|-XFKd^{uD|^{JaouJ#u3I#!dOSJ=>dWVSN-4 z`{d5JGlTo=Tef3=6Ke_)BZqW{9p_GhNHB?KoRB$gYtryC2h7Ka#0&5>AY9plr7q-GS#~p=j@D@_oCa(rwe)1uU z(yi-6)os2!0pmB)>NYpu)X1zQl(zv0=mGFRoCySjD3Hs033zF*a(rM#4fcv+fdYI0 zQuu(kIJck>lX0BT-vnA7Y8FfuxrT6E*l1Gn1tAGZ+b1UnC=~W$Lt1t}%$fW1aBR7Q zBdzABz)zP=N~}B}vyLo=iG-P3j~!aanXGH!z+>aSzR$I=ZpKIOwMi%waz^M2gV9E7 zZR>c`{K797fWRRDJoFSL9R?QiP{6sv@+hFF3J0wPSIM0Oq(gHQA|Kc4m3$F-V1*yB zIu{xeNj?RNBWFsNT$J9%Q(~nWp>~U7Bw!L#I}c_p_+=!+*u~lz89BRfB5pi`$tSZ+;MdOkv!ar?ZvgQ-ql~dj=RA1yEi6U8wz{y zAYQ}%PILqYeDx3n2W7abcm@ND9l^$XBg98`+ zG6Lg!ID#2s^@Ew)zB;g(YhiuS=is>GH#n0u!n$nByqOzly^j`n4L6`TT=st&B{Jq0rN`t<@Fjm!!Lx1 zwX|kFvVI@vTabwjuoqqfza0sWKu_fN{s8+cPRAD9nraRLAbCyK;&eBZZc&3psZY0T z4KdhG=4q??!Rut?@RhliyfX71H0VJrQExM^0J3sSf3%=8r+0w+*?}ALw&8%4C=`1x zf@e*6JK@=d*b{}VKzpqp)34{~m~{x6Prn*j{Yh1UvL|d`?j)!J#_?Lp;B-^T#&H{Z zi?aw4Zxy8v(I=Bu$LqAD8(MOGXw$VQ#~BLA%VV?@NUZV}>Z7<6GIg$cOG}%ua#9q; zx#%s4z$Yg&mrn0reLip8-KkHY&m1ER!*^fIfBt#iFI$fM^wsG@CHuZ&6KAa6I$`Ag z0T+)C-CeZ}etP82&?EVUd$-J9v;bwn*#Lqs0brlgY6{KVTpk}T(Bw$u3hH;fC$JT0 zBI=<;Hcrlt%FDBSou5x~xwhg#(PSM}27tXwD~F`=?1w6ch?2(TSD07`%+od4Ne&9p zWyIdivo3SKdT1)&&1FL>X_P%?&(U@@6}3yGfhEfNIgE8cIVR5cs32=4wIcuuJ1|4e~z@ZeYDS8+kLEO6xT{;@wwTP<VaD)Z zAp7#WAFg4`%kS%QVQ?Y-YyAfNb}_nqc>(m=xB+@EG~=_DmQeEZIf%R z{$c$ZM?ok*0IB$hpDxJRQ4!Xk9d$~p&B@ti`R9(jeZu6!T}O_7M=L}wuJhAPxCUny zud9QKX`~qd32(nSD>UK5g>4)$XqT+NM6k}}_RA9{pyqj~Y2JI*HU{+e6mSLm@H%N- zstC}DE~)?E&)YMq75_Y0dtPP}6179Pi0o~d={fk_bEoF)#dRUU?4YtY0B{>^w|Or& zx4Ecwj!ZiOw(FZ55k6wk-oLxh8TS{u7wY4<&m(aV>SMdlP1fncecswS#c`iA#5(03 z(-{l|L0~AapqK$-EF&{{RJqHSh#&(Z6V5?G2VOSxgs4j%u3^ve9_Zx`latt=N#&i$ z6MDcj%gbYGyV@kyS^{#4w^>r8AE~^DfJ*crVLvzRFUNTN53Q_Tv4yoOT1*hkE_=d$ z!<_^XU<%LB$g3MW*rDbO!bnC^bVGXu3IZs)l2osBFOlw3KoOk~lDyd9CykAtt_FBrG}IzHW>m?Zw`{sds=PdZP&QQ%+Xk8(s}sR3fY zk99>t*h}@?)4{8*<7&fI?K%^c#GL2e75tHR8-oWpOH`Tw^~;1`GnBLn4((q{+#Q(ur_} z+MkDD)U`Q3;lChwvS`eJ=7n=NeOsyFam(p->rbA+U!7!L;#W6A7CfE=!~e*D?cscF z&?hZA4r!texqqxpj1vLmlY5avCIQ*ZLMXvPE$|A?mx`Er^?DN-q z_sp7b={Vj7yHA@xe;VEdbueVbQv8TbSum$VL3rSto<*zROFTTYcekv*?3aDIlk;f< z08D*0#Rb6{^3M>gOnvJOBU-^+vQ!uNpNaSc`!OBGK;jzU-Xv-epgj z^%PGtjaNG1X+$(r2Xe^E#Y6NWdNO9P`iXkYQn4%bz;|wC= zWl>98z>PFj!;Y0owQxFkAiUELh8bZlHp8dThN4sIEs@}fK^ zJb8FKN*~b4qg;IS3hrKL#2KA%m)uqBnWd$t8KY%7Q)n4UYueb?jW@`4Q}98wV?IzD z+sjrPyJV4+Z$@FaCiPHEro^bewt7bFTjMjrjBWhu^Obp&$;_0uy*?g5IXTqoJpJ{0A!2iAI_pt1_2NfS4TbC9ZfV7jbw^RjJ;(j`-Lz zTg5se0i#yiF(MQc8!O~;$O#l%E|N0z!v2A+a$67CW%h*Tz1i(@+YZ=q-isZ*YIgtH z4SE%>w7|u)dp1bvRk#cVLJydrgST<09zS~9=r4R%hnvHLH6U}p(J$}gEr+$Y&wqcn z3e&vGJ9*6NDG1|oiD$bS+x*hrSm5YHi&i)@Oe8gtoF4R?c$00ct-U{+H+ zMJrK^NOUfVz!eVT#+Tkt`6gdokQmXR5d{rMmXBF&TsZB@2{so^Su<~@5uQmt@(ql^ zcUH_`Ya&0}xy+rVeQxFE;Hg-2E#yCq8HB;xMtH;c{ulcIFqiFBPFCZilICm*@CR)i z=Ey(%^B;;Cc)AM}sNfwVyl$N6IpqC?@>U2_A=pXL0I+*0Mvue_px_a}a(}fV3hIA} z6)5bn0*NSA5Dm?+wsCLTmHoIA-U7`qdBTFCd^QE=c3$3p)e+`LoQp#y=44Mnf_=<& zpz|g~3Zz1$KuY!Sr7n?z5a&oi$lpf_)c=7GE~ywPh;(!zS7<+aX*8l@+5lf^cHIg*PBi1>r^EBz6!^yp(X54#t9BH1x-ygYY+~WOGtcDLg_cFg1<@DZ|fgj#!yYk(%D?28vymhqS{_A88 z%AQC<*mjhIwwm`7coBZ(tZ`8pBf3sPoC5|G3a`TerH~OV843#^F`FPUNnsI0IVEf0 z7m)N9HXuJa3So}O&+-+s3b+b8lTYMmy^hPa22a1i@gx^kvvY~mGO7M#@*{~}htoet@Q{&c4E%;arqwfJ!4#YJJ}^b;Do&z3yj30oB1{Nf6j41R53ylURG3Dr zdWN_#8`?oGo}wUe8n_avKw*k3$7Xy;(1-|+=#?7O5`QNY<6Jwpem%cxjl1+3GnJGQ z+_x_mCb5^WiB#sa+_njiFd>WP(z=3|`ky&tXD3{xdv%6rul{effca42yP>+0g3zK+ zlv6S^v>=o$-OvW1WKoC09R6r1%qdwD`b8*86Z=yitRqbLOez(sLyF*#O2R+AEw3cJ zl9$4#SRv&*%o6 zsBDKPN#J;iiyXN?c!R{JtGJ-EMy0k%scIN|p3I=oI8IvTEUf+IpgupA;C47wDWA2- z5J$WYw1OPF^T(nYuxFRT`FkL92{*#mo-j5a#QF#~96O+o5&o;U8v&54q!_ADFolOg z{X$q?HBuxECyEHzeK^-TXm-6=)*F?BGknG2NoUZCw+O3Y2WQwdWJTDFXc$I3gl4-g z{Aj`-Q-|RwOfFcsC?6HV-8hxqxnQ9QA+7Z)n?gF7H?aR`0Lz}+D&B^I(LAtWr-Iz< zSrPcge(>_TAhKu4Luf#duv}gCtfx(B)=#`i1I?yT8+FjJNuA1i+P7v$d{kT~cjwMr z*ogfVZxmO{Wq<8|_%OAg*Vw$Z=I$+Mkws@eFF$BdmfLdFjw1t%HyZIO!H6q8O@JHJ zOWa=eL^6~!fk@Dcmpb9LL^&RjR+K1dB9e-6n0HdZy4JZA@JbSg6scL@gZAdb?;pcNd-9mbt!K z^^I8@kE2}JreU8^vy4-R51oqG6l=YMm(nsa(#(g^No(V!9hz(?M2D@-X0Km06Mao; z8Q%qfxh?UgSgTy#OTb!r$;9GaVa{th%r*NE-~z7kE4R1_{neMmf<^uEstBhlw*zgm zln#p<^}~mu!C2Ds=e@Y&sZ&PS3?GI`6X(y#V^i>qE^7vEIL4;*BkJ7Nudv6oQNw01 zhEWy~HWg0^33s)+&7f11MS6!)ci;&8Gk)8z^;>K{c<|mEm<4Mzw$>3cznjaR zaFf_}AO>va!<|Nh5(3?N&Z5z9?a$X#@Z!fZq2 zEv9)nUtVD@LnM5(oD2~y&k^8yBkLU(ww6ZkV5N87e|>Aan3wGFfV>!>I1$y z*ATUz2Xcx^GgSBhY8YnuvoUvej7O?m6foYJ05OKY;5hO{0Rzp@Nq~sI(*nbDfbSv@oH(*UAvWb5YR=QGLB*%-&Kl+(@6|zZ4X{h*$ttSd$*Jv1+ z4tK&vWPrER!QPGY^72q+h%su$40_+*KH?ohuPM1=?dj$k&!fd&})N`kUOrSg;h!x9!EZC6JWLa6^ra7V0b1v~=$rfLx+ z_8BQo$|Wc3^`v)pYepMQj2SI8YDjIsRqWMUeQ*bM2=37H?iD5<&e^%eGf%R4=X@5$ z$YF+62WK5ShBjHde|;Q}ffJWZhyK>VXsOr41$YGGjp|ay8~~gLn*s;}+~~yK3Uuc$ zi~1_EN-6tm(2b;bueCVlFnDX4tX;gl2U z)^421+8xyeh^SLbzN6MzELh6N3JQ?1<(MLRnc3$)QWshr>2_0#_OU%jDJCj{NY;(w z2dxK5c7Wh#1FEDE>8g+Ex+sK#thRxXYslCsG+dO^%ILOoB0C24!QG5T^pdWd%4C_K zPedz(omBMGxnt=#kWIlsWc|?9G7=A9&P#Ja6_5ay@j5*%f2b3bKmBzko!|w;=|YR+ zDjZt$ca}!H`5ikt5ABVG%Zrf-~1KPSj!EUkB63A51Wt5_J3g6Cx6H2}~Ma zRYz-LRx_Kb3F>+R{56^~@TEeur98J8DNl^kYLYYwtV8XO**|MMjKU8eH(i(3HopI? zx%2CqE}c6uc^oV#*^KwWk8VMTr|lf{r1RrJY^|X?;@je<`>!)&YxfQB61$>P*68&! zR?i&(g9{d-{@=qN?2>^9^uz<0Y)K7J8Po#1`RYOjrn-P>2-2BqxN-j+p*C>^TVBfr z2|(czowk7%rIoDFexW6{la>S*wFTsLkrw9gYqW5Y)jUtZx+n1Jh9)e>JD1JXkjy;B>Appsr1C6!2tsu4PF+LRfnpHjcvTsbzx)GY4mnh1p)=g{3_NUnm{`7P4)D9JJt(Q&vxuycGo| z?KSjxD6tj)b^(7=KB7(jg*FEAaaB&m3~F01N*)yTX%&1v15eI}{xfEv;e&dq(tUC) zvuSQ+blGtBo}>;?f-0c1Q!S}rvzy`&b}~P)L1;M#5)O1aiAmuxsTlAbM%YJ31?pMP6oEIG$q*lR5L z7R@+}uWt7nJ2nswfN_hygq3&r8pj0T<@mbiA5a@KYP1U9e6;-~z7jZUlnPdUO|_Ww z*$DP9Pyj9H#xsK6G*ezpO%!NyWNHLyMS+AYlNHB0<1>jMiL;Sq3N_Q(rnFOn7?n`g z946Cj1MMO$!mCcwcm4gV+!GHT9nJmfcNAW@X;WeDjLlo7=c4L2U{zI4jtXD7AMz{y zDR9I{71Z9xP1LVSLbkn8j~SzSQygM?t{O#l@bXWLsioP}(#_Co#Y3M&mas4fwxOqWo|Mr^g0QVH z_{2iW-h2!m+cIcV_4rL$^yT1*aN>|rvvN`4h(QyWiGvqcnqJW26Yb*eld^PaMWe93 z36qstlWl(E6n=90*R)=}(r%oBfv11%w{1Rtv}nhM!dIm;R&OeT;fr>_tWK%%Q5(au zM@Mzl;xqMHWcN?X3I<4s-b!AANKhHf;-!MWA(fe8&HulmxWt>$noU|Asl-%SR~+S} z$XuEHVN1#0%J++$pM151mxsMf?FeBr2Ea74L_-A`ThO#KeLF6Ob9VIH0cY;W*a0(fw;esV18CX69xL5E(> zdz8_M(NTVgQW_0-VAiA_i?r=$7WA*0^}3ZrIXXLRqo$L#6SGtTpmiiy1J{-G0vzxm zI?cl0A#%@prCMqoIkSEp?)sF%F*S(J@)oWJ9%}zxyUKCRT2O1y>Xp`8b?U=eT#XuI z3a0>%_mTJ{Jj{Iod_V}$f+Wxwq=FtG3lxBV-I1nGb*2oRskTlO*A(f&H=_XSX0qZo ztSAohDRuZil@)h&`hKk0lp!M?ZicLQfYbLA%%O11Ak;C*gYv|$4k!k6pa*}Gq>syXWOCLEbsfQkaHTaUVEh7d$H^N;3s%3 zmiy%QZt)R$fV*YOnto%MBVX3+8*~rB=FRYB%Uy&Iw}9119fB|M*IZwz62yV)001pm z2lcQClmZ#ssq7Nj>!PdF_j=7*2 zEE+eYZFbt|o1=4wN=Ds0aYLx-SZ(d#j21)M4fq5F;8%;MHJMU>rS)g-mu0)~FSwMY zr5)d;^-h@HWPI*La>EjZ28}cTcmh4oczL_`^*@NVhS5p^NuXyn$m*Mi-Ws`9h$v&j z-V~1t08@`!0Hps7_eQQ~>RGQEk=7`HxM5eSWpR&f#hIv{gf~T!{Xg2i1Fos7|ND%a z!A=NCSOPHuj@qaJQS08T?yZQ6;6@xI2<|;_Z$;dDgj=*)TeZ$QTB%xF`#iSR+G?wH zR;@}--shZq6LLfB)Bpc{Uq2rc5(wOT=I{J|-vR9Yrt*qK?o_$f3reWf2paEn&<99| zmD(Ga5(m^CA~;5ur2SVg8dl5vY9ZWM{OI--CUEcgliVPW*T0@S=*h*OA301iJ456C ziT7~z-g&K&|1Ymq5bRMT)~=mWTfA0W&++ehZ=q_)t`Twbmtl16~z zWo!Dy?w_~&sN*$PkFHyKQlK!%>>vSr4**c0&hjYc03S{YxuAeVr&tNivrKr^KS)xF7t8OS6?wie7>h*RO+FAR%SzaWWP^+8mG?z1 zHm$Z;`@sI{Lw$-s(`<_ex}D% z?)uT4oi;KCDYwIgYe+Nrh*6R7wG75Z`qOch&XFUeK-P!NDc2n7280-)fNRO-$e-dI zVJ<7+5CDo3j7K}rN2T7U(W!KfKqO~O251VWn>;6FTq?acd2#io)xDayG49}~o?Ch{ zFArBli!5&rQ#V;53rj1s(;0$yvX5GOc^l*M*X43!6(P(bdRag+i`eBt2*>^pFItCM zp?K0&U=wwRzhsnF7Z^o!XCn_47nxJQ2tHJF3J?Kwk|c+OZR4(&L%mw8qbj8m)KCf? z(tBf%eQg?SP69Xe+_?4*6WJ-aD^8^8eS>ySI_#+8$SrZ)}7B zh7H;=I&Q&obo10^o8yQL*Fjk?zRfsc4eJ+YpS9KNHrIJiwpMl)Q~@bqEnl@x zT~_ic%au#&NUW~=w|*Qv;^M?;HmIEVmre?@ts*_|d#3*4R7FV=1yCmES4k9v(+imj z8e+MV0-;)U7*goWFf3GGJ5g)x zGpsp_99=i$+h(qsGI3Qz%clEay)!@Tgqk%Y$>Uq+cag^{BL~6+yJOv}IpmvHPEbUC z>1#w?_mWp_+Caq)=y&qLgR`vO@PM1jbpQ##43_X*QnDB|Czkkd>Z@RiDyk6qU)r#O z*oJ}SFuGn&vkB5RtSU*o+G~`!noiKtqlr~aML4*Pn0n=7PL z|Ka^5!%sbTf~y0je%C%4em&!S{b>;PU-iYIb#ygN`Oj*4j;*rw#ntpATV-pI0*0MU zp!x*#ee?}mWsPJr!?tQbA3#q-f4|VWqcfzE>~csYVuAdqkcb3c7+fMa{m^q0HQjX) zr(h8o3m4_VJ){TIzR7y~sjQ6!Ld)A&PyL%{a)NurSX>`6C#Z7O7q?Rgmadk76`ADa ze68gw!O_}~EWMmIH!QQ00edzg*qt2ktB#7OuFw0*zh0nk{{;&H1ginS=NaO^3orM$ zMhO#F0{eIK1XVhLC#W)oOO!}BRso|@eFpb+C9|Zq>w58do5hlG`KS%%F3reHwZZf8 zLA$rhPkjl)$h|fB9E>NogAFK{qCWxPmNE6CRuc6iiPn{5g1gDVGAO$AdajTZ#%1;r z5ZsabY5b0e<=M)Ocmbb)1h7?P5J`(6!#m8ZcZLDI=e zsQ-;{ub$MGNa3f0y-d1gR5?z#Sv?i033Yi;*QU41+@=!}&}Z|1%*z~?J|hZ(1847* zmR{R5V0ry^Gs)vQN5jxO*{-m;&sSH|uglw+cg%awYm7>|d+5DLvjSJ2lSD!WXv)hwh$^md z+=41tHS4QSXo4M%^zP$aIow~?#{41NO6L}zBx588& z-YJ=^ZV+dfP9?ggc-p0y!WvNr6~Q${q8|jpf`!VESH#KkV3LD1yE|0l+RuZxk2cI% zh0)cEpXB7shI?0|9$~+n8uID*u+$2BXKX8SNfS7opfWiv>&aHqTXe+)Dz3Hj+J9Eq z_sD6k6I)523Gd@3&T9aIPe?oN9#eFj!TWoti@sX{OacyM`9;b>gBswWrdoUuo}i)j zVwbXNaYvX2QI;3glZJ_*txAa1;%oN-IUAe!j0JbN62aUCie3+h4*Dk+55Z6Y1tn3^UuZKv)*~l%b|TJuZ$5fd+uzoWE8lu ze?dS5k<;bJ<9>OK@C~IjR1WecpozBZMu}NFbeXj8bGfoh&Dt9ZChf8_ZewfrjN68{Ygm$t) z4+WJoZ@Er9!jXW7BGTgL-<{yf^y}8V$Npdpweer?f#j696Nc{}^pIkhv6}zuq6>m(&gB|bVbVSUgZYdwJ4l=@}=dE%L-YXyg3Zvh9$d;y4rgl{nt>G zw|nUlrof%)yeID<4+k-zDwxejh@NyRdlgTvK%B2tmZcKPv8ZHNFVs6co1Ry*clik6 zn^-Dx7UhK~cZ-mO>CEhoQ}j9oLPoh@&L>(3v0_H%?GxW**@pFBzMI3%Cg@F=`{VrG zrkT$U-SS6w``lQ$YuoC7^^>76YR0z@Wxs7QbsoC+-Jbif_s27cll+VO>LQf=0zW+S z>dEEXrUgYoorQVIO?ijozSkE$qS z1~s%ko~$w$l0_z~PEFB4LRaf`3OO>$6B202!C38t3%=-P!ycsv4rTe_S9BwgD zUjuW`kFQ)WUpX6X84g#hfT6?CsiRYlRBc9{b{T9#e}1v=Uawj}|;-XKAj*(ws?5}^# z&Y3a=bK_e#Z{3Hh+x)1^#Fn~ zVa4=h>sPS^*U2|##n?Yswjfpkut)^9VsP;d{Ok)9-%5yOYSJqTq!vz-jKq; z0u^U~;r z{dU(+nmE}wdB|6E+%3xIsXhwR^ zX)8Id#RR%)eEae04UF;s!(+<$|Kv{;9=iHZ z3A15SN4m`J=!W*uvAW86PaetD1JPhL4;ZTAe~8MJClr38xo`3dn`)?Hb-xW$#n0D=k52lx!r9%;#kdT5VG z4*b4EHF?fIRHWZXvJvsMQ<4(RY{y~-Zf@wmfb-L#4zFe5~kGX7!r|jneA8x)jrMX9K3KX>i_?#jyHPM_%XQL@hbZ zxTg^EAuC7g{hsyS5Ttd-`&xrq?iD&EB%+EACpXpMfFt^?*v=t3Au#vHxz$^hvR1=} zm4;56g&vmJ@4%sZrm@KA5cT$J=Df$PWtAi!*BSZ$@;cpd0X#=0;RPfMj_fye6^EKl zcwY~>n}=3zRpM{b(;YLX&q0Uxuek`dUh~OF!81YYVeRi7o3E&1eE0&neysH8b|Qa!cXfZ>`2PKa5>z{jd7J+R+g0* z7|P{^OM?QVTn+;tT>1E6?hNM!QcAvByJq@Y7z^Q&XLECZ*>m>Ck}pmkzy5DHXVH%0 z{K=nvK9GNg<=lcA4i{WsX&+On1E>%!h1Q}Q}S8f?>s3n(R+kttlYgL-r$>{_&Q75EAhkzWY*%f)eE<^{o zc{mKTga>be_Fp!p?@dMrWQTDWXax^CvjMPJ8q;g8PIlsrfbuaEpaGCZ2dKo3OpW~j zQlU6h197R|NCK&fzk$hm8}P=`#W;)pCp#^R(rK*74TQDjp+E^VywcC#<=V0bi~syHJ+Dfkj7Km^Z;pHhl{&-Gb-V(pX^vo>r@tFB6Dy_b|}U6)=0An47t zgVn{q2*l5NTr2CJui z$F%B=t^Hf|!nP+#x%0P9zd0>w;)1QyZ_?IlM)6}zlcBwjL-Rj?Yxw`I-X`4`IRoir zBW>Yf8?@uEOHKIeVKAG_r+>X08Nk(KmAuLCG8FQO>}P*n^>@WmNfj+v8pioCy=FD5 ztBDp(2G{k9*G$W7TussHi#fjI@Bq$N;!09gohSH;_@fjNZdC6pdtfD+mI5 z9tVf8(Lf3G3xlS(%2rsjA?P5WeuH7u?Nyi}rKdjt&z@W}fC)nZq3q1fE zKmrKW(yzQ_!m=o$zB5pIVMY%21TdHbb{3dVh_ zB_zK0USdKuG^67C?^mq&{`*v9y07zr!oqk32_OkH1)V@Q@F|bF_YgJ4W0=Nx7513S z9$T}=t|h?UnZdZ-Z0~Z8KDfk=O}rd4EknUPMMtri)Rai0!=hS%v4kRwb*iGOoCGOX z)8l1TmAy`hy(T4o*^R2AmYhW3hu{Wezc`~VTp5&D#5$bV= z&AHuj;*5D+bGH=cb(>_2vvtkg>ImBW*XF{!+-c>3cdhZQ617{8rQUc5Kq5w+0>kz zL2U+1unuaQnqwW@cHsC4gVArPwwwWNQgbE_dV8-1H?{`t^^ssFEX8&p2P!I0%Oizc z$gJ0>sewkA49)jp*f4SvCJsZ@NFL19z+C#dfnW=K=K35k@mK)_j3WJ-He1RtQa=&Hj z&{`K>+8wk8l~BAi1i5Gd`a|{!^JWitmq(05R)Hl#LOqeWp-e9!#3g>?$qUiYj*nB* zf~ly2@O4pxIx5tYY^I?bHLYU*CA0&*L2J+(&-kzt5CeoS`wBgL(w zhp*+Xnl@>L9A=OWa@Zf<8g-!0(4j&7+jbe&Y z4MVB)#;L{wkck_srH>z1N~PtXT4D=|OOtk$eGYRy_I zVs8)?-k2N~MdLz4qCsXzHpH7TR2yYAu3fu!EsyLXn%u9y{`%`&I1+xJTiOWjnniA* z+E7JCkd8n8h+AI9%Pi+C1Ry~FTh3WfjN=Z9DLs7d+&K$u|ModF0R)aZAIhG|>>w6Y z20M78!0t0rY`=$QVT`B#g=_G|n4*eeB7MnZxM8a?|Hx>XH-zbY)W2gWU6^t`blwUh zMu{yo70_VVvRXR5sQoX(y8h!rm92hi$jre%txZ&f?_RkMNEqOpD>@VE1pROW@oDUTbSyWw{?R7o5PVCtT zfb0otIU`5})j$o94C(>G*ZrVAy_>phpQ_6=Koku{la_&=BQ&gqF}cUl@xmbS0uKD`M_q%#d8%OO;fSf&NTI_H`xpbprdk zGW)tJ`)$=r_!`1>Fv>HZEW7}e9Lv{5qA99DW5#B!QDN2^u@M`v5sS+KHfszTGc>0d zWbA*U5vLgS`gr;P&54N$ydTyWGI_)XzQ&!u#^;V9KW0tL{_}?#2iA<3Y=P#XHd14s ziM&EP_f{uw$mN&S*I$U59%V$^!ly-6A@j$m6BF?n_>hEIZlyc!qG}cZROIM)!BRfJ!(E#(P|G=L#fSU5)MU|r znW;=khd#1xqOqT_Pc+hU(w!n)s#&6CqbpP;SkMWO6gG7MP8OFrDu^ehQK%lC0oNp{ zH_uJ5_>Uj^n*5AUo;-OH#=IUp%YV$MbKkeqi(=zDiq1zLoA<+QoS1>*I{Q2|e;gf@RYn|MxlyClQ zFj)yF_&XBNzm<+?bgr<*cmqs_$1%On(mdy#L<5%D>Iy z9F7H?h@Z!YSeuR)XNr$q)jch|tfRTe0MVA#)3iNAcsE2Uqat8NJ}*ykWV^Wy6>zi1Q_;u6!|I4bOS_mrJZo-O|w-wM@{ap`=f}=`hf% z^l^HeDyiK@l!(!lp7m(}bIH?4tMl3tkw&Kxh-Fz{kSp8$(e8fP{kHU* z&<{=|$A(TAx@G8uVU8KF3RI2*5DW)^yTP(~sXXw==1D-|60W*r)pMIn>sZ!|6`z># zWRRqgO<_+!O*1Bm3CuhKX|+abR+Vf<-#>tA>oCh^t zN=q@;k?)>g{R$f4P~9cb3E&IH*op;Hcp#{|h5NEgb91+K0y;wHtbAY2rZP`qA`i%!>kOJ25 zkpkj9l1W)avb8Ic?z(`=fz(LMC23@CNx|Az@RblAdUFoJWle`-#zCbcsFM zL{GIwt`&^u*e2C{eUS=i709gXZj;)oRLtxkH+C%Nx+DPj2^yj(*ek?4I9h z`kvi$W&LgJc$z)X38UDGBbm$! z`f&hGV zDCoqiXl^#1C1&HxVswdmn?&(Xg2I#tySl5WawfMEWD>HcMG#9sU13ieM%Fz>1ajkz+FkjURhCi(H@P z_|P^D9m2=BUVRU>OTg za=Vfl!61M!^o*_*$wNHwquV);nJ*M`7K45wTsMI2zCo_68GS2+iO8r+7n#8RE1eIy zCCt?!8l>|`U}&Rv_=32XvPeOOBGOc(!V)~9#-m%bZmkNPXA&Zw5iA4{v`(kj8mMtk z3aqG58`KG$=Hp{a|D3brubH!co{1g6y6((AvSjr{6g{s0*a8TbFNU~q!Sf{z$&t|$ zan*_B0gTCFS!Cx6*(TWrkOxIPe#pmI>A)u3wdi< zF-SzQpe|ZLKLfXmpE*?a85aP6ea7Z|AvekPf<$BhfoK)`%q;OU8_GW80)Vm4jBvh? z-I47BiO2}5qt)y)apGq>`nooNz;NdSu9oaMhz3v=g zXEER%0GAhlq(B3?A~A&`(lvsas8CPTyB5(>JCsoISl|&xN?lm<;Lf%kymbo}*%WaMT8~)|Fyus_!@~!l@H6qWs z^=t;F2+A9tDSIsWJ+$)Ybw*Xti9{pSWC&^P58^1t$N0kAZK#i92NzMAgW95|4!xxx z2AE5=IMe`w?dSl$kHY|_nkC5OrAAMSIrmFH!_CkE3%$O^Vm-kh)bk+?;124bjQOAW zW0?@%d&cO3+#D0+O*X?{!$RTOJQ6VA`P#?NI(6cXzv+agQr|AC^MT?q!~MSp8h|`r z(Xf$-|Et8p`DD*|Eeg2_2lP-AuVBSyUK{E!L^E{m8l)bro;0*@RZ&eTV!ocV>{uoR z1l;}>wS{Rf3lp@Fl9|GkTpOPxsB9~=dO`e4@i^zZSsPw=>H2EjW%45D+gTf4b?y3Q z!^|5t^p~^ereX8GZzON@{j3eA85aMc-Wd@)}I}Gh$`w zqU&FNd418#Wu~0V66>Z?Y5cKhu`0G;zlJ2XbF1v=1(2O^{0 zJ@F+7Lsi4xl8`Lei)koxgRhyWnd>YGt87|Sr(Q^nswcOsXxv&=D`n8gfxGvH4N|?5 z>9-VX1_VuFnojAk0~d^c1v*e2VMxBReaUJX2?esg5(Qena5`psjz#iDkN z$?x@BAY=Eah3uU;)QMs}3w64)kvf>aK$dc+k1Y(G@5GAIrg1wz^vZ#22_azyd0Qq3)l$D*lw5 z{uDqU1pxe&%noG057gn6Op}7{W%i)e)=O1E5g#f!JT-IuT!o#SvGClvinf}AN6_ihtINVxhkM+1 zS9KQ5L*EU8Z9*d_XT5EVzZ*1nSMM&>s*;HSf^_FYc`ex^&=#EL!`roIthl8KD1O=TPEu_%o=!UFx*-(NXD;!_I+3tcNzhrZr5Bzks#_j=JHKj*%=}^2 zM0o1dk9{r1szzI3PWECe{Gg!yE&j6yHpSN2lh!RJw+lbKu`_#M)%|mK6wxMcbtzzw zdd+I|*`PL%8{D<|u)(8Sr%fK#t#j|T-LkvQ+xGFoVG~Ao>pikT$FZHK?yQ#H&9?5y zCrts+fnH>+;(_b{2m+CyGDrapKr_$=bOb#>AJ88R0v0eFj0V|YBA5)OgV|s{SOnkl zs>Mr0BXGbd$PyA>~SD_9Lydw*yAYnIEFo1*<&ty zoWdSwvd6jXabXFtHxR~5OH)))OPXJp+y+~|&e$IQo>&P*x;J(sofWR-nhiG2!fZTobUJ-@`2cuW+= ztX`uw3!DU&@C>@_Bv<2}B{wWkfSOhuE2rcXu9J{>f+TdkxLvbb%N#%_<~#jLE0pH^k$7ecKi6PfYC%-Ax zzMd>R0U!hY9N#FuRgMD~M1wfyInokP>BV?gE!vDS{~l7u#_h;y8Ji(we0;@s+3b>V+rHX*+fGf+^;t#z|@QoAhhn zcaNhz=f9C^tF{LKt;cad2m10#?-OUZ*Op(TLmv8vK*w^0ZtA_#m>E^FCko$7 zhT>gOLs)uKA;^H%JI=z!!#j8E*?-u^(nZ-Rci`c6u-@o4jXvz%X5^wgOZvnViUpkv z04%{eAa~^~Sehc-Th5S^L9w2OJuedrBoKp9tw@eH!;<0mVe??Lx@DgcG@|e6e1YcU zI1mIPKx-Z|4P1I&ReNS9!oB_Dsp>6~tS5R@t_mPdMlI786sBJ?n!jS^j8$m)>^aMa z_3mZw)9WB?xoh{X%}ch}?b`y!=e}GqZt`n-UEQ58@eHm2XhB6VkPj2`_F-je@ocA! z_69{@m7l0+r;=I_VJS7)&r2u)3dlQg!&3p7F~wZFHuVHec5Rh7z_e-j&Ko~{bmj)R zN`8okm2N*Jx6?OQTsv>l#x*FoNtb`^vp@LjPA_tqoWd6TuWiG6*V}xIpE79=MJD%i zKEd0#0-y&*U;>MIzZx|~v}_b}h;eD|ume!EH|nUmmfcr%Q*m_l_o`Fti|T3BQ5K(8 z9j5ZX(TAheVX9}u&Eu%*bOeS}j}nVK25J5=(JMiuaEAgSDxJ0kPI40|YfHYKF?wLu zlzX3^_;qS#|1sAO9Q>x|o*6TDZdovQt6|Of?B&aC6ISB>y%xqNtQokAF0 z$p*Z`aeWf1?1;gGxmItFatRrNTGSJ~gImQ$Q#y}@(S*JD?$KVz4Vtuto}@-$rYlXn zOi8D;WJGyOZ$Pb4&M9h_!CI4(RltC$+mnkLj^0H6K%BvKcJ$kS`KJBYJ=hdhyPCEm zcGrxFYgTcqhT>nZw`_A`-@zZBo*xYBz^()j>d<=ip`BBvZltmMQs)zF=kh@XFout0 z41SM4&)#nP4K>{CDLlGHe_m=369*q?h z3VTbm-f_V+Y|){c*FN9!@1XHP%dN}iZJIyp!}m}p)Lpw%Lo1-81(0ZLsX)twV$u~?pBxWy{bgaK{>ZJA7JNt@D#tqIJ zcl*e(ht@r_=dRhf!G>m_wspH?Oqe)e!QuUDy60DnTQPXep^sOk&&c_H0`*$&0|4f^ z0uT=R@_rr|0k#ZBd+(W^IyFcS*q-T@=JCWp1+sT}9Z;3+ncnxKP(TCbOV7cg%)tw+ z`Ri==jvTnWZ6GN`+xx(SBiFYaW}Tm1aFJiW;G+z}0|*KMKsIg(kb@@gURyl0Xk@M} z6#CpkWy$eoWV4Y%cs>-r%^bOgj@@C-CwLWCzz}1tc`P8ty!X&(Uwf!@hYI)dBce=p zs(w~0RG%n`VezVKr%rwgubn=14cS&Kn7?Ax{CO+j{paK@#7|E>feJ$YP#imV?z5Yp zTsr?bfK(*`-{A6rAC1)9_~dA>VxkX83AzG!qI3LY3f2@UtVTm4;k)Qr=>&Ac(FpfT zPw$4WW^@J+XaV2?xqP4mHGM2fl0WXA%K(bg6PjsV7@Cm^j+;js*+|oQNR9Fwk)$`= zhkl}KUsbC5z~zGg(ACH9m$bJ8tKt?+7XBD77oIR+3xwcdC|m(Wnj0ZBqbS&82^kFc zFDC2AhDC5M8Mqkjfj>JwckomS5_Le0=oQrhK=y{q2ce+1M`|hBGl3NCnP-ajl|C%< zy~h6R@`R@#_QafppqbhWQIF0(B|nTKr*mN3nnl=J zI%m;(Jo4>0yt8}v(%xJ?fFK+Iu9|1xNUl`UH)Z88aR!KmFK9-}h)9?@jnte#YEJ*A zS5JKO?Kt+^=Q^KofXfGJ(17Q>aq~W#!_9~Z@*?cId@Dq^3JyHEeCZL+KDc_-0m$W- zK05r(m0}!O`e^=!weztSKu`?;{DR8|3Sja`;d+m9nv9j!Fv{pa_yy@ zEOvmPt@8=K#ub1BVBu9vsm#ZY(#)1mSSk6#o)3ejLt`@ z#%O92vG{-@i< z?TsT*{;1yU;S**;_J*8 zunPI*ap>iH_pWAM{_XzP0D*M?;6GW6qoFGGVOmkECa}cEM06kP0tA)%fO0DJq2*QT zS*wa@Got~jt?=OayFXkYXJDP>gpEiy6rHuOc|d&SJ=I{MqB|12GMl) z5^yJ&R#!Z5u;q5IfO6+6sn$~%C@VFWYr{t5FI?Pr;2a8k zNxp}bUyt7Wa*n(0F8zL=o`Kg#<&Q*JZUxgHND(&G zPxo4_JK)*X4kxO%0wooa5nR4w?QVG7@!COi@E;~ba)kgR&+cammjY@GMz!Q7Z~`{K@4zenC<6 zuiKnYxT;(MhyzwWz(a3AGC$paDkOl7u)q+Q>OEIEsR~#e`$>D8sW>xkN*qe%L*ig+ zaih47aVS-~IL6BrWecOrja{77DRlefswQ@rbL?kwA1Z%3^B}^iJFsxyxvPA}-st?uP-`My2ig@YdJoCj8mT2xBnyCed|Oy z2R9;J^FM7Ci>72=^Pahven0majM}w5S2$_l1zbL>-UE;7z2rbpwonB!e5Vq+xKp?! z&yG#uc9|R3sZ^Cwqv>ri=8wofz>I$YX^bSC5-2r=@l%Y+qH+K{27Q^-CD$yNA1 zxoQ)hAV>C3XUCYaJz`X`TJ!%C z+qq(V43wY&FJpQI^d3;j-z;~$jAiGgP&b1CniYu(XyB^7{R3W^V2F$$N73h8{x>~) zl^&#-O;`MYStK^!L+1`MoSV*9Jmx-#;Shz8vE|b+&5+-S0O@~(|z$??p(#Qxd|Lr(@q-QVMvaJBX?O87>KmZuZ%NTo}_9J8?($80Z!JT(O zp6Nb+5!qfGt1u~0s$?GfdnwXVnK^6_z*@L{>02!O(6Jf~`;dNRfoCmnWrk}vtjbPX zjd|!&neg5eeYQY3JgLEjC#`C8q*?J2aU4VN0RZ?j7MXm=%Y%a5e?t@&_0@%(rnpb%2 zY?2km4LFk&E_{hB@k*U&u0v}TA<{E&nD@G=HK<+b{p2`xQbL?UZG;767M?`1H|{L? z>FcvFb^|%H)5axaWRQ`~KRt8sSUQw1pWV`N13)m!`GkvL(Z(Dedqf*P&ysvd02Y;Y zJ;GF8C%mgO6))Bm>Zs_O4yG2f0NO1B4kb#XgI%tHG^@ z&P8aSU${s6H7mm(d{_}Sh&G}y! zE}~h8cmU*&xqQYxo5*v*y5QkFCz&Ab)3YS=r*z&@I^L^i4-RY&v)Cl38%TrsIf9 zATi_wA#mhfXh6}V#-}|<$n5M_D-IPJ28~5gq{gS4HyuafdF-OAO<2ZJ7RKcRE!Fq+&>fewg@nKF z7DezqM_r_TZ~ry-j4bn5Fv1P;&Am+UuvRzyY2J%=Z3jDe? znkB1(8$uW0WmXs9D((A8I~{v_3>iH77>e0NHO_OabagMfL%yY5OL(p_S;@MVUM%ZW z5<;&yi4<{mmiq|<1Ncy_PDIvnC2p4_$u{UqFp$M_O0qf&1<$TW5srK8 ze@E2N@f-!Q|K}Y{d$WV{3BJG;fJ88dH!?P)k9gRPDEF6Ez~%l-S~P(@QCUBx=ogz{ zN~&>=@a8z&aO=vMdu)I5U;aFP z=;N1PPP{nYhWLfsc5d6aelh$2_Zm83;(#Umu2lmU7#n`Gp{Vof;lropj>sMcEn?*T zA>WHfGen1oor6Z7%3e@<9)#~`bYGsF!o27|derW=LU=sjb zB%8+>yuU{@E}07NP8Yf(LIo#ko$_f4+UCNM1W0sW6=kEvHAvvrg;whVcw{*VN7@29 zD7bt!9L_op2y=j=Yq5&v*43fDTg8nck)~*+k_<|TFu9mp7q-@vhA2hDg;`0ETD_z& z3B|YTQr%xq+lfmcbqG(MGZ<-yy2s@BN>*rUELe*UP z{5)|Nl!A#Ir-##Y|f1H~NiJxE{}bVHbq}2LN}HwMiHl$jgL%PF5DvNoKY?BH&cg zp$b?E03xb59PN$M5x;JJMX+&1RJFv~M8#hkPTfJl^;kkqiQUe_$Cyx)A zGl6Z&PA6OS=ovf#DJdrj{){gJ&**|y)w=LXp{k~&n~slShWpH+lwns2Q0f4o^tN(g zfdq>i%YuoAG>l;3BFPXU2_b&YCpA7L>8?Nmf;8t7E`Xhb=1I;$lB}z{b_}BF?2znI zeqqs~zi3ClG-@oG=10S1ze4IY8tZ4GPwZ6|f5i`GNrelf2MHDXRW)jAgq?_HD+QRX zQOJ#n?jMOaG}|}t{ER^8JhiKEOQ<#U@rCap$BqA2{^e((Fmv&OU%$76d~tXA+~Tju z&%dwO_+;j#V%87NC$b;70-yl~u#x8~8pV@PxUVSBXRburLxD;b<~2hBFuC^NyoYkB3bVBJ1^++QZwr*{N_Q4?GY7@7})O zVHzzLiTxjjV(}&zD5Vi57Q=%&;C0WX-wlpc1GBrtp#GBvC`C zrnoLK5Nmlj10{9vh>H^4U86*OB*|v)m3yf~iH${-r4~M>a^ASq3M?tq%p@+TrB6yF zwSahJIaJZ!)uj}qkTt)uY3g?JfPD4(OSIw8vmbi5B#+MUMHk198a>aEHGk2ViBo1x zoQ}fkeE>Vcy4u&U(y%`+L=Xr0O|u7PRlg4v#PPV^cJfz`NR+VaWz(k5w>3C=>GToG z(sp4M6W}$bh@Jojked{1NQ$@=Huw7TSe$#JOQ594D4BbbVOv&y6x3v-1VBCj`jx>B zlZ9y|!5$9D%xvk6J|sFwXO|m-2th?sBs!R+Ea3kjq?Brx_?HNdlU_ll z+w4{LK8yUxOqz^xhyMu~8KsSd$k%lO(1T7A*H+2W#WLCDP5`O^A%|f4uYRbBQa{up z+ngDe^T#+V%3Wqznqz}+>MFmvt~`Dmb|#0HEcAnN@-{fxeKO#bth&?czhD;2sc>?F zAs1(o9@I46hN#AMwoTi`^9fDURW>tt(fF^*FvFRKH$u2Y0hKQ9e+-i)1KWI_{9`l6U*>!Me zb`CfB&b)_ES-R@mlgH=2w}d#hU6!L~=R#rBt7^*Pf>BcxYah=f&tHr&pS+!xI+AO3 z@3VwM7wEn9cRpe@V(K?I@Lhg`<&MCCLgNN{`we;<4F-CH&sYgYO!x~?E;AaeO^pV1 zsLmr8k@xeW2jmqV&hBI>MBBdP93khp0`k+#NgH3xhXH?%t@ZiswA4{=j|ewGvrUii z1uh>%f=pf(747@{_irteBkxKNV`H}PrV zbmt0B3#Y+&c%l0#wKz816i#FEaF``2Ghr#UBtTN9DUTQw3o}qWrFdfo9Xc9{J9OxG z8kTz@2PgYo`u#qvFTZ^69`L}vB!catY8oh0K`4h2kq0saq};@ZP%%$te9_pC)*l+d zj*v^`0febVSc;2LaFXE|Agv@S=we0X!-O{0GYm;&312aWrTb&N0l-ujo7Se}F33y@ zrIwb1&A>iz6B#UnYe+^wO9q{()m(A>bJ?dyQ5kp!ZSR@q*R!av#S*f7cu&8)p3PkF z82~}D^AXPD3V;zD;QcGbyIV%G7`sD9qfXEQH1Q!u+WW>dBg*2Z7-3ei${1&)IXv#2 zGq0Op+sS+hZF9`_^Q$SS-3l}u#%2WYF-ffxljzW-( zm6OiFThI^2d%>zAEtX_fqCNE8Dhf&IL_=i(r7y_tl^F|o2`+jF@3nRO zgkl|A`K8PFj}|X29yQi7aKgCs!Q;q77bw;-2tHkP^y7m1YY!dXD9@Zac|wCx)259n z{m2t7i$G-nxQ1dKbcRnA&glQG3TKc@g|lNoT7di?DsjeBOjel^r>>k5=K^xmcIM2P zGw_p7|NY%zQcPV1VAI*_mQN=i-M@d|VzHoc7q)FZhb@&Z3a8zt@ZjY72SazANw``m~ZR_x1-Fl{e)dqfoTGwybwr#xuc{WR({^3=Z zTk@u4H0<2I=^}tA)&?EMTE@WZ>QO!le<$hga0sN!B2Fzr=%3NNhZ&Y~m8%28K)SB=sGB2iS|GZ^O=ZssY7^)c1;^2TjU28?dd^or7-Gq4) zCN9n$(xTZ%ANG&a(77?d`2wxR6+kG61^s!AFgG-18A=xYgqJIptBRne!)i^EU0_o_g)ueNewu zTjpNue2u2!IG_QsU^uT7Muw7d!aXu?;oisz6rvPP;)g>}EHWX?=%b#5d?X#_N|k5p zP%w;}?M~Ca6f#l?yUFfhI;3kgZNj3$iF1~tYnQZ811s-noTeSr`NM%}uvhQp*|tqP zmbJWk1NJ}=H2{b}cfY7%9zHyC6ZOcNgbtve{!WPz{p8qyhA<^Y4D8$p)ImNUU=RW# z!4M{<$-Kry2Sm}jOE27GBh(S4A?nJ$7!{&}C_t1jYpf0dvA_fxfsP;zWP&L`nMx&< za7hFM_6D&~gDLjXB}idZcvuakxTZx#IXpk-VxNhOj$t8tS)&1=OQYt?F*B%gom zt44kMG;Y+hSHp@)HRBV_Ng`r*538E=@{s^?uag0CPB@ws)9p)I;q{Uqpbc$mi1~8~k+Tv$i2T&E%0WHBMUfHU(ID%?2X_br_>PsChlY~hzTCMp$GT(7q};9e+x`nf`xf*KtJ7xS>UrHZ_Ai*! zYuWqn_ZZc=`l>#$u~%3!RsL{@3Y_ zU;gkHK;RPqxQnub%%6NPA1mOtV+E8;IcZc$<=mbB2#4Z<(5rkOE_!&!zJsHt(`du= zTG92mjIfrR3m^aXc7E<(vKEt??ORL6!1N<04;~}=Xo+Kt?BL~d*@vptBTtttZxY_@ z<8cdD4_&o*VFC4?1%UgLsm}HX<(-)%mT|rz339}VhrTp9wUd=YiBTZ$59Q?n2?%_V zn|lhG*E{y0>1)wmM|YXsF$8UJBsrpiz&*#m$^i%j-8`-;?!TJCmH{PPrm+729I<)6 z%{CdXSW4Q$J4;ZAgD3ynoc7<06a-0!s#hjL{+*;6@4-k-O0o1+32W!M#mxI!>Hc&~Eee8U} zHd46)t6l5VIyh+EpYzbH7X^RZJ$3KSX)b@})77KaKb?)ZgwjU8UrIauJMcitMuScw z_ws*?l=UKC^3i__dHox_t1qnU-ODo>)D^Q`@82R{I2KIiBZQSOf@wWPl&Kx~Y(qXA z0?*8mkR%clNSRnV@tY}ktuNki+13@aLtk#Si@$B6zvGo>EmHTb*E zLGPwQyBSk%Vp?NATF7bS*U^vj!ZdL%KV~ctKMWW*cU;QLgWr#XH*y^|c=stxAr~l^ z2o|7$babrd4#Sr6DnJP;l(~+&nl(<)jF$M1zG+_@SySXyY7Xi-Z~6zb=>5#+eni*g zRuBkO)E$*tFUma?w`noMjZkE!he9%#P85wl=GFvndZ=7<7C~wciCHknhS&)CP^Gv-01=7nR|#6z1^`oZ2xka4`KjOn?y$~~IJt$ntyx7gtyz#64khX^ddnxGgRQy@ zg(Fs_sB@tbjayclo3@2>kQ*uX9qC4DeJ8n*O5iu$EJ9n@s#`VVq?#-(ENxwhZ8ylZ ziz^pO7OQ)fTbes9T1)y=i=STwAL%pU^-{qY_43O^8duz&%yuUr#vvos<@qwi@CZ7o_Q;;X=t>$WUoFfb;Rw_z-axjhu+A zmmE75$K)?O7{Oiml$wf`z6M~#6*!YA;(HrWgtOezu(n(pWVxk*^gXGpFRfkF!rYdx z$ZPo^9*61}mY3DSQm$)FmRp)eTaHG@Wu;jV;w&m!Xf1*)x>#^zX%Kp<5V8W8qPSzn zmLThi!ik|7^KoWs>Zg#`z`z)s&t~xHz=IPE`j6@1>9M1c3NvW5Qhf@Y8NJ-6+wjI^ z&-JGxrO4HfNRU2(G46zA#NsYAEcv9|Rj zN|_>_)S&c$ML-CWax|KtSEAHXPiYsPBeYT`Esql!p>T^xi<$q7la$=?psj61Tdge{ zs-%0Tk!-w55Om{9g#IW!3M{!|X{@ue(QJq--N?M%1ckl1F zn)Y^VXdUQh-7>7V)>j{O$ejlb1Snae%e=~zs98l_MWwhyK9&R?j^@q_gJ{Usf68y@ zfJl?s!rIolqP5mK$hwPlxOFLh;}@VY;x}W*?CzpsH{`o7nA7|hu!QmuOuuW!tF%(Q zR%SK4-X)tVp>@_)#N?OmWVDFft>w~nPP~_%0F9rdfD4ok9%ttC2BB!f;DP(Xb5PHY z!}@A|UfZh&m)3v$`2MYe+qXcYIPa=esy6G`vOyb7peRBwCXQLe9Yz{-34mFzuRKZx zEFyZ@lggvCLg{+uAeSmvC|z&5La8XiXeN$XPvN{NoT+*j1DH5w9hZSLOeJGnN{Vww z8CP>=J+q49@-fDxs?pJfiDOm~`kBfU#?44ELvWR+(P>p=j3LYlW)_96V*F)A6fZB= zS)C;o;BVXos0dwkRz@Cjs=`f*{9|XuO7(k6MqR5ze&osHu}`JSO#S-x94ZIY#j*gz zI6FHzNFva;^1{o!RG}bY19D2uLtf>ldfe45el%rj?&9>D70|^Oe`TPK*PGrz9S;^g zKXhV)@G`yGKH+7e?u?#tk=E1;*V!1=)YBI!QTtjua5i$9NN2UZ&q%D%Rk7jZ!h5R3 zUR5+S@V+w524%77m+E;))Jf~K8l)mWklzE@l&AII_Okq%} zRoB`Lj-xJFez#DkBQLIPNl6g$bd@rM+$|yXQS5MF=uP1(y(zdtJDshR7si%oRMZRX zKbDcP11X7wHB?x02&`X^@%1}_)}KW6_MzRv)w4n#a!MBBm_^?7bQVF-trB^Gc2+y$@)A84n;)NVyQ4fWP!suZqJl80HVjmEg-<&+jw zGmNo=tEL`9M_D6}vO^#j5HA$$+94DqqD{zU$4=zD2~C;uWZ^H5r=h7&7R-M*jbTn+ z7c!0=MIA0TzJ@v-J0cvsiuWP+#7)BM-A(riuQsnouBo&S=CltadwV;b8MP*m)73r8 zM6Ef+_rP8iR!?LmpAvo0aGENrwc_CHXWS1j+KoM{k#kSsTFmP{`$a*HQOl$AtaYQ5vd{xKVhur^!Cyb#go^ zw;v?WE@nQ>;TZ5ACs;FNR+}FqEJv3svfon1WD=}%0k9X|Tq@I?Nq2FRndYQ|oAxC# z&4Im?Y0lncra3v)9P-9qMT;5N9$nVVTYD@f_V$e9*_VV4%-L?}euvpT$IafmFzVFk z!|Mp0nO(Mqdw5iso%U?rCXwNg7da4H{Gog3$>)YNj8oB^;t z4nPVkVSS71vIB&$n}5ZLus!p3CEd|m-|k)Oh<%6k7TQ^TxsdW{_OO0^^G+W;&a@=^ zsJU_#xrIm){6%tUcl#z-bhZDdFD!^`?i{zo=Vz8H~ zbR%W^TPkOhWeG=ky-(Qz54#$6OsKBC9ZAJ$heB2R57a`26Ln~GR;z2vslyvMy}E@{ zl=oZ}`zn&wg&$YkM%XO5u%I5yC8EqHiv7Ryk(Kai&y`F&*@4Awm@pzjXli50UbLb< zG5%Mu1Af_n)&iCW|1IlTQ#fv)LXMoS2?zG+0i3k zP-A4%t@rHw#j6VE3pv7P;lpj={NA7ejTroM>(V)GwAzHx#W2QkfJ!7foDQKP`O$-NaM(Orb{LA+(<0I4RJE?%+TZH zd74;=8SWVH;QpP~yA!r!mcH-tnLLjW3$Yn@p4=Wq5JhAM!2C(^b%+8{6qg7gs2Xnk z&-+ba;u&@VATQjQ;USK`|1OL{0k|>aOP+y;ttTx?LXrENSjZOO1n`DvofVC}Fp*DM zueMjEH&Vs&xH;3ryKdS89&R<$gx;bgFf3eZkxE%5|vgXUHh+-fZIIjd#9@+IUYsRW{2 z1JS_{1>)f4P#;g5`TN>61+!=VzHZHLv)I`C>H8nvM-g|Jx;o)oTpTh>tD26?mMs#* zJ@`S<-#N{*1p&c*K+q6?J;bGzkcKM!hpDU&74MkL^ehtCncS%FYq$;(q&m4+h+TQ0 zRX`(jPLe03lN3vBt~CsWdx=ClYSSc7y&-g#CX+sw9woZ#G(^o#7=yi(j8-EB-(lA= z7iYYjXcZAN{@KO1u?II!*j%;dma*#(F%C(>!oBNxC{9QhvIUX9_IcbGq1@2ne~|S$ zKrCb*;?Cd+opg3a*{fBRXY_KfIuM+uQPDX{*;Le#KDFzRob3TNjA_L;(`f20^9kJe z6Ql17!o>S=y4PkC%y!J&e)L4Q#p4HW>5r-wd2jl*AUk#DrjIwguN43T;bI~ChzGER z@-SFePRe>vPPz^8+R{aYOsDhCfD^M!@6aMM^ z;|Vb%%_lxP{bll@_$Q&Ek2f7+{JtS=Dii)4R_#FbziBf6IFE|%d?EQJ!-a0_BitF> z!53!ge55;ukKr6u5w0qCMNe2e}!ez}Cc-uq1b(E5sn*dKQWd+>%IjH1v~Sxwzbcn_7l7*f0S|fDr9Xce!x9S zNEhD!Uh~S=kwc6B3LW$n=z1GK*P9)9z!;so)E{?)Jy|vOlrgC~XIC;#hR4)(%aZ<6 zl0~_fo+GlnXlSru+mJqmkItNvGr@91?4<0=ZrU~>=S1G*?dzWOua+3Ob{FG~7*stY`S15HzWP@RZ*%D2h|S1f)Z8ez zh`tRU^PWggQ2@+DE(3UQK1sZcV#RlO0ZyPbvjZST=TNV{oXewP7WuojDfvMak*Os1 zccSINbskcca8Rr6yrq}brI*$!w-~85c)bRJifb87WZ$5EfRo16$B*}`8;CU2--UH@ zanU+*9L%lO5>LtV3CfanF2@zgvl)WCR6R|Y%MT# z2ej3e`xj>`ojnC3p|!mFI%g!&>KrU&w^eVdCm=>!Z)a~uZ_bb91jeh>6KwlaR6u$K7X7C2u{5 zzOh{d+u0MM7tolHlQ;+;rM}z#FjB|U8W%*l<3Xbq^gfsl+VbfRrE-P3IZ!uWclr-0 zOl+)+uOz+n;T2mf+Qx6oLrGyir5cH_SjRigs;!GM)!)C z7RSXtUy(koM?}%~{*2jx<$JC$Z#owL-FNQ3i8(b=TBX#$P|M{tEW9V=B9v6cHgZNMX1AcW$c&?h9~i~z<@UZe$1tT zEqFq#d>0^L9(Bi+$s5-47AF9e#)ZSE=%Bv3F|J5!b z008z44^SQ^=`g(!L0UN@MW@MXn3Q>tZfeV+P@OILtGoks^(n7*Z(}%fIpEwzy=9!T zNaV4LRIZ_caeO6JH^^It86sS7a(K+X-6#f4{yB0_)tIA4V^9G8U5Fnz^8ESY#>}M^ zOBYWnE{}hYNKXd@^#Jf{IzOFDSY%bvDz+Ak%!ErstJu=R&!S|7U*n7iG*UKzUGZV+ zUw;WUcz|I2fo)ZEl5G`%l17XW1_A;bv5*1i)p~2JuRW^>|Lt%D*1zcdiD%?2>JSQt5Hl=)}>2a7olK~ z@MnaONXx7)`UQ=NK<0yxGm*+F0O04ECX6r1(u6e72DzXndYiD~t7(-Z*^Wy>N25~) zXl3tMtDx&B(1~!v1a4auw5tNW4X&X!rEuG*ph1EL4U8nXmG*H8mMy3gY5^`KzUh=h zz0MW*g?c=UA8JHYdoWjMgHLhi8DH?D_$Q+m;-8`jhXHUaO-sg?#4eKY0ui;;Q%TPq z;}Iwc9gTLHfVNRV2P)8saL5F-oeG+lpy>!4LM=rRtN~De`pudWh2nMt7P@H&7EZ>J z3Bb4;K}SPp1GM6a%1h9q0KinG6iU#EVwefsW->H!c9JNpDN#tEWy-(MnXW6%H1aac zwBm=LAH(TlAuiMeGrkZYuh3u=tcRvD8G)`?26Qy~U;^4p1>H=6P6W{ebR`wEj{?07 zicwcRwBi=wt%A0apy~XGC|DFBMJ&Wy=pJe$_oumGS126LQN~gdIvTw;Kr5zbClz!Z z1v(MFn!xR%f(8kiQuvkbA(BCRpQb+J3(e$jCZqa#EQ*tXrHo~WSjb-D36>w^9dRE( z53LlJuU-apG@4}sx`r_{_f>&Tgk>h6YpI}f6zFY0GVzs!uBn2)AVJgKF9QRG4HPU} zkPUEp4x(TQ$VqD`aS#cI@-RTn#Kms|@I96l((7+ZdXTZ4Y^D z=bM1`Q9(aeptr%#Cg`rDg1#U@)0vo0*W!AykjMqH0@6xxjzd{;C5C)Uyz_Fg$pT#UP1_)M!y*)fLM08Mkd5?yU60Ha8jhLg1pW}!QJsSkrw(Q)sZ&>#=#iQ2FX8hhT z?SvdI?R(d*BkKI<{bP+jU0cm=fK~~^xwN8gtQ+au5MeNT3wMTE&sj~EX zH-*)ahpO80=~eZ8quCis<}4*uM&xuv)E`D?Z+tw zXATKaS&w}ERzBTs4 z{)}6!x1C|w`U{U^PgKA6Yvz0$Fra&%eLp82o;va8S$)y$6B#K2By_e?hOy=B1rrCp zV`fJ7izQN`Scp$)ev+g_y883bPh<^QX%&eiOe|!t(H#;j!}JCqFm_sn6G?bFDtHp% z6Z)x4$%0~}J2#l}-o#`!RsxD84YeUKNSo#^!;B_!6OV}Z9nB_rls(LK)62X3 z8$~*ff;7~jOvzh1+jhz)ArDbg&B%Am4P!3J&n^nSWH>F+!fTZ~iG(FvIZu;eF)%V7 zA7ecHHw8}$`q_lk?ySOiNWqwbx=Lehu1%|&BYEB)76#*1TpD=5LY=))+vPmRy$8EsVCKYst(##A~J$8`8(Y<`nm0ZCe>O zRNv0UTK4CnugosyXz{+`%I;|~qXCyTqWCejQ^_vflU1cc@h`*J_t>n#mRXn*#vi#x10oj0t?ddg}_g7b#6P+3j(s@3#KSxrf>Oj)0LDQ|^Xi0@F| zQeEaPe;asvo{b84HSyd^~9Ez?1D8#I>XCCt?o%*hB#Ji*eyTO@qhGCs0{evv3- z4X3q)$6CRYg04tB%2KP`1SC9%6g(*?MA|p3Hm$ZEk5Ciep?CJ`66Ziqg*^Rl`N8_% zGWAeDXe|G>y3sCvPj9w0q)|dHhFz=#Ve0SRR4UbwJ3>c!OzWZ+1f!!it(+{;UIbu< zX*`v?@;0%*fnO;%YmE%O5rApRWhv6~HnEOaTx#U?(9Zyv5XuWB+)-jL6S%PqodLjj zaS00UD6xhCw<3wllD+s5fC->{QNo=p4wLvIqgB37`ew#mQ7|TpO~pUeFyJQ)Lj$-p z`S#Dl)&eYwVv#TyHKudaNoqY!U{3*{A(V$o-%Nq(CiDt=-hM|cVG#2lx zpxuqNFv1%An)XsFueteR2w5RQ9Q%Tv`d#F9d$F}BLK*;OHRTvzs4eST>Y;L_v|RG7 zi1==!4^%tVRfevN7OL-Aa9C)9SxP}|`AZXpkD>^}geIsGrJ$?SF21AfWTh+ch`^_E zppPrj>j>!0b~ga?6FrH$%8-?~Zord53-o;nOpt<36{nE*=33?VU3t*|9#W8N@qY4N zWBC0Ss@stCK+%k&L0h5dfvk-89PLkcS&o_}aR97UG#X?qzEFzl%46|>_IZ=gM81o6 zm)lz?WAQ~(OQ9eMX;Jf1+}75Z0?KW>%iMOo#LKW@*WaR4GI|(vRP4=lFLm#8GS(6C z9~6yJ6nsNnWj<0tbvN9p+$5u57MRIjRcpOG6gHWtfF)Jlf1rP3V$fyt)+Z72@V_PRJl!h z>g8GhCY{ddPm;{~g^|Cnzq9uKXG}&@jbfnOk2HghP>KE0pJhYELUt4FQ7;+#CleYN ze--X#3hqQW^oMbd^S+lKIz0Ffs!^-b&nrCwnl>nS>)END&s|EnFJShvH;ZV^^htp}EE@7$|_%560K7ME63W!>{8orcRd zo&n+9-??l-k>BB~*AB9e0Ks};Fq?}TgBMKJl{e~%O5Z|NEbhjpe>+niP&6U8TtbIq zRW@0gFF=M-#yF?_(EV@vE$vdWwbo6gncm$k6Mh^Szult(78k zq~h5YdFb$ zmHmU@L=VWVi1F?Fkeo*(-wE%@_%gEP6HbArEJ5j4QAwC+G+cqPR>3&RFgzs2c&bLs z!)SgfEccfJyDi#RbvyAevR6y6FCh;@?uW8Fn}AvA;YjyTMbn0zHhlKuPFm)WZO+B!IP1K|9LO zJR}Y(joHo^miFFX>ir;3Q51=*S3~kWlt(eNnd7Ot$9fpq-nRpwuST%Z)jUm<+SP%h(P^vMLFKaSK`l;9qQ9 z9{=CjxL9Tgy60pNM+W>DBjsi~it;~_luQPRWL^WLC25+9?U;dtgOChfbnn-Z$Mxq@ zD^h}SRA3TewTTs}f+lxp89D_GQZV|eFxn|FNsug!xuxMQPP3g+nA*~b+tsUt6-44L z7Zpwv)zA0ec^sW(2{w6@R|z|Y1d*+9!4y>61kZGq?GN$7V46kK0~VLIKY0B2?GGN3 z{lPzK+sH_fhr3`qET8-V+(|oqEq4acFMRVMS7JQ6aD=vR{Vgg(VhNM zUMC4A)`^cXG?@_@IvKVrYoM|UCR>3?L8Fwlq`x1>3R+x^oPh*}-bjZCFXi>ql2Vf| zQ}e5dQ%ydp#1sIgHRYpuvTnJdfsZODjmF3m!;h>y89GV~FhG|)!^GCzjxjbs+g}1~$Kw>K>pM55sx6YoWWE(RDM_q#dPaF{LI~=1!@GJ}GChl~JGCQf#?0Jrii3BrJ9cmL#|W zrB|`7>WsXooTyQ-4t(V`=c$7Eq`)M@4rT4C&RX6>f!U52@FaJ3%30IA<(oYKcA-6d zB=_(KMK;y*x%EOL>_YqXNbZ*%9cSsccJgm|NE)a=w>;!ub`U?XcPRFUGWPxwcD*H4 zfpL^!ct{*o`gB%cg%I`*-D?kJd2@g$C^+mC97(ZW@>le>qv}FkBk7&=!A1B@FV)ju zK9GJn+^b9;UR~&Hi~}a4j(`-I;V(tP*aoW&yHSxxoK+IWMFlzvmPzw#q)n1wJ}EHC zkR;8ok)}wJYkDX!TadFshF3To=aquNx3kzGnCJ5*sTtfPk<)@8=36gYMzO|}|I!68|6?J+zv*lEYrx%!Tsw13^& zeF(=D{VDu8P%+L%3}J2_VBL$}E!wnU5$i09#8SY0r)%o2%!>v=X}MjmvyfyvM_IPx zA+eulnesM;rSjn&=|<6yNQWT+>^-{9Z_DevlL=n0=Mxl~a@E^1*QsU#+R+%AuF%`k z3LW893RdNx&DWDXrFqy#ax#d`srN&D#S3|#5JT3j7((o+R6|%pZl4E?D2hbS)0q!Y ze1i80t3~2(4Pqe&d_C}m04LfmHln_W0RWr>ZErS2f*(yayH)`B8f`x+!~a0xw}@Yv zR{SW&7tYcC?-wn^0`MrIeJ!6u^ke1i(tM4)z_~PrCw-IcLX+sTukzfAK34@rze1mz zEAQXa=Nj~x%ynn_TvK`fnm%jw&wK!VuA{vFLZ9n`Vu#_*GbBra{{2e&zMes^O`jWr zqQ9cg&FFI=0NziZo5H_&Vwa`&BAKav}Zp{t2^RIA+Gh|eYp1KGP2_Zb=b2LopO*M_1^+zfP5Di`^&| zvRCQcU!}17t0*(Cz*fp30Tq?((rU^&YMRH2Wb0T8ij@p^W_V)TBJYI(>>c`k5`Ffi z71PLbUz**ch0qfR;~$^`jMO>FnUPcg?!Vz3b@UG-3Zt zwDz2L!_YQdHT=V#9>P|pOR-ic*Di)1W;J{>iYty~Ezyx5#_@x#{@KA-#jlJnwY8j+ z*Gwz1KtIZ~{i?*JLJJgMS~JBaxDPcKv*i=p+jxHHTwax7oWxV|$)o3&3&ld-mix%~ z!VL+A2^CMsF#i8V_>Hz=`yD@ihNKke`fM6hgz_>^WX;&I&-7iQ;OM*Ja}r$ zr+d;6Fmq2DW=H=aZbSC!plTQ6&`M8pDHDB(n96#-mHns#BS~!Kqfgs|NoXiZaHmi4 z#D3Tlf4dv{#ap#_-{!rSNZg81{)SEqL0KoOJUW`>O1yW>{W<*92j z*2G3G88u<^n7vtJFV2eBtu4)g%H#mSVj;UJUO{C?8i?zK5LBPSb=H3sJJa}uk9xmd@r`Qb z8{0)BYtvoD+LZhgTguv`Khq=|Srf%Z)`qEL!bav~Y$KyKlzwu&&1BBsGvg&QQ?WaNl#PqE@%kg(A9_6DiMD2}KNd^2IMvoIb(qey}_WadhZ zq5c*VgIfXduj0Xyerp+Sf}YZ6o<467zp+--M~tI1ap;CVrx$~{OvSq^NemVrmAD}_ z$05j`;6gteq%}IGvL2B+WEfM$0Ik;)tp(uc(SCH3p>LS*0MToTDhMknH`K>5?m+#4 zC456zN%@98I%x--qV4}#{Gr4vTPnP=4H|ENR%XDmj98<8k4%y{SAoL0+CY|JS1MAU z9`{rL&YJSYBXmqB3qNocbnjoM&mI6ci~pVRMQ#+^Ufc}+*55c4E1-koHDC^a5qFmH zC3a8(&pr~f_3-pwEZIZ*Lb;I=FA}=r zA=Dq{F||r{LrG$WD8eA22b+RBF~0C#Zm%yMr17HNjpId`Zs-Yx4->i@M}aZjP`Jm{bOMdHr zBzopwVsy)jyrZ^dO2=$atjCm-{{m%u?3d-O_uui|pC%S^Ui<^b7xk7Y$wQ8!2>r!E zHj92afqt1jQ;HKLnRkX^PIzffDBruOzg6)-_w+lty{D*`k%wr?>(>;Fgaha&vZlnh zYzkdF?I!|rCh?2 zCSjozE})c`70X&y+}fmndYVtpQsfGf)xHo{B;$$78QyCU<4fMt@4KL;dN}S5<4fSk zNKCa6MTip%@n!1W_*#Yr)QjFy3)wsL>!Ji5smP#o+;ZiSxGH(3Ap?h(PU~IDX&u$p zT!ye$NwU0zh4$<=9U;>ZY!Y+}<(u141JqK*jmTV;%Sm&RxDml}lzK6Q%KEZ&$>#|v zK2QJfguMWG1Et})OhXZ+VJrZfNN4FUdA*Q1ItsuQXowX3$_&5{YT^WWv`*1q?E>Js z(GyVs@;(mNk>3xeb3B@iCOtvhNnAk4RGmzz_=zOZ3Yn^tDHXRc;u`4+*VuzEquw&t zP{#^SQn93a28K$eF%!qBNFNc-BG=*!ZrR+&;lap4?xChgf9yA4#!`VtcYtjOZ z$HjoF{(lQs{jzbH1uD3jK^AIlYK^!WV=Yp!HiH#lW@?NZ7}NSq!QU0KP>6w6H)E_P z6s%og1=tyAZD>4ScFKIw)4I(0vQf>~U1h%L`CaCG)l~fJv*}%2uX#zuzk&somafrT zt^Vegif0gQuY6)3QcmnWI30z_wrMMs)ETXu(|hnV@Gu#x=c(Y?1{o$||I{b{V+G?j z>M>uI1Ws@-)g`0KWl}X5$Xf^eG2uB zV2%muy>rt14ES4V?ke~j!vR#q6!k6&e)cZETA{x2%zRVWtI62OdeUb+p9-FlA;tI1hk6(zPhX80}$uNo$eO>LaCK0|2_nk5J;8_OLa; zt^~{x;RXs*;+iy&%Ju<094S=w+u=JfC{# zOS0ApB?e;;{tFE$6|bj?4xziJhYUSi+C8PBL$>KLGJ(h%wb9Rtg3(8rbAmIBuJ9i6 z3SVPbBSyIk^lMPUzeT~{5dKCXrSN;_=&dbIl;(a4{)R9Y*i!ht6nZ55e<=7HfoOt$ z?;KjDL)WW_f|0xu%FH%H*M~me1pU=~d6mx>i^|M9F;6VycG7RHm$eTX)U4D!v6|vd zTZlK)8~+Ab$2Hf4{>Q%z+-*>p3EWl7z}<%4l1k$CQ{nzq!M%sGLw!r(_E+JKR&ejZ zOTeQPZeJB{HwE`LLm!d=}MH$6Qz$fw706PY{oy__dxayyB2mf)tlxJbJ32xstS zyidYH+n3VpFDXJMiDOW5?xf;3Ql<|flg*^LlHC|;iFe1j&)OLlfsxd#VJ>%!=sE8($M z@N6TNyHdHHtW@{r9Od4;EyTQ3t`{dIVq3&>X!Iw^fHzS1=TbZC15#Cq1U8Yv|0Uz8 zCfSvQ1Zr2J)h1T41?i}NbI?8zNiQ7d{{3`UrJ;=F@ zI?42W6i*t(r}88w92l_}0LOA^;0PWtP6txXZGEzHMWd;zA*Cx-r(Kj<8M&5^ zoR^eQmjK@joVEDgNSz)Sr1?hAy9TPYMr%I>Djtec1dfR#L>(y z-J%4Ya%xH9mdY#>woP5SlpR}ajruX?ikmU#BAEFjieJdNI-BFhCBElw!&pjvD7jv2+P_)Wn)ql{cXT znG9OgJBu6V_|{o6)C6stm1dV!yAEd{%{7n`SM6);*BoKdG}OeU9BMF4So8!7L(#?v z_CZlb@7`=k5pm(xTi?MRMnmZ_Qq_M{tpKGMq`f60B_P*n?NO*M+`dHK9842JYqCfQ zFLV00HO(iBe8}_~4d&KNba%DTTli@ux_j-k&~_DyNAatKwkMgx#qF4B#q*fM5zNZs z^~~_%v4nEj77q3>-iUH{W6ItCopKwQ@&j7?AbTeCK&1Uld$rHK4ofh4@^#iW`jt?M ze*e2DJWjYKT#G}YSI!HE;!tH&d8u&dCi*6rp-iCx`WAt5g!br=P+9Q-!<`tO_<;R$ zlXe5Z&FN`dO^%Y=BuoG^(Aip(178$j2D6Vl$T~qV+AmH5h=^!GJ&OUb8@0l_P&|Xg zLiP)NmMjUa0dNSl5lNPWonj$&q0esgd97H8J){~?PULxpScpBPnomxWcfcQPA$|6w z@Jqx(Y)PM;oD8{Weo}JLM596_7flu8Tr~7%6C%TmRdUf(HPR{>=eB5rMjC9!iblh- zjNBG&h)u3cJG`Vl^iwqLdvPpkR7yK(l|#3ZVsCq^Xx;bXM*obI2@SJWf?rN`J~b6> z+g?1-pdmN1G3(>JC4F0=qHo)aYZx@x##$fgelC){3|SO^P1$yP$6cz0uX`92?@Xi)azT?UPtQN~z(rV7c5RjBAt_ToAQ`i=Dkl_mIj zG{c0Sl3`*m?rCED-Ez`ACHhYRFsms3pXB~7H!(hTiUv@+^Z6-vzP)&}0l!g(SiSan z5RL19tK9$g;sC?^8fA%;b#y`@@#&(zvstoFt?Y>+d-e5#Rwi9Md37)$7rFBF+7cOc`f6A zPvL9GcOOTJf0K|c@0N}-{w1{iKl4>1d+r6b*>#bj!=)TfoFQ)Nuvp7DyAPz|D=>uo zR`fN_?gOc~2lSUIHp;~VsrVqJY?+Xa>KStJKq{-1C>FA*cN+C9p*=iF+t&)&{5+}~ z>?XJ0(Zd_(w}Dj7-7q4C{5Ft^=SaFox)X90%~k{a0Sz{#ISVvsdsot%d_BEB$V4`1 zeLN%eL!%n1A7$ux@oOplYeglGOSW+y7f8iBDUH7f4~+A;Kq~7CHZ&v2MO6lqRD4p- zU~*oS!6X$Aq!~==37M+gAgOq-oEs$5IF|^dvfqp}E4TH#jA?*hqh4~%f~TUps|bK^ zQ5`{J`F?!PM5ZnM{g`?Oa|CB!>3-ZyEOkHD`#V(>vhgiSZ)2I>vvfRsg>33!OmWcm zhP1tzkj?)|;hV^FpHJI^glz5%h3_Y~2g^2@Z0e&nA)DPz;lt$i{-j-) zD;9Efxh&!d)0XVQaYAJ<#E{zSgnPJ2v06d*@ z0AG|Zw?7baMN!-XfQEAR;EVF)_I!$`Nc@1?)AlD868`$My(s{0N89hn@X@55_}AbG zoE`Y0&ocY~AxBRqj$?R6^5i7(S2^^#uJXK_KKp|b`#_#a?1Mh0jy~tpXW~O#l|JVw z@0-!*=lW-^FMWQhyl+dNb3uub!U+tIo+#h{Lf_|ram+tYB7XGIAN2VSeXa(8?dfwi z{98=7>8KHt(do2x28|_oQz|0M%s6I>(*4lXIFw086Y&EZNa0=>#*2RIx%{oxP&(dD z@t+h6rKltZDKV^$C5qd)7)Le#7c)JBQu4;+%oEBw(FiC(_6)jUh?y%Dm1An2jn|2Z zdB)Y~`}Zd2oyG?fc&3iYb)cGeK+sv}#$Le*P!-~JRjO52?t-eSOD@{-=`MC9L$NK? zRV;Z6Qgue>Pyb2t*XqLkQRsn+{#t(~^gtK?aDQgpfo1+l{>(UI$90`u6@RI&Xj-`} zorkl9Tx7Ij3Ey_PL^rLW#cSwav;Nye`Ia^FcE^6vUC*01{C##t?A{x( zjBd%+9a|GOE<;V&-ovA(3|Ow)xpv@UpXPU0q*@E%D8=@`l998gj+!(AMbP-<1e{9i zQLWIicJ{{AX_eV4RawV$fgnpshheGJg;rIW?5N`47*ZW*w2*)Xle$1S zuJ|QW{%_)%2V;buWHmrV7^(B{@>XV7DH&{Bb5~VVP~8y+8(z+9mQ7I-QRj!}7IY(;J4lYgkn8)GZ7rQR4M(?esLxh6nvcak`i zFpBa=>8v35--DTK(XOl1HEi;J`Yg-9}mY-Gjx<` z!`x*GST{D9ox*NrkFmGe&)5PF#LMt=E}YxKYxrnBMN?I?R+FOHr+H>(W>(*9rFjeU z`Q~3N+FGo(cwlK~Ioa}vWww=>ReP&3R>!RVwC--5Xv5fq*<82zW*cZ5VSC(;v#W16 z#%`tEF1s6cf7(0PYwgn=92_DX&O26foaHDuwRM{5bk*6;xw>y{`Kt_q6g><)@T?>e13;fTzZ@p=WM|UKIvcm|d}M z#f}x1RlMot<+ajlzc==-?cLKm!TWM0he{PHHLTRV(&$RJeOmZT_xWDAOXY)AVynFO zZQ*;&uY%tuKhfXaf0)0{|3lSwRkv5uR=Zc-topd>k85FwQtpNsZ*iO4|SsJ2z9I1omF>#-NJx~ zfHU=K)Z1R)vwqk5R~ocyu&KeTz~O=G0^c_r-0)B%`$pp$U2SaFxM$;YO)52sYiibX zaMOp)nm0SxT-$t45Ck;~S{wAS#efz$EuC8qY`MKvg;u>=CA50nx^n9otzWd!w%Pte zogd=bvTbL!-QKo1cwBHnyUOii+MQ~zY5!yUx$XCNXx3puheI9y2x%O$D&%X&Rviy_ zYSAg7bGgn-yKr4%y5x3s?>e*V%WmDeJ?K89ds=s~$H*R!e(d_=nVy|{KKN-|FNa>6 zdY9`R)_ZFo$3D~hHtPFVznT5{{-OQT`oHWih6aST4-F3s2-_5PDC~B4%kT{YYz8zN z5HaBRK*xa<2UZ^#II#7=>80V;>?KaBOZ=yGji7`vr(?2d`HzC)qK>F zQ6EOfjxHS2f6Rrk{$tlivXL_)|Bm`8YEP6nuKTzf;~tHBHNO16{NHDM_3`z`w-`Tu z{Ic=8$6p?wKmNn`q6xJojG1tA!siL%MB9mVqb;I+qgzM+6g@Kfz@%1_ev6qL^Ke9Eh-K~vMGb)Kf1{=@VwGc+^2XEd47b4KKhr!)DPK{J1vxp-EUStDk> zpIv8mo7uf)FQ1(-`_k;+Xa6xLe9rN?-R3@-H{|DPKUe$Z+x)QkY4dXzR9moeq1VE0 z3y&?Tv?yxPx5b?o&suzIiTRR7OXe)OAIHbFiHnSTytK*E)k~i)tGjH}vg6C1E%#mC zXZghCzpkjXqR)!kE1R!OT6txqxN6F(y{rCSU32xg)dg#QShHuX`Pvz4Kd+mfe3vp3pq?6Gmx#wVKsHU({pOJEZgCgdmjC8j4iCrwPcyLs^D z$j#@H?UDy1Z%MIFnUHdCOV=$=wvOD!Y@4_(Z+rFa%eQ~rQDH~IPQ0`H&e)wNc17;W z+1+yYlHIrWIPU4WCvnf`y~FmV?!B36l{zQ&>ORMP!}mSfui4*v|Em2v_8;4SegE_Q zpVKVTDx^(Kd!61eJzmG?YU<|da(=D+>-=B$9dJ0{e?XVvkrABHC8JkHc*d}d$c&hb znHlplmSwEVNXpoeu|MNz#@T~)4=y}-@R0kVv4^f5ZhLss5qxCCk*i1B9_@Ve;W3|M z%a1)f-uw8)6Rsy*PgFdy?8LW|;U`m0*`M-16?E#SQ)5m|KDFXh!l_-SPM^Ae>fNdD zr|nPspAI@5a(d9|$)}f}-f{Zm>CDs5Pk%dOd#3!Ex@X#-8E_`%%+fRQXLM&yp2zXH3rjC-zM#8s<-+5Ooi9GT_~8BPM_rD&Joj?^<@C!ZE?>F) z?DD6}!WD}v6|ZQo1YPNJCE`l#m3dc|U)gcx$d#-sFRpyasF>hP-*ugTPeErb%8`oc6FS_A)qw0+oH@e>#abwnv-8Zst zJiYPpCVSKEruJszo851Q-5hyy_RaM-_uV{l^XAQ$H;b~&vMOdZ$ZD4ro;4|JPS%F3 zw5&^6ce38xf?E!^X5LzHYv-+_x31lKa_jSLe7pSZWw*E8K7RYg?Ps?O@342=@6@@| z`cCINL+(tyGyhJ)on3cM-nnt-<(-e&X4&r9HL`=UyJd%FkIkNyy*4`~``7GK*>|&_ zXMekEao6K+y}QA8ci%m8_x{}%cmKL)chC1;oqNshwZGT%-oSff?oGb8`rf8{Tkq|? zci`Ufd*|<6yO(`0=U)E3!h2ut72U`8?e2Tr54hjq{=oY&_gCECa6kF}uKVc^Dm4V~j+(Y|^ZV$a5HhkFOVfTl99}apr^5N`<3m>j{xZz>)!(9*4 zA0Byl=HZoxw;tv_EO_|&QShTKk9s{C{AkLfIgb`STKg#RQO2XIk6t|b>#^NqzsCWO zgC76%c+BJI$I~A#e7y1Tmd8gQ-+KJy@$Wg1B*fZxljJc zwaP7*TRFFOZqwX0xgB$R=MK(|%$<_EBsU>nq-P7CZF+X#*|ld+pM836{oMa~z2_~S zcYi+Q`PAntpYMKt_W7gdA77Zi@P5(gMb{UjUi|W6{fpf%4!$`1;>L?dFFxk6dFAs0 z@FjCeEd&Ez+;-zd^_pwoVQEgCci!W_Qu;sZ(qIr^j3Ih z@y_L4rFXU7HGbFjUH5lk??%3x^lrwxU*0W!xAtA)yY27xy*v2sQ{L}>uX}&={n_`K?{B|<^!~+% zQ6Fx7Z1}Oo$BrMvK1P0w`8fCEvX2`-?)doY$5S7#e!TxN@8kQAe}B?^a{N^BQ*}vx z1jff9>)GgD;kHfx05>x#LZ1I%UyJ;E7j@73?p1u(+}&&fwW~1nHLy!y2+03KpX5I` zU<1<;mf;=H6Gy@X?spi23t=?s4>3#}EMYc+H#-zO@jM7Y3!o{}0qUUNVFgf)xB7Dr#y#GyD<)aVC_*SD-H{fGw;a)J6pW?2piiod}3& z55sVK7=j~VBd!Qxcsz{8m7p)P9fEKajK)J?6S@j(&>e9-TR{JNx5gFL;-Rn!Pldkp zcavZ=lMb7(H4J4|f-4>h>)D6k%bP(En-8_w>)^%aLoa44v_a=V$7}_2ZVIeG=V1x% z2QhdhgmPD44EBO@=r|XHhThy#n94PSSUejd@d-$0-#`sK5&GdiFp7N-?eRoN z#A{#?69EVDFsQ@6g&2Ge0%&_MMB?$#kFL{T*vL(Taa=4+=GVhQybgZG9mHFF2WZHB zfd*VV_}Oe61em43Q9cqHa9iOB$3Z%m3Bei*aK&e#FSielbBW;3aS+ITgpOPW{L1x! zy_(^0P_qaQ@^!?o{608}UxAKm2XUHqa0}-{e>@BZ;>oa!4TmjwE!5+Epd7Y_L3k!? z#Z_Pno((m)hp>x2&xEb)b@1n|K_p%ZTX8EG%lCn;{3uA|EWn3nU>9x&yGY;o*{}=u zhEP02e1(Hy6n_sY^ZBq9M~fc_9*sNf=GQ_34i@t?zHpoS4BPQ_sDc}Un}&yco`);^ z&yc|FfJC!xa7!~1cH#;!k$nnbWIpgO&|i%P7~=G}IXjqxwGfG) z!vcV!EdWI`0g5LA6z>4|?gjAOpVPr{yb87wIyf6Rfak$RJP6X+S&)bm;RyRTBx<^Y zD_6`zJl z_)iFAKSOQ)6ZmkA!Gr4tdvQk?%XNmmI0Dvjonbp~0hRG#@hipM5K_2p;Ez{B4Q>k@ zCF_Mthr@U!Y~|m>VeTF5BKrVugmLsw9JsOb!JcCwkQJadUIQU~5On09LL}b}0ytl& zh1;zy| z6+r(la|D2~AXQ5N@Js-j6EQ_PCTP7oa$K~6I^+-60Fw9`FrD2DHPL7oghoSiG!Uwy z(a?t(0)v?m(1z&-Rq-%rjpx9R%vxB>9icYv2SI$2^ar1WAbuJQCF5aM3woQ?hyF|+bY${i z29pQ9FhEZX&>sV|#sE_>zzPh|RBrE!0g^Dl2jK z&TKlwQ=H_tt)U#d3WD)@h-aTc6D}M^;14hYzlK>{52%D=VT`5$RMGqZ@mwFMPT+7$ zi090p9`6QKaDC{Ef1_=i@qVa+oxqE;hIrf&TJx?D&kvxmm|G6%SouO zA${8b{!AVOGkMU2$%D~M9t>depgEHVU6?!wVF$o;W-Fwzgw8-{iuXVy*9MMq9&mzv z2T7bioM7+$GxoC}p7a+tg?QWpT+u~X$0ordfTBZe81!eO#TD2b#;}uN3>iaq4lH7) z!y<;9zxmLF$%oNQJ`7;;>ALO0A4cF!5QT1uaX1Q^;wTu4qrd}4!2~KdL_s4Q1=Da848~Fa z%vTh$L;r`lH;<31$lk`EQ|ELN2qX~^5i~YI)DduFOHjuR+#MH`0Tp+2W?W!gM`s*2 zL_|kt)KL*pRCGq%8U)1!*^zZ5K@c%vGjzA<4&6y7sHi+|>UM_#zvDaK&-?lP@ypF~ z>-JshR@FIm>YQ`$J++yS$QnN4$5UCt9l^Nj>+vn_(j6$b8!^#(;c~kJm)Y&O%mLgjj>jp>wn-RytF$4eaq`qKL@X8`TFbzS;8%{1TV-E zu9hYIXqSHVQ;ftjyCcx8Rw5kK!{_~zG^p2sxb$b!<1i~!fa`-g`?CC()a#_44nLc| zhFM-`bltdEmT;o$#!a$>GhH_}$PzAg-EfF3=MSzM=H!jTYJDDm_qwgule~WGbxa$8 zh%Cosuj|TkTh;o~4qhj{ho1%TGIj{| z{aO40H+VU+J7hh-mh~;;*Ltp(^<3clO3-h93NOQVhnMj`$$Jmnv*&$U;br7j$eEz(@1m*cCDA#K_ndR++`mBu^l+W9RUQYPF?RDr@Tkb$ynzPrA z^v44IyFEq*HsBI|xJMm&`S$R(hPMv_JNYN_ueA^Dl3!jwJrI|8 zv|hI>Z(j~yhSs!IcI5Q>UFm7~i?=0wyZd_nk8}v$2yBqI@IhdEc$@lXkGI;t|1JHge9YO)|1I5JZtju( z71w*d4(z~O`}@A&`FEEMb2Xl`D1Qv_JM`4cfY6c5m}7G*Kly$U@V@V>_h3J7C;SiJ z&i#1Gp2nZ;evGuI@yM>RuXP;yH%R z1mncCtj_PR^ZQ%J0eFAc%I!PvP3fANN7{`EWC0c{5C2=5%+rc3Ub^{&5A z5!6OWFCQx`^lZq#D|uix)k<9B-H&e9xtrj4F2ep@yRiR#>N)3}3LgRG$2=cc<(m9w z9m0?o{4pCC%vcqM=AN3Dv}tRAb528{{5+>>A*aqlyZ)RDg+f-4mzS3p3gzXwP+lnb z5&SC13x%9HGY!sFf4aGX?6!t1-^|o$o(qNYLoWCo$~O(EYRH^Zv;6#gD+uLA1d&d7lbS?lxKONg8YK~yih26Z(nDh zhxvVZq5QnOP@DWV1^J;o-$1@d`Juer5?mItJPT!WXp`S2KPYovNJDKxZPdAtb0Sd9 z%QxpKpc)FP<+(PhrWVT2ZL+p-`x;%Th*tnx7xaN1Ham#k>9G|9i_q z=CTdt8_7Zz6r#X4M_x9=Jl_&|!A1GL4YP^A*xGnn`9EKxP+p#|kiWOVETB#9aKI8- zB6tRHyEBk;E|m9gmNL%=LHYfivR4MQ%$}Q7QM zAoyL7AKJ4yEm%SY`Jud@S$_H#kS_GUS+Y&(`$o1G=H+EKJ&WY;NkpG*K%&qdMGFOW z@)h@Oq5)U>>gHN3D;8X9W?qJPxs>CZ{M`!ev&c$}{2ae~v8p-j4-Mq9Pul`{<6(LJ zyP784gFM_42;uhlGbZB=yootjj873o3Ol7(_L3fQh#V`EJDci32a z!Ctdz_JRG&KDW)*9FkB;Xzx-fJ-+mT(uUGZ>30X79c~jY4DS`*CtMmX3m+0bGTbLT zFnnxyQ23Vc-Qg+Wso^)m)50HwXLk#A+q+w*Ze`sL?sj;$OUqnYURiNjhq5kZrDZ+K zPAj{-Y-EpR+uZgA-`h?GUyCDG>o6wcMZAf(Fc+U-6=Fz(QX(DXU^!Hdk_+T=`Ax3Y zljUtm%MRB$SL?-YsaxkVie0rHqmSsL`h>o$)AR#frj@$ZUR7m6}xKv za`@Ho>)~nP_ro9UQR|CywccyDT3_8`**4j};CtE0;0=EPxSh4Kj`L*&eUxw?SNsD& z-UVa^AkzVv3dkGm#C(Q!e!DXvKGq&~j@&s&y8pQD$IpLU`s0ir|M}xTethZ2Nk5JU zxYK{Z4E)#@;D#S|{_s8U!w0|*(}5rU0sQbH@PmJL^EZJ0J>ed}50?U4w`_fB>yWK~ zu8nQ|)7HB--?aJW&7*+L*KfXV^KUm_@zraahky0r=5sf9+q^HZsS(&zzbU$D>!#;7 z{cY1@o5pN>a?>4~&fYk6!y6l)-#BUGQyZVy_~6FtHeRstyf5qbey{B}c^|q3^2ty2 z5dgJ75WBH+OKp$d4Y%xhn%p9P#?So8^|>?t3dlcm`{w$YyR$xacRt{*1l*&5dlqmX z13p%%+wz}sb5;Lw@BA$OU;fZTVwO(C`}jbg(@FZgzMzx!MSV$M#zK8X zU&SJwg2ng*ORyBnupBG&A6SWhX|2AADt!y9^=*ylG@Xvmum)>&hHllF_*~z`I(<)P z;R}5q>+vP3^#gqeHTt1`q_g#7ouhMg9yVa3&esK~Ljpq2Zp3Ta)01~ejrCS8nX z{X~~wyDr5yx=f?GT%4{D)s^}${Zvr`BETl>|TxQ*Rrp4mi?rQ)@efP zH7SS6FXS-kY4=Dk=`DxL5pty6XZOodaJAa$c1)?-6=!m*D}n+V9wMJ{gx-gQ{cpC6? zQ;Tn7A9d*MmOA?O^O0uKS*VW{x+4qs03hFI;rw+!_<#n0_5@sK!0iWU+ZI}O0bEx= z{rlDfvIu5TAD)GO3&DMqg>KBYyYu|?Jm8jQ5%B0bz|~~=)Mc{3KXS^L=l6dC-UbZp zz^Q`)%VTw!pkq~0NCDuzL$L;z{ATk+b0X(j@Ah<9}jrF zj}4H8Z&T}%g}wt=*DSmoG#^X6EZf%B9k7G4a?yHZq4NPd7_cLSR`tg)Z_Q9{-hFR(9Giv+y*tKQj_w zw*o%4v)u;R?ST6B{6iL65BR889_qhEzY{P&KeVUexE3CJI6EfTBRSjyKWiAw%kp0S z3*{D`d7_1P{qx}`0ed<-W|*Hd&i7YOBmafbBtSe3p9jo;mFmCSpA6V**)hbX0_Npe z8t~r=+nd?4n(qT|1KQZa7m*g8n3gS{O>d$12ibAPKFr~6z1JpPoj(Qab3i>0tjog3CATkf@O^iE z4!%!+*+QF*xqj^V*nel~X}iUL7X_H7m*+E|-yd7r-t*9RxxTWarHnrUaxq{#Tk64V z+k4lWhaVS1l7$@rgq-(YX2;3UURl_9KQ|W;+8dBj@L?%X>SfCop!AnO>G6PWYT17e zQ2GF%tAWzVK&kI5r9f#TP?`bs3!tNsfUWMBLauX143xs_vh`WGr z2@u{ZI|hgM2Eu+!z847ZlZEG-@V-E}w1xlg2f|?>Tn5O)K)44G_WH-8K={Zk{G1x$ zqk*vZ`F;t6D}eC8>{uQ?HVdr*!h^DqCxP%SS;*gk@ZDL+Q$YCTEIc2Fr(_{d1L0SJ zu(w*D0m83m;rmDUjVxpm5T2HWJl|4=_gl)~`R#?4`+o$4XJ_?^ZlNsXWuV*MS;!Qi zTc<4K6`)&L7V;|4?cgkYgz#>MXCeOpx?K!(yEJPXmbonC4WKM93rq*finEY6fwH}T zGOy3Q1(bEk!s|3;rCG={psZ&W-a;=sEem-ED7!ohZ@rgY4U~;+>6(d*1en{$Uv6M1y_Ea3x@K?h80 zqnBOUJ0iWp;laNh6p_n&M_jLn9M-LOM0FsxhTgyCIxZH^p1d|>a0`D`r6X8iE*DdFGcGWcDP z!T8}v{Mb7Z>UCx~q6eQl?7U%-dj@rloG@s3*KXaygCld#9Tu58sB5?3!+S^ac9k(4 z9(>ntJ7-Iq-z$=LSno(dHisd@A}4f>VEFj)*C(>ilo1+Jf^= z>f2*qztyJVh=aP6_^r0P&MVxNU%MB_Tzf_@f8*&zMfp7=$kJnaq=Vc%{oD?6%k+Ev zYIFy=b^7sLuE$7(aXN0qRX7}BoQUgjJ;FGD*Ht$M zzeeI_jKod24I^*D}E3U^CxCujpYi`DGF$y;Z_dgs* zp$`V&m|dkAut#3KcgxG;7L3L~9DyTnd$1giD=->Y;41tEBXKxJ;U-**BXB)_i>oja zHwNXr8AsqOoQ{(*7{9_03`XzZ-bW($?2W(s_xBEaI`-gD5PZ>F9Bdcm{Aq{6VK{o= zmk($~-u! zl4#30by5eBjAS6vEX@%4L3Vo8+6ly|Q;5rV`4HE}6++xzZZC-IcbHIi%x;)t2!N`GjujY=jeKfZqN-7-J~&y zeys_JZqr7HHrbybcDLOP@g6jYJz!%YHqIV~*xzjx#Hy?TVj0^3u^;S5NGLzlzJ&)Q z@LYKxS1$;P@K5{`ui-UJ#Z_v3eXlEu@5?7Uv$QP=z^};9|xcZ{H#ic;ukm!J<$ujaX5|$`sLB+ zgTCm8{uqFARA3;E!Lc|FzYKc#y|^D^@CY8m-|&R@$>JT%z)ZZ0_b|)*UQvbBS^p_M z$2xqG^_Zf@`$w?}o3RC7p%z;aMGSF#Ek{Tn=_doE!bdoklVz}+E@#SFGE9cc(=th3 zl2_cF?vL)S-F@5c0XNn?=*GE++<5n}d&K?4J-WNE``>f0i~GuLbuss~OSpQMat$uyn%%c)EXbFJg`;o#}eV_E;T_g;J7 zwLY!Sc(1ii4E)t^>RYY;XMIO!=uCard!6-t{a{Z|v(DGmx<)_OFLaxxwbAmez3pvx z*?l%Plpku7^QpES*cqaYo{OX@|6hF<_g$R-L&2r}cMf=~?}~~Q1MV!iy1a9F=K-_I zolh%Pln-j>+N~-dUoouW$-W!e!C zVa07F2lqR+;-b2;Z5eNPxwXNFP{0uj>9(fd#dM+{f_N(O3!C{-&B6hQ8;Q~pM&}wRDR9TqmSO< zxB48^f9HU46~iiS>vKx^HT@R%d#dk-e#Z`&<(Kl#emh&o?Eb!s`;7MO(RcB{g1#O4 zUOv$E{ivd@B0bPmq$}#OOW(ID(!QOtOZoWzJ9l6Dt{8AABM6 z_@{h)|1o_xly~kw#@DpswgKY?+}Uq&_M8E;`kmyj>bJNxm-0b`M`dY`z;7<@-{_3V$Tv z+g;QR+V&bxO<(%}PgYE?SkcO{0}Ha;JFox_Q((c!kr%`bDMY(q{*Jw2=z+r!3S@mD zjzE93M>)!|4+g?ViX4nnus=@687ReBI16E%gLBXg=ivgBVJL>eM|&HFLvRsB;80wK z%g_tsF&@3~6rRH2n1o3<0@E-PN8&xakACL6FFCx>Iyku zt8}#t)it_ChUw?}xeV7Yv|29Gjan<0YE+|gwSNLCBQ>pQxmFwXd-;v-RLV^zW^#)a zT08lJl~{?~X&tPy{LxD76uHk%v(w~tJHvi0Z`fsanS5ZQ?N<5FZnxWIo`0e#^Surz z3+-OJPZrr28zZ0CSQ{%#>}i`QOKp-(l7HC?Hd#Kkm+U2}v{&t)Qe{(Zs;sd$>@8Vq z5sSzdHr=MndYfS%$d~q!eI#3Kj?Iy;Y`!g)T3cdEAlOBXl`Y<}_v*@Ig&`DRLgRVgb{TvdH=&c=f=)ITooqfj+Cp@+#pnRR-V7s#5_Uodc0vyh#o;@@ML9ZR zFgM^-CU6=PIGqWc$pnTlfeV?yP)0GFb-0Lej9?s3GJy$9U?S@GCPbN#_8cmmnUF4wODPjl#)MR$qnyNq3`R$}oC&#t3Av65 z8Ou&Go}J`Tc9O@~NfMkZ^_=VaaIU+XL)|?b>h9%GcOQqk`#IE&;ZXMghq`CE!A;}_ z_Z&C4N!;L`=LYuzH@L~%;9g|Hy~KojnF%+A3HJ&U?sX>I8%(%2nQ(70;ofG#MOf#i zvCd6roqLCMZU*CSCgbj14t4KwgPX;n?tN}>A8@GqkQ>}=Cfpn*+&m`S0w&xdCfp}X zxTQ?E(aFtBB)l9fGOt{aPa9ekN>%L>ceb0pZkqIqAM=e1|?SPKD59@Sa z*6Dt%)2^)316ZdAvQE1*u19mO_TgOZ%emT*bG1L`>HyBwa?aJWIahzhxq1%g>R1ld zM>$lVXF^|MolapwUu9fhW1UWALSJW{PT%>hzRRIH4;^&@H|RnpbTJdUgb7{BxGrZx zs~FeyjO!K-)vvfgqfBUmaZNIz4NPc;as8G<^*e6R9UQ9PbAyrz6DG_tVeOc(A||Ya z3G2wXbz{{&*>zIEUI1++as?s2#-(b~J}tA8xR|9BTcz!ThY06-?MMOxSTu*zru* ziA>nZOxR#1>`W%?Y$og+ChR;WYzPx}Artm%CTutpb}+H9zv+G!AH?Yn|vCe+axZTXS-O9M#j*d2gL+x2^u;-Yt$xPT3*4b-J*y}Cjn1hbC zfN@*IxGm>gtKwX%<6QJXIoDtyYjF&dIF2=_;u@^w8rhGvQo%Jcm}?|~BB@7_>w_XU zfi+shHCngP=A7p&1b)@mbbY&2`^Cf3+3tg+j<#>TS7=5US8XRR${ ztu1EKmZQk3P-Jx|!T~5}1Or)*m zgSbi`<|=)bt8@}q={!dC3$D^S)@vhI*=Vk^o4Cqu;VQeG5gW@@Hir?L&w5+PdhCV6 zxeXQE=KjuY?kR3_Pjj1lhTGg$Zqtt3rk%J=J9C?M;Wpi$+q9J1bUL@$mE2}mbDPcM zHk^$-l%NnLXpfFK5gl-9i+nqcah%RL&SV@HGL9>-H=bl16Bx&bf&7bODdYHtanV4| z#ifjKIf-$(oN>8=ak-9h8G{me044GuN@N^L{fJvjN8dA{5qI%8_u|0 z%(#tU+^%5Uo@3lzW87Y694FvZCUF{*IGstH$)umb7*8^Z2~6U{mSam=jxA*p-!Li4 zq?9r#WlYLROv>d<$`wq?bxgV!nRG8P>0V~iO<~f#!lawcq?^N}o5!SEz@%Hmr2B+P zx0Fe@oJqHmN%tv}u98W&nn|~YN#}X^c_wusle&aSUCyLNnbahc+Q6ieNfRc`F=<6U zQof%ZkV&gx(vD%$j$_h}XVOk&(oSa52K%`WnY4?Uv=L0&6-?T5OxkNq+UrcBGlnoJ zotbp6GwI%7(!I%~dy7f;Hk0lGN~Pz)J{xlXC}1^lj>)6EoD-tGig`)d6`>kIgd$%k;g_9vJn?CgAvSNHZ$1H zX6eF=jA5fZz(#qHjWUjn@(>%{3})O+X0$sq`YJQJlo_pJM%Oc=U$RlF*{B=Ys0n5? z!;E!g#yT-$otd%UGh;V1W4AJ63z)G*%;0z&!VG#cgFeilA2Yb089c!Zo@v?l4l`JY z_E^n~6fh(EG9z7?kpq~K1DTO-%*ct%$nThOgPC!sFyl^R#+}ZL8_SIQD>LqI%(%yy zaZfPgo@B;-#Ekox88??1H=h}|iWyhMjQflkx0V_AEi-NhGwugwv^O(4o*8|b8J*3H z&SggHnb9;eR>+LCXU2+|u``&lvzW18F=OX4W9Ktt7cgT(nXzHa*hS3PCCu2R%-H43 z*bB_qEM{;54q+5M8ATsP(T`Ew&nTW?6wkEmdxufX;(RPb305;I1&qqRj7nEVON!Ct!31G%c$GIsQZCY?aio;XH=hNRA)1)a~aioMm5c-6*6k=8MR_Y z?F>fkEJp2DjM}-3+WCyy1&rEIMr|0Qb`hg?38Qu?qjou?_5!0etEGPB=)qbX%PJhl z)tJs&%wR1Ratqe8O4_ql`mjn)W|fR!mAjj@?jF{bG2}JGjzHxzfU1X=Pk# z2XUnx%$0U1SK47*X}!484(Ccck}K_KuC%^fX%n~-f`ur8!!p)mJLlp9oXTpP#%i3- zYMjYxoW~5#X9h#K78fvs3t5fftieUxj1k<7Cs~aNtj0vv;6qkpHaFvAZo?c#F^?I{ zX95fOH5M_A#f)J|OWsRajb;1_%UOdJ{1;a8GyIERBFPNW%%Fi8WSBt{GiYW8->@3r zGJ_q=;Cp7UlNkXsqO6t>Gt!xBr3*JpDXXQ7)zXt0>CcQD%Z&Vz899m7GK3kqkQwvDz(QwOhn$_X(@rQdYa=tad9|?LK9-t7NrX z&1$!X)$VgvyGCYQ6Eki*GwvH^+;?2-zUNx^BiHIatkHd0qx-Q&yS8X<2e3vDWQ}&` zW__O3I++=LsYMH%!nOJ;H|uMx(WzXkud_xMvRW50ql>v#KVe3fuv(XLvo2?~u3$zh z1L?h4*K@OOW=5l|))+II;ATy-S{qoc8E#gx+Jx2SSZxK&SX*YS9oJeBtF442C&*HSZ&9!+Kywj9nWezk=1rGt8Fl=?M$wSy z%FXttmeJ-JX6!ju+hne_DXg*ASZ%Mf+Ga9i?**gJW?RI~_!IKD9)( zaVFEakZBBO3Ky{&BUp_mnZ^XBF_9^J$TViN8uOXNLKI^$>#(Hd+NDfm85d$XQ&_y9n3j{6mdlxzE0~t+n3geIFAs3NJjnGjj_c(iu6Hjo?OtNqz09O>ApwSj5Puv*Eq3Df47wj!pjBde_w ztF1Gu?Et220Mk~%v>n5=9p_`qGi@g_Z6`BrgPFGBOxwjw+X$xZ3a0HUrfeirb}du( zTc+$frtAi$Y!p-Wdsf@cthQTOZO<`nQ<$>Xn6}qj@>|ftb&FVyW0A+nDCA_E!LKo# z4Y-JlFoKIPkqwy5MVQZR!HBzPwnCmF*8#_%Cy0S_-} zIleUD*_bF}Qp%W=F(xN5CYLiNS1=~mG3H)m%)P{zdzmpeg)#REV{SHMZVqE^9%F6+ zV{Q>+?i0q`QpVhJ#@tHA+^3AWO2*u3#@rgl+~bVWu`ML~bQf^=pg6&)b!7>!$W8|S-;FaIq`a1*d0t;{m>jEqAA{1f- z3iq%CXZx#JkHsk5Wfd+%yIq!HXVys<6#ic<#CGxk+R1}xC*#mg9zr`=jrOt@?PVQ` z-mrP0x>t$<;&6MCANwQw*IY*jMB+aasZ{hvlMQ$(FyAEjYI-#TEcu+F{7I`-8+O*RwfCf5ka^4(I5(tk?5cujjK~ zhp=8RV!d9>dcB18I)e3j1MBrh*6S$N>&sOwRvU!t8>qn&O#QRRtrH5ZGYbD#7WSE}v$I)e=djMsW1S6Qon6Q}`!(zKu)Z&2U0{L#9))%@3hh=D z2G;oGz|$01Q7rL4!cKo6WMeOWJqSTC2dUJquy9?E(>jP<&V^}3z)W~{fRtVerX!bV)m zMr>oF^kt(AVxwHjMm?B~dMF$9FgEHkHtKdZnz7NAvJqvth)uzjBiMvX1KYDH$e|0H zcF)DlV3V84Chg89J(w9ilo>rNus@r0DVu_vtJtLL*`x_JX@*U^?$nV@)`?BlnN9Y4 zHrdT=vRm0?3)p0f*kntY!6V4yG8A$d%2|bh{0zskDX>S*Vhls)?+g_Bg)T^WF@vSg)}SCz)ECTi6&N}nU&birTCVW*uhGC z&r0lMrGS+ZVx_d}xA$)!xmmHbSuVzXS$m|V{)xq(Y%4426RTqX~4 znT+Eyd5FsbJ8CK`-3&(EOh#QJD_s*S-F8;GZ&;~CtkM!zX$MvXHdc2=13SyxSXuk3 zDX_05vr=DWRA;hY=dnuXvq=}RQa@p(E@f1gF{LY5sg z)6J~Z7%R1opJ{^8z(&h3s?7m~Q>JV(W6BCxX>D0)d$Zm;GHUy<-a0XA`?B6TGiv(< zdTC`~pZ%WEz(%{7(ZEi-l~KE$Rdz?9J5~mE+cT`RnXI(;SZQ-uW%K!&Enw6Z@-th+ zC=NwAKgLA?H>5C|DOB-etmVguaw)cRqqJeYbYV)u{>cYFmVw+TgZZ(X#jgV@+`vt4 z22*Y(Q(DB2wS*sQ2Y#&G1HCJy^Z2nYWlF1<()CPff+@`~WgVHaPE1+nK;KE(%}m*? zOxf-H*yiwKTfmepVhYEjoKXy949Bt&$1#RW*nlcVv6fM+Z|ScaxDA^bN0d=)V*|Ex zmF&lu^a=WKgH$jo1NkpGIp~QEGMG_0m2o+paTyWx%m%rVF}a%cay_GR16R2TjA;?0 zTEeJyU{uQ((}Nh(hZ)mn8Pkbu)Jcr#Om5S8jOzSAE;Q&DjA10|^9Cah*0pP>Y6xd~sOBWh5R>)D%7 zkG;`|5`4!^VknUU#-%+t)jLQLx%YlqbH^!xco8&~sWiU4dJ@hng3VP`o z+$3jnvz&_(IS(Z=j9<%@+$dLbgIt3W`5ohOJvYjYY?M(bknQ4iuq z?ajE3MTw4QTp#8}eH117G~@a#H|ivA)OS&$vl-X9jO#pZ(l5ACx1dDpxJm07*EHkW z$c_3fN^}QGtdMbQ&$tyc9`xES++?LFu`o)k3?+6DO6*{i*r6z~!%$+qP-2Ip#EwLX z9gPy}ixNA7aXX7~`xWDMF5`AS<8}e#Hk5H2#<*R?xLv}yUCOv!9&pq~yNMg^7H+iL zxhaqYcXE@BqrCR@lR{0==(oRb_;9E&0x$0(+w7&A~DNRQ7@6iARSus7DD z2sJ3e1{7j5w+50V#wOIG0~%3`?Tq2O7X8*xEbUP&`!OngP?VD_F*zAUIjOQ$P75T< zRyl)lIg7P&E{fzl6w3${$(4-C)r`tDD9TBin2bV^j7G7$8^!J(6uWy-?CwLcyC21F z42s6s%|fyJ0L4F%On%gg>R1%(!;I>qDAs2g)rlz5Nq*Eqp}vdatdv5L ze!-}2L9x~aqfk_vQKa9ZSa+b<6h*c-3T+=0+P)~X{kYY-Fm9zNwlIo=Xl4hY*bYXq z9g1Q*48_(9#dbJ~?MM{c(I~dQD7MkT$mB<*Xil<24WiY>zbGcQ{W1WoP zR=I{-<$Bi2C~lR}taB4st3~`uOZb&`;8$A4T0JQ6qk11|txn`toy1z5$**-DztZ{K zs$T>?)LL!kR#R@Zz4^86!>?^$er=;!Yd5jhZegw6&aZ4NYi$m{!a*qK791PYU<*ED zE!J`izTjr8XDw=28`PklwP<8Qj0x!zJR992C$m-tbBmnIS~-si8Nph)Ca6KJjP_61 zxkXF3MLTedPTW<}Ejm9aq4)0A?oqC}0xr8aXlxewvDL0iV*T|G>V#;l2 z%6-F>PG(9MF{Pg{rOTMs6-;R*Q@WWcjWMO$nKonE3YfCCOxgZS*`Hc;l4qE*nM~Px zOriU3PnMc7g3XxCW^8AZvrysr6`OTEn}70@ zsaZ2@wvKGJPHeW$Y_{LC*=}aD-O6TLz-C*-X0$~;I$}HP@g3{&1GmUP*2`(Emor-I z=o?sXU0Q6RJ6r6Y+x~|qF#B#ydY1>#d;eO!eXSlo|E|maO#G~u@5>ertzkm8@@q*l zAq(t*d%zkAW@@%xksYhc2fn6U4dz*opadlaHQ1~ZLQ z8Nq3c;B-cC2HN9HMuMjs7c#P&k0*i&jNn5?az362KH=+F!ns(=2v%?n>NypSd>h{| zBFcyu-_AaXK%wld!K3dA=7R)BW?~OZXP3U0V8e^BkmJM+)_r|az@-rM%<^2xJpLcYDU}| zM%?F&?D3@I|9}3XNcO2p;4fOM3z*i0j08_pmN1g@8AW#U8MW7HwAYPjuU`c{A(HbO zMYMsDz;E;&)B1hTGa@F8m}4aOBqfr4lCp>YC}IaPZQYo*?o3+`rtJ`>?H4T^-jiwT z&9oiCv>nB?^P`Xm2qg1KVRHO>KD1VR_2BzOMK>?YX_ zvApl^`~J`KJ>R#<-h21nxpU8)Ic?6Id!`1rv)8$u)#mnpn02wUcHGX|bGv)i#qQ;A znlHJ`E@xF%aywi7XTATe&&gj(WHFL@$nU^oeg_c@azs^?-@$tP4yN-fa%9w--w~r9 z7S8Xmq5KXsg1TUUdSHP1!Z!;BXbA?G1qPT02H5=PwY`5{+Xn`?302`9guz383H|^B zJm!BOl}`!7a)KwpfK~ZLtO*9J$N#`|ehJ@zFzg5h>;wjU4-D9wU&4M6MwWtsd;tdX zB^bz8U?9uDK(>H^Yy$(?0S2-Y3}hD=$R03|ePAH_!9Wgzf&2spau^KcC>Y4kU?9JM zfi40A%>o163kJGh_!q%I^T0swf`M`{Fa!f5U|{}WVB!1^Ru&8_4GiohFtC@wz+MFd zdkqY%1{m1uU|_Yuz}kR;wF3id4+ho=3~VU>gMAJLwh|0%H5iJ#ZFi)%O?cXF^4rqd zxX14!#2Wc!S@U7D7LM-^=?}>~XtOipR}m75sz84SYbukAp8ijvw>mIF=vB z@%%VW;Ky+yKTc2c)a@%#Z!;16)3v=koDGyDNP#~(mNcien5G=*qr&PT$Vd>XU^Uku|TaR;A9 zR`Zc$4IfFq;UmdfK9a2CBgtbvl04-jNdX^86+Vq>`82BM)2J_>M*a9S`V}8ZSMiZ_ zHy=q4@@dS#M=~QH$r|vHtPvl{n(&eA4L*`J=ObB5K9ar3N3srlBwNBqvTq=ot%GRh zfM~XrPlG@_%5UM%`~e>4cku+jhrjcC_=w*lMt+Z&`7IK}@6m?*79Gs*(UJTC9mQ|a z(fk(6;kVdXev4h;x7Y)Ik3HeHWNo?lGrx<%hCRWr;qUw!KH}GikzXTbo=bxGHQJEp z(!u;19m(&~Q9PH9=D93~=d!armtEkw>;b>Vp730tZn$oV=K{gw{Chmj?*Ix60s}vO z1#0l$p%cH2jrdIng^m0eY~^?0M}8Bszy#U+yqps~$aCQkzXd134A=QJc*uXjs{9vB z=SQ(2KaP#~E^N)OVrTHfu9E+bOCQK-ehqW^Rg%cBiFYUYT`48Ey!_4F3jh z^W#v!&mr<7sO9G|k{`m#{8voi7qJRIkJb5kOy}3I5kG|;_!jKJ&tWex0g(|;W4Rp& z+~oT(lHUS7T;V(6A^%DG!0Pj>*pQ#Y&ipWT<$2hPFTvjYFj%1#?+xwv6zE;B4Th^D zV3hg;jN{M4MBV^4@=maoPlatf0CuXs!EPP}d(>RW=5^qJdJ_(+1#n0`2`70oxB?1X z=Ud6>jrDc*x&{0`3o-2O@GUYPmn^xd|irD;Uk!U}YYR3H%kT!u_!-?}^oU zeN5*DY{*~3M(SN`&9`F*^)`0liP(*Iz#iNOdx3(zc>?y~KSMe2;TL7hqd)&i#yzI< z>(GjyfY$uFjCbtK*TQgq5JvGOFplqliF`Y3yIzwVCj*bUpk4}Rp=U?)EgyZLXh zhi`&xehm)r{cw<j={4PfG`&gCV#V-6lcH`HuH$Ms#()lfD$FJjYeh2jKdBKhFkY7hVzavLdRrw9K zmp0Eu7ia=s;d=lxwBtKqBi{wtd_7#}zraJDiF)qDNPYyP`ChEbmteZ2;>*~DAHZ(> z0QTnlu@AqEr}C7)-SAJ29(IvHRmr&`THTc6Qz8JRh2av_j!XBOrC;1Av$+NKozvMORX)l`fq>v5) z&>E7U9he{)7(W56_;=8b?}6UxMi|a3!YJMd#_>;KB3}v{`C8b@_rW&)A?)Puz-~VN z&nI<*Y`zE%@SbpxXTTx;Hk{dVp&&y}OMo1leJ{2YA8@5A@}4rKA` zaFU-B-eT;<&jX6lA22-5_uy%M4|DlFlF07?3OO&f;0MIlAl?k~UlaN+xYoli{+J67 z_$7Y1=&Y&4Tk^UE&*FO|JZ1pCQeNA~r^@}WrPO=ZX|(cof;JpaeG`7he>ptM@~B`^Hl`&TvHFZJxbe|x9v ziKVwpegZu1_>BMZ4|QHIolgHXUas&9{2I@7(J{ZuPy7e>ZU^9B7X8}BFYyz68$Zdv z;NSE8JdZB{6PWpGzMEglwk^jKM0QhhKZhW?{O6%?7 z=ksj>Go?a%qL2grCp=l)+k(^h4H-uOJg-P{`TZAEa8=fH!%YPj{^5o~nduL}j{xw) ze_Q*d|EhI)f7Pr1aZNWp>O0}77rZ`3k2}WxEe8wQ{Xj|-H?Q*Dg&M#u{R+$PQ-9zm zOVm;2zmr;jQ)-*s9)mzZnS2<}R&R2X_~pKS3P830N#FhXYy9P+vu}9SA+lNTl2o)) zXd-^d>#E&TCjIZ}yV50(ixT+-ev|*q&j~7ZQ{Dc*tf#2&c-B8YGneoC$1=Z_l>Gdd zq<|y*GXIVr;U^1wiLd|5I--h>PX8T0!~e2RX|@6YAM#feRgy}*Kk5VijkgBp+Y2#Q z)cUo^~T(R`wJ!Mit;4{>rJV2HK zwKD)W{8vc)59DZ}?eiBJVLjjc7x(=v>=}NI&lgq=Uncm_ZM&LXvbB_Zven*&_3?=w zHYkDlGD8A@FZcoqO$S8QM4IDRU!~m01zW$*c&m z&=%T)1>S$530c}xCO7lAMgiMhkVF~8lVD)nj%9u)RLJH>c~t8b!8@mdNKz>1DOM% zvCM(+hRlJ`Oy)pnE^{EXkU0=q$s7o8${Yx-We$Wk_%Tj`xA0S(3SDFlgl;nXL3f$` z;2oL$poh$U&`V}N=qWXX&N zyJW_Ly)xs$KAG_#TV^~sEHfS)VLRAvJj(X6{diL5I`~!QIyftH9h{T74$jM52Nz_n zgNriP!6ljN;4%;#DEYIDPWj;TR5jtc;aGi&nHk zEGA$Agkv%$gBepW1%l9qHt>})#aGG{Uwj>32Q${fS`Z}V2;y7#7KCGaY!7C98{dW? znOCI@j>B;fBeScN!AUp?Vx*Lbky6GYrHmh*$MaAgFW?0zhd1yB1YjQKfgj$)n-C!7 zPB|%e%1OE7C*@9nlskb^?x2)ADCLen`G|}KLdKDC5J<+8NuZEvWELR#jLZceGLOsy z1DQ{jfQBq3OCeNdX3>#VWEC*7nydp#)|2l*Pd1PZK*;yxd(e=LWFrugNiso0Hjzz0 z$Y!z`G~@^J0|b&SWDA7Kd@g}x8`%b-GOJ4<*+F(dsLbsWNOqE)5GpggAlXfJgF^O@ zJ)k3d$zD*%KC%yVB%5S|LiUsWpd$y!0Z_<6au9Un5IF=2`HB1lI&zYn1SX}VkCc+W zQc8wNDH$fEWSEqaVdNgU2aNnqeg`Jk;9%qtc?3uvlgB{G6Y>O*JS9(ol6;c?C-w?R z0Z=JbgQZjrmQpoXN>zU;RsE$@^_NoBM@m&6DOG)>RP~Wk)kjKIA1PHMXe^Bd1GP{K z=xKRc9t^YstpFw(N8`XKGR}aBR-_fdDDuvLiB_VOz(}n$0sLqpO#}-~qE#S3N@PDN zkpqN820z-3c7t-XJM97Gg>=y*CF6gr7c0;H4aWDt`2Qy_FIoeGh3 z8l46Told8NiO!<4z?aUUa{%dFIu}CdJUS2j>3ljL40Hiq0A{+7E(C*+^1y_Y2P&jI z=!KLAO247sfI`>OwGd04)CoQ!cN_T9@91|>fo`B1fY9&h_Yg@p(v1*HGifF$bc;JP z;Wh}N+v#=)q&w&i@TWi0AHhs_(w(58Su_iDbT{1%lKuh=1y%0+G(S4w&*)$u1 z=zh8%bo2l{0O9lqJpy`qlpci$p;sV6=oN^dC+SHr&{Omj=;>*C2FlQL^c<9-7w83G z^dh|ogkGYTKtnIn%b*C|13G%0UWc;u2E74#k!=S8>0NpkLg_tv4-E7^y$^c&fIa{- zeMlcd5Pd`+0iloSW6;ni^a&99ls*LwRjCRJ<&=YtAtRt;luucgQh+cUvw?=CvQ$u58cPEm ztHP>)!d_x8fsR#WRY74dvzI}~USY3*!d_*sf{s;V)j(mdvDZMys}&QlM6%^U}F2&J}|Oumi;HT_p|*FAZ!;AZ@`W~ zfUsSloUmQMB5W5ZCu|o85Vi~W3EKrMfS_RyJiNNaN8u0!;s0uor14lF)3vu0FY@I6 zifkf2P!>YK1cqWChWu#Vxk0fgQ>g1hfdX@{3g<5q(~Dfh!Jzl_rTz~;1F>=+UFtKb#E}bo5pwHVeUw6s`?z?` zJ#jw5eMG$a^I1GFC<}%8IxB+%K;C%C^LmxU&pIc$B6dPjJG?>hL zkB4HMTJ^U55e-6 ze^Kx0C6)`n0^31u4ILz}YozXUNq6xP5*mx@M|nq~3@)U%*xPBMXB9!uV(Wc&wgJK;+OQ9IUUq}gWUMg-0 zcyN*8rQ7i@xsZ5qoQtzWf0cFjvWt8CifB0WZ=`3al+mI8;Mvx>w_$FHF6xxI+_5v6 z@t3*W>lNj4H@oGKpidnbWQ=M67{%-_1Qum#uMFB6ZEHuv<=30Fh=$8`n$?JgwvC!J zjD`)3YqW}n3C)@`iiQm>nl*?PtD15y`Kqv9?cdZa$_9Cq)qqa+=f5xQ`yZ9|`PG#OUHkOy4PSR3(5VZo>DA+%POw34e~{a~z52Z0 z8*+N}?a~X5%k3Gtz1Zjd-UHybzT)bweq#H3M(-~D;7LYCLLx#&MnV#5GBOg9(U6gm zkb>rnj078oWn?6zV!4crgfuKau+RIwv62VPx~Nw04ak)|1YHW4%gEn)Da{0qb@G_F z_vp5_T+}a@hmsNv-S@fZB(TUPLrL8zxe6ssqLgVUDIDdDEJ{g=(&kEK3EEq_CA#c@ zJ^>#GtPS`v;EK^`Y-sFg9B7pv`D=+Jd&Et>~MyHEl!N(suMM+Md2mJJ61_6YWg9FiyMDZnQgnhrUaD z(4O=?+Kcw4eQ00WkM^enXa*ff-&Y9zfDWQV=wLdO4x_{A2>K!Yh>oPA=x92IeoV(I zponqj0d|lbVn4AQc9*VuJ-gXOWC>=wJt?y$S;9=p$eXAjszg^Gp66%G4?J!Vf>J_%<9>?tu2v*N25 z{@;ob|Cg>9QOx;g;0Edc-|#r;N-}7I;BjijOD--Klq)#hMZK8EesOU;JA-%dj-X&S z=RXnjTFCLp2}rsXd9O?5d{0SHsuTz%WylBrHQ$f^PdNX7%=gc7{Rwtja=DAUT{7Uh zm>q0%5=f43oghtR9nm|)IpVb^%Kuc%^ zZ$fKm18t!lyanyyZ5S)o28W3-2`0lQFb!tFEZ7V`$h`jBWM2OtVJBq4F7MT~PF+7oZ{tLwHwphRj2~yW8*r>$>OurSqtckU-4yI!x zY)gid4?R~dCriju@&);ld_|U#ugP+ zPkpH$4WK3(NP}r8Ekh${SsF!SsD;MSinJ1afmSYBi~LLal~{?KE~hK#O1g@!rfcX< znnibsJot1k-AA+OetMvAJ#c!M9-+tRae9KDqPOW?dY>WFF@F}sK4c%UF>Jh|Q+%Y| zpaC;ff|}442EZh@cS>YvpXMG{2`i$J$N9k?=No&R?^t}ET<|zwulPJYitiH68R*1EYu{_3uQY>%43>wmjbReBc7t&F#s-zJ#NiNVsG>6r9+g3V2O%kNS z0Qd^l!bZr3eDudKOvkSHAx^_h_>cgJC9jaiWD@zDY#`^!JzAbtrd4P<9Ztv5X>>ka zPY==a%!j?g>acg&Xf})OW+&J^B~q!ZR8eXw4V6~PNM)6BOi?uzK?DBMl8S~nc!7)r z0xQLg1AIe160H$44zQYx1_G;uXB*Z40%Ko`65@#bAnuU9N&{O31UIo2@|t(O6J))q zvflBs-YTMAR#n!!K-TN3<1CCeM_FX@?u8*%GGC5~j~2OkD*`G)ThqrAKdM$tV9PTUhwy zpXJ@V#T9x~QoJXY=E2ektosll6Wf>wQT=^|Gw@^P+ksX5`T~g-?)tT|_l(ouq=_ za8d*mJ3IA#deW>&}q9^u7n}#K|)I3VVk>U)W>x#iFAZ zijFGFBhP0nmstN=)?QcQ@U(<{k%Zi%Bx^07)KRvgtt|hRgywAtjc3U=vScS&vYjm1 zUY6|eOv&!DWFJ}bU0JfHEZOUslJCfpePziWvgCWRWN%qg^z||~<(p(AAHehQA}C;m z6wpB`ye#s~KsB*O3Dk!WXaJ2M0-Ctv`PxBwY4cQ)D?Gj+S9p9;uJBk{uJCAuPv8?s zfVr>$5+Mh2z~-^?p2p=#qdKbh)^Unf(J6Yx$8Cv;IFile069pT(AHk}OW!vRE7p5Z z-Cc_Y{Bf&%tEv$Sif!akCeowKHd&@A3jS{@>r3}2SqUf@AOxZXrclVwba}J`2(*?* z+ucW^mN(%uPw4QhtgnIBxxVt;X0LM(Ji_Z7}A(e?$`hTp@#N$di zFp%1$E~!K6k^1Bv@-FE?dXo1@FVb6jK*T8Yc}NDE+m>zMwp@#AFaRZeNMF)dwxd2Y zAU!>CzT* z)!34}4L&8{YDe08K-Px5McP7y*Jxaf#e>{lp2%W|NfQAt>Fx=IfPu{_0q1l!qqq#| z&SpwqRTzXogsihHL_#o|C8^0ZXBR2xi=>k#KuB}a9CQ+LJ?TceL7-Q^kCOc!==Nmk zr2QwX!Cr2ES(xzk;ViMzH}1kcfFz1k0OkSVE8v5Ba5wHEQ6!qgkXT|NIG5))HX6H=lfA<>p(ON)kt z|347$e#XE~10dml{Hz4|i7wjzpYjpBWk%trj;>p)cAfP#?W2LjRRkcN>o#rDoQIo# z0a9@aK>GuAo42faWAx=VK*qHO2%grYxix9dXvYd5dcorzyY%kV4+pg_2gLs}fVobW z4+cg*ze2kZNcj{1XwkjjJG}=z>bM$6%nM@m`FA>H^aC9P0*MpzDTa4?4e1`Y$@g~v zd;#!UuXnrl9^7(h$Du&<2LP0?ce{1!n&0!tP{7~CJ20v5zT2&n&nBO>K=kzhp!~bN z2M%64VCo#e2S$LPD!ux4=`?Z>-wb$tBY;o2-kk>b(^eDO`MP*pGrCWw-rd4mzGMVa zegXgv?AJGAAny%bfmFyB*ZU3V*6)k%Pxb+c{S5%?gCf?CrWF;toVyY;CjrpkX)u~h z=9laSqaAX@RwK81x%JBdJJfD%C)NlDDOatH`~lVo2bin1aWVoX^Gi;}wbQzGI=OTB z7=CveTxa~`&Q6RDf5Yzyi7_#z7-~W^A&o&B#?XoduaK-%^_IE`4VMX3RU`!kiv7t~ zind?`8T8ad1{b_d-kv~&jkbh8z+til21qCcIA3do!`ED`jYFf@eV%U}b0XsRHcr%# zKOsm+M2qmLr6z?0X=3BB-EzMl_oel!Ql(cKE?~h=zIpN0SKGe)vY6+Xz|6#=5mcpz zGGM1xC-I@O5mvi4$4-rQT~0zGQcGa6A~qOYt}jkOf3Z~ttMl>J1hD}Eg8V6AN}0{Mm;mFq7tUcpiGV+OM}pIP`^0jIht+M{yBHco6E&lO)vNW_%5__#P*N@|)dIXEOF*pd=wiPZ!Lg|Lv2 z;2@1Q*kX%|vn2SIBvk8565ES>Noa(KWo#`%o*dx%*H`) zeVAP1@Y1i21f4z;ns@M%uZQ*NKBUW_MLky@3f#8MbanUS*&m8o-yZyiGDg`2eh?0E zkOEa;xU0R?8sVUY?X_4V92U{V)M)p~vHMsZCRW@gYIKBo{InSDWpnIht#*siQOV%LJ z>Iro}UcP*?wsE)4E$cV#-o07=;V~;$Os+d-$<4d83NNa>6vXBMBtPzedK^(D>f;gO&^pRpmV=IZBu~MwqnOr9WT}8^c zb|I!R0uhl$M^rIgIAfwrE*f(rdQwYZN@|*<7J;xJjaG}Pw&Wmfs3l&bvBZ{FlG0Es zh=&G+rlqF3P}S}IWu0nft(cwFrtf=LtJd;iIcGbi?|J8ERmERs4pkS%ET0$q!3VXH zx;AXq5y$tizyHCsx?lgWZfxt%nl({Jj9$!FJkF?D`(lHBxH4?m=np=nxgDo9Pk6K1 z>urSH{|<|R0x5rtF6pDVrB6a)ppZ8O!K3gqWx6^I&jG?%wG#PE^B$N$4|ad6oyqPu zo6|xygldg}A)(s1crtd#ol$W!HtX?|mhZ=n9g;_yT*M{VqR!BMYKnTPrTU?Ic~!^$ z>1(lt;MzE~5=kpjCk7FsjZZZP+ENIKPYW@dN!t5&KaQWjnY3QmIsW6@gGlXj>O1P! z_4|K-chMSs1bbk)rv2-ytJJPyq(?f@mWmzxA==gR%o^cfvgdQk*uffR*XNY6>#bo4 ziC7^`p~X&`ywo~uEjnV4W zb|5{%Ggu1S0KO0bcD+?-HNDZH@sJ!;O1|J2lf@Kci!mjWML1jSxk>Gbvo}${b!rM8 zScfY`U1im?m;$F|%!FNUb+BTkBI*T!=y)k)f;8iLyv@GrqMofcX7cjs-Le6p0*NAi zWCKtzgPm9%=p~|JY%#=74a46^)Ex1wY5W0x0Ea;jkuL0Ltq~5bP-R5%xGzoUuVA6T zroA-a<(CJ%)G48Q^@PgRs!8uPA482&I|jm^(0QrHgv3w_COa0Bj*CWUUKCm`gXb|H zMXVkc0WZ6r>0^y>_!RP@6kLKAeT)thdP^yN)6rz&8);7v(Sdge_#!)q8?Ru``!5E_*wNt-i2eA{~YVD z0w5=q??D4qU63i(2#4~l2?B~>3}$su4?ZVUk@`NyVp41slF7+U>SSUr%MMRmu?G;^ z1F&Qz3qqj@JgbBY>vn{C>Yf}YHHL~u8I2CT#|5L%SI*#2qw9e&HY}77!IqTrQlKEl zu;lzY_^4mYNg0#oWgIw;V8I;go%kes=t#{-U-4gtvJfeXL|b z91L^8=Vy&@_!Yue#v0)$BiasrQpSPR`4eD!=VHMAPOCWT064(z=S}l|(xd~UBhCX) zfpO9@D`T`r=Ge=4$;yO8OioR;8C?x2l#D`qvgq<|&1p-Ci?`so$zx{o!BaB}b{@Ju ztmoh{9MtYA-!%Kfai4xZb23dL;|3s1?Eg*fsUJHyUx>4Rly&9ohKxy5#(Xq^2r9Gz zu%?O~e83;lOVJ2YNQm~Lo(X8t>L4Bs)8yDu*gsC4##dUKvXlTn*diGmlQG7mrQ@=* zHx=|CQ+5@M!d)SFZH~GYoAsu5^Isy_6$S6i=XvZ!#SUems|yOWMmVq#3fTpM7trWn z9w^lMp#Vy2b%cAIRkY#ate??t$`L&gf&DD{NIz`&T`7@C@#WDX7@me{!X%S+;M*78o3Q8l{Zl)BH?1>G`(V_}#UBr;ok&iRyKCWbulG0$U>iUWe=+ULdO{7fsr=qZhyT0d~NBG`*&9FblW5p2;gZ4t;|vl*cR zjn!y_3(0{ti9Nv~C}YpoOAihmR`c;qY<{G}lBh3+jF>uIaV%tyE_|&1e(ZvJ4{H?E z#TmF#Dd;z#Rju`BHhwlc6XZM}unLMDG>}{h-^(r$@GC|yh6gvpBU*%9WfcmR{Ycv6 z=g|{Ny(b%$u(?2?pIFmUa(xUuU)aaN)(A&%VeOLa1f|96g9SR`t%GU1Jv(+1OXCpLeAALHN zg^wTDcjCmeViv6{=k$?mX?bV|#lxb)b_QA_9D$;pG*GaNFff41qd;#`^%nGY-;xqS zm`Acrf+kGCMo=ua} zJIRrD7AnDL!(h~r0r`h$68X3w3y00Xp;>~@=HgU(iv9!?v=9$=t@Tfv!cMIY@Zxh% zLE%#P!rq{#^0(5O;!7(pE!e(9Q2jW_qGwoxVrZn&7SJd;c11uVVX@JOg7;{v{8eNU z(yi*a8R}T!@ope8vnp8-1~JgQ6pa>bjc`N@jTYfCCWZ*1vYgBaf34NPrPVMsH7%`3 ztEIY>fmW*tE*?vFBT0?MwCK~L`|wP1X~UMIU-YiO!#%W~KWI{m@f~{i7}TrX7kl6MBI?$z`?ZtPu{K94F;C1Cn$C#sI5R(FKSjozd|U z@nE|gdy>%+;c-T1v{%ZpSF$=R9w!5gj_SmVe2FDin)q>Psbjgd`L0%!K0q6t(p zRp&l+?|NUuG>kvo_PbXqR6E$?i8}XNgW)U=zx^1yu6=sX|BcqK^evB-t5kn~9zMLM z{Wp9C;rvRm_Vh1hwKntgjuR-9-$7p9cCC%-Uz6Omo!l4loLC1(huoo#ieVE&S z5<@MREMzRD2MZQW+)Z9sL0;Td&8eEg_Qtog0%HRAPQQSqEU-% zxKNNPG}P({@OY*!K$=@%bQnDd6HADoWK&GBWumd5DJCh^W{jy2pWRm@cZPUsGa{|ufbxbW)RO~ zCzLFRgu10j&?3v&*JuwAUKWShTWpr``uV4MCCH6gqQPWK5p)Ehmbf@eEC~({GD|c0 zM1*?bma3}zrlZfg-!Lq6N15fbHy+;YT(UY64_$qV12A>UeoR@W7UZt|T)p%3lbh;q z)8*VM0NbtD!54xHt@u*$EO2M=01J!`zmlkA=Fs3E!nD+soMg7yQb_ztT(A|(FUG~{ z$*iNq-K9j6!X)`7{psX!aySAn1H2@gvD)rNWyx?lJjL6(YLdWUH^hk{(2ncEa%d} z<*e(smHVk2X}><8T$I?oR<21o(%w)B&DrtJR+>toMr$1z5|tMWk))N=_h zVcpMNcvN(J-%if%AWI86DE5L+$pF#2-vi(vIl?XbH?C<}S27OTzFo14 zyKFp<9#HHM0M=5hVyXHC#QGdzSQ@-XK_-{^<{I*(QQsX;51+iZed6drGf}ZWeSA3Y z?A{SmW{-DcOpzEHSc>f`hx4UM-$I|Y6NoTltDDlHE%bz;FbU?vD%b?N_Rg2Yz)qtG zIb1z3RZ~aPO4D8Qfo7a$w&rWi293UbLLzD<@-P|ELL!{ox0CU|73?HEuaIS#YLH?t zNFX@{Bl3^Bc_dP?g96X}4Uc$oMnYl*!3N3LlQ{D~*|Bh;Vt3V}X(pw7n^N%V)iuRr z;i=t={NZwd2TV>RxOP6^8p!EMvdLl!L<yw`dyU_V5aDO^8f~$Xqpcv~=J6Dlthsuny6tBX zo*Jy)c=+B^^#TSIfLnKLmt*fhXyWt<3U*rzhMZDd*M);Gr!U1)#5eU)f(eNNO)*I< zIEY!?>Nq|Idu%6VZexJ@#~ucoS>ld1)~75ne|j^!?#K5_Kt;?1bu+(*$U zSr81d(8Q^;ly_Nu_A+j`Ox6g8say$Sa#Edi@0z^Tug>U*E`e9AqOG9$E8Iq#(-a&x z1lbt%V7;bA__d?&wCxACes`E2#(@IAN7bKN9T@Vvxd_Lr)Ez$~B8CbaKT*%Sal8V6 z?UOtb3SFE^m~`4GVlL*Ntg^zg%8cGtnXhCJK{p}Ksw{zcjTVC~ScrSFOBiNu& z0H?%}R)1W;z%#RNjM}kc-lvP_;ClzVsCidstNEYo*!kt$FJ_a8b$^<>=EA@OLq47} zqHmjF-G_bE*YR`4-j6<>H~jeffRG5l=14o)T1tb8x0gNm@_B@(?nTZMYZ6JvsJG@#YSLcA&2OdI`WH zF$YMce5)W0{A4m2mmDd$ys9AgFlUY@O>cyhcS|}vz0BeLJ zK+1dSBP6TFweyp^ghUKY!({;~klcuaf-@Z>zOU?8W06Qdg@q4A9z{`5^(oBU;cPF6WuIl=6FdM#x z4ZzwvHSSXrHS;tpHJKXL-bq2ww^OeHxBp2fU-_R*KF0PJ)fD{YvN~U#dkIgd$rtEo zQn{dVK`g0Ku$P=AN8IngvCWFeRi0Q1q+V7-kpb-j&h1vL@)(ZCnsr;{CYB=HLv!AuZ=<-yp4aA)XqmE43o9CZMt!^FAmX+41N(Oww<%-S2b+(vIMw&f&n?r{H3OrYjr(r$%FQi1 zWpu6k#+=rhzf%1_Yi<0bZN0O5-s~*eETnL>M&!~c1KpkG@CX5(*=VOZVAolT?alC# zBQ!5Jh@zv?1T|1sXiUlBeP{`T!V(*=6}ES3wAm!*zqBSHxmon(?FakmS7r9YNf$C_ zO#HrS%k^Vt5z`~}==2d9DA+k!J+2lgTMn&KUs!br5Z>Z>G>8=r!eei;xzR4Y51QcMpb%26%PieG<%3;)epR0iJUMH_ zUEMm})E=KKm_KH4+x9EEVmw0BqK6Yst?e;>|8~pfY=PwtJdfVdh`h+*(A^mpA!gw1 zVJ<9dtX|$$FB9L}UQ?(+Vp;A4mIME0k})vFoSYPDN;X*pEfH7XLYhf5qeI@dt$j0B z>HF^f;b!LCarQTwubD8H#63pqXp-^-22Q|~N7{`!i}3EeBLe#NJdfUIjUgDyLNBLI z;#nZD&?1unhL>c8aGms&hFjNf3;!vcv@hvQF?vp{xytHFm}ZKYGb!|z$H@7fv``Jk zYP2!7xH!`2jG8y>*HK5W7g*T0lR8gG?mt02*>A3yl+#TJ!kBxpOADr|*VTeXOLjG_ z+4?Ze{&J@OCkuqMdIf-FYl0ydx;Xzua-qn(=e`Zr^%i)9mrQeojG?>`;nM*|NFy>@zw(IUiuUOdQKy)1HIz?G9rsONW;EEzrbnp5NFFY4A9?U)140#rm5q%c%Tqj-C3Jc8+3W@hen zIs92wjC!$JwYIMaqU77u2G~Z)l5zVDoW{^F*KC6wa^Nq7aZt53o{m2eh8Ub<54Jjt zikFpajERl6x$I*qXVoMe4bYS2rYnklGJs~V z)F*?T%tN1eaoV%uF1$oj<&Pk1gd?c%M}#%P5g~1Oot$-7mdFq*Vc{Qa_wU-=$$l)n9I()sjE3_ng;mexgdp+2T zRh{s;Cws|v9^3IemcklC07O7-ry;VeJFYg+bEIEVC3-16=HK+|r-xv9URX~=~cXVlx9mQVTQ>y=X`t|0M?)k*3h)o;<$DVUV6Uw`V?JV>)Ref+&1k)$3}((mYHhx`j8BuzLZpD{wN@7ms1w<@#WrmSn33&$>dv-KC_7LhoP z&yDK+B#yAbn3%8IbZiDOPyN|N!DJ3=41Q48$@~L~C|I&wshnA)AAG&$Nt}9LckDx) zi=`xnL&=;DSSF_;tKGy)Y2dNh1pb zbNyr_ozWXVo-WKtqdg`^1YMRd5sX{DD7>;nB(97fa7DgQ(qFy0tjUFS8*?{}>fCKW zPYhnu{I|@}d;4c9lLz$p2%{P_f2GC1reim5oz<{U>$o2G5?MSI#XE8ncpg2&s)A9>(VEQO zUNtYkN>x8{DBueJBBfad6{H~}d`E&ZlT8*{vDe{mzQfGD$LeI--}`9aF0#F#_QORq z@ab+qkpYWtVpU7`7p+&Q5x z!rsT9JoyECtBa14bvU`;TEVaQnfe~F5Rr!~L~TIrtSSURx)bC(8KnRv?Lx0^2@-Jl z3lZQI!2yC@T|f{^e7r4G#4KPk-pb#tHtKf9QakDG9NT4vrD>2FbIkVTqTAq;0@ExUncU%^9V|_6`m87-ng-ZqXNKv!z&UNj6)m7*UymgR~*R!RAmh*zxVLV`Sa8 zafg>Lr-#%TNx47lxj+40&i5CRGhSD(WM692HusQvvnC*{Q}1D|zl@y~PAaVR*=OoK z%~qM+N}WLlxZzdY@cLTqVOFQfSK7EHt24@k?Hy(hconlr!W)_zXiG_pv)PRCX(1t@ z!9mHvu|mgd1NUpc`|fa@!->a^eYfsu4fHv4wMDaQ`!W3WjHC;hM{ZBQpZ&wdBtRI0 zGuUk!3!zZUX_9jaP;A)_;*IFZ>RjwDayo+n zl08Ni!p?U)?g|;(`_&wxkthjF4zvUc3to&UR;?&{Gl#5snx`}@98Vzh;J);+5(hER z!U?gKqIOH`G`ys{S)1eKB=M0>k{~I>gXDWKK}JW!Gp-Vi>je>Fv!$3_FOYcpOVYc} z(yi0%o|gIT-fTza?ClztyJW$bA#Fa~7k=$}EJmKO9K*6P7te(rn_cKM5$nJL6JxI! z_{bSq67rH$0?w!)Iqr+HIy*$+0O!;w?C;zbh3&oC;~fPl-b~WvxH#V)B?AshZzP5W zX=Ai8B2+KU7H_d7Q!m{d7!!;;bk)eO`1Dbuib+JbY>EEC-mPc1ebl$dXg$70`ka~H zZs9`xn2x$%7b4qp>zL!c;qynR`68b~51y;EV|O6}DnSh=dHw~LjBR4by-LbVta5|Si?tz{$@YqI$8Pm9Nmp8RgV znWJYe+L^WZvybQW=|1)2{Eit}7qj~J-_@^wRz|;%M^704$>-UJzML~*_TV9NC(i$J zf7aq@6UeY($A%6&I&A3CA%l+@VSK!tdP z1L{3~`sIi~-~bVDAgGZ_*9wZEuFI<*6Dst}!g? znFwL(nmc6024)B=M=Hd{Yh1^nl2X`^O||Q(`Ir0ct224i`p+kP{psNi+uLubSr>iJ z{)Q}b#pF+yRvC{`EBjY1xX`vi(*~(yG4h4REhgi-EiDr#bX~Eh%1iwZlF@VC@7ShC zwS>M4`fh5SIHBv;doLawu^^*!?WQ%F*6TECby!4Tx7u}@)@)`9>Q=jTZ_yXs*d209 z*#$ZiJfOm^jrMT`VC7eJ*E4g~Eew?oi6LuD#MuL{Gl*%JXiqNTD6SpjP*MCGDL)l~ZLP zfOS3i7=1{4r@wsr(P1LqL!;uK&ImbsXHPXcqCH+zt88?{Gw*Di&6@ttx zy1dzzLdsi2_+^T@d^8i0<}wO`b@*n{!Y$htELk(7L%X+o^?LiQ_64{E1F<@qmn>3m zE?uJLEza1C4R9o;Z(gr{w|kfR-3HQf-qNER`q+$MNLnX31h}RS&}LyO9X=AUFb3eg}P=+ z1WA*g22I0}gGMi3(`$I`CQH{$96LW;{p$JFk^P#tAv@wMc)Mefq>Fo$-f-$ESDc%p(9XJ9R^0>Vc)h;F6Ppon*;nAMIsVs^_r zFi+Y-Vxns6rh;MgH5`PxrQ%Jsw)}>Yt7L&cl!Fv_6~1w%R(s7w6N0`|rG!g0+AXEU zmK43V8|eKuWQ50Sj?vQ2w?|u@v93tDSnGO-HO7+mPFr-W`whr#Hf+BhY(^Vt?}+lC z&x%ntd9%@O&9Pgp;*HT)iTB9flibpRMDTAhH7YWuLMR?#u7w6$;!@({;^UKDFZ)>9 zmL$B4B^bD5DF!WEsOCx1#OrDoIN|F?n_l0H0dRBhjap<57>S1g#f7MdN5j@lU) z&B29F{pJd+)g%kZYGpHoKr5%tL$}Mpl~*uWNVPVO5aRtBn16^%7&vqu7yRWbNI@a~ z?l@^1{(r2!cR*8D|37}tx%VdQBtQ~2ga~m54Wp$hj=Jk;)mm$*dk+Nnsu9Z2At%4*oO=^;L$uHH`F;NoFc3KB+%w+i{eF!q78oJh z1}cya?XvEGbw@O9)V}q)ZO~)&u&!pf1g#kkLk6~N(D;LQGgeF+Ie1v7WdMREXenCF z9R{&rAs^+Gp^>zZ62UYi`Uv(Dh+qfOz%;M~FsXbBfawPmAQBkK|0p5MPgx*$S`c1- z!6Lpo)@h9eQbrgbF8sz|WkHk#G4Dt|I&;F*&H%}Tc!M5#c5T-trPaIb*KL}TxwcjF zl{@Fn-nzb1i&kyde!>oH99J*dRIBggiG!1R2G?3Lbm|ww>NRR)N+%j9li8~%%wF+E zMqYtv#oG*wg`_hmm4uRvCD_bRk|??FH@c0Vuap6Nm2$XnZ{{(Z4E(`|yss+;C&c;s z9^#x%33N#ZNf=(CFVG)~box5pm4ii;z zYV_Q;xDH3#)B*seDaF{;;St5;gEvDDc?diNn4wA^U4w))Iu)AJ^;i54^!gS0A`kr2 zkG9vH$?wfV!{9`wE${?do)Phl$Y}N;Ex#Oky@wb`P^xH_Kovz-2v^jYl0x1;26uov zsp~{@o>M5LW99FX`YjBQ>18ODhce+ZZvP`BWF>h9oiGgyLPVAX!+mn|m&iMHZ`wC1 zK6H7X^kMPFy0ty$kiR<#t$|M{vZ5Ieoia|<37#4$!4p*{ctX8Oo)BY#Pu5+A{ru4y z)Z^XhL|1GQ;u!<2I)#AdJR@X?84_VhH$2`elo2AG0wp7@@H5pnJvWSb`J^MO*Bm*F z&wahAPuDKJ`gHlQH)8v(KVG)AUEZ-{TV(w+Mi1!NFJojM;ndAxCNTR!EX?u+Kn}Cu zP^u)}4FGN#w+9&DDcd!a0}OBl3<4fdj-t>{z`pEU#83Gnnu`o0w0-Ebab^8tMvPAHx#8S5`}XWj@3c*}oxj73Vh&n61fq`CLmE`}dM`W^3H#tY&YXj5Wn2G%6VMF+ zK@V_&xxw}W-ryao3*adfUp$SxmnY4IvJ90!fHWgXW;|!%<*b+Z&`72y0Ky~)wGhf7 z>;c>1L*rpv*mgWV1lx_r`|*C*7Iuc6CgTG70h=eo5Aj~IBagFf;=;K{KntQkEijm8 zYu6E?S)x(F5*ZFR)HBCuhA3%{R8K#V3tlM2sf0^Wp*6^Fa;7NTVbBJ-J}Fk@&S;ZN za!mjis3jE-BqWFPZ4_ssz^*h#UJtsQQ z(I2h3UkV3zA=uriTWp8%)qc+xG4s;!!xz2>W>qd}N&vhFYz2T#<;=hrXvhi>D%hS? zdx-?!>BtB`;4NUoc%|@_(kNLDQ0a>L)HM`twHBr*c)oIu8+qr@8ZYB#ZbLC zKYt!)#@B`%`{LMre3~=k7S@~D6DDU9?Xm^7N9<4;(b65p>uBc1Y2%1;A%9Ab9j^eg zq4IuQfJg&%=DbD;-_#4=Zfz);+g%Ayp%efFUsNnlW<;8_3r?)@y z@!10(?vJh0U~a;&^ma$PFBtsERkpk3;l8}7XIq+jEuHs49$znB$p?n)B>G!3y5)gXHDT}>kw6? z0;6R!r}Z*~P@a8hd%p-0KrZmCx8TF>cY-wxzQVzWZeF(YAw;Zoy~EHg20fHJ4N4 zmv~U>dh5~|x94R2HZ$Y+q80sS^=y!rxL`*A%D>)e+_q%f!V`B6kv*<8*v-~siva_C zffjV()qiE?3f2|jA z2Y=jdO8@gkePH({ZRT%B1H0qhNzE5*Lxw!-g4!$2ug0b8ai)Id*_ANqSQT2jO+x%7LG(1lbkB$qYS3< zHW^Hn=yP~Mnf<;)rl(23jFk*4F762z-NKFFgWuqJY+{pfBK+3+mzAL5qXA$;Y21?P zMt9CJ-=L371hE5BfRF^c44qf3v|Q+65tL*|QqPM#ffzMMDYEi}B$WvcfpYwca0KVf zDP!7qo!Zq}z78#`J+(I42!vK4FB$RQYVV{t6je>@MTlA7*eVMtb_oPis>GM1CeRn5 z1;f{`FJ8K|m>JM`a$~CoZAzM)gzk{Py%D!(pV3*`lb2Dho0|x(diWaXg2^NsrBf)! z`}$EO1%E%W?oY9#6iS+qAaVuSXS>!mPV|duJkM$>Ek)-!^DFE2V*k~Cme%ahidCGs zB8MFeAXtXmGf!Ef;MKg`5r_6ESUaf?#1gqqpm1aI;BVGs>;EhvuGOY-^oG{HR7N!pzF?`Q4bX>g(Dt5ty-B6Vs zxE|MCXRQqNV;3uaDaWV3e+U@R$M#4L*p46y)CKV%mzO0Zik0wKvY5(6a&kWNu(|zCDmI)rp|M2MRwMBK)jyr*f*Knd>>ub0NCa*rQ7=4c)6l z4P(SOv(Ln9i!;Az-0Z}t^53lu<(uamnb0ot@44qwnw*|<9ltEfUyzx{0#urNcPvdGPY33kRW2#8kA3>uh+L7pLRX#Lte6Opvrs*L2)sC;#i@k4D^cFDxoIjnRk>GP4 zMCoWeVR?)G7taZK49@79$^g=t#<`T&Iim8QOCW?&x!jPHXo>6HEOlw zK1h!t$DWZ$k#7l(Cm>gwQ17$bS2u3x7tx|w>s`Ch-VN_{)x<2)klH)vhSn1014EGB!ZmF?=j8 zH*wM{U3Gl0&>6YL6(%g=geU*Jqaa?H0yCDG*x&OUcFYN+<*0|$Z3^@%ZP4y2j0i&Jn}b&7WhjTz^)2oJoF6_4*?JQ zaHJe%HED97Osh4J=$)DM-9;bk7pHNhhLzG@1xzKUV3&em z(1({(&KGzC*fYeP0)ZnBp!T3+uO>wXUMBoUifI=_y@X)e31+Eof)Y4IR=%070$aZS zemJ|dFpI4`?2Njch4gKPlQmq3+rt5DGVrx)Fi6gId*mVA>7ZoY!2vsS-is&8tPPu7 zF=8h#tSov{?`wO+{Kj?yfglVF<~_nAL?njV;^vPz!gF6*eW1WQ=?UyFe8WTODi9~V zL5Wax1F7-r$W2{tNQ4a&>9z-L*P-8(%abg>q4V+$^NJ_8T?qa9W~;4#WwM>{53g#h ze7OkX-^Oe|Gkoft%7o3Ck|S@j4XH6%G?*D*vDQwcltmj<$$nv(LbCGco0QWd%e3* z0V5$wRXxp0yY)1+qfOo9oPt;)yg73;WeJH7B@=p;Q20TD8k37BT@0G$zoS-C&MC3?!2QvpuWDAi&)|q+;*X9|u zM$8x!&2L5=W?J)`w(}Q0mr+18t_igoQk3n-L*X#Lln~;fh2Y=jS^*ex860a~#xCcNBn$qsj zr&y@)i1a|I0_c$dG(40A3TfRZka31enzd4FBu&XhAewt>GWoMwjr!CHtCc)uVyga~ z-loVp?{e3N&k1beo6PQa^90kBigSXc!M**zZbPfK5kR=Iy@jHT+vH(K|+UoV|iq$i@IaP@iDkcm;r|!Ypp;Np=gP zJVnl?nq?Lq3P5dNAnp)`L^6w$MDb_q7}&m5&-U__t2=gp?3G+DqN8Expl*#jd$$It z(!k!c$+^e$X(qY$R(N{!(H&68B4tJylPW*~$+KlG!Dg0rMlU=|jCSA)KSSH97Z=!j z&M1*~f5=EJes-*k>6X1)iY_ z{Nhjsm>B&ZUyT_hOA+ci>FiTxmTVqH?y5;$$=fJAHWB^fG(o+U&e&Z+(Mo_AlPARJ zxoXHY`16qgb8)Fys7n$)%jV&iF;WPd&1SD>Lm8MrJpri-BY>a)05*(74%- zPnLVzb%g91HxM)gfMaM)zrkCCgQT$*pejOwW~&M6(P}*K0`lLD0?OIUit%Jv$(T+6 zfYpf@R&Vf;8|Z{PHUgQnbTRTqj&KH~V^JOc&oNOHJ(NNy_Rm$_VJ zNKpZ5ShD8|aC<-wb)uyX12tNeOvc5>8dQmiO!Ey8E?r{Ve5?YWnL1{{!DH5MkMV`2 z%#Jd?u!Q}Gng4q2`q!E4-n}d|K3(y+ZFi=~8hz*t%XqTi?%)3{Tlo)rmW=VI0B~d` z1%Xr^h>VSD+lgdp(o9UX%C3f`^;`|zVKq{QJk5tDCMJ-3fs7JIW9i*SqtU8NjArdu zWz+u1E4z=MFr{$I$};4wy|fegTA$|qou$C5;7~2B{RaxNKG}3BnAr>PQIQ+zpW z$L9yG15}&%Av>P!2sD%j5lMLvgsfoa$VzT(8e?dICgg3J zab%u33qgAYkb4TRrk_X-(0R%Qxat?H>`5=NG@_*JPN$j(^B8puP-x@YWyKD=SbFcy ziL=90)^p3}?)j+O_Bkur$}&zdmx8c-7$PYzOWH ziLb$M9td0rl5em&n4F>?U=JBDlKWnCniFX zd#!Ouwn{C#&gz9DR&|^31$W}wS3Ps; z*E>G*{F7cdfh!n(WEh@2aPHz^mB-^#@@I_O!sLu6>#IKQ&D>&>fd^p{iuaLf{51*o z&VI+`f!tNj$O{G?#a|ZV*+*d@6I)@!26&r!O*ABIk642&3`Bt1pbsA?jA>w1rikv9 zQLdDAMvB@A4W#MuP-8(&Z>LeD^(Gg2h$@MTKq`(ZBv=SB$PgPF;NT!c%WjB= zp7QYkc(|M!cWv2C{OZV3*l$>q4Vm-ucTAnPnf-fSUQ+&hZJG?v#ebbJ*$Y70UF3xXD29Yp~bNDajHIu!-^FrXGM`jCPmv|5cuEtAO&1e;xh+5q_{L0tlK z9B-UIu*FCJeApTdZ_(Fi!sikP^;|v;hFfQG<_WmlhF`w?v`=uGpiers+@07ppQT=ip}hY^QLs~Sowt3EQtcGKXviYfC#XXXJ|fHWE3$36Yv&m z58hAUZTK1aUVbF%^n~6W?m)B440tk-Vo}>1(66-FLW)D_e)Yt{?Hrf1DDmW#n zX`BJJYWs>!uDq1e)F(Rt#xhZ4w#L|=uPgm&>pMXQcLmnd$I5Ed?$EJG_^xiP?&SlLA;nfJK;8%>NheK^ZrViARtw5mjYw4L|AVTr=S-aZ-NwqT> zv->Q{haJ9Lb>Q?;sF)JfX>gli?>6}0*B#@VZC*8Q7DV@!jp96N4C;0*2d&*SYF)FK zzy?E_Zfo4NX`?2F`ljYXa?_TbtzSE*cV3Z!Jd;|s=j>)S83cmQd2gDxauYkal^i4? zfRqp_k%tqglYSNl$zSh0O9YI8j!j>i*i4u$IIU<0+lJX-&1l+;&KWefvKO;~xMeTH zz1c`n3#13{FKB`ISLxooxrpn4O?lG%ghYA_R7<$}YqfURN_=7>Q&qE5qt4~ez2WVW z;~B;2=Vy1>HFwprFUKxrJK|q)^QZX16zfao-ug$=E6-#dKYsr9W$Je{0MBQBW;=pt z(4Ger>+687NE&RHe-Y9eq*=}|jZhb5ap=VLQgZg~nK}v>XqcIph#DWgzjsdB>@~3I zoW7k=zjl3%4O)Ht=;ioJY{wr9N6xyoFA7)oiw*DHIb~auZi$Ur)u|H@58?Ns;Xl@F)>L8ohqa3WPI<;q#Fyb z;uqttEJRH!^YZ5}$lI_WGmqJ@0zXkLd^ispZN52w&V$xV2QOVYyZgd90Ktd0N6Zzf z0nuKf0YT@f>&8VW+s^IultMD>la{7D92rsrrD$Eji-y!`Q2T?SQ^!KQg_*}}whs9+ zWM+KUa+F2tu1jo>m=}~U(U|vp6JJ6CWwBp2TqGP-N-`v|j7g(X0{Z7++izy<-_YYKhMNBaYa$l&J*00nax#NXsXx_<=wwr`1hV)LeRM(Qy0Bl`4_&V#wIjS zb93{K%O6pN6Z40WKVU_e!IpI*;| zx*myDQH`JL4C~$|zJ{-%RSkTp1Yb6^F!V>Ck@ry1r=zeC7PZTWWuCOvQJ7`=)9&!c0KFT<>}6&O~-H-F=pFU z9&XR}{$xlxI*ihXe%zbcu=^x_g3mvB0^?v{37>0yvGeqq9cS-u+emP58@JsdzV)`h zxdNJb>d&j3GEb5R;n?l9(vGoOPmy8lDNXmW(gY7s3f-p1K%%K3t7Iu1D^^5w5!LDy z))(t$KZpLf@(;8o2W{H8YJM5+!w%*A@w;))aL2o=maSO4s=oD8B54i5WQVs!CeMgB zwg1fuh1W1*vaGN~Q?5bje7S~LKWJb&ZzEqB$%kGVqHv*s8B!3aA-m2Q^-(xR%y>mvNn>WRMiDfsFp)oM)#8HTlh;!AkJxge{$#vL5E7GA0r1qUf=EX-du1{_)-s%y`&q;l_3IIkWXF^YrYg zzgW)ST7qxl>zQaBk`Md+FLcaW&sw^E_Vl&Xf3E-lj}BDRI~07$Lm^UyRT()6)i^f~mGk1=b{KlfS*8ZH?3ax)Ho-}45Lr%6P0B}FhOm{DdI+!H0 z?e=++w2)*;26~8`L|^Fw^tb%yFt9H`dXslveOs+h^Y^~~lPQCln|Ew2#e>Mwp#aDe=sa}i ze=I?|NvaWU4ZEaiP9$oG@J1y}<;#^WazU(x_poy_30*zF?(arW<$5Yw4^0kuIlFyr z=@#7oDf}Hbx(jD*DP0d|-NB9E?@v&UbujtI0A#k#Llfw~4=ZhU&xoPi2~ZP^x#$BX|0q(rNeRKZkx((jdgwpD+7kcIknI>ki}Nh5MGTVrz}bTr_yh zp+VP<57-*_vF*gKgT9_MI(PX52)Omk7eK5{+o-mFs++^%&5l2gBB-F6*3@%8yPDm} z7PD+B?sEbnSjWd8ey}Ivgzs3=)X8U+#VRRssqEs=vBJC6Cy>SXj`b%z z5cPz;7U$(I*Z*$9eAE(C5y3j`(ylb zD7;X(4EjA?{|5|Q`_(Uy*@n-4v+NsuZcD{|@>~wu9?7m!{znYh%&xdNt3ls5zZOTvOk z`Ac+b0w=pl2n$>BtCb!XOG_=xQt0L02`(SjK27SJ*8Ue@l3P1C1bP6#_7``Je!Nm6 z`rVto+*J_Wo8_sz?4lXY^hFMOiF7oHLmb&H^st7Cs@#xdm`K8GnBseuRI8 zs=r`)G z7axlTo%?&-jip!d3+q1%`{txinZIRAaMs>=`5Q9l=Wk#t@snGs+-F}x{okL$Zg6?s z;5I2!7lua~idOH;Ik-{z)!B0=a*F^1)&aoQVw0(xZWvg`2MKuoAPTSzs&X!oU@fW) zb|DZ9b_+|i(wJGHFH0?Ak%J}bWctiiyhBsaxV~SE5 z^y}c(%lAM1r0@7^XRrk}95ebc{_zQ9Us&1X?B(qzMrr4yu3QhV;o^@wZd?K5IDuQs zv}TiCFrOj+9p;m1jeU#J9%e&jFT&JCpgumvX3^0LBzHss>FzK1BKsKMK*w`M6bh76 zA4)kDlslD_SSPt7CM6{XkjtUKNDiQPL^P}EaD@sLEhw`37C~r)&+tBPRd%O^FbJ9} zQ*j-t;`t+bi7`G3AW#D!W7%Y&2Fu*YvP(!Tk~Hc6az88~_d^@`V81D*|NpotG7o1K z&BPafhqLg;+fX~L=nEKp8*hNKeuqEd+TvoP-$U#8LETciD#X3&?N&Uxye=~?W8wZSE#Relcg8g#Kfck zmMO+dHU8O~+a-M3(L0b1+y*=h|MryI#CjdUu$;7K9RS=%bo_d_*<}A+tzH^qOQq{Q zyd4ty^f6MpII4i7?ib;W)A5?3r++goD^4*1m47fbDv4`=@H_!ktzY2AI6$&`{>7I$ zjrcN`c$RyjR6fNMrrSN56`nAoFwb)@`PxRTnia&fIgflroSO^NJg0f0w|FfVh4Xv0BcN@Vo6LDh_(NB2fH;b zYW4Y{?=Bwf)3T^}w*wd14;D^NG1hA_C9`tG%t^_{+Kng8MxIas6T@LSuA|4_;_FZF zuTi)g+#U`?{#Km(Ik57Xs+2!)#Gg^AC^vL1E@5ZVdDzGy$x@xd81ld58P*oVKZ|Dg zZ>{`}O|DF3HdUtLny?vwU=RSzQT9EcByK5AcnQhwB>_)3f*&6R5Hy{n_%9tDG9k-A z8Jx_~;z`rb{)mdWd($Ts!+BAbQrH3?{4)xLh;x^_O?%tc&2}Vt@RCjZzs@gw3>Ox` z1;wwA*t^bbvU_MO!zHp2bVvNa5wQH1fBsGR1y6Trh4w-da{RZxzFyS|;UNf-RK$PI zk`lTXz9p{^^8YfgAOw`od4&l08U`Qw>3T6v#3k@G3>ch|)}Kwr3(%1b8&5DB@j^Ug zSn8*vkq|d?)7WI-MctRvc$tt@5V+N{sv6guLo7*Fp-S)F*M47DNbl=Pm;1WddJ~k? zus*hTpopziTwHNU=mR=Qdq9pMHre{z-U~!}!B}Z8NKQd6c_5ry}$Awt)){ZOB<(K*rwoNEXL-1c4wD)S!qZa#au)+B0Hq%21&Ek0lOefx z`AA{5tc%78)RD9a&}xOdsX-{65{RvUR)ZfyRt-JB{Q>%U!zs6yUc@hy*jiKsi?_j$ zE!!8)-;UBQLpi?lOEM7yP+i5f*ktRa!mBq=72G5qV#fd6%T80yx(4*)0|hO_z&EUa z_p~p6A@A!iaV6p9jGfmIP(5PPQ)lqRB*u{v;!D%;(Zw~JPWATeYlgPq> zTX0WU7MnM8#eRqjJN1EZ&;S5!4{&?x!59tZ^1dRjG1AS=Pl9E#qcW-Q25%%E6y!rh zFohRJ7|lA1B-};8tQ*xGRthVGc37c`dd!J@egcJZpuUNo2BF*Z!*{5s$%OFi(mv>gmE^WT6tY0{WDP$GN=z-QO@4I4oK?w?fIZ4JD%zN~UdS3i) z3_eg9>So=By4<c=nruyszSjRZg3nDQ8P*A zKmug1>bgo)FeNcEl%CWs01j{W01o@nt#Ud1o)y99!i!gq;zV*yKs$wAq75(?_hSoI zWgkXf))#EDQ}3Y7D!Ql!gUP&)h^W-KS;3O?+5yNZabS%Uyjl!FrNJyzmnLnvR`NK+9gEKYw2Ccn>cKF{98;X z@rHF5QdUKCdLfwnvk31g!rO!}uHqD43;PSVN82OWSk4Thh*F9!+I_`NqR=Hlsku*v z%K_`^oET=YtCa|XQn5}FFODx{V}CwAVpoHBKKKLi zWop_B=Vcw@=!L<#CRx>oBo(*k+pkXb=yhRRDJ+6LyYx*f9`IR@0gz3$8qB9wtT=8) z*RA@2VA2XXC^l495lmq7m^=`_kV zqi^wniwv8b4O`;F))~0v`2KySl6df-?GIT#cM`;c`Fw;^K2M_S9%~FOh>dU&Hgxl1k~`8!pv>3#Zg&6`{70^jP8>fPy9wNJvvtaKdRW3(9u?3WI|P zUa+uSh9azYPVt*|gq7L>g{RBPn5JbgcD)Te*u5TC+{q6413$>(1vp`#wYyLa&b2+_ zHn1H*4RD%goH)CZZK{Sbw4jFlKU6^7-_>_h5hkcx84F7k<%<7=$SI0Wq`XwFxJ5oG z6p;#)QJAOLONvdT{=_R3jQE$Bgy==It8dxV2q zb`!@@4Z)fKu=i*M-w$+u3(x<}pf}!^S}vP?jjqXTKM&-Tzha%UXLCCfo}ki{Y^D3HDD^Jj?t8$H{I@gQa-ih z*i<9d0fHg9a+!qcPA<@X7G8ry@~)1mnut9K5Kes^1LwoJFo6v4DmvKf@xHP$)DmW$ zMm?DBuRGgE93H}LICJGrI_5_J;O?=>AOHk`>2AUo+N+TNW3PbHU$}yqp+y2q^`<2r zNF`0w7GCS`wqts+V+J`K2NjSZPiPW-S`#l87sGFaXH|wKR-CdwF<28{CgvdGGs^-% zmcp4qIM9I!e1w27jv#{xs_-ujtrDf8&B+IRxXTl17K#Cn*i{ljHE z6HZt<6X~tlXq;y9B0L3tarp-{$2tiUqaNzuRGI$H?yuY{XDOf%u0C$3iJ-=94fIfq*00IX9 z@W|lIAR5Gim3*wgWQeU|GDx;C2?$d1V55zp1=0TQhQXl==*f8qAT$a4%abxse5vkt zgoVg>d%LhubgIN8F*Q$~tGlO8o;ErOJK?@%WlRq|k==(UIG(+x)Nk(knJiM%M-C_K z8)6;KnXOaMZ0jV)b#dX5G`E7r6R#zlo%JT6u2OS5by2cOsz|B9vasPA`>SFnuA*5xy8lk zVzp_~{>wCRn(W;(7&l^*aWuT?GFQ;_ti5!y00cVYR?JTM98e211oQdYrg+lw+N6pP z%)v%;ePi{AiEeeI(^9ifz9#4IMkd0C%0!s`C4vyVqCQMD*C(Y4a~)%$qE2KTl*-o@ z_`MA+LfKQ7pcC-2f(wOSrVi9<J?An%Xmh<ag&8rVxngR<_I{IQ zLAYWf^x$%sEuxej8KVzyD`uQ5j*d|tUtbub`Xmyed_dn)kGQYMo%TJ#Jqjr3}oP{YQ-+&Mo6wM1GjD3DEtjHeEWD{&r5%u zX}D-+Wcw-ew`@$zXpw>+JX>@@xjPrM9bcpQ-W7X=VN2THXVNT);_A2A z$mB5L_F=2io>GAz5D6CYtgzFv^!CbDu~*zfn|xhZJA$yP#wgsG%f;KX$l2+oAy_9( zFGA-bOdb+iIwN8=)$}A>m8c+z#A6Xd5MLU9_H}g)D(is*7M2NQFB~}Vtw-e}kMGfr zYC2TN7yt3+OXyoM3WDd4@Js59@Q974tZSlYG@oY$oD54zdTbR=MiPrV&Xy1#+U*cy zVM$1N2$?A%dqYTY9YTWZ5E5L6q>$IkLvDqjbl1#mpfo|EsV>y&$jl~iI*leOk@|PU z#u9~AdrI~ue#V4Z^L#f$v;kkAx>12X_uoW?TJ2d`Q^osh4i%$``?InsV^aeFdxJX; z6reSaoa*Hgfhvg_zoWxY<|9%XJ)}YuNiZ?dq?Jd@U+Z)a9rfL2{Cvn zz9PR3J@tM1N8-n~Qg7l%kpufjL+?9+s&FP7&+Z2SAO?IYs>2X=T$sg;8i}L+!cY*0 zV4dJnS`MWB3wKF-1c=_(6oV=HVMA(nNxMjuRuW7-e<&&{zH;M0QQ;NTs^7RV1B&`) zr1vXAhVNkQ=uv4=`0@?qWqdh&*zibbxQ-`Ap5L|164kel&a!3s+30~pfo!eqp)5`Q zA*c(Qg0^5M@71oos6f_`p4)BRDUdk=;XrE5;!6TS-pe;o$fCH4)P^~m83j_{W(>K| znCnuD>~}2YcZ_DErJ$aZqoYx2j<=ZOjRlRIUVKMse&1qlYcaPq3bF>$3|D-jNgXXy zSIcw7$La&rf`+JCtxpg{L?O{SqXd;}hp${YJc^HxH;*d1%w9g)FP)^q%4Ux4H!7|F z;5waW9*Pf2pFVA5%{C=Nant6^x}NWGd!PPfJ@v!WZl8S8?ZJ7}?uTdV*JWByEL@X0 z1@6XOCoNdJ5GBvcgU6;tclH^js4;T5>Z4G+v~!~&0~?Nw0u1=V_K@4jJp*+>3i0CP zJ=?Yuv*V432dBA>J3TJPeJX&Cx(^+7PanHyRG@S}l#p)&d_*n!Kzf=6D9uS0bCS_q z&tk4;EU4==#`TnDlf`T@7QE;5Vv^F_!eVY=G`F#s+c=NC`=O_%?f=ctH{V`by4}*t zxVG=6GPZR4N2#B6>6=yrNA>wIHTA=tbvu1g8W)r?eOg+rb_Yk`X3d!OJ>O&Bzjh4Y zD!aO}eLKrx*s$zc&b%r3=H$!?gC0H}Gpd^adV9Ezev)?BGbs^rr{q0HH2g8OY_qW!BHWn59F#ghleNXo; z88Cb8s+lA3OgJh6#$M6qzMB8@_5lm8?vLDljk0*h0KhKgnt%Wh0L*?yNf;Z~0CMse zMjsH9#L<5yhLgvjPoVC7eB;3OpYg5tVa$1avlY}I*>WGow86LG*Sjb0#3gX?uF1RL zh+R{6!S;CYu1PxqtQ^E{wHdfdASXJ!z*xY@Bm(w^B%ML4w)$>`C=_nt^i$z)!{KEB zE7Lixt-nnDpZ3Mk7E1s`}z@-tm%qN0nk;8Um9V=U(0 z^kC?%EEweUdP9r(9c4j^w*;e`ST%p3M42wY@xN-{a($P(Um^JoP`|FJ&DhjlV@4%>X2NI3(68#(Gg&*?f6&@tjQAD4Y5&25vBG=nnb^O& z4j$aKeo{gle%N*Jpl%J~6XLLEw?TuuHi%EEZ+%6+OTNPQgr7^Q&xJVN;q-Ie1_|#4 zz~gmY+z$@pP5~Bp0zaBD4F}P{Krog%quJj`7-^wKbF8sC`;79Z!kkxgAX!D6meB_= zh5!=-lQ?w@CyzSW=0dK7s>x=in zPnop{HhmvotNaV$(v~o`j%r1-Q%rBwismO8`QbgV54+J1euVR}%4bU7*6)!I@GE8R z`)4W_t8!bOLH7`B)e`?$c^BcstzjLa4qbrPaQo!JAQoH)02sgq*Z?+%a-d|V*^ZLE zK$2|py&l(qylX99!|vyfgIMrXco*1Udqm#F%y4;Ei2YrT+FUxV&5d_co0GU1N!Y7z zke1?+kF-MP{XdrHNQL>|%X3_i^*fWm_%xkDdvsojpH+llQeqmrWunx%~$+dEWOivxq4TKt)WJrQT%24nl7%=FI5evp` zhruyhmf?K(N#B+uM-pKU&iv=u;!*Pl-pmcS5tB$xwgUCaTK3`yEVHezVn z$dNrppG+^>;hFx8!zJ*eMgvEF+7PK8XHOkC`JJiOf4Hj?7CLza8b%Kq)R%gb0l@0z z0C<8#hnu&DvHC^+jlgKAR|~~|6RT&e%}ddlA}&Zq1g2qUf*}QfY0ixUa$t18mH!t~ zjmpF{$DYOTWs!imhK(ry9p7T7P%VScc`s2@L!=x_u4|4Yri+pWBj`sn)x>R>YEViQ zu~AYYyQYoauI|pmFxcqtduZ8Gc<#b}s`ZYIxEw#lFY*1X<7dzQVC}=1DT?+N=4*-u z`keQs$TeX0GFFc>9R|5-m$nL&5ynUY9dBt{RjzGq2&k?#)gToc%QV5h!=J#QzB|Xp zO`pK$jG`PRd=FP%>U(C6dbuul;OD?zb4idOFeR#wjPvv3`MOT2rhlQ7LCC<;%_dH-?GZmJ-I0z%Zel5lSJ+ zBm5GPYeGmQgnW`ACD^$%pMu7#H$QYNn<)zq7KZh=lS~Yd~HXL5X zgH5;H<2G_9K~0bd^7){ocSH_xEq6KbNMmS0WOd*OHI+eZq!`ZnRulG8OH%-Kol!-I zsIBm^b&-hmuIVhCqAV~;v^r@*riSQ3Ah4?aO%0PAIRqgwt)X@iiFUI)HMjB7zQwzF zd@pb8ceCNR6^}|p>31j;Xp4hL?q_DQldD#5K?gALSX$!ux z^%1`0+Xt$5-d$~7gwI(YuE#HWg`oJHKiajqzvxxLh3|NPzzEwzb}icp)Br}Xjc4N; zh*5Nm^UWZ{8Oh}qq~ahaAvR1LNS|r|+d%0+8l3BMfd+8|opq6-4PtQYJm~g;6zm*m zj+C;~lVVk(5T!bh4x%=Z7(hhJQ%eco-p68djTJ`erY?^*s%*;DV0Q1yA~!&evj-d(4LJAN87x_Io&^@}FiY~Wp- z%f6(0aU*fhy+rroS~!=L(Y^RH;dS&2-HYS#23Z!xGo=Ev%FUfsvK>2OHJ1%RaBJr* z1O|Yp^@wwDDQM+V18iymYiB^gT{shtFM~7iG<2aX$A5RlPh3zogxM8eI%(cS;u20n z*;pMMqOOvfi$fNVaS`ez0g(hlCAcZel!9-FEO1vwp&G#5VP^iyi4)4oGN!G3`Gn=nxZ&#AFcE*} zt3wBfj8C-h;|Eu+!b<>xSpYCs*!O@2bmnDZd|nM4B8k);%Sa&@11O9V8EV!Mfa=6H z#R~adt=LrNN^z?$tIUT{5w~|$*OtX_UV!J^FMZGLhb{2_??Ye^{@qK3LI4Dr0Itg>lHvesA)YJV7FQz?g^SPy zwXzkY)3jt8CQi0GwWx_MgMyAfVt&JS@V?xwIi0&Nwyq+^wUsk(p4+$8*z`N=ZS?iN zUF(l&;D@kQ&w!H~Kb;y_2qQP*P5A5Ksn`GMvZP)D^QrF2FW5>lFE?$E*nTwgtOH~D zKmi#SSmj|L3H%*>jPL~lA*Zk;qC5hnO485_CC*aEa_6&&*9vd)bzzZl(Lm_1wh1El ze1|hKt<@*Q#-gLw@uLajvjzmtJ~Qh3->rIf-~6xA(&ynTqjLOFgvY!Lk|nh zAHM~3ptFU$Mnv)F!FsOBQF9kO2G1W zf1SS^+4Tj;-e|;Yxb1Y$yg~Lxpk&9`j@oRXE?&bPq^HrJ!t2Z|+fka|XwPDr-`L^E zZ@gXIi)H`=U5_W~r^ojqmTuJCEfT@>!Zb7u5t|Ka?TuQWDLRVRWt`^1uH5oVxsrMuQPA|~|B+F0YuIJ0#mS}xkq5Bd!KXq_gY zIEV-R-}Gs3;Juvo;Wx8WBz>+D8=-wpb2!-1)~6Siqg#mFJrKEjpuOa4+DV1janbaS z4i4?BpR}+3Z|tj9>*#EI_^fDGPNR5*s!?F`Hds+Ch!6-KxpEE;{tOxDorK;N*Kmic zZi_(4&ZTpLc(s5D&ZZ8~*F|oNMDs*G|sdv~~R=&VT(>9N~BW)bR&HzMh$}dijKP zi?aa)L-1I(CYuaGKq~JoDy4fHCHL(Az0pC8q|qU7ZZtttGCtOM%m9cpet3YN-<*AE zQt|q!i#FqL@|g{}VnFK>0C`z>rLgkkE+ux_!Wv0rzaiYsM1x7Ik;`QI7}DfGjTW{31^)x# zT{yJtle7$mZCb1`GVCwM@e`cCczw>7&%ZhK2ZI{FehAU>$s4!5pFQ&UgLUYgY@Ejm zzIgX#BV`1;SqIGFL+aL}NJOQ%wlhvX%H8f8WDG3`s>UATm>}VHFHulc(O3Bp;hT&^ za*kXaYf3PScA*iO#zcFZq|wOzkX|OZ<%teJv;xxq&WVFVi%_qQnb|DcY+qO{geG3e z{IlcmYo+(l>5n$dU9oK5wk{mb(c;T+;OT)oUd?8U55Umpu)&;L zH}{leH31ML+U{~ca%Nxv19>Gy@43-Wv=gUzSkqHvK)4vCI9oA^ilaJd92lY#@{9pQ z6gVMXr%Ry3Rk@{em=mu6$;uxztpZ5+eCIE{}g z=8i=Z*Q3d^D%Qh`-#qBs5?6Na)DvAOI(+$)!_%$!k_YV2biz^^S2eKRWgoD~zySL3 z3a38O)JrwP6=yFBxgSZu@YNB9!+_y5P*cfd7u{q3J~?!5_{1QG&*KnTOt z1`We4jyiCFvn~+#W;t=!y&`UK;HX<1;fiR`y0^BbwzWg6c34}rRa@<^DmnST=iHl+ z8`A#zzMp^l;bus}Ip?179nbf9xWhmTviL}9$vaf2BsZ~^KD4YBy@^r({wCH^m;%U~ zUxnW7XTNs}=X*!tU2#dtI?~Np-Qj&ZH{ome1=Rlh^5H#p-{7uey8Df7&a9q-3X0&& z1&}LZZe9I;SbO}}zO{p|q;#B+olsgh%LpJSz?Z33PbBGwSTQU1LsAD;-4CsYn|^pm zT>ro6N1TDs=8JBSR)KR$Wp7TGqQ;%@>_WjTPLmF5^OH405 zDBQ=@1iBXTYqJWDmGalq z%Vuo+so*%pb?>u1lIPJXF%z$%idJsyMTvloq&~*ME2Wg?RlI;w3><`6OksNdSs2XY z2Za&Ogj^!Rh-VTuJB)ZHVK>7F#-IE~8oAiWZyY8UeHhFr_YaE*L-~BGFqrSWrHbNu zk|TrYQHk_m>@OLq3)ix2n-ih+5t{zh($b?I);4F)qEnpd?SbJr=;O*`ci@m~Blo_Y z#~wcc4f@5FztLu;Ye zuDgqxE&TAnmqSc>#`O%7SQ#4#(e!)jO)&T%R2+ukC4HB+!}u1S_r)Z%Vd2J`M+OX7 ze04n0m$N-#F0^m?zt$v-?aSoeKzcajs6o}^m=)ll}+y+i734T zAkf(!aUG}vOd8KQ>Gepw8%L4{xgnGz*a7EUvL6yPN=b}YE6jxer^Nv=j$!BEuz_6` zuJveB8Cstq_S61j9$dhdEma+}@{t8*(?vmyrDG?_{?Oj`h{h~PD}!8HS?mAQN;Rs{ zN{PV$58#c=GQ2LcYu*%wP2uZ>LiT6#{v#gD&h_i9M~6;CB}y zl(lgeL0yo~N7t+GXrmua=)ZyL!*LgF7xvK#P1${;m+{NNh1pvPo6XrZ9%hy=u&6yKy`Ep^UevG3 zVRO+{?l$0nFVIoL86gHW99xc;S9Od~Yw4 z-ic?|!ZvDr9`+b8y?3)gC&*uoK@rFoRR9@K0(Y->pk=I)i3086;jclLk5kBdtI#s; zs_@=?Fk(asX{9e7%WMavQbSI>NDeXe#qVd+1&t zNeRwa!NDYk6GimPWE)0jFvs9vHmKv=l`H2Cy9^+R#t&gLa1?le2*>x3B3e$8nQ{6S zmCQJL0An7CA9k9(dh)R06uptg2EmcEH9j=yOK%Oq0h4EL`A2-d_M)(HRkqKSRU7pTGks zK||h)W*P{3g|h&{m{p_A0?b12#hu!(k#^+U(F2&u!T7U|OE#Eyj{7WyK92pA>>&WK z(UfzciyL?OU%)=R{*g_S9DQsw9#@HT;mS(5mZYMY?Hk}^yp)XT`#6hDpt-(TZh)1N zKS&MLS}sV{zo!kAWZC?rCaWi9ZdTH~n<&_%wYOJnGf4`v33yB;o&b&HrxLEmW8iw6 z1-BJ3UbF)ns{SN>Sc)_#in$Jafrj_;^QW_mK*XGkdV89cGSV&088{$6J2NAPVc*Xk zpAqwZc1~Y1Bi7npF?#SRhy?*Gi5><(GZ5crKXJStC%jMoo#{)ndOZ+=4bT_B8-(zT zkFWUm%RD((6?2ivxJOb_Qsc%+Nl9qzJ1ttg^G@^T0LZ9+@IH4DsDX}Rz1xEB;3SWF z^rYEoy1OExnnBoB(I?46_dPYUUAp7qIrAw%-xXIrD*PctM8t9^Y`qUKX*SIJqleOb);`<$3E|O z>d+5f@7swy>-hfLHhoh&yx%9aV_!IY-oAo@y~{ex+c$OUo@LDRdHeS-?)bs}J}7MkUy0i2Q@oLf3r!u$sA2Wo6rf) z#K=)30BDmPSM4xI$=*b@MbR?!7gq`VK`-9RmD$;CHihQ(Ur;U8>5c)>rteBh-2|lTj9coM)}6HkA!^V&))a ziP2Q@B$n=^8kJlt*OCB7a$=k=(LjGBRSFudTC34AYFx&&MBl=J2vmcho zUR^nL@AT}P(Q{>RAl}Eqp73_NjRQ(bJm+P3yf<_4%wv~-`@C%IjEyso&0GvP5CMQJ ziN^IKfDXihy5NW#sY)8@2zSS^;>da{d^947lgeUJ>C6395h|2HIu@-bBo)D8?Fj({ z2TJ9WbQHCr5dBkOvk)yIg*4ykZ6UPCatj};A&xm8=UGeSL|5z71~p--*NO~nl;Vm2 zbD=g)#~Bi}F@`vpsN>$hfB*jdbNDPCa^~x=zyA6R><$Z0R}F^E27iN8H}L1U%akeT z!6@cH@!Db>41Xp+#cPWZYpp_Tm1XVPwZ#=xkG7Jtdynm@jNwdFYj!uU6Ds?33X{^} z#^$9%=(e&=f?#zd)58CoZaI~$J@rsf`#6c7VehlO>0<-{+zmQ%}{ zLH4(#@j_i2u@gKfEs%_|iLfNUK+eBf^m!P49!`HJlKxHp1!or(=?J8chtj zKto)doZ0iZ@7dvt_SXIM#fam59`-#x^68DbJLV2QGvGy^Be-L(?l{UD7kvcZJrp(S zHcEyXG#nKhj(#w@ws9g4!y}J@9bJ$g zETc6V0B~CMgPEsbCdU{brB|iq5hX3XJ~kw`+<6hUb!f?PAYb_9wp3NYec762Ti2!zp2%XG(c*z#QyN2sPw{R{sf<9VL< zg0=q`vq&{QduN#p&c<`#98~-Kt*C9`Fb4X}STYmJU_``+y6Y!rE&(iEgC{u?2m#?h z2kL;6Ze$xBgudRAOc5Vl2a1+lZZyoR0MUx*$Y>@*BB4V!AU?M?`S;q2+L5(M_a&4H zCas>&)xtbJQtP5y8A(d72$2t!p%7S~OwqKEDw>XL7+s;Y6~bX7R3eEZl}I-;wN69U zkxUEYv}!FGvqn%GtJA_=XD(g3bP0u&JxO|coXGiJJvcLt!ri75BnXkzD23M zw&1;_N{NXt$}D<0Kewn+gQ7p-v4qT`e(+%*GIQzyzz~#UEil@R5#iX1LZrz?NVR)t zn@I;k_DlwZE8{aDl)loO;?aLL(EWlqV)9$`i?2Pgcv-$!fVWDL|RX)c(0oDDgA4(x|*6Zi=mCh!xi_YhP-&%UJB833?P*rq@OGI-#G zjFfC*ZkbPAh~>P3M8uxCZME58dR`>l4=AH>JVgm1UWO>vc_Dv6`2_* zzi(#pwAhHhIdIv`fm@c8ps#3A>1jepjKDz`GVUuaLC)_;l zA_%2^XcKUP4{O>?tofswbmSxrBb*&>G|6K0p=B{*!4Gvlc|R}WDpb_-YwDNk$7IkN zb*Y0H%sK_b84?~UPYP`xiZb|^P?%wg5jSm9jMO!akhrFN5>*;9CF%LbUNj`xm`qv0 z&rD2ksdy(=6--Eqq@HMGY@$Z$gvLP)+FLw*+V(Be3pOw9)TVXUwAL-UK*b&?+q(x> z?O$s5GqG$mx;&Z<&tAEANr$*)b@@LZ0`tK{}Q1P(XMtoJWd~47AKi8Zk0JD zjC_vNC{dGnUa9fSJx%7BA<_Zoyx-mo4vUq`);!ObgBi%q9a?8qpoJh7b{ zGImVX@WErp4t=|c&3?O@GrcWj^T?ea$rQ1TsluNMWV@+ClVp(Wl88K1%Y=kB4?M|9 z&oflliK>J_PmyNan{FAt_P7^$%b)UZC@mC&4H+FndK4IFAPQo11JN?~mM1LlpSyBp zZh!2(X24oFm($|Oa0#A*LU0}|v_67YaASC-J3ye=_LN=2cB9N*!+9hyd!cGhFSh|o zzLpmfIK9gJy(Boo!0MO0TKFX|MOl!Sb8<lw7G*#9Hl37PpN5UweN%+_UptZa#oXHR45O~X%McpizC^s>F; zj&Pem9K2-v1}y|}a4q-=04PV%j0yl6qj4euq=>CywpX&ATseqC5g-<=C7*%2#Ltvh zf5x89r=J;WdnN0{?F4a13p`LE{meY^GyAJQV+U{1&-Ams;;i&DIuId#CQ|%Nrn|NQ z1jg8&u#LEz1R8|X&F1~sxQz`IOi<*lJ5S39S33ni=ye9c67v04m4Po*j zfJTD=bQIHmz)5y7F)lV1HP6`H)Nl0etPeIR8cr;Nau_l7-pX(AUl9DbeCyVwE4H#> z+Zf!n-SV#sniZ+zaW|aZ=p??q3+n##y9*V?C$=f}-+XIJ0%Z$`z40FYgDs`2Fj-*Xa1OjPlJ6l|Iv0;r zP8Ji?s3*K%-gRNWHkgCh5J!)-DEiObi(5;ol);6TV5iMh$FeHu_ z=Hw~|*Wi#R8J#CpA2DswGMdY21pr&jnScjq!82m+L_~i7Bj``Aa8Y#@7<3c0C?1x6 zWc}Xw$_$&qFm~;mbTpBOJ%S;&C-UoTHxLFIfaV~Nm$zssBKe|eEl+|ob6*WJjAG1* z)fuAavqIU!Qe<$*SMdyFXpIC?w;HcS8wQ(q`10bHLOt9z7 z)o}REElrvRysO<*w!L|;;FzR}u^;YLt@177LiV3hukgMD5Eu@FS#RbgP=oql6(1%b z6~lxa6{F|<8JI!NNMAhMJdZZS&>9%mh$OYZnY;Tv= zW?npupWCKK>biF63r0ZlZgFalHuK_{1%{?b*DYessqqm#BT&2M4-L(buB&#=N8=;9 z=}X($r@*^ zi@rqu))&^_ksoR8QLqPYVqcMr7>EHpWoe3GqX7chr~nz*rZivOz)i~?Sxux6W6)yO zGEgVzbiFkiVPm5a6~ME&6+BDs>_FQf_&#_BJV2yV4q1pHmZz}kEXuGaksZ0$i=#WD zvb60T$Il+vWxx@d^#y?aQ>F&7AeF{FQz=^m_2rn4>8cI^3wRI8xJ5=!l}Zx@TBy#6fqHidPFNZePABz5*Gfxoew14pF*9$<=x@J8 zohmDt(!zm9ueI3RXzbX`!m8d>Wu!R(%r7!E;o5K`!7Rxu+v91{h6YGaK^I(}x5zyo z-;jWig~kaEDcP?%rH+Z8(dEjcN9NK}c&2PPtZ(Lqs&0)ftm@5_7EV5Ryv3V3WZX&W zvyn_qW6oQhTz-k{Mx?U~@b~=l_80Z^p=I^#FY4+;%j&ucTvR(DSObaDESkU5n zUqap95p9k8Lo5z*j~sY-UOea}J$SuJ;^0 zBwx67W5#9D!J)TLxPNqH>VR=>rXYn~+xu8YA6iz2^h7H~lgHAYXa)Y^8eQ_BaUp?) zP@w6n{WqNy@2Jx0Mr)PQ9*Xx^xaBz4xqHIRuD<(Ky-DwEPuWd$9Zm+-9g1{TC2Kn@qW=^;-b{zBu)?tLk;Zu>a5Gfi!DY3 zA2XMh9@&<0r~frcx}^|CgvsHzZ?l-v!rX(Wnl!*mg=n^{mrMz|fRFj0uH78ALI-_l zS%*k>nwg#Tp=F)zFH-cOWhrhKX#;&|Sp)K-vvfD{bmfU4WK>#>tTMi7 zgB0>^Q-y?$yP@!I14UVaYtl+GcB03u3P;trE;dNSJH#d$g2XbRXiCa$Xrzg?SH2r$ zY1gLc5@6Rhljom2IbulPfe|s`l^+Zlo<9bv5A^)mJoieTnOl}WdUhUuv@7kq!&!YA zT-#*6N``;dR-g5%-9>0_VekA&ecLx1ojapTm+ZbB+O})ir{MinhX?M;${63fL+75& zdreGVa6CM_$BbQ<&vykN2n@ja^53{az!%g4bwDy`0osC2APw{Z{Xr%e0!Dx_AR9~u z)4(h+7c2xz!3ubZR}`)kHCX^nkA~7~JiRuj*Ov6!o?cVwHJx7Hr`G}WI+$LE((6ci z9Z#>h^g4xJr_<|fdYw$Q@Xw^NABci>ax?)Y@WduP|jZ zz7|twOIfPZ$NO7MnHJL!i>ZUf)Jb9LM$2uxOBz!)+3DpJI#|;brUe$$bUI|S6s9E> z(`+(urnw4}(P9q?#)(TjP)Tt)lyYAOrSUL9XiK!eox<}vf8KdeZy}polfva;l=dbZF@dEc0CgoHOoHcUDbr@tF0M*uk zP=&mzpP$T_+_ZT{)r&m(pFApu{s%uFQZO}h(x4erGw~4=)2VB(NZ(=eP zTylYFcwx7U?mY)2HK@7@n_bJxyM`|Sb3ly0$|7LxiTn0V#6Rq-s@T`F2g{^Rr2oBc zEPOw6A-!%m{;X=&n=19|S;7P0z(DI4@-ICmP@gvvM1wk@#}TDc!PY;*D#O_NN4%68 zwmxy*Ytw)-5$w?F3Dh(!oT*RZzJhV6Rfyp}Um%JL@e$!jsHu-{=*e&iNy$l~zNXwD z1UFT3nM|$Gsc8b2{IJ2y>8jRM?O6Zt=+uFG)~(!zuA`>)n>5ZCpucwQT4$C;EGz3# z)v&4|bMr;hronNGQs)#cn{7x)Nf^|;^}sFz_FKEKURww|D+%G2GLaw%^x-|6>T{_N z80=#Hm8qRljL5>P)P6L8=SP{c2{KN~OX^M0aEVat5D`?33{tE7krtI&_rV6^Q<`_~ zP_hSlY#iIm1PjN(S|i?T*rH35{I#>QM~zKeMNmEfz-Npa$Uu^l&k^iOEy!|EC}b~V zBu%7c>+-}H1AJEU6&xCX`Zbv|iE3xqUZD~uk|6CsN1hRse3@z{Kzcd{*QEX`Qy|HH zqLwhOO4ef>VO~{}(*>0j8<%Z{o0b`iQOVK;?6UbReDA|U2ez%)ap*va{7m_gb4LLJ zy=`xpjcf@B1d*VZlcf~qni@h1I{~Dk21~9=YLQEmzjO}}k1GY>bcu#&raDTj3PSgX zmma$Du=3Iad;@=8R|nUAnKmzc{^(J&XTYb~Uz*B)#NW5VXYm=XSPrMArL>v9rEuK% zWq<)$w&%=2wgjkw7Bm3Eoq+gZuBU!Ii>aQTzh95khtz`^&V`XYQ!j)vDTdS&_`{vU z{v_NIBZXuO`XVIjk&u*359G)oCc#lknB;igD2Z7)wD*t+KjZnoU$_Ac{s z1DT)sw&%%&|RZF0w{Y8;s>^IaMFgAqsOPe1p>Ql0#pi zyjGIT<>a+Q@nofi=1L@GWz+!(3?yKN>JG&@j5kuozVkh_*ZMMM=!D~6-oH@#*q8U4 zGbFcQ`GnDJ>Y}zN^+S9={#H4EtE^~1pSgKsX4eY^2*d-x{Ky)q0(d&_=dTdfVPoep8H%0|#HM9jOKCUk6v;c1BS%J0Kx5M`7{ zKs|X7IokZB4zeE&v_Yvot%{*Lt~<~nWf^nY^9@dlHc{1;_F5gxnl|}^ak)cgn}0fT z@|)oUzWC+rM~}_(#^uh&PxH{Gp}l%$4d}YO{P5e+^X3LsAaBIZH1*H zGbUyhEU0{SzT)=KP53yPH4m0#E^FOmbne()pH!~verP-XMTp`7RKl(VGSK?(cM2yy z7S4W*IrIH8oX{kll1q#+ppr^_6h5iN93HxL7uhR@+MY9|YzgoM!Q?EXqfz553v+jt zNqI+uTy%Db93!FmY80S}Q|O|UbWc?>rC(jY`VIQ}+VwA)$|sMf<^KX-{DuDmxtA5M zA&2oZf7l5h`EJi%*b_j|0RZL!YXqJ|nbwgO4RcAXNs6;XQX09$1Li$Bxlnjaa~0Gy z)uXbik*L_3$4o6Mn!!xnP(Vi97XUVlH3ARN(9I?z`SXqy3ZS?Ip@Aeyp#iC2V+-zK z#(ga)6}7c`;nDCz^n`qWEC6gn)(E^oPdDE$8EZ*;!9f}<{4ri8JTO2;DTHOf(E@^@ z)*0&{Q^~v zIYw`Fm~;3k%sJ8*<_>;RE!a%a3%pEt@TCuegpMJQT%Zod2^u3oMI4VBy>2S^BtYk;T; z8K{gr!~? zB4fdNz4`RkpUkns1@j77W7W%wJD*iBs;ZX-AIzT4_>jL{2LQ&(8UhMRjxOFqS0{l&%^M9Pa@Y-xF$XhraHa7M7 zS#x2%^uDR}ha4&7uWTMNwqJVdzUjjk4_LGB`iCR(2ax@0Db+wV0$&gWhKj6JB*)7+ zXXV1&al$${0M^9knCF_rWPFk{X z)^if2XN{Hnf9!|Dy-?rr8N;#(FNiIPeV zDsO?U-CLS@VrpcH{TQxAD)g){MoAr{M31CM#>aym$Yp;xWUr zrVy@`EZcLoKRvZV$*Co9$TQW*n!i1@l+xx%WkD2xj-vt)=@Pjl2*UQqPk(-hA3@E- zUtl0Qc3{)`!=|Fm`%pA~i$8^ppu8nSFacX^+@)K$FSa@V|bru zlChQS19sRq52zM0FGE7FkXR@$r-ky#!dZHIjoCaG8h^lA1iwS_6?hSAw0^M?ZnD0% zlJEkkZ+p&kWsSfeB=MYUC6Vh%R8v8mn7c}eX^U2$_`K}goyxrYf!VCF>SD>oV>>fP zj3<1b1PIZcH3CMG2X&o50^1(!URf!eX!beiZI25`P8G>Yaa+O2djfKP&oFuFgZUkv zFhhzi(drz03I?{X*}BtgMgz_8ckIU+tyaVUNNh|tku3qW!4Tfd$%AvdO8MFpC`mBd zzO}u?K&*?gsgY`~*J314DY6^J(N#=@!X1k^nN$h0iEVx<`VBuo(EIl*zlR==eYJJB zd0Rzy{0M%!zGqKZuc|+k!MKx0zy9QMuTx*9{$rMEqq*1gGBuWB5aXP)J)LxAPT;ME~p5fPbuiJ5{`Vc?AZ(Zem$ss=Xfa2>r z>T`>$5AwOY72kaqcy28@%pvuNpRpw%($4))i;TitZC-!5N<6RqSP5=eUZdtsMG>DW zN$84%>LY{#wji;9EjgLiuEjc;DjJQJsf}|X*BGsZRr9^lJR#h^ms&ccJ6KPib+a3J*Wz-d=SeF;b+fDuU+o_!k&_r>EU>49F*}y}YTw32A_U}|Vm<85T zX7rZWovaZchn>z)#1==93Zw_f@()`V&mnToIR_AkGYt(y;#|x2e0vsNJ=mgF2>uJT zWsUgTftl8LA$~}$0R|`uv!RZJS&FNi(#h?_7kfe^@CD)=;0~Vk^RU1*T6n%?bye5 zl~%KvsTAiY#S=1DsP*t3FZ1y8`|~#NMCO2=bnSU*M@HF+fjg=+a+0ZA0mP z7)HxIXki4|!zp!Oq5rA)>p#KtL;k{HELP=SB_!TcEi0TqwT*aNoOxQj{JU0l4I z4f1_+{o^X%>}+4_wHsBwldVVbS4x!cxxRSAI#25gul1B^0|2&yH3BuMTX8}IO1uLa z9td-;Cv^?)^MQ<~Sk41zm5#S$dyj7jqm`tx4iOuT6t5VR3QlQ2KSQ;d`Tgt4ub*?3 zP*n*}7~oi#fIs>Je;7pQuFjwAS z3GUus>O}ZiNK=EQK~E*E!6b)HOtl^W;dmi=Q$lx7HVw5}K|por#Nye9N;V%b&c-bd zAAzBdeuiQEQQV>=;{M06N6wr*roC}LvZSa4HVyv`>hRrHVfgxH!W$ZEd&)InjUWVM z^FelPMAu!SI=b%+A#q2+!+Rh<@i=lJbM~m=5>rwhdu%+>9u-&W;8MJqS%TLVZT|fG zhYyUiXU-{EZ)RR@*nq!mXt{9eRMGgU^9mYSKOr;5_MDApOF%f7!!u6&OVm2AVH5g$ zQ=8D+MI4;IJHr&D59YTKDe$bI+#r;}#|ObY;d!3KRAi(|u;GliVDZaD|C#151kFlX z%}68u$!xr;>eC1K#q>wTH~tf74lvHz@SzNz#;w`ys}>nmu;9ceFb*=AJ6|vU?8MxO z=MNY2=W^zeSVbHFvbWSKhy>GkR>;G!)zvK&yH&$Wm6WCiNTEF55(X_^6+nkYrI(bv zF|LxFDx%${W&Ds_mz!coayh~wP<=X_T8-RUMj{9MxT9P zZ3fl(^XE-~*}Ez|Y0F36sOo+u2bvS;7H{U!|^lq+)OsFsx*4Q#!Le|)tZJ*y`D`(CwSzjrxuxn>=Asn`dE--S6 z;!SK@>i4BP_*jts|Kb6etaL|$*V{$v%-czp%~v|fYp4`9vfpGV29uP`I_n{*{N$$}FXH-)H$G49 zExynE2S2#5Yv&b28cS~~?nheuEu!<}yeA=H?YFUX5)fo1Zc1y)ycytvI@OeIH}p=+y(Zls9;{ zUrC>=tiETtV$N;_52jIvE<6x*7;8k9+-Ah2*$*Kl#(M&hQjg3z0xnlFd(CF+CbOBk z1rw{5v&O3B0D@%zunp+C9nE_=S;qg{@R|@;n_-fXxg#TUN0uv-I$FFJE#DI-i+zs3 zLu1V5VQ|5HoCu#hBXfc^(%Ep)dI&&rslZ zOb%p|%sA8Ecc-ZxTQ@V^SMZ-+;<S6m{38fbuWnOq(fm#k@&L?V%|-hrwwaAr*U{@8StY+%Dqk$A*y6h9SxQT1M@ zRo>8J4cD+4vz6}p2iO;M*Kf~z{@Y#OvC#up3ZeLhF;oIb-0RyN4A@nbZbls{i^*;z zZuStg0D!qqN1%fwYgQA2RKw->6$sFM_0FE7Ae7^jKO-7B_suJJe14BL&zfDb-VD#h zUpotPamk{BMyR1Z@_k7>?>MpNHSWTHKly6XDADuIU>^hS(whrrxVRE7HVfSs&O18t zvPpDa_T#<9dHG*QUJ|AF``aM!6G(3cZOr9E0lVLPEVRe@p3p`i-~j-8Tg;XX7BPC{ zR8m{qB-9-is7v4NP*Tg@7A>IJ;OZaP5F+4h_b zrQXa;i8mtwv4!eG%R*`VFO;kh$tmR-80v_zZ}TLZrDrY?sEj9KmGpU@gc~SOl11SC z>Bp%u4RKktiCV#l(b1|w4N=K7*Mew#1pHF=&P>8VQwlyS{~(m0%5geS>OG)|_*Pk;UvKk@m>Z2rm*s=jfT zzzh2wle_Bq0tQLLaR{Un4Q{%IRA49{s16cM9l5(Tn)vBa)^i7zF&sc}S#+;KqPO{c&>~1bex&VTnbB z53t=>BT#_3JWvMMnK^5$6-j_hQt0C7w6EtsE*xj^W8mRiv(wTZ3bIwLVa}Glqj8>S zb)g=(oxL-H;RQsikjyF-DB!*68gLVnb&uJVD5nBtAngDkcMXu1gIs{bhdeUzfF#|= zdkDUT54kyl(lNCW9rDMpUHaPQaQ*|F0G~X=d9Bx`o6TtDk3S0bBK-4{Pe?Zimo@;L znr6ml^S~)H{`ZIT--sV08SQ}w>4697fk&#$TP2s z9X2n)J3QeAuv>u+ybFqXl|Einql$MN3cYIJ52`0uN+ zI*~^+c)Yie&ttrS2t0Sb>3+bw8l0CXtUU=rui@Uk6J0TSI2F<*Xb0-iR&&2o>oSw~ zlvhQ=wf0Du_t0;wmU>@e!PiUg4dz;f{{rgPE|VvyVq{}yQ+Cg z<|OsbYuNq@VZ;qZVY!*g2iOXt0= zR>JYPWcpO^=f8SKp@yOl-N21sQWMQrgF=fH#FtpT6xSDMa1F>UHE-M?xFyA#%&ZZ& zbOhoI)|&tUWP8qyWlKO9hz8?$bxf>?ShM55BzMd)G+F_EuhsLX2?)f(45p`DA(X+~PJ43hc2MA=^p0lIb5)cH! ziI+j`U+1cEx1;@!x^fz+u3RlC^@`n~rMhzTF2p4z1rocLl%aI^53GykKV9<|e$Mnb zdu+|hCaupbS#?Ba9eI!~!4IA--tck>R6{rymYwamx~~51ua~xmZaYBZOusUpvqlgG za`{?LnjR7l@^7@{>|qwp8wr$=yi#~3jYqrE%7t;Y92`u7IGal_iAc(!Bi55lV}$pW zeOmQpztZN@%-oU*i&rmQIEQ(;VKUyNxVUW3sdwJ(zop->QDX*;*#(?(;>2nV1(TgH za()y;p#CSMoFvH*;w5BRLdba+Le9I8+z=!_w>7m z?3%rv*2!K6jjKvM&{EI+HIa2V>}0v=3^V2Yfg>lK&?9kx=W9D@R?({I8kh@NZIOJA z_m{yua>?M+WH3*VI7sm%MGUQA8e}tg013v4mDc<_z4WQU%j!>wVFV)gK#M>HMUo%E z7G4YKxYw2lWRv@?)@lf9LuQAhkXp!^s1&#euE*I7EX3oyq6K71E7jIr%!gZ$6Ep?w zEyz$5jOkEZ9I&-Okx`Ih$EJ||xsB~PvxVk5KNNLrK{XXpja8{tdx-mvzZPbcE3}bX z67OXt%af7vih9!x$=6AzuU3v*^@a~pX5Cx$j(y->AT4v>Q4 zO#VGhTbxMK7AF=jxTR@JtVz?BZT$?rV_kg`CVX_NXv66pneX??9Ne?VV0_e$8U1Jl zV%Ak2-;`clacnc!Z_Ma{J^GItnOSwz2~3Jeo{Js98Y#2mLLLZ;h7xMN8t!C}58d>F zYPgd@)SV2Xlf_$~;_2@l;jQ;><;`Z4pZ31#E%jZX6~O#=|L zw7o(bnMe=|Cb}tKb(BDX5I?))QZWat1ls_UL5rP`Glrb{l0Z=w>-4TF76{c&&Mdop z?O0Ku?BA3-#p$4DuhfpM+BfN3vSY@Q&F$N)+rN1J?k#C;+jrXB7hZ1>|4vgw-67Kp zMkNmjsarT^=B%;rG;eOmLjVzmYjlE9)4H=%rvy>(Ka`pwH>GAC-n7`nx#EmK&f=(x zEJx{M$CltFGFY%3&%dvP_2=%}Hv-9U5Y&c|U1)&q723n7K`0pJ1dR)JQ@+P~I$?`^ zp;*2bf}G3uLL}vTfk@)ihuX{cV2uA59qN@g7J{e)OlM~Po*I_6Jav~~WnJ@-DIW$3Ex*{Vgi4ovtwbf@d8 zDHAvDE;3kt>1~-+@4!@RDl(ERUxRiA+E=9ZWj@>W= zH$!953F~`k&0N5MG}|k*m5Bs_bpM>`#LXM*DpU|HQwn6v75Af`Mcbm8j0*qgh-iH@ zlfm1fVO}|Th4RZZPEA13BvQlsXrk%ZDavXiXIM>HgtTN@?o`1mRGv6j?TU{Hv1r+p zW!v!cZK)|!ie}C#TGFj$tIl0!by=R=s#R{Q6x4QdaEN|jgsOTRTo;rKi?ZZ*|_6_C7T&MA$k4$>6!J?nm6l`3R7Ay zomH@H*V-0%mZqi6wvwmG2g!5fY=&^cRkT8BXb|Zx0`hy6d2dzLF7zA>_ zY~YbWOe4k;Vq)~cbm7V+hhKC>bpK=x+YpVIA8I9o)X-u-=Af zU3|PQrjacF_?PVmXLjl^F!McKqlVG3jS@t3>miyKdf!dJ$AKKA=MsP4n^cy2*MxAp za6oyuVh_~f5A(kDDH>aKmkGCSLMr5kmlP3PH%~@29H+8Mwi~Dml0iGLR%lJEKC~>h zmb05o^n_wXdXX~VWDs}+#fl}_ejYRm?WZqa>9@@fWt1g5`xMEPSs~IRR?J|>OP#A` z&fG|fvNqEAZjk6)#mUqvjX_Yl7p5awV#y+jutp1IVx2sdWvEuKiIS;VWl>X@bAD=C zr-W(8u6$yAS@fwbvsdE@hhCgW?*MbG%^NpgJ8$*JqsBd(xP0`;rAu!uW%l$M9WrEh zrn+8AI)dv8du`9!G_B{-divBEJ;q%0F1e<9`&X@ukw5#XzX?+9UpE|Wa z)hm9&_GP;P1qid_$m#i3%XxpUeEtFN}<)l{IkgK`P*Obaj5mBX3X;0cnfUuVF|v8&1j-^Id}Nh zjfX?u!*4blTLdQ^ST?n=WX61|CCmfB)ux=Hqn&^Q5?T51e+wKaA1a$5LmA};Sz8&( z;Md6DzrYV5UD=s4>!J0T^>ftw30h&z=SU2AC$X+GTfL`Svd@5RTE8qbfXgwm175m0n^-OY;B`naA zJ8sX2@POWNo)aECfmrD3+=ToyXME7m7uK=pqhHZcYiG`6EkKK`&8%u5j0W>U7VJ_* z^}iSmKu3d@2@hWOQe?>}q_YIiwDdWy4{bk^QWsfp)g*Wj`&!NR%x(nD?5aRV9tjyX zMCu&eR8cqr+VG#X+^Ks&HZ!1Qly*O9DIERb+vN=>Wf2-ZNtWH$Jky{IXSgr#;ja;$7=?sG zP3nj_ye|P+DMBiBF`~P&6t4gD-k`oiCw_Ak{|Cw@OnZX=dOU8%!(UnBj!oTXX@l1d z-*O0|0K8yG?+eD>J@;||fj|J*T#Ebm0v-NaIj_Ua^c2c@JzbU~YgZ6ugi;7C!?d^l zmHiRCzZ-sa(s~K5x(qe=7lP@5hlCv0R(1tkFKZ?!D}rieMTazG{jtp$b1zx5o5Q-?IXdt>f!&NL`L ze^7FZR*BzS0;p;ydlKJ}tpO?!3^qDQad{iL#sksc2a1FME zn1ZYOMa^45P>ggh&LG#}8(HlW^P*HbeXp$c`VSiD;*F&hQ@NR`quY2IV%43;b~eP~ z@5p_~X1`Sk5&lgC__7lEFq)@h-VqWNwb8I6>S7pmao_$+Ow^UDM($_)dh1qLj;#RMGTEC< zd)Zvq_OO-^6RQt40ZRypB#=KSXsl8}nF@bdgiJ4EGI+$u#Bi;Lg@9M&mJpL%A51I5 z$i1l`QW<(LCWCCXv^AWLF)-~f?%#g_Mit}23Q^l3;J0qhUM}05o#T4AOua^O`d1rTF^$MfmCcTKT2<4f2x_ z)@9y9PSVf3%Fli*(pGBX2rr5*S=c+|O#A&8FYbeilc!+oW=3w#!qn!F{jstV%4W=C zYiZjK?AxhX8+miF{q1F+0~x3V7SZ-Qja!PRFmSD8Ea`~MsUtj+LBW+2HAY%_rFkKd z7dpk)-#5Zn@7u~Z&3BNmjEHg&z^+11BXg`Iu&r@=sj`!2#>sUthGaT>rIT0e*gNyi zXSGhsu2VayYgS6V8L<%w?2lWvynNU)v%|Z!16vJg|4x{_{*Jo<AHw~c(ofKsI3Na~b?oMR+I_*wb8+MM6Y)-Uw570F^ z1AIXkQS17@v`!#&6!sVY>iuPqI!7(fFsUrOzlu6Tp?;$5wX}`W*@&)fpErN|>eNo} zb-4;t+ia7sT-&`J0Q6EYH8wn$RWV1sKn>(Q-Eqh|7!HXBGsMpVKbXXNlQ0I1lm zHt7(8QCI{%>m*c+PH+cBRmx)bs+2Yx7=Vmu5B)tY{XKWO2z`(dm2wq~97Q>QmxIQmqQ0 z_7fKtjPLwbhQIp|mcUT{SEvs;8+^Lt%;W4UGq;;+!B6hvs&d%jdb`hH>Jj|rhaG$I zb&Qj@+rY|_ePX-AxeFi)HkwX8^ZRewW==K?P&d$=A%!&;MC6+HQ~*0)MThFpr(|9 zv!(4LwX}U*O+hw5qgEkSPE2iL-~t^F%g(~aW$ZzG?)oqHAHzWWpPxC?0es;~OA9_* zhPZ&Y%V0goL|4H&0MXGO#9ahR5CuB&EFFJ>FpRJ`1)suQ_d;K32Ap+8>#LAtU;{Mr z1VnafVsw+S4M^k$eTct5T#CQjjdnt9=|LE|1D?*lJag)$e3*B&;OsMW?h|Y>n_=pe zopVIkg}xDDggu$c|e_OrD8gv&XN_n?ewQ6Z7##i=XmxSCzrxAx6Ee4|P8Qv6^i^C65na0qHYq`kSEXYbAD_(1>j1%LQd z!uFS%-hk<+PGHj~a0i5iD{Y$%jvhg<4FGhN@)R2W*R*5Rd}CM5cqQ_RV0JItOV!Kg z0l-GG+iGyHNh(wRj(aUgqohC^Wso>(p3O6RLLa)SL<5o<{Jw5JtaalPgSO9;#gSp2VK`@E=d+Q}Q013v6 zwN&T)i5IAlCi|Uwzz1tMN3vf{ll?$czOX0yf3!|y^6?!0dwj!o?N-9Bvhpv@XPVP2 z|G3~kkG#g;j9k|D+OE=FBgvd=i7VJ`BBNjzH>E#r{Uu3YQ>L(6$dtd%*HdtsVnjB< zM3GJK&c%zB*4pUyWovWf6}G+zAA_C7v)U?8RFw!I7>>8G9J?HZlCkoYLa8KJsOof1 zu!M~a-1Fe>Y;q?~nEUf>5W9vp5u_p=SBcP$z-DGE+x zf=ltl6ol}r@1EiB^Op_3xwEjMDPfgM#TCr&bY8~-VnI4jZ7J8LoiTCkEt zNVwC>P=!frakXs%-B_jQ*7k*qwy#g^*df)J)xPPJ22t@nv)+p*eie6U(B#R3l2THV zpjYbX&UWVtKrj+-fLgFY$Q-a@He0a1X`IIZwUw241NAbpY|mxmDNejL*vhLZ*9*Zq zdAZ}bl!Q|xbJcP3c)OlFB5`+wKg{6o`@;;$asxHMi!O0ojg*Xl6R|0rBYMvzE8_&@ zqHMf%C|)7pQ{Vt}m_+lfPtmxyFCIT#f7qmO08+!X90oov^q5?uq-2>c3JF0Z5U8eSTwHQcpfedS zykB-#J>}Rf+oW6bpFj?+#(x~%IyrXQgV9@~wy&ODyyNuCuSY}G_nV*2!gukXZ|>sC zL(Nw-f>i^1ti5>geCfKY0NN^WXE+iR10SL_C9Z3F^b$!QPpN8-kHzGpk8c>GmO0dX z65&X=zo=P)UwGRk#jp070!n<({X#6sW_SnT*n=|ErGZ1q%f7i%%X9+X#s;#>p$v8N zlj?)ne?x~W*ah@Ex;_MUThvj+=p)*!Q%J0r-3Dc-^GnC~*pC|eJ(F<-8&1C`t$|ck z%>En6wkK>yb~}`z;irMb>Ls_*U;In6Y){!Bt_;dRtv8^CRjw9)YY^VYhSBfp`K{x( z9Md9F{H!PMTx)r5&)()+09UDFJQCT%5i5noNWqZ zU^8&@8f*dp_GX(x888Cr*w+&JYkPzH!TxMh5KDhU26kTYs{R}hJ_o^4+f(K>MHP*3 z11GX)R_KceeP~&PD{Dwd1g+l*(U(Vr=tEG3$-_Z-6GB~ewTqP*Q+-SZ68NxEC+Igi zP;+tce2>0^^A|7b^=r4GpRvc`#j9h_568dltN8Nhlu<_w(}xb}y#&U!#ILL}^y=2_ z-a~MO|Bi(RZcyEzskSHV5_UWA1|gu?KTv@XzGM@RDmHB_L#R1^j4#6GP^E$@*b-mBPkgU^|KMW6)ra3wtEm|P%q`C3 zVvB|UH?nA#1MHUdR3%EW#xO-($2Z5h;9{bfZF|Zl$jD3x1tWNsfD%**RoY_Bvm@{O z_q3!kU&^88O&?qtmD!qn1mt$fNrE8B&?rD)ER+*T!z4B#=jxnKbN#oOb1zORkFnJV?D%?~u zZ)*R{y+dKWs>qVp3%@xudeJARwI{Cv1P0iivOoralEgYhbg8M9klmB(YpVB13Sb~b57-$xBKN>n{j;-H1Az{ zxJS>N_YdNE?@q(SXTDcR`_DWZPEkWhXrgm5DH?!Y(7Hpa3ZSf?<8_i z5@98J(5qZXNO+D3cE{-(sNPc)XBdt-N^AT zK`$TlxzaJY)z-9iOLNYidt=_c>~PPX2UqMuv46rwYv)w?J;T=IMoa58GVQJN0c`wI zZu)vVd{XiyK%l?vDcerWE;j}>?~@(<<2vKr+zFr-bLrxZ5Y5>BbADL)Evz-`;p)O4 zK0xNf#ubOkjLQzAxXrfZ_{LkmlB(s4UvKm>-FtB1@Pm6)$&=^(z26_7X5HM`bI+V?-GE%l+{Tv;? z{+HED&3pcI^~%w9%Id8===9_hL-(!o9C7x@YxkcM7i?|&&Gxz5uy=gkobk3l_*>%_ ziO*kzrQBX-`?&NTuvyiElSm8jgre}BwQ#ZGiq)I@$63Xew4bA&FVFNcR(JO0sF*42 zat^UbWBYmY$FIi+d#v9#B<<9PecR@4Y2Ptn{x)3dcT{D@un!hYMxmi-hk!RODh29ObBE@%j%bc=!+q3uBYY zr=Xmtrn_>ReU{sg*OhG?T7pywpjgptSIJ; zSbMtj#9`do^~;M)UB#q#u|4;ew1A>e3MN`ZE!6LnUTF9)SGa$8u~dI~Ec}%f?rjVr zl1u&V42pDgLS2rI?7mms^#bql?AX~MUTc59-)83*)yFJYHhb{lgD=yT&DzYdq;Yg!p+6^ zG$(9q>^|g<7qt_+#9>^1e0l64mTw0b+?4F*p5OzstUSwaPO}iY%oFS~5w6wKoj7NU zcA(YjEdzOn+lN-!2Wk7bEAExSOs7E&)4>IUeS`U6j-Mq~^}rUJC7;-5<4L@nD`R_< zA6?4(4Au9=1;t6rPzCV{nYUcr{S;T0JtnxlN^YG_)`GGgx1gT2&o1IdbJf5s6ph{> z1z(PX{hWdIdzFx8WP8@&vB7OJ1eLqc_HtPp6?;JU?CGlVu zS61vi@LQUnnMR+SBAv-kP!Iwj3}UPTi_f6yreZ8eqU0qPT0hOAU)Y;@8W&+-RM}xv zs0YhGhRDvPf@54oA@71T=p@V(THPWCp7>XfM1KCrBHx!AhGhF(`ZO`?*{TuEmQ7rM z{2y-^+hAGViQ4E)%VEoR;<;7C&zi=pN#ycYic%dKhSF%r!BxnuEJ48p$9#fn+p1s83y3zuZ`&(A4*+u>G*{Oo!F5BL1? zve489N*sf?pTPNlUZp^2y;&@)aMaJ+#AZHg3mj|B4N#*LJ{C>fB}q^U2jT+wCoF(B z%N1b)AdmPI@Prbo7nhwAW%AD4{R2Hu&&GzJ3IYdVS3c8UXy2Z#HkD61#^r=XX=GWU&5 zK$oo8OHJRO-|pJ>l)~~7s1_MSvy{soSK4BT#N9rQJ%KuK`%wSEoo8A0oj$$qBe^U- zjuXe*s^VWq4(ZV%&qglC#l^{YWso>F5-l7oy>>A$p6=Myj=^G_gi8)dQRTpPEvo{H zx{c(vJw243E><9Y#PUzM>Un3l>T#%ke7yJzASqYM!bA9aP(r;klpX(zIt1F&?Nh!s z4mn+h$yEMU;2rM7_O|akCcx6ovM@^sTZF}dFfTT58u~#^1b*t}*2?vlvY7L`@CoR6IO77hr(lE*(V#cO2~^7ow+Asm3m-M;82AfS z1AhnH-XxdVF!Yu#(%#sJTA?qT-tZ7|*@V^KSSr5(CLD%3qY$do6zh{4{BdldnXteF zqtRvQ4@rVV0MgL(CAL5rxi8@(`ciEH+gFUe;|M(x#kzp@_ylx3EOi0xB^aSi8gvXC zM_;OK)u4U!-jOl^&}4?cf=s*gqmG{~EcynoP?G|HTN|K9LRB4F^`K1^WN7I*0B&f2 zj+g4Wz-^Xkm#zWeZj5#rIz}3z)2>0glU&WyA`yT$vzb#_nK>WznWOi+GIPF{vUoRB z4Qzo(WyZHbHB@NT$ekK&b`3oe-FE>U@(Jj8c%9qb8>iWrCoQ2RuK zjzGC7HI+V*De0oUu@QcUd`@qaC%Gxr?B3`uzd<<|NYX1wg05nHE{n9l7J9=M<6w0e z2V;5^*48FUKc3KgMpdGu1}Z({2t5+DbpajZ5?X-xZZ2Sv0haYm6QytF>wTj^mqNKI z6&3z<5&-q(CCqFlNPznDBs&g6;dzCUp9!YG%S{wd{!#AaLy!ycv3QcR~sl@T?{88pKm#b}9Xr(subVo&u)xtdK#&hgMNZ-87>-3fC6JIpsUF0=t? zCR|6{f=JKl>yuzY%5s$)|j1RiR7! z#zjY$@7I3eKr~#O#;4@P;6&Pv@5Gke3(^8AKy@{4P;0A`>M9_-SZaX!P$s-sY8iSG z4^YknR!mrkZ9ab@U(rQ1vBvlhpM30yRmLl|Bxk4as%W2OJJQZvW(kvNZIXs;P*!%uv_|0=Nr>zy>K!p48SQR}#l`!|Um%Q|}LeU{U?@!eA$zGZfQDT~}Nb&zFbwiZsJ4(eK9 z`Y^hG2P*qFwIF7(mD5Opj?`CVPwP*E3Dmqf0qUI&j+M6+AR21D z7>J^Fw+!qah@-4MC~PJz%?zaZz0}i(kgc6QhQMOf)Xqc1$WP?GK3S6shIBRC`FPM3 z7MP()`lO+$sD^n19710?VfM7cd_$8WHo$D1Q)#$^?QjzfcLEyf;)LZ(j1tOG4R-?i z%!TYzijEKhAC z(~F(`Tx|$DKd`%tSiT6eA*Q;l54-WUZ20a&WiOV+QFcZtAFtF917|EH!xptmibuV- zO_2`mvZ!7IKHlmz60&v9V&NV)8jkdqetS#&ee9jdS6ZFWI*7%@=I)>1PCx-vM^t)834*xr*2CS#Xl*@@H8 zEiq1O`w|rku7b)zM<)u)W*Bt_bi~Rl{rW~{4@CqeX0NjS(uHhacl?1^Kx~Ks<3jlw`c&dzhgETo}t)Q^o|bGh`4G9qXitI|>_^vg2?bWxSbAxgH=shOrW586JIptwAV?W7-MWU!aQ}AUrI_;H} z_me(T*e*u#dnq$ztLR3~u$fX#nGwC%jQB=$!*Oh;v{zQ%AFSMwmUXaBpD7wGC6t-c z3jm+jXc1stI&z}KN7*4;Nm*nV(?VBQS~*YGLThudj9EJmaQhkN4hnQ@y_ISnm(((D zu5rghoGaXdE8GIacX5GPrCMxGhOu3tx}uX@2eQX@18zU-zYa=yl=LTsw@F5Ll!iu% z>nXhLy%CNDk}(hIrtu(E)0X0sVYF&^XqY!Zwyv$x?7@ZXFyGL$cpG4j z&Vw}Ees;JQX}C9{X1a|~vr`ljbgi7MQS74O-w022oxG+c^dmYClIy6d)v*QD*KHw2 zJBu98E7w8tGd|Zz;d7ZfpEK$>Q~Z?(;JM;hvW-uHAZTZ}Rx!ZU$&6);rzf+*UMWGB zti(4+@pdzu(dcCt_V=%P3xdOe%M=3YRWa47dXsG^cIs;Nh}E)Cw)hAi+_7O}GM|zc zy!63m!+OZas-E8cWs5q*HP|09wXveg zL*CGeKs9*D%ZEAa`ZzcV2Rk$=OuPSvU4P@vUDi*HTgbrQlJ}r}r>{2LryUX(#Pptc z<^(=$Yw$jv^Zj^IlBo4cc*WN4XNuf;Lf>(;Q-NwHD+j<|VO*z+0$oz)#cCR@R8M7% zIoinLVX-S4nPAX2Yuaf6;!A0mHGQ+65i_&b)mC)hNA)?XNmO1$pQG&o$QVXT9c34p zsnepJr&JlNBLKIH(b7$U4tAmA&#&w`47c#7hC2Zba)H~M7;v-GWH$xc>;ktpGT=7Q zy$-hMyj8=k%4_y?3$U&pa>A^Pj`SA5)PbEaC(CWbXI$u$RC{U*DN7h9AZ&pd3iKGz zaI2F(wVs=53*N|=FipZ18qLf4?>U-eryr!a%bQgj%oxSCGh2bK?!pqJ?C{b-ITsYR z;0QT?zZ5Qwg7RPuER2TkzE?QAFdn))uyA-`97T(USzFTb?7|W)=w4XfSw4ZK8tl&Y zm;7-Ql~{*b1O3r3>pl9jfjiVx9{69HQqWI_S3a_%U~ znj&8;@b_7X3=f3Tg)qu#;jbv=7!jS!C>^wKu38xQx>qMo$*`jdAiDvK<)Qna-ps z&9j9q^a3v?iHwkJ@(obj4%XJvNUK z2T%vok{T@42LymKX0xK(*#&?Oeks^q-CF7}*t?VbBewa)aCa!6ISav#fcXXvN-AA_ai zz+mZGT%*qh9olS!&eWh2Pzx8lwUjc`dfDNjandYxx7^bY#+7u5vYc z)|ThJ$deANzWYl5`H5R338v6kDTXCe-uF$;GM`yplcI^nRmrdnhnKijnNM@bd<6$B zpTMoN)0(Tf3uH(Q108Y^-%{zHaVwECM|U|9z{zy&8T z?(J-J?H6qufmo`pSB8GCL2m%7i@B|OaLAHC2@QG+8ykOTDMQ;KDea{g?YER3 z2y-EQ7tu$8lwv(_OX-0E>PQ%{2(Yf9^Ilk7!SR)p!`)%9H!JdkaVYhb7Lk6!QRZucdh%g7Zpb)V1%6TzFD&CwxFa#2BSly%N&utWM-?DFLmH|XtT*!P-TL^b@*EmY6AG8LmW z=#7xApIdZjAy>e`-a1LqTozcSeTWkd?8!(S@|S7_a&;q`a!6NRZH;>aRwkslAcIe6gyZT(vOu( z;S7%-03XQ8Ye&oQQLOwq0J+D?(-ip1tbDbUi<5;B*aF8``*%uZr7S4nptGZXqMn!N zR0}rxbMh%zpsiD^p0n7qMSE_@p38uyVPnsAK=WW=&*jBWf3UoQ?g9^=@uqbqC1$vR#lgnYa zk0{U$b=*$A*~g?@+)OB?%mM*+lzs9^z3l=ii+j&z%sB?TGgzB1Op0M%+$fg@f0gh` z2~*m-3V_rlwXi@n7pnD>w7>$$d(A4b2ltx&{ylpR2H?`zb7z(>sI&Mr89|yrF&N|` zi-uaU-gABqJk!b%dVQnS$Cu@*5IA~qr!jijTF{46V(abGJXH4g^^HWnh5RF{o0v+S zL!pSXgqp&t9o^A!nY3SAf2(%=qK(4~m+CUAPJ;OKIGVb($$l_HV;ff_EXT7OU0jiLf5fk&r^SsQ+-Yo|v6}{` zUK@UT;1Um1pqY-L$h&W+3KoYoW}`~R?h9*ZKJBNr7ZsJZl# zoMZl0cNLlGmhNw*B`GbK@!#zdY>e4+s>@x2{w}fFG8B)EN_uTt=HLRlSKKG|i1IG? z2-*{f{r;27J%jl?Gx#u~4_@}%ggvhTAc)!gbCkYIkX|`?^cFDs zpBOkK&Ds;dp4)<&w<=4?TjlltAa9koi@a5JdM!2Y9!X35V| zJX_97Sx#Kd>}K$VVExuX_OSzC{(A!TvHM@5o}@!!Gt`M;XrYa3UH&Duz#C-+eI~th zqQ}!Na^{9+$=uLNv*@dqOzni?Xn(Db%e%0@sxgp`_SgDojth?;4}}g#+#~UR7v4k# zKY@EBF6zp*YsAfDq0f|P&);=fNTa)`A!3r@XS1M-@ zZgyoqrqFZ2*@En?(BGE?gG~S|Kt49YvxpB4WzPb8UN8O5#WMd*o=N3A_EfVa;<^UU z%XLy?>85i$m$D~DkV2>t#fqluGA?V8q9w*F^%iNo-CJqV8~|YyYf)Z67Jr@EXcZ6ryf{HL~Nu(xxu!~$%`dH1m zDSZSW`S>H)LgQoT8{Adtirp#R&VPk+Zn2rU9%%tg>H-r)5!plPd$E~Y1d~xB<#K)! zD{m#XCNYcy-DdX9)@Y6NGqu-?ZMY=T99yU-6)XQr+Q%aJTN@+zaclIL!FLr~8{=Ye zYt)97JDznaiaoe{tWOTOJbM)bFjZx{?k#24{Zrp{H9yHB3XduXAP`2)YX!QyzN=}e z`$@3&OlIw2o)B!enF0T=V}7EfEZ#@B zi7lw3LhTjgXLlZOjH&-t%Hp1rmRNwbpgr>^v4uV}3^M^aohbf3fu>YYFvxSmq|J>O zWYgtO&Cj(2$xX3bGR}`wZGOa{XerCd|BId&)iV~t0#3B-8el-LUJt9GqEAuJ+EOVfh3I`Hk$jDqL zA3POS=7c5J`YsPEN4WBG5-2rL{!T)e4*8_1%>N1X#R75%Z8dC4Xxof=7|}l z=%Y7-a~*};a#MViH(ExBQI6{iz#U+-`7gN@(OGsna>uB1D}WGT zGJyr2cmjk$1+q`6>55*H=DQk5a#KnxZ>|O4C-SLa0TJk%^GI3c&F}Q}qpkixq`yf| z1UXEaYb@_UVuGD)l+0sAHcGIQjgm=I!=9CLL!XB-Ln%_Nf zs-dh|U$=4%x3n5+!6_uTtf8P?E|JYz4YdaT=CX!JwFWvT)a*|XCTD*_%G~&57AQ7j z)NCtYq1jfDGH;wlyn@|`@73D!IlMp>oX5lDAf*UX)ER|8hXvA~E;FgrwCgXuj;f!m zqxdK4sQSq|Y8mS=*VF2#4X<6zD^sqf6J~Xo+_gGt!xAvLtfPTl9R;;ITET17;J;|c zJ*|#bumn8+b353`duSuiBvNhUKPj2gkyj;C_SQ;3+Sq?eLQNEtn7&K31|^fj%(F2{ zOkkQLCI_tiRq$>8CQq-sFq!n0mE!qtx-}INnt##iOkbF{^hif2b;B- zB;_#L&uKN(fW@eZlXlrt=bBO)>zmnH4K=!&T-IRGvviS(ruSM6HDL(~b6JD0p$$zK zPm^n?8TG`ehCp*}N~uf62>vHp4Ygn~@^M*1p-YC-0^@0N4Yj)d=CTdyzQ<;pdZuSQ zZ7KQ^DYNdA+1S`zR8Q-ar*)Hg+FbZ_1|)jQ`;*O6Sxdd0i`M6B(fRt|d18qDj}=c`wx1DX&>YvoZ6~G)=PJPUh)rOp|KMB0URQZPN)AH?9tk zQG}D!9GX8jrHnypPGc+K8+j#s`9>IOpq9vqJR#d+%N= zRF^TcweF^@^_3)zq{ukfT3^jF#?2KIXr!4O&Bn@K%lck1fy*GZ%HO>%QIKX5=t=cyh<7StGW)ASuO+QS*+sbJz1}; zR-k+7T2ak+ptzfB-1Sid9k&*>SNs#W>%&zYx2CZvW{3NvhI>2D>AYT}yNnUHFhs+> zoh+8}oaioX*C!P<+?(N+-rpMC0mMl64F$IVoBQWDVJ@L!7FP)+1T15gX9|nUoh2sl zo@AkngN^)5*9GwT*RQ!_lprCyqKB2BYSY$tnl$~8TZo1JxH znszeZPMYd7MLU^$*+tHUXt*~sdCD$!scM&l+{hONOTv^lO&d-pfTl( z*n&3TM#uzT!8$1#%wP=N8%lf0VxKinl_lgesBr9Jot|X@!{Cx#p zl=VpBO6~ypOx71L_}^vAueg#~hMD!BmMhW3tHhODBZfaqDZj?b>x%981N<>;L0`+| zoFM%oNzz@h6X`{FdDL8~7fFW=xeElE69uqz6@aAjDc}ReAllvv<0oDa(kkxE8QV?UofVVD&c~miUyY=5q~A-S-y3@= zmkt=SGUa2J_Imt(OFzx|&pZL30JL(@!rJA=E?~y;h9o; zuVlxj{`YvI`0mJ#9o$6Qm#6?vvbDuYarnDGGZp_60i(o> zwD@?OEEYf|(LFI3-HSuVSBlpFNq+$FmG~6!gGnxW!EQk9(*CQ?pjHpFGAFI!9w^Fs z(E~*pN7rhSe>d6Z{x`9#|AgJ)>4Q9!3)l55=LKm({YZpDarM;0Y&@4ETej^gZub(; zw+$oJ;~qSS6aTy)vkkSH`F1|OkBgoi}qW`%aUh3Mir{3%ThI*7aDedXg zwA;5QpwDiLGtiFP=yx$6ITE*ZYn<&oN)ml-yXah0>}B8q9jxx2UYcix-C$@rrtD^h zAos5jZoH|0UL)_W{6LqMP97yI5=C-b?jOFrRBWAr#-MSx#MY~@o9z$m7RPznO5xji zIe=7~9e6;rGfj5a=-73vpQ}4&)VyrQ%SNp3`B+F)flG`)-hsfTPtr0Di5m`}KvejE zxbbv8aR6Et$L+|w#aZ&&08)Knz+2@$cKyTD<1S||Q`XU*^Oi5c^|o76Rw9?07*le) zWG#>nE8~ko>4+LgJiZC-cqFb8S3E>J*Dn$W+(+F})B|zAavX2_7T2(y#_@4@tnD(c zXq!$)S@A=0ptz`!;-deVVh@)TdpJ<+p;OFp3dPi;Fp~Rx7y2Uo!-wnWi*4~@ditxJ z8)Ev8=)M?;mWcz<{Wx?~9Es+LbwKt0B+aovy+0)hd;mx|+aJraea#|G6(>@^PdtY| z!-YUYv~wEt=~IvC2>?hW^H(Xv-t9*3US!X*ZKo;#X~k@q^2vCWltn7A=OXNRg_K1i z_*4*}s2_cvCS{Qj{x}Fw+)uW;NZg<7xdelsDP@rW_Uz{eF0#OlL{L_lfLD_2E|+xYc~Sveq<6)AJ{h?@(nYZDW3OZi<(3 zuB^%I$1gQqe-iPLY|eUSH{F-1JJb4<*R*a)qz07$cR6z`_Jp`6)6 zG_6SzS%9iIpVP6o8_~R`qsb zIsm!MeDNgQ&$HEmJO7->v{HCJ3og4nEWsFZJ)Z)^~g$VmoYS}EVh;Jb?n z%)TW{@wEJag5OPtXK`P>#cfoo2Q{NkcbjB<6Q!a4Eay+6n55(pE3ce#0u{=Vl=bwr zQqu-j{_lKB=K+xX%#ztsfvzv-C*;F5&xl0vqcKYzB$H>*iDjvKX3SCt$)qVgzUs2$r zS@~<`>s<^i=$!&zUCdDFB=fLN{k7Wx$vcGg+=O}H}1Ny(2ThkdOFI>(wN?A`95h^PF zcW3m7P(3nH&rR@&nf2(CGpj!PJ=^6>W7!!fJg($&=Go0OK+s5R#a$(9p$x2baUErm z@M5V&e2ljy)5D;<{T1JWJH2So8dii}r8h1mEWEHaCk#bdAq)+*t`9>|yL*HU3Bys= zh%hu%{{NxI?A2B;`Igrr^sYc_35F)6h*xTmo&G~h=+AB%6-?|>NE5qGt!kuv_i~j| zp;aTRapu_ZgC?iF`sK>&L4Cg;dTwXh#-H}_Q%BEQEJ|zFWOJ?BMs;jCf6vzC?dO## zxwy;Rojzh0^rK($toA*6bUebZ;8_lcmE;4vv$H#-pm6)pU%RW=?Ji8r$GNdC$QNGN zx;`I@vQsg*u`5J5yLchP&4`iS!QPSHk>o?#26oe6*L?}%O4OI$gh=MuY?#Z-Psgi= z*q)9r1VU$n*O*JP*eamo#W9VNhgXUZ{nzfkZq6>amqOCOV~7 zw)gtjrz?K_!*`$0ya_9RMC;;a&htZ~x1RD7d!U2>6!5U;roU!g**|5(xdSl=E)JgR zg70CmH9vr5U-DNptG_UBV|fjo)7H=sSfj`3t7}N}my}ocIc;?hsb#VAzca>b_WCK==3 zQ5q^EXSy`TGy^?bCNOx%@{zcbUd}k9Tpoi4uyVU-XNm_lv2x{h5zX&x6B?)Zowc;{ zJKF@u75TlBowvv)R7>#|X=&#zvI)si3QG1IO(NKY0%X1;c3@nO?H>&PQ!pzQ^d3y& zn5SFN>HWOC2P}X>&=z?4wqEd{DfBVT%T1qqYJZo)K2!_s!1eG|{E{ok)#Zk9E4aPf z1uln}NINo>T;ZGY^Z6X1wJzQv{zMc6={?hrs&u=YYF3`3>nuou~RF54VIi5kDBR$W0e(;L)>gYAtYnj(CUe~?; z@E+=Y$)}{xRG%#0y1r?C;8)XchTk2(KMO_|+*wd8)T_`5f6jlf|Ixy3g=-d`S@=Q` zzaq_x%rCOJ$m60FiuNpeuvn#H%ZmL`yioB2#j{E*4Ilwt0TlzD1>(TEfl~vo2DJ(r z5|kG7Bv=UkGI&Jrq2P1DkAtO`^MH)WT8^E$u9O!peuu3EL9( zzVsKRCzifcrhJ*yvR{`SU-nVCugmQ%U%33h@+ZsxUZHb^Srw8hq*ZuQQK(qA;>e0= z6<>vy3vV3WJA6?1hVaYbuOr+eT10e?m>jXQQu#`qDy^;bYh|~}6Dr?`{33F1m5Nn* zR=HaB%c|?DzNj{!+RAG0s`skCr-oOJfi;fTG}mleb9XK8TBB;^d{+On{h#}PzPPq~ z?FqH7)bXm*zs}LRmFjM-`>I}zdXwtC{i5_2-+i(Di`*}pf0_EF_|^FOp7jUR&uGxL z!Po|u8#Zisq~V7~Z5pj=^q_Iw#)BHKYGP^9waMBhx0?nv9o6)9GfT6TUk80X?(5&1 z|Iqw(i>MYSTB4TGEl;$n*vi_vMe9|qpSNk-=GZqize#Lcwe8_{ZQ8wRKcxMO4&fa} zc6iXSX(ztZk7 z?wQ@Qy8qdO^yt##U{Bwk!+TEbIj3j(xAneV_pQ`xeRR#}2GOmf6QZ9)zl|1qx9Gj5 z_uW3N`W)?BtnZ}0bNjC7=hH8?-|~J5{dV+A>tC|}^!}Osvtzgz&zNE{{bSA#XgA>0 zz-j|m4b1y)z<23`dJK9vxZdC;gP#nkF=XeE{XIRNKlRwuW7EH%{$NJs8Qo@Vohi&5KXb>dg0n`? zIy}41?8UQ>$NI!Jiya$#d`|H>U(bo1vuAGcxg+OZofkN7_`IZfw)w&Hqvx-hzi0mY z1??BiUx*j>U3hX~&LYdA`HK!O_E=nR@ubC1m(*RdVJR#fw)EMuZp%`ay;?7wo?ssgKutm?b!`s#M8lUL`g`F_ofwKdnq#g~t-9ls*} z@w&)$BiB7y-*kP-hTsi*5^CE2C!}l-S|M8d3zpOpL9VmLB(t*YYx*r&IV9|lK2NDk)K5+fO>w~6) z0SBud{Q6+;gX0b^Ik@fMk%Ko5zByz*6nLoGp_YgG92$RU>7i|h4j;OC=0ZQ z!!-`KINbN}_`^#MZ##VK@Xf(1|T44xG4h;>Afg z>3_1~$p$C8p6qvW;>qPFx1Kz7GX3PMQ{+^!Q>z}Yirubs_0htCx`7k;kcxvuAi zpNl=W@!T)xuAO`R>({^T`t|Iu_kaEKyvO;l^L5U*J3sLJ)bp#(r<^}^{_gqTFXX=v zexbvKm0g7cfWP`ZP0Jiep~&U^|#Z%-Tf{1a=y#oU!Hq8;qt!Amo8^q zes{(FO7N8$SH8N^>B^8R`e*5_)4QhkOCOOwDSdAGiu6tC zhtp4|UrN7`o|*nEJtzIo>u}wC-RpYc>p|B`Uyr!n-8gdN#*H^O%{NEf9Cvfs&9yf--~8p~m7BM3KD_zz=DS<&w|s6D zy%ln+?5)bTYTf$sR?}N;Zgsvj^w#KGlW$$Sb?4UOTjK44w@chEb-T{(hPR_`55FCI zd&BLYZ(qFqECXc}&Ir$_o>4cWS;n^+F&UFHR%C3-NXa;raW~`lJNfVU-6?*j>YWyM zI^XGYXV{$ycVh1>zY~9F%bgu}PTa}3^XSgUyFPcz-K~H3>$`354!Aqz?&`Z6@BVW4 z+TGXpO!orsRlE1~z25gG+>5)Ha_{GRhwt6I_ck+MW@u)u%vPEGGbd-R%G{OtYv!Z- z=zhR`%l*pt>)da5f8hP;_t)P4>HdZLPwz_)3O|T=(Ck6)2NNE|JxFyNVzz5;5oRi_y8&iD z12-3+u4ZMP9)VWC9H0GoU~D3wop8&=>y#)A4DraKoTDnGG$_Vkm*D zLMdDf7II&M519bN$pqL&CO{OK0Nuz0s7fZlDl!44kqOY8On@O|0z{)6n1NEE4Dp7> zBpOzbiZFva1SsnzAhw^xsXT(LLxsL#_+o#5m$h{BnGPT1QJOL zNEGrQk(Tq5;Cntl`~Hr+g018bv?3>=5+4C`d4DKwDgw260yW76@FZuUJr0D$Tw^GW z1Hp~!2=%x%K=5d&Njk%KWIW6z5zv)Ph3=#_MB!8LIT;TAu%wQEQBuXy}8gG?}51_2)g67;70nxEG`p*1rEw_e?S@T3>4!2fR1<%)I;xJ zC*A|T{7{&R-oYHw1NxIK(1qU({YfNvqL;9QJcG_$N9ZjyfiBz8f+m)VUBPFT96c&Ko&tGG7GwpHL#4Fg6{k(D1kn}YBC&F zk(LmG%RmS}2NK9ESY+A&{Y>?tC(48M{7i_#`=m$w1n5l`Ll=G_%q8z&7Urbgq&j@d z9fw429?avm!+b6VCeuE}$uJt1h05GX7>o0u8}1Af0P=nWunh*tn*(6$_V;rbfUO2D z0DDP37>fO22^kKl{3ZzGheBVz4pb(KU=+UxtYi^1;P*pwel~RG+rUsV9iqtrSWhri zB(tCgX$8GVDfo`kPUgcH90$k9ASlIUL2q&#%CPe0(3`=Qht?zt7VsOP1HTHo3vn=p zY=F_^OX-%-7@G1Dl;xvgta%YsGH-%ZVG7jYcS8!F4-y0dl}%qkF*+al-H^&BLO5@N z=0bV+hQA3r`7yBEG!s%xhapAq0WaYtSa}{c^3kxw6b5_w!qABfgq~zEtmV4EDsmMn z3PDhictJ-J4{JypSVPuBc|IG~lC`jgmT@++) z5!RCC5G~AvwImwCNk8csX%2mbGY}>`f;D8eWTSXYW>_PXgUO`5lwm3dd-*?MCAkcx zNki~7<%2UqKKMoW4VLitVYwTDpG?2OY7z>qxZChG9S<@Gy72B$h;UGmJkE)K6u{O8z_tnCLot949 zw-6SQ+mK3lSY%3oVnR0{LHHIav;U`N6Q9#K2U3Fw7Rhp)NTf-DS8t z!zx~caFPw>c`KyS`6BrI&8xEhuA?O+3Uy#DT?b?<^dnoLKiLblxb5&6UlD4OdQgVE zhYrG0=p;OXXrVn+bo+;mW9{{En>8>=Q0)XX~O^~+<_)X^bxC)e_AHE(W2z6m0 zw;2kcmCysNga{M|CDBS~iLXLGd>cN;N1!C>4-Lrz=zy&d%N>WMd}mmSCO{k0HmHyL zz(CvwI&mA}Gn@_8xE?Tu@-d+u1PTk`NAvfvm469=LOGaACO~)o76g(IC`(2_5Z@T0 z_?8gJKZP;e1?Xq41qnQYzPvxI5G>GExDL_6Md&5OKqs;QV)*%xNOnR4vKY3K6HwP& z3%!RKTU1d=)Mxo}nfkk|0Ju$uY@ z0GK18i@7RvRru%_oDHprC$uA;(1Uowm&5~x5l@&zJRyR3LJQ@yf_OqN5(SOA5Qrt)p)}j8vY{HzhAuc8+T(1fg|ne0&W0x3a#(=(Ks@&Z zVo5CsAjcq@|N3t}UlOdu7Z&ri!Ad+~F_{Fhw7sMi#FFXYi)^rt+eEVjP9@EKbH&rX&-XyU@{jElj+!gs&0NVOyGCG1bzuv`AnF=KZFU~wZHd`DKM3E1W$4i z>W~4@n^c6R+$NZc7C~QO6Z9baU<%5Uej*d$Gcpl|lZg;YCc+P7B79FKLUl3`CXk8H zolJxwWFq8ZLE4Rpv>Sbd)##)2fqv6=@BpJo5PZgDiOSHGEP*a$E_5OB(3#AGxnvD= zp)v`TN4U|@fuuuUZa08X6Wq8zwfPl6=Mt0WszNC~3QY7vW=IdHOoZ1;xm3>j=oishq^*TMw8= zTEGVM29{7+7rlWF^c&BFHSGI5tYLM;z+A^~5+nV>WV(gW#qpcU$4o|*zrRtwdoh_g z2)h5{H=9G?X7_yp+}L>chgtvaHsXVNM3OxnfxE?qZ{AIigxAIjq$aNB(*+1I0fC{MTh zJY+O1L(imb=$UjDJp%zfgIRPRVEe&tm_qjk^~2~>KSuiKzM_8UeqsF3eo;S;?NB~! zucB?DAG(JrAGTiRN@e)nQgvKGs?9Hzp750=KfaIj9LGtk)iWAf2WO$ZdM=}L*6}<> z=LQ{DdiJ7xgN-qj#i{%~3l=fCI|>%CGXl_ZL zbS~058BTg0ED2UxKb5UD`Y7C7Mo+38U3J3*An4A{fFGp&>>Stz)=(IAE<1j!bDN!?>A5-p*3@Xjek-3v^soCKk9oL zZc0Zy<1g~J%0pDSUj2@SCG;#o`;rb72m@@Mufo&C?h|MT}h z^KU7K)Rxjd^*il5dd|faU?X}1(?7*W`AN`-ER>Fa@^|(8`%mAF{82eC|I@dTZ`yrt zka;va2P*wf*8-it>KTUaOFS=Kr5`dJIIfG7$JdblAYsxWbw1H`!R9_)s{_G@o)esO zJBwij*#gtZVu&VNV5Z&PNB1LnOlnfS2&oNaa0SU7eGqe$K8hr-pdH>L%~9H3j%*Rr z+1ecsbD92!&KLDt*-zEI(XdC-y>W)Np47Tk9yDIt>!vvFVXA(J@*MSBTf55M!=Dr@ zGkzZ;_2L7iNw}mmjhv9Kk-kzfk|(`pzqL|$J>{W{ze615d11ydjVn@Zn_6i{B6O)cVquY-*yw+%qF={D7=Xk(+_=( zXIK~p-p#~bqPIE{-i>$TXis5;0As;KFdYGo<9Ut<*p1@|M|hLT-DINF34)2Z(dMw4 zc-{@mjpi`zH?v>@H#hdO;g3oEAHhU;f(1%7p`Ao{!bZ3cSgz^n^+7R$424 zo4C=jqJJnwJZmJI6$A)jW25}cI$9nCf=xU&P9TgiFX#n?&I>xWnAXGz${!V05R4^u zXbd=%;nDsYfb~+W{xK0ct9UwhIG&S#RG~Qf*H96sgQ!!0bsqi8I?YH0VIyZxsrD0* zXEbIDiatBG$v9L3FVLoQY++%+EUz%EEGvqTQ(!S$0PJUFB?@YtJX^gyp|h5fjX54; zd8BzZux{@1z+$rrv$mPpv)RPkcPC+gc{br(|8@K$_rrhqs}C#dO13uGDx@WB782vM zRVrafIl-Php0$ZKoc0MPP-1CwO>&R1H7a1D|gh2q13zI;g+E&0&04BhCNP=WI1SjDlJb`Qwktgy-rBE1(K;NM5 zs4tp;CZYvsG1`DqP!5uCF--*JfJI5*Cd3*}0aL^qrsxQ$#Ym&Tpt ze&f;!5DSSQ4M{7~iwq%S$Sks+Y$H~(pIjt2$OH18$Gmp{1k?$b6tF(vZ9r~d^B@Rv z5Aq7~4e}2P3Mv&85mY&-rq=3>L0f{h2c-t>3;M;b)m@ZUdmCCEUFz&>^#0gKBuY}A zB+*$Qy_X)L8`4qqt3+=rp!XZ30id4%&~5-^1wh*XP?A(gGD*Dnr}z@Rrky4B7VD!> z+YQ@w+Zo$#+g96;wglT+TP%PiN;V2%a|e*_=81V90rJuS@~pDmCT{~k-b#SHMF0}@ z{VfHM*A3wDgU1Pvzj-|2(bLD{9*@62?Edikg8}Xjyg%T6|NA{3Cf@J#aKrsp_k-{I z17yAh$b6OgB=d1*eCDFe1)0CcD@J^TovvCSe#a6rv?}k`B z2IjzAJPzjJhxieGjGy4A_!-Q{&+!ZV5@+F8_%+VPIj{g0;y3s$eus1M@Ay6b0~Wzz z{3rekf50Dc9=5>}Sjy$+3UFSWH|N9o;_-L_o{raZ<+$=(1+F6J&gJ7gI8WFCJGmK< z!p-DnakC*6tlUCw5w{q2aZ9+Ru$x=PEr&f^9Q?$sfW6#GZWa8@t%iM&#;xJja`D_c zZauewOW-!bac(oW1x|3A;3S-aTzz*`6HnAOMS3WT3XvutO*$w7p$I65L=;ha4-jbq z0)*Zns08T{q$*PU(FqU&(jkQ2duY<7N{jTD?>*=H{`k&$c4yC>ncY2i@0^{vd-u5` zZq)s)3jdPNZuYlP?OaKb1o!mr7@zHV{NZHj9ly^PW<%z#L7YtZxD+Ow^W}E}`JFp= zxY%xx><+K(Z^$qc2-SSY`R-8lvrhE)+NYDP+ydl$IzrCc-ibT9-otb-{()3~kc@m8 z=GVbR)BJAFh4Paz@1LeU3I%^M{!@IPyPKmv-{BYdI{dV;zk}NOSzb_KwIZ|ShSuZ{ zp3MN~@z>>4rZDSMe%!{p~0(QvOyQ;OGTkUfzeN{KFrH zS3Zp2sk`Oxd8cuF?B4j}-<~CfDI093d8Mq0a>E8akH6o6hg2mV%Ngg^nKH#ozzaRc z6k{CJm*6N)(N1li^aq_fmI`XRNr_uG{om=P=>Nz*obY?qO$HPW|IwU33HdrqT|coi zqWNm(oj;K~LCCj6%SSHflkTUWBN}sc-6T80}(Y>^O6g787$meq%xffQ+ zZxNc6$zDVOl!BLki(g(3&Xo|(q%vGH`kq`7F`1#h6$8nI8;;>p|3)-gJH+&k0l^2-B?e@Ub zS+4I+%&9N0)7XUg*lnFW@+%XFwK(y$aC!?YT+2JE2M{4=eGY%;&WhF^kq@ebY*N%} zkSmwxNz_x6a^%bfY^ni$F2iQm0ZKfDI|l$y(|ls4)@w;h*n4V~7#M}wd!(+pBISAZ zct2WeH<(co}w!7I_umA3u^8_r!s)j>A1+8$yY$k=IF(q4>c`?Vu=9Hh-sPf z82v73B;>Mx#*}4n9-H*nBV=vu`4!oEw#lF0#!s^c$au&UDF@k1vIC_l18CQELi(Kp zcUJ&X%!8`f)@UaK>N#$n)0d*x*>ZZC58fAG$O9XWK(4kS*TFv720rtL-RrNK4@Ao> zfK;YUyLo4<%`JYj{gBP`x#%y~vKymC zoiYQKyqEvPD)L~z;#f_#M!a`!krKY>Qf1;6!LM(aq4nJ zNF$Ar|G=&?*#HKNpq?|zTCvTk4q36!IUwulX-<59m+(}TqF94E>s)5QsYNX$C?kz| zp(PQDaHFqcqDzJ#*qM1zbmEECC zLrd;V-@h06d0Wc&PHU148xIV$DB)CA{>scpX_X{7$-fKL(Jl`tL7aO^vo&-r@_&e_JC;%v%hV#rP`c^&t<3d8!&-5sQu^Wq7_+N>wB%w{u>n^e_k-2)Rflq4QSaXyT*?91$_?gvQ12@a=0d6WsRx$| z0ed2YOA&zOD>CI$GC#BAAx8f?z_LpYbOxaGdQ160CeAw~iz_6{B6!C<2RZ@xrSfWE z2S_-3I-mmdx#u@v4J6P!9dMG_t0HAhP%3v;@2x83kp2LcAvqQyev*s_p~^b4dsUaa zRR8A4PBi#J{LYPF{Z3+l^LI_G{d$SV(G{cP%rt9D5?%xwgjK zu(6e6Hu7Zs3v;)-@+tMvzjKeU>9dSzt)qLHs>;Eqdz%Go*@;)16%#Zi*sH7GdJXtj zJb^YrEUBnE5!H`6T1T{5(seV93$;VJ(WlgX(fIQZ`LX?~LRYKfw6J4-w908a&nfi` zXRt-ko7lP!qXfMcZKyXxmizHKOxbUlnNgzd!#lU3saZc1_w18Ngyp@1gD4eG{Zz0c zv%JdWacyG@B8^=FctKFaEBX%Q&uIU+0j0_KDBJ-xdh+n9-h#M+xy^ z-s<@8E|2)geu1UTpF~-!T38SWT<1p1eh z%e=V|x!=DYytQ~)9~#}?`-9#CWY0Ay^by?9r`%9PR3JI-9+rD6RumB*lhk(~wSbhD zGUpC-4|TOXlj|Fv>>SV4&iF6w;CyEryc_g~L0m)TJ74{)z5Vc@z>UoHOx;}x?}5yP zOx<2rUmx{GpTre+vuJ85x)FCCxdp%TTd7O#X5lu6-r;{0R)0H`kv{4Am#GPn`1Y%5 zDvN0|m3TU`QgJorZsos1nOxX-vD@}lU)poHV0*?hfnYk9_Vd~=8*=+sDZ;6cs(D9yy7<JT zlC#&?WBWzfapuDl_WCdIhJbLWmGoVW^4mJRM&twbIBKW+S?}q?yo95yl*cv7sm55g znwe-F^%&G{)boB^^rsDKW@dSFgYO~zUuP|r4KZ_GIGU3>K460`od3c#Cq_i^T)<- z9=xaDBtkxXf`xvlHqh{_*Sue63SlXk(EKPj70%*6$&K_ec=S=(UY}R4FDqh_$C<1B zVKKRl!x@uJa5c|;7p4!1BkGjDP0N%(6MtEje@p&jm}^h>VQ{r(T3vAYwVjOP6wuNb zq$WY+=2}1&99uKZOzk4_Jcwh3HOtSX6SKjcCF_1mTuU&u3DeFwFOIs?%(wH*PmwBR z={{@Emgi)4zRV2%d`w-H|Gk9aUlY~#eR&oaw+BeIJ+A4KpfzSqC})_2{B83g#;8TN zLnIbEB`trq^BeOQEz67$*1$O>s*6D$N-37`HzDe`7vBN!4*wztaufdw=P!sTh0p&c zWtrdQS;Mqy|ERuwiq26D`H}(FU6#d|?{` zNKjXJ-=D-Q^A6eL3vWav4DAc0iIjD3?vRr>NQ0NhE+lmNA8zjvA}g%Ue^`0taz?qK zso~7E21bfc-&OI-u8)MpoBmG0t-$h3x5w)wiHe4canc>n3)l z!>m=nJY1*Vo)mM|e=)ZGzEFRpW?Gkd)VXgg1Tm^RZCwAsP#IkB)Ob9~UybE1>2&1T zF4C7Bcgie%eaioAz}9&(i)sdAxtV?FI{+_{JeAw@KAh!o89WUQDm*ykAJ{L>UN2Cs zmfO5#UdC}GI$M17byySB4Bxu%PvEZjdHsM#8plfgtn}DE%K5!}@QNm2DA@OEh333^ z_B|zu$q#!q-C7;a{lPm>Ej3Ice3eapH+XS641+O0t_$0U%%#uXv{ZI`xk$|Lpf)#l zYYQoWXFU||Hh=r(-J3@rOj;PJm{-L`e+jvbhO|VIZuAS+esgoN`V+E3NxECgRg2ZA z|Kh^z=>5jLpn!gN$^TK=qiQclgq z+zbqLhrjYC-d_~?OYRR#Er{)!4XzZbGNIoO+BFwL`sHi3D+YMZX5D9K&MO97D5*)H zf`Nm;UE$hA+YGbOT|$u7U7}leyME(=`o$N{TJOQCR=r5lA*f&hN#1kaC-^9&C4ALi zON~u3qYJX?ceQdM=(lpM8ol~Ut}{#h<XV zo{I@4zxy7xZ!-oH1RKC`0-M-eLWxB$zufV<0`P>{G zwW0aOOtXB^> zx?3II=8T?)R~-dL+46EQ(JbC)_gj*$`fC?>SGWD?at;}lJo|Hbu1x9MYYS3BIdHqB zf)`>B8Q25TmyY)^X<4w%s=!3~rEm?gJxe^4`$@jmvmg z@Vm+OV@6EW%3Iv+#5|+Ve?OuU^nBixCKX9N&nG~9%(zp9_9C1UUirMNAsC!v-)Y~; zir=oJ9C!)7^)K_yN7Y(0wq~AL?VSg`ZWm^%zZQ^n-+YELH<611Wtpu#JG>+odtB74 zhfhbJ8)mPG-MAgU>^UK2&;L|Jl#d)TMLO5TG6kppc&WK*&)Bt6 z_sVJcA)}K~DM?e!E+hYuz!S&ZAjzijhL^aucJNN6SWn8Cm=(Eiv!V&xNsJfPWBDeB zeVgrjyg2` zbAQc^OlP3t6x{Rh_?khRkG5P^u~OC#!!ERSK~1$D@vRt-Ls_#!*!$W0A%IjVWDmQB zbQ^o0qFKK%Uh4B2dm8}1$G0h!+VL;0;~z>|%<8tN>73=*{^h;#ZxoqtKI#7ZDy@fq z5Y;gpDZSBM=m`b;$p}WSKY&ULUQhE&t-*L1L9CRZ{*-Y(2BXy1zYhTEprRkNJTK*8 z!$lcy306$Lvaj%u=-AP_TQ4Gph^?4xXm%v=70v1tBV>)YE$pk$WQ%6S4C)QpJ<4QO zEg-#p_Pq`L==3(Uf4Ve@39@63C;Fps_cw`W#U38UYbsWmXK{K@V)aNjqh~vd5eLRw zD%RC!NgX?~2K7`Z+$}uO22Xs8Hxq%ts35RA5Evt*6eUd(fRtuPW3!~O@zSI_kW$3% zlO0n$k%YqWu#cE|4wET5Xn78Y8y7^C>oVJAA|RRE{ff$AUenQf%8}7kJZuiZ62s(X zKPYi8Xx!uPy2V>GKR?xx7-qn|D5x~bwy$XHMK^XUX7-^QTM8Sy6a%BBGusq1>q#6J zA3N&UGd)F$ynv9p3~BQ&bg9j|390-$s6Tf#y@aB@*oq$aqVeow@{s9fbUtv*)u?#B z(xeGe5j5Z^01-r`L3%5J7&E+BGuq2$R8iK^oV~gYh}jXV;Wu(Q5v$=YuE`Rsu_&(L zH+F6?cG0Ss{9<3t)n)@q8AEVJmoOJ?``k6PG?<|it6?>E5vrKfwXe=>wb|@++#Ims zXm;diN8gdLFSv%ZeSxe!RK{L|9rFz}<%>$gx~@l}re5H;ZsE6N@LPtcsSo%qdb~3L zf_My(OOdYs;wAUR3&Fp+B{)7MUX1x$jG-&W%mAxF!0LKnwf|6;efgw?Rdqu`IRpRjog4o{oF0>1%x!os zU`6v2ui-6%*G1f>efdidoE{~ykPD}G0G!Aw9_BaBE4XiX#%p-SZ%A|BkcQ8YhS!iG zu88fvVeluj1{U1ugQ7z!gAK63h7D}=2(_t+KN7`z$re?8c|1*cm`-?DAO0S}R&+fe zt9}+=kI5>5;tIRsiWSt%y=4y%<*16(@N0r+EII-)386~F1sH!;O!2K9E&obAbZwW26$ zJ(wb8-GhEglhN#VyK?R#^k^rx*gM#!!9VM$H05ae)6sO=(RAd|bn=lO`(`z0(@SD= z+hly^s2JN(+)4EznyixLDU;$N*s~oczVE`G%ib^C54oKx{kcM(c0l?w5cONu^747b zXT5;F!a~Wl@570D3ekEvq#m%Rkl0!XR(r~=@swNZX+H1$*Y_7JtVbKV3;kpCo}}xM z6mwzZxup?$ShOBCNzbsm(6pt{w4>0ptxyy)8rW4R3LPzhj=I>626hxS_7+M&-Wi@M zagLSHexN0vMTQ^)=VBZwb6;w{Vt?FOxN@oltX4yr@a7^O<|6LpA{28Gg1K@(A}yk1 z9CLxyqU_busA(h3Z2`^gSDG$Nx$U-`)a97YS)zT+Z6b1b-c?D ztPbZA0=RT6ir;p`yWCykHiy$I!asvoZm0E&>^~|X$Y%W34b?9z0k`*wFN_xM|xS>OZ?HB*h6ITFX2^~&!LrNj_y_$8qCAZR>AennK@ zaI!;MtEMk1W?!De?jFYqom?Gr8sY#wZUNrp0B=6buMTsVZLNaYu)k2z&D*Zo7L;(0c<|v$GHfF%711 zS@CUjiUv9b2JTq|_uK^QFz2s;^H=QiXW!({DuC;)!S##a`k&x>Xd0r)Zu;Vj1Ia&s z)&pEWkcMDLLqwwyI%vcu8gU0)&j_x6nLqmkT)&G(1lyUM$&`$wjjKwRFrdeugPp=0 zUP-$cgH4%6QaY<*tfu>+(?MNT=IvGHy;bJjRd-}va?v$CX*Hs0HAUzeCv=Uftjj?f z9w`6S`p}yFf*ntW{43n{Pr1#fab=nY08vS`0#XQJq{X6S#k8cvl-W~c zfhp-gga#0?Cbfl>-a^W5<;!ek*-c)gSd&1=*PMUL;#@_mt~Gjjr0uC9I6tq>Jg0k2}ikq@5K2rrd3EVb-8*>ob8i z#LYH@bQ?mX&7ikD#%59iI$3HvS!y#`YCU<`Ti)l|Wl8Rbp$<0=9jWEMW|v_$4!0wI z5-*P99Dku|KwvQ-up87y87~P|;9uFt_(we6(HpN7DRz&o!1pcqk#0H>1IBA#8|NzH zEMk}aGP~~uCTt!#jIT48l}T2rL*WhAF*W9`^s~K3btA4v<4&@ohaBVU-o?^(kzUZ4 z6%5|5692_EhO6Tq2>BSn>9plDK1o+xk!S=dD94{-@PhD$*_I;&+r-SfQY^5zMVhu8 zq*w{^!vH*tk<7-(JI+a*DP8XnsT*4ouQByXZ96;GDL8F0k3{2DZtFDvBs&;=4-q2f z!Bf%O2TeOmvQtd9JAKr1$e*&Io3imlY-HESe%9FjL=2N9hT%81*Q)6KVx7j-DFe!~ zLs0Z=JxG}n5yM=HVSr-cRzUb-`B%EFMZSQ~9>7*9q*MlPMkkA=OiXkdUZA)=54K5rCvixg( zIr67eZ1~`)O%4%hIVDm!~uXn94aq+Iy@=JDj zG!U)>gy#WpcL2Ee0Ni5$P6kO#1>oRFq92l|i6j~VaGLq%tRpbyksYV}S!}WAJZAW! z`K2=Yy&rAS;Tr=7Y)aP5;`Q6rD6gSb!_xi*RJx?B=8yu4c{{(r6qxw_^scBEQ;{c7 z!=$@P0-9H9Wnw7vqo`J6Lh6T8+Bn?OZ+B3f_zi>}m(sXrZ2}>Fb4ON%^1kwjO5kNh z_Db7sqiZPBYMc#BBsA_?<$3*P+U(^Tj|6Q=KB{t~f?( z0#e3ytzuZhD$ktolB4UI%rzMS6x}u~t{MVN-2qIoBext4rj3wWiUw2i22(M`mFY%y z*z#^XrdzPQ8@9$&p9tE5?Ud7)nxwC#)uggl8W&eh6<0n1Rw@9dl=8PBO-EDKdBjkf zp%l}&4srQZ5deg~Ev?lTyeN||^;O%fp9L=!v4(C14E(nIv-k*O@2urJsxdR9av{N&u3UV2Vx3vE5nIdeq!wmyJ(tCcKg=mv_HDKHtFmnCU2oWq=1e_2oW_h}w4R9vKD|Y0FmHUhb&i`;@Cw*>N?WfKq?FIOx~Iy18SCx5C-=fIrTcb&LZ`eA_nKH5-gy58 z6nCG4c;@WpF}0v#6@C_%2jkW`vXWcpbsp51%9)+aiNdJGT7@6m{A}!|4h+vb73A<_ z;_$qqQyrF97nxU=jCs^2XY4@y7mQNWNk718@Vvnyt5yVlohV1TTGQTY#?S1y`4gDWYn?H(Lw~O1ii`%s) z%ltNw`fVWndtB;wH@mx~%hNW2Z?%nU=m4QX)m(%mKwrBSi1d0!;n|tCTr3t5> z1Z$i9)9J*t##Kt(9#@hakmg20=J7|bAGJIC0;cxmEA8%8uF%=`_$|K>fZMXd?PSyK zM3>%nM2yy~gQZhmWYB4sKl>Ud+6N{)+1r}Ol~S^n^25!9mg`EvwTZ^NrxnZ4$NdV$ z9xbsb*gxDs#JA6$#gvL>v*#0 zRD}qb5F(hY)d%d=qh!9VNqt+p-t%ioT79}q5b)#GIph=ce8B1_&FV+T>Zic!N5$$V zz^aI(;~I#V!$;^^sqfli<~r;f();|F(~ne^|JW|C^Ar9)UYRN$c@mfBTG2o8H5Jo8 zkzvT&Gm#}4muGs7_!3^*O*z{$6HkEg*`tj|l|kQML9ZJXQWj%$36=eXN(sU#_R-dX z5tOaGU&1ys#x~QuRk0rBbu2o5@$9Vet5+j+5U6rX*LG@_uwVVxxG}G5g5V-jS$x~L z1}ShXz*@tkV9;`_Nb}3~(=THc?f1~-f`Y|B+_5<8F&8{QVlu+atm{Up4aHHA>Yn(< zKtx7ggjq)f_chugxH}_C?bS(A*7%4L8w!QmgqYgTF@@0FLuhVBpC;~ejNfgJBX+qz z?#`oQ&ZElCk07}vHvE3S;c_RgU#wY6_q_%LRgtC6)2eq#yy-+GIR{C(4L$ItGvdcg^reH9o zD86G%*ox|NEqVCV@+LpO@t0`hFFM9wdVu(3unnNiXo2L^qt`7@;nP*zdVJnV|?$xj*$JrKmOu5-+tr`SyrfBlj+U3|u-l1Di zRoPHkVepUwoF`AyFPW*Umi&n_Av zxH7Er06e`DeuiE#Xr(u8WvofEHpMd!&%T#n)coLKElaZ5M=3*VW~{cq z;1AKngx#0`w{N%I(*Y~$3fc7+ChP;-I~szsN`jA586G!BPRBD;r_S%b{9_|A`X1~^ zl~@<49V7kIL9m21aXd|X^Eb&m0U?x#c#?>aWHX^-n|>=;lBAvSg#xM9PD_osSs)!I zIu$~X)a#O}soHaTyjc;h7Xj2%<|vQaTz;eZBYU8Y@hzeJ_Fo3zZx5SrfSpml-8-c0 zLr6fsbDR?}elso36qxeYY|UQkI}YF!V!cf$Kel}qYx^wQ_L-&CGfUgte%ohj6&7r= z#X14F!JKs9kfLT){7skRm1p5U2U-{rESuX_<1@U)SPfwHC)6YtYSJ7v*#MZiKuwRP z%sr)RtBJU2il@!ea=qd9D0jV0_*D8cIqG}Jj9&Y;e9X+AaPB|lT%Rnx-sfaIQlFV` zKBdA!lyfIT$R6Uj(ue5Y(^kQc5f9v0?%iz05+#r!RgiaZmN*UeYZEoElYST_`|vt} zx-xsRIxJNdnEZ{n1G3tIC64anjS8BW?4?I z`^F7hJ_?v{?hdEsY0ct_STm%X~@+EoCoE@H2C z3iv#2@9ma8+u?$c#GWNAki)P)iT1KA<*Krd2d2|Iw_sQSBCMyDi*hg~M%aq-^W^BX z#g8{F)XrA24^0p0%U%`Q$o`k6iDrZgrw15Y5U4F-%y!{s?e>-`mOYxdtQa_D`iemr zern5JDi7y8NXAjc&rv0$@Ap9e^cocUC2+aCtj7pxj)0T8G?5ZWqMXc1*9%J(?)ECK z-YTxvs#mt%J67F0Hr+dR;jdhVYF|!T=}g-8Oh%*+arl-b@S|D?9S#79#Qq-de!xZr zIj-@>6e_%&3RkEu@n3u-SMia6cEqa}IsEtHqm)q#GbxuPyszPLLQyhe7jZKWjrnA5 z;7Z=+86Zy*@(eVk91 z9aVJ;&6m7}Ph^Wh@daK%qPNHGm;XE=jO@liKbwJQjS*6nTP(Iy--@eCQ6}EY#wz>8 zLi<}UmZ$Ux7)TtnlXu{YR#s++5{S+hLBC(Dy6^mbUdFfNZSDKYv1!UiPlg%5a`j93 zvODxkwzu8bs4;g7DyZ)eBN>aI3wT>&TtOwz?>Oo8&3>@WWZ(S3(KR{bWUCvSB;V(`|+=p<4nI{AawmU%TCRw;tG%v#Jd8&vm%k+eNS{zg7Xu_PP>&V z4X7gYapAJA^D2|GHRFFqOKbOA?mdzb#G?-nIyJq!S;h%(c9Nov`1yg?w-e8C&N)hW z<{FU+dfc2j9S=I{2o#z9sdIkYZ+!M^_K!V_ovK?q&)9BDAxF@fRFJ|$(_J*cuD8$1 z!~-}&2APhR-tMa6?y6Ghs%mVm>OVY@%1=)l*UX+6M$n8P*hUbN5V>RrQENaX`_!;y zEn3^G`$4HKeRSHh3~ftL36x$$aH#pgF!=i??MJeol#4r`fPaGo|0*X=_WTIZc4+%i z1x;MWsGUlQT%;w0f?wWDltF8sP$k0U^x<@gaA4xTsNl*=!Ig*kwn~XR;)3Spxe`dj7pgnicB9dbB6vkt#6}${&C73c zxc(PxG;!B_J@jtFTGo{{U2kuU_BMvhZ@h`8Bv94l-!Gg*l=LxkNr0)TaMfq&pDVCW zvVwgm91{vxiozuV&y1tz2l@<8n6F!>`M)KgnXJJB_TVU){57fkHJN-i>3n|RNHlOn zhkc|6I3mhEA_^RlMs4`u59RQl6p+Tq!F0&)KJmX|;c31PMCN7Ijmd+n$aY*WdU_eP zPdqd(xq9YRv&;TIDYCL})a=Io^YxGns`?k$g?=n${|YsQMOm{=^U)X+THfTlNrbcG z?;~YD-Xyg60#0)|Ql)FNV}w2eulWtAO7mAx9#4b zcI`Cz;sm1H3p}B3_T$Bsfk_zlr1*f>rPgooGQtzQI(S|knDraMedV+;PG5k+zC7Ia z9(pq+0dNiA1^|>r4JL--?7UlW~ae1Xn2{_x`o|f13o9cFULQ#C7bKw-;m~^ zwEhljJ`oDWQ32|1QP0{?&%UKL7YT<^g~RTI!x+O$QEDWC@X`!5Y?c}}UX64oTot(S z?<%`N7!7>?cl&vAU6P17K1cOyWkQQVx}KYAy51LLT<%Oyy(I zk&C%CR1RJED!Vh6Hl4lZ+aMcN`stfsW9Ix~HvRE*5zto=P)%g(nUq~%S|w{*Wnx-o z5O|6#yC}?nkdxV+lZnsC?9a*U%3-t~M9Tb=)HDx6P=(7OTgLTL7hZ3@lKf|O_fYHo zobBLhRr^`?bOt=|)0V?qe{?Gr{OSJ8MB!(2f;G5{78%(0K}kRB7-F7QNrP^sl4rYi zH#h@G&KLsTj)35$-iuDQOQu2Me}eO(JxM;drrx$^ z!tYkvu{WjMBnt2kJug+OK|QY_hB*TV%w=wx6GaJ#GQODxr1KMwsU0uddMW}!fPjdO z-%jD1N#>g=d0Jx{>5QeGDg{jK=-Af7ZR?K+2#)yeM)jITl(RX~+5D5U`O*|ye2KfQ z6J=#GK~Akk!PZowvP870rY+tjJkBMOP@^C3QouW-t5uWv$(bX}nd7rFM~rhl#grWN zl-%8^W3r~2)HoMczM0kg{@K;yE2c9_I;LUTP1qqq75hku0XAvgl)bBJUIR@yd|m7s zjH%5F!v9X$xO2`B&B64{)POHKStc@hpIvmt-JtuCK{sphXi4!Xi>Mce=n#|tzn@iW zsR;umZ`-47Z$P`fz+Lik-9A~nont7mCbl85*a~BAC4{>^+6Zo;DXI)xHh4nJ@`L(_#4Q=!N=x?y z^FD34=)^6qmA4a20CrBJd{ z5f$KWD)0hJ?;5q3Exiu9S;n*35k~5K)?*YcX%ySH{!wuU&mAQ2{QRY+TSLacOI%2v z%;%f9y9)4zf#BpuMq5#D9dZ60+nwWa-AZzf*iYr^ObZAF zlqG?#I3clCpT5?-e*pn(nT3;M31epWpSY(JKQp;qq6#|MBQ(N_mZipXm0Qg|E1wTz zLm8pZ`q$)eDJyX0CAcWG%O_>&*=-M{(gl6?D-Aks;u(wJ?ggj*6wT{BrQS6ov1M6d zYwnbt7#oGy=Fbh)MtvUT2v-U_|KMge|0fVxNlkW_H=R@;-Q{ojllZ#A%cGj`%)L~; zakR{FlxWfIDK(}gtFE;fI0bV`qP!73TJ-rZuWVs-*4vY+pq-!8&&IN_-6h+&eo>X+%8cA^t6#3!!Z z8Ay%6XdUU#+GZ^-KA}hG0h55%eFGEYjTyF9u@3Ii6uwJiq{k1`g6ncXX$pgpK<=dQ z#6Ap{RkUJYA-r^w^sW-@IEAA8CHH(9qqd)x!Y4=Y0{6)8TrYc=J7~w3=*P7M^gqli zO33s08wqWv?LYp>hc_vy`U^0BL1XJ%L*vT5uatD$x+^Ws`%vFI$ zfE|vbcc`b_nv1v1LYdZSmIQBmaF;I7qvk<8%=_%%RVs9M!QX2d^?=6cNVCXWmuxBf znqq59;+FTK#sYv&zOvmuLX8XWCwnJuYI6TE3TKD%w$#ThKiFC{J8zD9s(Wkk0#3%0 za2#O7v~-X#AP%Px>d_9cp#K+l`!A(Jn`8^kN9XRbF8(hU?o(5| zX}r+V$&A6&-lx%hR&N>A7V;7gA5ab&qgeX=`+|pgO=Ulj^u^QgTI~tbv^Ax;t z%ahdm<$d5LSgF^`j_1QxH_E&%5HGb7Up;$gzC>zs3fvYCrIbpWk&1N)=)Ij%!IX~c z!`$sDAu|1~QboUmM>^Z(j#dt3_G*3P_n!pU+}$(Y;!j8dZ&5;aP(<6){|f2RynmD<&Q#?mL}hZC+k&jp2hyeZ6eKD$q;I zxggi`P|J&G`OTm#-K%Xlod=CKMoyy>~pGP|D}rH?iTLtxh0(>1B;b?9@7wm4bsv<(Q#0JUoe|iOR!+|WtYCd zr7tDZzHnmG;-3aO#9mPK+&sk=W6dCGTPd?(r(SVi$lZs#L?`f}$)Dr+KREoa@Qn$GRT4KI42--9Jja4iKP^y6;aqO~WT zCcmSuq`vSUN7h`*2H~%&o35f7NTJxDFL|P}kD$AOm)RZz%A^dBtJ(+Jx1MMx#6Qq} ztNpNxMLROW79|2fp+u6UV{Gq@6h7!;zphF6Kh=tcGBK$59|=B9XH!nQ4dZiXoU3PN zzjoISg62{O#$3vvB}c{8Sx3cC%1Xv`znNb1BGoTsya+5{}ih# z5@EZOyAOa#tHz%X?+~NcrAKxEuzHmpjx+Ra;48&GSL?c5`N5q6nJZVc++5> zC!P_jUmKpTC73Jy^ zADROW=eBd|Y^$K~ZS?$tey?jen0Ga#kou;Va+^dS~*GsHAtJ3gjsR=d1Uavte4=%G%98;<7 z*;MTE!(RBFM=xB81;a^9D^_>y6?|@BIF&kFm!Bk@1W56Kv+yVy z2C1bMn_izi@9T}Z*QflpEVo!2ibm23AHIVAyI^-MrngrziUcxST#KEqTXUfQT5;Jc z`7p?G7k8p)cCR(scmB9B<=4Q(Uu;(=dh=Q_UgeY?TmeWN6Fqt}huec|tKEzy8&Vo> z{)a(;M(xW>0f;l8EyXQ_Ap69_5<||-SCm8;VFZ+_|OUx^j>dh zeB~MXDJWcW7;UAOv?=-{J$Na$zbQWoIap9CL^2JM%L<$WYzA*Csspd>Hk8Tyn<)D= zHvm9^c*RS+;w+7@XkL6+OV56YoU^(wS@_g~1sOEREaOH=B(q*;zTk}vXnETBREo_E zVnm@6(yF?^a}_@G)`7DlJ{>`vo5&l=v7yRx}wD^;T?;!e+}k?(r5Bs_Vw9 z{ckO;)}rvE2#6a1u*}97Z~5q1keYVZa%lX^w{(mz?)(gsa?myjQ!|M-7(|c8D;DxW z<1zPNO~=W_@j??Zyq}c>uJKah0h{_)PhRu;;Q8l0!d(_g!?L)xUNPRf5D7Bf>~90)xjGvMEcrd_GC7A-rxfd+3g%2njV~;3WR~WLh76~! z>*S0idkQ3tq;B-YU9-lm9KJt&xGYtqqYxO=NUhMj{Z`kqpiF~F_7_WCN-0%LqxO6R zi@DZBsOJ24SGA9&1)FNQt|M69XHNzhbB4UvK`h@nHZ%v<>krLohhjH6o8xsf<8(CR zbyoi$Hpu; zyF+*{8doIvf1w#y^#8#CgD;kDpX}PQrNsyq)3r~EY~2=yyfW5*kp_h3pdLf|?%S8`l+R=4!@GVKP}(t<)8rtP3EVegl-s$(WaJY2B81Oa&sbUHqWi+c z{3Dbp=;YG-knH|R%JdG$&|~PwG&Annu9eX1qE#@J2A^d&5Qe{7@q7?1Zmo0QW)&7L z?4PB~Tu^T3419A;;ZN>339sS2hhdwF&Z$U!Zr^(SrOlw?{hNLZNSRt#iG2}op9Qom zynnp>F^i4Ul!?{Wt7E}ykANwS!tq^yhE``~Q)b|?oIi)UGvy4~duQ1hfc3G8KhJ-C z9#sFkO?7TTK32Fmb3{xDIfLF+4opJdbp0__cB@I;zR|4$%?|HJRG8 zJZey_DZRl-X#_w$!;PM|Up~C*B#YhFCrK-Gk3E)Lc0krjsc*z;4{pI!um>1;iZ(&1Ofb+4XNz<3|t2ME80UjxjP5`dXf0z^zH0U~@P9|FY*^5%UAFfV3@Lq`Jyd<6%zb4{u)I1 zYQ7p8@Ynh45aw(68fd`Z;BS~OSo5_|ZRTczGX55S3sQVNU;jU|{WgEweDj^ZYx*1T z&5$%@7pOI57dY9JU7*&KT_9=7E)X|m7dROR==@trtLy$&1r4F>k zp2UxtO(X&hAPZ#>b9ETjV~-*?C~-1{T7MWY;NoSt1SY39a}ZZRSk|TfAO4}oEhoxv z+JDu$Zst4nm<&9gL+priWSb+sHbnUzF8i{v7F?oSqaq=G?RL;+9Xo% zmA=)oYM1`g5E>%IXP^rI%{cU4b%K=tfA%MF0x&tKfhMRo$m1gmA@L*s2`RdbkVn6f z7v*{J|24<$v&N}s_MR`&)A9d=PEglE1vSzCo9DZsvNPqsvo*KU}dtCl@VocMroIZ2zeG@r3UuDt2oWGe2vAKUuVK zhLM{mogbBx#Ff9HKpL_Crp4c!18w~cf<7MIxiGcjuSNf9>2DLrLC(YRsAaVk|6lGq zCt}EfW4IbjaBJ>xbPZSCzcP(I9F>ZHqfmxaWS??jsKEbAII9=NS+;-7+0KX)I)mjp zo}CtVH~*L%nmFwftYPzDoBrH$hzR~G(~3nQ#G#VL5O#hn9&KVO)ANb^KnXgR&wQCi z{Xg=4u>RksMF{w@XfrJ4z&&GF0L8?La0zuUxg!B-7ir4bPKxeAs_ZyxXPN8OK&-O0 zd*Tia=SpzT9P;SgaWvZ@@o!#mbhAy&3Ubz!gGjbK;TUKccizL#CzqY*6Yc|o5>Ftyj^mo`*Ym`oqyH6jq$ISAwN?V_{GisO2f>U%gNBcUS%Zh&ax=^w zJmU7@@Z^wD0|&vvVYl2o5SHP;EAiiT!$#aW95xNReb6x2ivMoMe|L_!bNDFu@^-Uy z-$?V{gQJHJ8VQF-kFGnD!06F+t%*K*blq7bHhOej8XcgaTb4%tB7ChN&tWF0+= zwx(y&I@*lvCSQgo;g}hHTlP}4?=xBN; z9Ye>`QS>g_i|ip^k-g;KWFPqt*-ySE2go<%Ao-RYBHxkk$q(c(`H>tUKar#6D-ryt z`M^BoRHHgIXo!YsghuIkG)@yVNmKlLT1LxhhE~ul&Cxuqq}8;B*3t&1Hi@0dTC=lQ z8+JBp%g$l#*tx7dJCAi>KVu!)`K%MWfOTdUvM%f*)|Fk%y0J@GcXlc3!7gJx+2!mC zb|ve@u428})vOP@hF#09V}056tRK69^=Ch41K2=zBOAnzvBB&nHiX^GhO%4Ot?V{7 zj16Za*zIg2yMv8lquCgCr$*UWb{G2v8^^}8U$P18SL|+f51Yt-%_gzmu*vMV8ffOd za|3^eZ{+XtP5eE+nZM7s@DKP_{vrQ}f6TY>PxyBJDc`|A;{{&Nck<8qF8&4I&HqV` z@h|zm_#XZh-^>5a_woPm{rqcwfPcde@^ASejhSzkYdZgq|G*FPBeaVD#DAnQn%1IP z?Eil;;{T&BMz}kFJA6g&_}}btI+%`Tb><#tt;pxrE;lLH-02qelD+&xYsd5LWIx$& zQn1+hhfR95cRV>p0qNGvdmXs*Wlj;u1#+~Kj{RTn`$_-J&i_B&_x@e~5&r~txwX43 z9@^VjA+ri34o_q@5|)qPF#&d$zCd;2ShV3z-jp&RD;zZ81FWzZ8Yhbz#Ybrtl6 ztDz5E1J}ZJ&=;%!HRi74!P9hSy;YyrI6Z zjV~FA7qPAPu)s|$z`N3oj~uFUoWR~>0jyN^lx+?eS$topQ7{W)ADQP?n~zMdHMovlgtS^B(!%*gW$!a`qIP z&z@!r*fVS)d!4OeZ(* zY@_tOPWrw{`kr^c^Gi@lns2^uOq!5WL38;Hq(P?x>CfqnbPyeYuPW&#P11U{k!|9a z2-zwGL~jjkVHC`RMX(&!!x54odD5K>CU=tu$qI6a0&Pq?(4KS}okN$=0zJT*u$HVH z>&_;yDeOTun=NGLei~fOW4!GfY$EA*1BP9zsJ_PB9_~* zwLfEP3_@ldz6jg!08i70u(j@p>w}1E55)Bki0faR8GRAwkwXMhkcAq0 z)ck)2*xO6k+h65zF^=UCEPq+TK7n6e#V=l*UK2Pyj5ythIQ8y9eCY4%P7I zkP5!Up8l@T(;h6@izWY%R-_*Le%?n<2N3=s!oPs?JPYY*0nU_)|3YlzQpEom#Q!p! zmqm#GTnGOZ9x6J9R6?+imDtDQ3KeNs9>wxkB%G7@WmUjT{v9zHgqSQwOm0HjsX$ET zNwo6@_V>C%J6o~#n@Am7e6+I^OYgwaZP@l`T%|iD+G&a~Z`rHEPPbQ#o#Fh}!uhQw z{wDYF6wdmS*!smdho2zkk0Is~B)=AW8i1qdi}3vroBoK640#%D?$$QLEemzw3Q08flFFdxu7aq^R7am*U3y-bfez+g%U=}xV(3u$33A|x@>kK`q~fxg2oXV)tAQTI)L>7IMgNwlIvg1mxJ zRhJQyVlR_mY9yFf5#|bF?*A*Wz3viZb9_xS3ysW~A}0Urj=#MI6t2bJR*B!tR<40R z%Gi+|*xseex7+dCOUk!z@mpJI4r+kX7Us*1&X)*K+LE?H{ZA{nTq>!B7`=#IOuN!< z^b&eA9ZGMZx6<3_FghGHAm%OfbT|vn7P9Q6LUMImhykM`=E$NAbcl?Fi36YM!Sf+L!-b(k_#aSLm4_@; zW19`21}gYWq$bN|S7Xu_?M^QTO0S|b!xM~@je3hMrk`>Mk~jhz4fzvRzdmv`-obfniGL_MlrKhLr3c>Y{`)zzH= zNDaWpub4j_zP^gN6?r3Ghh=fL3kHpZQxSCvF}%dL)p@ zNXfFCx_Q_yh5(6-18v?y^Jo63)qfg#)4;)?KWAE^+nPVErv2)Hp+j#P2>NsV0MJ6+ z#8?yFFm(8saiBjp5g=b@{wxE4VYd$&2>P3g0rG9kpX8h;h7KP%ZY1cR?Gj!Ljr2XWbNKs6lSt3Vd0%oNYTdi0#;4|`wv^Gb4rOD?9xvOH z=IOTSVd**PP33xd`||PS%gc9WBAKR{PMMLJ$1|%lJ1Zg;O)I)r45*k~v7lmgMIlSG zEweqc6S9wGH)Qwb>T*MJi*jG)tMVQ5z4N!`C+8RBw^q{1mX-Z0$5$?_+*Wy%{~AJ2 z17VbT)>7`4(4Qa-c_@c6_Z!>^2ISrU=cZQJTnW>%7Ka=pfumiy z3^I_C`++f7u0q;4{2LOG!~2(Mca1|ODu?49?O2T>ulqrxo9CKWr9~gxYE=)O|szv6A zK81c;erU7RG(r}|hCT@mk5e~>a}$SJC`Y+jsShI|8Cc&gzXPQKf4PAk3L)%8ou5B= z=BEsCk1AAgyJvnPe4ro?1{|eJg6;Mv-CU;gG4}W zyL33@0!oX{A^*fPKc)M=4NG0<5dLQNPzf0c?p6<-8MvBhu{$~L36movp&Iw9ykfU_ z)}R#ZPzfI!hoE)68PYyDmlABKArSXL*=09LSea#|dK)b5a2eL$;~-zFa(gNUH%cq( zhjmxNh9Bs|!tGyed4NO%UPyntKlkC`!UWAme_!h^ynjY+fGP<(2Nh6>v>Prt;h9Bcz3Rm#L+fY|3tLZ`oVQ_`A zJ}#`k@5>cBcOgr!O;3f+gKGJEx~vFJ{x!K&I-!H8?{Ct1%h6lQ$4ltrN^dqy&@TC_ zvRXEzjbF~!@?2%cg5ZOC`HM1RLACtjeC)V&d~-+ttWdwVj(03`O7;*ul1G*O;IHE! z$L!mV8XYqv!w+XIc!*)@2L@=x$r_M#kQkwT%P_(yF+^3T=p3*&>ukemi zt#(v6m4A%qDW~6mBYn14a3}?Nt}-76%8vG3uQ+wLQ)o4)mVdP8cyRL9u_4Q;F|Wm)ic_duIwHSDJZy~)09)qhV-}C4C&DH_>X~xzq@6ppx(zoonn=u2YVUyHyLcd z1~m#AawLw?0+o2vmNZS8smsbZT89jjLkREj=66eODTk<{Px})jr5gV7??pLBZk85n z=IR0lpzbq+(t94~BCs83f_Vrn?M9`5vawF14%Nz?pyAB;>a$NEf-tK7?qsYP!ug2{ z>h+G`JB;@*gqEV1X69jtDp27f0lo8`P=V4@6wC8C zTg7nrBgWr&VeOXcAt#l}v>4plOq`)0c)P_-kd+`@nhkF652)?-L))zt;3TQsz#V6w zo_@Vna33?E>c42i?)ft~xoE9m-BfVz4?)d;*^Z6D4#-P2O&KTeXsLtydH~9b*05V` zhCU#1#KWce#`sl3ZsLAD3AslW`_WJnZTEBt(o%^f#pkh1md@{kiU24LxlSB+o(ns@ z2y7C

    !*3F6{jQu-0!OU%S7@xl&&xd>!A;4`{Vo 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

    M$-)Y|&-*3J@e9gYIe&{Ft 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Ι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

    -
    -
    - {{ emailModalPhrases.firstPhrase }} -
    -
    -
    -
    + } -
    -
    {{ literals.sentSmsCodePhrase }}
    -
    -
    - - -
    - - - - + @case ('smsCode') { +
    +
    {{ literals.sentSmsCodePhrase }}
    +
    + + + +
    + @if (invalidEmail) { + + + } + @if (showCustomCodeError) { + + + } +
    +
    - -
    -
    - {{ literals.sendAgainPhrase }} - {{ literals.sendAgain }} -
    -
    +
    + {{ literals.sendAgainPhrase }} + {{ literals.sendAgain }} +
    +
    + } -
    - -
    - {{ literals.emailSentConfirmationPhrase }} -
    -
    + @case ('confirmation') { +
    + +
    + {{ literals.emailSentConfirmationPhrase }} +
    +
    + } + }
    diff --git a/projects/templates/src/lib/components/po-modal-password-recovery/po-modal-password-recovery.component.spec.ts b/projects/templates/src/lib/components/po-modal-password-recovery/po-modal-password-recovery.component.spec.ts index be9120e833..9a8e482042 100644 --- a/projects/templates/src/lib/components/po-modal-password-recovery/po-modal-password-recovery.component.spec.ts +++ b/projects/templates/src/lib/components/po-modal-password-recovery/po-modal-password-recovery.component.spec.ts @@ -1,7 +1,8 @@ import { By } from '@angular/platform-browser'; import { ComponentFixture, fakeAsync, TestBed, tick, waitForAsync } from '@angular/core/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { FormsModule } from '@angular/forms'; -import { RouterTestingModule } from '@angular/router/testing'; import { throwError } from 'rxjs'; @@ -16,7 +17,7 @@ import { PoModalPasswordRecoveryModalContent } from './enums/po-modal-password-r import { PoModalPasswordRecoveryService } from './po-modal-password-recovery.service'; import { PoModalPasswordRecoveryType } from './enums/po-modal-password-recovery-type.enum'; import { provideHttpClientTesting } from '@angular/common/http/testing'; -import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; describe('PoModalPasswordRecoveryComponent:', () => { let component: PoModalPasswordRecoveryComponent; @@ -27,11 +28,12 @@ describe('PoModalPasswordRecoveryComponent:', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ declarations: [PoModalPasswordRecoveryErrorMessageComponent, PoModalPasswordRecoveryComponent], - imports: [FormsModule, RouterTestingModule.withRoutes([]), PoFieldModule, PoModalModule], + imports: [FormsModule, RouterModule.forRoot([]), PoFieldModule, PoModalModule], providers: [ + provideLocationMocks(), PoI18nPipe, PoModalPasswordRecoveryService, - provideHttpClient(withInterceptorsFromDi()), + provideHttpClient(withXhr(), withInterceptorsFromDi()), provideHttpClientTesting() ] }).compileComponents(); diff --git a/projects/templates/src/lib/components/po-modal-password-recovery/po-modal-password-recovery.component.ts b/projects/templates/src/lib/components/po-modal-password-recovery/po-modal-password-recovery.component.ts index ac3d4150f0..6b6b9ef519 100644 --- a/projects/templates/src/lib/components/po-modal-password-recovery/po-modal-password-recovery.component.ts +++ b/projects/templates/src/lib/components/po-modal-password-recovery/po-modal-password-recovery.component.ts @@ -1,4 +1,4 @@ -import { Component, OnDestroy, ViewChild, inject } from '@angular/core'; +import { Component, OnDestroy, ViewChild, inject, ChangeDetectionStrategy } from '@angular/core'; import { AbstractControl, NgForm } from '@angular/forms'; import { Router } from '@angular/router'; import { Subscription } from 'rxjs'; @@ -43,6 +43,7 @@ import { PoModalPasswordRecoveryService } from './po-modal-password-recovery.ser @Component({ selector: 'po-modal-password-recovery', templateUrl: './po-modal-password-recovery.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoModalPasswordRecoveryComponent extends PoModalPasswordRecoveryBaseComponent implements OnDestroy { diff --git a/projects/templates/src/lib/components/po-modal-password-recovery/po-modal-password-recovery.service.spec.ts b/projects/templates/src/lib/components/po-modal-password-recovery/po-modal-password-recovery.service.spec.ts index 9ec024a359..be465ef99d 100644 --- a/projects/templates/src/lib/components/po-modal-password-recovery/po-modal-password-recovery.service.spec.ts +++ b/projects/templates/src/lib/components/po-modal-password-recovery/po-modal-password-recovery.service.spec.ts @@ -2,7 +2,7 @@ import { HttpTestingController, provideHttpClientTesting } from '@angular/common import { TestBed } from '@angular/core/testing'; import { PoModalPasswordRecoveryService } from './po-modal-password-recovery.service'; -import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; describe('PoModalPasswordRecoveryService:', () => { let poModalPasswordRecoveryService: PoModalPasswordRecoveryService; @@ -13,7 +13,7 @@ describe('PoModalPasswordRecoveryService:', () => { imports: [], providers: [ PoModalPasswordRecoveryService, - provideHttpClient(withInterceptorsFromDi()), + provideHttpClient(withXhr(), withInterceptorsFromDi()), provideHttpClientTesting() ] }); diff --git a/projects/templates/src/lib/components/po-modal-password-recovery/samples/sample-po-modal-password-recovery-basic/sample-po-modal-password-recovery-basic.component.ts b/projects/templates/src/lib/components/po-modal-password-recovery/samples/sample-po-modal-password-recovery-basic/sample-po-modal-password-recovery-basic.component.ts index eaa9dfb95d..ce638dfefb 100644 --- a/projects/templates/src/lib/components/po-modal-password-recovery/samples/sample-po-modal-password-recovery-basic/sample-po-modal-password-recovery-basic.component.ts +++ b/projects/templates/src/lib/components/po-modal-password-recovery/samples/sample-po-modal-password-recovery-basic/sample-po-modal-password-recovery-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-modal-password-recovery-basic', templateUrl: './sample-po-modal-password-recovery-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoModalPasswordRecoveryBasicComponent {} diff --git a/projects/templates/src/lib/components/po-modal-password-recovery/samples/sample-po-modal-password-recovery-labs/sample-po-modal-password-recovery-labs.component.ts b/projects/templates/src/lib/components/po-modal-password-recovery/samples/sample-po-modal-password-recovery-labs/sample-po-modal-password-recovery-labs.component.ts index 62c49305a0..ea1194eb3f 100644 --- a/projects/templates/src/lib/components/po-modal-password-recovery/samples/sample-po-modal-password-recovery-labs/sample-po-modal-password-recovery-labs.component.ts +++ b/projects/templates/src/lib/components/po-modal-password-recovery/samples/sample-po-modal-password-recovery-labs/sample-po-modal-password-recovery-labs.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, ViewChild, inject } from '@angular/core'; +import { Component, OnInit, ViewChild, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoDialogService, PoRadioGroupOption, PoSelectOption } from '@po-ui/ng-components'; import { @@ -10,6 +10,7 @@ import { @Component({ selector: 'sample-po-modal-password-recovery-labs', templateUrl: './sample-po-modal-password-recovery-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoModalPasswordRecoveryLabsComponent implements OnInit { diff --git a/projects/templates/src/lib/components/po-modal-password-recovery/samples/sample-po-modal-password-recovery-request/sample-po-modal-password-recovery-request.component.ts b/projects/templates/src/lib/components/po-modal-password-recovery/samples/sample-po-modal-password-recovery-request/sample-po-modal-password-recovery-request.component.ts index 4ae608122d..51159c8c39 100644 --- a/projects/templates/src/lib/components/po-modal-password-recovery/samples/sample-po-modal-password-recovery-request/sample-po-modal-password-recovery-request.component.ts +++ b/projects/templates/src/lib/components/po-modal-password-recovery/samples/sample-po-modal-password-recovery-request/sample-po-modal-password-recovery-request.component.ts @@ -1,10 +1,11 @@ -import { Component, ViewChild } from '@angular/core'; +import { Component, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { PoModalPasswordRecoveryComponent, PoModalPasswordRecoveryType } from '@po-ui/ng-templates'; @Component({ selector: 'sample-po-modal-password-recovery-request', templateUrl: './sample-po-modal-password-recovery-request.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoModalPasswordRecoveryRequestComponent { diff --git a/projects/templates/src/lib/components/po-page-background/po-page-background.component.ts b/projects/templates/src/lib/components/po-page-background/po-page-background.component.ts index 390a9821f6..0a6ce89cb2 100644 --- a/projects/templates/src/lib/components/po-page-background/po-page-background.component.ts +++ b/projects/templates/src/lib/components/po-page-background/po-page-background.component.ts @@ -1,4 +1,14 @@ -import { Component, EventEmitter, HostBinding, HostListener, Input, OnInit, Output, inject } from '@angular/core'; +import { + Component, + EventEmitter, + HostBinding, + HostListener, + Input, + OnInit, + Output, + inject, + ChangeDetectionStrategy +} from '@angular/core'; import { PoLanguage, poLanguageDefault, PoLanguageService, PoSelectOption } from '@po-ui/ng-components'; @@ -7,6 +17,7 @@ import { convertToBoolean, getDefaultSizeFn, validateSizeFn } from './../../util @Component({ selector: 'po-page-background', templateUrl: './po-page-background.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) diff --git a/projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user-contacts/po-page-blocked-user-contacts.component.spec.ts b/projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user-contacts/po-page-blocked-user-contacts.component.spec.ts index 2f9e7583ae..5d3c2d9e57 100644 --- a/projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user-contacts/po-page-blocked-user-contacts.component.spec.ts +++ b/projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user-contacts/po-page-blocked-user-contacts.component.spec.ts @@ -1,8 +1,9 @@ import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core'; import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { FormsModule } from '@angular/forms'; import { HttpClient, HttpHandler } from '@angular/common/http'; -import { RouterTestingModule } from '@angular/router/testing'; import { PoPageBlockedUserContactsComponent } from './po-page-blocked-user-contacts.component'; @@ -13,9 +14,9 @@ describe('PoPageBlockedUserContactsComponent: ', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ - imports: [FormsModule, RouterTestingModule.withRoutes([])], + imports: [FormsModule, RouterModule.forRoot([])], declarations: [PoPageBlockedUserContactsComponent], - providers: [HttpClient, HttpHandler], + providers: [provideLocationMocks(), HttpClient, HttpHandler], schemas: [NO_ERRORS_SCHEMA] }).compileComponents(); diff --git a/projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user-reason/po-page-blocked-user-reason.component.html b/projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user-reason/po-page-blocked-user-reason.component.html index 061f8b5509..9d941658b5 100644 --- a/projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user-reason/po-page-blocked-user-reason.component.html +++ b/projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user-reason/po-page-blocked-user-reason.component.html @@ -5,7 +5,7 @@
    - {{ literals?.firstPhrase | poI18n: literalParams }} + {{ $safeNavigationMigration(literals?.firstPhrase) | poI18n: literalParams }}
    {{ literals?.secondPhrase }}
    @if (literals?.thirdPhrase) { diff --git a/projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user-reason/po-page-blocked-user-reason.component.ts b/projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user-reason/po-page-blocked-user-reason.component.ts index 7173418381..f01abde7ae 100644 --- a/projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user-reason/po-page-blocked-user-reason.component.ts +++ b/projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user-reason/po-page-blocked-user-reason.component.ts @@ -1,4 +1,13 @@ -import { ChangeDetectorRef, Component, Input, OnChanges, OnInit, SimpleChanges, inject } from '@angular/core'; +import { + ChangeDetectorRef, + Component, + Input, + OnChanges, + OnInit, + SimpleChanges, + inject, + ChangeDetectionStrategy +} from '@angular/core'; import { PoLanguageService, poLocaleDefault } from '@po-ui/ng-components'; @@ -9,6 +18,7 @@ import { PoPageBlockedUserReasonParams } from '../interfaces/po-page-blocked-use @Component({ selector: 'po-page-blocked-user-reason', templateUrl: './po-page-blocked-user-reason.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoPageBlockedUserReasonComponent implements OnChanges, OnInit { diff --git a/projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user.component.html b/projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user.component.html index e039aced80..a55b468d6b 100644 --- a/projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user.component.html +++ b/projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user.component.html @@ -16,7 +16,7 @@ diff --git a/projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user.component.spec.ts b/projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user.component.spec.ts index 659fe1bf66..aaf1df5c63 100644 --- a/projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user.component.spec.ts +++ b/projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user.component.spec.ts @@ -1,6 +1,7 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { NO_ERRORS_SCHEMA } from '@angular/core'; -import { RouterTestingModule } from '@angular/router/testing'; import { PoUtils as utilsFunctions } from './../../utils/util'; @@ -15,9 +16,10 @@ describe('PoPageBlockedUserComponent:', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ - imports: [RouterTestingModule.withRoutes([])], + imports: [RouterModule.forRoot([])], declarations: [PoPageBlockedUserComponent], - schemas: [NO_ERRORS_SCHEMA] + schemas: [NO_ERRORS_SCHEMA], + providers: [provideLocationMocks()] }).compileComponents(); })); diff --git a/projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user.component.ts b/projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user.component.ts index 9d2e3437fe..0194d82ff3 100644 --- a/projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user.component.ts +++ b/projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, inject } from '@angular/core'; +import { Component, OnInit, inject, ChangeDetectionStrategy } from '@angular/core'; import { ActivatedRoute, Router } from '@angular/router'; import { PoLanguageService, poLocaleDefault } from '@po-ui/ng-components'; @@ -51,6 +51,7 @@ export const poPageBlockedUserButtonLiterals: object = { @Component({ selector: 'po-page-blocked-user', templateUrl: './po-page-blocked-user.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoPageBlockedUserComponent extends PoPageBlockedUserBaseComponent implements OnInit { diff --git a/projects/templates/src/lib/components/po-page-blocked-user/samples/sample-po-page-blocked-user-basic/sample-po-page-blocked-user-basic.component.ts b/projects/templates/src/lib/components/po-page-blocked-user/samples/sample-po-page-blocked-user-basic/sample-po-page-blocked-user-basic.component.ts index de28d39c2b..0a73670a14 100644 --- a/projects/templates/src/lib/components/po-page-blocked-user/samples/sample-po-page-blocked-user-basic/sample-po-page-blocked-user-basic.component.ts +++ b/projects/templates/src/lib/components/po-page-blocked-user/samples/sample-po-page-blocked-user-basic/sample-po-page-blocked-user-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-page-blocked-user-basic', templateUrl: './sample-po-page-blocked-user-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPageBlockedUserBasicComponent {} diff --git a/projects/templates/src/lib/components/po-page-blocked-user/samples/sample-po-page-blocked-user-exceeded-attempts/sample-po-page-blocked-user-exceeded-attempts.component.ts b/projects/templates/src/lib/components/po-page-blocked-user/samples/sample-po-page-blocked-user-exceeded-attempts/sample-po-page-blocked-user-exceeded-attempts.component.ts index 04124ac88a..0facbc0e70 100644 --- a/projects/templates/src/lib/components/po-page-blocked-user/samples/sample-po-page-blocked-user-exceeded-attempts/sample-po-page-blocked-user-exceeded-attempts.component.ts +++ b/projects/templates/src/lib/components/po-page-blocked-user/samples/sample-po-page-blocked-user-exceeded-attempts/sample-po-page-blocked-user-exceeded-attempts.component.ts @@ -1,10 +1,11 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoPageBlockedUserReasonParams } from '@po-ui/ng-templates'; @Component({ selector: 'sample-po-page-blocked-user-exceeded-attempts', templateUrl: './sample-po-page-blocked-user-exceeded-attempts.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPageBlockedUserExceededAttemptsComponent { diff --git a/projects/templates/src/lib/components/po-page-blocked-user/samples/sample-po-page-blocked-user-expired-password/sample-po-page-blocked-user-expired-password.component.ts b/projects/templates/src/lib/components/po-page-blocked-user/samples/sample-po-page-blocked-user-expired-password/sample-po-page-blocked-user-expired-password.component.ts index 507109682b..4fc6a53a2e 100644 --- a/projects/templates/src/lib/components/po-page-blocked-user/samples/sample-po-page-blocked-user-expired-password/sample-po-page-blocked-user-expired-password.component.ts +++ b/projects/templates/src/lib/components/po-page-blocked-user/samples/sample-po-page-blocked-user-expired-password/sample-po-page-blocked-user-expired-password.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-page-blocked-user-expired-password', templateUrl: './sample-po-page-blocked-user-expired-password.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPageBlockedUserExpiredPasswordComponent { diff --git a/projects/templates/src/lib/components/po-page-blocked-user/samples/sample-po-page-blocked-user-labs/sample-po-page-blocked-user-labs.component.ts b/projects/templates/src/lib/components/po-page-blocked-user/samples/sample-po-page-blocked-user-labs/sample-po-page-blocked-user-labs.component.ts index a9ec0cb69a..d50fc9b36a 100644 --- a/projects/templates/src/lib/components/po-page-blocked-user/samples/sample-po-page-blocked-user-labs/sample-po-page-blocked-user-labs.component.ts +++ b/projects/templates/src/lib/components/po-page-blocked-user/samples/sample-po-page-blocked-user-labs/sample-po-page-blocked-user-labs.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoRadioGroupOption } from '@po-ui/ng-components'; import { PoPageBlockedUserReason, PoPageBlockedUserReasonParams } from '@po-ui/ng-templates'; @@ -6,6 +6,7 @@ import { PoPageBlockedUserReason, PoPageBlockedUserReasonParams } from '@po-ui/n @Component({ selector: 'sample-po-page-blocked-user-labs', templateUrl: './sample-po-page-blocked-user-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPageBlockedUserLabsComponent implements OnInit { diff --git a/projects/templates/src/lib/components/po-page-change-password/po-page-change-password.component.spec.ts b/projects/templates/src/lib/components/po-page-change-password/po-page-change-password.component.spec.ts index 28e6ac8e4a..c57839893a 100644 --- a/projects/templates/src/lib/components/po-page-change-password/po-page-change-password.component.spec.ts +++ b/projects/templates/src/lib/components/po-page-change-password/po-page-change-password.component.spec.ts @@ -1,8 +1,9 @@ import { ComponentFixture, fakeAsync, TestBed, tick, waitForAsync } from '@angular/core/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { EventEmitter, NO_ERRORS_SCHEMA, provideNgReflectAttributes } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { HttpClient, HttpHandler } from '@angular/common/http'; -import { RouterTestingModule } from '@angular/router/testing'; import { PoModule } from '@po-ui/ng-components'; import { PoUtils as utilsFunctions } from './../../utils/util'; @@ -23,9 +24,15 @@ describe('PoPageChangePasswordComponent:', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ - imports: [FormsModule, RouterTestingModule.withRoutes([]), PoModule, PoPageBackgroundModule], + imports: [FormsModule, RouterModule.forRoot([]), PoModule, PoPageBackgroundModule], declarations: [PoPageChangePasswordComponent], - providers: [HttpClient, HttpHandler, PoPageChangePasswordService, provideNgReflectAttributes()] + providers: [ + provideLocationMocks(), + HttpClient, + HttpHandler, + PoPageChangePasswordService, + provideNgReflectAttributes() + ] }).compileComponents(); })); diff --git a/projects/templates/src/lib/components/po-page-change-password/po-page-change-password.component.ts b/projects/templates/src/lib/components/po-page-change-password/po-page-change-password.component.ts index d79df56678..3364bb853b 100644 --- a/projects/templates/src/lib/components/po-page-change-password/po-page-change-password.component.ts +++ b/projects/templates/src/lib/components/po-page-change-password/po-page-change-password.component.ts @@ -6,7 +6,8 @@ import { OnInit, ViewChild, ViewContainerRef, - inject + inject, + ChangeDetectionStrategy } from '@angular/core'; import { NgForm } from '@angular/forms'; import { ActivatedRoute, Router } from '@angular/router'; @@ -65,6 +66,7 @@ import { PoPageChangePasswordService } from './po-page-change-password.service'; @Component({ selector: 'po-page-change-password', templateUrl: './po-page-change-password.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoPageChangePasswordComponent diff --git a/projects/templates/src/lib/components/po-page-change-password/po-page-change-password.service.spec.ts b/projects/templates/src/lib/components/po-page-change-password/po-page-change-password.service.spec.ts index 5ad1ce94fb..b28eed79c1 100644 --- a/projects/templates/src/lib/components/po-page-change-password/po-page-change-password.service.spec.ts +++ b/projects/templates/src/lib/components/po-page-change-password/po-page-change-password.service.spec.ts @@ -1,7 +1,7 @@ import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed } from '@angular/core/testing'; import { PoPageChangePasswordService } from './po-page-change-password.service'; -import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; describe('PoPageChangePasswordService:', () => { let poPageChangePasswordService: PoPageChangePasswordService; @@ -10,7 +10,11 @@ describe('PoPageChangePasswordService:', () => { beforeEach(() => { TestBed.configureTestingModule({ imports: [], - providers: [PoPageChangePasswordService, provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting()] + providers: [ + PoPageChangePasswordService, + provideHttpClient(withXhr(), withInterceptorsFromDi()), + provideHttpClientTesting() + ] }); poPageChangePasswordService = TestBed.inject(PoPageChangePasswordService); diff --git a/projects/templates/src/lib/components/po-page-change-password/samples/sample-po-page-change-password-basic/sample-po-page-change-password-basic.component.ts b/projects/templates/src/lib/components/po-page-change-password/samples/sample-po-page-change-password-basic/sample-po-page-change-password-basic.component.ts index 3cb5f86572..1d2132e207 100644 --- a/projects/templates/src/lib/components/po-page-change-password/samples/sample-po-page-change-password-basic/sample-po-page-change-password-basic.component.ts +++ b/projects/templates/src/lib/components/po-page-change-password/samples/sample-po-page-change-password-basic/sample-po-page-change-password-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-page-change-password-basic', templateUrl: './sample-po-page-change-password-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPageChangePasswordBasicComponent {} diff --git a/projects/templates/src/lib/components/po-page-change-password/samples/sample-po-page-change-password-create/sample-po-page-change-password-create.component.ts b/projects/templates/src/lib/components/po-page-change-password/samples/sample-po-page-change-password-create/sample-po-page-change-password-create.component.ts index 48f2e98404..221b2faeab 100644 --- a/projects/templates/src/lib/components/po-page-change-password/samples/sample-po-page-change-password-create/sample-po-page-change-password-create.component.ts +++ b/projects/templates/src/lib/components/po-page-change-password/samples/sample-po-page-change-password-create/sample-po-page-change-password-create.component.ts @@ -1,9 +1,10 @@ -import { Component, ViewChild } from '@angular/core'; +import { Component, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { PoPageChangePasswordComponent, PoPageChangePasswordRequirement } from '@po-ui/ng-templates'; @Component({ selector: 'sample-po-page-change-password-create', templateUrl: './sample-po-page-change-password-create.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPageChangePasswordCreateComponent { diff --git a/projects/templates/src/lib/components/po-page-change-password/samples/sample-po-page-change-password-labs/sample-po-page-change-password-labs.component.ts b/projects/templates/src/lib/components/po-page-change-password/samples/sample-po-page-change-password-labs/sample-po-page-change-password-labs.component.ts index 75709f4ed7..ef738c72b3 100644 --- a/projects/templates/src/lib/components/po-page-change-password/samples/sample-po-page-change-password-labs/sample-po-page-change-password-labs.component.ts +++ b/projects/templates/src/lib/components/po-page-change-password/samples/sample-po-page-change-password-labs/sample-po-page-change-password-labs.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, ViewChild, inject } from '@angular/core'; +import { Component, OnInit, ViewChild, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoDialogService, PoRadioGroupOption } from '@po-ui/ng-components'; import { @@ -10,6 +10,7 @@ import { @Component({ selector: 'sample-po-page-change-password-labs', templateUrl: './sample-po-page-change-password-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPageChangePasswordLabsComponent implements OnInit { diff --git a/projects/templates/src/lib/components/po-page-change-password/samples/sample-po-page-change-password-modify/sample-po-page-change-password-modify.component.ts b/projects/templates/src/lib/components/po-page-change-password/samples/sample-po-page-change-password-modify/sample-po-page-change-password-modify.component.ts index 7bef4291d3..340c61f64c 100644 --- a/projects/templates/src/lib/components/po-page-change-password/samples/sample-po-page-change-password-modify/sample-po-page-change-password-modify.component.ts +++ b/projects/templates/src/lib/components/po-page-change-password/samples/sample-po-page-change-password-modify/sample-po-page-change-password-modify.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, ViewChild } from '@angular/core'; +import { Component, OnInit, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { PoPageChangePasswordComponent } from '@po-ui/ng-templates'; @@ -7,6 +7,7 @@ import { PoBreadcrumb, PoSelectOption } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-page-change-password-modify', templateUrl: './sample-po-page-change-password-modify.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPageChangePasswordModifyComponent implements OnInit { diff --git a/projects/templates/src/lib/components/po-page-change-password/samples/sample-po-page-change-password-request/sample-po-page-change-password-request.component.ts b/projects/templates/src/lib/components/po-page-change-password/samples/sample-po-page-change-password-request/sample-po-page-change-password-request.component.ts index 8f04ef7d1c..c569ecbe35 100644 --- a/projects/templates/src/lib/components/po-page-change-password/samples/sample-po-page-change-password-request/sample-po-page-change-password-request.component.ts +++ b/projects/templates/src/lib/components/po-page-change-password/samples/sample-po-page-change-password-request/sample-po-page-change-password-request.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-page-change-password-request', templateUrl: './sample-po-page-change-password-request.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPageChangePasswordRequestComponent {} diff --git a/projects/templates/src/lib/components/po-page-dynamic-detail/po-page-dynamic-detail-actions.service.spec.ts b/projects/templates/src/lib/components/po-page-dynamic-detail/po-page-dynamic-detail-actions.service.spec.ts index 444ef14b79..9cd7fd0db2 100644 --- a/projects/templates/src/lib/components/po-page-dynamic-detail/po-page-dynamic-detail-actions.service.spec.ts +++ b/projects/templates/src/lib/components/po-page-dynamic-detail/po-page-dynamic-detail-actions.service.spec.ts @@ -2,7 +2,7 @@ import { HttpTestingController, provideHttpClientTesting } from '@angular/common import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { PoPageDynamicDetailActionsService } from './po-page-dynamic-detail-actions.service'; -import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; describe('PoPageDynamicDetailActionsService', () => { let service: PoPageDynamicDetailActionsService; @@ -13,7 +13,7 @@ describe('PoPageDynamicDetailActionsService', () => { imports: [], providers: [ PoPageDynamicDetailActionsService, - provideHttpClient(withInterceptorsFromDi()), + provideHttpClient(withXhr(), withInterceptorsFromDi()), provideHttpClientTesting() ] }); diff --git a/projects/templates/src/lib/components/po-page-dynamic-detail/po-page-dynamic-detail.component.spec.ts b/projects/templates/src/lib/components/po-page-dynamic-detail/po-page-dynamic-detail.component.spec.ts index a0f856ea1e..1af5553e00 100644 --- a/projects/templates/src/lib/components/po-page-dynamic-detail/po-page-dynamic-detail.component.spec.ts +++ b/projects/templates/src/lib/components/po-page-dynamic-detail/po-page-dynamic-detail.component.spec.ts @@ -1,8 +1,9 @@ import { provideHttpClientTesting } from '@angular/common/http/testing'; import { NO_ERRORS_SCHEMA } from '@angular/core'; import { ComponentFixture, fakeAsync, TestBed, tick, waitForAsync } from '@angular/core/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { FormsModule } from '@angular/forms'; -import { RouterTestingModule } from '@angular/router/testing'; import { of, throwError } from 'rxjs'; @@ -11,7 +12,7 @@ import { PoDialogService, PoThemeA11yEnum } from '@po-ui/ng-components'; import { expectPropertiesValues } from '../../util-test/util-expect.spec'; import { PoUtils as util } from '../../utils/util'; -import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; import { PoPageDynamicDetailActions } from './interfaces/po-page-dynamic-detail-actions.interface'; import { PoPageDynamicDetailBeforeRemove } from './interfaces/po-page-dynamic-detail-before-remove.interface'; import { PoPageDynamicDetailComponent } from './po-page-dynamic-detail.component'; @@ -24,8 +25,13 @@ describe('PoPageDynamicDetailComponent:', () => { TestBed.configureTestingModule({ declarations: [PoPageDynamicDetailComponent], schemas: [NO_ERRORS_SCHEMA], - imports: [FormsModule, RouterTestingModule.withRoutes([])], - providers: [PoDialogService, provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting()] + imports: [FormsModule, RouterModule.forRoot([])], + providers: [ + provideLocationMocks(), + PoDialogService, + provideHttpClient(withXhr(), withInterceptorsFromDi()), + provideHttpClientTesting() + ] }).compileComponents(); })); diff --git a/projects/templates/src/lib/components/po-page-dynamic-detail/po-page-dynamic-detail.component.ts b/projects/templates/src/lib/components/po-page-dynamic-detail/po-page-dynamic-detail.component.ts index ed1ac70dc3..b5a9fa7d29 100644 --- a/projects/templates/src/lib/components/po-page-dynamic-detail/po-page-dynamic-detail.component.ts +++ b/projects/templates/src/lib/components/po-page-dynamic-detail/po-page-dynamic-detail.component.ts @@ -1,4 +1,13 @@ -import { Component, HostBinding, HostListener, Input, OnDestroy, OnInit, inject } from '@angular/core'; +import { + Component, + HostBinding, + HostListener, + Input, + OnDestroy, + OnInit, + inject, + ChangeDetectionStrategy +} from '@angular/core'; import { ActivatedRoute, Route, Router } from '@angular/router'; import { EMPTY, Observable, Subscription, concat, of, throwError } from 'rxjs'; @@ -161,6 +170,7 @@ export const poPageDynamicDetailLiteralsDefault = { selector: 'po-page-dynamic-detail', templateUrl: './po-page-dynamic-detail.component.html', providers: [PoPageDynamicService, PoPageDynamicDetailActionsService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoPageDynamicDetailComponent implements OnInit, OnDestroy { diff --git a/projects/templates/src/lib/components/po-page-dynamic-detail/samples/sample-po-page-dynamic-detail-user/sample-po-page-dynamic-detail-user.component.ts b/projects/templates/src/lib/components/po-page-dynamic-detail/samples/sample-po-page-dynamic-detail-user/sample-po-page-dynamic-detail-user.component.ts index cbf928f79b..d0140c6d45 100644 --- a/projects/templates/src/lib/components/po-page-dynamic-detail/samples/sample-po-page-dynamic-detail-user/sample-po-page-dynamic-detail-user.component.ts +++ b/projects/templates/src/lib/components/po-page-dynamic-detail/samples/sample-po-page-dynamic-detail-user/sample-po-page-dynamic-detail-user.component.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoBreadcrumb } from '@po-ui/ng-components'; import { PoPageDynamicDetailActions, PoPageDynamicDetailField } from '@po-ui/ng-templates'; @@ -6,6 +6,7 @@ import { PoPageDynamicDetailActions, PoPageDynamicDetailField } from '@po-ui/ng- @Component({ selector: 'sample-po-page-dynamic-detail-user', templateUrl: './sample-po-page-dynamic-detail-user.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPageDynamicDetailUserComponent { diff --git a/projects/templates/src/lib/components/po-page-dynamic-edit/po-page-dynamic-edit-actions.service.spec.ts b/projects/templates/src/lib/components/po-page-dynamic-edit/po-page-dynamic-edit-actions.service.spec.ts index 0beff9e334..84931cdd98 100644 --- a/projects/templates/src/lib/components/po-page-dynamic-edit/po-page-dynamic-edit-actions.service.spec.ts +++ b/projects/templates/src/lib/components/po-page-dynamic-edit/po-page-dynamic-edit-actions.service.spec.ts @@ -2,7 +2,7 @@ import { TestBed, tick, fakeAsync } from '@angular/core/testing'; import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { PoPageDynamicEditActionsService } from './po-page-dynamic-edit-actions.service'; -import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; describe('PoPageDynamicEditActions:', () => { let service: PoPageDynamicEditActionsService; @@ -19,7 +19,7 @@ describe('PoPageDynamicEditActions:', () => { imports: [], providers: [ PoPageDynamicEditActionsService, - provideHttpClient(withInterceptorsFromDi()), + provideHttpClient(withXhr(), withInterceptorsFromDi()), provideHttpClientTesting() ] }); diff --git a/projects/templates/src/lib/components/po-page-dynamic-edit/po-page-dynamic-edit.component.spec.ts b/projects/templates/src/lib/components/po-page-dynamic-edit/po-page-dynamic-edit.component.spec.ts index 835e3994f0..3a426aa7d4 100644 --- a/projects/templates/src/lib/components/po-page-dynamic-edit/po-page-dynamic-edit.component.spec.ts +++ b/projects/templates/src/lib/components/po-page-dynamic-edit/po-page-dynamic-edit.component.spec.ts @@ -1,9 +1,10 @@ -import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; import { provideHttpClientTesting } from '@angular/common/http/testing'; import { NO_ERRORS_SCHEMA } from '@angular/core'; import { ComponentFixture, fakeAsync, TestBed, tick, waitForAsync } from '@angular/core/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { FormControl, FormsModule, NgForm, Validators } from '@angular/forms'; -import { RouterTestingModule } from '@angular/router/testing'; import { of, throwError } from 'rxjs'; @@ -28,8 +29,12 @@ describe('PoPageDynamicEditComponent: ', () => { TestBed.configureTestingModule({ declarations: [PoPageDynamicEditComponent, PoDynamicFormStubComponent], schemas: [NO_ERRORS_SCHEMA], - imports: [FormsModule, RouterTestingModule.withRoutes([]), PoDialogModule], - providers: [provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting()] + imports: [FormsModule, RouterModule.forRoot([]), PoDialogModule], + providers: [ + provideLocationMocks(), + provideHttpClient(withXhr(), withInterceptorsFromDi()), + provideHttpClientTesting() + ] }).compileComponents(); })); diff --git a/projects/templates/src/lib/components/po-page-dynamic-edit/po-page-dynamic-edit.component.ts b/projects/templates/src/lib/components/po-page-dynamic-edit/po-page-dynamic-edit.component.ts index 96ccea58a1..28404b39b1 100644 --- a/projects/templates/src/lib/components/po-page-dynamic-edit/po-page-dynamic-edit.component.ts +++ b/projects/templates/src/lib/components/po-page-dynamic-edit/po-page-dynamic-edit.component.ts @@ -1,4 +1,14 @@ -import { Component, HostBinding, HostListener, Input, OnDestroy, OnInit, ViewChild, inject } from '@angular/core'; +import { + Component, + HostBinding, + HostListener, + Input, + OnDestroy, + OnInit, + ViewChild, + inject, + ChangeDetectionStrategy +} from '@angular/core'; import { ActivatedRoute, Router } from '@angular/router'; import { concat, EMPTY, Observable, of, Subscription, throwError } from 'rxjs'; @@ -204,6 +214,7 @@ export const poPageDynamicEditLiteralsDefault = { selector: 'po-page-dynamic-edit', templateUrl: './po-page-dynamic-edit.component.html', providers: [PoPageDynamicService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoPageDynamicEditComponent implements OnInit, OnDestroy { diff --git a/projects/templates/src/lib/components/po-page-dynamic-edit/samples/sample-po-page-dynamic-edit-basic/sample-po-page-dynamic-edit-basic.component.ts b/projects/templates/src/lib/components/po-page-dynamic-edit/samples/sample-po-page-dynamic-edit-basic/sample-po-page-dynamic-edit-basic.component.ts index 70e07fed44..9869330d74 100644 --- a/projects/templates/src/lib/components/po-page-dynamic-edit/samples/sample-po-page-dynamic-edit-basic/sample-po-page-dynamic-edit-basic.component.ts +++ b/projects/templates/src/lib/components/po-page-dynamic-edit/samples/sample-po-page-dynamic-edit-basic/sample-po-page-dynamic-edit-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-page-dynamic-edit-basic', templateUrl: './sample-po-page-dynamic-edit-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPageDynamicEditBasicComponent {} diff --git a/projects/templates/src/lib/components/po-page-dynamic-edit/samples/sample-po-page-dynamic-edit-user/sample-po-page-dynamic-edit-user.component.ts b/projects/templates/src/lib/components/po-page-dynamic-edit/samples/sample-po-page-dynamic-edit-user/sample-po-page-dynamic-edit-user.component.ts index c15a7255f9..002571af8f 100644 --- a/projects/templates/src/lib/components/po-page-dynamic-edit/samples/sample-po-page-dynamic-edit-user/sample-po-page-dynamic-edit-user.component.ts +++ b/projects/templates/src/lib/components/po-page-dynamic-edit/samples/sample-po-page-dynamic-edit-user/sample-po-page-dynamic-edit-user.component.ts @@ -1,4 +1,4 @@ -import { Component, ViewChild } from '@angular/core'; +import { Component, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { PoBreadcrumb, PoDynamicFormField } from '@po-ui/ng-components'; @@ -7,6 +7,7 @@ import { PoPageDynamicEditActions, PoPageDynamicEditComponent, PoPageDynamicEdit @Component({ selector: 'sample-po-page-dynamic-edit-user', templateUrl: './sample-po-page-dynamic-edit-user.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPageDynamicEditUserComponent { diff --git a/projects/templates/src/lib/components/po-page-dynamic-edit/test/po-dynamic-form-stub-component.ts b/projects/templates/src/lib/components/po-page-dynamic-edit/test/po-dynamic-form-stub-component.ts index ec07e20075..a2fb1c6bf2 100644 --- a/projects/templates/src/lib/components/po-page-dynamic-edit/test/po-dynamic-form-stub-component.ts +++ b/projects/templates/src/lib/components/po-page-dynamic-edit/test/po-dynamic-form-stub-component.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { NgForm } from '@angular/forms'; import { PoDynamicFormComponent } from '@po-ui/ng-components'; @@ -11,6 +11,7 @@ import { PoDynamicFormComponent } from '@po-ui/ng-components'; useClass: PoDynamicFormStubComponent } ], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoDynamicFormStubComponent { diff --git a/projects/templates/src/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter.component.spec.ts b/projects/templates/src/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter.component.spec.ts index 646677e451..a64d1be884 100644 --- a/projects/templates/src/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter.component.spec.ts +++ b/projects/templates/src/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter.component.spec.ts @@ -7,7 +7,7 @@ import { PoDynamicModule, PoFieldModule, PoModalModule } from '@po-ui/ng-compone import { PoAdvancedFilterBaseComponent } from './po-advanced-filter-base.component'; import { PoAdvancedFilterComponent } from './po-advanced-filter.component'; import { provideHttpClientTesting } from '@angular/common/http/testing'; -import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; describe('PoAdvancedFilterComponent', () => { let component: PoAdvancedFilterComponent; @@ -18,7 +18,7 @@ describe('PoAdvancedFilterComponent', () => { TestBed.configureTestingModule({ declarations: [PoAdvancedFilterComponent], imports: [FormsModule, PoDynamicModule, PoFieldModule, PoModalModule], - providers: [provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting()] + providers: [provideHttpClient(withXhr(), withInterceptorsFromDi()), provideHttpClientTesting()] }).compileComponents(); })); diff --git a/projects/templates/src/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter.component.ts b/projects/templates/src/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter.component.ts index d2a00e06de..aa5837bc71 100644 --- a/projects/templates/src/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter.component.ts +++ b/projects/templates/src/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter.component.ts @@ -1,4 +1,4 @@ -import { Component, OnDestroy, OnInit, ViewChild, inject } from '@angular/core'; +import { Component, OnDestroy, OnInit, ViewChild, inject, ChangeDetectionStrategy } from '@angular/core'; import { Subscription } from 'rxjs'; import { PoComboOption, PoDynamicFormComponent, PoLanguageService } from '@po-ui/ng-components'; @@ -21,6 +21,7 @@ import { PoAdvancedFilterBaseComponent } from './po-advanced-filter-base.compone @Component({ selector: 'po-advanced-filter', templateUrl: './po-advanced-filter.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoAdvancedFilterComponent extends PoAdvancedFilterBaseComponent implements OnDestroy, OnInit { diff --git a/projects/templates/src/lib/components/po-page-dynamic-search/po-page-dynamic-search-base.component.spec.ts b/projects/templates/src/lib/components/po-page-dynamic-search/po-page-dynamic-search-base.component.spec.ts index 57e9e50150..0e0b82fbda 100644 --- a/projects/templates/src/lib/components/po-page-dynamic-search/po-page-dynamic-search-base.component.spec.ts +++ b/projects/templates/src/lib/components/po-page-dynamic-search/po-page-dynamic-search-base.component.spec.ts @@ -2,7 +2,7 @@ import { expectPropertiesValues } from '../../util-test/util-expect.spec'; import { poLocaleDefault } from './../../../../../ui/src/lib/services/po-language/po-language.constant'; import { PoLanguageService } from './../../../../../ui/src/lib/services/po-language/po-language.service'; -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoThemeA11yEnum } from '@po-ui/ng-components'; import { convertToBoolean } from '../../utils/util'; import { PoPageDynamicSearchFilters } from './interfaces/po-page-dynamic-search-filters.interface'; @@ -16,6 +16,7 @@ import { @Component({ selector: 'mock-component', template: '', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) class MockComponent extends PoPageDynamicSearchBaseComponent { diff --git a/projects/templates/src/lib/components/po-page-dynamic-search/po-page-dynamic-search.component.spec.ts b/projects/templates/src/lib/components/po-page-dynamic-search/po-page-dynamic-search.component.spec.ts index b33cfadca3..78e5fb41ed 100644 --- a/projects/templates/src/lib/components/po-page-dynamic-search/po-page-dynamic-search.component.spec.ts +++ b/projects/templates/src/lib/components/po-page-dynamic-search/po-page-dynamic-search.component.spec.ts @@ -1,7 +1,7 @@ import { ComponentFixture, TestBed, fakeAsync, tick, waitForAsync } from '@angular/core/testing'; +import { provideLocationMocks } from '@angular/common/testing'; import { FormsModule } from '@angular/forms'; -import { RouterTestingModule } from '@angular/router/testing'; -import { Routes } from '@angular/router'; +import { Routes, RouterModule } from '@angular/router'; import { TitleCasePipe } from '@angular/common'; import { NO_ERRORS_SCHEMA, SimpleChanges } from '@angular/core'; @@ -12,7 +12,7 @@ import { PoAdvancedFilterComponent } from './po-advanced-filter/po-advanced-filt import { PoPageCustomizationModule } from '../../services/po-page-customization/po-page-customization.module'; import { expectBrowserLanguageMethod } from './../../util-test/util-expect.spec'; import { provideHttpClientTesting } from '@angular/common/http/testing'; -import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; export const routes: Routes = []; @@ -24,8 +24,13 @@ describe('PoPageDynamicSearchComponent:', () => { TestBed.configureTestingModule({ declarations: [PoPageDynamicSearchComponent, PoAdvancedFilterComponent], schemas: [NO_ERRORS_SCHEMA], - imports: [FormsModule, RouterTestingModule.withRoutes(routes), PoPageCustomizationModule, PoDynamicModule], - providers: [TitleCasePipe, provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting()] + imports: [FormsModule, RouterModule.forRoot(routes), PoPageCustomizationModule, PoDynamicModule], + providers: [ + provideLocationMocks(), + TitleCasePipe, + provideHttpClient(withXhr(), withInterceptorsFromDi()), + provideHttpClientTesting() + ] }).compileComponents(); })); diff --git a/projects/templates/src/lib/components/po-page-dynamic-search/po-page-dynamic-search.component.ts b/projects/templates/src/lib/components/po-page-dynamic-search/po-page-dynamic-search.component.ts index f7eb28f01d..3041dea4f4 100644 --- a/projects/templates/src/lib/components/po-page-dynamic-search/po-page-dynamic-search.component.ts +++ b/projects/templates/src/lib/components/po-page-dynamic-search/po-page-dynamic-search.component.ts @@ -7,7 +7,8 @@ import { OnInit, SimpleChanges, ViewChild, - inject + inject, + ChangeDetectionStrategy } from '@angular/core'; import { @@ -56,6 +57,7 @@ type UrlOrPoCustomizationFunction = string | (() => PoPageDynamicSearchOptions); @Component({ selector: 'po-page-dynamic-search', templateUrl: './po-page-dynamic-search.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoPageDynamicSearchComponent diff --git a/projects/templates/src/lib/components/po-page-dynamic-search/samples/sample-po-page-dynamic-search-basic/sample-po-page-dynamic-search-basic.component.ts b/projects/templates/src/lib/components/po-page-dynamic-search/samples/sample-po-page-dynamic-search-basic/sample-po-page-dynamic-search-basic.component.ts index 30a26531cb..151b4b11e9 100644 --- a/projects/templates/src/lib/components/po-page-dynamic-search/samples/sample-po-page-dynamic-search-basic/sample-po-page-dynamic-search-basic.component.ts +++ b/projects/templates/src/lib/components/po-page-dynamic-search/samples/sample-po-page-dynamic-search-basic/sample-po-page-dynamic-search-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-page-dynamic-search-basic', templateUrl: './sample-po-page-dynamic-search-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPageDynamicSearchBasicComponent {} diff --git a/projects/templates/src/lib/components/po-page-dynamic-search/samples/sample-po-page-dynamic-search-hiring-processes/sample-po-page-dynamic-search-hiring-processes.component.ts b/projects/templates/src/lib/components/po-page-dynamic-search/samples/sample-po-page-dynamic-search-hiring-processes/sample-po-page-dynamic-search-hiring-processes.component.ts index e4ca6ba8e6..7d96e7e44e 100644 --- a/projects/templates/src/lib/components/po-page-dynamic-search/samples/sample-po-page-dynamic-search-hiring-processes/sample-po-page-dynamic-search-hiring-processes.component.ts +++ b/projects/templates/src/lib/components/po-page-dynamic-search/samples/sample-po-page-dynamic-search-hiring-processes/sample-po-page-dynamic-search-hiring-processes.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, inject } from '@angular/core'; +import { Component, OnInit, inject, ChangeDetectionStrategy } from '@angular/core'; import { Router } from '@angular/router'; import { PoPageDynamicSearchLiterals, PoPageDynamicSearchFilters } from '@po-ui/ng-templates'; @@ -18,6 +18,7 @@ import { SamplePoPageDynamicSearchHiringProcessesService } from './sample-po-pag selector: 'sample-po-page-dynamic-search-hiring-processes', templateUrl: './sample-po-page-dynamic-search-hiring-processes.component.html', providers: [SamplePoPageDynamicSearchHiringProcessesService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPageDynamicSearchHiringProcessesComponent implements OnInit { diff --git a/projects/templates/src/lib/components/po-page-dynamic-table/po-page-dynamic-table-actions.service.spec.ts b/projects/templates/src/lib/components/po-page-dynamic-table/po-page-dynamic-table-actions.service.spec.ts index 6429a4f21f..7cb1906514 100644 --- a/projects/templates/src/lib/components/po-page-dynamic-table/po-page-dynamic-table-actions.service.spec.ts +++ b/projects/templates/src/lib/components/po-page-dynamic-table/po-page-dynamic-table-actions.service.spec.ts @@ -1,7 +1,7 @@ import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { PoPageDynamicTableActionsService } from './po-page-dynamic-table-actions.service'; -import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; describe('PoPageDynamicTableActionsService:', () => { let service: PoPageDynamicTableActionsService; @@ -12,7 +12,7 @@ describe('PoPageDynamicTableActionsService:', () => { imports: [], providers: [ PoPageDynamicTableActionsService, - provideHttpClient(withInterceptorsFromDi()), + provideHttpClient(withXhr(), withInterceptorsFromDi()), provideHttpClientTesting() ] }); diff --git a/projects/templates/src/lib/components/po-page-dynamic-table/po-page-dynamic-table.component.spec.ts b/projects/templates/src/lib/components/po-page-dynamic-table/po-page-dynamic-table.component.spec.ts index c9fac2752f..0a6309f841 100644 --- a/projects/templates/src/lib/components/po-page-dynamic-table/po-page-dynamic-table.component.spec.ts +++ b/projects/templates/src/lib/components/po-page-dynamic-table/po-page-dynamic-table.component.spec.ts @@ -1,8 +1,9 @@ import { provideHttpClientTesting } from '@angular/common/http/testing'; import { NO_ERRORS_SCHEMA } from '@angular/core'; import { ComponentFixture, fakeAsync, TestBed, tick, waitForAsync } from '@angular/core/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { FormsModule } from '@angular/forms'; -import { RouterTestingModule } from '@angular/router/testing'; import { EMPTY, of } from 'rxjs'; @@ -19,7 +20,7 @@ import { expectPropertiesValues } from '../../util-test/util-expect.spec'; import { PoUtils as utilsFunctions } from '../../utils/util'; import { PoPageDynamicDetailComponent } from '../po-page-dynamic-detail/po-page-dynamic-detail.component'; -import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; import { PoPageDynamicTableBeforeRemoveAll } from './interfaces/po-page-dynamic-table-before-remove-all.interface'; import { PoPageDynamicTableBeforeRemove } from './interfaces/po-page-dynamic-table-before-remove.interface'; import { PoPageDynamicTableComponent } from './po-page-dynamic-table.component'; @@ -32,8 +33,12 @@ describe('PoPageDynamicTableComponent:', () => { TestBed.configureTestingModule({ declarations: [PoPageDynamicTableComponent], schemas: [NO_ERRORS_SCHEMA], - imports: [FormsModule, RouterTestingModule.withRoutes([]), PoNotificationModule, PoDialogModule], - providers: [provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting()] + imports: [FormsModule, RouterModule.forRoot([]), PoNotificationModule, PoDialogModule], + providers: [ + provideLocationMocks(), + provideHttpClient(withXhr(), withInterceptorsFromDi()), + provideHttpClientTesting() + ] }).compileComponents(); })); diff --git a/projects/templates/src/lib/components/po-page-dynamic-table/po-page-dynamic-table.component.ts b/projects/templates/src/lib/components/po-page-dynamic-table/po-page-dynamic-table.component.ts index 9699d1079b..cd65ce2630 100644 --- a/projects/templates/src/lib/components/po-page-dynamic-table/po-page-dynamic-table.component.ts +++ b/projects/templates/src/lib/components/po-page-dynamic-table/po-page-dynamic-table.component.ts @@ -1,4 +1,13 @@ -import { Component, HostBinding, HostListener, Input, OnDestroy, OnInit, inject } from '@angular/core'; +import { + Component, + HostBinding, + HostListener, + Input, + OnDestroy, + OnInit, + inject, + ChangeDetectionStrategy +} from '@angular/core'; import { ActivatedRoute, Route, Router } from '@angular/router'; import { EMPTY, Observable, Subscription, of } from 'rxjs'; @@ -160,6 +169,7 @@ type UrlOrPoCustomizationFunction = string | (() => PoPageDynamicTableOptions); selector: 'po-page-dynamic-table', templateUrl: './po-page-dynamic-table.component.html', providers: [PoPageDynamicService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoPageDynamicTableComponent extends PoPageDynamicListBaseComponent implements OnInit, OnDestroy { diff --git a/projects/templates/src/lib/components/po-page-dynamic-table/samples/sample-po-page-dynamic-table-basic/sample-po-page-dynamic-table-basic.component.ts b/projects/templates/src/lib/components/po-page-dynamic-table/samples/sample-po-page-dynamic-table-basic/sample-po-page-dynamic-table-basic.component.ts index 0186b7bfab..502fecdfe5 100644 --- a/projects/templates/src/lib/components/po-page-dynamic-table/samples/sample-po-page-dynamic-table-basic/sample-po-page-dynamic-table-basic.component.ts +++ b/projects/templates/src/lib/components/po-page-dynamic-table/samples/sample-po-page-dynamic-table-basic/sample-po-page-dynamic-table-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-page-dynamic-table-basic', templateUrl: './sample-po-page-dynamic-table-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPageDynamicTableBasicComponent {} diff --git a/projects/templates/src/lib/components/po-page-dynamic-table/samples/sample-po-page-dynamic-table-drag-and-drop/sample-po-page-dynamic-table-drag-and-drop.component.ts b/projects/templates/src/lib/components/po-page-dynamic-table/samples/sample-po-page-dynamic-table-drag-and-drop/sample-po-page-dynamic-table-drag-and-drop.component.ts index e883dd0dad..a6f30eed10 100644 --- a/projects/templates/src/lib/components/po-page-dynamic-table/samples/sample-po-page-dynamic-table-drag-and-drop/sample-po-page-dynamic-table-drag-and-drop.component.ts +++ b/projects/templates/src/lib/components/po-page-dynamic-table/samples/sample-po-page-dynamic-table-drag-and-drop/sample-po-page-dynamic-table-drag-and-drop.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-page-dynamic-table-drag-and-drop', templateUrl: './sample-po-page-dynamic-table-drag-and-drop.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPageDynamicTableDragAndDropComponent { diff --git a/projects/templates/src/lib/components/po-page-dynamic-table/samples/sample-po-page-dynamic-table-hotels/sample-po-page-dynamic-table-hotels.component.ts b/projects/templates/src/lib/components/po-page-dynamic-table/samples/sample-po-page-dynamic-table-hotels/sample-po-page-dynamic-table-hotels.component.ts index 7729c75f04..e74080549e 100644 --- a/projects/templates/src/lib/components/po-page-dynamic-table/samples/sample-po-page-dynamic-table-hotels/sample-po-page-dynamic-table-hotels.component.ts +++ b/projects/templates/src/lib/components/po-page-dynamic-table/samples/sample-po-page-dynamic-table-hotels/sample-po-page-dynamic-table-hotels.component.ts @@ -1,4 +1,4 @@ -import { Component, ViewChild } from '@angular/core'; +import { Component, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { PoBreadcrumb, PoDynamicViewField, PoModalComponent } from '@po-ui/ng-components'; import { @@ -10,6 +10,7 @@ import { @Component({ selector: 'sample-po-page-dynamic-table-hotels', templateUrl: './sample-po-page-dynamic-table-hotels.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPageDynamicTableHotelsComponent { diff --git a/projects/templates/src/lib/components/po-page-dynamic-table/samples/sample-po-page-dynamic-table-people/sample-po-page-dynamic-table-people.component.ts b/projects/templates/src/lib/components/po-page-dynamic-table/samples/sample-po-page-dynamic-table-people/sample-po-page-dynamic-table-people.component.ts index 5c5ef7ecf3..6aedab0bdc 100644 --- a/projects/templates/src/lib/components/po-page-dynamic-table/samples/sample-po-page-dynamic-table-people/sample-po-page-dynamic-table-people.component.ts +++ b/projects/templates/src/lib/components/po-page-dynamic-table/samples/sample-po-page-dynamic-table-people/sample-po-page-dynamic-table-people.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-page-dynamic-table-people', templateUrl: './sample-po-page-dynamic-table-people.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPageDynamicTablePeopleComponent { diff --git a/projects/templates/src/lib/components/po-page-dynamic-table/samples/sample-po-page-dynamic-table-users/sample-po-page-dynamic-table-users.component.ts b/projects/templates/src/lib/components/po-page-dynamic-table/samples/sample-po-page-dynamic-table-users/sample-po-page-dynamic-table-users.component.ts index 061bbdcc7b..8389c1e09d 100644 --- a/projects/templates/src/lib/components/po-page-dynamic-table/samples/sample-po-page-dynamic-table-users/sample-po-page-dynamic-table-users.component.ts +++ b/projects/templates/src/lib/components/po-page-dynamic-table/samples/sample-po-page-dynamic-table-users/sample-po-page-dynamic-table-users.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, ViewChild, inject } from '@angular/core'; +import { Component, OnInit, ViewChild, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoBreadcrumb, PoDynamicViewField, PoModalComponent } from '@po-ui/ng-components'; @@ -15,6 +15,7 @@ import { SamplePoPageDynamicTableUsersService } from './sample-po-page-dynamic-t selector: 'sample-po-page-dynamic-table-users', templateUrl: './sample-po-page-dynamic-table-users.component.html', providers: [SamplePoPageDynamicTableUsersService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPageDynamicTableUsersComponent implements OnInit { diff --git a/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-base.component.spec.ts b/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-base.component.spec.ts index e9efdc7ac6..cc318a6762 100644 --- a/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-base.component.spec.ts +++ b/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-base.component.spec.ts @@ -6,7 +6,7 @@ import { throwError } from 'rxjs'; import { getObservable } from '../../util-test/util-expect.spec'; -import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; import { PoStepperOrientation, PoThemeA11yEnum } from '@po-ui/ng-components'; import { expectPropertiesValues } from './../../util-test/util-expect.spec'; import { PoJobSchedulerInternal } from './interfaces/po-job-scheduler-internal.interface'; @@ -21,7 +21,11 @@ describe('PoPageJobSchedulerBaseComponent:', () => { beforeEach(() => { TestBed.configureTestingModule({ imports: [], - providers: [PoPageJobSchedulerService, provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting()] + providers: [ + PoPageJobSchedulerService, + provideHttpClient(withXhr(), withInterceptorsFromDi()), + provideHttpClientTesting() + ] }); serviceJobScheduler = TestBed.inject(PoPageJobSchedulerService); diff --git a/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-execution/po-page-job-scheduler-execution.component.spec.ts b/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-execution/po-page-job-scheduler-execution.component.spec.ts index 190e27568c..79777b774f 100644 --- a/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-execution/po-page-job-scheduler-execution.component.spec.ts +++ b/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-execution/po-page-job-scheduler-execution.component.spec.ts @@ -1,5 +1,6 @@ import { ComponentFixture, fakeAsync, TestBed, tick, waitForAsync } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { throwError } from 'rxjs'; @@ -9,7 +10,7 @@ import { getObservable } from '../../../util-test/util-expect.spec'; import { PoPageJobSchedulerExecutionComponent } from './po-page-job-scheduler-execution.component'; import { PoPageJobSchedulerModule } from '../po-page-job-scheduler.module'; import { provideHttpClientTesting } from '@angular/common/http/testing'; -import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; describe('PoPageJobSchedulerExecutionComponent:', () => { let component: PoPageJobSchedulerExecutionComponent; @@ -19,8 +20,12 @@ describe('PoPageJobSchedulerExecutionComponent:', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ - imports: [RouterTestingModule.withRoutes([]), PoPageJobSchedulerModule], - providers: [provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting()] + imports: [RouterModule.forRoot([]), PoPageJobSchedulerModule], + providers: [ + provideLocationMocks(), + provideHttpClient(withXhr(), withInterceptorsFromDi()), + provideHttpClientTesting() + ] }).compileComponents(); })); diff --git a/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-execution/po-page-job-scheduler-execution.component.ts b/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-execution/po-page-job-scheduler-execution.component.ts index becedb0b79..b82e2f8f4b 100644 --- a/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-execution/po-page-job-scheduler-execution.component.ts +++ b/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-execution/po-page-job-scheduler-execution.component.ts @@ -7,7 +7,8 @@ import { Output, TemplateRef, ViewChild, - inject + inject, + ChangeDetectionStrategy } from '@angular/core'; import { NgForm } from '@angular/forms'; @@ -21,6 +22,7 @@ import { PoPageJobSchedulerService } from '../po-page-job-scheduler.service'; @Component({ selector: 'po-page-job-scheduler-execution', templateUrl: 'po-page-job-scheduler-execution.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoPageJobSchedulerExecutionComponent implements OnInit, AfterViewInit { diff --git a/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-lookup.service.spec.ts b/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-lookup.service.spec.ts index 6cafe3b1cd..46d882df36 100644 --- a/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-lookup.service.spec.ts +++ b/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-lookup.service.spec.ts @@ -3,7 +3,7 @@ import { TestBed } from '@angular/core/testing'; import { PoPageJobSchedulerLookupService } from './po-page-job-scheduler-lookup.service'; import { PoPageJobSchedulerService } from './po-page-job-scheduler.service'; -import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; describe('PoPageJobSchedulerLookupService:', () => { let poPageJobSchedulerLookupService: PoPageJobSchedulerLookupService; @@ -14,7 +14,7 @@ describe('PoPageJobSchedulerLookupService:', () => { providers: [ PoPageJobSchedulerLookupService, PoPageJobSchedulerService, - provideHttpClient(withInterceptorsFromDi()), + provideHttpClient(withXhr(), withInterceptorsFromDi()), provideHttpClientTesting() ] }); diff --git a/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-parameters/po-page-job-scheduler-parameters.component.spec.ts b/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-parameters/po-page-job-scheduler-parameters.component.spec.ts index ebc0bda66b..2aa385b74a 100644 --- a/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-parameters/po-page-job-scheduler-parameters.component.spec.ts +++ b/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-parameters/po-page-job-scheduler-parameters.component.spec.ts @@ -1,12 +1,13 @@ import { provideHttpClientTesting } from '@angular/common/http/testing'; import { ComponentFixture, fakeAsync, TestBed, tick, waitForAsync } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { getObservable } from '../../../util-test/util-expect.spec'; import { PoPageJobSchedulerModule } from '../po-page-job-scheduler.module'; import { PoPageJobSchedulerParametersComponent } from './po-page-job-scheduler-parameters.component'; -import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; describe('PoPageJobSchedulerParametersComponent:', () => { let component: PoPageJobSchedulerParametersComponent; @@ -16,8 +17,12 @@ describe('PoPageJobSchedulerParametersComponent:', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ - imports: [RouterTestingModule.withRoutes([]), PoPageJobSchedulerModule], - providers: [provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting()] + imports: [RouterModule.forRoot([]), PoPageJobSchedulerModule], + providers: [ + provideLocationMocks(), + provideHttpClient(withXhr(), withInterceptorsFromDi()), + provideHttpClientTesting() + ] }).compileComponents(); })); diff --git a/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-parameters/po-page-job-scheduler-parameters.component.ts b/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-parameters/po-page-job-scheduler-parameters.component.ts index 9c109bfae1..9d98b3c4bd 100644 --- a/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-parameters/po-page-job-scheduler-parameters.component.ts +++ b/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-parameters/po-page-job-scheduler-parameters.component.ts @@ -1,4 +1,12 @@ -import { AfterViewInit, Component, EventEmitter, Input, Output, ViewChild } from '@angular/core'; +import { + AfterViewInit, + Component, + EventEmitter, + Input, + Output, + ViewChild, + ChangeDetectionStrategy +} from '@angular/core'; import { NgForm } from '@angular/forms'; import { PoDynamicFormField } from '@po-ui/ng-components'; @@ -6,6 +14,7 @@ import { PoDynamicFormField } from '@po-ui/ng-components'; @Component({ selector: 'po-page-job-scheduler-parameters', templateUrl: 'po-page-job-scheduler-parameters.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoPageJobSchedulerParametersComponent implements AfterViewInit { diff --git a/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-page-job-scheduler-summary.component.html b/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-page-job-scheduler-summary.component.html index 9aeaf7aa43..3f75e7bfce 100644 --- a/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-page-job-scheduler-summary.component.html +++ b/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-page-job-scheduler-summary.component.html @@ -61,6 +61,6 @@ } @if (jobSchedulerSummaryTemplate) {
    - +
    } diff --git a/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-page-job-scheduler-summary.component.spec.ts b/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-page-job-scheduler-summary.component.spec.ts index 4d8c62f061..8619dcdba1 100644 --- a/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-page-job-scheduler-summary.component.spec.ts +++ b/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-page-job-scheduler-summary.component.spec.ts @@ -1,13 +1,14 @@ import { provideHttpClientTesting } from '@angular/common/http/testing'; import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { PoLanguageService, poLocaleDefault } from '@po-ui/ng-components'; import { poPageJobSchedulerLiteralsDefault } from '../po-page-job-scheduler-literals'; import { PoPageJobSchedulerModule } from '../po-page-job-scheduler.module'; import { PoPageJobSchedulerSummaryComponent } from './po-page-job-scheduler-summary.component'; -import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; describe('PoPageJobSchedulerSummaryComponent:', () => { const languageService: PoLanguageService = new PoLanguageService(); @@ -19,8 +20,12 @@ describe('PoPageJobSchedulerSummaryComponent:', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ - imports: [RouterTestingModule.withRoutes([]), PoPageJobSchedulerModule], - providers: [provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting()] + imports: [RouterModule.forRoot([]), PoPageJobSchedulerModule], + providers: [ + provideLocationMocks(), + provideHttpClient(withXhr(), withInterceptorsFromDi()), + provideHttpClientTesting() + ] }).compileComponents(); })); diff --git a/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-page-job-scheduler-summary.component.ts b/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-page-job-scheduler-summary.component.ts index e016d21786..d524604597 100644 --- a/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-page-job-scheduler-summary.component.ts +++ b/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-page-job-scheduler-summary.component.ts @@ -1,5 +1,5 @@ import { DatePipe } from '@angular/common'; -import { Component, Input, OnInit, inject } from '@angular/core'; +import { Component, Input, OnInit, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoDynamicViewField, PoInfoOrientation } from '@po-ui/ng-components'; @@ -8,6 +8,7 @@ import { PoJobSchedulerInternal } from '../interfaces/po-job-scheduler-internal. @Component({ selector: 'po-page-job-scheduler-summary', templateUrl: 'po-page-job-scheduler-summary.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoPageJobSchedulerSummaryComponent implements OnInit { diff --git a/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler.component.html b/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler.component.html index c4ef0b9368..b75ac0839c 100644 --- a/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler.component.html +++ b/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler.component.html @@ -62,7 +62,7 @@ @for (template of parametersTemplate; track template; let index = $index) {
    - +
    } diff --git a/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler.component.spec.ts b/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler.component.spec.ts index c28bcf71a4..b2673cf804 100644 --- a/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler.component.spec.ts +++ b/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler.component.spec.ts @@ -1,6 +1,7 @@ import { QueryList } from '@angular/core'; import { ComponentFixture, discardPeriodicTasks, fakeAsync, TestBed, tick, waitForAsync } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { NgForm } from '@angular/forms'; import { Observable, of, throwError } from 'rxjs'; @@ -14,7 +15,7 @@ import { PoJobSchedulerParametersTemplateDirective } from './po-page-job-schedul import { PoPageJobSchedulerComponent } from './po-page-job-scheduler.component'; import { PoPageJobSchedulerModule } from './po-page-job-scheduler.module'; import { PoStepperOrientation, PoStepperStatus } from '@po-ui/ng-components'; -import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; describe('PoPageJobSchedulerComponent:', () => { let component: PoPageJobSchedulerComponent; @@ -22,8 +23,12 @@ describe('PoPageJobSchedulerComponent:', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ - imports: [RouterTestingModule.withRoutes([]), PoPageJobSchedulerModule], - providers: [provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting()] + imports: [RouterModule.forRoot([]), PoPageJobSchedulerModule], + providers: [ + provideLocationMocks(), + provideHttpClient(withXhr(), withInterceptorsFromDi()), + provideHttpClientTesting() + ] }).compileComponents(); })); diff --git a/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler.component.ts b/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler.component.ts index 47be4d6f70..475e3ea74f 100644 --- a/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler.component.ts +++ b/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler.component.ts @@ -7,7 +7,8 @@ import { QueryList, ViewChild, ViewEncapsulation, - inject + inject, + ChangeDetectionStrategy } from '@angular/core'; import { NgForm } from '@angular/forms'; import { ActivatedRoute } from '@angular/router'; @@ -60,6 +61,7 @@ import { PoPageJobSchedulerService } from './po-page-job-scheduler.service'; templateUrl: './po-page-job-scheduler.component.html', encapsulation: ViewEncapsulation.None, styles: [], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoPageJobSchedulerComponent extends PoPageJobSchedulerBaseComponent implements OnInit, AfterContentInit { diff --git a/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler.service.spec.ts b/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler.service.spec.ts index 480ebca98a..7d9a4c6ed8 100644 --- a/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler.service.spec.ts +++ b/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler.service.spec.ts @@ -9,7 +9,7 @@ import { PoUtils as utilsFunctions } from '../../utils/util'; import { PoJobScheduler } from './interfaces/po-job-scheduler.interface'; import { PoJobSchedulerInternal } from './interfaces/po-job-scheduler-internal.interface'; import { PoPageJobSchedulerService } from './po-page-job-scheduler.service'; -import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; describe('PoPageJobSchedulerService:', () => { let poPageJobSchedulerService: PoPageJobSchedulerService; @@ -18,7 +18,11 @@ describe('PoPageJobSchedulerService:', () => { beforeEach(() => { TestBed.configureTestingModule({ imports: [], - providers: [PoPageJobSchedulerService, provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting()] + providers: [ + PoPageJobSchedulerService, + provideHttpClient(withXhr(), withInterceptorsFromDi()), + provideHttpClientTesting() + ] }); poPageJobSchedulerService = TestBed.inject(PoPageJobSchedulerService); diff --git a/projects/templates/src/lib/components/po-page-job-scheduler/samples/sample-po-page-job-scheduler-background-process/sample-po-page-job-scheduler-background-process.component.ts b/projects/templates/src/lib/components/po-page-job-scheduler/samples/sample-po-page-job-scheduler-background-process/sample-po-page-job-scheduler-background-process.component.ts index a0e6ad7895..b5ac08e854 100644 --- a/projects/templates/src/lib/components/po-page-job-scheduler/samples/sample-po-page-job-scheduler-background-process/sample-po-page-job-scheduler-background-process.component.ts +++ b/projects/templates/src/lib/components/po-page-job-scheduler/samples/sample-po-page-job-scheduler-background-process/sample-po-page-job-scheduler-background-process.component.ts @@ -1,10 +1,11 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoBreadcrumb } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-page-job-scheduler-background-process', templateUrl: './sample-po-page-job-scheduler-background-process.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPageJobSchedulerBackgroundProcessComponent { diff --git a/projects/templates/src/lib/components/po-page-job-scheduler/samples/sample-po-page-job-scheduler-directives/sample-po-page-job-scheduler-directives.component.html b/projects/templates/src/lib/components/po-page-job-scheduler/samples/sample-po-page-job-scheduler-directives/sample-po-page-job-scheduler-directives.component.html index 92927f81ac..a0b031ac51 100644 --- a/projects/templates/src/lib/components/po-page-job-scheduler/samples/sample-po-page-job-scheduler-directives/sample-po-page-job-scheduler-directives.component.html +++ b/projects/templates/src/lib/components/po-page-job-scheduler/samples/sample-po-page-job-scheduler-directives/sample-po-page-job-scheduler-directives.component.html @@ -5,8 +5,8 @@ >

    Etapa 1

    diff --git a/projects/templates/src/lib/components/po-page-job-scheduler/samples/sample-po-page-job-scheduler-directives/sample-po-page-job-scheduler-directives.component.ts b/projects/templates/src/lib/components/po-page-job-scheduler/samples/sample-po-page-job-scheduler-directives/sample-po-page-job-scheduler-directives.component.ts index 60409c0a06..85c15adf50 100644 --- a/projects/templates/src/lib/components/po-page-job-scheduler/samples/sample-po-page-job-scheduler-directives/sample-po-page-job-scheduler-directives.component.ts +++ b/projects/templates/src/lib/components/po-page-job-scheduler/samples/sample-po-page-job-scheduler-directives/sample-po-page-job-scheduler-directives.component.ts @@ -1,10 +1,11 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { NgForm } from '@angular/forms'; import { PoDynamicFormField, PoDynamicViewField } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-page-job-scheduler-directives', templateUrl: './sample-po-page-job-scheduler-directives.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPageJobSchedulerDirectivesComponent { diff --git a/projects/templates/src/lib/components/po-page-login/po-page-login-popover/po-page-login-popover.component.html b/projects/templates/src/lib/components/po-page-login/po-page-login-popover/po-page-login-popover.component.html index 2ec1b81318..d96e280fd6 100644 --- a/projects/templates/src/lib/components/po-page-login/po-page-login-popover/po-page-login-popover.component.html +++ b/projects/templates/src/lib/components/po-page-login/po-page-login-popover/po-page-login-popover.component.html @@ -11,7 +11,7 @@

    {{ literals?.ifYouTryHarder }} {{ literals?.yourUserWillBeBlocked }}


    diff --git a/projects/templates/src/lib/components/po-page-login/po-page-login-popover/po-page-login-popover.component.spec.ts b/projects/templates/src/lib/components/po-page-login/po-page-login-popover/po-page-login-popover.component.spec.ts index 6f30d8e997..002392604e 100644 --- a/projects/templates/src/lib/components/po-page-login/po-page-login-popover/po-page-login-popover.component.spec.ts +++ b/projects/templates/src/lib/components/po-page-login/po-page-login-popover/po-page-login-popover.component.spec.ts @@ -1,6 +1,7 @@ import { provideNgReflectAttributes } from '@angular/core'; import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { PoPageLoginPopoverComponent } from './po-page-login-popover.component'; @@ -13,9 +14,9 @@ describe('ThPageLoginPopoverComponent: ', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ - imports: [RouterTestingModule.withRoutes([])], + imports: [RouterModule.forRoot([])], declarations: [PoI18nPipe, PoPageLoginPopoverComponent], - providers: [provideNgReflectAttributes()] + providers: [provideLocationMocks(), provideNgReflectAttributes()] }).compileComponents(); })); diff --git a/projects/templates/src/lib/components/po-page-login/po-page-login-popover/po-page-login-popover.component.ts b/projects/templates/src/lib/components/po-page-login/po-page-login-popover/po-page-login-popover.component.ts index 62aa14a515..3bc5af8e6c 100644 --- a/projects/templates/src/lib/components/po-page-login/po-page-login-popover/po-page-login-popover.component.ts +++ b/projects/templates/src/lib/components/po-page-login/po-page-login-popover/po-page-login-popover.component.ts @@ -1,4 +1,4 @@ -import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { Component, EventEmitter, Input, Output, ChangeDetectionStrategy } from '@angular/core'; import { isExternalLink, isTypeof } from '../../../utils/util'; @@ -8,6 +8,7 @@ import { PoPageLoginRecovery } from '../interfaces/po-page-login-recovery.interf @Component({ selector: 'po-page-login-popover', templateUrl: './po-page-login-popover.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) diff --git a/projects/templates/src/lib/components/po-page-login/po-page-login.component.spec.ts b/projects/templates/src/lib/components/po-page-login/po-page-login.component.spec.ts index 2bb19cde5e..c0ad14e183 100644 --- a/projects/templates/src/lib/components/po-page-login/po-page-login.component.spec.ts +++ b/projects/templates/src/lib/components/po-page-login/po-page-login.component.spec.ts @@ -1,8 +1,9 @@ import { ComponentFixture, fakeAsync, TestBed, tick, waitForAsync } from '@angular/core/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { FormsModule } from '@angular/forms'; import { HttpClient, HttpHandler } from '@angular/common/http'; import { NO_ERRORS_SCHEMA, provideNgReflectAttributes } from '@angular/core'; -import { RouterTestingModule } from '@angular/router/testing'; import { PoButtonComponent, @@ -37,7 +38,7 @@ describe('PoPageLoginComponent: ', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ - imports: [FormsModule, OverlayModule, RouterTestingModule.withRoutes([])], + imports: [FormsModule, OverlayModule, RouterModule.forRoot([])], declarations: [ PoButtonComponent, PoComboComponent, @@ -48,7 +49,7 @@ describe('PoPageLoginComponent: ', () => { PoSelectComponent, PoSwitchComponent ], - providers: [HttpClient, HttpHandler, PoPageLoginService, provideNgReflectAttributes()], + providers: [provideLocationMocks(), HttpClient, HttpHandler, PoPageLoginService, provideNgReflectAttributes()], schemas: [NO_ERRORS_SCHEMA] }).compileComponents(); })); diff --git a/projects/templates/src/lib/components/po-page-login/po-page-login.component.ts b/projects/templates/src/lib/components/po-page-login/po-page-login.component.ts index 5e1f1ca73b..c45fb6fc9e 100644 --- a/projects/templates/src/lib/components/po-page-login/po-page-login.component.ts +++ b/projects/templates/src/lib/components/po-page-login/po-page-login.component.ts @@ -7,7 +7,8 @@ import { OnInit, ViewChild, ViewContainerRef, - inject + inject, + ChangeDetectionStrategy } from '@angular/core'; import { AbstractControl, NgForm } from '@angular/forms'; import { ActivatedRoute, Router } from '@angular/router'; @@ -57,6 +58,7 @@ import { PoPageLoginService } from './po-page-login.service'; @Component({ selector: 'po-page-login', templateUrl: './po-page-login.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoPageLoginComponent extends PoPageLoginBaseComponent implements AfterViewChecked, OnInit { diff --git a/projects/templates/src/lib/components/po-page-login/po-page-login.service.spec.ts b/projects/templates/src/lib/components/po-page-login/po-page-login.service.spec.ts index e331d3bc24..6d41d585fd 100644 --- a/projects/templates/src/lib/components/po-page-login/po-page-login.service.spec.ts +++ b/projects/templates/src/lib/components/po-page-login/po-page-login.service.spec.ts @@ -3,7 +3,7 @@ import { TestBed } from '@angular/core/testing'; import { PoPageLoginAuthenticationType } from './enums/po-page-login-authentication-type.enum'; import { PoPageLoginService } from './po-page-login.service'; -import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; describe('PoPageLoginService:', () => { let httpMock: HttpTestingController; @@ -12,7 +12,11 @@ describe('PoPageLoginService:', () => { beforeEach(() => { TestBed.configureTestingModule({ imports: [], - providers: [PoPageLoginService, provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting()] + providers: [ + PoPageLoginService, + provideHttpClient(withXhr(), withInterceptorsFromDi()), + provideHttpClientTesting() + ] }); poPageLoginService = TestBed.inject(PoPageLoginService); diff --git a/projects/templates/src/lib/components/po-page-login/samples/sample-po-page-login-automatic-service/sample-po-page-login-automatic-service.component.ts b/projects/templates/src/lib/components/po-page-login/samples/sample-po-page-login-automatic-service/sample-po-page-login-automatic-service.component.ts index bff914fdc0..355f13cc68 100644 --- a/projects/templates/src/lib/components/po-page-login/samples/sample-po-page-login-automatic-service/sample-po-page-login-automatic-service.component.ts +++ b/projects/templates/src/lib/components/po-page-login/samples/sample-po-page-login-automatic-service/sample-po-page-login-automatic-service.component.ts @@ -1,10 +1,11 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoLanguage } from '@po-ui/ng-components'; import { PoPageLoginLiterals } from '@po-ui/ng-templates'; @Component({ selector: 'sample-po-page-login-automatic-service', templateUrl: './sample-po-page-login-automatic-service.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPageLoginAutomaticServiceComponent { diff --git a/projects/templates/src/lib/components/po-page-login/samples/sample-po-page-login-basic/sample-po-page-login-basic.component.ts b/projects/templates/src/lib/components/po-page-login/samples/sample-po-page-login-basic/sample-po-page-login-basic.component.ts index 5d85d408c7..9d00c1e3b9 100644 --- a/projects/templates/src/lib/components/po-page-login/samples/sample-po-page-login-basic/sample-po-page-login-basic.component.ts +++ b/projects/templates/src/lib/components/po-page-login/samples/sample-po-page-login-basic/sample-po-page-login-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-page-login-basic', templateUrl: './sample-po-page-login-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPageLoginBasicComponent {} diff --git a/projects/templates/src/lib/components/po-page-login/samples/sample-po-page-login-human-resources/sample-po-page-login-human-resources.component.ts b/projects/templates/src/lib/components/po-page-login/samples/sample-po-page-login-human-resources/sample-po-page-login-human-resources.component.ts index e90e86442e..0d4ef62056 100644 --- a/projects/templates/src/lib/components/po-page-login/samples/sample-po-page-login-human-resources/sample-po-page-login-human-resources.component.ts +++ b/projects/templates/src/lib/components/po-page-login/samples/sample-po-page-login-human-resources/sample-po-page-login-human-resources.component.ts @@ -1,4 +1,4 @@ -import { Component, OnDestroy, OnInit, inject } from '@angular/core'; +import { Component, OnDestroy, OnInit, inject, ChangeDetectionStrategy } from '@angular/core'; import { Subscription } from 'rxjs'; @@ -14,6 +14,7 @@ import { @Component({ selector: 'sample-po-page-login-human-resources', templateUrl: './sample-po-page-login-human-resources.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPageLoginHumanResourcesComponent implements OnDestroy, OnInit { diff --git a/projects/templates/src/lib/components/po-page-login/samples/sample-po-page-login-labs/sample-po-page-login-labs.component.ts b/projects/templates/src/lib/components/po-page-login/samples/sample-po-page-login-labs/sample-po-page-login-labs.component.ts index 9704f779be..df73516f50 100644 --- a/projects/templates/src/lib/components/po-page-login/samples/sample-po-page-login-labs/sample-po-page-login-labs.component.ts +++ b/projects/templates/src/lib/components/po-page-login/samples/sample-po-page-login-labs/sample-po-page-login-labs.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, inject } from '@angular/core'; +import { Component, OnInit, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption, PoDialogService, PoRadioGroupOption, PoSelectOption } from '@po-ui/ng-components'; @@ -7,6 +7,7 @@ import { PoPageLogin, PoPageLoginCustomField, PoPageLoginLiterals } from '@po-ui @Component({ selector: 'sample-po-page-login-labs', templateUrl: './sample-po-page-login-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPageLoginLabsComponent implements OnInit { diff --git a/projects/templates/src/lib/services/po-page-customization/po-page-customization.service.spec.ts b/projects/templates/src/lib/services/po-page-customization/po-page-customization.service.spec.ts index 75e61d0bd9..6f74832ded 100644 --- a/projects/templates/src/lib/services/po-page-customization/po-page-customization.service.spec.ts +++ b/projects/templates/src/lib/services/po-page-customization/po-page-customization.service.spec.ts @@ -4,7 +4,7 @@ import { HttpTestingController, provideHttpClientTesting } from '@angular/common import { PoPageCustomizationService } from './po-page-customization.service'; import { PoPageDynamicSearchOptions } from '../../components/po-page-dynamic-search/interfaces/po-page-dynamic-search-options.interface'; -import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; const originalPageOptions: PoPageDynamicSearchOptions = { title: 'Original Title', @@ -93,7 +93,11 @@ describe('PoPageCustomizationService:', () => { beforeEach(() => { TestBed.configureTestingModule({ imports: [], - providers: [PoPageCustomizationService, provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting()] + providers: [ + PoPageCustomizationService, + provideHttpClient(withXhr(), withInterceptorsFromDi()), + provideHttpClientTesting() + ] }); poPageCustomizationService = TestBed.inject(PoPageCustomizationService); diff --git a/projects/templates/src/lib/services/po-page-dynamic/po-page-dynamic.service.spec.ts b/projects/templates/src/lib/services/po-page-dynamic/po-page-dynamic.service.spec.ts index 87a4ed6614..802f7b5d28 100644 --- a/projects/templates/src/lib/services/po-page-dynamic/po-page-dynamic.service.spec.ts +++ b/projects/templates/src/lib/services/po-page-dynamic/po-page-dynamic.service.spec.ts @@ -1,6 +1,12 @@ import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; -import { HttpParams, HttpErrorResponse, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { + HttpParams, + HttpErrorResponse, + provideHttpClient, + withInterceptorsFromDi, + withXhr +} from '@angular/common/http'; import { PoPageDynamicService, poPageDynamicLiterals } from './po-page-dynamic.service'; import { PoPageDynamicTableMetaData } from '../../components'; @@ -12,7 +18,11 @@ describe('PoPageDynamicService:', () => { beforeEach(() => { TestBed.configureTestingModule({ imports: [], - providers: [PoPageDynamicService, provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting()] + providers: [ + PoPageDynamicService, + provideHttpClient(withXhr(), withInterceptorsFromDi()), + provideHttpClientTesting() + ] }); poPageDynamicService = TestBed.inject(PoPageDynamicService); diff --git a/projects/templates/src/lib/utils/util.spec.ts b/projects/templates/src/lib/utils/util.spec.ts index b23b540a78..5fc42d787d 100644 --- a/projects/templates/src/lib/utils/util.spec.ts +++ b/projects/templates/src/lib/utils/util.spec.ts @@ -36,7 +36,7 @@ import { } from './util'; import { changeChromeProperties } from '../util-test/util-expect.spec'; import { PoThemeA11yEnum, PoThemeService } from '@po-ui/ng-components'; -import { PoFieldSize } from 'projects/ui/src/lib/enums/po-field-size.enum'; +import { PoFieldSize } from '../../../../ui/src/lib/enums/po-field-size.enum'; describe('Language:', () => { let navigatorLanguageSpy; diff --git a/projects/templates/src/test.ts b/projects/templates/src/test.ts index 6ccaa451b4..89c3949e89 100644 --- a/projects/templates/src/test.ts +++ b/projects/templates/src/test.ts @@ -1,8 +1,5 @@ // This file is required by karma.conf.js and loads recursively all the .spec and framework files -import 'zone.js'; -import 'zone.js/testing'; - import { NgModule, provideZoneChangeDetection } from '@angular/core'; import { getTestBed } from '@angular/core/testing'; import { BrowserTestingModule, platformBrowserTesting } from '@angular/platform-browser/testing'; diff --git a/projects/templates/tsconfig.lib.json b/projects/templates/tsconfig.lib.json index cf6fbcdce5..7033507129 100644 --- a/projects/templates/tsconfig.lib.json +++ b/projects/templates/tsconfig.lib.json @@ -10,9 +10,9 @@ "angularCompilerOptions": { "skipTemplateCodegen": true, "strictMetadataEmit": true, - "fullTemplateTypeCheck": true, "strictInjectionParameters": true, - "enableResourceInlining": true + "enableResourceInlining": true, + "strictTemplates": false }, "exclude": ["src/test.ts", "**/*.spec.ts"] } diff --git a/projects/templates/tsconfig.schematics.json b/projects/templates/tsconfig.schematics.json index bc534f2dd4..ef56acf655 100644 --- a/projects/templates/tsconfig.schematics.json +++ b/projects/templates/tsconfig.schematics.json @@ -1,11 +1,10 @@ { "extends": "../../tsconfig.json", "compilerOptions": { - "baseUrl": "../../", "lib": ["es2022", "dom"], "declaration": true, - "module": "commonjs", - "moduleResolution": "node", + "module": "node16", + "moduleResolution": "node16", "noEmitOnError": true, "noFallthroughCasesInSwitch": true, "noImplicitAny": false, diff --git a/projects/templates/tsconfig.spec.json b/projects/templates/tsconfig.spec.json index 519c167a68..92ff656bd5 100644 --- a/projects/templates/tsconfig.spec.json +++ b/projects/templates/tsconfig.spec.json @@ -6,5 +6,8 @@ "skipLibCheck": true }, "files": ["src/test.ts"], - "include": ["**/*.spec.ts", "**/*.d.ts"] + "include": ["**/*.spec.ts", "**/*.d.ts"], + "angularCompilerOptions": { + "strictTemplates": false + } } diff --git a/projects/ui/README.md b/projects/ui/README.md index ba3983fb88..c91ad0af74 100644 --- a/projects/ui/README.md +++ b/projects/ui/README.md @@ -19,7 +19,7 @@ Utilizando o comando `ng add` do [Angular CLI](https://cli.angular.io/), vamos a Execute o comando abaixo na pasta raiz do seu projeto: ``` -ng add @po-ui/ng-components +ng add @po-ui/ng-components@next ``` diff --git a/projects/ui/karma.conf.js b/projects/ui/karma.conf.js index 6d5a4a799d..33b8217951 100644 --- a/projects/ui/karma.conf.js +++ b/projects/ui/karma.conf.js @@ -4,17 +4,12 @@ module.exports = function (config) { config.set({ basePath: '', - files: [ - { pattern: './src/lib/util-test/util-setup.spec.ts', watched: false, type: 'js' }, - { pattern: './src/**/*.spec.ts', watched: false, type: 'js' } - ], frameworks: ['jasmine', '@angular-devkit/build-angular'], plugins: [ require('karma-jasmine'), require('karma-chrome-launcher'), require('karma-jasmine-html-reporter'), - require('karma-coverage'), - require('@angular-devkit/build-angular/plugins/karma') + require('karma-coverage') ], client: { clearContext: false // leave Jasmine Spec Runner output visible in browser @@ -40,7 +35,8 @@ module.exports = function (config) { branches: 99, statements: 99, lines: 99, - functions: 99 + functions: 99, + excludes: ['**/po-grid/**'] } } }, diff --git a/projects/ui/package.json b/projects/ui/package.json index 1528bb57aa..5699e7ce44 100644 --- a/projects/ui/package.json +++ b/projects/ui/package.json @@ -21,7 +21,7 @@ ] }, "dependencies": { - "@angular/cdk": "~21.2.14", + "@angular/cdk": "~22.0.1", "@po-ui/style": "0.0.0-PLACEHOLDER", "@po-ui/ng-schematics": "0.0.0-PLACEHOLDER", "driver.js": "~1.4.0", @@ -29,16 +29,14 @@ "tslib": "^2.6.2" }, "peerDependencies": { - "@angular/animations": "^21", - "@angular/cdk": "^21", - "@angular/common": "^21", - "@angular/compiler": "^21", - "@angular/core": "^21", - "@angular/forms": "^21", - "@angular/platform-browser": "^21", - "@angular/platform-browser-dynamic": "^21", - "@angular/router": "^21", - "@angular-devkit/schematics": "^21", + "@angular/cdk": "^22", + "@angular/common": "^22", + "@angular/compiler": "^22", + "@angular/core": "^22", + "@angular/forms": "^22", + "@angular/platform-browser": "^22", + "@angular/router": "^22", + "@angular-devkit/schematics": "^22", "@po-ui/style": "0.0.0-PLACEHOLDER", "rxjs": "~7.8.1", "zone.js": "~0.15.0" diff --git a/projects/ui/schematics/migrations.json b/projects/ui/schematics/migrations.json index 7b93aa0e67..e125bbfc7c 100644 --- a/projects/ui/schematics/migrations.json +++ b/projects/ui/schematics/migrations.json @@ -65,6 +65,11 @@ "version": "21", "description": "Atualiza @po-ui/ng-components para v21", "factory": "./ng-update/v21/index" + }, + "migration-v22": { + "version": "22", + "description": "Atualiza @po-ui/ng-components para v22", + "factory": "./ng-update/v22/index" } } } diff --git a/projects/ui/schematics/ng-generate/po-page-default/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template b/projects/ui/schematics/ng-generate/po-page-default/files-standalone/__path__/__name@dasherize__/__componentFileName__.__style__.template similarity index 100% rename from projects/ui/schematics/ng-generate/po-page-default/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template rename to projects/ui/schematics/ng-generate/po-page-default/files-standalone/__path__/__name@dasherize__/__componentFileName__.__style__.template diff --git a/projects/ui/schematics/ng-generate/po-page-default/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template b/projects/ui/schematics/ng-generate/po-page-default/files-standalone/__path__/__name@dasherize__/__componentFileName__.html.template similarity index 100% rename from projects/ui/schematics/ng-generate/po-page-default/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template rename to projects/ui/schematics/ng-generate/po-page-default/files-standalone/__path__/__name@dasherize__/__componentFileName__.html.template diff --git a/projects/ui/schematics/ng-generate/po-page-detail/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template b/projects/ui/schematics/ng-generate/po-page-default/files-standalone/__path__/__name@dasherize__/__componentFileName__.spec.ts.template similarity index 71% rename from projects/ui/schematics/ng-generate/po-page-detail/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template rename to projects/ui/schematics/ng-generate/po-page-default/files-standalone/__path__/__name@dasherize__/__componentFileName__.spec.ts.template index c25f19db8d..57b77e9fc0 100644 --- a/projects/ui/schematics/ng-generate/po-page-detail/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +++ b/projects/ui/schematics/ng-generate/po-page-default/files-standalone/__path__/__name@dasherize__/__componentFileName__.spec.ts.template @@ -1,9 +1,10 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { PoPageModule } from '@po-ui/ng-components'; -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component'; +import { <%= classify(name) %>Component } from './<%= componentFileName %>'; describe('<%= classify(name) %>Component', () => { let component: <%= classify(name) %>Component; @@ -12,9 +13,10 @@ describe('<%= classify(name) %>Component', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ imports: [ - RouterTestingModule, + RouterModule.forRoot([]), PoPageModule - ] + ], + providers: [provideLocationMocks()] }) .compileComponents(); })); diff --git a/projects/ui/schematics/ng-generate/po-page-default/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template b/projects/ui/schematics/ng-generate/po-page-default/files-standalone/__path__/__name@dasherize__/__componentFileName__.ts.template similarity index 77% rename from projects/ui/schematics/ng-generate/po-page-default/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template rename to projects/ui/schematics/ng-generate/po-page-default/files-standalone/__path__/__name@dasherize__/__componentFileName__.ts.template index 630b3b95dc..c954d957bc 100644 --- a/projects/ui/schematics/ng-generate/po-page-default/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +++ b/projects/ui/schematics/ng-generate/po-page-default/files-standalone/__path__/__name@dasherize__/__componentFileName__.ts.template @@ -9,8 +9,8 @@ import { PoPageAction, PoPageModule } from '@po-ui/ng-components'; CommonModule, PoPageModule, ], - templateUrl: './<%= dasherize(name) %>.component.html', - styleUrls: ['./<%= dasherize(name) %>.component.<%= style %>'] + templateUrl: './<%= componentFileName %>.html', + styleUrls: ['./<%= componentFileName %>.<%= style %>'] }) export class <%= classify(name) %>Component implements OnInit { diff --git a/projects/ui/schematics/ng-generate/po-page-default/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template b/projects/ui/schematics/ng-generate/po-page-default/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template deleted file mode 100644 index c25f19db8d..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-default/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +++ /dev/null @@ -1,31 +0,0 @@ -import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; - -import { PoPageModule } from '@po-ui/ng-components'; - -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component'; - -describe('<%= classify(name) %>Component', () => { - let component: <%= classify(name) %>Component; - let fixture: ComponentFixture<<%= classify(name) %>Component>; - - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - imports: [ - RouterTestingModule, - PoPageModule - ] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(<%= classify(name) %>Component); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template b/projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__componentFileName__.__style__.template similarity index 100% rename from projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template rename to projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__componentFileName__.__style__.template diff --git a/projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template b/projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__componentFileName__.html.template similarity index 100% rename from projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template rename to projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__componentFileName__.html.template diff --git a/projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template b/projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__componentFileName__.spec.ts.template similarity index 74% rename from projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template rename to projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__componentFileName__.spec.ts.template index 99b200753e..bc328d8520 100644 --- a/projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +++ b/projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__componentFileName__.spec.ts.template @@ -1,9 +1,10 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { PoPageModule } from '@po-ui/ng-components'; -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component'; +import { <%= classify(name) %>Component } from './<%= componentFileName %>'; describe('<%= classify(name) %>Component', () => { let component: <%= classify(name) %>Component; @@ -12,9 +13,10 @@ describe('<%= classify(name) %>Component', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ imports: [ - RouterTestingModule, + RouterModule.forRoot([]), PoPageModule ], + providers: [provideLocationMocks()], declarations: [ <%= classify(name) %>Component ] }) .compileComponents(); diff --git a/projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template b/projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__componentFileName__.ts.template similarity index 72% rename from projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template rename to projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__componentFileName__.ts.template index 9e8a445023..5f0ce2e37f 100644 --- a/projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +++ b/projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__componentFileName__.ts.template @@ -4,8 +4,8 @@ import { PoPageAction } from '@po-ui/ng-components'; @Component({ selector: '<%= selector %>', - templateUrl: './<%= dasherize(name) %>.component.html', - styleUrls: ['./<%= dasherize(name) %>.component.<%= style %>'], + templateUrl: './<%= componentFileName %>.html', + styleUrls: ['./<%= componentFileName %>.<%= style %>'], standalone: false }) export class <%= classify(name) %>Component implements OnInit { diff --git a/projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template b/projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__moduleFileName__.ts.template similarity index 64% rename from projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template rename to projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__moduleFileName__.ts.template index f3494af238..da1b3e64c0 100644 --- a/projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template +++ b/projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__moduleFileName__.ts.template @@ -3,8 +3,8 @@ import { NgModule } from '@angular/core'; import { PoModule } from '@po-ui/ng-components'; -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component';<% if (routing) { %> -import { <%= classify(name) %>RoutingModule } from './<%= dasherize(name) %>-routing.module';<% } %> +import { <%= classify(name) %>Component } from './<%= componentFileName %>';<% if (routing) { %> +import { <%= classify(name) %>RoutingModule } from './<%= routingFileName %>';<% } %> @NgModule({ declarations: [ diff --git a/projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template b/projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__routingFileName__.ts.template similarity index 79% rename from projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template rename to projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__routingFileName__.ts.template index 08a37212f2..d2ab4235eb 100644 --- a/projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template +++ b/projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__routingFileName__.ts.template @@ -1,7 +1,7 @@ import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component'; +import { <%= classify(name) %>Component } from './<%= componentFileName %>'; const routes: Routes = [ { path: '', component: <%= classify(name) %>Component } diff --git a/projects/ui/schematics/ng-generate/po-page-default/index.spec.ts b/projects/ui/schematics/ng-generate/po-page-default/index.spec.ts index 9aa1bc38c4..e498e44ee7 100644 --- a/projects/ui/schematics/ng-generate/po-page-default/index.spec.ts +++ b/projects/ui/schematics/ng-generate/po-page-default/index.spec.ts @@ -5,7 +5,7 @@ import * as path from 'path'; const collectionPath = path.join(__dirname, '../../collection.json'); -xdescribe('po-page-default:', () => { +describe('po-page-default:', () => { const runner = new SchematicTestRunner('schematics', collectionPath); const workspaceOptions: WorkspaceOptions = { @@ -14,158 +14,226 @@ xdescribe('po-page-default:', () => { version: '6.0.0' }; - const componentOptions: any = { + const applicationOptions: any = { name: 'po', style: 'css', skipTests: false }; + const componentOptions: any = { + name: 'po', + style: 'css', + skipTests: false, + project: 'po' + }; + let appTree: UnitTestTree; beforeEach(async () => { appTree = await runner.runExternalSchematic('@schematics/angular', 'workspace', workspaceOptions); - appTree = await runner.runExternalSchematic('@schematics/angular', 'application', componentOptions, appTree); + appTree = await runner.runExternalSchematic('@schematics/angular', 'application', applicationOptions, appTree); }); - it('should create component', async () => { - const componentName = 'supply'; - const tree = await runner.runSchematic('po-page-default', { ...componentOptions, name: componentName }, appTree); + describe('auto-detected style on a project using the current Angular convention:', () => { + it('should create component files without type suffix', async () => { + const componentName = 'supply'; + const tree = await runner.runSchematic('po-page-default', { ...componentOptions, name: componentName }, appTree); - const files: Array = tree.files; + const files: Array = tree.files; - const fullFilePath = (ext: string) => - `/projects/${componentOptions.name}/src/app/${componentName}/${componentName}.component.${ext}`; + const fullFilePath = (ext: string) => + `/projects/${componentOptions.name}/src/app/${componentName}/${componentName}.${ext}`; - expect(files).toContain(fullFilePath('ts')); - expect(files).toContain(fullFilePath('html')); - expect(files).toContain(fullFilePath('spec.ts')); - expect(files).toContain(fullFilePath(componentOptions.style)); - }); + expect(files).toContain(fullFilePath('ts')); + expect(files).toContain(fullFilePath('html')); + expect(files).toContain(fullFilePath('spec.ts')); + expect(files).toContain(fullFilePath(componentOptions.style)); + }); - it('should create component and module', async () => { - const componentName = 'supply'; - const createModule = true; + it('should not create files using the classic `.component` suffix', async () => { + const tree = await runner.runSchematic('po-page-default', { ...componentOptions, name: 'customers' }, appTree); - const options = { ...componentOptions, name: componentName, createModule, project: 'po' }; + const files: Array = tree.files; - const tree = await runner.runSchematic('po-page-default', options, appTree); + expect(files).not.toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.ts`); + }); - const files: Array = tree.files; + it('should reference sibling files without type suffix in the component file', async () => { + const tree = await runner.runSchematic('po-page-default', { ...componentOptions, name: 'customers' }, appTree); - expect(files).toContain(`/projects/${options.project}/src/app/${componentName}/${componentName}.module.ts`); - }); + const componentContent = getFileContent( + tree, + `/projects/${componentOptions.name}/src/app/customers/customers.ts` + ); - it('should add declaration component in closest module by default', async () => { - const options = { ...componentOptions, name: 'customers' }; - const tree = await runner.runSchematic('po-page-default', options, appTree); + expect(componentContent).toMatch(/templateUrl: '.\/customers.html'/); + expect(componentContent).toMatch(/styleUrls: \['.\/customers.css'\]/); + }); - const moduleContent = getFileContent(tree, `/projects/${componentOptions.name}/src/app/app.module.ts`); + it('should generate stylesheet with `less` extension if style is `less`', async () => { + const options = { ...componentOptions, name: 'customers', style: 'less' }; + const tree = await runner.runSchematic('po-page-default', options, appTree); - expect(moduleContent).toMatch(/import.*CustomersComponent.*from '.\/customers\/customers.component'/); - expect(moduleContent).toMatch(/declarations:\s*\[[^\]]+?,\r?\n\s+CustomersComponent\r?\n/m); - }); + const files = tree.files; - it('should import component module if createModule is true', async () => { - const options = { ...componentOptions, name: 'customers', createModule: true }; + expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.${options.style}`); + }); - const tree = await runner.runSchematic('po-page-default', options, appTree); - const moduleContent = getFileContent(tree, `/projects/${componentOptions.name}/src/app/app.module.ts`); + it('should generate component with stylesheet `css` if options.style is empty', async () => { + const options = { ...componentOptions, name: 'customers', style: '' }; - expect(moduleContent).toMatch(/import.*CustomersModule.*from '.\/customers\/customers.module'/); - expect(moduleContent).toMatch(/imports:\s*\[[^\]]+?,\r?\n\s+CustomersModule\r?\n/m); - }); + const tree = await runner.runSchematic('po-page-default', options, appTree); + const files = tree.files; - it('should generate component.less if style is `less`', async () => { - const options = { ...componentOptions, name: 'customers', style: 'less' }; - const tree = await runner.runSchematic('po-page-default', options, appTree); + expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.css`); + }); - const files = tree.files; + it('shouldn`t generate component spec if `skipTests` is true', async () => { + const options = { ...componentOptions, name: 'customers', skipTests: true }; + const tree = await runner.runSchematic('po-page-default', options, appTree); - expect(files).toContain( - `/projects/${componentOptions.name}/src/app/customers/customers.component.${options.style}` - ); - }); + const files = tree.files; - it('should generate component with stylesheet `css` if options.style is empty', async () => { - const options = { ...componentOptions, name: 'customers', style: '' }; + expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.ts`); + expect(files).not.toContain(`/projects/${componentOptions.name}/src/app/customers/customers.spec.ts`); + }); - const tree = await runner.runSchematic('po-page-default', options, appTree); - const files = tree.files; + it('should generate component in path informed', async () => { + const optionsPath = { + ...componentOptions, + name: 'wms', + path: `/projects/${componentOptions.name}/src/app/customers` + }; - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.css`); - }); + const treePath = await runner.runSchematic('po-page-default', optionsPath, appTree); - it('shouldn`t generate component spec if `skipTests` is true', async () => { - const options = { ...componentOptions, name: 'customers', skipTests: true }; - const tree = await runner.runSchematic('po-page-default', options, appTree); + const files = treePath.files; - const files = tree.files; + expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.spec.ts`); + expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.ts`); + expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.html`); + expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.${componentOptions.style}`); + }); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.ts`); - expect(files).not.toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.spec.ts`); - }); + it('should use the custom prefix when create component', async () => { + const prefix = 'wms'; - it('should generate component in path informed', async () => { - // create customers component module to use with path option - const options = { ...componentOptions, name: 'customers', createModule: true }; - await runner.runSchematic('po-page-default', options, appTree); + const options = { ...componentOptions, name: 'customers', prefix }; + const tree = await runner.runSchematic('po-page-default', options, appTree); - const optionsPath = { - ...componentOptions, - name: 'wms', - path: `/projects/${componentOptions.name}/src/app/customers` - }; + const componentContent = getFileContent( + tree, + `/projects/${componentOptions.name}/src/app/customers/customers.ts` + ); - const treePath = await runner.runSchematic('po-page-default', optionsPath, appTree); + expect(componentContent).toMatch(new RegExp(`selector: '${prefix}-customers'`)); + }); - const files = treePath.files; + it('should use the default prefix when create component if prefix is null', async () => { + const prefix = undefined; - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.spec.ts`); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.ts`); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.html`); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.${options.style}`); - }); + const options = { ...componentOptions, name: 'customers', prefix }; + const tree = await runner.runSchematic('po-page-default', options, appTree); + + const componentContent = getFileContent( + tree, + `/projects/${componentOptions.name}/src/app/customers/customers.ts` + ); - it('should use the custom prefix when create component', async () => { - const prefix = 'wms'; + expect(componentContent).toMatch(new RegExp(`selector: 'app-customers'`)); + }); - const options = { ...componentOptions, name: 'customers', prefix }; - const tree = await runner.runSchematic('po-page-default', options, appTree); + it('should use only the name how prefix when create component if prefix is ""', async () => { + const prefix = ''; - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` - ); + const options = { ...componentOptions, name: 'customers', prefix }; + const tree = await runner.runSchematic('po-page-default', options, appTree); - expect(componentContent).toMatch(new RegExp(`selector: '${prefix}-customers'`)); + const componentContent = getFileContent( + tree, + `/projects/${componentOptions.name}/src/app/customers/customers.ts` + ); + + expect(componentContent).toMatch(new RegExp(`selector: 'customers'`)); + }); }); - it('should use the default prefix when create component if prefix is null', async () => { - const prefix = undefined; + describe('fileNameStyleGuide 2016 (classic suffixes):', () => { + it('should create component files with the `.component` suffix', async () => { + const componentName = 'supply'; + const options = { ...componentOptions, name: componentName, fileNameStyleGuide: '2016' }; + const tree = await runner.runSchematic('po-page-default', options, appTree); - const options = { ...componentOptions, name: 'customers', sample: true, prefix }; - const tree = await runner.runSchematic('po-page-default', options, appTree); + const files: Array = tree.files; - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` - ); + const fullFilePath = (ext: string) => + `/projects/${componentOptions.name}/src/app/${componentName}/${componentName}.component.${ext}`; - expect(componentContent).toMatch(new RegExp(`selector: 'app-customers'`)); - }); + expect(files).toContain(fullFilePath('ts')); + expect(files).toContain(fullFilePath('html')); + expect(files).toContain(fullFilePath('spec.ts')); + expect(files).toContain(fullFilePath(componentOptions.style)); + }); + + it('should reference sibling files with the `.component` suffix in the component file', async () => { + const options = { ...componentOptions, name: 'customers', fileNameStyleGuide: '2016' }; + const tree = await runner.runSchematic('po-page-default', options, appTree); - it('should use only the name how prefix when create component if prefix is ""', async () => { - const prefix = ''; + const componentContent = getFileContent( + tree, + `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` + ); - const options = { ...componentOptions, name: 'customers', prefix }; - const tree = await runner.runSchematic('po-page-default', options, appTree); + expect(componentContent).toMatch(/templateUrl: '.\/customers.component.html'/); + expect(componentContent).toMatch(/styleUrls: \['.\/customers.component.css'\]/); + }); - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` - ); + it('shouldn`t generate the component spec if `skipTests` is true', async () => { + const options = { ...componentOptions, name: 'customers', skipTests: true, fileNameStyleGuide: '2016' }; + const tree = await runner.runSchematic('po-page-default', options, appTree); + + const files = tree.files; + + expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.ts`); + expect(files).not.toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.spec.ts`); + }); + + it('should keep the current convention when `fileNameStyleGuide` is `2025` (explicit override)', async () => { + const options = { ...componentOptions, name: 'customers', fileNameStyleGuide: '2025' }; + const tree = await runner.runSchematic('po-page-default', options, appTree); + + const files = tree.files; + + expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.ts`); + expect(files).not.toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.ts`); + }); + }); - expect(componentContent).toMatch(new RegExp(`selector: 'customers'`)); + describe('auto-detected style on a project using the classic (2016) convention:', () => { + beforeEach(() => { + // Simulate a project generated with `--file-name-style-guide 2016`: the root component + // lives in `app.component.ts` and is bootstrapped from `main.ts`. + appTree.overwrite( + '/projects/po/src/main.ts', + `import { bootstrapApplication } from '@angular/platform-browser';\n` + + `import { App } from './app/app.component';\n` + + `import { appConfig } from './app/app.config';\n` + + `bootstrapApplication(App, appConfig);\n` + ); + appTree.create( + '/projects/po/src/app/app.component.ts', + `import { Component } from '@angular/core';\n@Component({ selector: 'app-root', template: '' })\nexport class App {}\n` + ); + }); + + it('should generate files with the classic `.component` suffix without passing the option', async () => { + const tree = await runner.runSchematic('po-page-default', { ...componentOptions, name: 'customers' }, appTree); + + const files = tree.files; + + expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.ts`); + expect(files).not.toContain(`/projects/${componentOptions.name}/src/app/customers/customers.ts`); + }); }); }); diff --git a/projects/ui/schematics/ng-generate/po-page-default/schema.json b/projects/ui/schematics/ng-generate/po-page-default/schema.json index 202ce55072..818dce5091 100644 --- a/projects/ui/schematics/ng-generate/po-page-default/schema.json +++ b/projects/ui/schematics/ng-generate/po-page-default/schema.json @@ -61,6 +61,11 @@ "format": "html-selector" } ] + }, + "fileNameStyleGuide": { + "type": "string", + "description": "The file naming convention to use for generated files. `2016` uses classic suffixes such as `.component.ts` and `.module.ts`. `2025` omits type suffixes. When omitted, the convention already used by the project is auto-detected.", + "enum": ["2016", "2025"] } }, "required": ["name"] diff --git a/projects/ui/schematics/ng-generate/po-page-detail/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template b/projects/ui/schematics/ng-generate/po-page-detail/files-standalone/__path__/__name@dasherize__/__componentFileName__.__style__.template similarity index 100% rename from projects/ui/schematics/ng-generate/po-page-detail/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template rename to projects/ui/schematics/ng-generate/po-page-detail/files-standalone/__path__/__name@dasherize__/__componentFileName__.__style__.template diff --git a/projects/ui/schematics/ng-generate/po-page-detail/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template b/projects/ui/schematics/ng-generate/po-page-detail/files-standalone/__path__/__name@dasherize__/__componentFileName__.html.template similarity index 100% rename from projects/ui/schematics/ng-generate/po-page-detail/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template rename to projects/ui/schematics/ng-generate/po-page-detail/files-standalone/__path__/__name@dasherize__/__componentFileName__.html.template diff --git a/projects/ui/schematics/ng-generate/po-page-detail/files-standalone/__path__/__name@dasherize__/__componentFileName__.spec.ts.template b/projects/ui/schematics/ng-generate/po-page-detail/files-standalone/__path__/__name@dasherize__/__componentFileName__.spec.ts.template new file mode 100644 index 0000000000..57b77e9fc0 --- /dev/null +++ b/projects/ui/schematics/ng-generate/po-page-detail/files-standalone/__path__/__name@dasherize__/__componentFileName__.spec.ts.template @@ -0,0 +1,33 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; + +import { PoPageModule } from '@po-ui/ng-components'; + +import { <%= classify(name) %>Component } from './<%= componentFileName %>'; + +describe('<%= classify(name) %>Component', () => { + let component: <%= classify(name) %>Component; + let fixture: ComponentFixture<<%= classify(name) %>Component>; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + imports: [ + RouterModule.forRoot([]), + PoPageModule + ], + providers: [provideLocationMocks()] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(<%= classify(name) %>Component); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/projects/ui/schematics/ng-generate/po-page-detail/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template b/projects/ui/schematics/ng-generate/po-page-detail/files-standalone/__path__/__name@dasherize__/__componentFileName__.ts.template similarity index 79% rename from projects/ui/schematics/ng-generate/po-page-detail/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template rename to projects/ui/schematics/ng-generate/po-page-detail/files-standalone/__path__/__name@dasherize__/__componentFileName__.ts.template index c772b5bc52..2e0024712b 100644 --- a/projects/ui/schematics/ng-generate/po-page-detail/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +++ b/projects/ui/schematics/ng-generate/po-page-detail/files-standalone/__path__/__name@dasherize__/__componentFileName__.ts.template @@ -9,8 +9,8 @@ import { PoPageModule } from '@po-ui/ng-components'; CommonModule, PoPageModule, ], - templateUrl: './<%= dasherize(name) %>.component.html', - styleUrls: ['./<%= dasherize(name) %>.component.<%= style %>'] + templateUrl: './<%= componentFileName %>.html', + styleUrls: ['./<%= componentFileName %>.<%= style %>'] }) export class <%= classify(name) %>Component implements OnInit { diff --git a/projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template b/projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__componentFileName__.__style__.template similarity index 100% rename from projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template rename to projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__componentFileName__.__style__.template diff --git a/projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template b/projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__componentFileName__.html.template similarity index 100% rename from projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template rename to projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__componentFileName__.html.template diff --git a/projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template b/projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__componentFileName__.spec.ts.template similarity index 74% rename from projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template rename to projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__componentFileName__.spec.ts.template index 99b200753e..bc328d8520 100644 --- a/projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +++ b/projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__componentFileName__.spec.ts.template @@ -1,9 +1,10 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { PoPageModule } from '@po-ui/ng-components'; -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component'; +import { <%= classify(name) %>Component } from './<%= componentFileName %>'; describe('<%= classify(name) %>Component', () => { let component: <%= classify(name) %>Component; @@ -12,9 +13,10 @@ describe('<%= classify(name) %>Component', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ imports: [ - RouterTestingModule, + RouterModule.forRoot([]), PoPageModule ], + providers: [provideLocationMocks()], declarations: [ <%= classify(name) %>Component ] }) .compileComponents(); diff --git a/projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template b/projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__componentFileName__.ts.template similarity index 73% rename from projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template rename to projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__componentFileName__.ts.template index 60c88c144a..fa2906e721 100644 --- a/projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +++ b/projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__componentFileName__.ts.template @@ -2,8 +2,8 @@ import { Component, OnInit } from '@angular/core'; @Component({ selector: '<%= selector %>', - templateUrl: './<%= dasherize(name) %>.component.html', - styleUrls: ['./<%= dasherize(name) %>.component.<%= style %>'], + templateUrl: './<%= componentFileName %>.html', + styleUrls: ['./<%= componentFileName %>.<%= style %>'], standalone: false }) export class <%= classify(name) %>Component implements OnInit { diff --git a/projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template b/projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__moduleFileName__.ts.template similarity index 64% rename from projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template rename to projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__moduleFileName__.ts.template index f3494af238..da1b3e64c0 100644 --- a/projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template +++ b/projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__moduleFileName__.ts.template @@ -3,8 +3,8 @@ import { NgModule } from '@angular/core'; import { PoModule } from '@po-ui/ng-components'; -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component';<% if (routing) { %> -import { <%= classify(name) %>RoutingModule } from './<%= dasherize(name) %>-routing.module';<% } %> +import { <%= classify(name) %>Component } from './<%= componentFileName %>';<% if (routing) { %> +import { <%= classify(name) %>RoutingModule } from './<%= routingFileName %>';<% } %> @NgModule({ declarations: [ diff --git a/projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template b/projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__routingFileName__.ts.template similarity index 79% rename from projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template rename to projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__routingFileName__.ts.template index 08a37212f2..d2ab4235eb 100644 --- a/projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template +++ b/projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__routingFileName__.ts.template @@ -1,7 +1,7 @@ import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component'; +import { <%= classify(name) %>Component } from './<%= componentFileName %>'; const routes: Routes = [ { path: '', component: <%= classify(name) %>Component } diff --git a/projects/ui/schematics/ng-generate/po-page-detail/index.spec.ts b/projects/ui/schematics/ng-generate/po-page-detail/index.spec.ts index fadc4ebd71..ab25e6aa40 100644 --- a/projects/ui/schematics/ng-generate/po-page-detail/index.spec.ts +++ b/projects/ui/schematics/ng-generate/po-page-detail/index.spec.ts @@ -5,7 +5,7 @@ import * as path from 'path'; const collectionPath = path.join(__dirname, '../../collection.json'); -xdescribe('po-page-detail:', () => { +describe('po-page-detail:', () => { const runner = new SchematicTestRunner('schematics', collectionPath); const workspaceOptions: WorkspaceOptions = { @@ -14,158 +14,145 @@ xdescribe('po-page-detail:', () => { version: '6.0.0' }; - const componentOptions: any = { + const applicationOptions: any = { name: 'po', style: 'css', skipTests: false }; + const componentOptions: any = { + name: 'po', + style: 'css', + skipTests: false, + project: 'po' + }; + let appTree: UnitTestTree; beforeEach(async () => { appTree = await runner.runExternalSchematic('@schematics/angular', 'workspace', workspaceOptions); - appTree = await runner.runExternalSchematic('@schematics/angular', 'application', componentOptions, appTree); - }); - - it('should create component', async () => { - const componentName = 'supply'; - const tree = await runner.runSchematic('po-page-detail', { ...componentOptions, name: componentName }, appTree); - - const files: Array = tree.files; - - const fullFilePath = (ext: string) => - `/projects/${componentOptions.name}/src/app/${componentName}/${componentName}.component.${ext}`; - - expect(files).toContain(fullFilePath('ts')); - expect(files).toContain(fullFilePath('html')); - expect(files).toContain(fullFilePath('spec.ts')); - expect(files).toContain(fullFilePath(componentOptions.style)); - }); - - it('should create component and module', async () => { - const componentName = 'supply'; - const createModule = true; - - const options = { ...componentOptions, name: componentName, createModule, project: 'po' }; - - const tree = await runner.runSchematic('po-page-detail', options, appTree); - - const files: Array = tree.files; - - expect(files).toContain(`/projects/${options.project}/src/app/${componentName}/${componentName}.module.ts`); - }); - - it('should add declaration component in closest module by default', async () => { - const options = { ...componentOptions, name: 'customers' }; - const tree = await runner.runSchematic('po-page-detail', options, appTree); - - const moduleContent = getFileContent(tree, `/projects/${componentOptions.name}/src/app/app.module.ts`); - - expect(moduleContent).toMatch(/import.*CustomersComponent.*from '.\/customers\/customers.component'/); - expect(moduleContent).toMatch(/declarations:\s*\[[^\]]+?,\r?\n\s+CustomersComponent\r?\n/m); + appTree = await runner.runExternalSchematic('@schematics/angular', 'application', applicationOptions, appTree); }); - it('should import component module if createModule is true', async () => { - const options = { ...componentOptions, name: 'customers', createModule: true }; + describe('auto-detected style on a project using the current Angular convention:', () => { + it('should create component files without type suffix', async () => { + const componentName = 'supply'; + const tree = await runner.runSchematic('po-page-detail', { ...componentOptions, name: componentName }, appTree); - const tree = await runner.runSchematic('po-page-detail', options, appTree); - const moduleContent = getFileContent(tree, `/projects/${componentOptions.name}/src/app/app.module.ts`); - - expect(moduleContent).toMatch(/import.*CustomersModule.*from '.\/customers\/customers.module'/); - expect(moduleContent).toMatch(/imports:\s*\[[^\]]+?,\r?\n\s+CustomersModule\r?\n/m); - }); - - it('should generate component.less if style is `less`', async () => { - const options = { ...componentOptions, name: 'customers', style: 'less' }; - const tree = await runner.runSchematic('po-page-detail', options, appTree); - - const files = tree.files; - - expect(files).toContain( - `/projects/${componentOptions.name}/src/app/customers/customers.component.${options.style}` - ); - }); + const files: Array = tree.files; - it('should generate component with stylesheet `css` if options.style is empty', async () => { - const options = { ...componentOptions, name: 'customers', style: '' }; + const fullFilePath = (ext: string) => + `/projects/${componentOptions.name}/src/app/${componentName}/${componentName}.${ext}`; - const tree = await runner.runSchematic('po-page-detail', options, appTree); - const files = tree.files; + expect(files).toContain(fullFilePath('ts')); + expect(files).toContain(fullFilePath('html')); + expect(files).toContain(fullFilePath('spec.ts')); + expect(files).toContain(fullFilePath(componentOptions.style)); + }); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.css`); - }); + it('should reference sibling files without type suffix in the component file', async () => { + const tree = await runner.runSchematic('po-page-detail', { ...componentOptions, name: 'customers' }, appTree); - it('shouldn`t generate component spec if `skipTests` is true', async () => { - const options = { ...componentOptions, name: 'customers', skipTests: true }; - const tree = await runner.runSchematic('po-page-detail', options, appTree); + const componentContent = getFileContent( + tree, + `/projects/${componentOptions.name}/src/app/customers/customers.ts` + ); - const files = tree.files; + expect(componentContent).toMatch(/templateUrl: '.\/customers.html'/); + expect(componentContent).toMatch(/styleUrls: \['.\/customers.css'\]/); + }); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.ts`); - expect(files).not.toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.spec.ts`); - }); + it('should generate stylesheet with `less` extension if style is `less`', async () => { + const options = { ...componentOptions, name: 'customers', style: 'less' }; + const tree = await runner.runSchematic('po-page-detail', options, appTree); - it('should generate component in path informed', async () => { - // create customers component module to use with path option - const options = { ...componentOptions, name: 'customers', createModule: true }; - await runner.runSchematic('po-page-detail', options, appTree); + expect(tree.files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.${options.style}`); + }); - const optionsPath = { - ...componentOptions, - name: 'wms', - path: `/projects/${componentOptions.name}/src/app/customers` - }; + it('shouldn`t generate component spec if `skipTests` is true', async () => { + const options = { ...componentOptions, name: 'customers', skipTests: true }; + const tree = await runner.runSchematic('po-page-detail', options, appTree); - const treePath = await runner.runSchematic('po-page-detail', optionsPath, appTree); + expect(tree.files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.ts`); + expect(tree.files).not.toContain(`/projects/${componentOptions.name}/src/app/customers/customers.spec.ts`); + }); - const files = treePath.files; + it('should generate component in path informed', async () => { + const optionsPath = { + ...componentOptions, + name: 'wms', + path: `/projects/${componentOptions.name}/src/app/customers` + }; - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.spec.ts`); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.ts`); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.html`); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.${options.style}`); - }); + const treePath = await runner.runSchematic('po-page-detail', optionsPath, appTree); - it('should use the custom prefix when create component', async () => { - const prefix = 'wms'; + expect(treePath.files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.ts`); + expect(treePath.files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.html`); + }); - const options = { ...componentOptions, name: 'customers', prefix }; - const tree = await runner.runSchematic('po-page-detail', options, appTree); + it('should use the custom prefix when create component', async () => { + const prefix = 'wms'; + const tree = await runner.runSchematic('po-page-detail', { ...componentOptions, name: 'customers', prefix }, appTree); - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` - ); + const componentContent = getFileContent( + tree, + `/projects/${componentOptions.name}/src/app/customers/customers.ts` + ); - expect(componentContent).toMatch(new RegExp(`selector: '${prefix}-customers'`)); + expect(componentContent).toMatch(new RegExp(`selector: '${prefix}-customers'`)); + }); }); - it('should use the default prefix when create component if prefix is null', async () => { - const prefix = undefined; - - const options = { ...componentOptions, name: 'customers', sample: true, prefix }; - const tree = await runner.runSchematic('po-page-detail', options, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` - ); - - expect(componentContent).toMatch(new RegExp(`selector: 'app-customers'`)); + describe('fileNameStyleGuide 2016 (classic suffixes):', () => { + it('should create component files with the `.component` suffix', async () => { + const componentName = 'supply'; + const options = { ...componentOptions, name: componentName, fileNameStyleGuide: '2016' }; + const tree = await runner.runSchematic('po-page-detail', options, appTree); + + const fullFilePath = (ext: string) => + `/projects/${componentOptions.name}/src/app/${componentName}/${componentName}.component.${ext}`; + + expect(tree.files).toContain(fullFilePath('ts')); + expect(tree.files).toContain(fullFilePath('html')); + expect(tree.files).toContain(fullFilePath('spec.ts')); + expect(tree.files).toContain(fullFilePath(componentOptions.style)); + }); + + it('should reference sibling files with the `.component` suffix in the component file', async () => { + const options = { ...componentOptions, name: 'customers', fileNameStyleGuide: '2016' }; + const tree = await runner.runSchematic('po-page-detail', options, appTree); + + const componentContent = getFileContent( + tree, + `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` + ); + + expect(componentContent).toMatch(/templateUrl: '.\/customers.component.html'/); + expect(componentContent).toMatch(/styleUrls: \['.\/customers.component.css'\]/); + }); }); - it('should use only the name how prefix when create component if prefix is ""', async () => { - const prefix = ''; - - const options = { ...componentOptions, name: 'customers', prefix }; - const tree = await runner.runSchematic('po-page-detail', options, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` - ); - - expect(componentContent).toMatch(new RegExp(`selector: 'customers'`)); + describe('auto-detected style on a project using the classic (2016) convention:', () => { + beforeEach(() => { + appTree.overwrite( + '/projects/po/src/main.ts', + `import { bootstrapApplication } from '@angular/platform-browser';\n` + + `import { App } from './app/app.component';\n` + + `import { appConfig } from './app/app.config';\n` + + `bootstrapApplication(App, appConfig);\n` + ); + appTree.create( + '/projects/po/src/app/app.component.ts', + `import { Component } from '@angular/core';\n@Component({ selector: 'app-root', template: '' })\nexport class App {}\n` + ); + }); + + it('should generate files with the classic `.component` suffix without passing the option', async () => { + const tree = await runner.runSchematic('po-page-detail', { ...componentOptions, name: 'customers' }, appTree); + + expect(tree.files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.ts`); + expect(tree.files).not.toContain(`/projects/${componentOptions.name}/src/app/customers/customers.ts`); + }); }); }); diff --git a/projects/ui/schematics/ng-generate/po-page-detail/schema.json b/projects/ui/schematics/ng-generate/po-page-detail/schema.json index 75ed730e9c..44058b29b2 100644 --- a/projects/ui/schematics/ng-generate/po-page-detail/schema.json +++ b/projects/ui/schematics/ng-generate/po-page-detail/schema.json @@ -61,6 +61,11 @@ "format": "html-selector" } ] + }, + "fileNameStyleGuide": { + "type": "string", + "description": "The file naming convention to use for generated files. `2016` uses classic suffixes such as `.component.ts` and `.module.ts`. `2025` omits type suffixes. When omitted, the convention already used by the project is auto-detected.", + "enum": ["2016", "2025"] } }, "required": ["name"] diff --git a/projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template b/projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__componentFileName__.__style__.template similarity index 100% rename from projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template rename to projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__componentFileName__.__style__.template diff --git a/projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template b/projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__componentFileName__.html.template similarity index 100% rename from projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template rename to projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__componentFileName__.html.template diff --git a/projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__componentFileName__.spec.ts.template b/projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__componentFileName__.spec.ts.template new file mode 100644 index 0000000000..57b77e9fc0 --- /dev/null +++ b/projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__componentFileName__.spec.ts.template @@ -0,0 +1,33 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; + +import { PoPageModule } from '@po-ui/ng-components'; + +import { <%= classify(name) %>Component } from './<%= componentFileName %>'; + +describe('<%= classify(name) %>Component', () => { + let component: <%= classify(name) %>Component; + let fixture: ComponentFixture<<%= classify(name) %>Component>; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + imports: [ + RouterModule.forRoot([]), + PoPageModule + ], + providers: [provideLocationMocks()] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(<%= classify(name) %>Component); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template b/projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__componentFileName__.ts.template similarity index 79% rename from projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template rename to projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__componentFileName__.ts.template index 8496bcb050..1597ee08d8 100644 --- a/projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +++ b/projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__componentFileName__.ts.template @@ -9,8 +9,8 @@ import { PoPageModule } from '@po-ui/ng-components'; CommonModule, PoPageModule, ], - templateUrl: './<%= dasherize(name) %>.component.html', - styleUrls: ['./<%= dasherize(name) %>.component.<%= style %>'] + templateUrl: './<%= componentFileName %>.html', + styleUrls: ['./<%= componentFileName %>.<%= style %>'] }) export class <%= classify(name) %>Component implements OnInit { diff --git a/projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template b/projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template deleted file mode 100644 index c25f19db8d..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +++ /dev/null @@ -1,31 +0,0 @@ -import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; - -import { PoPageModule } from '@po-ui/ng-components'; - -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component'; - -describe('<%= classify(name) %>Component', () => { - let component: <%= classify(name) %>Component; - let fixture: ComponentFixture<<%= classify(name) %>Component>; - - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - imports: [ - RouterTestingModule, - PoPageModule - ] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(<%= classify(name) %>Component); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template b/projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__routingFileName__.ts.template similarity index 79% rename from projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template rename to projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__routingFileName__.ts.template index 08a37212f2..d2ab4235eb 100644 --- a/projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template +++ b/projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__routingFileName__.ts.template @@ -1,7 +1,7 @@ import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component'; +import { <%= classify(name) %>Component } from './<%= componentFileName %>'; const routes: Routes = [ { path: '', component: <%= classify(name) %>Component } diff --git a/projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template b/projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__componentFileName__.__style__.template similarity index 100% rename from projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template rename to projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__componentFileName__.__style__.template diff --git a/projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template b/projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__componentFileName__.html.template similarity index 100% rename from projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template rename to projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__componentFileName__.html.template diff --git a/projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template b/projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__componentFileName__.spec.ts.template similarity index 74% rename from projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template rename to projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__componentFileName__.spec.ts.template index 99b200753e..bc328d8520 100644 --- a/projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +++ b/projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__componentFileName__.spec.ts.template @@ -1,9 +1,10 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { PoPageModule } from '@po-ui/ng-components'; -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component'; +import { <%= classify(name) %>Component } from './<%= componentFileName %>'; describe('<%= classify(name) %>Component', () => { let component: <%= classify(name) %>Component; @@ -12,9 +13,10 @@ describe('<%= classify(name) %>Component', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ imports: [ - RouterTestingModule, + RouterModule.forRoot([]), PoPageModule ], + providers: [provideLocationMocks()], declarations: [ <%= classify(name) %>Component ] }) .compileComponents(); diff --git a/projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template b/projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__componentFileName__.ts.template similarity index 74% rename from projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template rename to projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__componentFileName__.ts.template index 0d33db922d..89ca0b5145 100644 --- a/projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +++ b/projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__componentFileName__.ts.template @@ -2,8 +2,8 @@ import { Component, OnInit } from '@angular/core'; @Component({ selector: '<%= selector %>', - templateUrl: './<%= dasherize(name) %>.component.html', - styleUrls: ['./<%= dasherize(name) %>.component.<%= style %>'], + templateUrl: './<%= componentFileName %>.html', + styleUrls: ['./<%= componentFileName %>.<%= style %>'], standalone: false }) export class <%= classify(name) %>Component implements OnInit { diff --git a/projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template b/projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__moduleFileName__.ts.template similarity index 64% rename from projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template rename to projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__moduleFileName__.ts.template index f3494af238..da1b3e64c0 100644 --- a/projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template +++ b/projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__moduleFileName__.ts.template @@ -3,8 +3,8 @@ import { NgModule } from '@angular/core'; import { PoModule } from '@po-ui/ng-components'; -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component';<% if (routing) { %> -import { <%= classify(name) %>RoutingModule } from './<%= dasherize(name) %>-routing.module';<% } %> +import { <%= classify(name) %>Component } from './<%= componentFileName %>';<% if (routing) { %> +import { <%= classify(name) %>RoutingModule } from './<%= routingFileName %>';<% } %> @NgModule({ declarations: [ diff --git a/projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template b/projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__routingFileName__.ts.template similarity index 79% rename from projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template rename to projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__routingFileName__.ts.template index 08a37212f2..d2ab4235eb 100644 --- a/projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template +++ b/projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__routingFileName__.ts.template @@ -1,7 +1,7 @@ import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component'; +import { <%= classify(name) %>Component } from './<%= componentFileName %>'; const routes: Routes = [ { path: '', component: <%= classify(name) %>Component } diff --git a/projects/ui/schematics/ng-generate/po-page-edit/index.spec.ts b/projects/ui/schematics/ng-generate/po-page-edit/index.spec.ts index 938f7a5f15..df4a220a19 100644 --- a/projects/ui/schematics/ng-generate/po-page-edit/index.spec.ts +++ b/projects/ui/schematics/ng-generate/po-page-edit/index.spec.ts @@ -5,7 +5,7 @@ import * as path from 'path'; const collectionPath = path.join(__dirname, '../../collection.json'); -xdescribe('po-page-edit:', () => { +describe('po-page-edit:', () => { const runner = new SchematicTestRunner('schematics', collectionPath); const workspaceOptions: WorkspaceOptions = { @@ -14,158 +14,145 @@ xdescribe('po-page-edit:', () => { version: '6.0.0' }; - const componentOptions: any = { + const applicationOptions: any = { name: 'po', style: 'css', skipTests: false }; + const componentOptions: any = { + name: 'po', + style: 'css', + skipTests: false, + project: 'po' + }; + let appTree: UnitTestTree; beforeEach(async () => { appTree = await runner.runExternalSchematic('@schematics/angular', 'workspace', workspaceOptions); - appTree = await runner.runExternalSchematic('@schematics/angular', 'application', componentOptions, appTree); - }); - - it('should create component', async () => { - const componentName = 'supply'; - const tree = await runner.runSchematic('po-page-edit', { ...componentOptions, name: componentName }, appTree); - - const files: Array = tree.files; - - const fullFilePath = (ext: string) => - `/projects/${componentOptions.name}/src/app/${componentName}/${componentName}.component.${ext}`; - - expect(files).toContain(fullFilePath('ts')); - expect(files).toContain(fullFilePath('html')); - expect(files).toContain(fullFilePath('spec.ts')); - expect(files).toContain(fullFilePath(componentOptions.style)); - }); - - it('should create component and module', async () => { - const componentName = 'supply'; - const createModule = true; - - const options = { ...componentOptions, name: componentName, createModule, project: 'po' }; - - const tree = await runner.runSchematic('po-page-edit', options, appTree); - - const files: Array = tree.files; - - expect(files).toContain(`/projects/${options.project}/src/app/${componentName}/${componentName}.module.ts`); - }); - - it('should add declaration component in closest module by default', async () => { - const options = { ...componentOptions, name: 'customers' }; - const tree = await runner.runSchematic('po-page-edit', options, appTree); - - const moduleContent = getFileContent(tree, `/projects/${componentOptions.name}/src/app/app.module.ts`); - - expect(moduleContent).toMatch(/import.*CustomersComponent.*from '.\/customers\/customers.component'/); - expect(moduleContent).toMatch(/declarations:\s*\[[^\]]+?,\r?\n\s+CustomersComponent\r?\n/m); + appTree = await runner.runExternalSchematic('@schematics/angular', 'application', applicationOptions, appTree); }); - it('should import component module if createModule is true', async () => { - const options = { ...componentOptions, name: 'customers', createModule: true }; + describe('auto-detected style on a project using the current Angular convention:', () => { + it('should create component files without type suffix', async () => { + const componentName = 'supply'; + const tree = await runner.runSchematic('po-page-edit', { ...componentOptions, name: componentName }, appTree); - const tree = await runner.runSchematic('po-page-edit', options, appTree); - const moduleContent = getFileContent(tree, `/projects/${componentOptions.name}/src/app/app.module.ts`); - - expect(moduleContent).toMatch(/import.*CustomersModule.*from '.\/customers\/customers.module'/); - expect(moduleContent).toMatch(/imports:\s*\[[^\]]+?,\r?\n\s+CustomersModule\r?\n/m); - }); - - it('should generate component.less if style is `less`', async () => { - const options = { ...componentOptions, name: 'customers', style: 'less' }; - const tree = await runner.runSchematic('po-page-edit', options, appTree); - - const files = tree.files; - - expect(files).toContain( - `/projects/${componentOptions.name}/src/app/customers/customers.component.${options.style}` - ); - }); + const files: Array = tree.files; - it('should generate component with stylesheet `css` if options.style is empty', async () => { - const options = { ...componentOptions, name: 'customers', style: '' }; + const fullFilePath = (ext: string) => + `/projects/${componentOptions.name}/src/app/${componentName}/${componentName}.${ext}`; - const tree = await runner.runSchematic('po-page-edit', options, appTree); - const files = tree.files; + expect(files).toContain(fullFilePath('ts')); + expect(files).toContain(fullFilePath('html')); + expect(files).toContain(fullFilePath('spec.ts')); + expect(files).toContain(fullFilePath(componentOptions.style)); + }); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.css`); - }); + it('should reference sibling files without type suffix in the component file', async () => { + const tree = await runner.runSchematic('po-page-edit', { ...componentOptions, name: 'customers' }, appTree); - it('shouldn`t generate component spec if `skipTests` is true', async () => { - const options = { ...componentOptions, name: 'customers', skipTests: true }; - const tree = await runner.runSchematic('po-page-edit', options, appTree); + const componentContent = getFileContent( + tree, + `/projects/${componentOptions.name}/src/app/customers/customers.ts` + ); - const files = tree.files; + expect(componentContent).toMatch(/templateUrl: '.\/customers.html'/); + expect(componentContent).toMatch(/styleUrls: \['.\/customers.css'\]/); + }); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.ts`); - expect(files).not.toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.spec.ts`); - }); + it('should generate stylesheet with `less` extension if style is `less`', async () => { + const options = { ...componentOptions, name: 'customers', style: 'less' }; + const tree = await runner.runSchematic('po-page-edit', options, appTree); - it('should generate component in path informed', async () => { - // create customers component module to use with path option - const options = { ...componentOptions, name: 'customers', createModule: true }; - await runner.runSchematic('po-page-edit', options, appTree); + expect(tree.files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.${options.style}`); + }); - const optionsPath = { - ...componentOptions, - name: 'wms', - path: `/projects/${componentOptions.name}/src/app/customers` - }; + it('shouldn`t generate component spec if `skipTests` is true', async () => { + const options = { ...componentOptions, name: 'customers', skipTests: true }; + const tree = await runner.runSchematic('po-page-edit', options, appTree); - const treePath = await runner.runSchematic('po-page-edit', optionsPath, appTree); + expect(tree.files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.ts`); + expect(tree.files).not.toContain(`/projects/${componentOptions.name}/src/app/customers/customers.spec.ts`); + }); - const files = treePath.files; + it('should generate component in path informed', async () => { + const optionsPath = { + ...componentOptions, + name: 'wms', + path: `/projects/${componentOptions.name}/src/app/customers` + }; - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.spec.ts`); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.ts`); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.html`); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.${options.style}`); - }); + const treePath = await runner.runSchematic('po-page-edit', optionsPath, appTree); - it('should use the custom prefix when create component', async () => { - const prefix = 'wms'; + expect(treePath.files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.ts`); + expect(treePath.files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.html`); + }); - const options = { ...componentOptions, name: 'customers', prefix }; - const tree = await runner.runSchematic('po-page-edit', options, appTree); + it('should use the custom prefix when create component', async () => { + const prefix = 'wms'; + const tree = await runner.runSchematic('po-page-edit', { ...componentOptions, name: 'customers', prefix }, appTree); - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` - ); + const componentContent = getFileContent( + tree, + `/projects/${componentOptions.name}/src/app/customers/customers.ts` + ); - expect(componentContent).toMatch(new RegExp(`selector: '${prefix}-customers'`)); + expect(componentContent).toMatch(new RegExp(`selector: '${prefix}-customers'`)); + }); }); - it('should use the default prefix when create component if prefix is null', async () => { - const prefix = undefined; - - const options = { ...componentOptions, name: 'customers', sample: true, prefix }; - const tree = await runner.runSchematic('po-page-edit', options, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` - ); - - expect(componentContent).toMatch(new RegExp(`selector: 'app-customers'`)); + describe('fileNameStyleGuide 2016 (classic suffixes):', () => { + it('should create component files with the `.component` suffix', async () => { + const componentName = 'supply'; + const options = { ...componentOptions, name: componentName, fileNameStyleGuide: '2016' }; + const tree = await runner.runSchematic('po-page-edit', options, appTree); + + const fullFilePath = (ext: string) => + `/projects/${componentOptions.name}/src/app/${componentName}/${componentName}.component.${ext}`; + + expect(tree.files).toContain(fullFilePath('ts')); + expect(tree.files).toContain(fullFilePath('html')); + expect(tree.files).toContain(fullFilePath('spec.ts')); + expect(tree.files).toContain(fullFilePath(componentOptions.style)); + }); + + it('should reference sibling files with the `.component` suffix in the component file', async () => { + const options = { ...componentOptions, name: 'customers', fileNameStyleGuide: '2016' }; + const tree = await runner.runSchematic('po-page-edit', options, appTree); + + const componentContent = getFileContent( + tree, + `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` + ); + + expect(componentContent).toMatch(/templateUrl: '.\/customers.component.html'/); + expect(componentContent).toMatch(/styleUrls: \['.\/customers.component.css'\]/); + }); }); - it('should use only the name how prefix when create component if prefix is ""', async () => { - const prefix = ''; - - const options = { ...componentOptions, name: 'customers', prefix }; - const tree = await runner.runSchematic('po-page-edit', options, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` - ); - - expect(componentContent).toMatch(new RegExp(`selector: 'customers'`)); + describe('auto-detected style on a project using the classic (2016) convention:', () => { + beforeEach(() => { + appTree.overwrite( + '/projects/po/src/main.ts', + `import { bootstrapApplication } from '@angular/platform-browser';\n` + + `import { App } from './app/app.component';\n` + + `import { appConfig } from './app/app.config';\n` + + `bootstrapApplication(App, appConfig);\n` + ); + appTree.create( + '/projects/po/src/app/app.component.ts', + `import { Component } from '@angular/core';\n@Component({ selector: 'app-root', template: '' })\nexport class App {}\n` + ); + }); + + it('should generate files with the classic `.component` suffix without passing the option', async () => { + const tree = await runner.runSchematic('po-page-edit', { ...componentOptions, name: 'customers' }, appTree); + + expect(tree.files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.ts`); + expect(tree.files).not.toContain(`/projects/${componentOptions.name}/src/app/customers/customers.ts`); + }); }); }); diff --git a/projects/ui/schematics/ng-generate/po-page-edit/schema.json b/projects/ui/schematics/ng-generate/po-page-edit/schema.json index c80c593cc9..0e32366eb2 100644 --- a/projects/ui/schematics/ng-generate/po-page-edit/schema.json +++ b/projects/ui/schematics/ng-generate/po-page-edit/schema.json @@ -61,6 +61,11 @@ "format": "html-selector" } ] + }, + "fileNameStyleGuide": { + "type": "string", + "description": "The file naming convention to use for generated files. `2016` uses classic suffixes such as `.component.ts` and `.module.ts`. `2025` omits type suffixes. When omitted, the convention already used by the project is auto-detected.", + "enum": ["2016", "2025"] } }, "required": ["name"] diff --git a/projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template b/projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__componentFileName__.__style__.template similarity index 100% rename from projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template rename to projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__componentFileName__.__style__.template diff --git a/projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template b/projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__componentFileName__.html.template similarity index 100% rename from projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template rename to projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__componentFileName__.html.template diff --git a/projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template b/projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__componentFileName__.spec.ts.template similarity index 77% rename from projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template rename to projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__componentFileName__.spec.ts.template index 21df6c66b3..0f05f1bfde 100644 --- a/projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +++ b/projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__componentFileName__.spec.ts.template @@ -1,10 +1,11 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { provideHttpClient } from '@angular/common/http'; import { PoPageModule, PoInfoModule<% if(dataView === 'table') { %>, PoTableModule <% } else { %>, PoListViewModule <% } %>} from '@po-ui/ng-components'; -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component'; +import { <%= classify(name) %>Component } from './<%= componentFileName %>'; describe('<%= classify(name) %>Component', () => { let component: <%= classify(name) %>Component; @@ -13,13 +14,13 @@ describe('<%= classify(name) %>Component', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ imports: [ - RouterTestingModule, + RouterModule.forRoot([]), PoPageModule, PoInfoModule,<% if(dataView === 'table') { %> PoTableModule<% } else {%> PoListViewModule<% } %> ], - providers: [provideHttpClient()] + providers: [provideLocationMocks(), provideHttpClient()] }) .compileComponents(); })); diff --git a/projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template b/projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__componentFileName__.ts.template similarity index 88% rename from projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template rename to projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__componentFileName__.ts.template index 90d38a2b25..54a8a91ccf 100644 --- a/projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +++ b/projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__componentFileName__.ts.template @@ -13,8 +13,8 @@ import { PoModule } from '@po-ui/ng-components'; PoPageModule, PoModule ], - templateUrl: './<%= dasherize(name) %>.component.html', - styleUrls: ['./<%= dasherize(name) %>.component.<%= style %>'] + templateUrl: './<%= componentFileName %>.html', + styleUrls: ['./<%= componentFileName %>.<%= style %>'] }) export class <%= classify(name) %>Component implements OnInit { diff --git a/projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template b/projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template deleted file mode 100644 index 08a37212f2..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template +++ /dev/null @@ -1,14 +0,0 @@ -import { NgModule } from '@angular/core'; -import { Routes, RouterModule } from '@angular/router'; - -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component'; - -const routes: Routes = [ - { path: '', component: <%= classify(name) %>Component } -]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class <%= classify(name) %>RoutingModule { } diff --git a/projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__routingFileName__.ts.template b/projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__routingFileName__.ts.template new file mode 100644 index 0000000000..d2ab4235eb --- /dev/null +++ b/projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__routingFileName__.ts.template @@ -0,0 +1,14 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { <%= classify(name) %>Component } from './<%= componentFileName %>'; + +const routes: Routes = [ + { path: '', component: <%= classify(name) %>Component } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class <%= classify(name) %>RoutingModule { } diff --git a/projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template b/projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__componentFileName__.__style__.template similarity index 100% rename from projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template rename to projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__componentFileName__.__style__.template diff --git a/projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template b/projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__componentFileName__.html.template similarity index 100% rename from projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template rename to projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__componentFileName__.html.template diff --git a/projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template b/projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__componentFileName__.spec.ts.template similarity index 78% rename from projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template rename to projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__componentFileName__.spec.ts.template index 8484fd57c5..2b8ab0b80a 100644 --- a/projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +++ b/projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__componentFileName__.spec.ts.template @@ -1,10 +1,11 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { provideHttpClient } from '@angular/common/http'; import { PoPageModule, PoInfoModule<% if(dataView === 'table') { %>, PoTableModule <% } else { %>, PoListViewModule <% } %>} from '@po-ui/ng-components'; -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component'; +import { <%= classify(name) %>Component } from './<%= componentFileName %>'; describe('<%= classify(name) %>Component', () => { let component: <%= classify(name) %>Component; @@ -13,13 +14,13 @@ describe('<%= classify(name) %>Component', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ imports: [ - RouterTestingModule, + RouterModule.forRoot([]), PoPageModule, PoInfoModule,<% if(dataView === 'table') { %> PoTableModule<% } else {%> PoListViewModule<% } %> ], - providers: [provideHttpClient()], + providers: [provideLocationMocks(), provideHttpClient()], declarations: [ <%= classify(name) %>Component ] }) .compileComponents(); diff --git a/projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template b/projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__componentFileName__.ts.template similarity index 86% rename from projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template rename to projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__componentFileName__.ts.template index 546297171d..345c6d7c17 100644 --- a/projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +++ b/projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__componentFileName__.ts.template @@ -4,8 +4,8 @@ import { PoPageAction<% if(dataView === 'table') { %>, PoTableColumn<%} %> } fro @Component({ selector: '<%= selector %>', - templateUrl: './<%= dasherize(name) %>.component.html', - styleUrls: ['./<%= dasherize(name) %>.component.<%= style %>'], + templateUrl: './<%= componentFileName %>.html', + styleUrls: ['./<%= componentFileName %>.<%= style %>'], standalone: false }) export class <%= classify(name) %>Component implements OnInit { diff --git a/projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template b/projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__moduleFileName__.ts.template similarity index 64% rename from projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template rename to projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__moduleFileName__.ts.template index 4bbac8a5c0..b974d67522 100644 --- a/projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template +++ b/projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__moduleFileName__.ts.template @@ -3,8 +3,8 @@ import { NgModule } from '@angular/core'; import { PoModule } from '@po-ui/ng-components'; -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component';<% if (routing) { %> -import { <%= classify(name) %>RoutingModule } from './<%= dasherize(name) %>-routing.module';<% } %> +import { <%= classify(name) %>Component } from './<%= componentFileName %>';<% if (routing) { %> +import { <%= classify(name) %>RoutingModule } from './<%= routingFileName %>';<% } %> @NgModule({ declarations: [ diff --git a/projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template b/projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template deleted file mode 100644 index 08a37212f2..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template +++ /dev/null @@ -1,14 +0,0 @@ -import { NgModule } from '@angular/core'; -import { Routes, RouterModule } from '@angular/router'; - -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component'; - -const routes: Routes = [ - { path: '', component: <%= classify(name) %>Component } -]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class <%= classify(name) %>RoutingModule { } diff --git a/projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__routingFileName__.ts.template b/projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__routingFileName__.ts.template new file mode 100644 index 0000000000..d2ab4235eb --- /dev/null +++ b/projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__routingFileName__.ts.template @@ -0,0 +1,14 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { <%= classify(name) %>Component } from './<%= componentFileName %>'; + +const routes: Routes = [ + { path: '', component: <%= classify(name) %>Component } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class <%= classify(name) %>RoutingModule { } diff --git a/projects/ui/schematics/ng-generate/po-page-list/index.spec.ts b/projects/ui/schematics/ng-generate/po-page-list/index.spec.ts index d22ff4c204..35b164bd35 100644 --- a/projects/ui/schematics/ng-generate/po-page-list/index.spec.ts +++ b/projects/ui/schematics/ng-generate/po-page-list/index.spec.ts @@ -5,7 +5,7 @@ import * as path from 'path'; const collectionPath = path.join(__dirname, '../../collection.json'); -xdescribe('po-page-list:', () => { +describe('po-page-list:', () => { const runner = new SchematicTestRunner('schematics', collectionPath); const workspaceOptions: WorkspaceOptions = { @@ -14,158 +14,145 @@ xdescribe('po-page-list:', () => { version: '6.0.0' }; - const componentOptions: any = { + const applicationOptions: any = { name: 'po', style: 'css', skipTests: false }; + const componentOptions: any = { + name: 'po', + style: 'css', + skipTests: false, + project: 'po' + }; + let appTree: UnitTestTree; beforeEach(async () => { appTree = await runner.runExternalSchematic('@schematics/angular', 'workspace', workspaceOptions); - appTree = await runner.runExternalSchematic('@schematics/angular', 'application', componentOptions, appTree); - }); - - it('should create component', async () => { - const componentName = 'supply'; - const tree = await runner.runSchematic('po-page-list', { ...componentOptions, name: componentName }, appTree); - - const files: Array = tree.files; - - const fullFilePath = (ext: string) => - `/projects/${componentOptions.name}/src/app/${componentName}/${componentName}.component.${ext}`; - - expect(files).toContain(fullFilePath('ts')); - expect(files).toContain(fullFilePath('html')); - expect(files).toContain(fullFilePath('spec.ts')); - expect(files).toContain(fullFilePath(componentOptions.style)); - }); - - it('should create component and module', async () => { - const componentName = 'supply'; - const createModule = true; - - const options = { ...componentOptions, name: componentName, createModule, project: 'po' }; - - const tree = await runner.runSchematic('po-page-list', options, appTree); - - const files: Array = tree.files; - - expect(files).toContain(`/projects/${options.project}/src/app/${componentName}/${componentName}.module.ts`); - }); - - it('should add declaration component in closest module by default', async () => { - const options = { ...componentOptions, name: 'customers' }; - const tree = await runner.runSchematic('po-page-list', options, appTree); - - const moduleContent = getFileContent(tree, `/projects/${componentOptions.name}/src/app/app.module.ts`); - - expect(moduleContent).toMatch(/import.*CustomersComponent.*from '.\/customers\/customers.component'/); - expect(moduleContent).toMatch(/declarations:\s*\[[^\]]+?,\r?\n\s+CustomersComponent\r?\n/m); + appTree = await runner.runExternalSchematic('@schematics/angular', 'application', applicationOptions, appTree); }); - it('should import component module if createModule is true', async () => { - const options = { ...componentOptions, name: 'customers', createModule: true }; + describe('auto-detected style on a project using the current Angular convention:', () => { + it('should create component files without type suffix', async () => { + const componentName = 'supply'; + const tree = await runner.runSchematic('po-page-list', { ...componentOptions, name: componentName }, appTree); - const tree = await runner.runSchematic('po-page-list', options, appTree); - const moduleContent = getFileContent(tree, `/projects/${componentOptions.name}/src/app/app.module.ts`); - - expect(moduleContent).toMatch(/import.*CustomersModule.*from '.\/customers\/customers.module'/); - expect(moduleContent).toMatch(/imports:\s*\[[^\]]+?,\r?\n\s+CustomersModule\r?\n/m); - }); - - it('should generate component.less if style is `less`', async () => { - const options = { ...componentOptions, name: 'customers', style: 'less' }; - const tree = await runner.runSchematic('po-page-list', options, appTree); - - const files = tree.files; - - expect(files).toContain( - `/projects/${componentOptions.name}/src/app/customers/customers.component.${options.style}` - ); - }); + const files: Array = tree.files; - it('should generate component with stylesheet `css` if options.style is empty', async () => { - const options = { ...componentOptions, name: 'customers', style: '' }; + const fullFilePath = (ext: string) => + `/projects/${componentOptions.name}/src/app/${componentName}/${componentName}.${ext}`; - const tree = await runner.runSchematic('po-page-list', options, appTree); - const files = tree.files; + expect(files).toContain(fullFilePath('ts')); + expect(files).toContain(fullFilePath('html')); + expect(files).toContain(fullFilePath('spec.ts')); + expect(files).toContain(fullFilePath(componentOptions.style)); + }); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.css`); - }); + it('should reference sibling files without type suffix in the component file', async () => { + const tree = await runner.runSchematic('po-page-list', { ...componentOptions, name: 'customers' }, appTree); - it('shouldn`t generate component spec if `skipTests` is true', async () => { - const options = { ...componentOptions, name: 'customers', skipTests: true }; - const tree = await runner.runSchematic('po-page-list', options, appTree); + const componentContent = getFileContent( + tree, + `/projects/${componentOptions.name}/src/app/customers/customers.ts` + ); - const files = tree.files; + expect(componentContent).toMatch(/templateUrl: '.\/customers.html'/); + expect(componentContent).toMatch(/styleUrls: \['.\/customers.css'\]/); + }); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.ts`); - expect(files).not.toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.spec.ts`); - }); + it('should generate stylesheet with `less` extension if style is `less`', async () => { + const options = { ...componentOptions, name: 'customers', style: 'less' }; + const tree = await runner.runSchematic('po-page-list', options, appTree); - it('should generate component in path informed', async () => { - // create customers component module to use with path option - const options = { ...componentOptions, name: 'customers', createModule: true }; - await runner.runSchematic('po-page-list', options, appTree); + expect(tree.files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.${options.style}`); + }); - const optionsPath = { - ...componentOptions, - name: 'wms', - path: `/projects/${componentOptions.name}/src/app/customers` - }; + it('shouldn`t generate component spec if `skipTests` is true', async () => { + const options = { ...componentOptions, name: 'customers', skipTests: true }; + const tree = await runner.runSchematic('po-page-list', options, appTree); - const treePath = await runner.runSchematic('po-page-list', optionsPath, appTree); + expect(tree.files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.ts`); + expect(tree.files).not.toContain(`/projects/${componentOptions.name}/src/app/customers/customers.spec.ts`); + }); - const files = treePath.files; + it('should generate component in path informed', async () => { + const optionsPath = { + ...componentOptions, + name: 'wms', + path: `/projects/${componentOptions.name}/src/app/customers` + }; - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.spec.ts`); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.ts`); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.html`); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.${options.style}`); - }); + const treePath = await runner.runSchematic('po-page-list', optionsPath, appTree); - it('should use the custom prefix when create component', async () => { - const prefix = 'wms'; + expect(treePath.files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.ts`); + expect(treePath.files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.html`); + }); - const options = { ...componentOptions, name: 'customers', prefix }; - const tree = await runner.runSchematic('po-page-list', options, appTree); + it('should use the custom prefix when create component', async () => { + const prefix = 'wms'; + const tree = await runner.runSchematic('po-page-list', { ...componentOptions, name: 'customers', prefix }, appTree); - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` - ); + const componentContent = getFileContent( + tree, + `/projects/${componentOptions.name}/src/app/customers/customers.ts` + ); - expect(componentContent).toMatch(new RegExp(`selector: '${prefix}-customers'`)); + expect(componentContent).toMatch(new RegExp(`selector: '${prefix}-customers'`)); + }); }); - it('should use the default prefix when create component if prefix is null', async () => { - const prefix = undefined; - - const options = { ...componentOptions, name: 'customers', sample: true, prefix }; - const tree = await runner.runSchematic('po-page-list', options, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` - ); - - expect(componentContent).toMatch(new RegExp(`selector: 'app-customers'`)); + describe('fileNameStyleGuide 2016 (classic suffixes):', () => { + it('should create component files with the `.component` suffix', async () => { + const componentName = 'supply'; + const options = { ...componentOptions, name: componentName, fileNameStyleGuide: '2016' }; + const tree = await runner.runSchematic('po-page-list', options, appTree); + + const fullFilePath = (ext: string) => + `/projects/${componentOptions.name}/src/app/${componentName}/${componentName}.component.${ext}`; + + expect(tree.files).toContain(fullFilePath('ts')); + expect(tree.files).toContain(fullFilePath('html')); + expect(tree.files).toContain(fullFilePath('spec.ts')); + expect(tree.files).toContain(fullFilePath(componentOptions.style)); + }); + + it('should reference sibling files with the `.component` suffix in the component file', async () => { + const options = { ...componentOptions, name: 'customers', fileNameStyleGuide: '2016' }; + const tree = await runner.runSchematic('po-page-list', options, appTree); + + const componentContent = getFileContent( + tree, + `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` + ); + + expect(componentContent).toMatch(/templateUrl: '.\/customers.component.html'/); + expect(componentContent).toMatch(/styleUrls: \['.\/customers.component.css'\]/); + }); }); - it('should use only the name how prefix when create component if prefix is ""', async () => { - const prefix = ''; - - const options = { ...componentOptions, name: 'customers', prefix }; - const tree = await runner.runSchematic('po-page-list', options, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` - ); - - expect(componentContent).toMatch(new RegExp(`selector: 'customers'`)); + describe('auto-detected style on a project using the classic (2016) convention:', () => { + beforeEach(() => { + appTree.overwrite( + '/projects/po/src/main.ts', + `import { bootstrapApplication } from '@angular/platform-browser';\n` + + `import { App } from './app/app.component';\n` + + `import { appConfig } from './app/app.config';\n` + + `bootstrapApplication(App, appConfig);\n` + ); + appTree.create( + '/projects/po/src/app/app.component.ts', + `import { Component } from '@angular/core';\n@Component({ selector: 'app-root', template: '' })\nexport class App {}\n` + ); + }); + + it('should generate files with the classic `.component` suffix without passing the option', async () => { + const tree = await runner.runSchematic('po-page-list', { ...componentOptions, name: 'customers' }, appTree); + + expect(tree.files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.ts`); + expect(tree.files).not.toContain(`/projects/${componentOptions.name}/src/app/customers/customers.ts`); + }); }); }); diff --git a/projects/ui/schematics/ng-generate/po-page-list/schema.json b/projects/ui/schematics/ng-generate/po-page-list/schema.json index 79c69e33c2..3561e102dd 100644 --- a/projects/ui/schematics/ng-generate/po-page-list/schema.json +++ b/projects/ui/schematics/ng-generate/po-page-list/schema.json @@ -72,6 +72,11 @@ { "value": "list", "label": "PO List View [ https://po-ui.io/documentation/po-list-view ]" } ] } + }, + "fileNameStyleGuide": { + "type": "string", + "description": "The file naming convention to use for generated files. `2016` uses classic suffixes such as `.component.ts` and `.module.ts`. `2025` omits type suffixes. When omitted, the convention already used by the project is auto-detected.", + "enum": ["2016", "2025"] } }, "required": ["name"] diff --git a/projects/ui/schematics/ng-generate/sidemenu/files-standalone/app.__style__.template b/projects/ui/schematics/ng-generate/sidemenu/files-standalone/__appFileName__.__style__.template similarity index 100% rename from projects/ui/schematics/ng-generate/sidemenu/files-standalone/app.__style__.template rename to projects/ui/schematics/ng-generate/sidemenu/files-standalone/__appFileName__.__style__.template diff --git a/projects/ui/schematics/ng-generate/sidemenu/files-standalone/app.html.template b/projects/ui/schematics/ng-generate/sidemenu/files-standalone/__appFileName__.html.template similarity index 100% rename from projects/ui/schematics/ng-generate/sidemenu/files-standalone/app.html.template rename to projects/ui/schematics/ng-generate/sidemenu/files-standalone/__appFileName__.html.template diff --git a/projects/ui/schematics/ng-generate/sidemenu/files-standalone/app.spec.ts.template b/projects/ui/schematics/ng-generate/sidemenu/files-standalone/__appFileName__.spec.ts.template similarity index 61% rename from projects/ui/schematics/ng-generate/sidemenu/files-standalone/app.spec.ts.template rename to projects/ui/schematics/ng-generate/sidemenu/files-standalone/__appFileName__.spec.ts.template index 82477a939f..3424e8e601 100644 --- a/projects/ui/schematics/ng-generate/sidemenu/files-standalone/app.spec.ts.template +++ b/projects/ui/schematics/ng-generate/sidemenu/files-standalone/__appFileName__.spec.ts.template @@ -2,17 +2,17 @@ import { TestBed } from '@angular/core/testing'; import { PoMenuModule, PoPageModule, PoToolbarModule } from '@po-ui/ng-components'; -import { App } from './app'; +import { <%= appClassName %> } from './<%= appFileName %>'; -describe('App', () => { +describe('<%= appClassName %>', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [PoToolbarModule, PoMenuModule, PoPageModule, App], + imports: [PoToolbarModule, PoMenuModule, PoPageModule, <%= appClassName %>], }).compileComponents(); }); it('should create the app', () => { - const fixture = TestBed.createComponent(App); + const fixture = TestBed.createComponent(<%= appClassName %>); fixture.detectChanges(); const app = fixture.componentInstance; expect(app).toBeTruthy(); diff --git a/projects/ui/schematics/ng-generate/sidemenu/files-standalone/app.ts.template b/projects/ui/schematics/ng-generate/sidemenu/files-standalone/__appFileName__.ts.template similarity index 79% rename from projects/ui/schematics/ng-generate/sidemenu/files-standalone/app.ts.template rename to projects/ui/schematics/ng-generate/sidemenu/files-standalone/__appFileName__.ts.template index 48f6f5f0ca..351ffc66b9 100644 --- a/projects/ui/schematics/ng-generate/sidemenu/files-standalone/app.ts.template +++ b/projects/ui/schematics/ng-generate/sidemenu/files-standalone/__appFileName__.ts.template @@ -16,10 +16,10 @@ import { PoMenuModule, PoPageModule ], - templateUrl: './app.html', - styleUrls: ['./app.<%= style %>'], + templateUrl: './<%= appFileName %>.html', + styleUrls: ['./<%= appFileName %>.<%= style %>'], }) -export class App { +export class <%= appClassName %> { readonly menus: Array = [ { label: 'Home', action: this.onClick.bind(this) }, ]; diff --git a/projects/ui/schematics/ng-generate/sidemenu/files/app.__style__.template b/projects/ui/schematics/ng-generate/sidemenu/files/__appFileName__.__style__.template similarity index 100% rename from projects/ui/schematics/ng-generate/sidemenu/files/app.__style__.template rename to projects/ui/schematics/ng-generate/sidemenu/files/__appFileName__.__style__.template diff --git a/projects/ui/schematics/ng-generate/sidemenu/files/app.html.template b/projects/ui/schematics/ng-generate/sidemenu/files/__appFileName__.html.template similarity index 100% rename from projects/ui/schematics/ng-generate/sidemenu/files/app.html.template rename to projects/ui/schematics/ng-generate/sidemenu/files/__appFileName__.html.template diff --git a/projects/ui/schematics/ng-generate/sidemenu/files/__appFileName__.spec.ts.template b/projects/ui/schematics/ng-generate/sidemenu/files/__appFileName__.spec.ts.template new file mode 100644 index 0000000000..8d2332605d --- /dev/null +++ b/projects/ui/schematics/ng-generate/sidemenu/files/__appFileName__.spec.ts.template @@ -0,0 +1,35 @@ +import { provideHttpClientTesting } from '@angular/common/http/testing'; +import { TestBed } from '@angular/core/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; +import { provideHttpClient } from '@angular/common/http'; + +import { + PoMenuModule, + PoPageModule, + PoToolbarModule, +} from '@po-ui/ng-components'; + +import { <%= appClassName %> } from './<%= appFileName %>'; + +describe('<%= appClassName %>', () => { + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ + PoMenuModule, + PoPageModule, + PoToolbarModule, + RouterModule.forRoot([]), + ], + declarations: [<%= appClassName %>], + providers: [provideLocationMocks(), provideHttpClient(), provideHttpClientTesting()] + }).compileComponents(); + }); + + it('should create the app', () => { + const fixture = TestBed.createComponent(<%= appClassName %>); + fixture.detectChanges(); + const app = fixture.componentInstance; + expect(app).toBeTruthy(); + }); +}); diff --git a/projects/ui/schematics/ng-generate/sidemenu/files/app.ts.template b/projects/ui/schematics/ng-generate/sidemenu/files/__appFileName__.ts.template similarity index 71% rename from projects/ui/schematics/ng-generate/sidemenu/files/app.ts.template rename to projects/ui/schematics/ng-generate/sidemenu/files/__appFileName__.ts.template index 6d99986da3..fcebecfc57 100644 --- a/projects/ui/schematics/ng-generate/sidemenu/files/app.ts.template +++ b/projects/ui/schematics/ng-generate/sidemenu/files/__appFileName__.ts.template @@ -4,11 +4,11 @@ import { PoMenuItem } from '@po-ui/ng-components'; @Component({ selector: 'app-root', - templateUrl: './app.html', - styleUrls: ['./app.<%= style %>'], + templateUrl: './<%= appFileName %>.html', + styleUrls: ['./<%= appFileName %>.<%= style %>'], standalone: false }) -export class App { +export class <%= appClassName %> { readonly menus: Array = [ { label: 'Home', action: this.onClick.bind(this) }, ]; diff --git a/projects/ui/schematics/ng-generate/sidemenu/files/app.spec.ts.template b/projects/ui/schematics/ng-generate/sidemenu/files/app.spec.ts.template deleted file mode 100644 index b1f767117d..0000000000 --- a/projects/ui/schematics/ng-generate/sidemenu/files/app.spec.ts.template +++ /dev/null @@ -1,33 +0,0 @@ -import { HttpClientTestingModule } from '@angular/common/http/testing'; -import { TestBed } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; - -import { - PoMenuModule, - PoPageModule, - PoToolbarModule, -} from '@po-ui/ng-components'; - -import { App } from './app'; - -describe('App', () => { - beforeEach(async () => { - await TestBed.configureTestingModule({ - imports: [ - PoMenuModule, - PoPageModule, - PoToolbarModule, - HttpClientTestingModule, - RouterTestingModule, - ], - declarations: [App], - }).compileComponents(); - }); - - it('should create the app', () => { - const fixture = TestBed.createComponent(App); - fixture.detectChanges(); - const app = fixture.componentInstance; - expect(app).toBeTruthy(); - }); -}); diff --git a/projects/ui/schematics/ng-generate/sidemenu/index.spec.ts b/projects/ui/schematics/ng-generate/sidemenu/index.spec.ts index 26c42438a7..157edb5a72 100644 --- a/projects/ui/schematics/ng-generate/sidemenu/index.spec.ts +++ b/projects/ui/schematics/ng-generate/sidemenu/index.spec.ts @@ -5,7 +5,7 @@ import * as path from 'path'; const collectionPath = path.join(__dirname, '../../collection.json'); -xdescribe('sidemenu:', () => { +describe('sidemenu:', () => { const runner = new SchematicTestRunner('schematics', collectionPath); const workspaceOptions: WorkspaceOptions = { @@ -14,55 +14,82 @@ xdescribe('sidemenu:', () => { version: '6.0.0' }; - const componentOptions: any = { + const applicationOptions: any = { name: 'po', style: 'css', skipTests: false }; + const sidemenuOptions: any = { + appName: 'AppName', + style: 'css', + skipTests: false, + project: 'po' + }; + let appTree: UnitTestTree; beforeEach(async () => { appTree = await runner.runExternalSchematic('@schematics/angular', 'workspace', workspaceOptions); - appTree = await runner.runExternalSchematic('@schematics/angular', 'application', componentOptions, appTree); + appTree = await runner.runExternalSchematic('@schematics/angular', 'application', applicationOptions, appTree); }); - describe('Imports:', () => { - it('should add the RouterModule to the project module', async () => { - const routerModuleName = 'RouterModule'; + describe('auto-detected style on a project using the current Angular convention:', () => { + it('should create the app files without type suffix and use the `App` class', async () => { + const tree = await runner.runSchematic('sidemenu', sidemenuOptions, appTree); - const tree = await runner.runSchematic('sidemenu', componentOptions, appTree); - const fileContent = getFileContent(tree, `projects/${componentOptions.name}/src/app/app.module.ts`); + const appDir = `/projects/${sidemenuOptions.project}/src/app`; - expect(fileContent).toContain(routerModuleName); + expect(tree.files).toContain(`${appDir}/app.ts`); + expect(tree.files).toContain(`${appDir}/app.html`); + expect(tree.files).toContain(`${appDir}/app.${sidemenuOptions.style}`); + expect(getFileContent(tree, `${appDir}/app.ts`)).toContain('export class App {'); }); - }); - describe('Component: ', () => { - it('should create app.component.ts|html|css', async () => { - const tree = await runner.runSchematic('sidemenu', componentOptions, appTree); + it('should contain `po-wrapper`, `po-toolbar` and `po-menu` in the app template', async () => { + const tree = await runner.runSchematic('sidemenu', sidemenuOptions, appTree); - const files: Array = tree.files; + const fileContent = getFileContent(tree, `/projects/${sidemenuOptions.project}/src/app/app.html`); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/app.component.ts`); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/app.component.html`); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/app.component.${componentOptions.style}`); + expect(fileContent).toContain('
    '); + expect(fileContent).toContain('po-toolbar'); + expect(fileContent).toContain(''); }); + }); - it('should contains `po-wrapper`, `po-toolbar` and `po-menu` in app.component.html', async () => { - const poWrapper = '
    '; - const poToolbar = 'po-toolbar'; - const poMenu = ''; + describe('fileNameStyleGuide 2016 (classic suffixes):', () => { + it('should create the app files with the `.component` suffix and use the `AppComponent` class', async () => { + const options = { ...sidemenuOptions, fileNameStyleGuide: '2016' }; + const tree = await runner.runSchematic('sidemenu', options, appTree); - const htmlComponent = `projects/${componentOptions.name}/src/app/app.component.html`; + const appDir = `/projects/${sidemenuOptions.project}/src/app`; - const tree = await runner.runSchematic('sidemenu', componentOptions, appTree); + expect(tree.files).toContain(`${appDir}/app.component.ts`); + expect(tree.files).toContain(`${appDir}/app.component.html`); + expect(tree.files).toContain(`${appDir}/app.component.${sidemenuOptions.style}`); + expect(getFileContent(tree, `${appDir}/app.component.ts`)).toContain('export class AppComponent {'); + }); + }); + + describe('auto-detected style on a project using the classic (2016) convention:', () => { + beforeEach(() => { + appTree.overwrite( + '/projects/po/src/main.ts', + `import { bootstrapApplication } from '@angular/platform-browser';\n` + + `import { App } from './app/app.component';\n` + + `import { appConfig } from './app/app.config';\n` + + `bootstrapApplication(App, appConfig);\n` + ); + appTree.create( + '/projects/po/src/app/app.component.ts', + `import { Component } from '@angular/core';\n@Component({ selector: 'app-root', template: '' })\nexport class App {}\n` + ); + }); - const fileContent = getFileContent(tree, htmlComponent); + it('should generate the app files with the classic `.component` suffix without passing the option', async () => { + const tree = await runner.runSchematic('sidemenu', sidemenuOptions, appTree); - expect(fileContent).toContain(poWrapper); - expect(fileContent).toContain(poToolbar); - expect(fileContent).toContain(poMenu); + expect(tree.files).toContain(`/projects/${sidemenuOptions.project}/src/app/app.component.ts`); }); }); }); diff --git a/projects/ui/schematics/ng-generate/sidemenu/index.ts b/projects/ui/schematics/ng-generate/sidemenu/index.ts index bd90e54b7f..a6ab7e7e8e 100644 --- a/projects/ui/schematics/ng-generate/sidemenu/index.ts +++ b/projects/ui/schematics/ng-generate/sidemenu/index.ts @@ -24,7 +24,12 @@ import { getProjectMainFile, getWorkspaceConfigGracefully } from '@po-ui/ng-schematics/project'; -import { supportedCssExtensions } from '@po-ui/ng-schematics/utils'; +import { + detectFileNameStyleGuide, + FileNameStyleGuide, + getFileNameSuffixes, + supportedCssExtensions +} from '@po-ui/ng-schematics/utils'; import { WorkspaceSchema } from '@schematics/angular/utility/workspace-models'; import { Schema as ComponentOptions } from './schema'; @@ -54,12 +59,21 @@ function createAppComponent(options: ComponentOptions): Rule { options.style = 'css'; } + // Use the explicit option when provided, otherwise auto-detect the style already used by the project. + const styleGuide: FileNameStyleGuide = + options.fileNameStyleGuide ?? detectFileNameStyleGuide(tree, browserEntryPoint); + const { componentSuffix } = getFileNameSuffixes(styleGuide); + const appFileName = `app${componentSuffix}`; + const appClassName = styleGuide === '2016' ? 'AppComponent' : 'App'; + + const templateOptions = { ...options, appFileName, appClassName }; + const templateSource = applyWithOverwrite(url(urlFile), [ options.skipTests ? filter(path => !path.endsWith('.spec.ts.template')) : noop(), - pathTemplate({ ...options }), + pathTemplate({ ...templateOptions }), applyTemplates({ ...strings, - ...options + ...templateOptions }), move(normalize(sourceDir)) ]); diff --git a/projects/ui/schematics/ng-generate/sidemenu/schema.json b/projects/ui/schematics/ng-generate/sidemenu/schema.json index 82f5466580..997c2eca36 100644 --- a/projects/ui/schematics/ng-generate/sidemenu/schema.json +++ b/projects/ui/schematics/ng-generate/sidemenu/schema.json @@ -26,6 +26,11 @@ "description": "When true, does not create \"spec.ts\" test files for the app.", "type": "boolean", "default": false + }, + "fileNameStyleGuide": { + "type": "string", + "description": "The file naming convention to use for generated files. `2016` uses classic suffixes such as `.component.ts`. `2025` omits type suffixes. When omitted, the convention already used by the project is auto-detected.", + "enum": ["2016", "2025"] } }, "required": [] diff --git a/projects/ui/schematics/ng-generate/sidemenu/schema.ts b/projects/ui/schematics/ng-generate/sidemenu/schema.ts index a3c1af796c..45ef06e566 100644 --- a/projects/ui/schematics/ng-generate/sidemenu/schema.ts +++ b/projects/ui/schematics/ng-generate/sidemenu/schema.ts @@ -13,4 +13,14 @@ export interface Schema { /** When true, does not create \"spec.ts\" test files for the app. */ skipTests?: boolean; + + /** + * The file naming convention to use for generated files. + * + * - `2016`: classic Angular Style Guide suffixes (e.g. `app.component.ts`). + * - `2025`: current Angular convention without type suffixes (e.g. `app.ts`). + * + * When omitted, the convention already used by the project is auto-detected. + */ + fileNameStyleGuide?: '2016' | '2025'; } diff --git a/projects/ui/schematics/ng-update/v22/changes.ts b/projects/ui/schematics/ng-update/v22/changes.ts new file mode 100644 index 0000000000..197dbab8a9 --- /dev/null +++ b/projects/ui/schematics/ng-update/v22/changes.ts @@ -0,0 +1,12 @@ +import { UpdateDependencies } from '@po-ui/ng-schematics/package-config'; + +export const updateDepedenciesVersion: UpdateDependencies = { + dependencies: [ + '@po-ui/ng-components', + '@po-ui/ng-code-editor', + '@po-ui/ng-templates', + '@po-ui/ng-storage', + '@po-ui/ng-sync', + '@po-ui/style' + ] +}; diff --git a/projects/ui/schematics/ng-update/v22/index.ts b/projects/ui/schematics/ng-update/v22/index.ts new file mode 100644 index 0000000000..882d1f5f2b --- /dev/null +++ b/projects/ui/schematics/ng-update/v22/index.ts @@ -0,0 +1,62 @@ +import { chain, Rule, SchematicContext, Tree } from '@angular-devkit/schematics'; +import { NodePackageInstallTask } from '@angular-devkit/schematics/tasks'; + +import { updatePackageJson } from '@po-ui/ng-schematics/package-config'; + +import { updateDepedenciesVersion } from './changes'; + +import * as readline from 'readline'; + +function askQuestion(query: string): Promise { + const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout + }); + + return new Promise(resolve => + rl.question(query, (answer: string) => { + rl.close(); + resolve(answer); + }) + ); +} + +async function main(): Promise { + const message = + '\n⚠️ Antes de atualizar o PO UI para a versão 22, é necessário que o Angular do seu projeto ' + + 'já esteja na versão 22.\n' + + 'Siga o guia oficial de atualização do Angular: https://angular.dev/update-guide\n\n' + + 'Você já executou "ng update @angular/core@22 @angular/cli@22" e as migrações necessárias do Angular 22? (yes/no) '; + + let answer = 'yes'; + + if (process.stdin.isTTY) { + answer = await askQuestion(message); + } else { + console.log(message); + console.log('Execução em modo não-interativo detectada. Assumindo "yes" como padrão.\n'); + } + + const confirmed = ['yes', 'y', 'sim', 's', ''].includes(answer.trim().toLowerCase()); + + if (!confirmed) { + console.log( + '\n❌ Atualização cancelada. Execute primeiro as migrações do Angular 22:\n' + + ' ng update @angular/core@22 @angular/cli@22\n' + + ' Consulte: https://angular.dev/update-guide\n' + ); + return chain([]); + } + + return chain([updatePackageJson('0.0.0-PLACEHOLDER', updateDepedenciesVersion), postUpdate()]); +} + +export default function (): Rule { + return (_tree: Tree, _context: SchematicContext) => main(); +} + +function postUpdate() { + return (_: Tree, context: SchematicContext) => { + context.addTask(new NodePackageInstallTask()); + }; +} diff --git a/projects/ui/src/lib/components/po-accordion/po-accordion-item-body/po-accordion-item-body.component.html b/projects/ui/src/lib/components/po-accordion/po-accordion-item-body/po-accordion-item-body.component.html index a237407ee4..4c8c3f8ebc 100644 --- a/projects/ui/src/lib/components/po-accordion/po-accordion-item-body/po-accordion-item-body.component.html +++ b/projects/ui/src/lib/components/po-accordion/po-accordion-item-body/po-accordion-item-body.component.html @@ -1,5 +1,5 @@ @if (expanded) { -
    +
    diff --git a/projects/ui/src/lib/components/po-accordion/po-accordion-item-body/po-accordion-item-body.component.spec.ts b/projects/ui/src/lib/components/po-accordion/po-accordion-item-body/po-accordion-item-body.component.spec.ts index 31f07f14c8..b13069044f 100644 --- a/projects/ui/src/lib/components/po-accordion/po-accordion-item-body/po-accordion-item-body.component.spec.ts +++ b/projects/ui/src/lib/components/po-accordion/po-accordion-item-body/po-accordion-item-body.component.spec.ts @@ -1,5 +1,3 @@ -import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; - import { ComponentFixture, TestBed } from '@angular/core/testing'; import { PoAccordionItemBodyComponent } from './po-accordion-item-body.component'; @@ -12,8 +10,7 @@ describe('PoAccordionItemBodyComponent:', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - declarations: [PoAccordionItemBodyComponent], - imports: [BrowserAnimationsModule] + declarations: [PoAccordionItemBodyComponent] }).compileComponents(); fixture = TestBed.createComponent(PoAccordionItemBodyComponent); @@ -52,4 +49,42 @@ describe('PoAccordionItemBodyComponent:', () => { expect(body).toBeFalsy(); }); }); + + describe('Methods:', () => { + it('animateEnter: should animate height from 0 to scrollHeight and call animationComplete', () => { + const animationComplete = jasmine.createSpy('animationComplete'); + const animation: any = {}; + const element = document.createElement('div'); + Object.defineProperty(element, 'scrollHeight', { value: 120 }); + spyOn(element, 'animate').and.returnValue(animation); + + component.animateEnter({ target: element, animationComplete }); + + expect(element.animate).toHaveBeenCalledWith([{ height: '0px' }, { height: '120px' }], { + duration: 200, + easing: 'linear' + }); + + animation.onfinish(); + expect(animationComplete).toHaveBeenCalled(); + }); + + it('animateLeave: should animate height from scrollHeight to 0 and call animationComplete', () => { + const animationComplete = jasmine.createSpy('animationComplete'); + const animation: any = {}; + const element = document.createElement('div'); + Object.defineProperty(element, 'scrollHeight', { value: 80 }); + spyOn(element, 'animate').and.returnValue(animation); + + component.animateLeave({ target: element, animationComplete }); + + expect(element.animate).toHaveBeenCalledWith([{ height: '80px' }, { height: '0px' }], { + duration: 200, + easing: 'linear' + }); + + animation.onfinish(); + expect(animationComplete).toHaveBeenCalled(); + }); + }); }); diff --git a/projects/ui/src/lib/components/po-accordion/po-accordion-item-body/po-accordion-item-body.component.ts b/projects/ui/src/lib/components/po-accordion/po-accordion-item-body/po-accordion-item-body.component.ts index 2414b2cdfb..9054315342 100644 --- a/projects/ui/src/lib/components/po-accordion/po-accordion-item-body/po-accordion-item-body.component.ts +++ b/projects/ui/src/lib/components/po-accordion/po-accordion-item-body/po-accordion-item-body.component.ts @@ -1,17 +1,35 @@ -import { Component, Input } from '@angular/core'; -import { animate, style, transition, trigger } from '@angular/animations'; +import { AnimationCallbackEvent, Component, Input, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'po-accordion-item-body', templateUrl: 'po-accordion-item-body.component.html', - animations: [ - trigger('toggleBody', [ - transition('* => void', [style({ height: '*' }), animate(200, style({ height: 0 }))]), - transition('void => *', [style({ height: '0' }), animate(200, style({ height: '*' }))]) - ]) - ], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoAccordionItemBodyComponent { @Input('p-expanded') expanded: boolean = false; + + animateEnter(event: AnimationCallbackEvent): void { + this.animateHeight(event, '0px', `${(event.target as HTMLElement).scrollHeight}px`); + } + + animateLeave(event: AnimationCallbackEvent): void { + this.animateHeight(event, `${(event.target as HTMLElement).scrollHeight}px`, '0px'); + } + + private animateHeight(event: AnimationCallbackEvent, from: string, to: string): void { + const element = event.target as HTMLElement; + const previousOverflow = element.style.overflow; + element.style.overflow = 'hidden'; + + const animation = element.animate([{ height: from }, { height: to }], { + duration: 200, + easing: 'linear' + }); + + animation.onfinish = () => { + element.style.overflow = previousOverflow; + event.animationComplete(); + }; + } } diff --git a/projects/ui/src/lib/components/po-accordion/po-accordion-item/po-accordion-item.component.ts b/projects/ui/src/lib/components/po-accordion/po-accordion-item/po-accordion-item.component.ts index ebe0bb0772..8f938f0ae2 100644 --- a/projects/ui/src/lib/components/po-accordion/po-accordion-item/po-accordion-item.component.ts +++ b/projects/ui/src/lib/components/po-accordion/po-accordion-item/po-accordion-item.component.ts @@ -1,4 +1,14 @@ -import { Component, EventEmitter, Input, OnDestroy, Output, TemplateRef, ViewChild, inject } from '@angular/core'; +import { + Component, + EventEmitter, + Input, + OnDestroy, + Output, + TemplateRef, + ViewChild, + inject, + ChangeDetectionStrategy +} from '@angular/core'; import { Subscription, filter } from 'rxjs'; import { convertToBoolean } from '../../../utils/util'; @@ -39,6 +49,7 @@ import { PoAccordionService } from '../services/po-accordion.service'; @Component({ selector: 'po-accordion-item', templateUrl: 'po-accordion-item.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoAccordionItemComponent implements OnDestroy { diff --git a/projects/ui/src/lib/components/po-accordion/po-accordion-manager/po-accordion-manager.component.spec.ts b/projects/ui/src/lib/components/po-accordion/po-accordion-manager/po-accordion-manager.component.spec.ts index 285826399b..24e9d7ea63 100644 --- a/projects/ui/src/lib/components/po-accordion/po-accordion-manager/po-accordion-manager.component.spec.ts +++ b/projects/ui/src/lib/components/po-accordion/po-accordion-manager/po-accordion-manager.component.spec.ts @@ -1,5 +1,4 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { PoAccordionManagerComponent } from './po-accordion-manager.component'; @@ -12,7 +11,7 @@ describe('PoAccordionManagerComponent:', () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [PoAccordionManagerComponent], - imports: [BrowserAnimationsModule] + imports: [] }).compileComponents(); fixture = TestBed.createComponent(PoAccordionManagerComponent); diff --git a/projects/ui/src/lib/components/po-accordion/po-accordion-manager/po-accordion-manager.component.ts b/projects/ui/src/lib/components/po-accordion/po-accordion-manager/po-accordion-manager.component.ts index 8e5a997262..f810bb701b 100644 --- a/projects/ui/src/lib/components/po-accordion/po-accordion-manager/po-accordion-manager.component.ts +++ b/projects/ui/src/lib/components/po-accordion/po-accordion-manager/po-accordion-manager.component.ts @@ -8,13 +8,15 @@ import { OnChanges, Output, SimpleChanges, - ViewChild + ViewChild, + ChangeDetectionStrategy } from '@angular/core'; import { PoAccordionLiterals } from '../interfaces/po-accordion-literals.interface'; @Component({ selector: 'po-accordion-manager', templateUrl: 'po-accordion-manager.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoAccordionManagerComponent implements OnChanges { diff --git a/projects/ui/src/lib/components/po-accordion/po-accordion.component.spec.ts b/projects/ui/src/lib/components/po-accordion/po-accordion.component.spec.ts index aeca031853..619c3e684b 100644 --- a/projects/ui/src/lib/components/po-accordion/po-accordion.component.spec.ts +++ b/projects/ui/src/lib/components/po-accordion/po-accordion.component.spec.ts @@ -1,5 +1,4 @@ -import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; -import { Component, QueryList } from '@angular/core'; +import { Component, QueryList, ChangeDetectionStrategy } from '@angular/core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { PoAccordionComponent } from './po-accordion.component'; @@ -13,6 +12,7 @@ import { PoAccordionService } from './services/po-accordion.service'; Item 2 `, + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) class PoAccordionMockComponent {} @@ -29,7 +29,7 @@ describe('PoAccordionComponent:', () => { await TestBed.configureTestingModule({ declarations: [PoAccordionMockComponent], providers: [PoAccordionService], - imports: [PoAccordionModule, BrowserAnimationsModule] + imports: [PoAccordionModule] }).compileComponents(); fixture = TestBed.createComponent(PoAccordionComponent); diff --git a/projects/ui/src/lib/components/po-accordion/po-accordion.component.ts b/projects/ui/src/lib/components/po-accordion/po-accordion.component.ts index 088284cccb..4adb6d1527 100644 --- a/projects/ui/src/lib/components/po-accordion/po-accordion.component.ts +++ b/projects/ui/src/lib/components/po-accordion/po-accordion.component.ts @@ -1,4 +1,12 @@ -import { Component, ContentChildren, OnDestroy, QueryList, ViewChildren, inject } from '@angular/core'; +import { + Component, + ContentChildren, + OnDestroy, + QueryList, + ViewChildren, + inject, + ChangeDetectionStrategy +} from '@angular/core'; import { Subscription } from 'rxjs'; @@ -32,6 +40,7 @@ import { PoAccordionService } from './services/po-accordion.service'; selector: 'po-accordion', templateUrl: 'po-accordion.component.html', providers: [PoAccordionService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoAccordionComponent extends PoAccordionBaseComponent implements OnDestroy { diff --git a/projects/ui/src/lib/components/po-accordion/po-accordion.module.ts b/projects/ui/src/lib/components/po-accordion/po-accordion.module.ts index 8c57dcb8ee..98ebcd490a 100644 --- a/projects/ui/src/lib/components/po-accordion/po-accordion.module.ts +++ b/projects/ui/src/lib/components/po-accordion/po-accordion.module.ts @@ -16,44 +16,6 @@ import { PoAccordionComponent } from './po-accordion.component'; * @description * * Módulo do componente `po-accordion`. - * - * > Para o correto funcionamento do componente `po-accordion`, deve ser importado o módulo `BrowserAnimationsModule` no - * > módulo principal da sua aplicação. - * - * Módulo da aplicação: - * ``` - * import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; - * import { PoModule } from '@po-ui/ng-components'; - * ... - * - * @NgModule({ - * imports: [ - * BrowserModule, - * BrowserAnimationsModule, - * ... - * PoModule - * ], - * declarations: [ - * AppComponent, - * ... - * ], - * providers: [], - * bootstrap: [AppComponent] - * }) - * export class AppModule { } - * ``` - * - * Em aplicações Standalone, utilize a seguinte configuração para o bootstrap: - * - * ``` - * import { bootstrapApplication } from '@angular/platform-browser'; - * import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; - * import { AppComponent } from './app.component'; - * - * bootstrapApplication(AppComponent, { - * providers: [importProvidersFrom(BrowserAnimationsModule)] - * }).catch(err => console.error(err)); - * ``` */ @NgModule({ imports: [CommonModule, PoTagModule, PoIconModule, PoDividerModule, PoTooltipModule], diff --git a/projects/ui/src/lib/components/po-accordion/samples/sample-po-accordion-basic/sample-po-accordion-basic.component.ts b/projects/ui/src/lib/components/po-accordion/samples/sample-po-accordion-basic/sample-po-accordion-basic.component.ts index f1763af443..b489715b5e 100644 --- a/projects/ui/src/lib/components/po-accordion/samples/sample-po-accordion-basic/sample-po-accordion-basic.component.ts +++ b/projects/ui/src/lib/components/po-accordion/samples/sample-po-accordion-basic/sample-po-accordion-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-accordion-basic', templateUrl: './sample-po-accordion-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoAccordionBasicComponent {} diff --git a/projects/ui/src/lib/components/po-accordion/samples/sample-po-accordion-faq/sample-po-accordion-faq.component.ts b/projects/ui/src/lib/components/po-accordion/samples/sample-po-accordion-faq/sample-po-accordion-faq.component.ts index e4686a42f0..4166af2703 100644 --- a/projects/ui/src/lib/components/po-accordion/samples/sample-po-accordion-faq/sample-po-accordion-faq.component.ts +++ b/projects/ui/src/lib/components/po-accordion/samples/sample-po-accordion-faq/sample-po-accordion-faq.component.ts @@ -1,10 +1,11 @@ -import { AfterContentInit, Component, ViewChild } from '@angular/core'; +import { AfterContentInit, Component, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { PoAccordionItemComponent } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-accordion-faq', templateUrl: './sample-po-accordion-faq.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoAccordionFaqComponent implements AfterContentInit { diff --git a/projects/ui/src/lib/components/po-accordion/samples/sample-po-accordion-labs/sample-po-accordion-labs.component.ts b/projects/ui/src/lib/components/po-accordion/samples/sample-po-accordion-labs/sample-po-accordion-labs.component.ts index c99f80a4ca..a04f63716d 100644 --- a/projects/ui/src/lib/components/po-accordion/samples/sample-po-accordion-labs/sample-po-accordion-labs.component.ts +++ b/projects/ui/src/lib/components/po-accordion/samples/sample-po-accordion-labs/sample-po-accordion-labs.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoAccordionItemComponent, @@ -12,6 +12,7 @@ import { @Component({ selector: 'sample-po-accordion-labs', templateUrl: './sample-po-accordion-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoAccordionLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-avatar/samples/sample-po-avatar-basic/sample-po-avatar-basic.component.ts b/projects/ui/src/lib/components/po-avatar/samples/sample-po-avatar-basic/sample-po-avatar-basic.component.ts index a59f1ae24d..ac92bed292 100644 --- a/projects/ui/src/lib/components/po-avatar/samples/sample-po-avatar-basic/sample-po-avatar-basic.component.ts +++ b/projects/ui/src/lib/components/po-avatar/samples/sample-po-avatar-basic/sample-po-avatar-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-avatar-basic', templateUrl: './sample-po-avatar-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoAvatarBasicComponent {} diff --git a/projects/ui/src/lib/components/po-avatar/samples/sample-po-avatar-business-card/sample-po-avatar-business-card.component.ts b/projects/ui/src/lib/components/po-avatar/samples/sample-po-avatar-business-card/sample-po-avatar-business-card.component.ts index 784c959304..0f790345bf 100644 --- a/projects/ui/src/lib/components/po-avatar/samples/sample-po-avatar-business-card/sample-po-avatar-business-card.component.ts +++ b/projects/ui/src/lib/components/po-avatar/samples/sample-po-avatar-business-card/sample-po-avatar-business-card.component.ts @@ -1,9 +1,10 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-avatar-business-card', styleUrls: ['./sample-po-avatar-business-card.component.css'], templateUrl: './sample-po-avatar-business-card.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoAvatarBusinessCardComponent { diff --git a/projects/ui/src/lib/components/po-avatar/samples/sample-po-avatar-labs/sample-po-avatar-labs.component.ts b/projects/ui/src/lib/components/po-avatar/samples/sample-po-avatar-labs/sample-po-avatar-labs.component.ts index d495c66c5c..5852febf6d 100644 --- a/projects/ui/src/lib/components/po-avatar/samples/sample-po-avatar-labs/sample-po-avatar-labs.component.ts +++ b/projects/ui/src/lib/components/po-avatar/samples/sample-po-avatar-labs/sample-po-avatar-labs.component.ts @@ -1,10 +1,11 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-avatar-labs', templateUrl: './sample-po-avatar-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoAvatarLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-badge/po-badge.component.ts b/projects/ui/src/lib/components/po-badge/po-badge.component.ts index 7f13eb52c1..20313b2b90 100644 --- a/projects/ui/src/lib/components/po-badge/po-badge.component.ts +++ b/projects/ui/src/lib/components/po-badge/po-badge.component.ts @@ -1,4 +1,4 @@ -import { Component, OnChanges, OnInit, SimpleChanges, inject } from '@angular/core'; +import { Component, OnChanges, OnInit, SimpleChanges, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoBadgeBaseComponent } from './po-badge-base.component'; import { PoBadgeLiterals } from './interfaces/po-badge-literals.interface'; @@ -32,6 +32,7 @@ const PO_BADGE_MAX_NOTIFICATIONS = 9; selector: 'po-badge', templateUrl: './po-badge.component.html', styles: [], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoBadgeComponent extends PoBadgeBaseComponent implements OnInit, OnChanges { diff --git a/projects/ui/src/lib/components/po-badge/samples/sample-po-badge-basic/sample-po-badge-basic.component.ts b/projects/ui/src/lib/components/po-badge/samples/sample-po-badge-basic/sample-po-badge-basic.component.ts index 30e613f2ea..b6144d6828 100644 --- a/projects/ui/src/lib/components/po-badge/samples/sample-po-badge-basic/sample-po-badge-basic.component.ts +++ b/projects/ui/src/lib/components/po-badge/samples/sample-po-badge-basic/sample-po-badge-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-badge-basic', templateUrl: './sample-po-badge-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoBadgeBasicComponent {} diff --git a/projects/ui/src/lib/components/po-badge/samples/sample-po-badge-labs/sample-po-badge-labs.component.ts b/projects/ui/src/lib/components/po-badge/samples/sample-po-badge-labs/sample-po-badge-labs.component.ts index d71a88ac8b..bb040036a1 100644 --- a/projects/ui/src/lib/components/po-badge/samples/sample-po-badge-labs/sample-po-badge-labs.component.ts +++ b/projects/ui/src/lib/components/po-badge/samples/sample-po-badge-labs/sample-po-badge-labs.component.ts @@ -1,9 +1,10 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption, PoRadioGroupOption } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-badge-labs', templateUrl: './sample-po-badge-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoBadgeLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-badge/samples/sample-po-badge-message/sample-po-badge-message.component.ts b/projects/ui/src/lib/components/po-badge/samples/sample-po-badge-message/sample-po-badge-message.component.ts index dd594045cf..ef5dcfc5fd 100644 --- a/projects/ui/src/lib/components/po-badge/samples/sample-po-badge-message/sample-po-badge-message.component.ts +++ b/projects/ui/src/lib/components/po-badge/samples/sample-po-badge-message/sample-po-badge-message.component.ts @@ -1,9 +1,10 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-badge-message', templateUrl: './sample-po-badge-message.component.html', styleUrls: ['./sample-po-badge-message.component.css'], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoBadgeMessageComponent { diff --git a/projects/ui/src/lib/components/po-breadcrumb/po-breadcrumb-favorite/po-breadcrumb-favorite.component.spec.ts b/projects/ui/src/lib/components/po-breadcrumb/po-breadcrumb-favorite/po-breadcrumb-favorite.component.spec.ts index 65b81de08a..9abde79c24 100644 --- a/projects/ui/src/lib/components/po-breadcrumb/po-breadcrumb-favorite/po-breadcrumb-favorite.component.spec.ts +++ b/projects/ui/src/lib/components/po-breadcrumb/po-breadcrumb-favorite/po-breadcrumb-favorite.component.spec.ts @@ -5,7 +5,7 @@ import { Observable } from 'rxjs'; import { PoBreadcrumbFavoriteComponent } from './po-breadcrumb-favorite.component'; import { PoBreadcrumbFavoriteService } from './po-breadcrumb-favorite.service'; -import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; describe('PoBreadcrumbFavoriteComponent', () => { let component: PoBreadcrumbFavoriteComponent; @@ -23,7 +23,7 @@ describe('PoBreadcrumbFavoriteComponent', () => { await TestBed.configureTestingModule({ declarations: [PoBreadcrumbFavoriteComponent], imports: [], - providers: [provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting()] + providers: [provideHttpClient(withXhr(), withInterceptorsFromDi()), provideHttpClientTesting()] }).compileComponents(); fixture = TestBed.createComponent(PoBreadcrumbFavoriteComponent); diff --git a/projects/ui/src/lib/components/po-breadcrumb/po-breadcrumb-favorite/po-breadcrumb-favorite.component.ts b/projects/ui/src/lib/components/po-breadcrumb/po-breadcrumb-favorite/po-breadcrumb-favorite.component.ts index a792cbecc3..c2406fe137 100644 --- a/projects/ui/src/lib/components/po-breadcrumb/po-breadcrumb-favorite/po-breadcrumb-favorite.component.ts +++ b/projects/ui/src/lib/components/po-breadcrumb/po-breadcrumb-favorite/po-breadcrumb-favorite.component.ts @@ -1,4 +1,4 @@ -import { Component, Input, OnDestroy, OnInit, inject } from '@angular/core'; +import { Component, Input, OnDestroy, OnInit, inject, ChangeDetectionStrategy } from '@angular/core'; import { Subscription } from 'rxjs'; @@ -37,6 +37,7 @@ export const PoBreadcrumbLiterals: object = { selector: 'po-breadcrumb-favorite', templateUrl: './po-breadcrumb-favorite.component.html', providers: [PoBreadcrumbFavoriteService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoBreadcrumbFavoriteComponent implements OnInit, OnDestroy { diff --git a/projects/ui/src/lib/components/po-breadcrumb/po-breadcrumb-favorite/po-breadcrumb-favorite.service.spec.ts b/projects/ui/src/lib/components/po-breadcrumb/po-breadcrumb-favorite/po-breadcrumb-favorite.service.spec.ts index 522f1cdeae..560d5fd38b 100644 --- a/projects/ui/src/lib/components/po-breadcrumb/po-breadcrumb-favorite/po-breadcrumb-favorite.service.spec.ts +++ b/projects/ui/src/lib/components/po-breadcrumb/po-breadcrumb-favorite/po-breadcrumb-favorite.service.spec.ts @@ -1,5 +1,5 @@ import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; -import { HttpRequest, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { HttpRequest, provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; import { TestBed } from '@angular/core/testing'; import { PoBreadcrumbFavoriteService } from './po-breadcrumb-favorite.service'; @@ -21,7 +21,11 @@ describe('PoBreadcrumbFavoriteService:', () => { beforeEach(() => { TestBed.configureTestingModule({ imports: [], - providers: [PoBreadcrumbFavoriteService, provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting()] + providers: [ + PoBreadcrumbFavoriteService, + provideHttpClient(withXhr(), withInterceptorsFromDi()), + provideHttpClientTesting() + ] }); breadcrumbFavoriteService = TestBed.inject(PoBreadcrumbFavoriteService); diff --git a/projects/ui/src/lib/components/po-breadcrumb/po-breadcrumb.component.spec.ts b/projects/ui/src/lib/components/po-breadcrumb/po-breadcrumb.component.spec.ts index daf6ad4671..0ffd6fccf2 100644 --- a/projects/ui/src/lib/components/po-breadcrumb/po-breadcrumb.component.spec.ts +++ b/projects/ui/src/lib/components/po-breadcrumb/po-breadcrumb.component.spec.ts @@ -1,23 +1,25 @@ import { ComponentFixture, fakeAsync, TestBed, tick } from '@angular/core/testing'; -import { Component } from '@angular/core'; +import { provideLocationMocks } from '@angular/common/testing'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { HttpClient, HttpHandler } from '@angular/common/http'; -import { Routes } from '@angular/router'; -import { RouterTestingModule } from '@angular/router/testing'; +import { Routes, RouterModule } from '@angular/router'; import { PoBreadcrumbComponent } from './po-breadcrumb.component'; import { PoBreadcrumbFavoriteComponent } from './po-breadcrumb-favorite/po-breadcrumb-favorite.component'; import { PoBreadcrumbItem } from './po-breadcrumb-item.interface'; @Component({ - selector: 'app-breadcrumb-documentation', + selector: 'app-documentation-test', template: 'Documentation', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class DocumentationComponent {} @Component({ - selector: 'app-breadcrumb-guides', + selector: 'app-guides-test', template: 'Guides', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class GuidesComponent {} @@ -51,9 +53,9 @@ describe('PoBreadcrumbComponent:', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [RouterTestingModule.withRoutes(routes)], + imports: [RouterModule.forRoot(routes)], declarations: [PoBreadcrumbComponent, PoBreadcrumbFavoriteComponent, DocumentationComponent, GuidesComponent], - providers: [HttpClient, HttpHandler] + providers: [provideLocationMocks(), HttpClient, HttpHandler] }).compileComponents(); fixture = TestBed.createComponent(PoBreadcrumbComponent); @@ -65,6 +67,19 @@ describe('PoBreadcrumbComponent:', () => { fixture.detectChanges(); }); + afterEach(() => { + // O ambiente roda com `teardown: { destroyAfterEach: false }`, então o + // `ngOnDestroy` não é chamado automaticamente entre os testes. Sem isso, o + // listener de `window:resize` registrado em `ngAfterViewInit` (via + // `initializeResizeListener`) permanece vivo apontando para uma instância + // órfã. Ao acumularem-se entre os testes, qualquer `window.dispatchEvent('resize')` + // de outros specs dispara esses callbacks órfãos (agendando setTimeout que + // acessa `breadcrumbElement` de componentes já descartados), corrompendo a + // execução e a medição de cobertura da suíte completa. + // Destruir o fixture aqui remove o listener e limpa o timer pendente. + fixture?.destroy(); + }); + it('should be created', () => { expect(component).toBeTruthy(); }); @@ -236,8 +251,21 @@ describe('PoBreadcrumbComponent:', () => { it('should called when window resize.', () => { spyOn(component, 'debounceResize'); + + // Captura o callback registrado para 'resize' e o invoca diretamente, em vez + // de disparar um evento global em `window` (que dependeria de listeners de + // outras instâncias). O `removeResizeListener` ao final evita vazamento. + let resizeCallback: (event: Event) => void; + spyOn(component['renderer'], 'listen').and.callFake((target: any, eventName: string, callback: any) => { + if (target === 'window' && eventName === 'resize') { + resizeCallback = callback; + } + return () => {}; + }); + component['initializeResizeListener'](); - window.dispatchEvent(eventResize); + resizeCallback(eventResize); + component['removeResizeListener'](); expect(component[debounceResize]).toHaveBeenCalled(); }); @@ -440,7 +468,7 @@ describe('PoBreadcrumbComponent:', () => { { label: 'Teste nível 4', link: '/test/nivel/4' } ]; - component['_breadcrumbItemsLenght'] = 400; + component['_breadcrumbItemsLenght'] = 500; spyOn(component, 'getBreadcrumbWidth').and.returnValue(300); component['calcBreadcrumb'](); diff --git a/projects/ui/src/lib/components/po-breadcrumb/po-breadcrumb.component.ts b/projects/ui/src/lib/components/po-breadcrumb/po-breadcrumb.component.ts index 050581dfeb..0abec05f98 100644 --- a/projects/ui/src/lib/components/po-breadcrumb/po-breadcrumb.component.ts +++ b/projects/ui/src/lib/components/po-breadcrumb/po-breadcrumb.component.ts @@ -7,7 +7,8 @@ import { OnDestroy, Renderer2, ViewChild, - inject + inject, + ChangeDetectionStrategy } from '@angular/core'; import { PoBreadcrumbBaseComponent } from './po-breadcrumb-base.component'; @@ -48,6 +49,7 @@ export const poBreadcrumbLiterals: object = { @Component({ selector: 'po-breadcrumb', templateUrl: './po-breadcrumb.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoBreadcrumbComponent extends PoBreadcrumbBaseComponent implements AfterViewInit, DoCheck, OnDestroy { diff --git a/projects/ui/src/lib/components/po-breadcrumb/samples/sample-po-breadcrumb-basic/sample-po-breadcrumb-basic.component.ts b/projects/ui/src/lib/components/po-breadcrumb/samples/sample-po-breadcrumb-basic/sample-po-breadcrumb-basic.component.ts index 4d5bdd93a2..8d557b57fb 100644 --- a/projects/ui/src/lib/components/po-breadcrumb/samples/sample-po-breadcrumb-basic/sample-po-breadcrumb-basic.component.ts +++ b/projects/ui/src/lib/components/po-breadcrumb/samples/sample-po-breadcrumb-basic/sample-po-breadcrumb-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-breadcrumb-basic', templateUrl: './sample-po-breadcrumb-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoBreadcrumbBasicComponent {} diff --git a/projects/ui/src/lib/components/po-breadcrumb/samples/sample-po-breadcrumb-labs/sample-po-breadcrumb-labs.component.ts b/projects/ui/src/lib/components/po-breadcrumb/samples/sample-po-breadcrumb-labs/sample-po-breadcrumb-labs.component.ts index 7575ef3fc2..bcca59251b 100644 --- a/projects/ui/src/lib/components/po-breadcrumb/samples/sample-po-breadcrumb-labs/sample-po-breadcrumb-labs.component.ts +++ b/projects/ui/src/lib/components/po-breadcrumb/samples/sample-po-breadcrumb-labs/sample-po-breadcrumb-labs.component.ts @@ -1,10 +1,11 @@ -import { Component, OnInit, inject } from '@angular/core'; +import { Component, OnInit, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoBreadcrumbItem, PoNotificationService } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-breadcrumb-labs', templateUrl: './sample-po-breadcrumb-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoBreadcrumbLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-button-group/po-button-group-base.component.ts b/projects/ui/src/lib/components/po-button-group/po-button-group-base.component.ts index b19b0e17bd..9b78389f20 100644 --- a/projects/ui/src/lib/components/po-button-group/po-button-group-base.component.ts +++ b/projects/ui/src/lib/components/po-button-group/po-button-group-base.component.ts @@ -1,4 +1,4 @@ -import { Component, HostBinding, HostListener, Input, input } from '@angular/core'; +import { Component, HostBinding, HostListener, Input, input, ChangeDetectionStrategy } from '@angular/core'; import { PoFieldSize } from '../../enums/po-field-size.enum'; import { getDefaultSizeFn, validateSizeFn } from '../../utils/util'; @@ -63,6 +63,7 @@ const PO_TOGGLE_TYPE_DEFAULT = 'none'; @Component({ selector: 'po-button-group-base', template: '', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoButtonGroupBaseComponent { diff --git a/projects/ui/src/lib/components/po-button-group/po-button-group.component.ts b/projects/ui/src/lib/components/po-button-group/po-button-group.component.ts index b93f2971a9..5f878f07d8 100644 --- a/projects/ui/src/lib/components/po-button-group/po-button-group.component.ts +++ b/projects/ui/src/lib/components/po-button-group/po-button-group.component.ts @@ -1,4 +1,4 @@ -import { Component, ViewContainerRef, inject } from '@angular/core'; +import { Component, ViewContainerRef, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoButtonGroupBaseComponent } from './po-button-group-base.component'; @@ -36,6 +36,7 @@ import { PoButtonGroupBaseComponent } from './po-button-group-base.component'; @Component({ selector: 'po-button-group', templateUrl: './po-button-group.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoButtonGroupComponent extends PoButtonGroupBaseComponent {} diff --git a/projects/ui/src/lib/components/po-button-group/samples/sample-po-button-group-attendance/sample-po-button-group-attendance.component.ts b/projects/ui/src/lib/components/po-button-group/samples/sample-po-button-group-attendance/sample-po-button-group-attendance.component.ts index 8cb1d4a619..aa0cbd99fd 100644 --- a/projects/ui/src/lib/components/po-button-group/samples/sample-po-button-group-attendance/sample-po-button-group-attendance.component.ts +++ b/projects/ui/src/lib/components/po-button-group/samples/sample-po-button-group-attendance/sample-po-button-group-attendance.component.ts @@ -1,10 +1,11 @@ -import { Component, inject } from '@angular/core'; +import { Component, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoButtonGroupItem, PoNotificationService } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-button-group-attendance', templateUrl: './sample-po-button-group-attendance.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoButtonGroupAttendanceComponent { diff --git a/projects/ui/src/lib/components/po-button-group/samples/sample-po-button-group-basic/sample-po-button-group-basic.component.ts b/projects/ui/src/lib/components/po-button-group/samples/sample-po-button-group-basic/sample-po-button-group-basic.component.ts index 13333fed43..eaed17a0cb 100644 --- a/projects/ui/src/lib/components/po-button-group/samples/sample-po-button-group-basic/sample-po-button-group-basic.component.ts +++ b/projects/ui/src/lib/components/po-button-group/samples/sample-po-button-group-basic/sample-po-button-group-basic.component.ts @@ -1,10 +1,11 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoButtonGroupItem } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-button-group-basic', templateUrl: './sample-po-button-group-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoButtonGroupBasicComponent { diff --git a/projects/ui/src/lib/components/po-button-group/samples/sample-po-button-group-labs/sample-po-button-group-labs.component.ts b/projects/ui/src/lib/components/po-button-group/samples/sample-po-button-group-labs/sample-po-button-group-labs.component.ts index 218975157f..78ee72dd58 100644 --- a/projects/ui/src/lib/components/po-button-group/samples/sample-po-button-group-labs/sample-po-button-group-labs.component.ts +++ b/projects/ui/src/lib/components/po-button-group/samples/sample-po-button-group-labs/sample-po-button-group-labs.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, inject } from '@angular/core'; +import { Component, OnInit, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoButtonGroupItem, @@ -11,6 +11,7 @@ import { @Component({ selector: 'sample-po-button-group-labs', templateUrl: './sample-po-button-group-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoButtonGroupLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-button-group/samples/sample-po-button-group-post/sample-po-button-group-post.component.ts b/projects/ui/src/lib/components/po-button-group/samples/sample-po-button-group-post/sample-po-button-group-post.component.ts index ab1d8bc2c7..12602eb432 100644 --- a/projects/ui/src/lib/components/po-button-group/samples/sample-po-button-group-post/sample-po-button-group-post.component.ts +++ b/projects/ui/src/lib/components/po-button-group/samples/sample-po-button-group-post/sample-po-button-group-post.component.ts @@ -1,10 +1,11 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoButtonGroupItem } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-button-group-post', templateUrl: './sample-po-button-group-post.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoButtonGroupPostComponent { diff --git a/projects/ui/src/lib/components/po-button/po-button-base.component.ts b/projects/ui/src/lib/components/po-button/po-button-base.component.ts index 45da6889f7..aee70d858d 100644 --- a/projects/ui/src/lib/components/po-button/po-button-base.component.ts +++ b/projects/ui/src/lib/components/po-button/po-button-base.component.ts @@ -1,4 +1,14 @@ -import { Component, EventEmitter, HostBinding, HostListener, Input, Output, TemplateRef, input } from '@angular/core'; +import { + Component, + EventEmitter, + HostBinding, + HostListener, + Input, + Output, + TemplateRef, + input, + ChangeDetectionStrategy +} from '@angular/core'; import { convertToBoolean, getDefaultSizeFn, validateSizeFn } from '../../utils/util'; @@ -73,6 +83,7 @@ import { PoButtonType } from './enums/po-button-type.enum'; @Component({ selector: 'po-button-base', template: '', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoButtonBaseComponent { diff --git a/projects/ui/src/lib/components/po-button/samples/sample-po-button-basic/sample-po-button-basic.component.ts b/projects/ui/src/lib/components/po-button/samples/sample-po-button-basic/sample-po-button-basic.component.ts index 3ee3f001d6..9465223e14 100644 --- a/projects/ui/src/lib/components/po-button/samples/sample-po-button-basic/sample-po-button-basic.component.ts +++ b/projects/ui/src/lib/components/po-button/samples/sample-po-button-basic/sample-po-button-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-button-basic', templateUrl: './sample-po-button-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoButtonBasicComponent { diff --git a/projects/ui/src/lib/components/po-button/samples/sample-po-button-labs/sample-po-button-labs.component.ts b/projects/ui/src/lib/components/po-button/samples/sample-po-button-labs/sample-po-button-labs.component.ts index 8f72f131b7..f8f4ce1d21 100644 --- a/projects/ui/src/lib/components/po-button/samples/sample-po-button-labs/sample-po-button-labs.component.ts +++ b/projects/ui/src/lib/components/po-button/samples/sample-po-button-labs/sample-po-button-labs.component.ts @@ -1,10 +1,11 @@ -import { Component, OnInit, inject } from '@angular/core'; +import { Component, OnInit, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption, PoRadioGroupOption, PoDialogService, PoButtonType } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-button-labs', templateUrl: './sample-po-button-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoButtonLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-button/samples/sample-po-button-social-network/sample-po-button-social-network.component.ts b/projects/ui/src/lib/components/po-button/samples/sample-po-button-social-network/sample-po-button-social-network.component.ts index 5cb95ebf1e..0a4951349c 100644 --- a/projects/ui/src/lib/components/po-button/samples/sample-po-button-social-network/sample-po-button-social-network.component.ts +++ b/projects/ui/src/lib/components/po-button/samples/sample-po-button-social-network/sample-po-button-social-network.component.ts @@ -1,10 +1,11 @@ -import { Component, OnInit, inject } from '@angular/core'; +import { Component, OnInit, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoNotificationService } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-button-social-network', templateUrl: './sample-po-button-social-network.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoButtonSocialNetworkComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-calendar/samples/sample-po-calendar-basic/sample-po-calendar-basic.component.ts b/projects/ui/src/lib/components/po-calendar/samples/sample-po-calendar-basic/sample-po-calendar-basic.component.ts index 4709d77cb4..343173903d 100644 --- a/projects/ui/src/lib/components/po-calendar/samples/sample-po-calendar-basic/sample-po-calendar-basic.component.ts +++ b/projects/ui/src/lib/components/po-calendar/samples/sample-po-calendar-basic/sample-po-calendar-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-calendar-basic', templateUrl: './sample-po-calendar-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoCalendarBasicComponent {} diff --git a/projects/ui/src/lib/components/po-calendar/samples/sample-po-calendar-labs/sample-po-calendar-labs.component.ts b/projects/ui/src/lib/components/po-calendar/samples/sample-po-calendar-labs/sample-po-calendar-labs.component.ts index 75678e1330..49b158edfe 100644 --- a/projects/ui/src/lib/components/po-calendar/samples/sample-po-calendar-labs/sample-po-calendar-labs.component.ts +++ b/projects/ui/src/lib/components/po-calendar/samples/sample-po-calendar-labs/sample-po-calendar-labs.component.ts @@ -1,10 +1,11 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoRadioGroupOption, PoCalendarMode, PoCalendarRangePreset } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-calendar-labs', templateUrl: './sample-po-calendar-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoCalendarLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-calendar/samples/sample-po-calendar-range-presets/sample-po-calendar-range-presets.component.ts b/projects/ui/src/lib/components/po-calendar/samples/sample-po-calendar-range-presets/sample-po-calendar-range-presets.component.ts index 6214e6f32d..181679a427 100644 --- a/projects/ui/src/lib/components/po-calendar/samples/sample-po-calendar-range-presets/sample-po-calendar-range-presets.component.ts +++ b/projects/ui/src/lib/components/po-calendar/samples/sample-po-calendar-range-presets/sample-po-calendar-range-presets.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-calendar-range-presets', templateUrl: './sample-po-calendar-range-presets.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoCalendarRangePresetsComponent {} diff --git a/projects/ui/src/lib/components/po-calendar/samples/sample-po-calendar-ticket-sales/sample-po-calendar-ticket-sales.component.ts b/projects/ui/src/lib/components/po-calendar/samples/sample-po-calendar-ticket-sales/sample-po-calendar-ticket-sales.component.ts index c9af701e7e..25df994c13 100644 --- a/projects/ui/src/lib/components/po-calendar/samples/sample-po-calendar-ticket-sales/sample-po-calendar-ticket-sales.component.ts +++ b/projects/ui/src/lib/components/po-calendar/samples/sample-po-calendar-ticket-sales/sample-po-calendar-ticket-sales.component.ts @@ -1,10 +1,11 @@ -import { Component, inject } from '@angular/core'; +import { Component, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoNotificationService, PoPageAction, PoSelectOption } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-calendar-ticket-sales', templateUrl: './sample-po-calendar-ticket-sales.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoCalendarTicketSalesComponent { diff --git a/projects/ui/src/lib/components/po-chart/po-chart-modal-table/po-chart-modal-table.component.spec.ts b/projects/ui/src/lib/components/po-chart/po-chart-modal-table/po-chart-modal-table.component.spec.ts index ae1e27274d..78d833539e 100644 --- a/projects/ui/src/lib/components/po-chart/po-chart-modal-table/po-chart-modal-table.component.spec.ts +++ b/projects/ui/src/lib/components/po-chart/po-chart-modal-table/po-chart-modal-table.component.spec.ts @@ -1,9 +1,8 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { PoChartModalTableComponent } from './po-chart-modal-table.component'; import { PoModalModule } from '../../po-modal'; import { PoTableModule } from '../../po-table'; -import { provideHttpClient } from '@angular/common/http'; +import { provideHttpClient, withXhr } from '@angular/common/http'; describe('PoChartModalTableComponent', () => { let component: PoChartModalTableComponent; @@ -11,8 +10,8 @@ describe('PoChartModalTableComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [NoopAnimationsModule, PoChartModalTableComponent, PoModalModule, PoTableModule], - providers: [provideHttpClient()] + imports: [PoChartModalTableComponent, PoModalModule, PoTableModule], + providers: [provideHttpClient(withXhr())] }).compileComponents(); fixture = TestBed.createComponent(PoChartModalTableComponent); diff --git a/projects/ui/src/lib/components/po-chart/po-chart-modal-table/po-chart-modal-table.component.ts b/projects/ui/src/lib/components/po-chart/po-chart-modal-table/po-chart-modal-table.component.ts index 92305d85c1..bd5f00435b 100644 --- a/projects/ui/src/lib/components/po-chart/po-chart-modal-table/po-chart-modal-table.component.ts +++ b/projects/ui/src/lib/components/po-chart/po-chart-modal-table/po-chart-modal-table.component.ts @@ -1,4 +1,4 @@ -import { Component, Input, ViewChild } from '@angular/core'; +import { Component, Input, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { PoModalComponent, PoModalModule } from '../../po-modal'; import { PoTableModule } from '../../po-table'; @@ -7,6 +7,7 @@ import { PoTableModule } from '../../po-table'; standalone: true, imports: [PoModalModule, PoTableModule], selector: 'po-chart-modal-table', + changeDetection: ChangeDetectionStrategy.Eager, template: ` diff --git a/projects/ui/src/lib/components/po-chart/po-chart.component.spec.ts b/projects/ui/src/lib/components/po-chart/po-chart.component.spec.ts index 278ed88189..e356e7c6b3 100644 --- a/projects/ui/src/lib/components/po-chart/po-chart.component.spec.ts +++ b/projects/ui/src/lib/components/po-chart/po-chart.component.spec.ts @@ -1,9 +1,7 @@ import { CurrencyPipe, DecimalPipe } from '@angular/common'; import { ElementRef, NO_ERRORS_SCHEMA, SimpleChanges, ViewContainerRef } from '@angular/core'; import { ComponentFixture, fakeAsync, flush, TestBed, tick, waitForAsync } from '@angular/core/testing'; -import { NoopAnimationsModule } from '@angular/platform-browser/animations'; - -import { provideHttpClient } from '@angular/common/http'; +import { provideHttpClient, withXhr } from '@angular/common/http'; import { provideHttpClientTesting } from '@angular/common/http/testing'; import type { EChartsType } from 'echarts/core'; import { PoTooltipModule } from '../../directives'; @@ -66,7 +64,7 @@ describe('PoChartComponent', () => { mockVcr = jasmine.createSpyObj('ViewContainerRef', ['clear', 'createComponent']); TestBed.configureTestingModule({ - imports: [NoopAnimationsModule, PoTooltipModule], + imports: [PoTooltipModule], declarations: [PoChartComponent], providers: [ CurrencyPipe, @@ -76,7 +74,7 @@ describe('PoChartComponent', () => { { provide: PoChartBaseComponent, useValue: {} }, { provide: ElementRef, useValue: createMockElementRef }, { provide: ViewContainerRef, useValue: mockVcr }, - provideHttpClient(), + provideHttpClient(withXhr()), provideHttpClientTesting() ], schemas: [NO_ERRORS_SCHEMA] diff --git a/projects/ui/src/lib/components/po-chart/po-chart.component.ts b/projects/ui/src/lib/components/po-chart/po-chart.component.ts index c9579ac957..85ed5ddf59 100644 --- a/projects/ui/src/lib/components/po-chart/po-chart.component.ts +++ b/projects/ui/src/lib/components/po-chart/po-chart.component.ts @@ -12,7 +12,8 @@ import { SimpleChanges, ViewChild, ViewChildren, - ViewContainerRef + ViewContainerRef, + ChangeDetectionStrategy } from '@angular/core'; import { CurrencyPipe, DecimalPipe } from '@angular/common'; @@ -107,6 +108,7 @@ use([ @Component({ selector: 'po-chart', templateUrl: './po-chart.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoChartComponent extends PoChartBaseComponent implements OnInit, AfterViewInit, OnChanges, OnDestroy { diff --git a/projects/ui/src/lib/components/po-chart/samples/sample-po-chart-basic/sample-po-chart-basic.component.ts b/projects/ui/src/lib/components/po-chart/samples/sample-po-chart-basic/sample-po-chart-basic.component.ts index a6191d620e..0e06c8093b 100644 --- a/projects/ui/src/lib/components/po-chart/samples/sample-po-chart-basic/sample-po-chart-basic.component.ts +++ b/projects/ui/src/lib/components/po-chart/samples/sample-po-chart-basic/sample-po-chart-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-chart-basic', templateUrl: './sample-po-chart-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoChartBasicComponent {} diff --git a/projects/ui/src/lib/components/po-chart/samples/sample-po-chart-coffee-ranking/sample-po-chart-coffee-ranking.component.ts b/projects/ui/src/lib/components/po-chart/samples/sample-po-chart-coffee-ranking/sample-po-chart-coffee-ranking.component.ts index 55b89ec1d4..46c3b26a7a 100644 --- a/projects/ui/src/lib/components/po-chart/samples/sample-po-chart-coffee-ranking/sample-po-chart-coffee-ranking.component.ts +++ b/projects/ui/src/lib/components/po-chart/samples/sample-po-chart-coffee-ranking/sample-po-chart-coffee-ranking.component.ts @@ -1,4 +1,4 @@ -import { Component, inject } from '@angular/core'; +import { Component, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoChartType, PoChartOptions, PoChartSerie, PoDialogService, PoChartLabelFormat } from '@po-ui/ng-components'; @@ -6,6 +6,7 @@ import { PoChartType, PoChartOptions, PoChartSerie, PoDialogService, PoChartLabe selector: 'sample-po-chart-coffee-ranking', templateUrl: './sample-po-chart-coffee-ranking.component.html', providers: [PoDialogService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoChartCoffeeRankingComponent { diff --git a/projects/ui/src/lib/components/po-chart/samples/sample-po-chart-labs/sample-po-chart-labs.component.ts b/projects/ui/src/lib/components/po-chart/samples/sample-po-chart-labs/sample-po-chart-labs.component.ts index 59c9eb0c53..fd5c135d33 100644 --- a/projects/ui/src/lib/components/po-chart/samples/sample-po-chart-labs/sample-po-chart-labs.component.ts +++ b/projects/ui/src/lib/components/po-chart/samples/sample-po-chart-labs/sample-po-chart-labs.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoChartSerie, @@ -12,6 +12,7 @@ import { @Component({ selector: 'sample-po-chart-labs', templateUrl: './sample-po-chart-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoChartLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-chart/samples/sample-po-chart-stacked/sample-po-chart-stacked.component.ts b/projects/ui/src/lib/components/po-chart/samples/sample-po-chart-stacked/sample-po-chart-stacked.component.ts index 4ec989d664..6fe439ab8d 100644 --- a/projects/ui/src/lib/components/po-chart/samples/sample-po-chart-stacked/sample-po-chart-stacked.component.ts +++ b/projects/ui/src/lib/components/po-chart/samples/sample-po-chart-stacked/sample-po-chart-stacked.component.ts @@ -1,10 +1,11 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoChartOptions, PoChartSerie, PoChartType } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-chart-stacked', templateUrl: './sample-po-chart-stacked.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoChartStackedComponent { diff --git a/projects/ui/src/lib/components/po-chart/samples/sample-po-chart-summary/sample-po-chart-summary.component.ts b/projects/ui/src/lib/components/po-chart/samples/sample-po-chart-summary/sample-po-chart-summary.component.ts index 481e4691b9..51f74cd9ca 100644 --- a/projects/ui/src/lib/components/po-chart/samples/sample-po-chart-summary/sample-po-chart-summary.component.ts +++ b/projects/ui/src/lib/components/po-chart/samples/sample-po-chart-summary/sample-po-chart-summary.component.ts @@ -1,10 +1,11 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoChartOptions, PoChartSerie, PoChartType } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-chart-summary', templateUrl: './sample-po-chart-summary.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoChartSummaryComponent { diff --git a/projects/ui/src/lib/components/po-chart/samples/sample-po-chart-technology-skill/sample-po-chart-technology-skill.component.ts b/projects/ui/src/lib/components/po-chart/samples/sample-po-chart-technology-skill/sample-po-chart-technology-skill.component.ts index 05b2bb279b..76ec158e29 100644 --- a/projects/ui/src/lib/components/po-chart/samples/sample-po-chart-technology-skill/sample-po-chart-technology-skill.component.ts +++ b/projects/ui/src/lib/components/po-chart/samples/sample-po-chart-technology-skill/sample-po-chart-technology-skill.component.ts @@ -1,10 +1,11 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoChartOptions, PoChartType } from '@po-ui/ng-components'; import { PoChartRadarOptions } from '@po-ui/ng-components/lib/components/po-chart/interfaces/po-chart-radar-options.interface'; @Component({ selector: 'sample-po-chart-technology-skill', templateUrl: './sample-po-chart-technology-skill.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoChartTechnologySkillComponent { diff --git a/projects/ui/src/lib/components/po-chart/samples/sample-po-chart-world-exports/sample-po-chart-world-exports.component.ts b/projects/ui/src/lib/components/po-chart/samples/sample-po-chart-world-exports/sample-po-chart-world-exports.component.ts index 29f8a7689c..f0d4dd3f4c 100644 --- a/projects/ui/src/lib/components/po-chart/samples/sample-po-chart-world-exports/sample-po-chart-world-exports.component.ts +++ b/projects/ui/src/lib/components/po-chart/samples/sample-po-chart-world-exports/sample-po-chart-world-exports.component.ts @@ -1,10 +1,11 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoChartOptions, PoChartSerie, PoChartType } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-chart-world-exports', templateUrl: './sample-po-chart-world-exports.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoChartWorldExportsComponent { diff --git a/projects/ui/src/lib/components/po-container/po-container.component.ts b/projects/ui/src/lib/components/po-container/po-container.component.ts index 03ad249444..4b3e312206 100644 --- a/projects/ui/src/lib/components/po-container/po-container.component.ts +++ b/projects/ui/src/lib/components/po-container/po-container.component.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoContainerBaseComponent } from './po-container-base.component'; @@ -27,6 +27,7 @@ import { PoContainerBaseComponent } from './po-container-base.component'; @Component({ selector: 'po-container', templateUrl: './po-container.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoContainerComponent extends PoContainerBaseComponent {} diff --git a/projects/ui/src/lib/components/po-container/samples/sample-po-container-basic/sample-po-container-basic.component.ts b/projects/ui/src/lib/components/po-container/samples/sample-po-container-basic/sample-po-container-basic.component.ts index 205a98e862..953b013a57 100644 --- a/projects/ui/src/lib/components/po-container/samples/sample-po-container-basic/sample-po-container-basic.component.ts +++ b/projects/ui/src/lib/components/po-container/samples/sample-po-container-basic/sample-po-container-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-container-basic', templateUrl: './sample-po-container-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoContainerBasicComponent {} diff --git a/projects/ui/src/lib/components/po-container/samples/sample-po-container-dashboard/sample-po-container-dashboard.component.ts b/projects/ui/src/lib/components/po-container/samples/sample-po-container-dashboard/sample-po-container-dashboard.component.ts index b88be19d50..87eab6d7f9 100644 --- a/projects/ui/src/lib/components/po-container/samples/sample-po-container-dashboard/sample-po-container-dashboard.component.ts +++ b/projects/ui/src/lib/components/po-container/samples/sample-po-container-dashboard/sample-po-container-dashboard.component.ts @@ -1,4 +1,4 @@ -import { AfterContentChecked, Component, ViewChild, OnInit, inject } from '@angular/core'; +import { AfterContentChecked, Component, ViewChild, OnInit, inject, ChangeDetectionStrategy } from '@angular/core'; import { NgForm } from '@angular/forms'; import { SampleDashboardService } from './sample-po-container-dashboard.service'; @@ -17,6 +17,7 @@ import { templateUrl: './sample-po-container-dashboard.component.html', styleUrls: ['./sample-po-container-dashboard.component.css'], providers: [SampleDashboardService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoContainerDashboardComponent implements AfterContentChecked, OnInit { diff --git a/projects/ui/src/lib/components/po-container/samples/sample-po-container-labs/sample-po-container-labs.component.ts b/projects/ui/src/lib/components/po-container/samples/sample-po-container-labs/sample-po-container-labs.component.ts index 0610b9a414..852fbd68d7 100644 --- a/projects/ui/src/lib/components/po-container/samples/sample-po-container-labs/sample-po-container-labs.component.ts +++ b/projects/ui/src/lib/components/po-container/samples/sample-po-container-labs/sample-po-container-labs.component.ts @@ -1,10 +1,11 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-container-labs', templateUrl: './sample-po-container-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoContainerLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-context-menu/po-context-menu-base.component.spec.ts b/projects/ui/src/lib/components/po-context-menu/po-context-menu-base.component.spec.ts index 78cc90d850..8f01386388 100644 --- a/projects/ui/src/lib/components/po-context-menu/po-context-menu-base.component.spec.ts +++ b/projects/ui/src/lib/components/po-context-menu/po-context-menu-base.component.spec.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { TestBed } from '@angular/core/testing'; import { PoContextMenuBaseComponent } from './po-context-menu-base.component'; @@ -6,6 +6,7 @@ import { PoContextMenuItem } from './po-context-menu-item.interface'; @Component({ template: '', + changeDetection: ChangeDetectionStrategy.Eager, standalone: true }) class PoContextMenuTestComponent extends PoContextMenuBaseComponent {} diff --git a/projects/ui/src/lib/components/po-context-menu/samples/sample-po-context-menu-basic/sample-po-context-menu-basic.component.ts b/projects/ui/src/lib/components/po-context-menu/samples/sample-po-context-menu-basic/sample-po-context-menu-basic.component.ts index 027747dbe4..6734709175 100644 --- a/projects/ui/src/lib/components/po-context-menu/samples/sample-po-context-menu-basic/sample-po-context-menu-basic.component.ts +++ b/projects/ui/src/lib/components/po-context-menu/samples/sample-po-context-menu-basic/sample-po-context-menu-basic.component.ts @@ -1,10 +1,11 @@ -import { Component, inject } from '@angular/core'; +import { Component, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoContextMenuItem, PoNotificationService } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-context-menu-basic', templateUrl: './sample-po-context-menu-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoContextMenuBasicComponent { diff --git a/projects/ui/src/lib/components/po-context-menu/samples/sample-po-context-menu-labs/sample-po-context-menu-labs.component.ts b/projects/ui/src/lib/components/po-context-menu/samples/sample-po-context-menu-labs/sample-po-context-menu-labs.component.ts index e1599e1757..05ed1cfa91 100644 --- a/projects/ui/src/lib/components/po-context-menu/samples/sample-po-context-menu-labs/sample-po-context-menu-labs.component.ts +++ b/projects/ui/src/lib/components/po-context-menu/samples/sample-po-context-menu-labs/sample-po-context-menu-labs.component.ts @@ -1,10 +1,11 @@ -import { Component, inject, signal } from '@angular/core'; +import { Component, inject, signal, ChangeDetectionStrategy } from '@angular/core'; import { PoContextMenuItem, PoNotificationService } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-context-menu-labs', templateUrl: './sample-po-context-menu-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoContextMenuLabsComponent { diff --git a/projects/ui/src/lib/components/po-context-menu/samples/sample-po-context-menu-user/sample-po-context-menu-user.component.ts b/projects/ui/src/lib/components/po-context-menu/samples/sample-po-context-menu-user/sample-po-context-menu-user.component.ts index 2e70b38db4..c87993a2a7 100644 --- a/projects/ui/src/lib/components/po-context-menu/samples/sample-po-context-menu-user/sample-po-context-menu-user.component.ts +++ b/projects/ui/src/lib/components/po-context-menu/samples/sample-po-context-menu-user/sample-po-context-menu-user.component.ts @@ -1,10 +1,11 @@ -import { Component, signal, viewChild } from '@angular/core'; +import { Component, signal, viewChild, ChangeDetectionStrategy } from '@angular/core'; import { PoContextMenuItem, PoContextTabsComponent, PoDynamicFormField, PoTabComponent } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-context-menu-user', templateUrl: './sample-po-context-menu-user.component.html', styleUrls: ['./sample-po-context-menu-user.component.css'], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoContextMenuUserComponent { diff --git a/projects/ui/src/lib/components/po-context-tabs/po-context-tab-button/po-context-tab-button.component.spec.ts b/projects/ui/src/lib/components/po-context-tabs/po-context-tab-button/po-context-tab-button.component.spec.ts index 06635b366c..dafecef386 100644 --- a/projects/ui/src/lib/components/po-context-tabs/po-context-tab-button/po-context-tab-button.component.spec.ts +++ b/projects/ui/src/lib/components/po-context-tabs/po-context-tab-button/po-context-tab-button.component.spec.ts @@ -21,7 +21,7 @@ describe('PoContextTabButtonComponent:', () => { beforeEach(() => { fixture = TestBed.createComponent(PoContextTabButtonComponent); component = fixture.componentInstance; - component.literals = { close: 'Close' }; + component.literals = { close: 'Close Tab' }; nativeElement = fixture.debugElement.nativeElement; }); diff --git a/projects/ui/src/lib/components/po-context-tabs/po-context-tab-button/po-context-tab-button.component.ts b/projects/ui/src/lib/components/po-context-tabs/po-context-tab-button/po-context-tab-button.component.ts index f01af64cb1..9dc7301d31 100644 --- a/projects/ui/src/lib/components/po-context-tabs/po-context-tab-button/po-context-tab-button.component.ts +++ b/projects/ui/src/lib/components/po-context-tabs/po-context-tab-button/po-context-tab-button.component.ts @@ -1,4 +1,13 @@ -import { AfterViewInit, Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core'; +import { + AfterViewInit, + Component, + EventEmitter, + Input, + OnChanges, + Output, + SimpleChanges, + ChangeDetectionStrategy +} from '@angular/core'; import { PoTabButtonComponent } from '../../po-tabs/po-tab-button/po-tab-button.component'; @@ -12,6 +21,7 @@ import { PoTabButtonComponent } from '../../po-tabs/po-tab-button/po-tab-button. @Component({ selector: 'po-context-tab-button', templateUrl: './po-context-tab-button.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoContextTabButtonComponent extends PoTabButtonComponent implements OnChanges, AfterViewInit { diff --git a/projects/ui/src/lib/components/po-context-tabs/po-context-tabs.component.html b/projects/ui/src/lib/components/po-context-tabs/po-context-tabs.component.html index 88b33911eb..c7a36c9fd3 100644 --- a/projects/ui/src/lib/components/po-context-tabs/po-context-tabs.component.html +++ b/projects/ui/src/lib/components/po-context-tabs/po-context-tabs.component.html @@ -1,44 +1,46 @@
    - - - - + @for (tab of tabs; track trackByFn($index, tab)) { + @if (!tab.removed) { + + + } + } - - + @if (isShowTabDropdown) { + + + }
    diff --git a/projects/ui/src/lib/components/po-context-tabs/po-context-tabs.component.ts b/projects/ui/src/lib/components/po-context-tabs/po-context-tabs.component.ts index accdca747a..40e19a5776 100644 --- a/projects/ui/src/lib/components/po-context-tabs/po-context-tabs.component.ts +++ b/projects/ui/src/lib/components/po-context-tabs/po-context-tabs.component.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoTabComponent, PoTabsComponent } from '../po-tabs'; /** @@ -48,6 +48,7 @@ import { PoTabComponent, PoTabsComponent } from '../po-tabs'; @Component({ selector: 'po-context-tabs', templateUrl: './po-context-tabs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoContextTabsComponent extends PoTabsComponent { diff --git a/projects/ui/src/lib/components/po-context-tabs/samples/sample-po-context-tabs-basic/sample-po-context-tabs-basic.component.ts b/projects/ui/src/lib/components/po-context-tabs/samples/sample-po-context-tabs-basic/sample-po-context-tabs-basic.component.ts index f5b33e356e..de1bd92df0 100644 --- a/projects/ui/src/lib/components/po-context-tabs/samples/sample-po-context-tabs-basic/sample-po-context-tabs-basic.component.ts +++ b/projects/ui/src/lib/components/po-context-tabs/samples/sample-po-context-tabs-basic/sample-po-context-tabs-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-context-tabs-basic', templateUrl: './sample-po-context-tabs-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoContextTabsBasicComponent {} diff --git a/projects/ui/src/lib/components/po-context-tabs/samples/sample-po-context-tabs-business-conf/sample-po-context-tabs-business-conf.component.html b/projects/ui/src/lib/components/po-context-tabs/samples/sample-po-context-tabs-business-conf/sample-po-context-tabs-business-conf.component.html index 5d63cfc311..8e808ee11c 100644 --- a/projects/ui/src/lib/components/po-context-tabs/samples/sample-po-context-tabs-business-conf/sample-po-context-tabs-business-conf.component.html +++ b/projects/ui/src/lib/components/po-context-tabs/samples/sample-po-context-tabs-business-conf/sample-po-context-tabs-business-conf.component.html @@ -1,64 +1,65 @@ - -
    -
    -
    -
    - -
    -
    - -
    -
    -
    - -
    -
    - + @for (speaker of speakers; track speaker.id) { + +
    +
    +
    +
    + +
    +
    +
    -
    - +
    +
    + +
    +
    + +
    +
    + +
    -
    -
    -
    + +
    -
    - -
    TFace Conference Week
    -
    From 21th September until 26th setember 2018
    -
    -
    -
    - - - - {{ speaker.createdDate | date: 'MM/dd/yyyy' }} +
    + +
    TFace Conference Week
    +
    From 21th September until 26th setember 2018
    +
    +
    +
    + + + + {{ speaker.createdDate | date: 'MM/dd/yyyy' }} +
    +
    + + + + Av. Braz Leme, 1000, Santana +
    -
    - - - - Av. Braz Leme, 1000, Santana +
    + +
    -
    -
    - - -
    -
    + +
    -
    - + + }
    diff --git a/projects/ui/src/lib/components/po-context-tabs/samples/sample-po-context-tabs-business-conf/sample-po-context-tabs-business-conf.component.ts b/projects/ui/src/lib/components/po-context-tabs/samples/sample-po-context-tabs-business-conf/sample-po-context-tabs-business-conf.component.ts index 327f50a583..7e2c548bd0 100644 --- a/projects/ui/src/lib/components/po-context-tabs/samples/sample-po-context-tabs-business-conf/sample-po-context-tabs-business-conf.component.ts +++ b/projects/ui/src/lib/components/po-context-tabs/samples/sample-po-context-tabs-business-conf/sample-po-context-tabs-business-conf.component.ts @@ -1,10 +1,11 @@ -import { Component, OnInit, ViewChild } from '@angular/core'; +import { Component, OnInit, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { PoNotificationService, PoContextTabsComponent } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-context-tabs-business-conf', templateUrl: './sample-po-context-tabs-business-conf.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoContextTabsBusinessConfComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-context-tabs/samples/sample-po-context-tabs-labs/sample-po-context-tabs-labs.component.html b/projects/ui/src/lib/components/po-context-tabs/samples/sample-po-context-tabs-labs/sample-po-context-tabs-labs.component.html index bca707f093..fe89969c8b 100644 --- a/projects/ui/src/lib/components/po-context-tabs/samples/sample-po-context-tabs-labs/sample-po-context-tabs-labs.component.html +++ b/projects/ui/src/lib/components/po-context-tabs/samples/sample-po-context-tabs-labs/sample-po-context-tabs-labs.component.html @@ -1,16 +1,17 @@ - -
    Tab Content {{ i }}
    -
    + @for (tab of tabs; track $index; let i = $index) { + +
    Tab Content {{ i }}
    +
    + }
    diff --git a/projects/ui/src/lib/components/po-context-tabs/samples/sample-po-context-tabs-labs/sample-po-context-tabs-labs.component.ts b/projects/ui/src/lib/components/po-context-tabs/samples/sample-po-context-tabs-labs/sample-po-context-tabs-labs.component.ts index f95818b50f..12f7441d7a 100644 --- a/projects/ui/src/lib/components/po-context-tabs/samples/sample-po-context-tabs-labs/sample-po-context-tabs-labs.component.ts +++ b/projects/ui/src/lib/components/po-context-tabs/samples/sample-po-context-tabs-labs/sample-po-context-tabs-labs.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, ViewChild } from '@angular/core'; +import { Component, OnInit, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { PoDynamicFormField, @@ -11,6 +11,7 @@ import { @Component({ selector: 'sample-po-context-tabs-labs', templateUrl: './sample-po-context-tabs-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoContextTabsLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-context-tabs/samples/sample-po-context-tabs-travel/sample-po-context-tabs-travel.component.ts b/projects/ui/src/lib/components/po-context-tabs/samples/sample-po-context-tabs-travel/sample-po-context-tabs-travel.component.ts index 70e44f1017..3f99ca3523 100644 --- a/projects/ui/src/lib/components/po-context-tabs/samples/sample-po-context-tabs-travel/sample-po-context-tabs-travel.component.ts +++ b/projects/ui/src/lib/components/po-context-tabs/samples/sample-po-context-tabs-travel/sample-po-context-tabs-travel.component.ts @@ -1,10 +1,11 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoNotificationService, PoRadioGroupOption, PoSelectOption } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-context-tabs-travel', templateUrl: './sample-po-context-tabs-travel.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoContextTabsTravelComponent { diff --git a/projects/ui/src/lib/components/po-disclaimer-group/po-disclaimer-remove/po-disclaimer-remove.component.ts b/projects/ui/src/lib/components/po-disclaimer-group/po-disclaimer-remove/po-disclaimer-remove.component.ts index 1f35404d8e..9fff1a4126 100644 --- a/projects/ui/src/lib/components/po-disclaimer-group/po-disclaimer-remove/po-disclaimer-remove.component.ts +++ b/projects/ui/src/lib/components/po-disclaimer-group/po-disclaimer-remove/po-disclaimer-remove.component.ts @@ -1,4 +1,4 @@ -import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { Component, EventEmitter, Input, Output, ChangeDetectionStrategy } from '@angular/core'; /** * @docsPrivate * @@ -10,6 +10,7 @@ import { Component, EventEmitter, Input, Output } from '@angular/core'; @Component({ selector: 'po-disclaimer-remove', templateUrl: './po-disclaimer-remove.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoDisclaimerRemoveComponent { diff --git a/projects/ui/src/lib/components/po-disclaimer-group/samples/sample-po-disclaimer-group-basic/sample-po-disclaimer-group-basic.component.ts b/projects/ui/src/lib/components/po-disclaimer-group/samples/sample-po-disclaimer-group-basic/sample-po-disclaimer-group-basic.component.ts index c9b3a6447a..44394a3314 100644 --- a/projects/ui/src/lib/components/po-disclaimer-group/samples/sample-po-disclaimer-group-basic/sample-po-disclaimer-group-basic.component.ts +++ b/projects/ui/src/lib/components/po-disclaimer-group/samples/sample-po-disclaimer-group-basic/sample-po-disclaimer-group-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-disclaimer-group-basic', templateUrl: './sample-po-disclaimer-group-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoDisclaimerGroupBasicComponent {} diff --git a/projects/ui/src/lib/components/po-disclaimer-group/samples/sample-po-disclaimer-group-labs/sample-po-disclaimer-group-labs.component.html b/projects/ui/src/lib/components/po-disclaimer-group/samples/sample-po-disclaimer-group-labs/sample-po-disclaimer-group-labs.component.html index fd03e37f2d..7db7839d14 100644 --- a/projects/ui/src/lib/components/po-disclaimer-group/samples/sample-po-disclaimer-group-labs/sample-po-disclaimer-group-labs.component.html +++ b/projects/ui/src/lib/components/po-disclaimer-group/samples/sample-po-disclaimer-group-labs/sample-po-disclaimer-group-labs.component.html @@ -1,6 +1,6 @@ diff --git a/projects/ui/src/lib/components/po-disclaimer-group/samples/sample-po-disclaimer-group-labs/sample-po-disclaimer-group-labs.component.ts b/projects/ui/src/lib/components/po-disclaimer-group/samples/sample-po-disclaimer-group-labs/sample-po-disclaimer-group-labs.component.ts index b9450266c7..5b684fc180 100644 --- a/projects/ui/src/lib/components/po-disclaimer-group/samples/sample-po-disclaimer-group-labs/sample-po-disclaimer-group-labs.component.ts +++ b/projects/ui/src/lib/components/po-disclaimer-group/samples/sample-po-disclaimer-group-labs/sample-po-disclaimer-group-labs.component.ts @@ -1,10 +1,11 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption, PoDisclaimer } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-disclaimer-group-labs', templateUrl: './sample-po-disclaimer-group-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoDisclaimerGroupLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-disclaimer-group/samples/sample-po-disclaimer-group-sw-planets/sample-po-disclaimer-group-sw-planets.component.ts b/projects/ui/src/lib/components/po-disclaimer-group/samples/sample-po-disclaimer-group-sw-planets/sample-po-disclaimer-group-sw-planets.component.ts index af67590219..d3d6d950a1 100644 --- a/projects/ui/src/lib/components/po-disclaimer-group/samples/sample-po-disclaimer-group-sw-planets/sample-po-disclaimer-group-sw-planets.component.ts +++ b/projects/ui/src/lib/components/po-disclaimer-group/samples/sample-po-disclaimer-group-sw-planets/sample-po-disclaimer-group-sw-planets.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, inject } from '@angular/core'; +import { Component, OnInit, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoComboOption, PoDisclaimer, PoTableColumn } from '@po-ui/ng-components'; @@ -8,6 +8,7 @@ import { SamplePoDisclaimerGroupSwPlanetsService } from './sample-po-disclaimer- selector: 'sample-po-disclaimer-group-sw-planets', templateUrl: './sample-po-disclaimer-group-sw-planets.component.html', providers: [SamplePoDisclaimerGroupSwPlanetsService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoDisclaimerGroupSwPlanetsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-disclaimer/po-disclaimer.component.ts b/projects/ui/src/lib/components/po-disclaimer/po-disclaimer.component.ts index b90bd1ffe1..0b1f42ff2d 100644 --- a/projects/ui/src/lib/components/po-disclaimer/po-disclaimer.component.ts +++ b/projects/ui/src/lib/components/po-disclaimer/po-disclaimer.component.ts @@ -19,6 +19,7 @@ import { PoDisclaimerBaseComponent } from './po-disclaimer-base.component'; @Component({ selector: 'po-disclaimer', templateUrl: './po-disclaimer.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoDisclaimerComponent extends PoDisclaimerBaseComponent { diff --git a/projects/ui/src/lib/components/po-disclaimer/samples/sample-po-disclaimer.component.ts b/projects/ui/src/lib/components/po-disclaimer/samples/sample-po-disclaimer.component.ts index b4516a6df3..76d54fb8e3 100644 --- a/projects/ui/src/lib/components/po-disclaimer/samples/sample-po-disclaimer.component.ts +++ b/projects/ui/src/lib/components/po-disclaimer/samples/sample-po-disclaimer.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-disclaimer', templateUrl: './sample-po-disclaimer.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoDisclaimerComponent { diff --git a/projects/ui/src/lib/components/po-divider/samples/sample-po-divider-basic/sample-po-divider-basic.component.ts b/projects/ui/src/lib/components/po-divider/samples/sample-po-divider-basic/sample-po-divider-basic.component.ts index 3e26129609..0ebb3b9fb3 100644 --- a/projects/ui/src/lib/components/po-divider/samples/sample-po-divider-basic/sample-po-divider-basic.component.ts +++ b/projects/ui/src/lib/components/po-divider/samples/sample-po-divider-basic/sample-po-divider-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-divider-basic', templateUrl: './sample-po-divider-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoDividerBasicComponent {} diff --git a/projects/ui/src/lib/components/po-divider/samples/sample-po-divider-labs/sample-po-divider-labs.component.ts b/projects/ui/src/lib/components/po-divider/samples/sample-po-divider-labs/sample-po-divider-labs.component.ts index 26da20b7b1..e2d6703b16 100644 --- a/projects/ui/src/lib/components/po-divider/samples/sample-po-divider-labs/sample-po-divider-labs.component.ts +++ b/projects/ui/src/lib/components/po-divider/samples/sample-po-divider-labs/sample-po-divider-labs.component.ts @@ -1,10 +1,11 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoSelectOption } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-divider-labs', templateUrl: './sample-po-divider-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoDividerLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-divider/samples/sample-po-divider-user-detail/sample-po-divider-user-detail.component.ts b/projects/ui/src/lib/components/po-divider/samples/sample-po-divider-user-detail/sample-po-divider-user-detail.component.ts index 2cc01f135e..e0b73df0fa 100644 --- a/projects/ui/src/lib/components/po-divider/samples/sample-po-divider-user-detail/sample-po-divider-user-detail.component.ts +++ b/projects/ui/src/lib/components/po-divider/samples/sample-po-divider-user-detail/sample-po-divider-user-detail.component.ts @@ -1,4 +1,4 @@ -import { Component, inject } from '@angular/core'; +import { Component, inject, ChangeDetectionStrategy } from '@angular/core'; import { Router } from '@angular/router'; import { PoBreadcrumb } from '@po-ui/ng-components'; @@ -6,6 +6,7 @@ import { PoBreadcrumb } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-divider-user-detail', templateUrl: './sample-po-divider-user-detail.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoDividerUserDetailComponent { diff --git a/projects/ui/src/lib/components/po-dropdown/po-dropdown.component.spec.ts b/projects/ui/src/lib/components/po-dropdown/po-dropdown.component.spec.ts index c5c9181847..40d1f434df 100644 --- a/projects/ui/src/lib/components/po-dropdown/po-dropdown.component.spec.ts +++ b/projects/ui/src/lib/components/po-dropdown/po-dropdown.component.spec.ts @@ -1,5 +1,6 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { PoUtils as UtilsFunction } from '../../utils/util'; @@ -20,8 +21,9 @@ describe('PoDropdownComponent: ', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [RouterTestingModule.withRoutes([])], - declarations: [PoDropdownComponent, PoPopupComponent] + imports: [RouterModule.forRoot([])], + declarations: [PoDropdownComponent, PoPopupComponent], + providers: [provideLocationMocks()] }) .overrideComponent(PoDropdownComponent, { set: { changeDetection: ChangeDetectionStrategy.Default } diff --git a/projects/ui/src/lib/components/po-dropdown/samples/sample-po-dropdown-basic/sample-po-dropdown-basic.component.ts b/projects/ui/src/lib/components/po-dropdown/samples/sample-po-dropdown-basic/sample-po-dropdown-basic.component.ts index 080b9264e2..26db633a9e 100644 --- a/projects/ui/src/lib/components/po-dropdown/samples/sample-po-dropdown-basic/sample-po-dropdown-basic.component.ts +++ b/projects/ui/src/lib/components/po-dropdown/samples/sample-po-dropdown-basic/sample-po-dropdown-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-dropdown-basic', templateUrl: './sample-po-dropdown-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoDropdownBasicComponent {} diff --git a/projects/ui/src/lib/components/po-dropdown/samples/sample-po-dropdown-labs/sample-po-dropdown-labs.component.ts b/projects/ui/src/lib/components/po-dropdown/samples/sample-po-dropdown-labs/sample-po-dropdown-labs.component.ts index 0613fbadbb..3aef065cad 100644 --- a/projects/ui/src/lib/components/po-dropdown/samples/sample-po-dropdown-labs/sample-po-dropdown-labs.component.ts +++ b/projects/ui/src/lib/components/po-dropdown/samples/sample-po-dropdown-labs/sample-po-dropdown-labs.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, inject } from '@angular/core'; +import { Component, OnInit, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption, @@ -11,6 +11,7 @@ import { @Component({ selector: 'sample-po-dropdown-labs', templateUrl: './sample-po-dropdown-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoDropdownLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-dropdown/samples/sample-po-dropdown-social-network/sample-po-dropdown-social-network.component.ts b/projects/ui/src/lib/components/po-dropdown/samples/sample-po-dropdown-social-network/sample-po-dropdown-social-network.component.ts index 7996f37a2c..08a7032e42 100644 --- a/projects/ui/src/lib/components/po-dropdown/samples/sample-po-dropdown-social-network/sample-po-dropdown-social-network.component.ts +++ b/projects/ui/src/lib/components/po-dropdown/samples/sample-po-dropdown-social-network/sample-po-dropdown-social-network.component.ts @@ -1,10 +1,11 @@ -import { Component, OnInit, inject } from '@angular/core'; +import { Component, OnInit, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoNotificationService } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-dropdown-social-network', templateUrl: './sample-po-dropdown-social-network.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoDropdownSocialNetworkComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-dropdown/samples/sample-po-dropdown-subitems/sample-po-dropdown-subitems.component.ts b/projects/ui/src/lib/components/po-dropdown/samples/sample-po-dropdown-subitems/sample-po-dropdown-subitems.component.ts index 8c14a7db03..01566635b4 100644 --- a/projects/ui/src/lib/components/po-dropdown/samples/sample-po-dropdown-subitems/sample-po-dropdown-subitems.component.ts +++ b/projects/ui/src/lib/components/po-dropdown/samples/sample-po-dropdown-subitems/sample-po-dropdown-subitems.component.ts @@ -1,9 +1,10 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoDropdownAction } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-dropdown-subitems', templateUrl: './sample-po-dropdown-subitems.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoDropdownSubitemsComponent { diff --git a/projects/ui/src/lib/components/po-dynamic/po-dynamic-container/po-dynamic-container.component.ts b/projects/ui/src/lib/components/po-dynamic/po-dynamic-container/po-dynamic-container.component.ts index 54d4be5643..6b3e51a326 100644 --- a/projects/ui/src/lib/components/po-dynamic/po-dynamic-container/po-dynamic-container.component.ts +++ b/projects/ui/src/lib/components/po-dynamic/po-dynamic-container/po-dynamic-container.component.ts @@ -1,8 +1,9 @@ -import { Component, Input, TemplateRef } from '@angular/core'; +import { Component, Input, TemplateRef, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'po-dynamic-container', templateUrl: './po-dynamic-container.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoDynamicContainerComponent { diff --git a/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-fields.component.spec.ts b/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-fields.component.spec.ts index cb612f6f67..4df2039e9b 100644 --- a/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-fields.component.spec.ts +++ b/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-fields.component.spec.ts @@ -4,7 +4,7 @@ import { FormsModule, NgForm, ReactiveFormsModule } from '@angular/forms'; import { of } from 'rxjs'; -import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; import { provideHttpClientTesting } from '@angular/common/http/testing'; import { PoDynamicModule } from '../../po-dynamic.module'; import { PoDynamicFormField } from '../interfaces/po-dynamic-form-field.interface'; @@ -22,7 +22,7 @@ describe('PoDynamicFormFieldsComponent: ', () => { imports: [FormsModule, ReactiveFormsModule, PoDynamicModule], providers: [ { provide: NgForm, useValue: new NgForm(null, null) }, - provideHttpClient(withInterceptorsFromDi()), + provideHttpClient(withXhr(), withInterceptorsFromDi()), provideHttpClientTesting() ] }).compileComponents(); diff --git a/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-fields.component.ts b/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-fields.component.ts index 5122914b61..094c23ac8f 100644 --- a/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-fields.component.ts +++ b/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-fields.component.ts @@ -1,5 +1,14 @@ import { TitleCasePipe } from '@angular/common'; -import { ChangeDetectorRef, Component, OnChanges, QueryList, SimpleChanges, ViewChildren, inject } from '@angular/core'; +import { + ChangeDetectorRef, + Component, + OnChanges, + QueryList, + SimpleChanges, + ViewChildren, + inject, + ChangeDetectionStrategy +} from '@angular/core'; import { ControlContainer, NgForm } from '@angular/forms'; import { PoDynamicFormField } from '../interfaces/po-dynamic-form-field.interface'; @@ -19,6 +28,7 @@ import { PoDynamicFormFieldsBaseComponent } from './po-dynamic-form-fields-base. templateUrl: 'po-dynamic-form-fields.component.html', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], providers: [PoDynamicFormValidationService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoDynamicFormFieldsComponent extends PoDynamicFormFieldsBaseComponent implements OnChanges { diff --git a/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-load/po-dynamic-form-load.service.spec.ts b/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-load/po-dynamic-form-load.service.spec.ts index 18b7d2afc2..4bb8705fbe 100644 --- a/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-load/po-dynamic-form-load.service.spec.ts +++ b/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-load/po-dynamic-form-load.service.spec.ts @@ -4,7 +4,7 @@ import { TestBed } from '@angular/core/testing'; import { of } from 'rxjs'; import { PoDynamicFormLoadService } from './po-dynamic-form-load.service'; -import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; describe('PoDynamicFormLoadService:', () => { let service: PoDynamicFormLoadService; @@ -15,7 +15,11 @@ describe('PoDynamicFormLoadService:', () => { beforeEach(() => { TestBed.configureTestingModule({ imports: [], - providers: [PoDynamicFormLoadService, provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting()] + providers: [ + PoDynamicFormLoadService, + provideHttpClient(withXhr(), withInterceptorsFromDi()), + provideHttpClientTesting() + ] }); service = TestBed.inject(PoDynamicFormLoadService); diff --git a/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-operation/po-dynamic-form-operation.spec.ts b/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-operation/po-dynamic-form-operation.spec.ts index c229404dbf..3dd6524743 100644 --- a/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-operation/po-dynamic-form-operation.spec.ts +++ b/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-operation/po-dynamic-form-operation.spec.ts @@ -1,4 +1,4 @@ -import { HttpClient, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { HttpClient, provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed } from '@angular/core/testing'; @@ -17,7 +17,7 @@ describe('PoDynamicFormOperation:', () => { beforeEach(() => { TestBed.configureTestingModule({ imports: [], - providers: [provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting()] + providers: [provideHttpClient(withXhr(), withInterceptorsFromDi()), provideHttpClientTesting()] }); httpMock = TestBed.inject(HttpTestingController); diff --git a/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-validation/po-dynamic-form-validation.service.spec.ts b/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-validation/po-dynamic-form-validation.service.spec.ts index 55c77ed124..6feaf7db28 100644 --- a/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-validation/po-dynamic-form-validation.service.spec.ts +++ b/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-validation/po-dynamic-form-validation.service.spec.ts @@ -3,7 +3,7 @@ import { TestBed } from '@angular/core/testing'; import { of } from 'rxjs'; -import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; import { PoDynamicFormField } from '../interfaces/po-dynamic-form-field.interface'; import { PoDynamicFormValidationService } from './po-dynamic-form-validation.service'; @@ -20,7 +20,7 @@ describe('PoDynamicFormValidationService:', () => { imports: [], providers: [ PoDynamicFormValidationService, - provideHttpClient(withInterceptorsFromDi()), + provideHttpClient(withXhr(), withInterceptorsFromDi()), provideHttpClientTesting() ] }); diff --git a/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form.component.spec.ts b/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form.component.spec.ts index f10bb645c6..1eb7e6d379 100644 --- a/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form.component.spec.ts +++ b/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form.component.spec.ts @@ -7,7 +7,7 @@ import { PoDynamicFormBaseComponent } from './po-dynamic-form-base.component'; import { PoDynamicFormComponent } from './po-dynamic-form.component'; import { PoDynamicModule } from '../po-dynamic.module'; import { provideHttpClientTesting } from '@angular/common/http/testing'; -import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; describe('PoDynamicFormComponent:', () => { let component: PoDynamicFormComponent; @@ -18,7 +18,7 @@ describe('PoDynamicFormComponent:', () => { beforeEach(async () => { await TestBed.configureTestingModule({ imports: [PoDynamicModule], - providers: [NgForm, provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting()] + providers: [NgForm, provideHttpClient(withXhr(), withInterceptorsFromDi()), provideHttpClientTesting()] }).compileComponents(); fixture = TestBed.createComponent(PoDynamicFormComponent); diff --git a/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form.component.ts b/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form.component.ts index aaaef9b506..afab153a39 100644 --- a/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form.component.ts +++ b/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form.component.ts @@ -1,4 +1,4 @@ -import { ChangeDetectorRef, Component, OnDestroy, OnInit, ViewChild } from '@angular/core'; +import { ChangeDetectorRef, Component, OnDestroy, OnInit, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { NgForm } from '@angular/forms'; import { Observable, Subject, Subscription } from 'rxjs'; @@ -37,6 +37,7 @@ import { PoDynamicFormValidationService } from './po-dynamic-form-validation/po- @Component({ selector: 'po-dynamic-form', templateUrl: './po-dynamic-form.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoDynamicFormComponent extends PoDynamicFormBaseComponent implements OnInit, OnDestroy { diff --git a/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/samples/sample-po-dynamic-form-basic/sample-po-dynamic-form-basic.component.ts b/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/samples/sample-po-dynamic-form-basic/sample-po-dynamic-form-basic.component.ts index 188e8f2a74..f5a824b5aa 100644 --- a/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/samples/sample-po-dynamic-form-basic/sample-po-dynamic-form-basic.component.ts +++ b/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/samples/sample-po-dynamic-form-basic/sample-po-dynamic-form-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-dynamic-form-basic', templateUrl: './sample-po-dynamic-form-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoDynamicFormBasicComponent {} diff --git a/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/samples/sample-po-dynamic-form-container/sample-po-dynamic-form-container.component.html b/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/samples/sample-po-dynamic-form-container/sample-po-dynamic-form-container.component.html index 0f1dc75055..f7a702eb39 100644 --- a/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/samples/sample-po-dynamic-form-container/sample-po-dynamic-form-container.component.html +++ b/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/samples/sample-po-dynamic-form-container/sample-po-dynamic-form-container.component.html @@ -15,7 +15,7 @@ diff --git a/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/samples/sample-po-dynamic-form-container/sample-po-dynamic-form-container.component.ts b/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/samples/sample-po-dynamic-form-container/sample-po-dynamic-form-container.component.ts index 2018f78bc3..a8eec291ed 100644 --- a/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/samples/sample-po-dynamic-form-container/sample-po-dynamic-form-container.component.ts +++ b/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/samples/sample-po-dynamic-form-container/sample-po-dynamic-form-container.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, ViewChild, inject } from '@angular/core'; +import { Component, OnInit, ViewChild, inject, ChangeDetectionStrategy } from '@angular/core'; import { ForceBooleanComponentEnum, @@ -15,6 +15,7 @@ import { PoDynamicFormContainerService } from './sample-po-dynamic-form-containe selector: 'sample-po-dynamic-form-container', templateUrl: './sample-po-dynamic-form-container.component.html', providers: [PoDynamicFormContainerService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoDynamicFormContainerComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/samples/sample-po-dynamic-form-register/sample-po-dynamic-form-register.component.html b/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/samples/sample-po-dynamic-form-register/sample-po-dynamic-form-register.component.html index 0f1dc75055..f7a702eb39 100644 --- a/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/samples/sample-po-dynamic-form-register/sample-po-dynamic-form-register.component.html +++ b/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/samples/sample-po-dynamic-form-register/sample-po-dynamic-form-register.component.html @@ -15,7 +15,7 @@ diff --git a/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/samples/sample-po-dynamic-form-register/sample-po-dynamic-form-register.component.ts b/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/samples/sample-po-dynamic-form-register/sample-po-dynamic-form-register.component.ts index ca4a269881..a3290bb495 100644 --- a/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/samples/sample-po-dynamic-form-register/sample-po-dynamic-form-register.component.ts +++ b/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/samples/sample-po-dynamic-form-register/sample-po-dynamic-form-register.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, ViewChild, inject } from '@angular/core'; +import { Component, OnInit, ViewChild, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoDynamicFormField, @@ -14,6 +14,7 @@ import { PoDynamicFormRegisterService } from './sample-po-dynamic-form-register. selector: 'sample-po-dynamic-form-register', templateUrl: './sample-po-dynamic-form-register.component.html', providers: [PoDynamicFormRegisterService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoDynamicFormRegisterComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view.component.ts b/projects/ui/src/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view.component.ts index 1a6f2b91cc..f265e7699d 100644 --- a/projects/ui/src/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view.component.ts +++ b/projects/ui/src/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view.component.ts @@ -1,5 +1,5 @@ import { CurrencyPipe, DatePipe, DecimalPipe, TitleCasePipe } from '@angular/common'; -import { Component, OnChanges, OnInit, SimpleChanges, inject } from '@angular/core'; +import { Component, OnChanges, OnInit, SimpleChanges, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoTimePipe } from '../../../pipes/po-time/po-time.pipe'; @@ -38,6 +38,7 @@ import { PoMultiselectFilterService } from '../../po-field/po-multiselect/po-mul @Component({ selector: 'po-dynamic-view', templateUrl: './po-dynamic-view.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoDynamicViewComponent extends PoDynamicViewBaseComponent implements OnChanges, OnInit { diff --git a/projects/ui/src/lib/components/po-dynamic/po-dynamic-view/samples/sample-po-dynamic-view-basic/sample-po-dynamic-view-basic.component.ts b/projects/ui/src/lib/components/po-dynamic/po-dynamic-view/samples/sample-po-dynamic-view-basic/sample-po-dynamic-view-basic.component.ts index 4d8203939f..3a6cd636cc 100644 --- a/projects/ui/src/lib/components/po-dynamic/po-dynamic-view/samples/sample-po-dynamic-view-basic/sample-po-dynamic-view-basic.component.ts +++ b/projects/ui/src/lib/components/po-dynamic/po-dynamic-view/samples/sample-po-dynamic-view-basic/sample-po-dynamic-view-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-dynamic-view-basic', templateUrl: './sample-po-dynamic-view-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoDynamicViewBasicComponent {} diff --git a/projects/ui/src/lib/components/po-dynamic/po-dynamic-view/samples/sample-po-dynamic-view-container/sample-po-dynamic-view-container.component.ts b/projects/ui/src/lib/components/po-dynamic/po-dynamic-view/samples/sample-po-dynamic-view-container/sample-po-dynamic-view-container.component.ts index 877527f1f8..66a31fb096 100644 --- a/projects/ui/src/lib/components/po-dynamic/po-dynamic-view/samples/sample-po-dynamic-view-container/sample-po-dynamic-view-container.component.ts +++ b/projects/ui/src/lib/components/po-dynamic/po-dynamic-view/samples/sample-po-dynamic-view-container/sample-po-dynamic-view-container.component.ts @@ -1,9 +1,10 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoDynamicViewField } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-dynamic-view-container', templateUrl: './sample-po-dynamic-view-container.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoDynamicViewContainerComponent { diff --git a/projects/ui/src/lib/components/po-dynamic/po-dynamic-view/samples/sample-po-dynamic-view-employee-on-load/sample-po-dynamic-view-employee-on-load.component.ts b/projects/ui/src/lib/components/po-dynamic/po-dynamic-view/samples/sample-po-dynamic-view-employee-on-load/sample-po-dynamic-view-employee-on-load.component.ts index 37b44fdcc6..1170160519 100644 --- a/projects/ui/src/lib/components/po-dynamic/po-dynamic-view/samples/sample-po-dynamic-view-employee-on-load/sample-po-dynamic-view-employee-on-load.component.ts +++ b/projects/ui/src/lib/components/po-dynamic/po-dynamic-view/samples/sample-po-dynamic-view-employee-on-load/sample-po-dynamic-view-employee-on-load.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, inject } from '@angular/core'; +import { Component, OnInit, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoDynamicViewField } from '@po-ui/ng-components'; import { SamplePoDynamicViewEmployeeOnLoadService } from './sample-po-dynamic-view-employee-on-load.service'; @@ -7,6 +7,7 @@ import { SamplePoDynamicViewEmployeeOnLoadService } from './sample-po-dynamic-vi selector: 'sample-po-dynamic-view-employee-on-load', templateUrl: './sample-po-dynamic-view-employee-on-load.component.html', providers: [SamplePoDynamicViewEmployeeOnLoadService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoDynamicViewEmployeeOnLoadComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-dynamic/po-dynamic-view/samples/sample-po-dynamic-view-employee/sample-po-dynamic-view-employee.component.ts b/projects/ui/src/lib/components/po-dynamic/po-dynamic-view/samples/sample-po-dynamic-view-employee/sample-po-dynamic-view-employee.component.ts index 54a75f9ecb..292d29cb54 100644 --- a/projects/ui/src/lib/components/po-dynamic/po-dynamic-view/samples/sample-po-dynamic-view-employee/sample-po-dynamic-view-employee.component.ts +++ b/projects/ui/src/lib/components/po-dynamic/po-dynamic-view/samples/sample-po-dynamic-view-employee/sample-po-dynamic-view-employee.component.ts @@ -1,10 +1,11 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoDynamicViewField } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-dynamic-view-employee', templateUrl: './sample-po-dynamic-view-employee.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoDynamicViewEmployeeComponent { diff --git a/projects/ui/src/lib/components/po-dynamic/po-dynamic-view/services/po-dynamic-view.service.spec.ts b/projects/ui/src/lib/components/po-dynamic/po-dynamic-view/services/po-dynamic-view.service.spec.ts index bdcfdf7751..3869d87ae6 100644 --- a/projects/ui/src/lib/components/po-dynamic/po-dynamic-view/services/po-dynamic-view.service.spec.ts +++ b/projects/ui/src/lib/components/po-dynamic/po-dynamic-view/services/po-dynamic-view.service.spec.ts @@ -2,7 +2,7 @@ import { HttpTestingController, provideHttpClientTesting } from '@angular/common import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { PoDynamicViewService } from './po-dynamic-view.service'; -import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; describe('PoDynamicViewService:', () => { let httpMock: HttpTestingController; @@ -11,7 +11,11 @@ describe('PoDynamicViewService:', () => { beforeEach(() => { TestBed.configureTestingModule({ imports: [], - providers: [PoDynamicViewService, provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting()] + providers: [ + PoDynamicViewService, + provideHttpClient(withXhr(), withInterceptorsFromDi()), + provideHttpClientTesting() + ] }); poDynamicViewService = TestBed.inject(PoDynamicViewService); diff --git a/projects/ui/src/lib/components/po-field/po-checkbox-group/po-checkbox-group-base.component.spec.ts b/projects/ui/src/lib/components/po-field/po-checkbox-group/po-checkbox-group-base.component.spec.ts index 5c4b21c7e5..cf15db26a1 100644 --- a/projects/ui/src/lib/components/po-field/po-checkbox-group/po-checkbox-group-base.component.spec.ts +++ b/projects/ui/src/lib/components/po-field/po-checkbox-group/po-checkbox-group-base.component.spec.ts @@ -7,12 +7,13 @@ import { expectPropertiesValues } from './../../../util-test/util-expect.spec'; import { PoThemeA11yEnum } from '../../../services'; import { PoCheckboxGroupOption } from './interfaces/po-checkbox-group-option.interface'; import { PoCheckboxGroupBaseComponent } from './po-checkbox-group-base.component'; -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; @Component({ selector: 'po-checkbox-group-base-host', template: '', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) class PoCheckboxGroupBaseHostComponent extends PoCheckboxGroupBaseComponent {} diff --git a/projects/ui/src/lib/components/po-field/po-checkbox-group/samples/sample-po-checkbox-group-basic/sample-po-checkbox-group-basic.component.ts b/projects/ui/src/lib/components/po-field/po-checkbox-group/samples/sample-po-checkbox-group-basic/sample-po-checkbox-group-basic.component.ts index 689b1a1fd8..43c8bf068e 100644 --- a/projects/ui/src/lib/components/po-field/po-checkbox-group/samples/sample-po-checkbox-group-basic/sample-po-checkbox-group-basic.component.ts +++ b/projects/ui/src/lib/components/po-field/po-checkbox-group/samples/sample-po-checkbox-group-basic/sample-po-checkbox-group-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-checkbox-group-basic', templateUrl: './sample-po-checkbox-group-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoCheckboxGroupBasicComponent {} diff --git a/projects/ui/src/lib/components/po-field/po-checkbox-group/samples/sample-po-checkbox-group-labs/sample-po-checkbox-group-labs.component.html b/projects/ui/src/lib/components/po-field/po-checkbox-group/samples/sample-po-checkbox-group-labs/sample-po-checkbox-group-labs.component.html index 8d566ce653..3354fbb988 100644 --- a/projects/ui/src/lib/components/po-field/po-checkbox-group/samples/sample-po-checkbox-group-labs/sample-po-checkbox-group-labs.component.html +++ b/projects/ui/src/lib/components/po-field/po-checkbox-group/samples/sample-po-checkbox-group-labs/sample-po-checkbox-group-labs.component.html @@ -11,10 +11,10 @@ [p-options]="options" [p-required]="properties.includes('required')" [p-field-error-message]="fieldErrorMessage" - [p-error-limit]="properties?.includes('errorLimit')" + [p-error-limit]="$safeNavigationMigration(properties?.includes('errorLimit'))" [p-show-required]="properties.includes('showRequired')" [p-label-text-wrap]="properties.includes('labelTextWrap')" - [p-compact-label]="properties?.includes('compactLabel')" + [p-compact-label]="$safeNavigationMigration(properties?.includes('compactLabel'))" [p-size]="size" (p-change)="changeEvent('p-change')" (p-change-model)="changeEvent('p-change-model')" diff --git a/projects/ui/src/lib/components/po-field/po-checkbox-group/samples/sample-po-checkbox-group-labs/sample-po-checkbox-group-labs.component.ts b/projects/ui/src/lib/components/po-field/po-checkbox-group/samples/sample-po-checkbox-group-labs/sample-po-checkbox-group-labs.component.ts index d07fa69195..79a531e5cf 100644 --- a/projects/ui/src/lib/components/po-field/po-checkbox-group/samples/sample-po-checkbox-group-labs/sample-po-checkbox-group-labs.component.ts +++ b/projects/ui/src/lib/components/po-field/po-checkbox-group/samples/sample-po-checkbox-group-labs/sample-po-checkbox-group-labs.component.ts @@ -1,10 +1,11 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption, PoRadioGroupOption } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-checkbox-group-labs', templateUrl: './sample-po-checkbox-group-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoCheckboxGroupLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-field/po-checkbox-group/samples/sample-po-checkbox-group-password-policy/sample-po-checkbox-group-password-policy.component.ts b/projects/ui/src/lib/components/po-field/po-checkbox-group/samples/sample-po-checkbox-group-password-policy/sample-po-checkbox-group-password-policy.component.ts index dc797c18f2..cae29522aa 100644 --- a/projects/ui/src/lib/components/po-field/po-checkbox-group/samples/sample-po-checkbox-group-password-policy/sample-po-checkbox-group-password-policy.component.ts +++ b/projects/ui/src/lib/components/po-field/po-checkbox-group/samples/sample-po-checkbox-group-password-policy/sample-po-checkbox-group-password-policy.component.ts @@ -1,4 +1,4 @@ -import { Component, inject } from '@angular/core'; +import { Component, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption } from '@po-ui/ng-components'; @@ -7,6 +7,7 @@ import { PoNotificationService } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-checkbox-group-password-policy', templateUrl: './sample-po-checkbox-group-password-policy.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoCheckboxGroupPasswordPolicyComponent { diff --git a/projects/ui/src/lib/components/po-field/po-checkbox/po-checkbox-base.component.spec.ts b/projects/ui/src/lib/components/po-field/po-checkbox/po-checkbox-base.component.spec.ts index a179a2f18a..d87a424180 100644 --- a/projects/ui/src/lib/components/po-field/po-checkbox/po-checkbox-base.component.spec.ts +++ b/projects/ui/src/lib/components/po-field/po-checkbox/po-checkbox-base.component.spec.ts @@ -1,4 +1,4 @@ -import { Component, Directive } from '@angular/core'; +import { Component, Directive, ChangeDetectionStrategy } from '@angular/core'; import { expectPropertiesValues } from '../../../util-test/util-expect.spec'; @@ -9,6 +9,7 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; @Component({ selector: 'po-checkbox-base-host', template: '', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) class PoCheckboxBaseHostComponent extends PoCheckboxBaseComponent { diff --git a/projects/ui/src/lib/components/po-field/po-checkbox/po-checkbox-base.component.ts b/projects/ui/src/lib/components/po-field/po-checkbox/po-checkbox-base.component.ts index 82c03c48e1..1c7773db56 100644 --- a/projects/ui/src/lib/components/po-field/po-checkbox/po-checkbox-base.component.ts +++ b/projects/ui/src/lib/components/po-field/po-checkbox/po-checkbox-base.component.ts @@ -6,7 +6,8 @@ import { HostListener, input, Input, - Output + Output, + ChangeDetectionStrategy } from '@angular/core'; import { ControlValueAccessor } from '@angular/forms'; @@ -60,6 +61,7 @@ import { PoHelperOptions } from '../../po-helper'; @Component({ selector: 'po-checkbox-base', template: '', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export abstract class PoCheckboxBaseComponent implements ControlValueAccessor { diff --git a/projects/ui/src/lib/components/po-field/po-checkbox/samples/sample-po-checkbox-acceptance-term/sample-po-checkbox-acceptance-term.component.ts b/projects/ui/src/lib/components/po-field/po-checkbox/samples/sample-po-checkbox-acceptance-term/sample-po-checkbox-acceptance-term.component.ts index d679199279..8b75b044ee 100644 --- a/projects/ui/src/lib/components/po-field/po-checkbox/samples/sample-po-checkbox-acceptance-term/sample-po-checkbox-acceptance-term.component.ts +++ b/projects/ui/src/lib/components/po-field/po-checkbox/samples/sample-po-checkbox-acceptance-term/sample-po-checkbox-acceptance-term.component.ts @@ -1,10 +1,11 @@ -import { Component, ViewChild } from '@angular/core'; +import { Component, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { PoModalAction, PoModalComponent } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-checkbox-acceptance-term', templateUrl: './sample-po-checkbox-acceptance-term.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoCheckboxAcceptanceTermComponent { diff --git a/projects/ui/src/lib/components/po-field/po-checkbox/samples/sample-po-checkbox-basic/sample-po-checkbox-basic.component.ts b/projects/ui/src/lib/components/po-field/po-checkbox/samples/sample-po-checkbox-basic/sample-po-checkbox-basic.component.ts index d97fea01e2..57845e8a3f 100644 --- a/projects/ui/src/lib/components/po-field/po-checkbox/samples/sample-po-checkbox-basic/sample-po-checkbox-basic.component.ts +++ b/projects/ui/src/lib/components/po-field/po-checkbox/samples/sample-po-checkbox-basic/sample-po-checkbox-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-checkbox-basic', templateUrl: './sample-po-checkbox-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoCheckboxBasicComponent {} diff --git a/projects/ui/src/lib/components/po-field/po-checkbox/samples/sample-po-checkbox-labs/sample-po-checkbox-labs.component.ts b/projects/ui/src/lib/components/po-field/po-checkbox/samples/sample-po-checkbox-labs/sample-po-checkbox-labs.component.ts index fa177760af..fbbf7b9d4c 100644 --- a/projects/ui/src/lib/components/po-field/po-checkbox/samples/sample-po-checkbox-labs/sample-po-checkbox-labs.component.ts +++ b/projects/ui/src/lib/components/po-field/po-checkbox/samples/sample-po-checkbox-labs/sample-po-checkbox-labs.component.ts @@ -1,8 +1,9 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoRadioGroupOption } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-checkbox-labs', templateUrl: './sample-po-checkbox-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoCheckboxLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-field/po-clean/po-clean.component.ts b/projects/ui/src/lib/components/po-field/po-clean/po-clean.component.ts index cd0f082b8b..f6ce213349 100644 --- a/projects/ui/src/lib/components/po-field/po-clean/po-clean.component.ts +++ b/projects/ui/src/lib/components/po-field/po-clean/po-clean.component.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoCleanBaseComponent } from './po-clean-base.component'; @@ -17,6 +17,7 @@ import { PoCleanBaseComponent } from './po-clean-base.component'; @Component({ selector: 'po-clean', templateUrl: './po-clean.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoCleanComponent extends PoCleanBaseComponent { diff --git a/projects/ui/src/lib/components/po-field/po-clean/samples/sample-po-clean-labs.component.ts b/projects/ui/src/lib/components/po-field/po-clean/samples/sample-po-clean-labs.component.ts index 47a31e9309..1eda89e6dd 100644 --- a/projects/ui/src/lib/components/po-field/po-clean/samples/sample-po-clean-labs.component.ts +++ b/projects/ui/src/lib/components/po-field/po-clean/samples/sample-po-clean-labs.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-clean-labs', templateUrl: './sample-po-clean-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoCleanLabsComponent { diff --git a/projects/ui/src/lib/components/po-field/po-combo/po-combo-filter.service.spec.ts b/projects/ui/src/lib/components/po-field/po-combo/po-combo-filter.service.spec.ts index 61bb52e163..aa37b6c55b 100644 --- a/projects/ui/src/lib/components/po-field/po-combo/po-combo-filter.service.spec.ts +++ b/projects/ui/src/lib/components/po-field/po-combo/po-combo-filter.service.spec.ts @@ -1,5 +1,5 @@ import { TestBed } from '@angular/core/testing'; -import { HttpRequest, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { HttpRequest, provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { PoComboFilterService } from './po-combo-filter.service'; @@ -14,7 +14,11 @@ describe('PoComboFilterService ', () => { beforeEach(() => { TestBed.configureTestingModule({ imports: [], - providers: [PoComboFilterService, provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting()] + providers: [ + PoComboFilterService, + provideHttpClient(withXhr(), withInterceptorsFromDi()), + provideHttpClientTesting() + ] }); comboService = TestBed.inject(PoComboFilterService); diff --git a/projects/ui/src/lib/components/po-field/po-combo/po-combo.component.spec.ts b/projects/ui/src/lib/components/po-field/po-combo/po-combo.component.spec.ts index df6ee22335..1516e46ce1 100644 --- a/projects/ui/src/lib/components/po-field/po-combo/po-combo.component.spec.ts +++ b/projects/ui/src/lib/components/po-field/po-combo/po-combo.component.spec.ts @@ -1,6 +1,6 @@ import { By } from '@angular/platform-browser'; import { ComponentFixture, fakeAsync, TestBed, tick } from '@angular/core/testing'; -import { HttpClient, HttpHandler, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { HttpClient, HttpHandler, provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { Observable, of, throwError } from 'rxjs'; @@ -2021,7 +2021,7 @@ describe('PoComboComponent - with service:', () => { HttpClient, HttpHandler, PoComboFilterService, - provideHttpClient(withInterceptorsFromDi()), + provideHttpClient(withXhr(), withInterceptorsFromDi()), provideHttpClientTesting() ] }).compileComponents(); diff --git a/projects/ui/src/lib/components/po-field/po-combo/samples/sample-po-combo-basic/sample-po-combo-basic.component.ts b/projects/ui/src/lib/components/po-field/po-combo/samples/sample-po-combo-basic/sample-po-combo-basic.component.ts index 470405b2a7..0629c9853b 100644 --- a/projects/ui/src/lib/components/po-field/po-combo/samples/sample-po-combo-basic/sample-po-combo-basic.component.ts +++ b/projects/ui/src/lib/components/po-field/po-combo/samples/sample-po-combo-basic/sample-po-combo-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-combo-basic', templateUrl: './sample-po-combo-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoComboBasicComponent {} diff --git a/projects/ui/src/lib/components/po-field/po-combo/samples/sample-po-combo-heroes-reactive-form/sample-po-combo-heroes-reactive-form.component.ts b/projects/ui/src/lib/components/po-field/po-combo/samples/sample-po-combo-heroes-reactive-form/sample-po-combo-heroes-reactive-form.component.ts index 3e05809934..de7733cc46 100644 --- a/projects/ui/src/lib/components/po-field/po-combo/samples/sample-po-combo-heroes-reactive-form/sample-po-combo-heroes-reactive-form.component.ts +++ b/projects/ui/src/lib/components/po-field/po-combo/samples/sample-po-combo-heroes-reactive-form/sample-po-combo-heroes-reactive-form.component.ts @@ -1,5 +1,5 @@ import { HttpClient } from '@angular/common/http'; -import { Component, OnInit, inject } from '@angular/core'; +import { Component, OnInit, inject, ChangeDetectionStrategy } from '@angular/core'; import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms'; import { Observable } from 'rxjs'; @@ -7,6 +7,7 @@ import { Observable } from 'rxjs'; @Component({ selector: 'sample-po-combo-heroes-reactive-form', templateUrl: './sample-po-combo-heroes-reactive-form.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoComboHeroesReactiveFormComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-field/po-combo/samples/sample-po-combo-heroes/sample-po-combo-heroes.component.ts b/projects/ui/src/lib/components/po-field/po-combo/samples/sample-po-combo-heroes/sample-po-combo-heroes.component.ts index 0fea53dba5..b3bae30182 100644 --- a/projects/ui/src/lib/components/po-field/po-combo/samples/sample-po-combo-heroes/sample-po-combo-heroes.component.ts +++ b/projects/ui/src/lib/components/po-field/po-combo/samples/sample-po-combo-heroes/sample-po-combo-heroes.component.ts @@ -1,11 +1,12 @@ import { HttpClient } from '@angular/common/http'; -import { Component, inject } from '@angular/core'; +import { Component, inject, ChangeDetectionStrategy } from '@angular/core'; import { Observable } from 'rxjs'; @Component({ selector: 'sample-po-combo-heroes', templateUrl: './sample-po-combo-heroes.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoComboHeroesComponent { diff --git a/projects/ui/src/lib/components/po-field/po-combo/samples/sample-po-combo-hotels/sample-po-combo-hotels.component.ts b/projects/ui/src/lib/components/po-field/po-combo/samples/sample-po-combo-hotels/sample-po-combo-hotels.component.ts index fe98867367..9255b0914b 100644 --- a/projects/ui/src/lib/components/po-field/po-combo/samples/sample-po-combo-hotels/sample-po-combo-hotels.component.ts +++ b/projects/ui/src/lib/components/po-field/po-combo/samples/sample-po-combo-hotels/sample-po-combo-hotels.component.ts @@ -1,4 +1,4 @@ -import { Component, ViewChild, inject } from '@angular/core'; +import { Component, ViewChild, inject, ChangeDetectionStrategy } from '@angular/core'; import { NgForm } from '@angular/forms'; import { PoDatepickerComponent, PoNotificationService, PoSelectOption } from '@po-ui/ng-components'; @@ -6,6 +6,7 @@ import { PoDatepickerComponent, PoNotificationService, PoSelectOption } from '@p @Component({ selector: 'sample-po-combo-hotels', templateUrl: './sample-po-combo-hotels.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoComboHotelsComponent { diff --git a/projects/ui/src/lib/components/po-field/po-combo/samples/sample-po-combo-infinity-scroll/sample-po-combo-infinity-scroll.component.ts b/projects/ui/src/lib/components/po-field/po-combo/samples/sample-po-combo-infinity-scroll/sample-po-combo-infinity-scroll.component.ts index d67d427b0c..e92dcfbb2b 100644 --- a/projects/ui/src/lib/components/po-field/po-combo/samples/sample-po-combo-infinity-scroll/sample-po-combo-infinity-scroll.component.ts +++ b/projects/ui/src/lib/components/po-field/po-combo/samples/sample-po-combo-infinity-scroll/sample-po-combo-infinity-scroll.component.ts @@ -1,10 +1,11 @@ import { HttpClient } from '@angular/common/http'; -import { Component, inject } from '@angular/core'; +import { Component, inject, ChangeDetectionStrategy } from '@angular/core'; import { Observable } from 'rxjs'; @Component({ selector: 'sample-po-combo-infinity-scroll', templateUrl: './sample-po-combo-infinity-scroll.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoComboInfinityScrollComponent { diff --git a/projects/ui/src/lib/components/po-field/po-combo/samples/sample-po-combo-labs/sample-po-combo-labs.component.html b/projects/ui/src/lib/components/po-field/po-combo/samples/sample-po-combo-labs/sample-po-combo-labs.component.html index 17ed7ccfe9..b58bdb252d 100644 --- a/projects/ui/src/lib/components/po-field/po-combo/samples/sample-po-combo-labs/sample-po-combo-labs.component.html +++ b/projects/ui/src/lib/components/po-field/po-combo/samples/sample-po-combo-labs/sample-po-combo-labs.component.html @@ -27,9 +27,9 @@ [p-show-required]="properties.includes('showRequired')" [p-sort]="properties.includes('sort')" [p-size]="size" - [p-error-limit]="properties?.includes('errorLimit')" - [p-label-text-wrap]="properties?.includes('labelTextWrap')" - [p-compact-label]="properties?.includes('compactLabel')" + [p-error-limit]="$safeNavigationMigration(properties?.includes('errorLimit'))" + [p-label-text-wrap]="$safeNavigationMigration(properties?.includes('labelTextWrap'))" + [p-compact-label]="$safeNavigationMigration(properties?.includes('compactLabel'))" [p-listbox-control-position]="listboxPosition" (p-change)="changeEvent('p-change')" (p-change-model)="changeEvent('p-change-model')" diff --git a/projects/ui/src/lib/components/po-field/po-combo/samples/sample-po-combo-labs/sample-po-combo-labs.component.ts b/projects/ui/src/lib/components/po-field/po-combo/samples/sample-po-combo-labs/sample-po-combo-labs.component.ts index f1b6b91d3f..539dc2f618 100644 --- a/projects/ui/src/lib/components/po-field/po-combo/samples/sample-po-combo-labs/sample-po-combo-labs.component.ts +++ b/projects/ui/src/lib/components/po-field/po-combo/samples/sample-po-combo-labs/sample-po-combo-labs.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption, @@ -12,6 +12,7 @@ import { @Component({ selector: 'sample-po-combo-labs', templateUrl: './sample-po-combo-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoComboLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-field/po-combo/samples/sample-po-combo-scheduling/sample-po-combo-scheduling.component.ts b/projects/ui/src/lib/components/po-field/po-combo/samples/sample-po-combo-scheduling/sample-po-combo-scheduling.component.ts index beccb4744f..4ec3f6a6db 100644 --- a/projects/ui/src/lib/components/po-field/po-combo/samples/sample-po-combo-scheduling/sample-po-combo-scheduling.component.ts +++ b/projects/ui/src/lib/components/po-field/po-combo/samples/sample-po-combo-scheduling/sample-po-combo-scheduling.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, ViewChild, inject } from '@angular/core'; +import { Component, OnInit, ViewChild, inject, ChangeDetectionStrategy } from '@angular/core'; import { NgForm } from '@angular/forms'; import { PoComboOption, PoComboOptionGroup, PoNotificationService, PoSelectOption } from '@po-ui/ng-components'; @@ -9,6 +9,7 @@ import { SamplePoComboSchedulingService } from './sample-po-combo-scheduling.ser templateUrl: './sample-po-combo-scheduling.component.html', styleUrls: ['./sample-po-combo-scheduling.component.css'], providers: [SamplePoComboSchedulingService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoComboSchedulingComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-field/po-combo/samples/sample-po-combo-transfer/sample-po-combo-transfer.component.ts b/projects/ui/src/lib/components/po-field/po-combo/samples/sample-po-combo-transfer/sample-po-combo-transfer.component.ts index 79a0693291..4d8fa66363 100644 --- a/projects/ui/src/lib/components/po-field/po-combo/samples/sample-po-combo-transfer/sample-po-combo-transfer.component.ts +++ b/projects/ui/src/lib/components/po-field/po-combo/samples/sample-po-combo-transfer/sample-po-combo-transfer.component.ts @@ -1,4 +1,4 @@ -import { Component, ViewChild, inject } from '@angular/core'; +import { Component, ViewChild, inject, ChangeDetectionStrategy } from '@angular/core'; import { NgForm } from '@angular/forms'; import { PoModalAction, PoModalComponent, PoNotificationService, PoSelectOption } from '@po-ui/ng-components'; @@ -6,6 +6,7 @@ import { PoModalAction, PoModalComponent, PoNotificationService, PoSelectOption @Component({ selector: 'sample-po-combo-transfer', templateUrl: './sample-po-combo-transfer.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoComboTransferComponent { diff --git a/projects/ui/src/lib/components/po-field/po-datepicker-range/po-datepicker-range.component.html b/projects/ui/src/lib/components/po-field/po-datepicker-range/po-datepicker-range.component.html index 535e1bc4d7..9dfb47ed73 100644 --- a/projects/ui/src/lib/components/po-field/po-datepicker-range/po-datepicker-range.component.html +++ b/projects/ui/src/lib/components/po-field/po-datepicker-range/po-datepicker-range.component.html @@ -44,7 +44,7 @@ [name]="startDateInputName" [readonly]="readonly" [required]="required" - [placeholder]="isDisabled ? '' : placeholder?.start" + [placeholder]="isDisabled ? '' : $safeNavigationMigration(placeholder?.start)" (blur)="onBlur($event)" (focus)="onFocus($event)" (keydown)="onKeydown($event)" @@ -66,7 +66,7 @@ [disabled]="isDisabled" [name]="endDateInputName" [readonly]="readonly" - [placeholder]="isDisabled ? '' : placeholder?.end" + [placeholder]="isDisabled ? '' : $safeNavigationMigration(placeholder?.end)" (blur)="onBlur($event)" (focus)="onFocus($event)" (keydown)="onKeydown($event)" diff --git a/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-basic/sample-po-datepicker-range-basic.component.ts b/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-basic/sample-po-datepicker-range-basic.component.ts index 8b9acd7bff..832f5fd129 100644 --- a/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-basic/sample-po-datepicker-range-basic.component.ts +++ b/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-basic/sample-po-datepicker-range-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-datepicker-range-basic', templateUrl: './sample-po-datepicker-range-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoDatepickerRangeBasicComponent {} diff --git a/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-labs/sample-po-datepicker-range-labs.component.html b/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-labs/sample-po-datepicker-range-labs.component.html index 48f5198868..4264dcc5c9 100644 --- a/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-labs/sample-po-datepicker-range-labs.component.html +++ b/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-labs/sample-po-datepicker-range-labs.component.html @@ -16,18 +16,18 @@ [p-placeholder]="placeholder" [p-clean]="properties.includes('clean')" [p-disabled]="properties.includes('disabled')" - [p-no-autocomplete]="properties?.includes('noAutocomplete')" + [p-no-autocomplete]="$safeNavigationMigration(properties?.includes('noAutocomplete'))" [p-optional]="properties.includes('optional')" [p-readonly]="properties.includes('readonly')" [p-required]="properties.includes('required')" [p-loading]="properties.includes('loading')" [p-show-required]="properties.includes('showRequired')" - [p-label-text-wrap]="properties?.includes('labelTextWrap')" - [p-compact-label]="properties?.includes('compactLabel')" + [p-label-text-wrap]="$safeNavigationMigration(properties?.includes('labelTextWrap'))" + [p-compact-label]="$safeNavigationMigration(properties?.includes('compactLabel'))" (p-change)="changeEvent('p-change')" (p-change-model)="changeEvent('p-change-model')" (p-keydown)="changeEvent('p-keydown')" - [p-error-limit]="properties?.includes('errorLimit')" + [p-error-limit]="$safeNavigationMigration(properties?.includes('errorLimit'))" [p-range-presets]="rangePresets" [p-range-preset-options]="customPresets" [p-range-presets-order]="rangePresetsOrder" diff --git a/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-labs/sample-po-datepicker-range-labs.component.ts b/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-labs/sample-po-datepicker-range-labs.component.ts index 082ae720df..79008f1165 100644 --- a/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-labs/sample-po-datepicker-range-labs.component.ts +++ b/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-labs/sample-po-datepicker-range-labs.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption, @@ -12,6 +12,7 @@ import { @Component({ selector: 'sample-po-datepicker-range-labs', templateUrl: './sample-po-datepicker-range-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoDatepickerRangeLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-presets/sample-po-datepicker-range-presets.component.ts b/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-presets/sample-po-datepicker-range-presets.component.ts index 20e1e0c05b..0ac52fc577 100644 --- a/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-presets/sample-po-datepicker-range-presets.component.ts +++ b/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-presets/sample-po-datepicker-range-presets.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-datepicker-range-presets', templateUrl: './sample-po-datepicker-range-presets.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoDatepickerRangePresetsComponent {} diff --git a/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-vacations-reactive-form/sample-po-datepicker-range-vacations-reactive-form.component.html b/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-vacations-reactive-form/sample-po-datepicker-range-vacations-reactive-form.component.html index 0638a4ef39..5f616841f0 100644 --- a/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-vacations-reactive-form/sample-po-datepicker-range-vacations-reactive-form.component.html +++ b/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-vacations-reactive-form/sample-po-datepicker-range-vacations-reactive-form.component.html @@ -42,10 +42,18 @@ [p-secondary-action]="cancel" >
    - + - + diff --git a/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-vacations-reactive-form/sample-po-datepicker-range-vacations-reactive-form.component.ts b/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-vacations-reactive-form/sample-po-datepicker-range-vacations-reactive-form.component.ts index 7da8802778..16230a69c5 100644 --- a/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-vacations-reactive-form/sample-po-datepicker-range-vacations-reactive-form.component.ts +++ b/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-vacations-reactive-form/sample-po-datepicker-range-vacations-reactive-form.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, ViewChild, inject } from '@angular/core'; +import { Component, OnInit, ViewChild, inject, ChangeDetectionStrategy } from '@angular/core'; import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms'; import { PoDatepickerRange, PoModalAction, PoModalComponent, PoNotificationService } from '@po-ui/ng-components'; @@ -6,6 +6,7 @@ import { PoDatepickerRange, PoModalAction, PoModalComponent, PoNotificationServi @Component({ selector: 'sample-po-datepicker-range-vacations-reactive-form', templateUrl: './sample-po-datepicker-range-vacations-reactive-form.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoDatepickerRangeVacationsReactiveFormComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-vacations/sample-po-datepicker-range-vacations.component.html b/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-vacations/sample-po-datepicker-range-vacations.component.html index 847d22e503..d54f657191 100644 --- a/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-vacations/sample-po-datepicker-range-vacations.component.html +++ b/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-vacations/sample-po-datepicker-range-vacations.component.html @@ -45,10 +45,18 @@ [p-secondary-action]="cancel" >
    - + - + diff --git a/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-vacations/sample-po-datepicker-range-vacations.component.ts b/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-vacations/sample-po-datepicker-range-vacations.component.ts index feedafeb93..860e18934f 100644 --- a/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-vacations/sample-po-datepicker-range-vacations.component.ts +++ b/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-vacations/sample-po-datepicker-range-vacations.component.ts @@ -1,4 +1,4 @@ -import { Component, ViewChild, inject } from '@angular/core'; +import { Component, ViewChild, inject, ChangeDetectionStrategy } from '@angular/core'; import { UntypedFormControl } from '@angular/forms'; import { PoDatepickerRange, PoModalAction, PoModalComponent, PoNotificationService } from '@po-ui/ng-components'; @@ -6,6 +6,7 @@ import { PoDatepickerRange, PoModalAction, PoModalComponent, PoNotificationServi @Component({ selector: 'sample-po-datepicker-range-vacations', templateUrl: './sample-po-datepicker-range-vacations.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoDatepickerRangeVacationsComponent { diff --git a/projects/ui/src/lib/components/po-field/po-datepicker/samples/sample-po-datepicker-airfare-reactive-form/sample-po-datepicker-airfare-reactive-form.component.ts b/projects/ui/src/lib/components/po-field/po-datepicker/samples/sample-po-datepicker-airfare-reactive-form/sample-po-datepicker-airfare-reactive-form.component.ts index 1b700b28af..34280f15d5 100644 --- a/projects/ui/src/lib/components/po-field/po-datepicker/samples/sample-po-datepicker-airfare-reactive-form/sample-po-datepicker-airfare-reactive-form.component.ts +++ b/projects/ui/src/lib/components/po-field/po-datepicker/samples/sample-po-datepicker-airfare-reactive-form/sample-po-datepicker-airfare-reactive-form.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, inject } from '@angular/core'; +import { Component, OnInit, inject, ChangeDetectionStrategy } from '@angular/core'; import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms'; import { PoDialogService, PoNotificationService, PoSelectOption } from '@po-ui/ng-components'; @@ -6,6 +6,7 @@ import { PoDialogService, PoNotificationService, PoSelectOption } from '@po-ui/n @Component({ selector: 'sample-po-datepicker-airfare-reactive-form', templateUrl: './sample-po-datepicker-airfare-reactive-form.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoDatepickerAirfareReactiveFormComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-field/po-datepicker/samples/sample-po-datepicker-airfare/sample-po-datepicker-airfare.component.ts b/projects/ui/src/lib/components/po-field/po-datepicker/samples/sample-po-datepicker-airfare/sample-po-datepicker-airfare.component.ts index 00d0295d33..08656079d8 100644 --- a/projects/ui/src/lib/components/po-field/po-datepicker/samples/sample-po-datepicker-airfare/sample-po-datepicker-airfare.component.ts +++ b/projects/ui/src/lib/components/po-field/po-datepicker/samples/sample-po-datepicker-airfare/sample-po-datepicker-airfare.component.ts @@ -1,4 +1,4 @@ -import { Component, ViewChild, inject } from '@angular/core'; +import { Component, ViewChild, inject, ChangeDetectionStrategy } from '@angular/core'; import { UntypedFormControl } from '@angular/forms'; import { PoDialogService, PoNotificationService, PoSelectOption } from '@po-ui/ng-components'; @@ -6,6 +6,7 @@ import { PoDialogService, PoNotificationService, PoSelectOption } from '@po-ui/n @Component({ selector: 'sample-po-datepicker-airfare', templateUrl: './sample-po-datepicker-airfare.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoDatepickerAirfareComponent { diff --git a/projects/ui/src/lib/components/po-field/po-datepicker/samples/sample-po-datepicker-basic/sample-po-datepicker-basic.component.ts b/projects/ui/src/lib/components/po-field/po-datepicker/samples/sample-po-datepicker-basic/sample-po-datepicker-basic.component.ts index eba58f6496..c613ca1b51 100644 --- a/projects/ui/src/lib/components/po-field/po-datepicker/samples/sample-po-datepicker-basic/sample-po-datepicker-basic.component.ts +++ b/projects/ui/src/lib/components/po-field/po-datepicker/samples/sample-po-datepicker-basic/sample-po-datepicker-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-datepicker-basic', templateUrl: './sample-po-datepicker-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoDatepickerBasicComponent {} diff --git a/projects/ui/src/lib/components/po-field/po-datepicker/samples/sample-po-datepicker-labs/sample-po-datepicker-labs.component.html b/projects/ui/src/lib/components/po-field/po-datepicker/samples/sample-po-datepicker-labs/sample-po-datepicker-labs.component.html index 55e9a0cec6..bd2362ea2a 100644 --- a/projects/ui/src/lib/components/po-field/po-datepicker/samples/sample-po-datepicker-labs/sample-po-datepicker-labs.component.html +++ b/projects/ui/src/lib/components/po-field/po-datepicker/samples/sample-po-datepicker-labs/sample-po-datepicker-labs.component.html @@ -13,22 +13,22 @@ [p-label]="label" [p-locale]="locale" [p-min-date]="minDate" - [p-no-autocomplete]="properties?.includes('noAutocomplete')" + [p-no-autocomplete]="$safeNavigationMigration(properties?.includes('noAutocomplete'))" [p-optional]="properties.includes('optional')" [p-placeholder]="placeholder" [p-readonly]="properties.includes('readonly')" [p-required]="properties.includes('required')" [p-required-field-error-message]="properties.includes('requiredFieldErrorMessage')" [p-show-required]="properties.includes('showRequired')" - [p-label-text-wrap]="properties?.includes('labelTextWrap')" + [p-label-text-wrap]="$safeNavigationMigration(properties?.includes('labelTextWrap'))" [p-loading]="properties.includes('loading')" - [p-compact-label]="properties?.includes('compactLabel')" + [p-compact-label]="$safeNavigationMigration(properties?.includes('compactLabel'))" [p-size]="size" (p-blur)="changeEvent('p-blur')" (p-change)="changeEvent('p-change')" (p-change-model)="changeEvent('p-change-model')" (p-keydown)="changeEvent('p-keydown')" - [p-error-limit]="properties?.includes('errorLimit')" + [p-error-limit]="$safeNavigationMigration(properties?.includes('errorLimit'))" > diff --git a/projects/ui/src/lib/components/po-field/po-datepicker/samples/sample-po-datepicker-labs/sample-po-datepicker-labs.component.ts b/projects/ui/src/lib/components/po-field/po-datepicker/samples/sample-po-datepicker-labs/sample-po-datepicker-labs.component.ts index 16149bb42f..8c786aee55 100644 --- a/projects/ui/src/lib/components/po-field/po-datepicker/samples/sample-po-datepicker-labs/sample-po-datepicker-labs.component.ts +++ b/projects/ui/src/lib/components/po-field/po-datepicker/samples/sample-po-datepicker-labs/sample-po-datepicker-labs.component.ts @@ -1,10 +1,11 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption, PoDatepickerIsoFormat, PoRadioGroupOption } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-datepicker-labs', templateUrl: './sample-po-datepicker-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoDatepickerLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-field/po-datepicker/samples/sample-po-datepicker-month-year/sample-po-datepicker-month-year.component.ts b/projects/ui/src/lib/components/po-field/po-datepicker/samples/sample-po-datepicker-month-year/sample-po-datepicker-month-year.component.ts index 818d1d66fc..7db9de34ff 100644 --- a/projects/ui/src/lib/components/po-field/po-datepicker/samples/sample-po-datepicker-month-year/sample-po-datepicker-month-year.component.ts +++ b/projects/ui/src/lib/components/po-field/po-datepicker/samples/sample-po-datepicker-month-year/sample-po-datepicker-month-year.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-datepicker-month-year', templateUrl: './sample-po-datepicker-month-year.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoDatepickerMonthYearComponent { diff --git a/projects/ui/src/lib/components/po-field/po-datepicker/samples/sample-po-datepicker-year/sample-po-datepicker-year.component.ts b/projects/ui/src/lib/components/po-field/po-datepicker/samples/sample-po-datepicker-year/sample-po-datepicker-year.component.ts index 99ed2b2c84..caa1ff742c 100644 --- a/projects/ui/src/lib/components/po-field/po-datepicker/samples/sample-po-datepicker-year/sample-po-datepicker-year.component.ts +++ b/projects/ui/src/lib/components/po-field/po-datepicker/samples/sample-po-datepicker-year/sample-po-datepicker-year.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-datepicker-year', templateUrl: './sample-po-datepicker-year.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoDatepickerYearComponent { diff --git a/projects/ui/src/lib/components/po-field/po-datetimepicker/po-datetimepicker.component.spec.ts b/projects/ui/src/lib/components/po-field/po-datetimepicker/po-datetimepicker.component.spec.ts index 7f4959a732..6ff99e20f1 100644 --- a/projects/ui/src/lib/components/po-field/po-datetimepicker/po-datetimepicker.component.spec.ts +++ b/projects/ui/src/lib/components/po-field/po-datetimepicker/po-datetimepicker.component.spec.ts @@ -18,10 +18,44 @@ describe('PoDatetimepickerComponent:', () => { component = fixture.componentInstance; nativeElement = fixture.nativeElement; + // Diversos testes atribuem um `objMask` mockado parcial (ex.: apenas + // `{ valueToModel }`), sem os métodos `blur`/`keyup`/`keydown`/`click`. Como o + // ambiente roda com `teardown: { destroyAfterEach: false }`, a instância + // permanece no DOM e o listener `(blur)` do template continua ativo; quando o + // foco sai do input (de forma assíncrona, por outros specs ou pelo teardown + // geral), `eventOnBlur` executa `this.objMask?.blur()` e lança + // `TypeError: this.objMask?.blur is not a function`. + // + // Sem alterar o componente, interceptamos as atribuições de `objMask` para + // garantir, de forma centralizada e à prova de timing, que os métodos usados + // pelos handlers existam como no-op quando o mock não os fornecer. Mocks que + // definem seus próprios métodos (ex.: spies) são preservados. + let objMaskValue: any; + Object.defineProperty(component, 'objMask', { + configurable: true, + get: () => objMaskValue, + set: (value: any) => { + if (value && typeof value === 'object') { + for (const method of ['blur', 'keyup', 'keydown', 'click'] as const) { + if (typeof value[method] !== 'function') { + value[method] = () => {}; + } + } + } + objMaskValue = value; + } + }); + fixture.componentRef.setInput('p-locale', 'pt'); fixture.detectChanges(); }); + afterEach(() => { + // Garante o ngOnDestroy -> removeListeners() e remove o elemento (com seus + // listeners) do DOM, evitando que listeners vazem entre os testes. + fixture?.destroy(); + }); + it('should create', () => { expect(component).toBeTruthy(); }); @@ -1521,10 +1555,21 @@ describe('PoDatetimepickerComponent:', () => { describe('initializeListeners:', () => { it('should register click listener that calls wasClickedOnPicker', () => { spyOn(component, 'wasClickedOnPicker'); + + // Captura o callback registrado para 'click' no document ao invés de disparar + // um evento global em `document`, que acionaria listeners vazados de outras + // instâncias/testes e tornaria o teste intermitente. + let clickCallback: (event: MouseEvent) => void; + spyOn(component['renderer'], 'listen').and.callFake((target: any, eventName: string, callback: any) => { + if (target === 'document' && eventName === 'click') { + clickCallback = callback; + } + return () => {}; + }); + component['initializeListeners'](); - const event = new MouseEvent('click'); - document.dispatchEvent(event); + clickCallback(new MouseEvent('click')); expect(component.wasClickedOnPicker).toHaveBeenCalled(); component['removeListeners'](); diff --git a/projects/ui/src/lib/components/po-field/po-datetimepicker/po-datetimepicker.component.ts b/projects/ui/src/lib/components/po-field/po-datetimepicker/po-datetimepicker.component.ts index 0959e0849b..aa98ecb772 100644 --- a/projects/ui/src/lib/components/po-field/po-datetimepicker/po-datetimepicker.component.ts +++ b/projects/ui/src/lib/components/po-field/po-datetimepicker/po-datetimepicker.component.ts @@ -8,7 +8,8 @@ import { forwardRef, HostListener, AfterViewInit, - ChangeDetectorRef + ChangeDetectorRef, + ChangeDetectionStrategy } from '@angular/core'; import { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms'; @@ -70,6 +71,7 @@ const providers = [ selector: 'po-datetimepicker', templateUrl: './po-datetimepicker.component.html', providers, + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoDatetimepickerComponent extends PoDatetimepickerBaseComponent implements AfterViewInit, OnDestroy { diff --git a/projects/ui/src/lib/components/po-field/po-datetimepicker/samples/sample-po-datetimepicker-12h-seconds/sample-po-datetimepicker-12h-seconds.component.ts b/projects/ui/src/lib/components/po-field/po-datetimepicker/samples/sample-po-datetimepicker-12h-seconds/sample-po-datetimepicker-12h-seconds.component.ts index 903d29e6b8..2b9a3ab3e4 100644 --- a/projects/ui/src/lib/components/po-field/po-datetimepicker/samples/sample-po-datetimepicker-12h-seconds/sample-po-datetimepicker-12h-seconds.component.ts +++ b/projects/ui/src/lib/components/po-field/po-datetimepicker/samples/sample-po-datetimepicker-12h-seconds/sample-po-datetimepicker-12h-seconds.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-datetimepicker-12h-seconds', templateUrl: './sample-po-datetimepicker-12h-seconds.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoDatetimepicker12hSecondsComponent { diff --git a/projects/ui/src/lib/components/po-field/po-datetimepicker/samples/sample-po-datetimepicker-basic/sample-po-datetimepicker-basic.component.ts b/projects/ui/src/lib/components/po-field/po-datetimepicker/samples/sample-po-datetimepicker-basic/sample-po-datetimepicker-basic.component.ts index de3e94aa49..816911d15c 100644 --- a/projects/ui/src/lib/components/po-field/po-datetimepicker/samples/sample-po-datetimepicker-basic/sample-po-datetimepicker-basic.component.ts +++ b/projects/ui/src/lib/components/po-field/po-datetimepicker/samples/sample-po-datetimepicker-basic/sample-po-datetimepicker-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-datetimepicker-basic', templateUrl: './sample-po-datetimepicker-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoDatetimepickerBasicComponent {} diff --git a/projects/ui/src/lib/components/po-field/po-datetimepicker/samples/sample-po-datetimepicker-labs/sample-po-datetimepicker-labs.component.html b/projects/ui/src/lib/components/po-field/po-datetimepicker/samples/sample-po-datetimepicker-labs/sample-po-datetimepicker-labs.component.html index fb698f05ef..eb12f77d0d 100644 --- a/projects/ui/src/lib/components/po-field/po-datetimepicker/samples/sample-po-datetimepicker-labs/sample-po-datetimepicker-labs.component.html +++ b/projects/ui/src/lib/components/po-field/po-datetimepicker/samples/sample-po-datetimepicker-labs/sample-po-datetimepicker-labs.component.html @@ -3,16 +3,16 @@ name="datetimepicker" [(ngModel)]="datetimepicker" [p-clean]="properties.includes('clean')" - [p-compact-label]="properties?.includes('compactLabel')" + [p-compact-label]="$safeNavigationMigration(properties?.includes('compactLabel'))" [p-disabled]="properties.includes('disabled')" - [p-error-limit]="properties?.includes('errorLimit')" + [p-error-limit]="$safeNavigationMigration(properties?.includes('errorLimit'))" [p-error-pattern]="errorPattern" [p-format-date]="formatDate" [p-format-time]="formatTime" [p-help]="help" [p-helper]="helperText" [p-label]="label" - [p-label-text-wrap]="properties?.includes('labelTextWrap')" + [p-label-text-wrap]="$safeNavigationMigration(properties?.includes('labelTextWrap'))" [p-loading]="properties.includes('loading')" [p-locale]="locale" [p-max-date]="maxDate" @@ -20,7 +20,7 @@ [p-min-date]="minDate" [p-min-time]="minTime" [p-minute-interval]="minuteInterval" - [p-no-autocomplete]="properties?.includes('noAutocomplete')" + [p-no-autocomplete]="$safeNavigationMigration(properties?.includes('noAutocomplete'))" [p-optional]="properties.includes('optional')" [p-placeholder]="placeholder" [p-readonly]="properties.includes('readonly')" diff --git a/projects/ui/src/lib/components/po-field/po-datetimepicker/samples/sample-po-datetimepicker-labs/sample-po-datetimepicker-labs.component.ts b/projects/ui/src/lib/components/po-field/po-datetimepicker/samples/sample-po-datetimepicker-labs/sample-po-datetimepicker-labs.component.ts index c6505c374e..0cedeaeef0 100644 --- a/projects/ui/src/lib/components/po-field/po-datetimepicker/samples/sample-po-datetimepicker-labs/sample-po-datetimepicker-labs.component.ts +++ b/projects/ui/src/lib/components/po-field/po-datetimepicker/samples/sample-po-datetimepicker-labs/sample-po-datetimepicker-labs.component.ts @@ -1,10 +1,11 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption, PoRadioGroupOption } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-datetimepicker-labs', templateUrl: './sample-po-datetimepicker-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoDatetimepickerLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-field/po-datetimepicker/samples/sample-po-datetimepicker-scheduling/sample-po-datetimepicker-scheduling.component.ts b/projects/ui/src/lib/components/po-field/po-datetimepicker/samples/sample-po-datetimepicker-scheduling/sample-po-datetimepicker-scheduling.component.ts index afee80dcde..04dd4d5ca6 100644 --- a/projects/ui/src/lib/components/po-field/po-datetimepicker/samples/sample-po-datetimepicker-scheduling/sample-po-datetimepicker-scheduling.component.ts +++ b/projects/ui/src/lib/components/po-field/po-datetimepicker/samples/sample-po-datetimepicker-scheduling/sample-po-datetimepicker-scheduling.component.ts @@ -1,11 +1,12 @@ import { UntypedFormControl } from '@angular/forms'; -import { Component, ViewChild, inject } from '@angular/core'; +import { Component, ViewChild, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoDialogService, PoNotificationService, PoSelectOption } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-datetimepicker-scheduling', templateUrl: './sample-po-datetimepicker-scheduling.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoDatetimepickerSchedulingComponent { diff --git a/projects/ui/src/lib/components/po-field/po-decimal/samples/sample-po-decimal-basic/sample-po-decimal-basic.component.ts b/projects/ui/src/lib/components/po-field/po-decimal/samples/sample-po-decimal-basic/sample-po-decimal-basic.component.ts index eb6db18251..7a0c97f289 100644 --- a/projects/ui/src/lib/components/po-field/po-decimal/samples/sample-po-decimal-basic/sample-po-decimal-basic.component.ts +++ b/projects/ui/src/lib/components/po-field/po-decimal/samples/sample-po-decimal-basic/sample-po-decimal-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-decimal-basic', templateUrl: './sample-po-decimal-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoDecimalBasicComponent {} diff --git a/projects/ui/src/lib/components/po-field/po-decimal/samples/sample-po-decimal-hourly-wage-reactive-form/sample-po-decimal-hourly-wage-reactive-form.component.ts b/projects/ui/src/lib/components/po-field/po-decimal/samples/sample-po-decimal-hourly-wage-reactive-form/sample-po-decimal-hourly-wage-reactive-form.component.ts index 4b23d56820..1e473c3d86 100644 --- a/projects/ui/src/lib/components/po-field/po-decimal/samples/sample-po-decimal-hourly-wage-reactive-form/sample-po-decimal-hourly-wage-reactive-form.component.ts +++ b/projects/ui/src/lib/components/po-field/po-decimal/samples/sample-po-decimal-hourly-wage-reactive-form/sample-po-decimal-hourly-wage-reactive-form.component.ts @@ -1,9 +1,10 @@ -import { Component, OnInit, inject } from '@angular/core'; +import { Component, OnInit, inject, ChangeDetectionStrategy } from '@angular/core'; import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms'; @Component({ selector: 'sample-po-decimal-hourly-wage-reactive-form', templateUrl: './sample-po-decimal-hourly-wage-reactive-form.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoDecimalHourlyWageReactiveFormComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-field/po-decimal/samples/sample-po-decimal-hourly-wage/sample-po-decimal-hourly-wage.component.ts b/projects/ui/src/lib/components/po-field/po-decimal/samples/sample-po-decimal-hourly-wage/sample-po-decimal-hourly-wage.component.ts index 979c05f0e3..8d745f81db 100644 --- a/projects/ui/src/lib/components/po-field/po-decimal/samples/sample-po-decimal-hourly-wage/sample-po-decimal-hourly-wage.component.ts +++ b/projects/ui/src/lib/components/po-field/po-decimal/samples/sample-po-decimal-hourly-wage/sample-po-decimal-hourly-wage.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-decimal-hourly-wage', templateUrl: './sample-po-decimal-hourly-wage.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoDecimalHourlyWageComponent { diff --git a/projects/ui/src/lib/components/po-field/po-decimal/samples/sample-po-decimal-labs/sample-po-decimal-labs.component.html b/projects/ui/src/lib/components/po-field/po-decimal/samples/sample-po-decimal-labs/sample-po-decimal-labs.component.html index 3bb9603376..a96570158b 100644 --- a/projects/ui/src/lib/components/po-field/po-decimal/samples/sample-po-decimal-labs/sample-po-decimal-labs.component.html +++ b/projects/ui/src/lib/components/po-field/po-decimal/samples/sample-po-decimal-labs/sample-po-decimal-labs.component.html @@ -16,7 +16,7 @@ [p-error-pattern]="errorPattern" [p-max]="max" [p-min]="min" - [p-no-autocomplete]="properties?.includes('noAutocomplete')" + [p-no-autocomplete]="$safeNavigationMigration(properties?.includes('noAutocomplete'))" [p-optional]="properties.includes('optional')" [p-placeholder]="placeholder" [p-readonly]="properties.includes('readonly')" @@ -25,13 +25,13 @@ [p-show-required]="properties.includes('showRequired')" [p-size]="size" [p-thousand-maxlength]="thousandMaxlength" - [p-label-text-wrap]="properties?.includes('labelTextWrap')" - [p-compact-label]="properties?.includes('compactLabel')" + [p-label-text-wrap]="$safeNavigationMigration(properties?.includes('labelTextWrap'))" + [p-compact-label]="$safeNavigationMigration(properties?.includes('compactLabel'))" (p-blur)="changeEvent('p-blur')" (p-change)="changeEvent('p-change')" (p-change-model)="changeEvent('p-change-model')" (p-keydown)="changeEvent('p-keydown')" - [p-error-limit]="properties?.includes('errorLimit')" + [p-error-limit]="$safeNavigationMigration(properties?.includes('errorLimit'))" > diff --git a/projects/ui/src/lib/components/po-field/po-decimal/samples/sample-po-decimal-labs/sample-po-decimal-labs.component.ts b/projects/ui/src/lib/components/po-field/po-decimal/samples/sample-po-decimal-labs/sample-po-decimal-labs.component.ts index a24f3b8532..079c1fcaa0 100644 --- a/projects/ui/src/lib/components/po-field/po-decimal/samples/sample-po-decimal-labs/sample-po-decimal-labs.component.ts +++ b/projects/ui/src/lib/components/po-field/po-decimal/samples/sample-po-decimal-labs/sample-po-decimal-labs.component.ts @@ -1,10 +1,11 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption, PoRadioGroupOption, PoSelectOption } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-decimal-labs', templateUrl: './sample-po-decimal-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoDecimalLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-field/po-email/samples/sample-po-email-basic/sample-po-email-basic.component.ts b/projects/ui/src/lib/components/po-field/po-email/samples/sample-po-email-basic/sample-po-email-basic.component.ts index 6fd48786d8..df1a34fd85 100644 --- a/projects/ui/src/lib/components/po-field/po-email/samples/sample-po-email-basic/sample-po-email-basic.component.ts +++ b/projects/ui/src/lib/components/po-field/po-email/samples/sample-po-email-basic/sample-po-email-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-email-basic', templateUrl: './sample-po-email-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoEmailBasicComponent {} diff --git a/projects/ui/src/lib/components/po-field/po-email/samples/sample-po-email-labs/sample-po-email-labs.component.html b/projects/ui/src/lib/components/po-field/po-email/samples/sample-po-email-labs/sample-po-email-labs.component.html index cf4c4c6cc4..cae3968b77 100644 --- a/projects/ui/src/lib/components/po-field/po-email/samples/sample-po-email-labs/sample-po-email-labs.component.html +++ b/projects/ui/src/lib/components/po-field/po-email/samples/sample-po-email-labs/sample-po-email-labs.component.html @@ -7,10 +7,10 @@ [p-error-pattern]="errorPattern" [p-help]="help" [p-label]="label" - [p-loading]="properties?.includes('loading')" + [p-loading]="$safeNavigationMigration(properties?.includes('loading'))" [p-maxlength]="maxlength" [p-minlength]="minlength" - [p-no-autocomplete]="properties?.includes('noAutocomplete')" + [p-no-autocomplete]="$safeNavigationMigration(properties?.includes('noAutocomplete'))" [p-optional]="properties.includes('optional')" [p-placeholder]="placeholder" [p-readonly]="properties.includes('readonly')" @@ -18,14 +18,14 @@ [p-required-field-error-message]="properties.includes('requiredFieldErrorMessage')" [p-show-required]="properties.includes('showRequired')" [p-size]="size" - [p-label-text-wrap]="properties?.includes('labelTextWrap')" - [p-compact-label]="properties?.includes('compactLabel')" + [p-label-text-wrap]="$safeNavigationMigration(properties?.includes('labelTextWrap'))" + [p-compact-label]="$safeNavigationMigration(properties?.includes('compactLabel'))" (p-blur)="changeEvent('p-blur')" (p-change)="changeEvent('p-change')" (p-change-model)="changeEvent('p-change-model')" (p-enter)="changeEvent('p-enter')" (p-keydown)="changeEvent('p-keydown')" - [p-error-limit]="properties?.includes('errorLimit')" + [p-error-limit]="$safeNavigationMigration(properties?.includes('errorLimit'))" > diff --git a/projects/ui/src/lib/components/po-field/po-email/samples/sample-po-email-labs/sample-po-email-labs.component.ts b/projects/ui/src/lib/components/po-field/po-email/samples/sample-po-email-labs/sample-po-email-labs.component.ts index 9838e3f550..a0de165f44 100644 --- a/projects/ui/src/lib/components/po-field/po-email/samples/sample-po-email-labs/sample-po-email-labs.component.ts +++ b/projects/ui/src/lib/components/po-field/po-email/samples/sample-po-email-labs/sample-po-email-labs.component.ts @@ -1,10 +1,11 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption, PoRadioGroupOption } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-email-labs', templateUrl: './sample-po-email-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoEmailLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-field/po-email/samples/sample-po-email-newsletter/sample-po-email-newsletter.component.ts b/projects/ui/src/lib/components/po-field/po-email/samples/sample-po-email-newsletter/sample-po-email-newsletter.component.ts index 4fc43bce62..cac8456129 100644 --- a/projects/ui/src/lib/components/po-field/po-email/samples/sample-po-email-newsletter/sample-po-email-newsletter.component.ts +++ b/projects/ui/src/lib/components/po-field/po-email/samples/sample-po-email-newsletter/sample-po-email-newsletter.component.ts @@ -1,10 +1,11 @@ -import { Component, inject } from '@angular/core'; +import { Component, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoDialogService } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-email-newsletter', templateUrl: './sample-po-email-newsletter.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoEmailNewsletterComponent { diff --git a/projects/ui/src/lib/components/po-field/po-input-generic/po-input-generic.spec.ts b/projects/ui/src/lib/components/po-field/po-input-generic/po-input-generic.spec.ts index f4d9bd4fbc..600c454725 100644 --- a/projects/ui/src/lib/components/po-field/po-input-generic/po-input-generic.spec.ts +++ b/projects/ui/src/lib/components/po-field/po-input-generic/po-input-generic.spec.ts @@ -1,6 +1,6 @@ import { AbstractControl } from '@angular/forms'; import { ComponentFixture, fakeAsync, TestBed, tick } from '@angular/core/testing'; -import { ChangeDetectorRef, Component, ElementRef, EventEmitter, inject } from '@angular/core'; +import { ChangeDetectorRef, Component, ElementRef, EventEmitter, inject, ChangeDetectionStrategy } from '@angular/core'; import { configureTestSuite } from './../../../util-test/util-expect.spec'; @@ -13,6 +13,7 @@ import { of, Subscription } from 'rxjs'; `, + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) class ContentProjectionComponent extends PoInputGeneric { diff --git a/projects/ui/src/lib/components/po-field/po-input/samples/sample-po-input-basic/sample-po-input-basic.component.ts b/projects/ui/src/lib/components/po-field/po-input/samples/sample-po-input-basic/sample-po-input-basic.component.ts index bfa541de10..51eae9ee64 100644 --- a/projects/ui/src/lib/components/po-field/po-input/samples/sample-po-input-basic/sample-po-input-basic.component.ts +++ b/projects/ui/src/lib/components/po-field/po-input/samples/sample-po-input-basic/sample-po-input-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-input-basic', templateUrl: './sample-po-input-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoInputBasicComponent {} diff --git a/projects/ui/src/lib/components/po-field/po-input/samples/sample-po-input-labs/sample-po-input-labs.component.html b/projects/ui/src/lib/components/po-field/po-input/samples/sample-po-input-labs/sample-po-input-labs.component.html index 07d1b608ee..da9b98bd5e 100644 --- a/projects/ui/src/lib/components/po-field/po-input/samples/sample-po-input-labs/sample-po-input-labs.component.html +++ b/projects/ui/src/lib/components/po-field/po-input/samples/sample-po-input-labs/sample-po-input-labs.component.html @@ -2,36 +2,36 @@ name="input" [(ngModel)]="input" [p-helper]="helperText" - [p-clean]="properties?.includes('clean')" - [p-disabled]="properties?.includes('disabled')" + [p-clean]="$safeNavigationMigration(properties?.includes('clean'))" + [p-disabled]="$safeNavigationMigration(properties?.includes('disabled'))" [p-error-pattern]="errorPattern" [p-help]="help" [p-icon]="icon" [p-label]="label" - [p-loading]="properties?.includes('loading')" + [p-loading]="$safeNavigationMigration(properties?.includes('loading'))" [p-mask]="mask" - [p-mask-format-model]="properties?.includes('maskFormatModel')" + [p-mask-format-model]="$safeNavigationMigration(properties?.includes('maskFormatModel'))" [p-maxlength]="maxlength" [p-minlength]="minlength" - [p-no-autocomplete]="properties?.includes('noAutocomplete')" - [p-optional]="properties?.includes('optional')" + [p-no-autocomplete]="$safeNavigationMigration(properties?.includes('noAutocomplete'))" + [p-optional]="$safeNavigationMigration(properties?.includes('optional'))" [p-pattern]="pattern" [p-placeholder]="placeholder" - [p-required]="properties?.includes('required')" - [p-required-field-error-message]="properties?.includes('requiredFieldErrorMessage')" - [p-readonly]="properties?.includes('readonly')" - [p-upper-case]="properties?.includes('uppercase')" - [p-show-required]="properties?.includes('showRequired')" - [p-mask-no-length-validation]="properties?.includes('maskNoLengthValidation')" + [p-required]="$safeNavigationMigration(properties?.includes('required'))" + [p-required-field-error-message]="$safeNavigationMigration(properties?.includes('requiredFieldErrorMessage'))" + [p-readonly]="$safeNavigationMigration(properties?.includes('readonly'))" + [p-upper-case]="$safeNavigationMigration(properties?.includes('uppercase'))" + [p-show-required]="$safeNavigationMigration(properties?.includes('showRequired'))" + [p-mask-no-length-validation]="$safeNavigationMigration(properties?.includes('maskNoLengthValidation'))" [p-size]="size" (p-blur)="changeEvent('p-blur')" (p-change)="changeEvent('p-change')" (p-change-model)="changeEvent('p-change-model')" (p-enter)="changeEvent('p-enter')" (p-keydown)="changeEvent('p-keydown')" - [p-error-limit]="properties?.includes('errorLimit')" - [p-label-text-wrap]="properties?.includes('labelTextWrap')" - [p-compact-label]="properties?.includes('compactLabel')" + [p-error-limit]="$safeNavigationMigration(properties?.includes('errorLimit'))" + [p-label-text-wrap]="$safeNavigationMigration(properties?.includes('labelTextWrap'))" + [p-compact-label]="$safeNavigationMigration(properties?.includes('compactLabel'))" > diff --git a/projects/ui/src/lib/components/po-field/po-input/samples/sample-po-input-labs/sample-po-input-labs.component.ts b/projects/ui/src/lib/components/po-field/po-input/samples/sample-po-input-labs/sample-po-input-labs.component.ts index 694ed2edd7..06a59b6aa6 100644 --- a/projects/ui/src/lib/components/po-field/po-input/samples/sample-po-input-labs/sample-po-input-labs.component.ts +++ b/projects/ui/src/lib/components/po-field/po-input/samples/sample-po-input-labs/sample-po-input-labs.component.ts @@ -1,10 +1,11 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption, PoRadioGroupOption, PoSelectOption } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-input-labs', templateUrl: './sample-po-input-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoInputLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-field/po-input/samples/sample-po-input-reactive-form/sample-po-input-reactive-form.component.ts b/projects/ui/src/lib/components/po-field/po-input/samples/sample-po-input-reactive-form/sample-po-input-reactive-form.component.ts index 0d0b4e7809..ea990d6e02 100644 --- a/projects/ui/src/lib/components/po-field/po-input/samples/sample-po-input-reactive-form/sample-po-input-reactive-form.component.ts +++ b/projects/ui/src/lib/components/po-field/po-input/samples/sample-po-input-reactive-form/sample-po-input-reactive-form.component.ts @@ -1,4 +1,4 @@ -import { Component, ViewChild, inject } from '@angular/core'; +import { Component, ViewChild, inject, ChangeDetectionStrategy } from '@angular/core'; import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms'; import { PoModalAction, PoModalComponent } from '@po-ui/ng-components'; @@ -6,6 +6,7 @@ import { PoModalAction, PoModalComponent } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-input-reactive-form', templateUrl: './sample-po-input-reactive-form.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoInputReactiveFormComponent { diff --git a/projects/ui/src/lib/components/po-field/po-login/samples/sample-po-login-basic/sample-po-login-basic.component.ts b/projects/ui/src/lib/components/po-field/po-login/samples/sample-po-login-basic/sample-po-login-basic.component.ts index 3f30c9d30c..177d9a473d 100644 --- a/projects/ui/src/lib/components/po-field/po-login/samples/sample-po-login-basic/sample-po-login-basic.component.ts +++ b/projects/ui/src/lib/components/po-field/po-login/samples/sample-po-login-basic/sample-po-login-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-login-basic', templateUrl: './sample-po-login-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoLoginBasicComponent {} diff --git a/projects/ui/src/lib/components/po-field/po-login/samples/sample-po-login-confirm/sample-po-login-confirm.component.ts b/projects/ui/src/lib/components/po-field/po-login/samples/sample-po-login-confirm/sample-po-login-confirm.component.ts index 8fa5623de2..4dbecd8202 100644 --- a/projects/ui/src/lib/components/po-field/po-login/samples/sample-po-login-confirm/sample-po-login-confirm.component.ts +++ b/projects/ui/src/lib/components/po-field/po-login/samples/sample-po-login-confirm/sample-po-login-confirm.component.ts @@ -1,4 +1,4 @@ -import { Component, ViewChild, inject } from '@angular/core'; +import { Component, ViewChild, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoModalAction, PoModalComponent } from '@po-ui/ng-components'; import { PoNotificationService } from '@po-ui/ng-components'; @@ -6,6 +6,7 @@ import { PoNotificationService } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-login-confirm', templateUrl: './sample-po-login-confirm.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoLoginConfirmComponent { diff --git a/projects/ui/src/lib/components/po-field/po-login/samples/sample-po-login-labs/sample-po-login-labs.component.html b/projects/ui/src/lib/components/po-field/po-login/samples/sample-po-login-labs/sample-po-login-labs.component.html index c0e6d3e0d2..5e890480e0 100644 --- a/projects/ui/src/lib/components/po-field/po-login/samples/sample-po-login-labs/sample-po-login-labs.component.html +++ b/projects/ui/src/lib/components/po-field/po-login/samples/sample-po-login-labs/sample-po-login-labs.component.html @@ -7,10 +7,10 @@ [p-error-pattern]="errorPattern" [p-help]="help" [p-label]="label" - [p-loading]="properties?.includes('loading')" + [p-loading]="$safeNavigationMigration(properties?.includes('loading'))" [p-maxlength]="maxlength" [p-minlength]="minlength" - [p-no-autocomplete]="properties?.includes('noAutocomplete')" + [p-no-autocomplete]="$safeNavigationMigration(properties?.includes('noAutocomplete'))" [p-optional]="properties.includes('optional')" [p-pattern]="pattern" [p-placeholder]="placeholder" @@ -19,14 +19,14 @@ [p-required-field-error-message]="properties.includes('requiredFieldErrorMessage')" [p-show-required]="properties.includes('showRequired')" [p-size]="size" - [p-label-text-wrap]="properties?.includes('labelTextWrap')" - [p-compact-label]="properties?.includes('compactLabel')" + [p-label-text-wrap]="$safeNavigationMigration(properties?.includes('labelTextWrap'))" + [p-compact-label]="$safeNavigationMigration(properties?.includes('compactLabel'))" (p-blur)="changeEvent('p-blur')" (p-change)="changeEvent('p-change')" (p-change-model)="changeEvent('p-change-model')" (p-enter)="changeEvent('p-enter')" (p-keydown)="changeEvent('p-keydown')" - [p-error-limit]="properties?.includes('errorLimit')" + [p-error-limit]="$safeNavigationMigration(properties?.includes('errorLimit'))" > diff --git a/projects/ui/src/lib/components/po-field/po-login/samples/sample-po-login-labs/sample-po-login-labs.component.ts b/projects/ui/src/lib/components/po-field/po-login/samples/sample-po-login-labs/sample-po-login-labs.component.ts index d59caf2bad..0080f78408 100644 --- a/projects/ui/src/lib/components/po-field/po-login/samples/sample-po-login-labs/sample-po-login-labs.component.ts +++ b/projects/ui/src/lib/components/po-field/po-login/samples/sample-po-login-labs/sample-po-login-labs.component.ts @@ -1,10 +1,11 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption, PoRadioGroupOption } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-login-labs', templateUrl: './sample-po-login-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoLoginLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-field/po-lookup/po-lookup-base.component.spec.ts b/projects/ui/src/lib/components/po-field/po-lookup/po-lookup-base.component.spec.ts index bc5e6aa5c9..ab7791a3c5 100644 --- a/projects/ui/src/lib/components/po-field/po-lookup/po-lookup-base.component.spec.ts +++ b/projects/ui/src/lib/components/po-field/po-lookup/po-lookup-base.component.spec.ts @@ -49,7 +49,12 @@ describe('PoLookupBaseComponent:', () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [], - providers: [LookupFilterService, Injector, NgControl, PoLookupModalService] + providers: [ + LookupFilterService, + Injector, + { provide: NgControl, useValue: { control: new UntypedFormControl() } }, + PoLookupModalService + ] }).compileComponents(); defaultService = new PoLookupFilterService(undefined); diff --git a/projects/ui/src/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal-base.component.spec.ts b/projects/ui/src/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal-base.component.spec.ts index d21fe19c63..8e5893ee95 100644 --- a/projects/ui/src/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal-base.component.spec.ts +++ b/projects/ui/src/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal-base.component.spec.ts @@ -9,7 +9,7 @@ import { PoTableColumnSortType } from '../../../po-table/enums/po-table-column-s import { PoTableColumnSort } from '../../../po-table/interfaces/po-table-column-sort.interface'; import { PoLookupResponseApi } from '../interfaces/po-lookup-response-api.interface'; import { poLookupLiteralsDefault, PoLookupModalBaseComponent } from './po-lookup-modal-base.component'; -import { convertToBoolean } from 'projects/ui/src/lib/utils/util'; +import { convertToBoolean } from '../../../../utils/util'; @Directive() class PoLookupModalComponent extends PoLookupModalBaseComponent { diff --git a/projects/ui/src/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal.component.html b/projects/ui/src/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal.component.html index 6a88ce86e6..a568d6a88f 100644 --- a/projects/ui/src/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal.component.html +++ b/projects/ui/src/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal.component.html @@ -51,8 +51,8 @@ @if (!!disclaimerGroup) { diff --git a/projects/ui/src/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal.component.spec.ts b/projects/ui/src/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal.component.spec.ts index dd0f23c909..5e0efdbb7b 100644 --- a/projects/ui/src/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal.component.spec.ts +++ b/projects/ui/src/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal.component.spec.ts @@ -1,6 +1,6 @@ import { provideHttpClientTesting } from '@angular/common/http/testing'; import { NO_ERRORS_SCHEMA } from '@angular/core'; -import { ComponentFixture, discardPeriodicTasks, fakeAsync, flush, TestBed, tick } from '@angular/core/testing'; +import { ComponentFixture, fakeAsync, TestBed } from '@angular/core/testing'; import { provideRouter } from '@angular/router'; import { Observable, of } from 'rxjs'; import { PoLookupFilter } from '../../../../components/po-field/po-lookup/interfaces/po-lookup-filter.interface'; @@ -10,10 +10,10 @@ import { PoComponentInjectorService } from '../../../../services/po-component-in import { PoDynamicModule } from '../../../po-dynamic/po-dynamic.module'; import { PoTableColumnSortType } from '../../../po-table/enums/po-table-column-sort-type.enum'; import { PoTableColumnSort } from '../../../po-table/interfaces/po-table-column-sort.interface'; -import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; import { PoTableColumnSpacing } from '../../../po-table'; -import { PoFieldSize } from 'projects/ui/src/lib/enums/po-field-size.enum'; -import { PoThemeA11yEnum } from 'projects/ui/src/public-api'; +import { PoFieldSize } from '../../../../enums/po-field-size.enum'; +import { PoThemeA11yEnum } from '../../../../../public-api'; class LookupFilterService implements PoLookupFilter { getFilteredItems(params: any): Observable { @@ -38,7 +38,7 @@ describe('PoLookupModalComponent', () => { providers: [ LookupFilterService, PoComponentInjectorService, - provideHttpClient(withInterceptorsFromDi()), + provideHttpClient(withXhr(), withInterceptorsFromDi()), provideHttpClientTesting(), provideRouter([]) ] @@ -333,17 +333,16 @@ describe('PoLookupModalComponent', () => { }); describe('AdvancedSearch: ', () => { - beforeEach(fakeAsync(() => { + beforeEach(async () => { component.advancedFilters = advancedFilters; fixture.detectChanges(); component.onAdvancedFilter(); + await (component as any).dynamicFormReady; - tick(10); fixture.detectChanges(); - - flush(); - discardPeriodicTasks(); - })); + await fixture.whenStable(); + fixture.detectChanges(); + }); afterEach(() => { component.advancedFilters = []; diff --git a/projects/ui/src/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal.component.ts b/projects/ui/src/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal.component.ts index cd3b3dba67..f909ef87df 100644 --- a/projects/ui/src/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal.component.ts +++ b/projects/ui/src/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal.component.ts @@ -43,6 +43,8 @@ export class PoLookupModalComponent extends PoLookupModalBaseComponent implement componentRef: ComponentRef; dynamicForm: NgForm; + private dynamicFormReady: Promise; + constructor() { const poLanguage = inject(PoLanguageService); const changeDetector = inject(ChangeDetectorRef); @@ -142,9 +144,9 @@ export class PoLookupModalComponent extends PoLookupModalBaseComponent implement } } - onAdvancedFilter() { + onAdvancedFilter(): void { this.setupModalAdvancedFilter(); - this.createDynamicForm(); + this.dynamicFormReady = this.createDynamicForm(); } private setTableHeight(): void { @@ -193,24 +195,26 @@ export class PoLookupModalComponent extends PoLookupModalBaseComponent implement // PoLookupModalService -> PoLookupModalComponent -> PoDynamicFormComponent // eslint-disable-next-line @typescript-eslint/naming-convention - import('./../../../po-dynamic/po-dynamic-form/po-dynamic-form.component').then(({ PoDynamicFormComponent }) => { - this.componentRef = this.container.createComponent(PoDynamicFormComponent); - this.componentRef.instance.fields = this.advancedFilters; - this.componentRef.instance.value = this.dynamicFormValue; - this.componentRef.instance.componentsSize = this.size; - - this.componentRef.instance.formOutput - .pipe( - tap((form: NgForm) => { - this.dynamicForm = form; + return import('./../../../po-dynamic/po-dynamic-form/po-dynamic-form.component').then( + ({ PoDynamicFormComponent }) => { + this.componentRef = this.container.createComponent(PoDynamicFormComponent); + this.componentRef.instance.fields = this.advancedFilters; + this.componentRef.instance.value = this.dynamicFormValue; + this.componentRef.instance.componentsSize = this.size; + + this.componentRef.instance.formOutput + .pipe( + tap((form: NgForm) => { + this.dynamicForm = form; + this.primaryActionAdvancedFilter.disabled = this.dynamicForm.invalid; + }), + switchMap((form: NgForm) => form.valueChanges) + ) + .subscribe(() => { this.primaryActionAdvancedFilter.disabled = this.dynamicForm.invalid; - }), - switchMap((form: NgForm) => form.valueChanges) - ) - .subscribe(() => { - this.primaryActionAdvancedFilter.disabled = this.dynamicForm.invalid; - }); - this.changeDetector.markForCheck(); - }); + }); + this.changeDetector.markForCheck(); + } + ); } } diff --git a/projects/ui/src/lib/components/po-field/po-lookup/po-lookup.component.spec.ts b/projects/ui/src/lib/components/po-field/po-lookup/po-lookup.component.spec.ts index af96e88934..6952666478 100644 --- a/projects/ui/src/lib/components/po-field/po-lookup/po-lookup.component.spec.ts +++ b/projects/ui/src/lib/components/po-field/po-lookup/po-lookup.component.spec.ts @@ -1,7 +1,7 @@ import { ComponentRef, EventEmitter, Injector } from '@angular/core'; import { ComponentFixture, fakeAsync, flush, inject, TestBed, tick } from '@angular/core/testing'; -import { Routes } from '@angular/router'; -import { RouterTestingModule } from '@angular/router/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { Routes, RouterModule } from '@angular/router'; import { Observable, of } from 'rxjs'; @@ -9,7 +9,7 @@ import { PoFieldModule } from '../../../components/po-field'; import { PoComponentInjectorService } from '../../../services/po-component-injector/po-component-injector.service'; import { PoControlPositionService } from '../../../services/po-control-position/po-control-position.service'; -import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; import { provideHttpClientTesting } from '@angular/common/http/testing'; import { NgControl } from '@angular/forms'; import { PoFieldSize } from '../../../enums/po-field-size.enum'; @@ -44,14 +44,15 @@ describe('PoLookupComponent:', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [RouterTestingModule.withRoutes(routes), PoFieldModule], + imports: [RouterModule.forRoot(routes), PoFieldModule], providers: [ + provideLocationMocks(), LookupFilterService, PoComponentInjectorService, PoControlPositionService, Injector, - NgControl, - provideHttpClient(withInterceptorsFromDi()), + { provide: NgControl, useValue: { control: null } }, + provideHttpClient(withXhr(), withInterceptorsFromDi()), provideHttpClientTesting() ] }).compileComponents(); diff --git a/projects/ui/src/lib/components/po-field/po-lookup/samples/sample-po-lookup-basic/sample-po-lookup-basic.component.ts b/projects/ui/src/lib/components/po-field/po-lookup/samples/sample-po-lookup-basic/sample-po-lookup-basic.component.ts index d71b617426..3247679a1d 100644 --- a/projects/ui/src/lib/components/po-field/po-lookup/samples/sample-po-lookup-basic/sample-po-lookup-basic.component.ts +++ b/projects/ui/src/lib/components/po-field/po-lookup/samples/sample-po-lookup-basic/sample-po-lookup-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-lookup-basic', templateUrl: './sample-po-lookup-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoLookupBasicComponent {} diff --git a/projects/ui/src/lib/components/po-field/po-lookup/samples/sample-po-lookup-hero-reactive-form/sample-po-lookup-hero-reactive-form.component.ts b/projects/ui/src/lib/components/po-field/po-lookup/samples/sample-po-lookup-hero-reactive-form/sample-po-lookup-hero-reactive-form.component.ts index 9a23b0869e..a4c9c11001 100644 --- a/projects/ui/src/lib/components/po-field/po-lookup/samples/sample-po-lookup-hero-reactive-form/sample-po-lookup-hero-reactive-form.component.ts +++ b/projects/ui/src/lib/components/po-field/po-lookup/samples/sample-po-lookup-hero-reactive-form/sample-po-lookup-hero-reactive-form.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, inject } from '@angular/core'; +import { Component, OnInit, inject, ChangeDetectionStrategy } from '@angular/core'; import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms'; import { PoLookupColumn, PoSelectOption } from '@po-ui/ng-components'; @@ -11,6 +11,7 @@ import { SamplePoLookupService } from '../sample-po-lookup.service'; selector: 'sample-po-lookup-hero-reactive-form', templateUrl: './sample-po-lookup-hero-reactive-form.component.html', providers: [SamplePoLookupService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoLookupHeroReactiveFormComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-field/po-lookup/samples/sample-po-lookup-hero/sample-po-lookup-hero.component.ts b/projects/ui/src/lib/components/po-field/po-lookup/samples/sample-po-lookup-hero/sample-po-lookup-hero.component.ts index 57ea5c63d7..425652eef4 100644 --- a/projects/ui/src/lib/components/po-field/po-lookup/samples/sample-po-lookup-hero/sample-po-lookup-hero.component.ts +++ b/projects/ui/src/lib/components/po-field/po-lookup/samples/sample-po-lookup-hero/sample-po-lookup-hero.component.ts @@ -1,4 +1,4 @@ -import { Component, inject } from '@angular/core'; +import { Component, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoLookupColumn, PoSelectOption } from '@po-ui/ng-components'; @@ -10,6 +10,7 @@ import { SamplePoLookupService } from '../sample-po-lookup.service'; selector: 'sample-po-lookup-hero', templateUrl: './sample-po-lookup-hero.component.html', providers: [SamplePoLookupService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoLookupHeroComponent { diff --git a/projects/ui/src/lib/components/po-field/po-lookup/samples/sample-po-lookup-labs/sample-po-lookup-labs.component.html b/projects/ui/src/lib/components/po-field/po-lookup/samples/sample-po-lookup-labs/sample-po-lookup-labs.component.html index 4e3f8d8e47..e294276c77 100644 --- a/projects/ui/src/lib/components/po-field/po-lookup/samples/sample-po-lookup-labs/sample-po-lookup-labs.component.html +++ b/projects/ui/src/lib/components/po-field/po-lookup/samples/sample-po-lookup-labs/sample-po-lookup-labs.component.html @@ -27,15 +27,15 @@ [p-size]="size" [p-spacing]="spacing" [p-text-wrap]="properties.includes('textWrap')" - [p-label-text-wrap]="properties?.includes('labelTextWrap')" + [p-label-text-wrap]="$safeNavigationMigration(properties?.includes('labelTextWrap'))" [p-virtual-scroll]="properties.includes('virtualScroll')" (p-change)="changeEvent('p-change')" (p-change-model)="changeEvent('p-change-model')" (p-error)="changeEvent('p-error')" (p-keydown)="changeEvent('p-keydown')" (p-selected)="changeEvent('p-selected')" - [p-error-limit]="properties?.includes('errorLimit')" - [p-compact-label]="properties?.includes('compactLabel')" + [p-error-limit]="$safeNavigationMigration(properties?.includes('errorLimit'))" + [p-compact-label]="$safeNavigationMigration(properties?.includes('compactLabel'))" > diff --git a/projects/ui/src/lib/components/po-field/po-lookup/samples/sample-po-lookup-labs/sample-po-lookup-labs.component.ts b/projects/ui/src/lib/components/po-field/po-lookup/samples/sample-po-lookup-labs/sample-po-lookup-labs.component.ts index 8d08d7700e..cea0562607 100644 --- a/projects/ui/src/lib/components/po-field/po-lookup/samples/sample-po-lookup-labs/sample-po-lookup-labs.component.ts +++ b/projects/ui/src/lib/components/po-field/po-lookup/samples/sample-po-lookup-labs/sample-po-lookup-labs.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, inject } from '@angular/core'; +import { Component, OnInit, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption, @@ -17,6 +17,7 @@ import { SamplePoLookupService } from '../sample-po-lookup.service'; selector: 'sample-po-lookup-labs', templateUrl: './sample-po-lookup-labs.component.html', providers: [SamplePoLookupService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoLookupLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-field/po-lookup/samples/sample-po-lookup-multiple/sample-po-lookup-multiple.component.ts b/projects/ui/src/lib/components/po-field/po-lookup/samples/sample-po-lookup-multiple/sample-po-lookup-multiple.component.ts index 20239ef01a..822b833e6e 100644 --- a/projects/ui/src/lib/components/po-field/po-lookup/samples/sample-po-lookup-multiple/sample-po-lookup-multiple.component.ts +++ b/projects/ui/src/lib/components/po-field/po-lookup/samples/sample-po-lookup-multiple/sample-po-lookup-multiple.component.ts @@ -1,4 +1,4 @@ -import { Component, inject } from '@angular/core'; +import { Component, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoTableColumn } from '@po-ui/ng-components'; import { SamplePoLookupMultipleService } from './sample-po-lookup-multiple.service'; @@ -7,6 +7,7 @@ import { SamplePoLookupMultipleService } from './sample-po-lookup-multiple.servi selector: 'sample-po-lookup-multiple', templateUrl: './sample-po-lookup-multiple.component.html', styles: [], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoLookupMultipleComponent { diff --git a/projects/ui/src/lib/components/po-field/po-lookup/samples/sample-po-lookup-sw-films/sample-po-lookup-sw-films.component.ts b/projects/ui/src/lib/components/po-field/po-lookup/samples/sample-po-lookup-sw-films/sample-po-lookup-sw-films.component.ts index 46318f35b0..82971833e8 100644 --- a/projects/ui/src/lib/components/po-field/po-lookup/samples/sample-po-lookup-sw-films/sample-po-lookup-sw-films.component.ts +++ b/projects/ui/src/lib/components/po-field/po-lookup/samples/sample-po-lookup-sw-films/sample-po-lookup-sw-films.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, inject } from '@angular/core'; +import { Component, OnInit, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoRadioGroupOption } from '@po-ui/ng-components'; import { SamplePoLookupSwFilmsService } from './sample-po-lookup-sw-films.service'; @@ -6,6 +6,7 @@ import { SamplePoLookupSwFilmsService } from './sample-po-lookup-sw-films.servic selector: 'sample-po-lookup-sw-films', templateUrl: './sample-po-lookup-sw-films.component.html', providers: [SamplePoLookupSwFilmsService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoLookupSwFilmsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-field/po-lookup/services/po-lookup-filter.service.spec.ts b/projects/ui/src/lib/components/po-field/po-lookup/services/po-lookup-filter.service.spec.ts index 53b37d0485..ee6332ccd5 100644 --- a/projects/ui/src/lib/components/po-field/po-lookup/services/po-lookup-filter.service.spec.ts +++ b/projects/ui/src/lib/components/po-field/po-lookup/services/po-lookup-filter.service.spec.ts @@ -1,7 +1,7 @@ import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { fakeAsync, TestBed, tick } from '@angular/core/testing'; import { PoLookupFilterService } from './po-lookup-filter.service'; -import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; describe('PoLookupFilterService', () => { let service: PoLookupFilterService; @@ -10,7 +10,11 @@ describe('PoLookupFilterService', () => { beforeEach(() => { TestBed.configureTestingModule({ imports: [], - providers: [PoLookupFilterService, provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting()] + providers: [ + PoLookupFilterService, + provideHttpClient(withXhr(), withInterceptorsFromDi()), + provideHttpClientTesting() + ] }); service = TestBed.inject(PoLookupFilterService); diff --git a/projects/ui/src/lib/components/po-field/po-lookup/services/po-lookup-modal.service.spec.ts b/projects/ui/src/lib/components/po-field/po-lookup/services/po-lookup-modal.service.spec.ts index 4e0747277e..4c9447c2b2 100644 --- a/projects/ui/src/lib/components/po-field/po-lookup/services/po-lookup-modal.service.spec.ts +++ b/projects/ui/src/lib/components/po-field/po-lookup/services/po-lookup-modal.service.spec.ts @@ -1,7 +1,7 @@ import { ComponentRef, EventEmitter, NO_ERRORS_SCHEMA } from '@angular/core'; -import { RouterTestingModule } from '@angular/router/testing'; -import { Routes } from '@angular/router'; +import { Routes, RouterModule } from '@angular/router'; import { TestBed } from '@angular/core/testing'; +import { provideLocationMocks } from '@angular/common/testing'; import { Observable, of } from 'rxjs'; @@ -11,7 +11,7 @@ import { PoFieldModule } from '../../../../components/po-field/po-field.module'; import { PoLookupFilter } from '../../../../components/po-field/po-lookup/interfaces/po-lookup-filter.interface'; import { PoLookupModalService } from '../../../../components/po-field/po-lookup/services/po-lookup-modal.service'; import { provideHttpClientTesting } from '@angular/common/http/testing'; -import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; class LookupFilterService implements PoLookupFilter { getObjectByValue(id: string): Observable { @@ -58,13 +58,14 @@ describe('PoLookupModalService:', () => { beforeEach(() => { TestBed.configureTestingModule({ schemas: [NO_ERRORS_SCHEMA], - imports: [RouterTestingModule.withRoutes(routes), PoFieldModule], + imports: [RouterModule.forRoot(routes), PoFieldModule], providers: [ + provideLocationMocks(), LookupFilterService, PoComponentInjectorService, PoControlPositionService, PoLookupModalService, - provideHttpClient(withInterceptorsFromDi()), + provideHttpClient(withXhr(), withInterceptorsFromDi()), provideHttpClientTesting() ] }); diff --git a/projects/ui/src/lib/components/po-field/po-multiselect/po-multiselect-filter.service.spec.ts b/projects/ui/src/lib/components/po-field/po-multiselect/po-multiselect-filter.service.spec.ts index 14c6321918..93e79ab21e 100644 --- a/projects/ui/src/lib/components/po-field/po-multiselect/po-multiselect-filter.service.spec.ts +++ b/projects/ui/src/lib/components/po-field/po-multiselect/po-multiselect-filter.service.spec.ts @@ -1,5 +1,5 @@ import { TestBed } from '@angular/core/testing'; -import { HttpRequest, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { HttpRequest, provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { PoMultiselectFilterService } from './po-multiselect-filter.service'; @@ -12,7 +12,11 @@ describe('PoMultiSelectFilterService ', () => { beforeEach(() => { TestBed.configureTestingModule({ imports: [], - providers: [PoMultiselectFilterService, provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting()] + providers: [ + PoMultiselectFilterService, + provideHttpClient(withXhr(), withInterceptorsFromDi()), + provideHttpClientTesting() + ] }); multiSelectService = TestBed.inject(PoMultiselectFilterService); diff --git a/projects/ui/src/lib/components/po-field/po-multiselect/po-multiselect.component.spec.ts b/projects/ui/src/lib/components/po-field/po-multiselect/po-multiselect.component.spec.ts index 6bbbb73024..c56db07aa1 100644 --- a/projects/ui/src/lib/components/po-field/po-multiselect/po-multiselect.component.spec.ts +++ b/projects/ui/src/lib/components/po-field/po-multiselect/po-multiselect.component.spec.ts @@ -1,5 +1,5 @@ import { OverlayModule } from '@angular/cdk/overlay'; -import { HttpClient, HttpHandler, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { HttpClient, HttpHandler, provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { ComponentFixture, fakeAsync, flush, TestBed, tick } from '@angular/core/testing'; import { Observable, of, throwError } from 'rxjs'; @@ -65,7 +65,7 @@ describe('PoMultiselectComponent:', () => { Renderer2, PoMultiselectFilterService, PoControlPositionService, - provideHttpClient(withInterceptorsFromDi()), + provideHttpClient(withXhr(), withInterceptorsFromDi()), provideHttpClientTesting() ] }).compileComponents(); @@ -761,6 +761,31 @@ describe('PoMultiselectComponent:', () => { expect(fakeThis.visibleElement).toBeFalsy(); }); + it(`ngDoCheck: should call debounceResize via second condition when element is already visible + but isCalculateVisibleItems is true`, () => { + // Primeiro grupo falha em !visibleElement (visibleElement = true), forçando a + // avaliação do segundo grupo (inputWidth && isCalculateVisibleItems), que cobre + // o ramo do isCalculateVisibleItems. + const fakeThis = { + inputElement: { + nativeElement: { + offsetWidth: 10 + } + }, + visibleElement: true, + initialized: true, + isCalculateVisibleItems: true, + debounceResize: () => true + }; + + spyOn(fakeThis, 'debounceResize'); + + component.ngDoCheck.call(fakeThis); + + expect(fakeThis.debounceResize).toHaveBeenCalled(); + expect(fakeThis.visibleElement).toBeTruthy(); + }); + it('ngOnDestroy: should call removeListeners and call unsubscribe from subscription', () => { const removeListenersSpy = spyOn(component, 'removeListeners'); component['getObjectsByValuesSubscription'] = { unsubscribe: () => {} }; diff --git a/projects/ui/src/lib/components/po-field/po-multiselect/samples/sample-po-multiselect-any-array/sample-po-multiselect-any-array.component.ts b/projects/ui/src/lib/components/po-field/po-multiselect/samples/sample-po-multiselect-any-array/sample-po-multiselect-any-array.component.ts index 6cd953366f..4f40072e1e 100644 --- a/projects/ui/src/lib/components/po-field/po-multiselect/samples/sample-po-multiselect-any-array/sample-po-multiselect-any-array.component.ts +++ b/projects/ui/src/lib/components/po-field/po-multiselect/samples/sample-po-multiselect-any-array/sample-po-multiselect-any-array.component.ts @@ -1,10 +1,11 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoSelectOption } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-multiselect-any-array', templateUrl: './sample-po-multiselect-any-array.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoMultiselectAnyArrayComponent { diff --git a/projects/ui/src/lib/components/po-field/po-multiselect/samples/sample-po-multiselect-basic/sample-po-multiselect-basic.component.ts b/projects/ui/src/lib/components/po-field/po-multiselect/samples/sample-po-multiselect-basic/sample-po-multiselect-basic.component.ts index 754817d32d..072223862b 100644 --- a/projects/ui/src/lib/components/po-field/po-multiselect/samples/sample-po-multiselect-basic/sample-po-multiselect-basic.component.ts +++ b/projects/ui/src/lib/components/po-field/po-multiselect/samples/sample-po-multiselect-basic/sample-po-multiselect-basic.component.ts @@ -1,10 +1,11 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoMultiselectOption } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-multiselect-basic', templateUrl: './sample-po-multiselect-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoMultiselectBasicComponent { diff --git a/projects/ui/src/lib/components/po-field/po-multiselect/samples/sample-po-multiselect-heroes/sample-po-multiselect-heroes.component.ts b/projects/ui/src/lib/components/po-field/po-multiselect/samples/sample-po-multiselect-heroes/sample-po-multiselect-heroes.component.ts index f73737c1da..5c1961494b 100644 --- a/projects/ui/src/lib/components/po-field/po-multiselect/samples/sample-po-multiselect-heroes/sample-po-multiselect-heroes.component.ts +++ b/projects/ui/src/lib/components/po-field/po-multiselect/samples/sample-po-multiselect-heroes/sample-po-multiselect-heroes.component.ts @@ -1,4 +1,4 @@ -import { Component, inject } from '@angular/core'; +import { Component, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoTableColumn, PoMultiselectFilter } from '@po-ui/ng-components'; import { SamplePoMultiselectHeroesService } from './sample-po-multiselect-heroes.service'; @@ -7,6 +7,7 @@ import { SamplePoMultiselectHeroesService } from './sample-po-multiselect-heroes selector: 'sample-po-multiselect-heroes', templateUrl: './sample-po-multiselect-heroes.component.html', providers: [SamplePoMultiselectHeroesService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoMultiselectHeroesComponent { diff --git a/projects/ui/src/lib/components/po-field/po-multiselect/samples/sample-po-multiselect-labs/sample-po-multiselect-labs.component.html b/projects/ui/src/lib/components/po-field/po-multiselect/samples/sample-po-multiselect-labs/sample-po-multiselect-labs.component.html index 5c83a97cc4..f48760a95d 100644 --- a/projects/ui/src/lib/components/po-field/po-multiselect/samples/sample-po-multiselect-labs/sample-po-multiselect-labs.component.html +++ b/projects/ui/src/lib/components/po-field/po-multiselect/samples/sample-po-multiselect-labs/sample-po-multiselect-labs.component.html @@ -29,9 +29,9 @@ (p-change)="changeEvent('p-change')" (p-change-model)="changeEvent('p-change-model')" (p-keydown)="changeEvent('p-keydown')" - [p-error-limit]="properties?.includes('errorLimit')" - [p-label-text-wrap]="properties?.includes('labelTextWrap')" - [p-compact-label]="properties?.includes('compactLabel')" + [p-error-limit]="$safeNavigationMigration(properties?.includes('errorLimit'))" + [p-label-text-wrap]="$safeNavigationMigration(properties?.includes('labelTextWrap'))" + [p-compact-label]="$safeNavigationMigration(properties?.includes('compactLabel'))" >
    diff --git a/projects/ui/src/lib/components/po-field/po-multiselect/samples/sample-po-multiselect-labs/sample-po-multiselect-labs.component.ts b/projects/ui/src/lib/components/po-field/po-multiselect/samples/sample-po-multiselect-labs/sample-po-multiselect-labs.component.ts index a97022717b..5136b2b714 100644 --- a/projects/ui/src/lib/components/po-field/po-multiselect/samples/sample-po-multiselect-labs/sample-po-multiselect-labs.component.ts +++ b/projects/ui/src/lib/components/po-field/po-multiselect/samples/sample-po-multiselect-labs/sample-po-multiselect-labs.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption, @@ -10,6 +10,7 @@ import { @Component({ selector: 'sample-po-multiselect-labs', templateUrl: './sample-po-multiselect-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoMultiselectLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-field/po-multiselect/samples/sample-po-multiselect-template/sample-po-multiselect-template.component.ts b/projects/ui/src/lib/components/po-field/po-multiselect/samples/sample-po-multiselect-template/sample-po-multiselect-template.component.ts index 5d189d0832..b8f1add215 100644 --- a/projects/ui/src/lib/components/po-field/po-multiselect/samples/sample-po-multiselect-template/sample-po-multiselect-template.component.ts +++ b/projects/ui/src/lib/components/po-field/po-multiselect/samples/sample-po-multiselect-template/sample-po-multiselect-template.component.ts @@ -1,10 +1,11 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoSelectOption } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-multiselect-template', templateUrl: './sample-po-multiselect-template.component.html', styleUrls: ['./sample-po-multiselect-template.component.css'], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoMultiselectTemplateComponent { diff --git a/projects/ui/src/lib/components/po-field/po-multiselect/samples/sample-po-multiselect-vacation-reactive-form/sample-po-multiselect-vacation-reactive-form.component.ts b/projects/ui/src/lib/components/po-field/po-multiselect/samples/sample-po-multiselect-vacation-reactive-form/sample-po-multiselect-vacation-reactive-form.component.ts index 154dc24c08..e7a2422f4e 100644 --- a/projects/ui/src/lib/components/po-field/po-multiselect/samples/sample-po-multiselect-vacation-reactive-form/sample-po-multiselect-vacation-reactive-form.component.ts +++ b/projects/ui/src/lib/components/po-field/po-multiselect/samples/sample-po-multiselect-vacation-reactive-form/sample-po-multiselect-vacation-reactive-form.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, inject } from '@angular/core'; +import { Component, OnInit, inject, ChangeDetectionStrategy } from '@angular/core'; import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms'; import { PoMultiselectOption, PoRadioGroupOption } from '@po-ui/ng-components'; @@ -6,6 +6,7 @@ import { PoMultiselectOption, PoRadioGroupOption } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-multiselect-vacation-reactive-form', templateUrl: './sample-po-multiselect-vacation-reactive-form.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoMultiselectVacationReactiveFormComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-field/po-multiselect/samples/sample-po-multiselect-vacation/sample-po-multiselect-vacation.component.ts b/projects/ui/src/lib/components/po-field/po-multiselect/samples/sample-po-multiselect-vacation/sample-po-multiselect-vacation.component.ts index 75d63bc9e5..32966342be 100644 --- a/projects/ui/src/lib/components/po-field/po-multiselect/samples/sample-po-multiselect-vacation/sample-po-multiselect-vacation.component.ts +++ b/projects/ui/src/lib/components/po-field/po-multiselect/samples/sample-po-multiselect-vacation/sample-po-multiselect-vacation.component.ts @@ -1,10 +1,11 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoMultiselectOption, PoRadioGroupOption } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-multiselect-vacation', templateUrl: './sample-po-multiselect-vacation.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoMultiselectVacationComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-field/po-number/po-number-base.component.spec.ts b/projects/ui/src/lib/components/po-field/po-number/po-number-base.component.spec.ts index 00c6469cce..0093ab34b9 100644 --- a/projects/ui/src/lib/components/po-field/po-number/po-number-base.component.spec.ts +++ b/projects/ui/src/lib/components/po-field/po-number/po-number-base.component.spec.ts @@ -1,4 +1,4 @@ -import { ChangeDetectorRef, Component, ElementRef, inject } from '@angular/core'; +import { ChangeDetectorRef, Component, ElementRef, inject, ChangeDetectionStrategy } from '@angular/core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { AbstractControl } from '@angular/forms'; @@ -13,6 +13,7 @@ import { PoNumberBaseComponent } from './po-number-base.component'; `, + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) class ContentProjectionComponent extends PoNumberBaseComponent { diff --git a/projects/ui/src/lib/components/po-field/po-number/samples/sample-po-number-basic/sample-po-number-basic.component.ts b/projects/ui/src/lib/components/po-field/po-number/samples/sample-po-number-basic/sample-po-number-basic.component.ts index 95daddbf00..9210a512bb 100644 --- a/projects/ui/src/lib/components/po-field/po-number/samples/sample-po-number-basic/sample-po-number-basic.component.ts +++ b/projects/ui/src/lib/components/po-field/po-number/samples/sample-po-number-basic/sample-po-number-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-number-basic', templateUrl: './sample-po-number-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoNumberBasicComponent {} diff --git a/projects/ui/src/lib/components/po-field/po-number/samples/sample-po-number-calculate/sample-po-number-calculate.component.ts b/projects/ui/src/lib/components/po-field/po-number/samples/sample-po-number-calculate/sample-po-number-calculate.component.ts index 4215c32322..6e9cb2fd79 100644 --- a/projects/ui/src/lib/components/po-field/po-number/samples/sample-po-number-calculate/sample-po-number-calculate.component.ts +++ b/projects/ui/src/lib/components/po-field/po-number/samples/sample-po-number-calculate/sample-po-number-calculate.component.ts @@ -1,10 +1,11 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoSelectOption } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-number-calculate', templateUrl: './sample-po-number-calculate.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoNumberCalculateComponent { diff --git a/projects/ui/src/lib/components/po-field/po-number/samples/sample-po-number-labs/sample-po-number-labs.component.html b/projects/ui/src/lib/components/po-field/po-number/samples/sample-po-number-labs/sample-po-number-labs.component.html index bb60a69af9..9328657d67 100644 --- a/projects/ui/src/lib/components/po-field/po-number/samples/sample-po-number-labs/sample-po-number-labs.component.html +++ b/projects/ui/src/lib/components/po-field/po-number/samples/sample-po-number-labs/sample-po-number-labs.component.html @@ -9,12 +9,12 @@ [p-help]="help" [p-icon]="icon" [p-label]="label" - [p-loading]="properties?.includes('loading')" + [p-loading]="$safeNavigationMigration(properties?.includes('loading'))" [p-max]="max" [p-maxlength]="maxlength" [p-min]="min" [p-minlength]="minlength" - [p-no-autocomplete]="properties?.includes('noAutocomplete')" + [p-no-autocomplete]="$safeNavigationMigration(properties?.includes('noAutocomplete'))" [p-optional]="properties.includes('optional')" [p-placeholder]="placeholder" [p-readonly]="properties.includes('readonly')" @@ -27,9 +27,9 @@ (p-change)="changeEvent('p-change')" (p-change-model)="changeEvent('p-change-model')" (p-keydown)="changeEvent('p-keydown')" - [p-error-limit]="properties?.includes('errorLimit')" - [p-label-text-wrap]="properties?.includes('labelTextWrap')" - [p-compact-label]="properties?.includes('compactLabel')" + [p-error-limit]="$safeNavigationMigration(properties?.includes('errorLimit'))" + [p-label-text-wrap]="$safeNavigationMigration(properties?.includes('labelTextWrap'))" + [p-compact-label]="$safeNavigationMigration(properties?.includes('compactLabel'))" > diff --git a/projects/ui/src/lib/components/po-field/po-number/samples/sample-po-number-labs/sample-po-number-labs.component.ts b/projects/ui/src/lib/components/po-field/po-number/samples/sample-po-number-labs/sample-po-number-labs.component.ts index 626aab041f..e7daaabaad 100644 --- a/projects/ui/src/lib/components/po-field/po-number/samples/sample-po-number-labs/sample-po-number-labs.component.ts +++ b/projects/ui/src/lib/components/po-field/po-number/samples/sample-po-number-labs/sample-po-number-labs.component.ts @@ -1,10 +1,11 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption, PoRadioGroupOption, PoSelectOption } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-number-labs', templateUrl: './sample-po-number-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoNumberLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-field/po-password/samples/sample-po-password-basic/sample-po-password-basic.component.ts b/projects/ui/src/lib/components/po-field/po-password/samples/sample-po-password-basic/sample-po-password-basic.component.ts index cb5a8bade5..27545d56eb 100644 --- a/projects/ui/src/lib/components/po-field/po-password/samples/sample-po-password-basic/sample-po-password-basic.component.ts +++ b/projects/ui/src/lib/components/po-field/po-password/samples/sample-po-password-basic/sample-po-password-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-password-basic', templateUrl: './sample-po-password-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPasswordBasicComponent {} diff --git a/projects/ui/src/lib/components/po-field/po-password/samples/sample-po-password-labs/sample-po-password-labs.component.html b/projects/ui/src/lib/components/po-field/po-password/samples/sample-po-password-labs/sample-po-password-labs.component.html index d3e4155a4b..4c7f092fa6 100644 --- a/projects/ui/src/lib/components/po-field/po-password/samples/sample-po-password-labs/sample-po-password-labs.component.html +++ b/projects/ui/src/lib/components/po-field/po-password/samples/sample-po-password-labs/sample-po-password-labs.component.html @@ -8,10 +8,10 @@ [p-help]="help" [p-hide-password-peek]="properties.includes('hidepasswordpeek')" [p-label]="label" - [p-loading]="properties?.includes('loading')" + [p-loading]="$safeNavigationMigration(properties?.includes('loading'))" [p-maxlength]="maxlength" [p-minlength]="minlength" - [p-no-autocomplete]="properties?.includes('noAutocomplete')" + [p-no-autocomplete]="$safeNavigationMigration(properties?.includes('noAutocomplete'))" [p-optional]="properties.includes('optional')" [p-pattern]="pattern" [p-placeholder]="placeholder" @@ -25,9 +25,9 @@ (p-change-model)="changeEvent('p-change-model')" (p-enter)="changeEvent('p-enter')" (p-keydown)="changeEvent('p-keydown')" - [p-error-limit]="properties?.includes('errorLimit')" - [p-label-text-wrap]="properties?.includes('labelTextWrap')" - [p-compact-label]="properties?.includes('compactLabel')" + [p-error-limit]="$safeNavigationMigration(properties?.includes('errorLimit'))" + [p-label-text-wrap]="$safeNavigationMigration(properties?.includes('labelTextWrap'))" + [p-compact-label]="$safeNavigationMigration(properties?.includes('compactLabel'))" > diff --git a/projects/ui/src/lib/components/po-field/po-password/samples/sample-po-password-labs/sample-po-password-labs.component.ts b/projects/ui/src/lib/components/po-field/po-password/samples/sample-po-password-labs/sample-po-password-labs.component.ts index 1cf6005a89..16cef2d5e6 100644 --- a/projects/ui/src/lib/components/po-field/po-password/samples/sample-po-password-labs/sample-po-password-labs.component.ts +++ b/projects/ui/src/lib/components/po-field/po-password/samples/sample-po-password-labs/sample-po-password-labs.component.ts @@ -1,10 +1,11 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption, PoRadioGroupOption } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-password-labs', templateUrl: './sample-po-password-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPasswordLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-field/po-password/samples/sample-po-password-reset/sample-po-password-reset.component.ts b/projects/ui/src/lib/components/po-field/po-password/samples/sample-po-password-reset/sample-po-password-reset.component.ts index b4cf919e10..6f2e580a9f 100644 --- a/projects/ui/src/lib/components/po-field/po-password/samples/sample-po-password-reset/sample-po-password-reset.component.ts +++ b/projects/ui/src/lib/components/po-field/po-password/samples/sample-po-password-reset/sample-po-password-reset.component.ts @@ -1,4 +1,4 @@ -import { Component, inject } from '@angular/core'; +import { Component, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoDialogService } from '@po-ui/ng-components'; @@ -6,6 +6,7 @@ import { PoDialogService } from '@po-ui/ng-components'; selector: 'sample-po-password-reset', templateUrl: './sample-po-password-reset.component.html', providers: [PoDialogService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPasswordResetComponent { diff --git a/projects/ui/src/lib/components/po-field/po-radio-group/po-radio-group-base.component.spec.ts b/projects/ui/src/lib/components/po-field/po-radio-group/po-radio-group-base.component.spec.ts index cdb8c97573..65f61df2a4 100644 --- a/projects/ui/src/lib/components/po-field/po-radio-group/po-radio-group-base.component.spec.ts +++ b/projects/ui/src/lib/components/po-field/po-radio-group/po-radio-group-base.component.spec.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { UntypedFormControl } from '@angular/forms'; import { expectPropertiesValues } from '../../../util-test/util-expect.spec'; @@ -12,6 +12,7 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; @Component({ selector: 'po-radio-group-base-host', template: '', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) class PoRadioHostGroupComponent extends PoRadioGroupBaseComponent { diff --git a/projects/ui/src/lib/components/po-field/po-radio-group/samples/sample-po-radio-group-basic/sample-po-radio-group-basic.component.ts b/projects/ui/src/lib/components/po-field/po-radio-group/samples/sample-po-radio-group-basic/sample-po-radio-group-basic.component.ts index 76cff302eb..13413e6887 100644 --- a/projects/ui/src/lib/components/po-field/po-radio-group/samples/sample-po-radio-group-basic/sample-po-radio-group-basic.component.ts +++ b/projects/ui/src/lib/components/po-field/po-radio-group/samples/sample-po-radio-group-basic/sample-po-radio-group-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-radio-group-basic', templateUrl: './sample-po-radio-group-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoRadioGroupBasicComponent {} diff --git a/projects/ui/src/lib/components/po-field/po-radio-group/samples/sample-po-radio-group-labs/sample-po-radio-group-labs.component.html b/projects/ui/src/lib/components/po-field/po-radio-group/samples/sample-po-radio-group-labs/sample-po-radio-group-labs.component.html index 24335fb277..1d53ee1e80 100644 --- a/projects/ui/src/lib/components/po-field/po-radio-group/samples/sample-po-radio-group-labs/sample-po-radio-group-labs.component.html +++ b/projects/ui/src/lib/components/po-field/po-radio-group/samples/sample-po-radio-group-labs/sample-po-radio-group-labs.component.html @@ -15,9 +15,9 @@ (p-change)="changeEvent('p-change')" (p-change-model)="changeEvent('p-change-model')" (p-keydown)="changeEvent('p-keydown')" - [p-error-limit]="properties?.includes('errorLimit')" - [p-label-text-wrap]="properties?.includes('labelTextWrap')" - [p-compact-label]="properties?.includes('compactLabel')" + [p-error-limit]="$safeNavigationMigration(properties?.includes('errorLimit'))" + [p-label-text-wrap]="$safeNavigationMigration(properties?.includes('labelTextWrap'))" + [p-compact-label]="$safeNavigationMigration(properties?.includes('compactLabel'))" > diff --git a/projects/ui/src/lib/components/po-field/po-radio-group/samples/sample-po-radio-group-labs/sample-po-radio-group-labs.component.ts b/projects/ui/src/lib/components/po-field/po-radio-group/samples/sample-po-radio-group-labs/sample-po-radio-group-labs.component.ts index 91e115d334..19cff298df 100644 --- a/projects/ui/src/lib/components/po-field/po-radio-group/samples/sample-po-radio-group-labs/sample-po-radio-group-labs.component.ts +++ b/projects/ui/src/lib/components/po-field/po-radio-group/samples/sample-po-radio-group-labs/sample-po-radio-group-labs.component.ts @@ -1,10 +1,11 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption, PoRadioGroupOption } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-radio-group-labs', templateUrl: './sample-po-radio-group-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoRadioGroupLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-field/po-radio-group/samples/sample-po-radio-group-translator-reactive-form/sample-po-radio-group-translator-reactive-form.component.ts b/projects/ui/src/lib/components/po-field/po-radio-group/samples/sample-po-radio-group-translator-reactive-form/sample-po-radio-group-translator-reactive-form.component.ts index cd992a497c..55f4dede8b 100644 --- a/projects/ui/src/lib/components/po-field/po-radio-group/samples/sample-po-radio-group-translator-reactive-form/sample-po-radio-group-translator-reactive-form.component.ts +++ b/projects/ui/src/lib/components/po-field/po-radio-group/samples/sample-po-radio-group-translator-reactive-form/sample-po-radio-group-translator-reactive-form.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, inject } from '@angular/core'; +import { Component, OnInit, inject, ChangeDetectionStrategy } from '@angular/core'; import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms'; import { PoRadioGroupOption, PoSelectOption } from '@po-ui/ng-components'; @@ -6,6 +6,7 @@ import { PoRadioGroupOption, PoSelectOption } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-radio-group-translator-reactive-form', templateUrl: './sample-po-radio-group-translator-reactive-form.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoRadioGroupTranslatorReactiveFormComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-field/po-radio-group/samples/sample-po-radio-group-translator/sample-po-radio-group-translator.component.ts b/projects/ui/src/lib/components/po-field/po-radio-group/samples/sample-po-radio-group-translator/sample-po-radio-group-translator.component.ts index 405cb5ad41..825ee590b5 100644 --- a/projects/ui/src/lib/components/po-field/po-radio-group/samples/sample-po-radio-group-translator/sample-po-radio-group-translator.component.ts +++ b/projects/ui/src/lib/components/po-field/po-radio-group/samples/sample-po-radio-group-translator/sample-po-radio-group-translator.component.ts @@ -1,10 +1,11 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoRadioGroupOption, PoSelectOption } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-radio-group-translator', templateUrl: './sample-po-radio-group-translator.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoRadioGroupTranslatorComponent { diff --git a/projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text-base.component.spec.ts b/projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text-base.component.spec.ts index 0ecd9b968f..220294744f 100644 --- a/projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text-base.component.spec.ts +++ b/projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text-base.component.spec.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { UntypedFormControl } from '@angular/forms'; import { expectPropertiesValues } from '../../../util-test/util-expect.spec'; @@ -14,6 +14,7 @@ import { convertToBoolean } from '../../../utils/util'; @Component({ selector: 'po-rich-texts-base-host', template: '', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) class PoRichTextHostComponent extends PoRichTextBaseComponent {} diff --git a/projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text-body/po-rich-text-body.component.ts b/projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text-body/po-rich-text-body.component.ts index 140d123b9a..83232ff14f 100644 --- a/projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text-body/po-rich-text-body.component.ts +++ b/projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text-body/po-rich-text-body.component.ts @@ -12,7 +12,8 @@ import { SimpleChanges, ViewChild, inject, - ChangeDetectorRef + ChangeDetectorRef, + ChangeDetectionStrategy } from '@angular/core'; import { Subscription } from 'rxjs'; @@ -36,6 +37,7 @@ const poRichTextBodyCommands = [ @Component({ selector: 'po-rich-text-body', templateUrl: './po-rich-text-body.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoRichTextBodyComponent implements OnInit, OnDestroy, OnChanges { diff --git a/projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text-image-modal/po-rich-text-image-modal.component.spec.ts b/projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text-image-modal/po-rich-text-image-modal.component.spec.ts index e4009cca28..6c1d63e846 100644 --- a/projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text-image-modal/po-rich-text-image-modal.component.spec.ts +++ b/projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text-image-modal/po-rich-text-image-modal.component.spec.ts @@ -7,7 +7,7 @@ import { PoButtonGroupModule } from '../../../po-button-group'; import { PoModalModule } from '../../../po-modal/po-modal.module'; import { PoRichTextImageModalComponent } from './po-rich-text-image-modal.component'; import { provideHttpClientTesting } from '@angular/common/http/testing'; -import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; describe('PoRichTextImageModalComponent', () => { let component: PoRichTextImageModalComponent; @@ -18,7 +18,7 @@ describe('PoRichTextImageModalComponent', () => { await TestBed.configureTestingModule({ declarations: [], imports: [PoButtonGroupModule, PoModalModule, PoFieldModule], - providers: [provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting()] + providers: [provideHttpClient(withXhr(), withInterceptorsFromDi()), provideHttpClientTesting()] }).compileComponents(); fixture = TestBed.createComponent(PoRichTextImageModalComponent); diff --git a/projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text-image-modal/po-rich-text-image-modal.component.ts b/projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text-image-modal/po-rich-text-image-modal.component.ts index 9877df93ba..4656514b28 100644 --- a/projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text-image-modal/po-rich-text-image-modal.component.ts +++ b/projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text-image-modal/po-rich-text-image-modal.component.ts @@ -1,4 +1,13 @@ -import { Component, EventEmitter, HostBinding, Input, Output, ViewChild, inject } from '@angular/core'; +import { + Component, + EventEmitter, + HostBinding, + Input, + Output, + ViewChild, + inject, + ChangeDetectionStrategy +} from '@angular/core'; import { NgForm } from '@angular/forms'; import { PoUtils } from '../../../../utils/util'; @@ -14,6 +23,7 @@ const uploadRestrictions = ['.apng', '.bmp', '.gif', '.ico', '.jpeg', '.jpg', '. @Component({ selector: 'po-rich-text-image-modal', templateUrl: './po-rich-text-image-modal.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoRichTextImageModalComponent { diff --git a/projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text-link-modal/po-rich-text-link-modal.component.ts b/projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text-link-modal/po-rich-text-link-modal.component.ts index d067fa646b..1f79cfc802 100644 --- a/projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text-link-modal/po-rich-text-link-modal.component.ts +++ b/projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text-link-modal/po-rich-text-link-modal.component.ts @@ -7,7 +7,8 @@ import { OnInit, Output, ViewChild, - inject + inject, + ChangeDetectionStrategy } from '@angular/core'; import { AbstractControl, NgForm } from '@angular/forms'; @@ -20,6 +21,7 @@ import { poRichTextLiteralsDefault } from '../po-rich-text-literals'; @Component({ selector: 'po-rich-text-link-modal', templateUrl: './po-rich-text-link-modal.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoRichTextLinkModalComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text-toolbar/po-rich-text-toolbar.component.spec.ts b/projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text-toolbar/po-rich-text-toolbar.component.spec.ts index 6b5b0c51f8..0ebf817eb6 100644 --- a/projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text-toolbar/po-rich-text-toolbar.component.spec.ts +++ b/projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text-toolbar/po-rich-text-toolbar.component.spec.ts @@ -3,7 +3,7 @@ import { FormsModule } from '@angular/forms'; import { PoUtils as UtilsFunction } from '../../../../utils/util'; -import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; import { provideHttpClientTesting } from '@angular/common/http/testing'; import { PoButtonGroupModule } from '../../../po-button-group'; import { PoModalModule } from '../../../po-modal/po-modal.module'; @@ -21,7 +21,7 @@ describe('PoRichTextToolbarComponent:', () => { await TestBed.configureTestingModule({ declarations: [], imports: [FormsModule, PoButtonGroupModule, PoModalModule, PoTooltipModule, PoFieldModule], - providers: [provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting()] + providers: [provideHttpClient(withXhr(), withInterceptorsFromDi()), provideHttpClientTesting()] }).compileComponents(); fixture = TestBed.createComponent(PoRichTextToolbarComponent); diff --git a/projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text-toolbar/po-rich-text-toolbar.component.ts b/projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text-toolbar/po-rich-text-toolbar.component.ts index df63f1b095..67d0515597 100644 --- a/projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text-toolbar/po-rich-text-toolbar.component.ts +++ b/projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text-toolbar/po-rich-text-toolbar.component.ts @@ -7,7 +7,8 @@ import { Input, Output, ViewChild, - inject + inject, + ChangeDetectionStrategy } from '@angular/core'; import { PoLanguageService } from '../../../../services/po-language/po-language.service'; @@ -25,6 +26,7 @@ const poRichTextDefaultColor = '#000000'; @Component({ selector: 'po-rich-text-toolbar', templateUrl: './po-rich-text-toolbar.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoRichTextToolbarComponent implements AfterViewInit { diff --git a/projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text.component.spec.ts b/projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text.component.spec.ts index 2643142ef8..862610e4de 100644 --- a/projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text.component.spec.ts +++ b/projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text.component.spec.ts @@ -1,7 +1,6 @@ import { EventEmitter, NO_ERRORS_SCHEMA, SimpleChange, SimpleChanges } from '@angular/core'; import { ComponentFixture, fakeAsync, TestBed, tick } from '@angular/core/testing'; import { FormsModule } from '@angular/forms'; -import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { PoFieldContainerBottomComponent } from '../po-field-container/po-field-container-bottom/po-field-container-bottom.component'; import { PoFieldContainerComponent } from '../po-field-container/po-field-container.component'; @@ -25,7 +24,7 @@ describe('PoRichTextComponent:', () => { PoRichTextToolbarComponent ], schemas: [NO_ERRORS_SCHEMA], - imports: [BrowserAnimationsModule, FormsModule] + imports: [FormsModule] }).compileComponents(); fixture = TestBed.createComponent(PoRichTextComponent); diff --git a/projects/ui/src/lib/components/po-field/po-rich-text/samples/sample-po-rich-text-basic/sample-po-rich-text-basic.component.ts b/projects/ui/src/lib/components/po-field/po-rich-text/samples/sample-po-rich-text-basic/sample-po-rich-text-basic.component.ts index 48156ff668..3719ff2586 100644 --- a/projects/ui/src/lib/components/po-field/po-rich-text/samples/sample-po-rich-text-basic/sample-po-rich-text-basic.component.ts +++ b/projects/ui/src/lib/components/po-field/po-rich-text/samples/sample-po-rich-text-basic/sample-po-rich-text-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-rich-text-basic', templateUrl: './sample-po-rich-text-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoRichTextBasicComponent {} diff --git a/projects/ui/src/lib/components/po-field/po-rich-text/samples/sample-po-rich-text-labs/sample-po-rich-text-labs.component.html b/projects/ui/src/lib/components/po-field/po-rich-text/samples/sample-po-rich-text-labs/sample-po-rich-text-labs.component.html index 3647d81ccf..a9ed269e27 100644 --- a/projects/ui/src/lib/components/po-field/po-rich-text/samples/sample-po-rich-text-labs/sample-po-rich-text-labs.component.html +++ b/projects/ui/src/lib/components/po-field/po-rich-text/samples/sample-po-rich-text-labs/sample-po-rich-text-labs.component.html @@ -18,9 +18,9 @@ (p-change)="changeEvent('p-change')" (p-change-model)="changeEvent('p-change-model')" (p-keydown)="changeEvent('p-keydown')" - [p-error-limit]="properties?.includes('errorLimit')" - [p-label-text-wrap]="properties?.includes('labelTextWrap')" - [p-compact-label]="properties?.includes('compactLabel')" + [p-error-limit]="$safeNavigationMigration(properties?.includes('errorLimit'))" + [p-label-text-wrap]="$safeNavigationMigration(properties?.includes('labelTextWrap'))" + [p-compact-label]="$safeNavigationMigration(properties?.includes('compactLabel'))" > diff --git a/projects/ui/src/lib/components/po-field/po-rich-text/samples/sample-po-rich-text-labs/sample-po-rich-text-labs.component.ts b/projects/ui/src/lib/components/po-field/po-rich-text/samples/sample-po-rich-text-labs/sample-po-rich-text-labs.component.ts index 71d895cae4..ccf916728e 100644 --- a/projects/ui/src/lib/components/po-field/po-rich-text/samples/sample-po-rich-text-labs/sample-po-rich-text-labs.component.ts +++ b/projects/ui/src/lib/components/po-field/po-rich-text/samples/sample-po-rich-text-labs/sample-po-rich-text-labs.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption, @@ -10,6 +10,7 @@ import { @Component({ selector: 'sample-po-rich-text-labs', templateUrl: './sample-po-rich-text-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoRichTextLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-field/po-rich-text/samples/sample-po-rich-text-recipe/sample-po-rich-text-recipe.component.ts b/projects/ui/src/lib/components/po-field/po-rich-text/samples/sample-po-rich-text-recipe/sample-po-rich-text-recipe.component.ts index 06dfb952f0..da08383db8 100644 --- a/projects/ui/src/lib/components/po-field/po-rich-text/samples/sample-po-rich-text-recipe/sample-po-rich-text-recipe.component.ts +++ b/projects/ui/src/lib/components/po-field/po-rich-text/samples/sample-po-rich-text-recipe/sample-po-rich-text-recipe.component.ts @@ -1,9 +1,10 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import image from './sample-po-rich-text-recipe-image-base-64'; @Component({ selector: 'sample-po-rich-text-recipe', templateUrl: './sample-po-rich-text-recipe.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoRichTextRecipeComponent { diff --git a/projects/ui/src/lib/components/po-field/po-search-ai/po-search-ai-base.component.ts b/projects/ui/src/lib/components/po-field/po-search-ai/po-search-ai-base.component.ts index bd58d1dac9..1a185ad8d1 100644 --- a/projects/ui/src/lib/components/po-field/po-search-ai/po-search-ai-base.component.ts +++ b/projects/ui/src/lib/components/po-field/po-search-ai/po-search-ai-base.component.ts @@ -24,10 +24,6 @@ const PO_SEARCH_AI_DEFAULT_MIN_CONFIDENCE = 0.5; * em um filtro estruturado (normalmente OData) que pode ser aplicado por outro componente, * como o [`po-table`](/documentation/po-table). * - * > **Componente experimental:** o `po-search-ai` está em fase experimental. Sua API - * > (propriedades, eventos e contrato com o backend) pode sofrer alterações - * > entre versões. Utilize com cautela em ambientes de produção. - * * O componente é **agnóstico ao provedor de IA**. Toda a comunicação ocorre através do * endpoint informado em `p-url`, que recebe `{ query, columns }` e deve retornar * `{ filter, description, confidence }`. Isso garante que nenhuma chave de IA seja diff --git a/projects/ui/src/lib/components/po-field/po-select/po-select.component.html b/projects/ui/src/lib/components/po-field/po-select/po-select.component.html index 46672f44e4..67f2b19fee 100644 --- a/projects/ui/src/lib/components/po-field/po-select/po-select.component.html +++ b/projects/ui/src/lib/components/po-field/po-select/po-select.component.html @@ -50,7 +50,7 @@ @if (optionWithoutGroup.length > 0) { @for (item of optionWithoutGroup; track item) { - } @@ -60,7 +60,7 @@ @if (item?.options.length > 0) { @for (subItem of item.options; track subItem) { - } diff --git a/projects/ui/src/lib/components/po-field/po-select/samples/sample-po-select-basic/sample-po-select-basic.component.ts b/projects/ui/src/lib/components/po-field/po-select/samples/sample-po-select-basic/sample-po-select-basic.component.ts index 9e092b13a2..3edb3176b1 100644 --- a/projects/ui/src/lib/components/po-field/po-select/samples/sample-po-select-basic/sample-po-select-basic.component.ts +++ b/projects/ui/src/lib/components/po-field/po-select/samples/sample-po-select-basic/sample-po-select-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-select-basic', templateUrl: './sample-po-select-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoSelectBasicComponent {} diff --git a/projects/ui/src/lib/components/po-field/po-select/samples/sample-po-select-companies/sample-po-select-companies.component.ts b/projects/ui/src/lib/components/po-field/po-select/samples/sample-po-select-companies/sample-po-select-companies.component.ts index 8671ba8a62..4b2d0b0fa4 100644 --- a/projects/ui/src/lib/components/po-field/po-select/samples/sample-po-select-companies/sample-po-select-companies.component.ts +++ b/projects/ui/src/lib/components/po-field/po-select/samples/sample-po-select-companies/sample-po-select-companies.component.ts @@ -1,10 +1,11 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoSelectOption, PoSelectOptionGroup } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-select-companies', templateUrl: './sample-po-select-companies.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoSelectCompaniesComponent { diff --git a/projects/ui/src/lib/components/po-field/po-select/samples/sample-po-select-customer-registration/sample-po-select-customer-registration.component.ts b/projects/ui/src/lib/components/po-field/po-select/samples/sample-po-select-customer-registration/sample-po-select-customer-registration.component.ts index 94cf98c2f2..91a8283479 100644 --- a/projects/ui/src/lib/components/po-field/po-select/samples/sample-po-select-customer-registration/sample-po-select-customer-registration.component.ts +++ b/projects/ui/src/lib/components/po-field/po-select/samples/sample-po-select-customer-registration/sample-po-select-customer-registration.component.ts @@ -1,4 +1,4 @@ -import { Component, OnDestroy, OnInit, inject } from '@angular/core'; +import { Component, OnDestroy, OnInit, inject, ChangeDetectionStrategy } from '@angular/core'; import { Subscription } from 'rxjs'; @@ -11,6 +11,7 @@ import { SamplePoSelectCustomerRegistrationService } from './sample-po-select-cu templateUrl: './sample-po-select-customer-registration.component.html', providers: [SamplePoSelectCustomerRegistrationService], styleUrls: ['./sample-po-select-customer-registration.component.css'], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoSelectCustomerRegistrationComponent implements OnDestroy, OnInit { diff --git a/projects/ui/src/lib/components/po-field/po-select/samples/sample-po-select-labs/sample-po-select-labs.component.html b/projects/ui/src/lib/components/po-field/po-select/samples/sample-po-select-labs/sample-po-select-labs.component.html index dac726812c..f7643fa2f7 100644 --- a/projects/ui/src/lib/components/po-field/po-select/samples/sample-po-select-labs/sample-po-select-labs.component.html +++ b/projects/ui/src/lib/components/po-field/po-select/samples/sample-po-select-labs/sample-po-select-labs.component.html @@ -20,9 +20,9 @@ (p-change-model)="changeEvent('p-change-model')" (p-enter)="changeEvent('p-enter')" (p-keydown)="changeEvent('p-keydown')" - [p-error-limit]="properties?.includes('errorLimit')" - [p-label-text-wrap]="properties?.includes('labelTextWrap')" - [p-compact-label]="properties?.includes('compactLabel')" + [p-error-limit]="$safeNavigationMigration(properties?.includes('errorLimit'))" + [p-label-text-wrap]="$safeNavigationMigration(properties?.includes('labelTextWrap'))" + [p-compact-label]="$safeNavigationMigration(properties?.includes('compactLabel'))" > diff --git a/projects/ui/src/lib/components/po-field/po-select/samples/sample-po-select-labs/sample-po-select-labs.component.ts b/projects/ui/src/lib/components/po-field/po-select/samples/sample-po-select-labs/sample-po-select-labs.component.ts index b6afa0017e..4aef7fa160 100644 --- a/projects/ui/src/lib/components/po-field/po-select/samples/sample-po-select-labs/sample-po-select-labs.component.ts +++ b/projects/ui/src/lib/components/po-field/po-select/samples/sample-po-select-labs/sample-po-select-labs.component.ts @@ -1,10 +1,11 @@ -import { ChangeDetectorRef, Component, OnInit, inject } from '@angular/core'; +import { ChangeDetectorRef, Component, OnInit, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption, PoRadioGroupOption, PoSelectOption, PoSelectOptionGroup } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-select-labs', templateUrl: './sample-po-select-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoSelectLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-field/po-switch/samples/sample-po-switch-basic/sample-po-switch-basic.component.ts b/projects/ui/src/lib/components/po-field/po-switch/samples/sample-po-switch-basic/sample-po-switch-basic.component.ts index 6bc64f40f2..48005f0e4e 100644 --- a/projects/ui/src/lib/components/po-field/po-switch/samples/sample-po-switch-basic/sample-po-switch-basic.component.ts +++ b/projects/ui/src/lib/components/po-field/po-switch/samples/sample-po-switch-basic/sample-po-switch-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-switch-basic', templateUrl: './sample-po-switch-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoSwitchBasicComponent {} diff --git a/projects/ui/src/lib/components/po-field/po-switch/samples/sample-po-switch-labs/sample-po-switch-labs.component.html b/projects/ui/src/lib/components/po-field/po-switch/samples/sample-po-switch-labs/sample-po-switch-labs.component.html index 05a2c859d5..91d640e147 100644 --- a/projects/ui/src/lib/components/po-field/po-switch/samples/sample-po-switch-labs/sample-po-switch-labs.component.html +++ b/projects/ui/src/lib/components/po-field/po-switch/samples/sample-po-switch-labs/sample-po-switch-labs.component.html @@ -3,19 +3,19 @@ [(ngModel)]="switch" [p-helper]="helperText" [p-disabled]="properties.includes('disabled')" - [p-error-limit]="properties?.includes('errorLimit')" + [p-error-limit]="$safeNavigationMigration(properties?.includes('errorLimit'))" [p-field-error-message]="fieldErrorMessage" [p-format-model]="properties.includes('formatModel')" [p-help]="help" [p-hide-label-status]="properties.includes('hideLabelStatus')" - [p-invalid-value]="properties?.includes('invalidValue')" + [p-invalid-value]="$safeNavigationMigration(properties?.includes('invalidValue'))" [p-label]="label" [p-label-off]="labelOff" [p-label-on]="labelOn" [p-label-position]="labelPosition" [p-label-text-wrap]="properties.includes('labelTextWrap')" [p-loading]="properties.includes('loading')" - [p-compact-label]="properties?.includes('compactLabel')" + [p-compact-label]="$safeNavigationMigration(properties?.includes('compactLabel'))" [p-size]="size" (p-change)="changeEvent('p-change')" (p-change-model)="changeEvent('p-change-model')" diff --git a/projects/ui/src/lib/components/po-field/po-switch/samples/sample-po-switch-labs/sample-po-switch-labs.component.ts b/projects/ui/src/lib/components/po-field/po-switch/samples/sample-po-switch-labs/sample-po-switch-labs.component.ts index 076d4edcb4..a5940e188a 100644 --- a/projects/ui/src/lib/components/po-field/po-switch/samples/sample-po-switch-labs/sample-po-switch-labs.component.ts +++ b/projects/ui/src/lib/components/po-field/po-switch/samples/sample-po-switch-labs/sample-po-switch-labs.component.ts @@ -1,10 +1,11 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption, PoRadioGroupOption, PoSwitchLabelPosition } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-switch-labs', templateUrl: './sample-po-switch-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoSwitchLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-field/po-switch/samples/sample-po-switch-order-reactive-form/sample-po-switch-order-reactive-form.component.ts b/projects/ui/src/lib/components/po-field/po-switch/samples/sample-po-switch-order-reactive-form/sample-po-switch-order-reactive-form.component.ts index f336d7d649..417dbbecc7 100644 --- a/projects/ui/src/lib/components/po-field/po-switch/samples/sample-po-switch-order-reactive-form/sample-po-switch-order-reactive-form.component.ts +++ b/projects/ui/src/lib/components/po-field/po-switch/samples/sample-po-switch-order-reactive-form/sample-po-switch-order-reactive-form.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, inject } from '@angular/core'; +import { Component, OnInit, inject, ChangeDetectionStrategy } from '@angular/core'; import { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms'; import { PoNotificationService, PoSwitchLabelPosition, PoTableColumn } from '@po-ui/ng-components'; @@ -6,6 +6,7 @@ import { PoNotificationService, PoSwitchLabelPosition, PoTableColumn } from '@po @Component({ selector: 'sample-po-switch-order-reactive-form', templateUrl: './sample-po-switch-order-reactive-form.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoSwitchOrderReactiveFormComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-field/po-switch/samples/sample-po-switch-order/sample-po-switch-order.component.ts b/projects/ui/src/lib/components/po-field/po-switch/samples/sample-po-switch-order/sample-po-switch-order.component.ts index 4dd0a1abe0..0b1247c6ab 100644 --- a/projects/ui/src/lib/components/po-field/po-switch/samples/sample-po-switch-order/sample-po-switch-order.component.ts +++ b/projects/ui/src/lib/components/po-field/po-switch/samples/sample-po-switch-order/sample-po-switch-order.component.ts @@ -1,10 +1,11 @@ -import { Component, inject } from '@angular/core'; +import { Component, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoNotificationService, PoSwitchLabelPosition, PoTableColumn } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-switch-order', templateUrl: './sample-po-switch-order.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoSwitchOrderComponent { diff --git a/projects/ui/src/lib/components/po-field/po-textarea/po-textarea-base.component.spec.ts b/projects/ui/src/lib/components/po-field/po-textarea/po-textarea-base.component.spec.ts index 6b38bc12cb..4bd40d009a 100644 --- a/projects/ui/src/lib/components/po-field/po-textarea/po-textarea-base.component.spec.ts +++ b/projects/ui/src/lib/components/po-field/po-textarea/po-textarea-base.component.spec.ts @@ -1,4 +1,4 @@ -import { ChangeDetectorRef, Component } from '@angular/core'; +import { ChangeDetectorRef, Component, ChangeDetectionStrategy } from '@angular/core'; import { FormControl, UntypedFormControl, Validators } from '@angular/forms'; import { expectPropertiesValues, expectSettersMethod } from '../../../util-test/util-expect.spec'; @@ -12,6 +12,7 @@ import { mapInputSizeToLoadingIcon } from '../../../utils/util'; @Component({ selector: 'po-textarea-base-host', template: '', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) class PoTextareaHostComponent extends PoTextareaBaseComponent { diff --git a/projects/ui/src/lib/components/po-field/po-textarea/po-textarea.component.spec.ts b/projects/ui/src/lib/components/po-field/po-textarea/po-textarea.component.spec.ts index 0f80637aba..e1b31c0370 100644 --- a/projects/ui/src/lib/components/po-field/po-textarea/po-textarea.component.spec.ts +++ b/projects/ui/src/lib/components/po-field/po-textarea/po-textarea.component.spec.ts @@ -324,6 +324,16 @@ describe('PoTextareaComponent:', () => { }); describe('initResizeObserver:', () => { + let originalResizeObserver: typeof ResizeObserver; + + beforeEach(() => { + originalResizeObserver = window.ResizeObserver; + }); + + afterEach(() => { + (window as any).ResizeObserver = originalResizeObserver; + }); + it('should observe the input element', () => { const observeSpy = jasmine.createSpy('observe'); const disconnectSpy = jasmine.createSpy('disconnect'); @@ -875,8 +885,10 @@ describe('PoTextareaComponent:', () => { describe('initResizeObserver:', () => { let observeSpy: jasmine.Spy; let observerCallback: Function; + let originalResizeObserver: typeof ResizeObserver; beforeEach(() => { + originalResizeObserver = window.ResizeObserver; observeSpy = jasmine.createSpy('observe'); (window as any).ResizeObserver = function (callback: Function) { observerCallback = callback; @@ -884,6 +896,10 @@ describe('PoTextareaComponent:', () => { }; }); + afterEach(() => { + (window as any).ResizeObserver = originalResizeObserver; + }); + it('should create ResizeObserver and observe the textarea element', () => { component['initResizeObserver'](); expect(observeSpy).toHaveBeenCalledWith(component.inputEl.nativeElement); diff --git a/projects/ui/src/lib/components/po-field/po-textarea/samples/sample-po-textarea-basic/sample-po-textarea-basic.component.ts b/projects/ui/src/lib/components/po-field/po-textarea/samples/sample-po-textarea-basic/sample-po-textarea-basic.component.ts index 57d7eb7e8a..5ee2552156 100644 --- a/projects/ui/src/lib/components/po-field/po-textarea/samples/sample-po-textarea-basic/sample-po-textarea-basic.component.ts +++ b/projects/ui/src/lib/components/po-field/po-textarea/samples/sample-po-textarea-basic/sample-po-textarea-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-textarea-basic', templateUrl: './sample-po-textarea-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoTextareaBasicComponent {} diff --git a/projects/ui/src/lib/components/po-field/po-textarea/samples/sample-po-textarea-email-reactive-form/sample-po-textarea-email-reactive-form.component.ts b/projects/ui/src/lib/components/po-field/po-textarea/samples/sample-po-textarea-email-reactive-form/sample-po-textarea-email-reactive-form.component.ts index 124b9fa0d2..33ec81059b 100644 --- a/projects/ui/src/lib/components/po-field/po-textarea/samples/sample-po-textarea-email-reactive-form/sample-po-textarea-email-reactive-form.component.ts +++ b/projects/ui/src/lib/components/po-field/po-textarea/samples/sample-po-textarea-email-reactive-form/sample-po-textarea-email-reactive-form.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, ViewChild, inject } from '@angular/core'; +import { Component, OnInit, ViewChild, inject, ChangeDetectionStrategy } from '@angular/core'; import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms'; import { PoModalAction, PoModalComponent } from '@po-ui/ng-components'; @@ -7,6 +7,7 @@ import { PoPageAction } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-textarea-email-reactive-form', templateUrl: './sample-po-textarea-email-reactive-form.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoTextareaEmailReactiveFormComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-field/po-textarea/samples/sample-po-textarea-email/sample-po-textarea-email.component.ts b/projects/ui/src/lib/components/po-field/po-textarea/samples/sample-po-textarea-email/sample-po-textarea-email.component.ts index cc6c1bd1da..d4b220d5af 100644 --- a/projects/ui/src/lib/components/po-field/po-textarea/samples/sample-po-textarea-email/sample-po-textarea-email.component.ts +++ b/projects/ui/src/lib/components/po-field/po-textarea/samples/sample-po-textarea-email/sample-po-textarea-email.component.ts @@ -1,4 +1,4 @@ -import { Component, ViewChild } from '@angular/core'; +import { Component, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { UntypedFormControl } from '@angular/forms'; import { PoModalAction, PoModalComponent } from '@po-ui/ng-components'; @@ -7,6 +7,7 @@ import { PoPageAction } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-textarea-email', templateUrl: './sample-po-textarea-email.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoTextareaEmailComponent { diff --git a/projects/ui/src/lib/components/po-field/po-textarea/samples/sample-po-textarea-labs/sample-po-textarea-labs.component.html b/projects/ui/src/lib/components/po-field/po-textarea/samples/sample-po-textarea-labs/sample-po-textarea-labs.component.html index 076d39f6a2..d1f235bc70 100644 --- a/projects/ui/src/lib/components/po-field/po-textarea/samples/sample-po-textarea-labs/sample-po-textarea-labs.component.html +++ b/projects/ui/src/lib/components/po-field/po-textarea/samples/sample-po-textarea-labs/sample-po-textarea-labs.component.html @@ -21,9 +21,9 @@ (p-change-model)="changeEvent('p-change-model')" (p-enter)="changeEvent('p-enter')" (p-keydown)="changeEvent('p-keydown')" - [p-error-limit]="properties?.includes('errorLimit')" - [p-label-text-wrap]="properties?.includes('labelTextWrap')" - [p-compact-label]="properties?.includes('compactLabel')" + [p-error-limit]="$safeNavigationMigration(properties?.includes('errorLimit'))" + [p-label-text-wrap]="$safeNavigationMigration(properties?.includes('labelTextWrap'))" + [p-compact-label]="$safeNavigationMigration(properties?.includes('compactLabel'))" > diff --git a/projects/ui/src/lib/components/po-field/po-textarea/samples/sample-po-textarea-labs/sample-po-textarea-labs.component.ts b/projects/ui/src/lib/components/po-field/po-textarea/samples/sample-po-textarea-labs/sample-po-textarea-labs.component.ts index 80c3870e17..d75f59ae7e 100644 --- a/projects/ui/src/lib/components/po-field/po-textarea/samples/sample-po-textarea-labs/sample-po-textarea-labs.component.ts +++ b/projects/ui/src/lib/components/po-field/po-textarea/samples/sample-po-textarea-labs/sample-po-textarea-labs.component.ts @@ -1,10 +1,11 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption, PoRadioGroupOption } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-textarea-labs', templateUrl: './sample-po-textarea-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoTextareaLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-field/po-timepicker/po-timepicker.component.spec.ts b/projects/ui/src/lib/components/po-field/po-timepicker/po-timepicker.component.spec.ts index f3e6390b86..ffefbbf47b 100644 --- a/projects/ui/src/lib/components/po-field/po-timepicker/po-timepicker.component.spec.ts +++ b/projects/ui/src/lib/components/po-field/po-timepicker/po-timepicker.component.spec.ts @@ -26,6 +26,18 @@ describe('PoTimepickerComponent:', () => { component.locale = 'pt'; }); + afterEach(() => { + // O ambiente roda com `teardown: { destroyAfterEach: false }`, então o + // `ngOnDestroy` não é chamado automaticamente entre os testes. Sem isso, o + // listener global de `scroll` (window.addEventListener('scroll', this.onScroll)) + // registrado em `initializeListeners` (ao abrir o timepicker) permanece vivo + // apontando para uma instância órfã. Qualquer scroll posterior — inclusive no + // afterAll da suíte — dispara `onScroll` -> `adjustPosition`, que acessa `width` + // de um elemento já inexistente, lançando "Cannot read properties of undefined". + // Destruir o fixture executa o removeListeners e elimina o vazamento. + fixture?.destroy(); + }); + it('should be created', () => { expect(component).toBeTruthy(); }); diff --git a/projects/ui/src/lib/components/po-field/po-timepicker/samples/sample-po-timepicker-basic/sample-po-timepicker-basic.component.ts b/projects/ui/src/lib/components/po-field/po-timepicker/samples/sample-po-timepicker-basic/sample-po-timepicker-basic.component.ts index 7a6124c487..237e8f0a8f 100644 --- a/projects/ui/src/lib/components/po-field/po-timepicker/samples/sample-po-timepicker-basic/sample-po-timepicker-basic.component.ts +++ b/projects/ui/src/lib/components/po-field/po-timepicker/samples/sample-po-timepicker-basic/sample-po-timepicker-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-timepicker-basic', templateUrl: './sample-po-timepicker-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoTimepickerBasicComponent {} diff --git a/projects/ui/src/lib/components/po-field/po-timepicker/samples/sample-po-timepicker-business-hours/sample-po-timepicker-business-hours.component.ts b/projects/ui/src/lib/components/po-field/po-timepicker/samples/sample-po-timepicker-business-hours/sample-po-timepicker-business-hours.component.ts index ca6253a56e..72f238a3b7 100644 --- a/projects/ui/src/lib/components/po-field/po-timepicker/samples/sample-po-timepicker-business-hours/sample-po-timepicker-business-hours.component.ts +++ b/projects/ui/src/lib/components/po-field/po-timepicker/samples/sample-po-timepicker-business-hours/sample-po-timepicker-business-hours.component.ts @@ -1,10 +1,11 @@ -import { Component, inject } from '@angular/core'; +import { Component, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoNotificationService } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-timepicker-business-hours', templateUrl: './sample-po-timepicker-business-hours.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoTimepickerBusinessHoursComponent { diff --git a/projects/ui/src/lib/components/po-field/po-timepicker/samples/sample-po-timepicker-labs/sample-po-timepicker-labs.component.html b/projects/ui/src/lib/components/po-field/po-timepicker/samples/sample-po-timepicker-labs/sample-po-timepicker-labs.component.html index 3ee3987734..ba208687ec 100644 --- a/projects/ui/src/lib/components/po-field/po-timepicker/samples/sample-po-timepicker-labs/sample-po-timepicker-labs.component.html +++ b/projects/ui/src/lib/components/po-field/po-timepicker/samples/sample-po-timepicker-labs/sample-po-timepicker-labs.component.html @@ -15,7 +15,7 @@ [p-min-time]="minTime" [p-minute-interval]="minuteInterval" [p-second-interval]="secondInterval" - [p-no-autocomplete]="properties?.includes('noAutocomplete')" + [p-no-autocomplete]="$safeNavigationMigration(properties?.includes('noAutocomplete'))" [p-optional]="properties.includes('optional')" [p-placeholder]="placeholder" [p-readonly]="properties.includes('readonly')" @@ -23,11 +23,11 @@ [p-required-field-error-message]="properties.includes('requiredFieldErrorMessage')" [p-show-required]="properties.includes('showRequired')" [p-show-seconds]="properties.includes('showSeconds')" - [p-label-text-wrap]="properties?.includes('labelTextWrap')" + [p-label-text-wrap]="$safeNavigationMigration(properties?.includes('labelTextWrap'))" [p-loading]="properties.includes('loading')" - [p-compact-label]="properties?.includes('compactLabel')" - [p-append-in-body]="properties?.includes('appendInBody')" - [p-error-limit]="properties?.includes('errorLimit')" + [p-compact-label]="$safeNavigationMigration(properties?.includes('compactLabel'))" + [p-append-in-body]="$safeNavigationMigration(properties?.includes('appendInBody'))" + [p-error-limit]="$safeNavigationMigration(properties?.includes('errorLimit'))" [p-size]="size" (p-blur)="changeEvent('p-blur')" (p-change)="changeEvent('p-change')" diff --git a/projects/ui/src/lib/components/po-field/po-timepicker/samples/sample-po-timepicker-labs/sample-po-timepicker-labs.component.ts b/projects/ui/src/lib/components/po-field/po-timepicker/samples/sample-po-timepicker-labs/sample-po-timepicker-labs.component.ts index fcdad6262f..615e50bee6 100644 --- a/projects/ui/src/lib/components/po-field/po-timepicker/samples/sample-po-timepicker-labs/sample-po-timepicker-labs.component.ts +++ b/projects/ui/src/lib/components/po-field/po-timepicker/samples/sample-po-timepicker-labs/sample-po-timepicker-labs.component.ts @@ -1,10 +1,11 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption, PoRadioGroupOption, PoTimepickerModelFormat } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-timepicker-labs', templateUrl: './sample-po-timepicker-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoTimepickerLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-field/po-timepicker/samples/sample-po-timepicker-scheduling/sample-po-timepicker-scheduling.component.ts b/projects/ui/src/lib/components/po-field/po-timepicker/samples/sample-po-timepicker-scheduling/sample-po-timepicker-scheduling.component.ts index 494c69e9f7..42f12ea312 100644 --- a/projects/ui/src/lib/components/po-field/po-timepicker/samples/sample-po-timepicker-scheduling/sample-po-timepicker-scheduling.component.ts +++ b/projects/ui/src/lib/components/po-field/po-timepicker/samples/sample-po-timepicker-scheduling/sample-po-timepicker-scheduling.component.ts @@ -1,4 +1,4 @@ -import { Component, ViewChild, inject } from '@angular/core'; +import { Component, ViewChild, inject, ChangeDetectionStrategy } from '@angular/core'; import { UntypedFormControl } from '@angular/forms'; import { PoDialogService, PoNotificationService, PoSelectOption } from '@po-ui/ng-components'; @@ -6,6 +6,7 @@ import { PoDialogService, PoNotificationService, PoSelectOption } from '@po-ui/n @Component({ selector: 'sample-po-timepicker-scheduling', templateUrl: './sample-po-timepicker-scheduling.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoTimepickerSchedulingComponent { diff --git a/projects/ui/src/lib/components/po-field/po-upload/po-upload-base.component.spec.ts b/projects/ui/src/lib/components/po-field/po-upload/po-upload-base.component.spec.ts index 8ae0dc7df2..2a5e1f42c8 100644 --- a/projects/ui/src/lib/components/po-field/po-upload/po-upload-base.component.spec.ts +++ b/projects/ui/src/lib/components/po-field/po-upload/po-upload-base.component.spec.ts @@ -1,5 +1,5 @@ import { HttpClient, HttpHandler } from '@angular/common/http'; -import { ChangeDetectorRef, Component, inject } from '@angular/core'; +import { ChangeDetectorRef, Component, inject, ChangeDetectionStrategy } from '@angular/core'; import { ComponentFixture, fakeAsync, TestBed, tick } from '@angular/core/testing'; import { FormsModule, UntypedFormControl } from '@angular/forms'; @@ -19,6 +19,7 @@ import { PoUploadService } from './po-upload.service'; @Component({ selector: 'po-upload', template: ` `, + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) class PoUploadComponent extends PoUploadBaseComponent { diff --git a/projects/ui/src/lib/components/po-field/po-upload/po-upload-base.service.spec.ts b/projects/ui/src/lib/components/po-field/po-upload/po-upload-base.service.spec.ts index 73a198ed57..fa779d60ad 100644 --- a/projects/ui/src/lib/components/po-field/po-upload/po-upload-base.service.spec.ts +++ b/projects/ui/src/lib/components/po-field/po-upload/po-upload-base.service.spec.ts @@ -1,7 +1,7 @@ import { ChangeDetectorRef, EventEmitter } from '@angular/core'; import { inject, TestBed } from '@angular/core/testing'; import { provideHttpClientTesting } from '@angular/common/http/testing'; -import { HttpResponse, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { HttpResponse, provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; import { Observable } from 'rxjs'; @@ -12,7 +12,11 @@ describe('PoUploadBaseService:', () => { beforeEach(() => { TestBed.configureTestingModule({ imports: [], - providers: [PoUploadBaseService, provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting()] + providers: [ + PoUploadBaseService, + provideHttpClient(withXhr(), withInterceptorsFromDi()), + provideHttpClientTesting() + ] }); }); diff --git a/projects/ui/src/lib/components/po-field/po-upload/po-upload-drag-drop/po-upload-drag-drop.directive.spec.ts b/projects/ui/src/lib/components/po-field/po-upload/po-upload-drag-drop/po-upload-drag-drop.directive.spec.ts index fbbd5c98cd..91ffa63988 100644 --- a/projects/ui/src/lib/components/po-field/po-upload/po-upload-drag-drop/po-upload-drag-drop.directive.spec.ts +++ b/projects/ui/src/lib/components/po-field/po-upload/po-upload-drag-drop/po-upload-drag-drop.directive.spec.ts @@ -1,11 +1,12 @@ import { By } from '@angular/platform-browser'; -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { ComponentFixture, fakeAsync, TestBed, tick } from '@angular/core/testing'; import { PoUploadDragDropDirective } from './po-upload-drag-drop.directive'; @Component({ template: `
    `, + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class TestComponent {} diff --git a/projects/ui/src/lib/components/po-field/po-upload/po-upload-file-restrictions/po-upload-file-restrictions.component.html b/projects/ui/src/lib/components/po-field/po-upload/po-upload-file-restrictions/po-upload-file-restrictions.component.html index eaa1bbc579..2de03d5817 100644 --- a/projects/ui/src/lib/components/po-field/po-upload/po-upload-file-restrictions/po-upload-file-restrictions.component.html +++ b/projects/ui/src/lib/components/po-field/po-upload/po-upload-file-restrictions/po-upload-file-restrictions.component.html @@ -1,12 +1,12 @@ @if (maxFiles > 1) {

    - {{ literals?.numberOfFilesAllowed | poI18n: maxFiles }} + {{ $safeNavigationMigration(literals?.numberOfFilesAllowed) | poI18n: maxFiles }}

    } @if (allowedExtensions) {

    - {{ literals?.allowedFormats | poI18n: allowedExtensions }} + {{ $safeNavigationMigration(literals?.allowedFormats) | poI18n: allowedExtensions }}

    } @@ -15,17 +15,17 @@ {{ literals?.allowedSizes }} @if (minFileSize && maxFileSize) { - {{ literals?.allowedFileSizeRange | poI18n: [minFileSize, maxFileSize] }} + {{ $safeNavigationMigration(literals?.allowedFileSizeRange) | poI18n: [minFileSize, maxFileSize] }} } @if (minFileSize && !maxFileSize) { - {{ literals?.minFileSizeAllowed | poI18n: minFileSize }} + {{ $safeNavigationMigration(literals?.minFileSizeAllowed) | poI18n: minFileSize }} } @if (maxFileSize && !minFileSize) { - {{ literals?.maxFileSizeAllowed | poI18n: maxFileSize }} + {{ $safeNavigationMigration(literals?.maxFileSizeAllowed) | poI18n: maxFileSize }} }

    diff --git a/projects/ui/src/lib/components/po-field/po-upload/po-upload.component.html b/projects/ui/src/lib/components/po-field/po-upload/po-upload.component.html index 84ed150b44..cd8817c77d 100644 --- a/projects/ui/src/lib/components/po-field/po-upload/po-upload.component.html +++ b/projects/ui/src/lib/components/po-field/po-upload/po-upload.component.html @@ -44,10 +44,10 @@ class="po-upload-file-restrictions" [ngClass]="{ 'po-upload-file-restrictions-drag-drop': displayDragDrop }" [class.po-pb-1]="!displayDragDrop" - [p-allowed-extensions]="fileRestrictions?.allowedExtensions" + [p-allowed-extensions]="$safeNavigationMigration(fileRestrictions?.allowedExtensions)" [p-max-files]="maxFiles" - [p-max-file-size]="fileRestrictions?.maxFileSize" - [p-min-file-size]="fileRestrictions?.minFileSize" + [p-max-file-size]="$safeNavigationMigration(fileRestrictions?.maxFileSize)" + [p-min-file-size]="$safeNavigationMigration(fileRestrictions?.minFileSize)" > } @@ -107,8 +107,8 @@ [p-tooltip]="tooltipTitle" (keydown)="openModal(file, $event)" (click)="openModal(file)" - (mouseover)="showTooltipText($event, file?.displayName)" - (focus)="showTooltipText($event, file?.displayName)" + (mouseover)="showTooltipText($event, $safeNavigationMigration(file?.displayName))" + (focus)="showTooltipText($event, $safeNavigationMigration(file?.displayName))" >{{ file.displayName }}
    diff --git a/projects/ui/src/lib/components/po-field/po-upload/po-upload.component.spec.ts b/projects/ui/src/lib/components/po-field/po-upload/po-upload.component.spec.ts index 90dc964fb3..8c0b2bcd37 100644 --- a/projects/ui/src/lib/components/po-field/po-upload/po-upload.component.spec.ts +++ b/projects/ui/src/lib/components/po-field/po-upload/po-upload.component.spec.ts @@ -319,7 +319,7 @@ describe('PoUploadComponent:', () => { component.autoUpload = false; component.currentFiles = [file]; - spyOn(component, 'hasFileNotUploaded').and.returnValue(true); + spyOnProperty(component, 'hasFileNotUploaded', 'get').and.returnValue(true); expect(component.displaySendButton).toBeTruthy(); }); @@ -329,7 +329,7 @@ describe('PoUploadComponent:', () => { component.autoUpload = false; component.currentFiles = [file]; - spyOn(component, 'hasFileNotUploaded').and.returnValue(true); + spyOnProperty(component, 'hasFileNotUploaded', 'get').and.returnValue(true); expect(component.displaySendButton).toBeFalsy(); }); @@ -339,7 +339,7 @@ describe('PoUploadComponent:', () => { component.autoUpload = true; component.currentFiles = [file]; - spyOn(component, 'hasFileNotUploaded').and.returnValue(true); + spyOnProperty(component, 'hasFileNotUploaded', 'get').and.returnValue(true); expect(component.displaySendButton).toBeFalsy(); }); @@ -349,7 +349,7 @@ describe('PoUploadComponent:', () => { component.autoUpload = true; component.currentFiles = []; - spyOn(component, 'hasFileNotUploaded').and.returnValue(true); + spyOnProperty(component, 'hasFileNotUploaded', 'get').and.returnValue(true); expect(component.displaySendButton).toBeFalsy(); }); @@ -359,7 +359,7 @@ describe('PoUploadComponent:', () => { component.autoUpload = true; component.currentFiles = [file]; - spyOn(component, 'hasFileNotUploaded').and.returnValue(false); + spyOnProperty(component, 'hasFileNotUploaded', 'get').and.returnValue(false); expect(component.displaySendButton).toBeFalsy(); }); diff --git a/projects/ui/src/lib/components/po-field/po-upload/samples/sample-po-upload-basic/sample-po-upload-basic.component.ts b/projects/ui/src/lib/components/po-field/po-upload/samples/sample-po-upload-basic/sample-po-upload-basic.component.ts index ad1dccf509..488db7635a 100644 --- a/projects/ui/src/lib/components/po-field/po-upload/samples/sample-po-upload-basic/sample-po-upload-basic.component.ts +++ b/projects/ui/src/lib/components/po-field/po-upload/samples/sample-po-upload-basic/sample-po-upload-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-upload-basic', templateUrl: 'sample-po-upload-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoUploadBasicComponent {} diff --git a/projects/ui/src/lib/components/po-field/po-upload/samples/sample-po-upload-download/sample-po-upload-download.component.ts b/projects/ui/src/lib/components/po-field/po-upload/samples/sample-po-upload-download/sample-po-upload-download.component.ts index 32e6ec5faf..e7c490190e 100644 --- a/projects/ui/src/lib/components/po-field/po-upload/samples/sample-po-upload-download/sample-po-upload-download.component.ts +++ b/projects/ui/src/lib/components/po-field/po-upload/samples/sample-po-upload-download/sample-po-upload-download.component.ts @@ -1,9 +1,10 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoProgressAction } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-upload-download', templateUrl: 'sample-po-upload-download.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoUploadDownloadComponent { diff --git a/projects/ui/src/lib/components/po-field/po-upload/samples/sample-po-upload-labs/sample-po-upload-labs.component.html b/projects/ui/src/lib/components/po-field/po-upload/samples/sample-po-upload-labs/sample-po-upload-labs.component.html index 30e53b9e04..4a398bcfd8 100644 --- a/projects/ui/src/lib/components/po-field/po-upload/samples/sample-po-upload-labs/sample-po-upload-labs.component.html +++ b/projects/ui/src/lib/components/po-field/po-upload/samples/sample-po-upload-labs/sample-po-upload-labs.component.html @@ -27,8 +27,8 @@ [p-url]="url" [p-headers]="headers" [p-custom-action]="action" - [p-label-text-wrap]="properties?.includes('labelTextWrap')" - [p-compact-label]="properties?.includes('compactLabel')" + [p-label-text-wrap]="$safeNavigationMigration(properties?.includes('labelTextWrap'))" + [p-compact-label]="$safeNavigationMigration(properties?.includes('compactLabel'))" [p-custom-modal-actions]="customModalActions" (p-custom-action-click)="changeEvent('p-custom-action-click')" (p-error)="changeEvent('p-error')" diff --git a/projects/ui/src/lib/components/po-field/po-upload/samples/sample-po-upload-labs/sample-po-upload-labs.component.ts b/projects/ui/src/lib/components/po-field/po-upload/samples/sample-po-upload-labs/sample-po-upload-labs.component.ts index 39ae89c659..7cb2ce4934 100644 --- a/projects/ui/src/lib/components/po-field/po-upload/samples/sample-po-upload-labs/sample-po-upload-labs.component.ts +++ b/projects/ui/src/lib/components/po-field/po-upload/samples/sample-po-upload-labs/sample-po-upload-labs.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, inject } from '@angular/core'; +import { Component, OnInit, inject, ChangeDetectionStrategy } from '@angular/core'; import { FormBuilder, FormGroup } from '@angular/forms'; import { @@ -14,6 +14,7 @@ import { @Component({ selector: 'sample-po-upload-labs', templateUrl: './sample-po-upload-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoUploadLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-field/po-upload/samples/sample-po-upload-preview/sample-po-upload-preview.component.ts b/projects/ui/src/lib/components/po-field/po-upload/samples/sample-po-upload-preview/sample-po-upload-preview.component.ts index a445f5f2c9..af596d9a11 100644 --- a/projects/ui/src/lib/components/po-field/po-upload/samples/sample-po-upload-preview/sample-po-upload-preview.component.ts +++ b/projects/ui/src/lib/components/po-field/po-upload/samples/sample-po-upload-preview/sample-po-upload-preview.component.ts @@ -1,9 +1,10 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoProgressAction } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-upload-preview', templateUrl: 'sample-po-upload-preview.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoUploadPreviewComponent {} diff --git a/projects/ui/src/lib/components/po-field/po-upload/samples/sample-po-upload-resume-drag-drop/sample-po-upload-resume-drag-drop.component.ts b/projects/ui/src/lib/components/po-field/po-upload/samples/sample-po-upload-resume-drag-drop/sample-po-upload-resume-drag-drop.component.ts index f2e83251b7..be85c9c4c5 100644 --- a/projects/ui/src/lib/components/po-field/po-upload/samples/sample-po-upload-resume-drag-drop/sample-po-upload-resume-drag-drop.component.ts +++ b/projects/ui/src/lib/components/po-field/po-upload/samples/sample-po-upload-resume-drag-drop/sample-po-upload-resume-drag-drop.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, ViewChild, inject } from '@angular/core'; +import { Component, OnInit, ViewChild, inject, ChangeDetectionStrategy } from '@angular/core'; import { UntypedFormControl } from '@angular/forms'; import { PoNotificationService } from '@po-ui/ng-components'; @@ -6,6 +6,7 @@ import { PoNotificationService } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-upload-resume-drag-drop', templateUrl: 'sample-po-upload-resume-drag-drop.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoUploadResumeDragDropComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-field/po-upload/samples/sample-po-upload-resume/sample-po-upload-resume.component.ts b/projects/ui/src/lib/components/po-field/po-upload/samples/sample-po-upload-resume/sample-po-upload-resume.component.ts index e3dbdaeb88..749f4936f4 100644 --- a/projects/ui/src/lib/components/po-field/po-upload/samples/sample-po-upload-resume/sample-po-upload-resume.component.ts +++ b/projects/ui/src/lib/components/po-field/po-upload/samples/sample-po-upload-resume/sample-po-upload-resume.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, ViewChild, inject } from '@angular/core'; +import { Component, OnInit, ViewChild, inject, ChangeDetectionStrategy } from '@angular/core'; import { UntypedFormControl } from '@angular/forms'; import { PoNotificationService } from '@po-ui/ng-components'; @@ -6,6 +6,7 @@ import { PoNotificationService } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-upload-resume', templateUrl: 'sample-po-upload-resume.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoUploadResumeComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-field/po-upload/samples/sample-po-upload-rs/sample-po-upload-rs.component.ts b/projects/ui/src/lib/components/po-field/po-upload/samples/sample-po-upload-rs/sample-po-upload-rs.component.ts index 9199322ade..c8b53477c2 100644 --- a/projects/ui/src/lib/components/po-field/po-upload/samples/sample-po-upload-rs/sample-po-upload-rs.component.ts +++ b/projects/ui/src/lib/components/po-field/po-upload/samples/sample-po-upload-rs/sample-po-upload-rs.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, ViewChild } from '@angular/core'; +import { Component, OnInit, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { NgForm } from '@angular/forms'; import { PoModalAction, PoModalComponent, PoStepperComponent, PoUploadComponent } from '@po-ui/ng-components'; @@ -6,6 +6,7 @@ import { PoModalAction, PoModalComponent, PoStepperComponent, PoUploadComponent @Component({ selector: 'sample-po-upload-rs', templateUrl: 'sample-po-upload-rs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoUploadRsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-field/po-url/samples/sample-po-url-basic/sample-po-url-basic.component.ts b/projects/ui/src/lib/components/po-field/po-url/samples/sample-po-url-basic/sample-po-url-basic.component.ts index 0bf1e8f7fe..741783182f 100644 --- a/projects/ui/src/lib/components/po-field/po-url/samples/sample-po-url-basic/sample-po-url-basic.component.ts +++ b/projects/ui/src/lib/components/po-field/po-url/samples/sample-po-url-basic/sample-po-url-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-url-basic', templateUrl: './sample-po-url-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoUrlBasicComponent {} diff --git a/projects/ui/src/lib/components/po-field/po-url/samples/sample-po-url-labs/sample-po-url-labs.component.html b/projects/ui/src/lib/components/po-field/po-url/samples/sample-po-url-labs/sample-po-url-labs.component.html index f94a73f575..b4b9b2058e 100644 --- a/projects/ui/src/lib/components/po-field/po-url/samples/sample-po-url-labs/sample-po-url-labs.component.html +++ b/projects/ui/src/lib/components/po-field/po-url/samples/sample-po-url-labs/sample-po-url-labs.component.html @@ -7,10 +7,10 @@ [p-error-pattern]="errorPattern" [p-help]="help" [p-label]="label" - [p-loading]="properties?.includes('loading')" + [p-loading]="$safeNavigationMigration(properties?.includes('loading'))" [p-maxlength]="maxlength" [p-minlength]="minlength" - [p-no-autocomplete]="properties?.includes('noAutocomplete')" + [p-no-autocomplete]="$safeNavigationMigration(properties?.includes('noAutocomplete'))" [p-optional]="properties.includes('optional')" [p-placeholder]="placeholder" [p-readonly]="properties.includes('readonly')" @@ -23,9 +23,9 @@ (p-change-model)="changeEvent('p-change-model')" (p-enter)="changeEvent('p-enter')" (p-keydown)="changeEvent('p-keydown')" - [p-error-limit]="properties?.includes('errorLimit')" - [p-label-text-wrap]="properties?.includes('labelTextWrap')" - [p-compact-label]="properties?.includes('compactLabel')" + [p-error-limit]="$safeNavigationMigration(properties?.includes('errorLimit'))" + [p-label-text-wrap]="$safeNavigationMigration(properties?.includes('labelTextWrap'))" + [p-compact-label]="$safeNavigationMigration(properties?.includes('compactLabel'))" > diff --git a/projects/ui/src/lib/components/po-field/po-url/samples/sample-po-url-labs/sample-po-url-labs.component.ts b/projects/ui/src/lib/components/po-field/po-url/samples/sample-po-url-labs/sample-po-url-labs.component.ts index 2b4185e657..9c965033cf 100644 --- a/projects/ui/src/lib/components/po-field/po-url/samples/sample-po-url-labs/sample-po-url-labs.component.ts +++ b/projects/ui/src/lib/components/po-field/po-url/samples/sample-po-url-labs/sample-po-url-labs.component.ts @@ -1,10 +1,11 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption, PoRadioGroupOption } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-url-labs', templateUrl: './sample-po-url-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoUrlLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-field/po-url/samples/sample-po-url-shortener/sample-po-url-shortener.component.ts b/projects/ui/src/lib/components/po-field/po-url/samples/sample-po-url-shortener/sample-po-url-shortener.component.ts index c43075600e..2da17d215b 100644 --- a/projects/ui/src/lib/components/po-field/po-url/samples/sample-po-url-shortener/sample-po-url-shortener.component.ts +++ b/projects/ui/src/lib/components/po-field/po-url/samples/sample-po-url-shortener/sample-po-url-shortener.component.ts @@ -1,10 +1,11 @@ -import { Component, ElementRef, ViewChild, inject } from '@angular/core'; +import { Component, ElementRef, ViewChild, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoNotificationService, PoTableColumn } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-url-shortener', templateUrl: './sample-po-url-shortener.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoUrlShortenerComponent { diff --git a/projects/ui/src/lib/components/po-filter-chip/samples/sample-po-filter-chip-basic/sample-po-filter-chip-basic.component.ts b/projects/ui/src/lib/components/po-filter-chip/samples/sample-po-filter-chip-basic/sample-po-filter-chip-basic.component.ts index e8fbc275ad..bb182003bb 100644 --- a/projects/ui/src/lib/components/po-filter-chip/samples/sample-po-filter-chip-basic/sample-po-filter-chip-basic.component.ts +++ b/projects/ui/src/lib/components/po-filter-chip/samples/sample-po-filter-chip-basic/sample-po-filter-chip-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-filter-chip-basic', templateUrl: './sample-po-filter-chip-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoFilterChipBasicComponent {} diff --git a/projects/ui/src/lib/components/po-filter-chip/samples/sample-po-filter-chip-filter-list/sample-po-filter-chip-filter-list.component.ts b/projects/ui/src/lib/components/po-filter-chip/samples/sample-po-filter-chip-filter-list/sample-po-filter-chip-filter-list.component.ts index 386d5f67e9..eb0a1cebf5 100644 --- a/projects/ui/src/lib/components/po-filter-chip/samples/sample-po-filter-chip-filter-list/sample-po-filter-chip-filter-list.component.ts +++ b/projects/ui/src/lib/components/po-filter-chip/samples/sample-po-filter-chip-filter-list/sample-po-filter-chip-filter-list.component.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoFilterChipSelectedChange } from '@po-ui/ng-components/lib'; interface FilterOption { @@ -14,6 +14,7 @@ interface Product { @Component({ selector: 'sample-po-filter-chip-filter-list', templateUrl: './sample-po-filter-chip-filter-list.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoFilterChipFilterListComponent { diff --git a/projects/ui/src/lib/components/po-filter-chip/samples/sample-po-filter-chip-labs/sample-po-filter-chip-labs.component.ts b/projects/ui/src/lib/components/po-filter-chip/samples/sample-po-filter-chip-labs/sample-po-filter-chip-labs.component.ts index a206f6e5ad..01e1773efa 100644 --- a/projects/ui/src/lib/components/po-filter-chip/samples/sample-po-filter-chip-labs/sample-po-filter-chip-labs.component.ts +++ b/projects/ui/src/lib/components/po-filter-chip/samples/sample-po-filter-chip-labs/sample-po-filter-chip-labs.component.ts @@ -1,9 +1,10 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoFilterChipSelectedChange } from '@po-ui/ng-components/lib'; @Component({ selector: 'sample-po-filter-chip-labs', templateUrl: './sample-po-filter-chip-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoFilterChipLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-gauge/po-gauge-base.component.spec.ts b/projects/ui/src/lib/components/po-gauge/po-gauge-base.component.spec.ts index fe639406e2..3ae55196c3 100644 --- a/projects/ui/src/lib/components/po-gauge/po-gauge-base.component.spec.ts +++ b/projects/ui/src/lib/components/po-gauge/po-gauge-base.component.spec.ts @@ -1,10 +1,11 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { PoGaugeBaseComponent } from './po-gauge-base.component'; import { poGaugeMinHeight } from './po-gauge-default-values.constant'; import { PoGaugeRanges } from './interfaces/po-gauge-ranges.interface'; -@Component({ selector: 'po-gauge-base-test', template: '', standalone: false }) +@Component({ selector: 'po-gauge-base-test', template: '', changeDetection: ChangeDetectionStrategy.Eager, + standalone: false }) class TestComponent extends PoGaugeBaseComponent {} describe('PoGaugeBaseComponent', () => { diff --git a/projects/ui/src/lib/components/po-gauge/po-gauge.component.ts b/projects/ui/src/lib/components/po-gauge/po-gauge.component.ts index 61f7607549..fa5e47872d 100644 --- a/projects/ui/src/lib/components/po-gauge/po-gauge.component.ts +++ b/projects/ui/src/lib/components/po-gauge/po-gauge.component.ts @@ -1,4 +1,4 @@ -import { Component, OnChanges, OnInit, SimpleChanges } from '@angular/core'; +import { Component, OnChanges, OnInit, SimpleChanges, ChangeDetectionStrategy } from '@angular/core'; import { PoChartSerie } from '../po-chart'; import { PoGaugeBaseComponent } from './po-gauge-base.component'; @@ -27,6 +27,7 @@ import { PoGaugeBaseComponent } from './po-gauge-base.component'; @Component({ selector: 'po-gauge', templateUrl: './po-gauge.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoGaugeComponent extends PoGaugeBaseComponent implements OnChanges, OnInit { diff --git a/projects/ui/src/lib/components/po-gauge/samples/sample-po-gauge-basic/sample-po-gauge-basic.component.ts b/projects/ui/src/lib/components/po-gauge/samples/sample-po-gauge-basic/sample-po-gauge-basic.component.ts index 36969c29e4..cd5e6a1fdd 100644 --- a/projects/ui/src/lib/components/po-gauge/samples/sample-po-gauge-basic/sample-po-gauge-basic.component.ts +++ b/projects/ui/src/lib/components/po-gauge/samples/sample-po-gauge-basic/sample-po-gauge-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-gauge-basic', templateUrl: './sample-po-gauge-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoGaugeBasicComponent {} diff --git a/projects/ui/src/lib/components/po-gauge/samples/sample-po-gauge-labs/sample-po-gauge-labs.component.ts b/projects/ui/src/lib/components/po-gauge/samples/sample-po-gauge-labs/sample-po-gauge-labs.component.ts index a9ecd8ae4f..7b255584a7 100644 --- a/projects/ui/src/lib/components/po-gauge/samples/sample-po-gauge-labs/sample-po-gauge-labs.component.ts +++ b/projects/ui/src/lib/components/po-gauge/samples/sample-po-gauge-labs/sample-po-gauge-labs.component.ts @@ -1,10 +1,11 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption, PoGaugeOptions, PoGaugeRanges } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-gauge-labs', templateUrl: './sample-po-gauge-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoGaugeLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-gauge/samples/sample-po-gauge-summary/sample-po-gauge-summary.component.ts b/projects/ui/src/lib/components/po-gauge/samples/sample-po-gauge-summary/sample-po-gauge-summary.component.ts index 562292fde0..8b70a50e4e 100644 --- a/projects/ui/src/lib/components/po-gauge/samples/sample-po-gauge-summary/sample-po-gauge-summary.component.ts +++ b/projects/ui/src/lib/components/po-gauge/samples/sample-po-gauge-summary/sample-po-gauge-summary.component.ts @@ -1,10 +1,11 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoGaugeRanges } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-gauge-summary', templateUrl: './sample-po-gauge-summary.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoGaugeSummaryComponent { diff --git a/projects/ui/src/lib/components/po-grid/po-grid-cell-action/po-grid-cell-action.component.ts b/projects/ui/src/lib/components/po-grid/po-grid-cell-action/po-grid-cell-action.component.ts index d3b7f37012..94a6bd26b6 100644 --- a/projects/ui/src/lib/components/po-grid/po-grid-cell-action/po-grid-cell-action.component.ts +++ b/projects/ui/src/lib/components/po-grid/po-grid-cell-action/po-grid-cell-action.component.ts @@ -1,8 +1,9 @@ -import { Component, Input } from '@angular/core'; +import { Component, Input, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'po-grid-cell-action', templateUrl: './po-grid-cell-action.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoGridCellActionComponent { diff --git a/projects/ui/src/lib/components/po-grid/po-grid-cell/po-grid-cell.component.ts b/projects/ui/src/lib/components/po-grid/po-grid-cell/po-grid-cell.component.ts index dc0cfda280..c602c1f8ad 100644 --- a/projects/ui/src/lib/components/po-grid/po-grid-cell/po-grid-cell.component.ts +++ b/projects/ui/src/lib/components/po-grid/po-grid-cell/po-grid-cell.component.ts @@ -6,12 +6,14 @@ import { ChangeDetectorRef, Output, EventEmitter, - inject + inject, + ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'po-grid-cell', templateUrl: './po-grid-cell.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoGridCellComponent { diff --git a/projects/ui/src/lib/components/po-grid/po-grid-head/po-grid-head.component.ts b/projects/ui/src/lib/components/po-grid/po-grid-head/po-grid-head.component.ts index 8d77141878..c1ae27af05 100644 --- a/projects/ui/src/lib/components/po-grid/po-grid-head/po-grid-head.component.ts +++ b/projects/ui/src/lib/components/po-grid/po-grid-head/po-grid-head.component.ts @@ -1,8 +1,9 @@ -import { Component, Input } from '@angular/core'; +import { Component, Input, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'po-grid-head', templateUrl: './po-grid-head.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoGridHeadComponent { diff --git a/projects/ui/src/lib/components/po-grid/po-grid.component.ts b/projects/ui/src/lib/components/po-grid/po-grid.component.ts index b3a1db6a33..fef1d21e0a 100644 --- a/projects/ui/src/lib/components/po-grid/po-grid.component.ts +++ b/projects/ui/src/lib/components/po-grid/po-grid.component.ts @@ -6,7 +6,8 @@ import { OnDestroy, Renderer2, ViewChild, - inject + inject, + ChangeDetectionStrategy } from '@angular/core'; import { PoGridRowActions } from './po-grid-row-actions.interface'; @@ -43,6 +44,7 @@ import { PoGridRowActions } from './po-grid-row-actions.interface'; @Component({ selector: 'po-grid', templateUrl: './po-grid.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoGridComponent implements OnDestroy { diff --git a/projects/ui/src/lib/components/po-grid/samples/sample-po-grid-basic/sample-po-grid-basic.component.ts b/projects/ui/src/lib/components/po-grid/samples/sample-po-grid-basic/sample-po-grid-basic.component.ts index d058aaf36f..e2d5c03514 100644 --- a/projects/ui/src/lib/components/po-grid/samples/sample-po-grid-basic/sample-po-grid-basic.component.ts +++ b/projects/ui/src/lib/components/po-grid/samples/sample-po-grid-basic/sample-po-grid-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-grid-basic', templateUrl: './sample-po-grid-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoGridBasicComponent { diff --git a/projects/ui/src/lib/components/po-header/po-header-base.component.spec.ts b/projects/ui/src/lib/components/po-header/po-header-base.component.spec.ts index 895b77a544..a973c396c1 100644 --- a/projects/ui/src/lib/components/po-header/po-header-base.component.spec.ts +++ b/projects/ui/src/lib/components/po-header/po-header-base.component.spec.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { ComponentFixture, fakeAsync, flush, TestBed } from '@angular/core/testing'; import { PoLanguageService, PoThemeA11yEnum } from '../../services'; import { PoHeaderLiterals } from './interfaces/po-header-literals.interface'; @@ -6,6 +6,7 @@ import { PoHeaderBaseComponent, poNavbarLiteralsDefault } from './po-header-base @Component({ template: '', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) class TestHostComponent extends PoHeaderBaseComponent { diff --git a/projects/ui/src/lib/components/po-header/po-header-brand/po-header-brand.component.html b/projects/ui/src/lib/components/po-header/po-header-brand/po-header-brand.component.html index 82eb288777..ea60f15211 100644 --- a/projects/ui/src/lib/components/po-header/po-header-brand/po-header-brand.component.html +++ b/projects/ui/src/lib/components/po-header/po-header-brand/po-header-brand.component.html @@ -24,7 +24,10 @@ Logo
    } - {{ - brand?.title - }} + {{ brand?.title }}
    diff --git a/projects/ui/src/lib/components/po-header/po-header-brand/po-header-brand.component.ts b/projects/ui/src/lib/components/po-header/po-header-brand/po-header-brand.component.ts index 7e44753417..a36e553b11 100644 --- a/projects/ui/src/lib/components/po-header/po-header-brand/po-header-brand.component.ts +++ b/projects/ui/src/lib/components/po-header/po-header-brand/po-header-brand.component.ts @@ -10,7 +10,8 @@ import { OnDestroy, Output, SimpleChanges, - ViewChild + ViewChild, + ChangeDetectionStrategy } from '@angular/core'; import { Router } from '@angular/router'; import { debounceTime, fromEvent, map, startWith, Subscription } from 'rxjs'; @@ -21,6 +22,7 @@ import { PoHeaderBrand } from '../interfaces/po-header-brand.interface'; @Component({ selector: 'po-header-brand', templateUrl: './po-header-brand.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoHeaderbrandComponent implements AfterViewInit, OnChanges, OnDestroy { diff --git a/projects/ui/src/lib/components/po-header/po-header-customer/po-header-customer.component.html b/projects/ui/src/lib/components/po-header/po-header-customer/po-header-customer.component.html index af8a71755b..75ab051e51 100644 --- a/projects/ui/src/lib/components/po-header/po-header-customer/po-header-customer.component.html +++ b/projects/ui/src/lib/components/po-header/po-header-customer/po-header-customer.component.html @@ -8,14 +8,14 @@ [attr.aria-label]="literals.labelUser" >
    - User + User
    - Avatar + Avatar
    @if (headerUser?.status) { @@ -25,7 +25,7 @@
  • - Avatar + Avatar
    @if (headerUser?.status) { diff --git a/projects/ui/src/lib/components/po-header/po-header-customer/po-header-customer.component.ts b/projects/ui/src/lib/components/po-header/po-header-customer/po-header-customer.component.ts index e6bbe7de50..c48c78589f 100644 --- a/projects/ui/src/lib/components/po-header/po-header-customer/po-header-customer.component.ts +++ b/projects/ui/src/lib/components/po-header/po-header-customer/po-header-customer.component.ts @@ -1,4 +1,4 @@ -import { Component, input, Input, ViewChild } from '@angular/core'; +import { Component, input, Input, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { PoPopoverComponent } from '../../po-popover'; import { PoPopupComponent } from '../../po-popup'; import { PoHeaderUser } from '../interfaces/po-header-user.interface'; @@ -21,6 +21,7 @@ export const poHeaderCustomerLiteralsDefault = { @Component({ selector: 'po-header-customer', templateUrl: './po-header-customer.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoHeaderCustomerComponent { diff --git a/projects/ui/src/lib/components/po-header/po-header-menu-item/po-header-menu-item.component.html b/projects/ui/src/lib/components/po-header/po-header-menu-item/po-header-menu-item.component.html index 58604701c8..98de435743 100644 --- a/projects/ui/src/lib/components/po-header/po-header-menu-item/po-header-menu-item.component.html +++ b/projects/ui/src/lib/components/po-header/po-header-menu-item/po-header-menu-item.component.html @@ -24,7 +24,7 @@
  • - + - + }
  • diff --git a/projects/ui/src/lib/components/po-header/po-header-tools/po-header-tools.component.ts b/projects/ui/src/lib/components/po-header/po-header-tools/po-header-tools.component.ts index 9ad919efcf..60a0976f19 100644 --- a/projects/ui/src/lib/components/po-header/po-header-tools/po-header-tools.component.ts +++ b/projects/ui/src/lib/components/po-header/po-header-tools/po-header-tools.component.ts @@ -6,7 +6,8 @@ import { Input, QueryList, TemplateRef, - ViewChildren + ViewChildren, + ChangeDetectionStrategy } from '@angular/core'; import { Router } from '@angular/router'; import { PoUtils } from '../../../utils/util'; @@ -19,6 +20,7 @@ import { PoHeaderLiterals } from '../interfaces/po-header-literals.interface'; @Component({ selector: 'po-header-tools', templateUrl: './po-header-tools.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoHeaderToolsComponent { diff --git a/projects/ui/src/lib/components/po-header/po-header.component.html b/projects/ui/src/lib/components/po-header/po-header.component.html index d69f1aa816..e3c097123b 100644 --- a/projects/ui/src/lib/components/po-header/po-header.component.html +++ b/projects/ui/src/lib/components/po-header/po-header.component.html @@ -59,7 +59,7 @@ p-menu-id="po-header-nav-bar" >
    - +
    diff --git a/projects/ui/src/lib/components/po-header/po-header.component.spec.ts b/projects/ui/src/lib/components/po-header/po-header.component.spec.ts index 96e03d956a..05597da612 100644 --- a/projects/ui/src/lib/components/po-header/po-header.component.spec.ts +++ b/projects/ui/src/lib/components/po-header/po-header.component.spec.ts @@ -102,52 +102,80 @@ describe('PoHeaderComponent', () => { expect(component['currentWidth']).toBeDefined(); }); - it('should call detectChanges when receiveApplicationMenu emits', () => { + it('should update applicationMenu, updateMenu, combineItemsExternal and handleSmallSreen when receiveApplicationMenu emits a new id on small screen', fakeAsync(() => { spyOn(component['cd'], 'detectChanges'); + spyOn(component, 'updateMenu'); + spyOn(component, 'combineItemsExternal'); + spyOn(component, 'handleSmallSreen'); component.applicationMenu = {} as any; component.previousMenuComponentId = '1'; + Object.defineProperty(window, 'innerWidth', { value: 800, writable: true, configurable: true }); component.ngOnInit(); - receiveApplicationMenu$.next({ id: '2' }); + const newMenu = { id: '2' } as any; + receiveApplicationMenu$.next(newMenu); + tick(100); + expect(component.applicationMenu).toBe(newMenu); + expect(component.updateMenu).toHaveBeenCalled(); + expect(component['combineItemsExternal']).toHaveBeenCalled(); + expect(component.handleSmallSreen).toHaveBeenCalled(); expect(component['cd'].detectChanges).toHaveBeenCalled(); - }); + })); - it('should call detectChanges when receiveApplicationMenu emits and id is the same', () => { + it('should not call handleSmallSreen when receiveApplicationMenu emits a new id on large screen', fakeAsync(() => { spyOn(component['cd'], 'detectChanges'); + spyOn(component, 'updateMenu'); + spyOn(component, 'combineItemsExternal'); + spyOn(component, 'handleSmallSreen'); component.applicationMenu = {} as any; - component.previousMenuComponentId = '2'; - Object.defineProperty(window, 'innerWidth', { value: 800, writable: true, configurable: true }); + component.previousMenuComponentId = '1'; + Object.defineProperty(window, 'innerWidth', { value: 1000, writable: true, configurable: true }); component.ngOnInit(); - receiveApplicationMenu$.next({ id: '2' }); + receiveApplicationMenu$.next({ id: '2' } as any); + tick(100); + expect(component.updateMenu).toHaveBeenCalled(); + expect(component['combineItemsExternal']).toHaveBeenCalled(); + expect(component.handleSmallSreen).not.toHaveBeenCalled(); expect(component['cd'].detectChanges).toHaveBeenCalled(); - }); + })); - it('should not call detectChanges when receiveApplicationMenu has the same id and notChangeContext is true', () => { + it('should set applicationMenu to undefined when receiveApplicationMenu emits the same id', fakeAsync(() => { + spyOn(component['cd'], 'detectChanges'); spyOn(component, 'updateMenu'); component.applicationMenu = {} as any; component.previousMenuComponentId = '2'; - component.notChangeContext = true; component.ngOnInit(); - receiveApplicationMenu$.next({ id: '1' }); + receiveApplicationMenu$.next({ id: '2' } as any); + tick(100); + expect(component.applicationMenu).toBeUndefined(); expect(component.updateMenu).not.toHaveBeenCalled(); - }); + expect(component['cd'].detectChanges).toHaveBeenCalled(); + })); - it('should not call handleSmallSreen when receiveApplicationMenu emits', () => { + it('should return early and not change applicationMenu when notChangeContext is true and id differs', fakeAsync(() => { spyOn(component, 'updateMenu'); - component.applicationMenu = {} as any; + spyOn(component, 'combineItemsExternal'); + const currentMenu = {} as any; + component.applicationMenu = currentMenu; component.previousMenuComponentId = '2'; - Object.defineProperty(window, 'innerWidth', { value: 800, writable: true, configurable: true }); + component.notChangeContext = true; component.ngOnInit(); - receiveApplicationMenu$.next({ id: '1' }); + receiveApplicationMenu$.next({ id: '1' } as any); + tick(100); + // O callback executa o early return: o menu permanece o mesmo e nenhum + // recálculo de itens acontece. Não é assertado detectChanges porque outras + // subscriptions do ngOnInit (ex.: resize com startWith) também o disparam. + expect(component.applicationMenu).toBe(currentMenu); expect(component.updateMenu).not.toHaveBeenCalled(); - }); + expect(component['combineItemsExternal']).not.toHaveBeenCalled(); + })); it('should call detectChanges and handleSmallSreen when receiveRemovedApplicationMenu emits', fakeAsync(() => { spyOn(component['cd'], 'detectChanges'); diff --git a/projects/ui/src/lib/components/po-header/po-header.component.ts b/projects/ui/src/lib/components/po-header/po-header.component.ts index 2456361db8..8d2c079615 100644 --- a/projects/ui/src/lib/components/po-header/po-header.component.ts +++ b/projects/ui/src/lib/components/po-header/po-header.component.ts @@ -10,7 +10,8 @@ import { QueryList, SimpleChanges, ViewChild, - ViewChildren + ViewChildren, + ChangeDetectionStrategy } from '@angular/core'; import { debounceTime, delay, fromEvent, map, startWith, Subscription } from 'rxjs'; import { PoLanguageService } from '../../services'; @@ -45,6 +46,7 @@ import { PoHeaderMenuItemComponent } from './po-header-menu-item/po-header-menu- @Component({ selector: 'po-header', templateUrl: './po-header.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoHeaderComponent extends PoHeaderBaseComponent implements AfterViewInit, OnChanges, OnInit, OnDestroy { diff --git a/projects/ui/src/lib/components/po-header/samples/sample-po-header-apps/sample-po-header-apps.component.ts b/projects/ui/src/lib/components/po-header/samples/sample-po-header-apps/sample-po-header-apps.component.ts index 610f2bd844..88d480e678 100644 --- a/projects/ui/src/lib/components/po-header/samples/sample-po-header-apps/sample-po-header-apps.component.ts +++ b/projects/ui/src/lib/components/po-header/samples/sample-po-header-apps/sample-po-header-apps.component.ts @@ -1,4 +1,12 @@ -import { AfterViewInit, ChangeDetectorRef, Component, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core'; +import { + AfterViewInit, + ChangeDetectorRef, + Component, + TemplateRef, + ViewChild, + ViewEncapsulation, + ChangeDetectionStrategy +} from '@angular/core'; import { PoHeaderActions, @@ -16,6 +24,7 @@ import { templateUrl: './sample-po-header-apps.component.html', standalone: false, encapsulation: ViewEncapsulation.None, + changeDetection: ChangeDetectionStrategy.Eager, styles: ` sample-po-header-apps { display: block; diff --git a/projects/ui/src/lib/components/po-header/samples/sample-po-header-basic/sample-po-header-basic.component.ts b/projects/ui/src/lib/components/po-header/samples/sample-po-header-basic/sample-po-header-basic.component.ts index d75c0f98ee..7ac1392731 100644 --- a/projects/ui/src/lib/components/po-header/samples/sample-po-header-basic/sample-po-header-basic.component.ts +++ b/projects/ui/src/lib/components/po-header/samples/sample-po-header-basic/sample-po-header-basic.component.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoHeaderBrand, PoNotificationService } from '@po-ui/ng-components'; @@ -6,6 +6,7 @@ import { PoHeaderBrand, PoNotificationService } from '@po-ui/ng-components'; selector: 'sample-po-header-basic', templateUrl: './sample-po-header-basic.component.html', standalone: false, + changeDetection: ChangeDetectionStrategy.Eager, styles: ` /* alterado apenas para demonstração no portal*/ po-header { diff --git a/projects/ui/src/lib/components/po-header/samples/sample-po-header-labs/sample-po-header-labs.component.ts b/projects/ui/src/lib/components/po-header/samples/sample-po-header-labs/sample-po-header-labs.component.ts index c5ff4abec1..226169224d 100644 --- a/projects/ui/src/lib/components/po-header/samples/sample-po-header-labs/sample-po-header-labs.component.ts +++ b/projects/ui/src/lib/components/po-header/samples/sample-po-header-labs/sample-po-header-labs.component.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoHeaderActions, @@ -12,6 +12,7 @@ import { selector: 'sample-po-header-labs', templateUrl: './sample-po-header-labs.component.html', standalone: false, + changeDetection: ChangeDetectionStrategy.Eager, styles: ` /* alterado apenas para demonstração no portal*/ po-header { diff --git a/projects/ui/src/lib/components/po-helper/po-helper-base.component.ts b/projects/ui/src/lib/components/po-helper/po-helper-base.component.ts index 2266122222..614e3ec414 100644 --- a/projects/ui/src/lib/components/po-helper/po-helper-base.component.ts +++ b/projects/ui/src/lib/components/po-helper/po-helper-base.component.ts @@ -1,4 +1,4 @@ -import { Component, HostBinding, input } from '@angular/core'; +import { Component, HostBinding, input, ChangeDetectionStrategy } from '@angular/core'; import { validateSizeFn } from '../../utils/util'; import { PoFieldSize } from '../../enums/po-field-size.enum'; @@ -59,6 +59,7 @@ import { PoHelperCustomAction } from './interfaces/po-helper-custom-action.inter @Component({ selector: 'po-helper-base', template: '', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoHelperBaseComponent { diff --git a/projects/ui/src/lib/components/po-helper/po-helper.component.html b/projects/ui/src/lib/components/po-helper/po-helper.component.html index 0a1ac2f24b..9d911c334a 100644 --- a/projects/ui/src/lib/components/po-helper/po-helper.component.html +++ b/projects/ui/src/lib/components/po-helper/po-helper.component.html @@ -32,7 +32,7 @@ #popover [p-position]="popoverPosition" [p-target]="target" - [p-title]="helper()?.title" + [p-title]="$safeNavigationMigration(helper()?.title)" [p-append-in-body]="appendBox()" [p-offset]="8" p-custom-classes="po-helper-popover" @@ -58,7 +58,7 @@ (keydown.enter)="$event.stopPropagation()" (keydown.space)="$event.stopPropagation()" (p-action)="helper()?.footerAction?.action()" - [p-label]="helper()?.footerAction?.label" + [p-label]="$safeNavigationMigration(helper()?.footerAction?.label)" > } diff --git a/projects/ui/src/lib/components/po-helper/po-helper.component.ts b/projects/ui/src/lib/components/po-helper/po-helper.component.ts index fe9dd781b8..1f9548a536 100644 --- a/projects/ui/src/lib/components/po-helper/po-helper.component.ts +++ b/projects/ui/src/lib/components/po-helper/po-helper.component.ts @@ -1,5 +1,4 @@ import { - computed, Component, OnDestroy, OnChanges, @@ -7,7 +6,9 @@ import { ElementRef, AfterViewInit, SimpleChanges, - ChangeDetectorRef + ChangeDetectorRef, + computed, + ChangeDetectionStrategy } from '@angular/core'; import { PoButtonComponent } from '../po-button'; @@ -43,6 +44,7 @@ const PO_HELPER_ALLOWED_TAGS: Array = ['b', 'i', 'u', 'strong', @Component({ selector: 'po-helper', standalone: false, + changeDetection: ChangeDetectionStrategy.Eager, templateUrl: './po-helper.component.html' }) export class PoHelperComponent extends PoHelperBaseComponent implements AfterViewInit, OnDestroy, OnChanges { diff --git a/projects/ui/src/lib/components/po-helper/samples/sample-po-helper-basic/sample-po-helper-basic.component.ts b/projects/ui/src/lib/components/po-helper/samples/sample-po-helper-basic/sample-po-helper-basic.component.ts index a11f2d0152..1d28224975 100644 --- a/projects/ui/src/lib/components/po-helper/samples/sample-po-helper-basic/sample-po-helper-basic.component.ts +++ b/projects/ui/src/lib/components/po-helper/samples/sample-po-helper-basic/sample-po-helper-basic.component.ts @@ -1,10 +1,11 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoHelperOptions } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-helper-basic', templateUrl: './sample-po-helper-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoHelperBasicComponent { diff --git a/projects/ui/src/lib/components/po-helper/samples/sample-po-helper-labs/sample-po-helper-labs.component.ts b/projects/ui/src/lib/components/po-helper/samples/sample-po-helper-labs/sample-po-helper-labs.component.ts index aa09252006..ec4f9bebb2 100644 --- a/projects/ui/src/lib/components/po-helper/samples/sample-po-helper-labs/sample-po-helper-labs.component.ts +++ b/projects/ui/src/lib/components/po-helper/samples/sample-po-helper-labs/sample-po-helper-labs.component.ts @@ -1,10 +1,11 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoHelperOptions } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-helper-labs', templateUrl: './sample-po-helper-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoHelperLabsComponent { diff --git a/projects/ui/src/lib/components/po-helper/samples/sample-po-helper-sales-performance/sample-po-helper-sales-performance.component.ts b/projects/ui/src/lib/components/po-helper/samples/sample-po-helper-sales-performance/sample-po-helper-sales-performance.component.ts index d183c20bde..1669e1fb1a 100644 --- a/projects/ui/src/lib/components/po-helper/samples/sample-po-helper-sales-performance/sample-po-helper-sales-performance.component.ts +++ b/projects/ui/src/lib/components/po-helper/samples/sample-po-helper-sales-performance/sample-po-helper-sales-performance.component.ts @@ -1,10 +1,11 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoHelperOptions, PoChartType, PoChartOptions, PoChartSerie } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-helper-sales-performance', templateUrl: './sample-po-helper-sales-performance.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoHelperSalesPerformanceComponent { diff --git a/projects/ui/src/lib/components/po-image/po-image.component.ts b/projects/ui/src/lib/components/po-image/po-image.component.ts index 88a7d024e3..0fdd7be4f0 100644 --- a/projects/ui/src/lib/components/po-image/po-image.component.ts +++ b/projects/ui/src/lib/components/po-image/po-image.component.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoImageBaseComponent } from './po-image-base.component'; /** @@ -26,6 +26,7 @@ import { PoImageBaseComponent } from './po-image-base.component'; @Component({ selector: 'po-image', templateUrl: './po-image.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoImageComponent extends PoImageBaseComponent {} diff --git a/projects/ui/src/lib/components/po-image/samples/sample-po-image-basic/sample-po-image-basic.component.ts b/projects/ui/src/lib/components/po-image/samples/sample-po-image-basic/sample-po-image-basic.component.ts index b389cea436..3fc1162ab0 100644 --- a/projects/ui/src/lib/components/po-image/samples/sample-po-image-basic/sample-po-image-basic.component.ts +++ b/projects/ui/src/lib/components/po-image/samples/sample-po-image-basic/sample-po-image-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-image-basic', templateUrl: './sample-po-image-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoImageBasicComponent { diff --git a/projects/ui/src/lib/components/po-image/samples/sample-po-image-labs/sample-po-image-labs.component.ts b/projects/ui/src/lib/components/po-image/samples/sample-po-image-labs/sample-po-image-labs.component.ts index ad6b9b4c0b..69f8087e32 100644 --- a/projects/ui/src/lib/components/po-image/samples/sample-po-image-labs/sample-po-image-labs.component.ts +++ b/projects/ui/src/lib/components/po-image/samples/sample-po-image-labs/sample-po-image-labs.component.ts @@ -1,8 +1,9 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-image-labs', templateUrl: './sample-po-image-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoImageLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-image/samples/sample-po-image-travel/sample-po-image-travel.component.ts b/projects/ui/src/lib/components/po-image/samples/sample-po-image-travel/sample-po-image-travel.component.ts index d288aa1b73..d46136a081 100644 --- a/projects/ui/src/lib/components/po-image/samples/sample-po-image-travel/sample-po-image-travel.component.ts +++ b/projects/ui/src/lib/components/po-image/samples/sample-po-image-travel/sample-po-image-travel.component.ts @@ -1,10 +1,11 @@ -import { Component, ViewChild } from '@angular/core'; +import { Component, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { NgForm } from '@angular/forms'; import { PoDatepickerComponent, PoNotificationService, PoSelectOption } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-image-travel', templateUrl: './sample-po-image-travel.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoImageTravelComponent { diff --git a/projects/ui/src/lib/components/po-info/samples/sample-po-info-basic/sample-po-info-basic.component.ts b/projects/ui/src/lib/components/po-info/samples/sample-po-info-basic/sample-po-info-basic.component.ts index 01d5b93ec3..065331e0fb 100644 --- a/projects/ui/src/lib/components/po-info/samples/sample-po-info-basic/sample-po-info-basic.component.ts +++ b/projects/ui/src/lib/components/po-info/samples/sample-po-info-basic/sample-po-info-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-info-basic', templateUrl: './sample-po-info-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoInfoBasicComponent {} diff --git a/projects/ui/src/lib/components/po-info/samples/sample-po-info-labs/sample-po-info-labs.component.ts b/projects/ui/src/lib/components/po-info/samples/sample-po-info-labs/sample-po-info-labs.component.ts index 453969c7a7..0a279a6a3a 100644 --- a/projects/ui/src/lib/components/po-info/samples/sample-po-info-labs/sample-po-info-labs.component.ts +++ b/projects/ui/src/lib/components/po-info/samples/sample-po-info-labs/sample-po-info-labs.component.ts @@ -1,10 +1,11 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoInfoOrientation, PoRadioGroupOption } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-info-labs', templateUrl: './sample-po-info-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoInfoLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-label/po-label.component.ts b/projects/ui/src/lib/components/po-label/po-label.component.ts index 26bcb03758..641e5e5a36 100644 --- a/projects/ui/src/lib/components/po-label/po-label.component.ts +++ b/projects/ui/src/lib/components/po-label/po-label.component.ts @@ -1,4 +1,4 @@ -import { Component, input, Input } from '@angular/core'; +import { Component, input, Input, ChangeDetectionStrategy } from '@angular/core'; import { convertToBoolean } from '../../utils/util'; import { poFieldContainerLiterals } from '../po-field/po-field-container/po-field-container-literals'; @@ -11,6 +11,7 @@ import { poFieldContainerLiterals } from '../po-field/po-field-container/po-fiel @Component({ selector: 'po-label', templateUrl: './po-label.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoLabelComponent { diff --git a/projects/ui/src/lib/components/po-link/po-link.component.ts b/projects/ui/src/lib/components/po-link/po-link.component.ts index ac6900119d..9d70f09a1c 100644 --- a/projects/ui/src/lib/components/po-link/po-link.component.ts +++ b/projects/ui/src/lib/components/po-link/po-link.component.ts @@ -1,4 +1,4 @@ -import { Component, ElementRef, ViewChild } from '@angular/core'; +import { Component, ElementRef, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { PoLinkBaseComponent } from './po-link-base.component'; @@ -25,6 +25,7 @@ import { PoLinkBaseComponent } from './po-link-base.component'; @Component({ selector: 'po-link', templateUrl: './po-link.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoLinkComponent extends PoLinkBaseComponent { diff --git a/projects/ui/src/lib/components/po-link/samples/sample-po-link-basic/sample-po-link-basic.component.ts b/projects/ui/src/lib/components/po-link/samples/sample-po-link-basic/sample-po-link-basic.component.ts index f3f21b06bd..32b3673181 100644 --- a/projects/ui/src/lib/components/po-link/samples/sample-po-link-basic/sample-po-link-basic.component.ts +++ b/projects/ui/src/lib/components/po-link/samples/sample-po-link-basic/sample-po-link-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-link-basic', templateUrl: './sample-po-link-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoLinkBasicComponent {} diff --git a/projects/ui/src/lib/components/po-link/samples/sample-po-link-heroes/sample-po-link-heroes.component.ts b/projects/ui/src/lib/components/po-link/samples/sample-po-link-heroes/sample-po-link-heroes.component.ts index 2638953e09..96f7126f84 100644 --- a/projects/ui/src/lib/components/po-link/samples/sample-po-link-heroes/sample-po-link-heroes.component.ts +++ b/projects/ui/src/lib/components/po-link/samples/sample-po-link-heroes/sample-po-link-heroes.component.ts @@ -1,10 +1,11 @@ -import { Component, ViewChild } from '@angular/core'; +import { Component, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { PoTableColumn, PoModalComponent } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-link-heroes', templateUrl: './sample-po-link-heroes.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoLinkHeroesComponent { diff --git a/projects/ui/src/lib/components/po-link/samples/sample-po-link-labs/sample-po-link-labs.component.ts b/projects/ui/src/lib/components/po-link/samples/sample-po-link-labs/sample-po-link-labs.component.ts index 9a11315dbd..2c5db5beef 100644 --- a/projects/ui/src/lib/components/po-link/samples/sample-po-link-labs/sample-po-link-labs.component.ts +++ b/projects/ui/src/lib/components/po-link/samples/sample-po-link-labs/sample-po-link-labs.component.ts @@ -1,8 +1,9 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-link-labs', templateUrl: './sample-po-link-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoLinkLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-list-view/po-list-view.component.spec.ts b/projects/ui/src/lib/components/po-list-view/po-list-view.component.spec.ts index 89afbef439..45a50e79a6 100644 --- a/projects/ui/src/lib/components/po-list-view/po-list-view.component.spec.ts +++ b/projects/ui/src/lib/components/po-list-view/po-list-view.component.spec.ts @@ -1,6 +1,8 @@ import { provideNgReflectAttributes } from '@angular/core'; import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { Observable } from 'rxjs'; @@ -26,7 +28,7 @@ describe('PoListViewComponent:', () => { await TestBed.configureTestingModule({ declarations: [PoListViewComponent], imports: [PoButtonModule, PoPopupModule, PoModalModule, PoWidgetModule], - providers: [provideNgReflectAttributes(), provideRouter([])] + providers: [provideLocationMocks(), provideNgReflectAttributes(), provideRouter([])] }).compileComponents(); fixture = TestBed.createComponent(PoListViewComponent); diff --git a/projects/ui/src/lib/components/po-list-view/po-list-view.component.ts b/projects/ui/src/lib/components/po-list-view/po-list-view.component.ts index fa6783d667..a5ec430e4a 100644 --- a/projects/ui/src/lib/components/po-list-view/po-list-view.component.ts +++ b/projects/ui/src/lib/components/po-list-view/po-list-view.component.ts @@ -11,7 +11,8 @@ import { IterableDiffers, Renderer2, TemplateRef, - ViewChild + ViewChild, + ChangeDetectionStrategy } from '@angular/core'; import { Router } from '@angular/router'; @@ -55,6 +56,7 @@ import { PoListViewDetailTemplateDirective } from './po-list-view-detail-templat @Component({ selector: 'po-list-view', templateUrl: './po-list-view.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoListViewComponent diff --git a/projects/ui/src/lib/components/po-list-view/samples/sample-po-list-view-basic/sample-po-list-view-basic.component.ts b/projects/ui/src/lib/components/po-list-view/samples/sample-po-list-view-basic/sample-po-list-view-basic.component.ts index f5e6cfc5ce..27ee5925a6 100644 --- a/projects/ui/src/lib/components/po-list-view/samples/sample-po-list-view-basic/sample-po-list-view-basic.component.ts +++ b/projects/ui/src/lib/components/po-list-view/samples/sample-po-list-view-basic/sample-po-list-view-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-list-view-basic', templateUrl: './sample-po-list-view-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoListViewBasicComponent {} diff --git a/projects/ui/src/lib/components/po-list-view/samples/sample-po-list-view-hiring-processes/sample-po-list-view-hiring-processes.component.ts b/projects/ui/src/lib/components/po-list-view/samples/sample-po-list-view-hiring-processes/sample-po-list-view-hiring-processes.component.ts index 19adbae535..f744dad956 100644 --- a/projects/ui/src/lib/components/po-list-view/samples/sample-po-list-view-hiring-processes/sample-po-list-view-hiring-processes.component.ts +++ b/projects/ui/src/lib/components/po-list-view/samples/sample-po-list-view-hiring-processes/sample-po-list-view-hiring-processes.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, ViewChild, inject } from '@angular/core'; +import { Component, OnInit, ViewChild, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoListViewAction, @@ -15,6 +15,7 @@ import { SamplePoListViewHiringProcessesService } from './sample-po-list-view-hi selector: 'sample-po-list-view-hiring-processes', templateUrl: 'sample-po-list-view-hiring-processes.component.html', providers: [SamplePoListViewHiringProcessesService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoListViewHiringProcessesComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-list-view/samples/sample-po-list-view-labs/sample-po-list-view-labs.component.ts b/projects/ui/src/lib/components/po-list-view/samples/sample-po-list-view-labs/sample-po-list-view-labs.component.ts index eebd9a344d..419b292f65 100644 --- a/projects/ui/src/lib/components/po-list-view/samples/sample-po-list-view-labs/sample-po-list-view-labs.component.ts +++ b/projects/ui/src/lib/components/po-list-view/samples/sample-po-list-view-labs/sample-po-list-view-labs.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, inject } from '@angular/core'; +import { Component, OnInit, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption, @@ -13,6 +13,7 @@ import { @Component({ selector: 'sample-po-list-view-labs', templateUrl: './sample-po-list-view-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoListViewLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-listbox/po-item-list/po-item-list.component.html b/projects/ui/src/lib/components/po-listbox/po-item-list/po-item-list.component.html index 3c51513bec..8e3ca9d807 100644 --- a/projects/ui/src/lib/components/po-listbox/po-item-list/po-item-list.component.html +++ b/projects/ui/src/lib/components/po-listbox/po-item-list/po-item-list.component.html @@ -63,7 +63,7 @@ } @@ -91,7 +91,7 @@ {{ label }} } diff --git a/projects/ui/src/lib/components/po-listbox/po-item-list/po-item-list.component.spec.ts b/projects/ui/src/lib/components/po-listbox/po-item-list/po-item-list.component.spec.ts index 9fc3106ca8..ef03d2b167 100644 --- a/projects/ui/src/lib/components/po-listbox/po-item-list/po-item-list.component.spec.ts +++ b/projects/ui/src/lib/components/po-listbox/po-item-list/po-item-list.component.spec.ts @@ -1,6 +1,6 @@ import { NO_ERRORS_SCHEMA } from '@angular/core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; +import { provideLocationMocks } from '@angular/common/testing'; import { PoItemListComponent } from './po-item-list.component'; import { PoItemListFilterMode } from '../enums/po-item-list-filter-mode.enum'; @@ -15,8 +15,8 @@ describe('PoItemListComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ declarations: [PoItemListComponent], - imports: [RouterTestingModule], - schemas: [NO_ERRORS_SCHEMA] + schemas: [NO_ERRORS_SCHEMA], + providers: [provideLocationMocks()] }).compileComponents(); }); diff --git a/projects/ui/src/lib/components/po-listbox/po-item-list/po-item-list.component.ts b/projects/ui/src/lib/components/po-listbox/po-item-list/po-item-list.component.ts index c988dd48a2..5acea7a72f 100644 --- a/projects/ui/src/lib/components/po-listbox/po-item-list/po-item-list.component.ts +++ b/projects/ui/src/lib/components/po-listbox/po-item-list/po-item-list.component.ts @@ -1,4 +1,12 @@ -import { Component, ElementRef, OnChanges, SimpleChanges, ViewChild, inject } from '@angular/core'; +import { + Component, + ElementRef, + OnChanges, + SimpleChanges, + ViewChild, + inject, + ChangeDetectionStrategy +} from '@angular/core'; import { DomSanitizer, SafeHtml } from '@angular/platform-browser'; import { PoFieldSize } from '../../../enums/po-field-size.enum'; @@ -9,6 +17,7 @@ import { PoItemListBaseComponent } from './po-item-list-base.component'; @Component({ selector: 'po-item-list', templateUrl: './po-item-list.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoItemListComponent extends PoItemListBaseComponent implements OnChanges { diff --git a/projects/ui/src/lib/components/po-listbox/po-listbox.component.ts b/projects/ui/src/lib/components/po-listbox/po-listbox.component.ts index dbf0863f8c..5684022005 100644 --- a/projects/ui/src/lib/components/po-listbox/po-listbox.component.ts +++ b/projects/ui/src/lib/components/po-listbox/po-listbox.component.ts @@ -17,7 +17,8 @@ import { WritableSignal, effect, inject, - signal + signal, + ChangeDetectionStrategy } from '@angular/core'; import { Router } from '@angular/router'; import { CdkListbox, CdkOption } from '@angular/cdk/listbox'; @@ -35,6 +36,7 @@ const PO_LISTBOX_ROOT_KEY = 'ROOT'; @Component({ selector: 'po-listbox', templateUrl: './po-listbox.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoListBoxComponent extends PoListBoxBaseComponent implements OnInit, AfterViewInit, OnChanges, OnDestroy { diff --git a/projects/ui/src/lib/components/po-loading/po-loading-icon/po-loading-icon.component.spec.ts b/projects/ui/src/lib/components/po-loading/po-loading-icon/po-loading-icon.component.spec.ts index fa478b59a9..3816ad3aaf 100644 --- a/projects/ui/src/lib/components/po-loading/po-loading-icon/po-loading-icon.component.spec.ts +++ b/projects/ui/src/lib/components/po-loading/po-loading-icon/po-loading-icon.component.spec.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { configureTestSuite, expectPropertiesValues } from '../../../util-test/util-expect.spec'; @@ -11,6 +11,7 @@ import { LoadingIconComponent } from '../interfaces/po-loading-icon-component'; @Component({ selector: 'po-custom-loading-icon', template: '
    Custom Loading
    ', + changeDetection: ChangeDetectionStrategy.Eager, standalone: true }) class CustomLoadingIconComponent implements LoadingIconComponent { diff --git a/projects/ui/src/lib/components/po-loading/po-loading-icon/po-loading-icon.component.ts b/projects/ui/src/lib/components/po-loading/po-loading-icon/po-loading-icon.component.ts index f360c81daa..aeed2f6059 100644 --- a/projects/ui/src/lib/components/po-loading/po-loading-icon/po-loading-icon.component.ts +++ b/projects/ui/src/lib/components/po-loading/po-loading-icon/po-loading-icon.component.ts @@ -8,7 +8,8 @@ import { Optional, Type, ViewChild, - ViewContainerRef + ViewContainerRef, + ChangeDetectionStrategy } from '@angular/core'; import { convertToBoolean, uuid } from '../../../utils/util'; @@ -27,6 +28,7 @@ import { LoadingIconComponent } from '../interfaces/po-loading-icon-component'; @Component({ selector: 'po-loading-icon', templateUrl: 'po-loading-icon.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoLoadingIconComponent implements AfterViewInit, OnDestroy { diff --git a/projects/ui/src/lib/components/po-loading/po-loading-overlay/po-loading-overlay.component.ts b/projects/ui/src/lib/components/po-loading/po-loading-overlay/po-loading-overlay.component.ts index 9dd79994a1..860b5cdfac 100644 --- a/projects/ui/src/lib/components/po-loading/po-loading-overlay/po-loading-overlay.component.ts +++ b/projects/ui/src/lib/components/po-loading/po-loading-overlay/po-loading-overlay.component.ts @@ -1,4 +1,4 @@ -import { Component, ChangeDetectorRef, inject } from '@angular/core'; +import { Component, ChangeDetectorRef, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoLanguageService } from './../../../services/po-language/po-language.service'; @@ -30,6 +30,7 @@ import { PoLoadingOverlayBaseComponent } from './po-loading-overlay-base.compone @Component({ selector: 'po-loading-overlay', templateUrl: 'po-loading-overlay.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoLoadingOverlayComponent extends PoLoadingOverlayBaseComponent { diff --git a/projects/ui/src/lib/components/po-loading/po-loading-overlay/samples/sample-po-loading-overlay-basic/sample-po-loading-overlay-basic.component.ts b/projects/ui/src/lib/components/po-loading/po-loading-overlay/samples/sample-po-loading-overlay-basic/sample-po-loading-overlay-basic.component.ts index 5b96d644fa..61c2294829 100644 --- a/projects/ui/src/lib/components/po-loading/po-loading-overlay/samples/sample-po-loading-overlay-basic/sample-po-loading-overlay-basic.component.ts +++ b/projects/ui/src/lib/components/po-loading/po-loading-overlay/samples/sample-po-loading-overlay-basic/sample-po-loading-overlay-basic.component.ts @@ -1,9 +1,10 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-loading-overlay-basic', templateUrl: './sample-po-loading-overlay-basic.component.html', styleUrls: ['./sample-po-loading-overlay-basic.component.css'], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoLoadingOverlayBasicComponent {} diff --git a/projects/ui/src/lib/components/po-loading/po-loading-overlay/samples/sample-po-loading-overlay-connection-test/sample-po-loading-overlay-connection-test.component.ts b/projects/ui/src/lib/components/po-loading/po-loading-overlay/samples/sample-po-loading-overlay-connection-test/sample-po-loading-overlay-connection-test.component.ts index 9b123463b3..783901f4a4 100644 --- a/projects/ui/src/lib/components/po-loading/po-loading-overlay/samples/sample-po-loading-overlay-connection-test/sample-po-loading-overlay-connection-test.component.ts +++ b/projects/ui/src/lib/components/po-loading/po-loading-overlay/samples/sample-po-loading-overlay-connection-test/sample-po-loading-overlay-connection-test.component.ts @@ -1,10 +1,11 @@ -import { Component, inject } from '@angular/core'; +import { Component, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoNotificationService } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-loading-overlay-connection-test', templateUrl: 'sample-po-loading-overlay-connection-test.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoLoadingOverlayConnectionTestComponent { diff --git a/projects/ui/src/lib/components/po-loading/po-loading-overlay/samples/sample-po-loading-overlay-labs/sample-po-loading-overlay-labs.component.html b/projects/ui/src/lib/components/po-loading/po-loading-overlay/samples/sample-po-loading-overlay-labs/sample-po-loading-overlay-labs.component.html index e6e945708e..aeda7d52e9 100644 --- a/projects/ui/src/lib/components/po-loading/po-loading-overlay/samples/sample-po-loading-overlay-labs/sample-po-loading-overlay-labs.component.html +++ b/projects/ui/src/lib/components/po-loading/po-loading-overlay/samples/sample-po-loading-overlay-labs/sample-po-loading-overlay-labs.component.html @@ -1,5 +1,9 @@
    - +
    diff --git a/projects/ui/src/lib/components/po-loading/po-loading-overlay/samples/sample-po-loading-overlay-labs/sample-po-loading-overlay-labs.component.ts b/projects/ui/src/lib/components/po-loading/po-loading-overlay/samples/sample-po-loading-overlay-labs/sample-po-loading-overlay-labs.component.ts index 759a70edc2..cce852b16a 100644 --- a/projects/ui/src/lib/components/po-loading/po-loading-overlay/samples/sample-po-loading-overlay-labs/sample-po-loading-overlay-labs.component.ts +++ b/projects/ui/src/lib/components/po-loading/po-loading-overlay/samples/sample-po-loading-overlay-labs/sample-po-loading-overlay-labs.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption, PoRadioGroupOption } from '@po-ui/ng-components'; @@ -6,6 +6,7 @@ import { PoCheckboxGroupOption, PoRadioGroupOption } from '@po-ui/ng-components' selector: 'sample-po-loading-overlay-labs', templateUrl: './sample-po-loading-overlay-labs.component.html', styleUrls: ['./sample-po-loading-overlay-labs.component.css'], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoLoadingOverlayLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-loading/po-loading.component.ts b/projects/ui/src/lib/components/po-loading/po-loading.component.ts index d6e75ff7ff..80b079e47e 100644 --- a/projects/ui/src/lib/components/po-loading/po-loading.component.ts +++ b/projects/ui/src/lib/components/po-loading/po-loading.component.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoLoadingBaseComponent } from './po-loading-base.component'; @@ -10,6 +10,7 @@ import { PoLoadingBaseComponent } from './po-loading-base.component'; @Component({ selector: 'po-loading', templateUrl: 'po-loading.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoLoadingComponent extends PoLoadingBaseComponent {} diff --git a/projects/ui/src/lib/components/po-logo/po-logo.component.ts b/projects/ui/src/lib/components/po-logo/po-logo.component.ts index 43c08368a9..203a6bd03b 100644 --- a/projects/ui/src/lib/components/po-logo/po-logo.component.ts +++ b/projects/ui/src/lib/components/po-logo/po-logo.component.ts @@ -1,4 +1,4 @@ -import { Component, Input } from '@angular/core'; +import { Component, Input, ChangeDetectionStrategy } from '@angular/core'; import { PoLanguageService } from '../../services/po-language/po-language.service'; import { isTypeof } from '../../utils/util'; @@ -23,6 +23,7 @@ const MAX_LENGHT: number = 125; @Component({ selector: 'po-logo', templateUrl: './po-logo.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoLogoComponent { diff --git a/projects/ui/src/lib/components/po-menu-panel/po-menu-panel-item/po-menu-panel-item.component.spec.ts b/projects/ui/src/lib/components/po-menu-panel/po-menu-panel-item/po-menu-panel-item.component.spec.ts index 336e7b2e57..26f132ee9d 100644 --- a/projects/ui/src/lib/components/po-menu-panel/po-menu-panel-item/po-menu-panel-item.component.spec.ts +++ b/projects/ui/src/lib/components/po-menu-panel/po-menu-panel-item/po-menu-panel-item.component.spec.ts @@ -1,5 +1,6 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { Observable } from 'rxjs'; @@ -19,9 +20,9 @@ describe('PoMenuPanelItemComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [RouterTestingModule.withRoutes([]), PoTooltipModule], + imports: [RouterModule.forRoot([]), PoTooltipModule], declarations: [PoMenuPanelItemComponent], - providers: [PoMenuPanelItemsService] + providers: [provideLocationMocks(), PoMenuPanelItemsService] }).compileComponents(); fixture = TestBed.createComponent(PoMenuPanelItemComponent); diff --git a/projects/ui/src/lib/components/po-menu-panel/po-menu-panel-item/po-menu-panel-item.component.ts b/projects/ui/src/lib/components/po-menu-panel/po-menu-panel-item/po-menu-panel-item.component.ts index 7fb65401ea..aa2ae2e7dd 100644 --- a/projects/ui/src/lib/components/po-menu-panel/po-menu-panel-item/po-menu-panel-item.component.ts +++ b/projects/ui/src/lib/components/po-menu-panel/po-menu-panel-item/po-menu-panel-item.component.ts @@ -1,4 +1,4 @@ -import { Component, Input, OnDestroy, OnInit, inject } from '@angular/core'; +import { Component, Input, OnDestroy, OnInit, inject, ChangeDetectionStrategy } from '@angular/core'; import { Subscription } from 'rxjs'; @@ -15,6 +15,7 @@ import { PoMenuPanelItemsService } from '../services/po-menu-panel-items.service @Component({ selector: 'po-menu-panel-item', templateUrl: './po-menu-panel-item.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoMenuPanelItemComponent implements OnDestroy, OnInit { diff --git a/projects/ui/src/lib/components/po-menu-panel/po-menu-panel.component.spec.ts b/projects/ui/src/lib/components/po-menu-panel/po-menu-panel.component.spec.ts index 06d7fcb338..72ecc0a69e 100644 --- a/projects/ui/src/lib/components/po-menu-panel/po-menu-panel.component.spec.ts +++ b/projects/ui/src/lib/components/po-menu-panel/po-menu-panel.component.spec.ts @@ -1,7 +1,7 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { Router, Routes } from '@angular/router'; -import { RouterTestingModule } from '@angular/router/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { Router, Routes, RouterModule } from '@angular/router'; import { Observable } from 'rxjs'; @@ -13,6 +13,7 @@ import { PoMenuPanelItemsService } from './services/po-menu-panel-items.service' @Component({ selector: 'app-menu-panel-search', template: 'Search', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SearchComponent {} @@ -20,6 +21,7 @@ export class SearchComponent {} @Component({ selector: 'app-menu-panel-home', template: 'Home', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class HomeComponent {} @@ -40,9 +42,9 @@ describe('PoMenuPanelComponent: ', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [RouterTestingModule.withRoutes(routes), PoTooltipModule], + imports: [RouterModule.forRoot(routes), PoTooltipModule], declarations: [PoMenuPanelComponent, PoMenuPanelItemComponent, HomeComponent, SearchComponent], - providers: [PoMenuPanelItemsService] + providers: [provideLocationMocks(), PoMenuPanelItemsService] }).compileComponents(); router = TestBed.inject(Router); diff --git a/projects/ui/src/lib/components/po-menu-panel/po-menu-panel.component.ts b/projects/ui/src/lib/components/po-menu-panel/po-menu-panel.component.ts index 0589e989fc..44c5a7add7 100644 --- a/projects/ui/src/lib/components/po-menu-panel/po-menu-panel.component.ts +++ b/projects/ui/src/lib/components/po-menu-panel/po-menu-panel.component.ts @@ -1,5 +1,5 @@ import { Location } from '@angular/common'; -import { Component, OnDestroy, OnInit, ViewContainerRef, inject } from '@angular/core'; +import { Component, OnDestroy, OnInit, ViewContainerRef, inject, ChangeDetectionStrategy } from '@angular/core'; import { NavigationEnd, Router } from '@angular/router'; import { Subscription } from 'rxjs'; @@ -82,6 +82,7 @@ import { PoMenuPanelItemsService } from './services/po-menu-panel-items.service' @Component({ selector: 'po-menu-panel', templateUrl: './po-menu-panel.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoMenuPanelComponent extends PoMenuPanelBaseComponent implements OnDestroy, OnInit { diff --git a/projects/ui/src/lib/components/po-menu-panel/samples/sample-po-menu-panel-basic/sample-po-menu-panel-basic.component.ts b/projects/ui/src/lib/components/po-menu-panel/samples/sample-po-menu-panel-basic/sample-po-menu-panel-basic.component.ts index d9f10760d9..840b345d44 100644 --- a/projects/ui/src/lib/components/po-menu-panel/samples/sample-po-menu-panel-basic/sample-po-menu-panel-basic.component.ts +++ b/projects/ui/src/lib/components/po-menu-panel/samples/sample-po-menu-panel-basic/sample-po-menu-panel-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-menu-panel-basic', templateUrl: './sample-po-menu-panel-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoMenuPanelBasicComponent {} diff --git a/projects/ui/src/lib/components/po-menu-panel/samples/sample-po-menu-panel-customer/sample-po-menu-panel-customer.component.ts b/projects/ui/src/lib/components/po-menu-panel/samples/sample-po-menu-panel-customer/sample-po-menu-panel-customer.component.ts index f6b916d34f..3af1c5ae09 100644 --- a/projects/ui/src/lib/components/po-menu-panel/samples/sample-po-menu-panel-customer/sample-po-menu-panel-customer.component.ts +++ b/projects/ui/src/lib/components/po-menu-panel/samples/sample-po-menu-panel-customer/sample-po-menu-panel-customer.component.ts @@ -1,10 +1,11 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoMenuPanelItem } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-menu-panel-customer', templateUrl: './sample-po-menu-panel-customer.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoMenuPanelCustomerComponent { diff --git a/projects/ui/src/lib/components/po-menu-panel/samples/sample-po-menu-panel-labs/sample-po-menu-panel-labs.component.ts b/projects/ui/src/lib/components/po-menu-panel/samples/sample-po-menu-panel-labs/sample-po-menu-panel-labs.component.ts index efb0d74775..b39a0cb0d4 100644 --- a/projects/ui/src/lib/components/po-menu-panel/samples/sample-po-menu-panel-labs/sample-po-menu-panel-labs.component.ts +++ b/projects/ui/src/lib/components/po-menu-panel/samples/sample-po-menu-panel-labs/sample-po-menu-panel-labs.component.ts @@ -1,10 +1,11 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoMenuPanelItem, PoRadioGroupOption } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-menu-panel-labs', templateUrl: './sample-po-menu-panel-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoMenuPanelLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-menu/po-menu-base.component.spec.ts b/projects/ui/src/lib/components/po-menu/po-menu-base.component.spec.ts index 8ccf76fb80..9cfc7504da 100644 --- a/projects/ui/src/lib/components/po-menu/po-menu-base.component.spec.ts +++ b/projects/ui/src/lib/components/po-menu/po-menu-base.component.spec.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { fakeAsync, TestBed, tick } from '@angular/core/testing'; import { of } from 'rxjs'; @@ -10,6 +10,7 @@ import { PoMenuFilter } from './po-menu-filter/po-menu-filter.interface'; @Component({ template: '', + changeDetection: ChangeDetectionStrategy.Eager, standalone: true }) export class PoMenuComponent extends PoMenuBaseComponent { diff --git a/projects/ui/src/lib/components/po-menu/po-menu-filter/po-menu-filter.component.ts b/projects/ui/src/lib/components/po-menu/po-menu-filter/po-menu-filter.component.ts index ba1aed4f34..074de3fdaf 100644 --- a/projects/ui/src/lib/components/po-menu/po-menu-filter/po-menu-filter.component.ts +++ b/projects/ui/src/lib/components/po-menu/po-menu-filter/po-menu-filter.component.ts @@ -1,4 +1,13 @@ -import { Component, ElementRef, EventEmitter, Input, Output, ViewChild, inject } from '@angular/core'; +import { + Component, + ElementRef, + EventEmitter, + Input, + Output, + ViewChild, + inject, + ChangeDetectionStrategy +} from '@angular/core'; import { PoLanguageService } from '../../../services/po-language/po-language.service'; import { PoMenuFilterLiterals } from './po-menu-filter-literals.interface'; @@ -19,6 +28,7 @@ export const poMenuFilterLiteralsDefault = { @Component({ selector: 'po-menu-filter', templateUrl: './po-menu-filter.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoMenuFilterComponent { diff --git a/projects/ui/src/lib/components/po-menu/po-menu-item/po-menu-item.component.spec.ts b/projects/ui/src/lib/components/po-menu/po-menu-item/po-menu-item.component.spec.ts index 4316544e82..aa03936567 100644 --- a/projects/ui/src/lib/components/po-menu/po-menu-item/po-menu-item.component.spec.ts +++ b/projects/ui/src/lib/components/po-menu/po-menu-item/po-menu-item.component.spec.ts @@ -1,7 +1,7 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { ComponentFixture, fakeAsync, TestBed, tick } from '@angular/core/testing'; -import { Routes } from '@angular/router'; -import { RouterTestingModule } from '@angular/router/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { Routes, RouterModule } from '@angular/router'; import { Observable } from 'rxjs'; @@ -15,6 +15,7 @@ import { PoMenuItemComponent } from './po-menu-item.component'; @Component({ selector: 'app-menu-item-search', template: 'Search', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SearchComponent {} @@ -22,6 +23,7 @@ export class SearchComponent {} @Component({ selector: 'app-menu-item-home', template: 'Home', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class HomeComponent {} @@ -39,9 +41,9 @@ describe('PoMenuItemComponent:', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [RouterTestingModule.withRoutes(routes), PoIconModule], + imports: [RouterModule.forRoot(routes), PoIconModule], declarations: [SearchComponent, HomeComponent, PoMenuItemComponent, PoBadgeComponent], - providers: [PoMenuItemsService] + providers: [provideLocationMocks(), PoMenuItemsService] }).compileComponents(); fixture = TestBed.createComponent(PoMenuItemComponent); diff --git a/projects/ui/src/lib/components/po-menu/po-menu-item/po-menu-item.component.ts b/projects/ui/src/lib/components/po-menu/po-menu-item/po-menu-item.component.ts index a3a3e55e33..ba3105936d 100644 --- a/projects/ui/src/lib/components/po-menu/po-menu-item/po-menu-item.component.ts +++ b/projects/ui/src/lib/components/po-menu/po-menu-item/po-menu-item.component.ts @@ -1,4 +1,14 @@ -import { Component, ElementRef, Input, OnDestroy, OnInit, TemplateRef, ViewChild, inject } from '@angular/core'; +import { + Component, + ElementRef, + Input, + OnDestroy, + OnInit, + TemplateRef, + ViewChild, + inject, + ChangeDetectionStrategy +} from '@angular/core'; import { Subscription } from 'rxjs'; @@ -20,6 +30,7 @@ const poMenuItemSubItemSize = 98; @Component({ selector: 'po-menu-item', templateUrl: './po-menu-item.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoMenuItemComponent implements OnDestroy, OnInit { diff --git a/projects/ui/src/lib/components/po-menu/po-menu.component.html b/projects/ui/src/lib/components/po-menu/po-menu.component.html index 8a782a12b5..81f8180afb 100644 --- a/projects/ui/src/lib/components/po-menu/po-menu.component.html +++ b/projects/ui/src/lib/components/po-menu/po-menu.component.html @@ -105,8 +105,8 @@ { SearchComponent, PoBadgeComponent ], - imports: [RouterTestingModule.withRoutes(routes), PoLoadingModule, PoIconModule], + imports: [RouterModule.forRoot(routes), PoLoadingModule, PoIconModule], providers: [ + provideLocationMocks(), PoMenuItemsService, PoMenuService, - provideHttpClient(withInterceptorsFromDi()), + provideHttpClient(withXhr(), withInterceptorsFromDi()), provideHttpClientTesting() ] }).compileComponents(); diff --git a/projects/ui/src/lib/components/po-menu/po-menu.component.ts b/projects/ui/src/lib/components/po-menu/po-menu.component.ts index ad81d88694..18ee70c800 100644 --- a/projects/ui/src/lib/components/po-menu/po-menu.component.ts +++ b/projects/ui/src/lib/components/po-menu/po-menu.component.ts @@ -10,7 +10,8 @@ import { OnInit, Renderer2, SimpleChanges, - inject + inject, + ChangeDetectionStrategy } from '@angular/core'; import { NavigationCancel, NavigationEnd, Router } from '@angular/router'; @@ -121,6 +122,7 @@ const poMenuRootLevel = 1; selector: 'po-menu', templateUrl: './po-menu.component.html', providers: [PoMenuItemsService, PoMenuService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoMenuComponent diff --git a/projects/ui/src/lib/components/po-menu/samples/sample-po-menu-basic/sample-po-menu-basic.component.ts b/projects/ui/src/lib/components/po-menu/samples/sample-po-menu-basic/sample-po-menu-basic.component.ts index bf3215469d..2cfa51850a 100644 --- a/projects/ui/src/lib/components/po-menu/samples/sample-po-menu-basic/sample-po-menu-basic.component.ts +++ b/projects/ui/src/lib/components/po-menu/samples/sample-po-menu-basic/sample-po-menu-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-menu-basic', templateUrl: './sample-po-menu-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoMenuBasicComponent {} diff --git a/projects/ui/src/lib/components/po-menu/samples/sample-po-menu-human-resources/sample-po-menu-human-resources.component.ts b/projects/ui/src/lib/components/po-menu/samples/sample-po-menu-human-resources/sample-po-menu-human-resources.component.ts index 0f692c35bb..42532b1820 100644 --- a/projects/ui/src/lib/components/po-menu/samples/sample-po-menu-human-resources/sample-po-menu-human-resources.component.ts +++ b/projects/ui/src/lib/components/po-menu/samples/sample-po-menu-human-resources/sample-po-menu-human-resources.component.ts @@ -1,4 +1,4 @@ -import { Component, inject } from '@angular/core'; +import { Component, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoMenuItem } from '@po-ui/ng-components'; @@ -9,6 +9,7 @@ import { SamplePoMenuHumanResourcesService } from './sample-po-menu-human-resour templateUrl: './sample-po-menu-human-resources.component.html', providers: [SamplePoMenuHumanResourcesService], styleUrls: ['./sample-po-menu-human-resources.component.css'], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoMenuHumanResourcesComponent { diff --git a/projects/ui/src/lib/components/po-menu/samples/sample-po-menu-labs/sample-po-menu-labs.component.ts b/projects/ui/src/lib/components/po-menu/samples/sample-po-menu-labs/sample-po-menu-labs.component.ts index d21ff166b9..37b72da269 100644 --- a/projects/ui/src/lib/components/po-menu/samples/sample-po-menu-labs/sample-po-menu-labs.component.ts +++ b/projects/ui/src/lib/components/po-menu/samples/sample-po-menu-labs/sample-po-menu-labs.component.ts @@ -1,4 +1,4 @@ -import { ChangeDetectorRef, Component, OnInit, ViewChild, inject } from '@angular/core'; +import { ChangeDetectorRef, Component, OnInit, ViewChild, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoButtonGroupItem, @@ -12,6 +12,7 @@ import { selector: 'sample-po-menu-labs', templateUrl: './sample-po-menu-labs.component.html', styleUrls: ['./sample-po-menu-labs.component.css'], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoMenuLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-menu/services/po-menu.service.spec.ts b/projects/ui/src/lib/components/po-menu/services/po-menu.service.spec.ts index bc31e7c99f..6dc1f11cec 100644 --- a/projects/ui/src/lib/components/po-menu/services/po-menu.service.spec.ts +++ b/projects/ui/src/lib/components/po-menu/services/po-menu.service.spec.ts @@ -1,5 +1,5 @@ import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; -import { HttpRequest, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { HttpRequest, provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; import { TestBed } from '@angular/core/testing'; import { PoMenuService } from './po-menu.service'; @@ -13,7 +13,7 @@ describe('PoMenuService:', () => { beforeEach(() => { TestBed.configureTestingModule({ imports: [], - providers: [PoMenuService, provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting()] + providers: [PoMenuService, provideHttpClient(withXhr(), withInterceptorsFromDi()), provideHttpClientTesting()] }); menuService = TestBed.inject(PoMenuService); diff --git a/projects/ui/src/lib/components/po-modal/po-modal-footer/po-modal-footer.component.ts b/projects/ui/src/lib/components/po-modal/po-modal-footer/po-modal-footer.component.ts index e0c83d1430..c5b8a13e90 100644 --- a/projects/ui/src/lib/components/po-modal/po-modal-footer/po-modal-footer.component.ts +++ b/projects/ui/src/lib/components/po-modal/po-modal-footer/po-modal-footer.component.ts @@ -1,4 +1,4 @@ -import { Component, Input } from '@angular/core'; +import { Component, Input, ChangeDetectionStrategy } from '@angular/core'; /** * @description @@ -19,6 +19,7 @@ import { Component, Input } from '@angular/core'; @Component({ selector: 'po-modal-footer', templateUrl: './po-modal-footer.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoModalFooterComponent { diff --git a/projects/ui/src/lib/components/po-modal/po-modal.component.spec.ts b/projects/ui/src/lib/components/po-modal/po-modal.component.spec.ts index 16c3b4b4ed..fa53035b23 100644 --- a/projects/ui/src/lib/components/po-modal/po-modal.component.spec.ts +++ b/projects/ui/src/lib/components/po-modal/po-modal.component.spec.ts @@ -1,5 +1,5 @@ import { By } from '@angular/platform-browser'; -import { Component, DebugElement, ViewChild } from '@angular/core'; +import { Component, DebugElement, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { ComponentFixture, fakeAsync, flush, TestBed, tick } from '@angular/core/testing'; import { FormsModule } from '@angular/forms'; @@ -25,6 +25,7 @@ import { PoModalFooterComponent } from '.'; `, + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) class ContentProjectionComponent { diff --git a/projects/ui/src/lib/components/po-modal/po-modal.component.ts b/projects/ui/src/lib/components/po-modal/po-modal.component.ts index b46bfef849..2ee3c9ee0e 100644 --- a/projects/ui/src/lib/components/po-modal/po-modal.component.ts +++ b/projects/ui/src/lib/components/po-modal/po-modal.component.ts @@ -1,4 +1,4 @@ -import { Component, ContentChild, ElementRef, ViewChild, inject } from '@angular/core'; +import { Component, ContentChild, ElementRef, ViewChild, inject, ChangeDetectionStrategy } from '@angular/core'; import { uuid } from '../../utils/util'; import { PoModalBaseComponent } from './po-modal-base.component'; @@ -31,6 +31,7 @@ import { PoLanguageService } from '../../services/po-language/po-language.servic @Component({ selector: 'po-modal', templateUrl: './po-modal.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoModalComponent extends PoModalBaseComponent { diff --git a/projects/ui/src/lib/components/po-modal/samples/sample-po-modal-basic/sample-po-modal-basic.component.ts b/projects/ui/src/lib/components/po-modal/samples/sample-po-modal-basic/sample-po-modal-basic.component.ts index 82d62b7547..556151b230 100644 --- a/projects/ui/src/lib/components/po-modal/samples/sample-po-modal-basic/sample-po-modal-basic.component.ts +++ b/projects/ui/src/lib/components/po-modal/samples/sample-po-modal-basic/sample-po-modal-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-modal-basic', templateUrl: './sample-po-modal-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoModalBasicComponent {} diff --git a/projects/ui/src/lib/components/po-modal/samples/sample-po-modal-fruits-salad/sample-po-modal-fruits-salad.component.ts b/projects/ui/src/lib/components/po-modal/samples/sample-po-modal-fruits-salad/sample-po-modal-fruits-salad.component.ts index 05eac0fe71..df3d450366 100644 --- a/projects/ui/src/lib/components/po-modal/samples/sample-po-modal-fruits-salad/sample-po-modal-fruits-salad.component.ts +++ b/projects/ui/src/lib/components/po-modal/samples/sample-po-modal-fruits-salad/sample-po-modal-fruits-salad.component.ts @@ -1,4 +1,4 @@ -import { Component, ViewChild, inject } from '@angular/core'; +import { Component, ViewChild, inject, ChangeDetectionStrategy } from '@angular/core'; import { NgForm } from '@angular/forms'; import { PoCheckboxGroupOption, PoComboOption } from '@po-ui/ng-components'; @@ -10,6 +10,7 @@ import { PoModalComponent } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-modal-fruits-salad', templateUrl: './sample-po-modal-fruits-salad.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoModalFruitsSaladComponent { diff --git a/projects/ui/src/lib/components/po-modal/samples/sample-po-modal-labs/sample-po-modal-labs.component.ts b/projects/ui/src/lib/components/po-modal/samples/sample-po-modal-labs/sample-po-modal-labs.component.ts index 07b080ea88..7d849808d3 100644 --- a/projects/ui/src/lib/components/po-modal/samples/sample-po-modal-labs/sample-po-modal-labs.component.ts +++ b/projects/ui/src/lib/components/po-modal/samples/sample-po-modal-labs/sample-po-modal-labs.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, ViewChild } from '@angular/core'; +import { Component, OnInit, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption, @@ -11,6 +11,7 @@ import { @Component({ selector: 'sample-po-modal-labs', templateUrl: './sample-po-modal-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoModalLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-navbar/po-navbar-actions/po-navbar-action-popup/po-navbar-action-popup.component.ts b/projects/ui/src/lib/components/po-navbar/po-navbar-actions/po-navbar-action-popup/po-navbar-action-popup.component.ts index 5f94d3b794..6695d1dba1 100644 --- a/projects/ui/src/lib/components/po-navbar/po-navbar-actions/po-navbar-action-popup/po-navbar-action-popup.component.ts +++ b/projects/ui/src/lib/components/po-navbar/po-navbar-actions/po-navbar-action-popup/po-navbar-action-popup.component.ts @@ -1,10 +1,11 @@ -import { Component, Input } from '@angular/core'; +import { Component, Input, ChangeDetectionStrategy } from '@angular/core'; import { PoNavbarIconAction } from '../../interfaces/po-navbar-icon-action.interface'; @Component({ selector: 'po-navbar-action-popup', templateUrl: './po-navbar-action-popup.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoNavbarActionPopupComponent { diff --git a/projects/ui/src/lib/components/po-navbar/po-navbar-actions/po-navbar-action/po-navbar-action.component.spec.ts b/projects/ui/src/lib/components/po-navbar/po-navbar-actions/po-navbar-action/po-navbar-action.component.spec.ts index c306a017ae..1bdc127a5c 100644 --- a/projects/ui/src/lib/components/po-navbar/po-navbar-actions/po-navbar-action/po-navbar-action.component.spec.ts +++ b/projects/ui/src/lib/components/po-navbar/po-navbar-actions/po-navbar-action/po-navbar-action.component.spec.ts @@ -4,7 +4,7 @@ import { RouterModule } from '@angular/router'; import { PoUtils as utils } from '../../../../utils/util'; import { PoNavbarActionComponent } from './po-navbar-action.component'; -import { PoTooltipModule } from 'projects/ui/src/lib/directives'; +import { PoTooltipModule } from '../../../../directives'; describe('PoNavbarActionComponent:', () => { let component: PoNavbarActionComponent; diff --git a/projects/ui/src/lib/components/po-navbar/po-navbar-actions/po-navbar-action/po-navbar-action.component.ts b/projects/ui/src/lib/components/po-navbar/po-navbar-actions/po-navbar-action/po-navbar-action.component.ts index 0df4588f9d..ec69979937 100644 --- a/projects/ui/src/lib/components/po-navbar/po-navbar-actions/po-navbar-action/po-navbar-action.component.ts +++ b/projects/ui/src/lib/components/po-navbar/po-navbar-actions/po-navbar-action/po-navbar-action.component.ts @@ -1,4 +1,4 @@ -import { Component, Input, TemplateRef, ViewContainerRef, inject } from '@angular/core'; +import { Component, Input, TemplateRef, ViewContainerRef, inject, ChangeDetectionStrategy } from '@angular/core'; import { Router } from '@angular/router'; import { isExternalLink, PoUtils } from '../../../../utils/util'; @@ -6,6 +6,7 @@ import { isExternalLink, PoUtils } from '../../../../utils/util'; @Component({ selector: 'po-navbar-action', templateUrl: './po-navbar-action.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoNavbarActionComponent { diff --git a/projects/ui/src/lib/components/po-navbar/po-navbar-actions/po-navbar-actions.component.ts b/projects/ui/src/lib/components/po-navbar/po-navbar-actions/po-navbar-actions.component.ts index e1aa721393..d9c824b755 100644 --- a/projects/ui/src/lib/components/po-navbar/po-navbar-actions/po-navbar-actions.component.ts +++ b/projects/ui/src/lib/components/po-navbar/po-navbar-actions/po-navbar-actions.component.ts @@ -1,10 +1,11 @@ -import { Component, Input } from '@angular/core'; +import { Component, Input, ChangeDetectionStrategy } from '@angular/core'; import { PoNavbarIconAction } from '../interfaces/po-navbar-icon-action.interface'; @Component({ selector: 'po-navbar-actions', templateUrl: './po-navbar-actions.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoNavbarActionsComponent { diff --git a/projects/ui/src/lib/components/po-navbar/po-navbar-item-navigation/po-navbar-item-navigation-icon/po-navbar-item-navigation-icon.component.spec.ts b/projects/ui/src/lib/components/po-navbar/po-navbar-item-navigation/po-navbar-item-navigation-icon/po-navbar-item-navigation-icon.component.spec.ts index 44ed1cd3af..924cfdb3a5 100644 --- a/projects/ui/src/lib/components/po-navbar/po-navbar-item-navigation/po-navbar-item-navigation-icon/po-navbar-item-navigation-icon.component.spec.ts +++ b/projects/ui/src/lib/components/po-navbar/po-navbar-item-navigation/po-navbar-item-navigation-icon/po-navbar-item-navigation-icon.component.spec.ts @@ -1,6 +1,6 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { configureTestSuite } from 'projects/ui/src/lib/util-test/util-expect.spec'; +import { configureTestSuite } from '../../../../util-test/util-expect.spec'; import { PoNavbarItemNavigationIconComponent } from './po-navbar-item-navigation-icon.component'; diff --git a/projects/ui/src/lib/components/po-navbar/po-navbar-item-navigation/po-navbar-item-navigation-icon/po-navbar-item-navigation-icon.component.ts b/projects/ui/src/lib/components/po-navbar/po-navbar-item-navigation/po-navbar-item-navigation-icon/po-navbar-item-navigation-icon.component.ts index bd6d7c44b2..5df57be799 100644 --- a/projects/ui/src/lib/components/po-navbar/po-navbar-item-navigation/po-navbar-item-navigation-icon/po-navbar-item-navigation-icon.component.ts +++ b/projects/ui/src/lib/components/po-navbar/po-navbar-item-navigation/po-navbar-item-navigation-icon/po-navbar-item-navigation-icon.component.ts @@ -1,8 +1,9 @@ -import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { Component, EventEmitter, Input, Output, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'po-navbar-item-navigation-icon', templateUrl: './po-navbar-item-navigation-icon.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoNavbarItemNavigationIconComponent { diff --git a/projects/ui/src/lib/components/po-navbar/po-navbar-item-navigation/po-navbar-item-navigation.component.spec.ts b/projects/ui/src/lib/components/po-navbar/po-navbar-item-navigation/po-navbar-item-navigation.component.spec.ts index e70a211dc6..ebc035db83 100644 --- a/projects/ui/src/lib/components/po-navbar/po-navbar-item-navigation/po-navbar-item-navigation.component.spec.ts +++ b/projects/ui/src/lib/components/po-navbar/po-navbar-item-navigation/po-navbar-item-navigation.component.spec.ts @@ -1,6 +1,6 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { configureTestSuite } from 'projects/ui/src/lib/util-test/util-expect.spec'; +import { configureTestSuite } from '../../../util-test/util-expect.spec'; import { PoNavbarItemNavigationComponent } from './po-navbar-item-navigation.component'; import { PoNavbarItemNavigationIconComponent } from './po-navbar-item-navigation-icon/po-navbar-item-navigation-icon.component'; diff --git a/projects/ui/src/lib/components/po-navbar/po-navbar-item-navigation/po-navbar-item-navigation.component.ts b/projects/ui/src/lib/components/po-navbar/po-navbar-item-navigation/po-navbar-item-navigation.component.ts index 3db8a3b678..7d074b3983 100644 --- a/projects/ui/src/lib/components/po-navbar/po-navbar-item-navigation/po-navbar-item-navigation.component.ts +++ b/projects/ui/src/lib/components/po-navbar/po-navbar-item-navigation/po-navbar-item-navigation.component.ts @@ -1,8 +1,9 @@ -import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { Component, EventEmitter, Input, Output, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'po-navbar-item-navigation', templateUrl: './po-navbar-item-navigation.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoNavbarItemNavigationComponent { diff --git a/projects/ui/src/lib/components/po-navbar/po-navbar-items/po-navbar-item/po-navbar-item.component.ts b/projects/ui/src/lib/components/po-navbar/po-navbar-items/po-navbar-item/po-navbar-item.component.ts index adbb5d0ee1..390a10c943 100644 --- a/projects/ui/src/lib/components/po-navbar/po-navbar-items/po-navbar-item/po-navbar-item.component.ts +++ b/projects/ui/src/lib/components/po-navbar/po-navbar-items/po-navbar-item/po-navbar-item.component.ts @@ -1,4 +1,4 @@ -import { Component, Input, EventEmitter, Output } from '@angular/core'; +import { Component, Input, EventEmitter, Output, ChangeDetectionStrategy } from '@angular/core'; import { PoNavbarItem } from '../../interfaces/po-navbar-item.interface'; @@ -7,6 +7,7 @@ import { isExternalLink } from '../../../../utils/util'; @Component({ selector: 'po-navbar-item', templateUrl: './po-navbar-item.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoNavbarItemComponent { diff --git a/projects/ui/src/lib/components/po-navbar/po-navbar-items/po-navbar-items.component.ts b/projects/ui/src/lib/components/po-navbar/po-navbar-items/po-navbar-items.component.ts index e189ed2588..e64ecc3722 100644 --- a/projects/ui/src/lib/components/po-navbar/po-navbar-items/po-navbar-items.component.ts +++ b/projects/ui/src/lib/components/po-navbar/po-navbar-items/po-navbar-items.component.ts @@ -7,7 +7,8 @@ import { QueryList, ViewChild, ViewChildren, - inject + inject, + ChangeDetectionStrategy } from '@angular/core'; import { NavigationCancel, NavigationEnd, Router } from '@angular/router'; @@ -19,6 +20,7 @@ import { PoNavbarItemComponent } from './po-navbar-item/po-navbar-item.component @Component({ selector: 'po-navbar-items', templateUrl: './po-navbar-items.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoNavbarItemsComponent implements OnInit, OnDestroy { diff --git a/projects/ui/src/lib/components/po-navbar/po-navbar-logo/po-navbar-logo.component.ts b/projects/ui/src/lib/components/po-navbar/po-navbar-logo/po-navbar-logo.component.ts index bb8feb7689..b4fedaf86b 100644 --- a/projects/ui/src/lib/components/po-navbar/po-navbar-logo/po-navbar-logo.component.ts +++ b/projects/ui/src/lib/components/po-navbar/po-navbar-logo/po-navbar-logo.component.ts @@ -1,8 +1,9 @@ -import { Component, Input } from '@angular/core'; +import { Component, Input, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'po-navbar-logo', templateUrl: './po-navbar-logo.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoNavbarLogoComponent { diff --git a/projects/ui/src/lib/components/po-navbar/po-navbar.component.spec.ts b/projects/ui/src/lib/components/po-navbar/po-navbar.component.spec.ts index 858a3580d6..e5c80d0a7e 100644 --- a/projects/ui/src/lib/components/po-navbar/po-navbar.component.spec.ts +++ b/projects/ui/src/lib/components/po-navbar/po-navbar.component.spec.ts @@ -9,10 +9,9 @@ import { PoNavbarItemNavigationModule } from './po-navbar-item-navigation/po-nav import { PoMenuModule } from '../po-menu/po-menu.module'; import { PoNavbarLogoComponent } from './po-navbar-logo/po-navbar-logo.component'; import { PoNavbarComponent } from './po-navbar.component'; -import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; -import { changeBrowserInnerWidth } from 'projects/templates/src/lib/util-test/util-expect.spec'; +import { changeBrowserInnerWidth } from '../../../../../templates/src/lib/util-test/util-expect.spec'; import { provideHttpClientTesting } from '@angular/common/http/testing'; -import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; describe('PoNavbarComponent:', () => { let component: PoNavbarComponent; @@ -22,14 +21,13 @@ describe('PoNavbarComponent:', () => { await TestBed.configureTestingModule({ declarations: [PoNavbarComponent, PoNavbarLogoComponent], imports: [ - BrowserAnimationsModule, PoNavbarActionsModule, PoNavbarItemsModule, PoNavbarItemNavigationModule, PoMenuModule, RouterModule.forRoot([], {}) ], - providers: [provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting()] + providers: [provideHttpClient(withXhr(), withInterceptorsFromDi()), provideHttpClientTesting()] }).compileComponents(); fixture = TestBed.createComponent(PoNavbarComponent); @@ -294,24 +292,39 @@ describe('PoNavbarComponent:', () => { expect(component['allNavbarItemsWidth'].call(fakeThis)).toBe(35); }); - it(`animate: should call 'buildTransitionAnimation' with offset if has elements`, () => { + it(`animate: should call element.animate with negative offset`, () => { const offset = 400; - spyOn(component, 'buildTransitionAnimation').and.callThrough(); + spyOn(component.navbarItems.navbarItemsContainer.nativeElement, 'animate').and.returnValue({ cancel: () => {} }); component['animate'](offset); - expect(component['buildTransitionAnimation']).toHaveBeenCalledWith(offset); + expect(component.navbarItems.navbarItemsContainer.nativeElement.animate).toHaveBeenCalledWith( + [{ transform: 'translateX(0px)' }, { transform: 'translateX(-400px)' }], + { duration: 250, easing: 'ease', fill: 'forwards' } + ); }); - it(`buildTransitionAnimation: should call builder`, () => { - const offset = 400; + it(`animate: should cancel previous animation before starting new one`, () => { + const cancelSpy = jasmine.createSpy('cancel'); + component['currentAnimation'] = { cancel: cancelSpy } as any; + spyOn(component.navbarItems.navbarItemsContainer.nativeElement, 'animate').and.returnValue({ cancel: () => {} }); + + component['animate'](200); + + expect(cancelSpy).toHaveBeenCalled(); + }); - spyOn(component['builder'], 'build').and.callThrough(); + it(`animate: should track previousAnimatedOffset for smooth transitions`, () => { + spyOn(component.navbarItems.navbarItemsContainer.nativeElement, 'animate').and.returnValue({ cancel: () => {} }); - component['buildTransitionAnimation'](offset); + component['animate'](400); + component['animate'](0); - expect(component['builder'].build).toHaveBeenCalled(); + expect(component.navbarItems.navbarItemsContainer.nativeElement.animate).toHaveBeenCalledWith( + [{ transform: 'translateX(-400px)' }, { transform: 'translateX(0px)' }], + { duration: 250, easing: 'ease', fill: 'forwards' } + ); }); describe('changeNavbarMenuItems', () => { diff --git a/projects/ui/src/lib/components/po-navbar/po-navbar.component.ts b/projects/ui/src/lib/components/po-navbar/po-navbar.component.ts index 3c97b73eb1..26714a39a6 100644 --- a/projects/ui/src/lib/components/po-navbar/po-navbar.component.ts +++ b/projects/ui/src/lib/components/po-navbar/po-navbar.component.ts @@ -7,9 +7,9 @@ import { OnInit, Renderer2, ViewChild, - inject + inject, + ChangeDetectionStrategy } from '@angular/core'; -import { animate, AnimationBuilder, AnimationFactory, AnimationPlayer, keyframes, style } from '@angular/animations'; import { delay, filter, finalize } from 'rxjs/operators'; import { Subscription } from 'rxjs'; @@ -27,7 +27,6 @@ import { PoNavbarItemsComponent } from './po-navbar-items/po-navbar-items.compon const poNavbarNavigationWidth = 88; const poNavbarMenuMedia = 768; const poNavbarMatchMedia = `(max-width: ${poNavbarMenuMedia}px)`; -const poNavbarTiming = '250ms ease'; /** * @deprecated v23.x.x use `po-header` @@ -37,11 +36,11 @@ const poNavbarTiming = '250ms ease'; @Component({ selector: 'po-navbar', templateUrl: './po-navbar.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoNavbarComponent extends PoNavbarBaseComponent implements AfterViewInit, OnDestroy, OnInit { private readonly renderer = inject(Renderer2); - private readonly builder = inject(AnimationBuilder); private readonly changeDetector = inject(ChangeDetectorRef); private readonly menuGlobalService = inject(PoMenuGlobalService); @@ -60,7 +59,8 @@ export class PoNavbarComponent extends PoNavbarBaseComponent implements AfterVie private readonly id = uuid(); private mediaQuery: any; private offset: number = 0; - private player: AnimationPlayer; + private currentAnimation: Animation; + private previousAnimatedOffset: number = 0; private readonly menuItems: Array; private previousMenuComponentId; private previousMenusItems = []; @@ -178,14 +178,18 @@ export class PoNavbarComponent extends PoNavbarBaseComponent implements AfterVie } private animate(offset: number) { - const animation: AnimationFactory = this.buildTransitionAnimation(offset); + const element = this.navbarItems.navbarItemsContainer.nativeElement; - this.player = animation.create(this.navbarItems.navbarItemsContainer.nativeElement); - this.player.play(); - } + if (this.currentAnimation) { + this.currentAnimation.cancel(); + } + + this.currentAnimation = element.animate( + [{ transform: `translateX(${-this.previousAnimatedOffset}px)` }, { transform: `translateX(${-offset}px)` }], + { duration: 250, easing: 'ease', fill: 'forwards' } + ); - private buildTransitionAnimation(offset: number) { - return this.builder.build([animate(poNavbarTiming, keyframes([style({ transform: `translateX(${-offset}px)` })]))]); + this.previousAnimatedOffset = offset; } private changeNavbarMenuItems(isCollapsedMedia: any, navbarItems: Array, label: string) { diff --git a/projects/ui/src/lib/components/po-navbar/po-navbar.module.ts b/projects/ui/src/lib/components/po-navbar/po-navbar.module.ts index dfe526a857..a41da5e5c6 100644 --- a/projects/ui/src/lib/components/po-navbar/po-navbar.module.ts +++ b/projects/ui/src/lib/components/po-navbar/po-navbar.module.ts @@ -19,44 +19,6 @@ import { PoNavbarComponent } from './po-navbar.component'; * > Esse componente está **depreciado** e será removido na `v23.x.x`. Recomendamos utilizar o componente * [po-header](https://po-ui.io/documentation/po-header), que oferece compatibilidade com todas as funcionalidades do * `po-navbar`, além de maior flexibilidade, usabilidade e acessibilidade. - * > - * > Para o correto funcionamento do componente `po-navbar`, deve ser importado o módulo `BrowserAnimationsModule` no - * módulo principal da sua aplicação. - * - * Módulo da aplicação: - * ``` - * import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; - * import { PoModule } from '@po-ui/ng-components'; - * ... - * - * @NgModule({ - * imports: [ - * BrowserModule, - * BrowserAnimationsModule, - * ... - * PoModule - * ], - * declarations: [ - * AppComponent, - * ... - * ], - * providers: [], - * bootstrap: [AppComponent] - * }) - * export class AppModule { } - * ``` - * - * Em aplicações Standalone, utilize a seguinte configuração para o bootstrap: - * - * ``` - * import { bootstrapApplication } from '@angular/platform-browser'; - * import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; - * import { AppComponent } from './app.component'; - * - * bootstrapApplication(AppComponent, { - * providers: [importProvidersFrom(BrowserAnimationsModule)] - * }).catch(err => console.error(err)); - * ``` */ @NgModule({ imports: [ diff --git a/projects/ui/src/lib/components/po-overlay/po-overlay.component.ts b/projects/ui/src/lib/components/po-overlay/po-overlay.component.ts index ff55394c33..7e42af99f0 100644 --- a/projects/ui/src/lib/components/po-overlay/po-overlay.component.ts +++ b/projects/ui/src/lib/components/po-overlay/po-overlay.component.ts @@ -1,9 +1,10 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoOverlayBaseComponent } from './po-overlay-base.component'; @Component({ selector: 'po-overlay', templateUrl: './po-overlay.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoOverlayComponent extends PoOverlayBaseComponent {} diff --git a/projects/ui/src/lib/components/po-page/po-page-content/po-page-content.component.spec.ts b/projects/ui/src/lib/components/po-page/po-page-content/po-page-content.component.spec.ts index 9defd1ad77..b24052f8ec 100644 --- a/projects/ui/src/lib/components/po-page/po-page-content/po-page-content.component.spec.ts +++ b/projects/ui/src/lib/components/po-page/po-page-content/po-page-content.component.spec.ts @@ -93,5 +93,53 @@ describe('PoPageContentComponent:', () => { expect(component.height).toBe('90%'); })); + + it('should set height in pixels when calculated height is positive without .po-page', fakeAsync(() => { + spyOn(fixture.nativeElement, 'getBoundingClientRect').and.returnValue({ + top: 100, + bottom: 200, + left: 0, + right: 0, + width: 0, + height: 0 + }); + + component.recalculateHeaderSize(); + tick(100); + + const expectedHeight = window.innerHeight - 100; + expect(expectedHeight).toBeGreaterThan(0); + expect(component.height).toBe(`${expectedHeight}px`); + })); + + it('should fallback to 90% when calculated height is zero or negative with .po-page ancestor', fakeAsync(() => { + const poPage = document.createElement('div'); + poPage.classList.add('po-page'); + poPage.appendChild(fixture.nativeElement); + document.body.appendChild(poPage); + + // Sem po-page-header, contentTop vem do topo do .po-page. Forçamos um top + // maior que a altura da janela para que newHeight <= 0 e caia no fallback, + // cobrindo o ramo '90%' do ternário no caminho com .po-page. + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion + spyOn(poPage, 'getBoundingClientRect').and.returnValue({ + top: window.innerHeight + 100, + bottom: window.innerHeight + 200, + left: 0, + right: 0, + width: 0, + height: 0, + x: 0, + y: 0, + toJSON: () => {} + } as DOMRect); + + component.recalculateHeaderSize(); + tick(100); + + expect(component.height).toBe('90%'); + + document.body.removeChild(poPage); + })); }); }); diff --git a/projects/ui/src/lib/components/po-page/po-page-content/po-page-content.component.ts b/projects/ui/src/lib/components/po-page/po-page-content/po-page-content.component.ts index 50a8edf867..666554d64f 100644 --- a/projects/ui/src/lib/components/po-page/po-page-content/po-page-content.component.ts +++ b/projects/ui/src/lib/components/po-page/po-page-content/po-page-content.component.ts @@ -1,12 +1,13 @@ import { AfterViewInit, + ChangeDetectionStrategy, + ChangeDetectorRef, Component, ElementRef, NgZone, OnDestroy, Renderer2, - inject, - ChangeDetectorRef + inject } from '@angular/core'; import { PoPageContentBaseComponent } from './po-page-content-base.component'; @@ -19,6 +20,7 @@ import { PoPageContentBaseComponent } from './po-page-content-base.component'; @Component({ selector: 'po-page-content', templateUrl: './po-page-content.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoPageContentComponent extends PoPageContentBaseComponent implements AfterViewInit, OnDestroy { diff --git a/projects/ui/src/lib/components/po-page/po-page-default/po-page-default.component.spec.ts b/projects/ui/src/lib/components/po-page/po-page-default/po-page-default.component.spec.ts index 483e535a42..2300cfbe22 100644 --- a/projects/ui/src/lib/components/po-page/po-page-default/po-page-default.component.spec.ts +++ b/projects/ui/src/lib/components/po-page/po-page-default/po-page-default.component.spec.ts @@ -1,8 +1,8 @@ import { CommonModule } from '@angular/common'; -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; -import { Router } from '@angular/router'; +import { provideLocationMocks } from '@angular/common/testing'; +import { Router, RouterModule } from '@angular/router'; import { changeBrowserInnerWidth } from '../../../util-test/util-expect.spec'; @@ -28,6 +28,7 @@ eventResize.initEvent('resize', false, true); @Component({ template: ` `, + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) class MobileComponent { @@ -61,7 +62,7 @@ describe('PoPageDefaultComponent mobile', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [CommonModule, RouterTestingModule.withRoutes([]), PoBreadcrumbModule, PoButtonModule, PoDropdownModule], + imports: [CommonModule, RouterModule.forRoot([]), PoBreadcrumbModule, PoButtonModule, PoDropdownModule], declarations: [ MobileComponent, PoPageDefaultComponent, @@ -69,7 +70,7 @@ describe('PoPageDefaultComponent mobile', () => { PoPageContentComponent, PoPageHeaderComponent ], - providers: [{ provide: Router, useValue: routerStub }] + providers: [provideLocationMocks(), { provide: Router, useValue: routerStub }] }).compileComponents(); fixture = TestBed.createComponent(PoPageDefaultComponent); @@ -140,6 +141,7 @@ describe('PoPageDefaultComponent mobile', () => { @Component({ template: ` `, + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) class DesktopComponent { @@ -161,7 +163,7 @@ describe('PoPageDefaultComponent desktop', () => { await TestBed.configureTestingModule({ imports: [ CommonModule, - RouterTestingModule.withRoutes([]), + RouterModule.forRoot([]), PoBreadcrumbModule, PoButtonModule, PoDropdownModule, @@ -173,7 +175,8 @@ describe('PoPageDefaultComponent desktop', () => { PoPageComponent, PoPageContentComponent, PoPageHeaderComponent - ] + ], + providers: [provideLocationMocks()] }).compileComponents(); fixture = TestBed.createComponent(PoPageDefaultComponent); @@ -682,9 +685,9 @@ describe('PoPageDefaultComponent i18n fallback', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [CommonModule, RouterTestingModule.withRoutes([]), PoBreadcrumbModule, PoButtonModule, PoDropdownModule], + imports: [CommonModule, RouterModule.forRoot([]), PoBreadcrumbModule, PoButtonModule, PoDropdownModule], declarations: [PoPageDefaultComponent, PoPageComponent, PoPageContentComponent, PoPageHeaderComponent], - providers: [{ provide: PoLanguageService, useValue: { getShortLanguage: () => 'fr' } }] + providers: [provideLocationMocks(), { provide: PoLanguageService, useValue: { getShortLanguage: () => 'fr' } }] }).compileComponents(); fixture = TestBed.createComponent(PoPageDefaultComponent); diff --git a/projects/ui/src/lib/components/po-page/po-page-default/po-page-default.component.ts b/projects/ui/src/lib/components/po-page/po-page-default/po-page-default.component.ts index eccc9fb89e..b5b06433ad 100644 --- a/projects/ui/src/lib/components/po-page/po-page-default/po-page-default.component.ts +++ b/projects/ui/src/lib/components/po-page/po-page-default/po-page-default.component.ts @@ -1,4 +1,13 @@ -import { AfterContentInit, Component, inject, OnChanges, OnDestroy, Renderer2, SimpleChange } from '@angular/core'; +import { + AfterContentInit, + Component, + inject, + OnChanges, + OnDestroy, + Renderer2, + SimpleChange, + ChangeDetectionStrategy +} from '@angular/core'; import { Router } from '@angular/router'; import { PoLanguageService } from './../../../services/po-language/po-language.service'; @@ -39,6 +48,7 @@ import { backNavigationAriaLabels, PoPageDefaultBaseComponent } from './po-page- @Component({ selector: 'po-page-default', templateUrl: './po-page-default.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoPageDefaultComponent diff --git a/projects/ui/src/lib/components/po-page/po-page-default/samples/sample-po-page-default-basic/sample-po-page-default-basic.component.ts b/projects/ui/src/lib/components/po-page/po-page-default/samples/sample-po-page-default-basic/sample-po-page-default-basic.component.ts index 142cbb2f3a..a4cc8edbdb 100644 --- a/projects/ui/src/lib/components/po-page/po-page-default/samples/sample-po-page-default-basic/sample-po-page-default-basic.component.ts +++ b/projects/ui/src/lib/components/po-page/po-page-default/samples/sample-po-page-default-basic/sample-po-page-default-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-page-default-basic', templateUrl: './sample-po-page-default-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPageDefaultBasicComponent {} diff --git a/projects/ui/src/lib/components/po-page/po-page-default/samples/sample-po-page-default-dashboard/sample-po-page-default-dashboard.component.ts b/projects/ui/src/lib/components/po-page/po-page-default/samples/sample-po-page-default-dashboard/sample-po-page-default-dashboard.component.ts index aa19fc9036..96535e32c1 100644 --- a/projects/ui/src/lib/components/po-page/po-page-default/samples/sample-po-page-default-dashboard/sample-po-page-default-dashboard.component.ts +++ b/projects/ui/src/lib/components/po-page/po-page-default/samples/sample-po-page-default-dashboard/sample-po-page-default-dashboard.component.ts @@ -1,4 +1,4 @@ -import { Component, ViewChild, OnInit, inject } from '@angular/core'; +import { Component, ViewChild, OnInit, inject, ChangeDetectionStrategy } from '@angular/core'; import { NgForm } from '@angular/forms'; import { @@ -18,6 +18,7 @@ import { SampleDashboardService } from './sample-po-page-default-dashboard.servi templateUrl: './sample-po-page-default-dashboard.component.html', styleUrls: ['./sample-po-page-default-dashboard.component.css'], providers: [SampleDashboardService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPageDefaultDashboardComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-page/po-page-default/samples/sample-po-page-default-labs/sample-po-page-default-labs.component.ts b/projects/ui/src/lib/components/po-page/po-page-default/samples/sample-po-page-default-labs/sample-po-page-default-labs.component.ts index 2c71225fab..32cd641cc7 100644 --- a/projects/ui/src/lib/components/po-page/po-page-default/samples/sample-po-page-default-labs/sample-po-page-default-labs.component.ts +++ b/projects/ui/src/lib/components/po-page/po-page-default/samples/sample-po-page-default-labs/sample-po-page-default-labs.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, inject } from '@angular/core'; +import { Component, OnInit, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoBreadcrumb, @@ -20,6 +20,7 @@ interface EditableAction extends PoPageAction { @Component({ selector: 'sample-po-page-default-labs', templateUrl: './sample-po-page-default-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPageDefaultLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-page/po-page-detail/po-page-detail.component.spec.ts b/projects/ui/src/lib/components/po-page/po-page-detail/po-page-detail.component.spec.ts index c35bb78065..a8dd7d51b1 100644 --- a/projects/ui/src/lib/components/po-page/po-page-detail/po-page-detail.component.spec.ts +++ b/projects/ui/src/lib/components/po-page/po-page-detail/po-page-detail.component.spec.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { ComponentFixture, fakeAsync, TestBed } from '@angular/core/testing'; import { of } from 'rxjs'; @@ -17,6 +17,7 @@ import { PoPageHeaderComponent } from '../po-page-header/po-page-header.componen template: ` `, + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) class ContainerComponent { diff --git a/projects/ui/src/lib/components/po-page/po-page-detail/po-page-detail.component.ts b/projects/ui/src/lib/components/po-page/po-page-detail/po-page-detail.component.ts index 93b52a3186..0b9d43980e 100644 --- a/projects/ui/src/lib/components/po-page/po-page-detail/po-page-detail.component.ts +++ b/projects/ui/src/lib/components/po-page/po-page-detail/po-page-detail.component.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoPageDetailBaseComponent } from './po-page-detail-base.component'; @@ -25,6 +25,7 @@ import { PoPageDetailBaseComponent } from './po-page-detail-base.component'; @Component({ selector: 'po-page-detail', templateUrl: './po-page-detail.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoPageDetailComponent extends PoPageDetailBaseComponent { diff --git a/projects/ui/src/lib/components/po-page/po-page-detail/samples/sample-po-page-detail-basic/sample-po-page-detail-basic.component.ts b/projects/ui/src/lib/components/po-page/po-page-detail/samples/sample-po-page-detail-basic/sample-po-page-detail-basic.component.ts index b4fd857a7d..e650a57435 100644 --- a/projects/ui/src/lib/components/po-page/po-page-detail/samples/sample-po-page-detail-basic/sample-po-page-detail-basic.component.ts +++ b/projects/ui/src/lib/components/po-page/po-page-detail/samples/sample-po-page-detail-basic/sample-po-page-detail-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-page-detail-basic', templateUrl: './sample-po-page-detail-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPageDetailBasicComponent {} diff --git a/projects/ui/src/lib/components/po-page/po-page-detail/samples/sample-po-page-detail-labs/sample-po-page-detail-labs.component.ts b/projects/ui/src/lib/components/po-page/po-page-detail/samples/sample-po-page-detail-labs/sample-po-page-detail-labs.component.ts index 0be8673aea..08aa83b8c7 100644 --- a/projects/ui/src/lib/components/po-page/po-page-detail/samples/sample-po-page-detail-labs/sample-po-page-detail-labs.component.ts +++ b/projects/ui/src/lib/components/po-page/po-page-detail/samples/sample-po-page-detail-labs/sample-po-page-detail-labs.component.ts @@ -1,10 +1,11 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoBreadcrumb, PoBreadcrumbItem, PoPageDetailLiterals, PoRadioGroupOption } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-page-detail-labs', templateUrl: './sample-po-page-detail-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPageDetailLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-page/po-page-detail/samples/sample-po-page-detail-user/sample-po-page-detail-user.component.ts b/projects/ui/src/lib/components/po-page/po-page-detail/samples/sample-po-page-detail-user/sample-po-page-detail-user.component.ts index 25151dc0aa..0081f741f8 100644 --- a/projects/ui/src/lib/components/po-page/po-page-detail/samples/sample-po-page-detail-user/sample-po-page-detail-user.component.ts +++ b/projects/ui/src/lib/components/po-page/po-page-detail/samples/sample-po-page-detail-user/sample-po-page-detail-user.component.ts @@ -1,4 +1,4 @@ -import { Component, inject } from '@angular/core'; +import { Component, inject, ChangeDetectionStrategy } from '@angular/core'; import { Router } from '@angular/router'; import { PoBreadcrumb } from '@po-ui/ng-components'; @@ -6,6 +6,7 @@ import { PoBreadcrumb } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-page-detail-user', templateUrl: './sample-po-page-detail-user.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPageDetailUserComponent { diff --git a/projects/ui/src/lib/components/po-page/po-page-edit/po-page-edit.component.spec.ts b/projects/ui/src/lib/components/po-page/po-page-edit/po-page-edit.component.spec.ts index 18aa831eab..702b76b541 100644 --- a/projects/ui/src/lib/components/po-page/po-page-edit/po-page-edit.component.spec.ts +++ b/projects/ui/src/lib/components/po-page/po-page-edit/po-page-edit.component.spec.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { of } from 'rxjs'; @@ -17,6 +17,7 @@ import { PoPageHeaderComponent } from '../po-page-header/po-page-header.componen template: ` `, + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) class ContainerComponent { diff --git a/projects/ui/src/lib/components/po-page/po-page-edit/po-page-edit.component.ts b/projects/ui/src/lib/components/po-page/po-page-edit/po-page-edit.component.ts index e3124cf587..4f6547895e 100644 --- a/projects/ui/src/lib/components/po-page/po-page-edit/po-page-edit.component.ts +++ b/projects/ui/src/lib/components/po-page/po-page-edit/po-page-edit.component.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoPageEditBaseComponent } from './po-page-edit-base.component'; @@ -25,6 +25,7 @@ import { PoPageEditBaseComponent } from './po-page-edit-base.component'; @Component({ selector: 'po-page-edit', templateUrl: './po-page-edit.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoPageEditComponent extends PoPageEditBaseComponent { diff --git a/projects/ui/src/lib/components/po-page/po-page-edit/samples/sample-po-page-edit-basic/sample-po-page-edit-basic.component.ts b/projects/ui/src/lib/components/po-page/po-page-edit/samples/sample-po-page-edit-basic/sample-po-page-edit-basic.component.ts index fe3e4c86fe..1e39651beb 100644 --- a/projects/ui/src/lib/components/po-page/po-page-edit/samples/sample-po-page-edit-basic/sample-po-page-edit-basic.component.ts +++ b/projects/ui/src/lib/components/po-page/po-page-edit/samples/sample-po-page-edit-basic/sample-po-page-edit-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-page-edit-basic', templateUrl: './sample-po-page-edit-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPageEditBasicComponent {} diff --git a/projects/ui/src/lib/components/po-page/po-page-edit/samples/sample-po-page-edit-labs/sample-po-page-edit-labs.component.ts b/projects/ui/src/lib/components/po-page/po-page-edit/samples/sample-po-page-edit-labs/sample-po-page-edit-labs.component.ts index facb11c0da..35dad6746e 100644 --- a/projects/ui/src/lib/components/po-page/po-page-edit/samples/sample-po-page-edit-labs/sample-po-page-edit-labs.component.ts +++ b/projects/ui/src/lib/components/po-page/po-page-edit/samples/sample-po-page-edit-labs/sample-po-page-edit-labs.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoBreadcrumb, PoBreadcrumbItem, PoCheckboxGroupOption, PoRadioGroupOption } from '@po-ui/ng-components'; @@ -7,6 +7,7 @@ import { PoPageEditLiterals } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-page-edit-labs', templateUrl: './sample-po-page-edit-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPageEditLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-page/po-page-edit/samples/sample-po-page-edit-user/sample-po-page-edit-user.component.ts b/projects/ui/src/lib/components/po-page/po-page-edit/samples/sample-po-page-edit-user/sample-po-page-edit-user.component.ts index e43edee766..d96f7a4287 100644 --- a/projects/ui/src/lib/components/po-page/po-page-edit/samples/sample-po-page-edit-user/sample-po-page-edit-user.component.ts +++ b/projects/ui/src/lib/components/po-page/po-page-edit/samples/sample-po-page-edit-user/sample-po-page-edit-user.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, ViewChild, inject } from '@angular/core'; +import { Component, OnInit, ViewChild, inject, ChangeDetectionStrategy } from '@angular/core'; import { NgForm } from '@angular/forms'; import { Router } from '@angular/router'; @@ -9,6 +9,7 @@ import { PoNotificationService } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-page-edit-user', templateUrl: './sample-po-page-edit-user.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPageEditUserComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-page/po-page-header/po-page-header.component.spec.ts b/projects/ui/src/lib/components/po-page/po-page-header/po-page-header.component.spec.ts index 143f73b8eb..4b1f72e295 100644 --- a/projects/ui/src/lib/components/po-page/po-page-header/po-page-header.component.spec.ts +++ b/projects/ui/src/lib/components/po-page/po-page-header/po-page-header.component.spec.ts @@ -1,15 +1,17 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { HttpClient, HttpHandler } from '@angular/common/http'; -import { Routes } from '@angular/router'; -import { RouterTestingModule } from '@angular/router/testing'; +import { RouterModule, Routes } from '@angular/router'; +import { provideLocationMocks } from '@angular/common/testing'; import { PoBreadcrumbModule } from '../../po-breadcrumb/po-breadcrumb.module'; import { PoHelperModule } from '../../po-helper/po-helper.module'; import { PoPageHeaderComponent } from './po-page-header.component'; @Component({ + selector: 'app-guides-header-test', template: 'Guides', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class GuidesComponent {} @@ -23,9 +25,9 @@ describe('PoPageHeaderComponent:', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [PoBreadcrumbModule, PoHelperModule, RouterTestingModule.withRoutes(routes)], + imports: [PoBreadcrumbModule, PoHelperModule, RouterModule.forRoot(routes)], declarations: [PoPageHeaderComponent, GuidesComponent], - providers: [HttpClient, HttpHandler] + providers: [HttpClient, HttpHandler, provideLocationMocks()] }).compileComponents(); fixture = TestBed.createComponent(PoPageHeaderComponent); diff --git a/projects/ui/src/lib/components/po-page/po-page-header/po-page-header.component.ts b/projects/ui/src/lib/components/po-page/po-page-header/po-page-header.component.ts index 854e108d42..fe21741e14 100644 --- a/projects/ui/src/lib/components/po-page/po-page-header/po-page-header.component.ts +++ b/projects/ui/src/lib/components/po-page/po-page-header/po-page-header.component.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoPageHeaderBaseComponent } from './po-page-header-base.component'; @@ -9,6 +9,7 @@ import { PoPageHeaderBaseComponent } from './po-page-header-base.component'; @Component({ selector: 'po-page-header', templateUrl: './po-page-header.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoPageHeaderComponent extends PoPageHeaderBaseComponent {} diff --git a/projects/ui/src/lib/components/po-page/po-page-list/po-page-list.component.html b/projects/ui/src/lib/components/po-page/po-page-list/po-page-list.component.html index 64eeb0ecb0..6d13635f80 100644 --- a/projects/ui/src/lib/components/po-page/po-page-list/po-page-list.component.html +++ b/projects/ui/src/lib/components/po-page/po-page-list/po-page-list.component.html @@ -108,9 +108,9 @@ @if (!!disclaimerGroup) { `, + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) class MobileComponent { @@ -67,7 +68,7 @@ describe('PoPageListComponent - Mobile:', () => { await TestBed.configureTestingModule({ imports: [ FormsModule, - RouterTestingModule.withRoutes([]), + RouterModule.forRoot([]), PoBreadcrumbModule, PoButtonModule, PoDisclaimerGroupModule, @@ -80,7 +81,7 @@ describe('PoPageListComponent - Mobile:', () => { PoPageHeaderComponent, PoPageContentComponent ], - providers: [{ provide: Router, useValue: routerStub }] + providers: [provideLocationMocks(), { provide: Router, useValue: routerStub }] }).compileComponents(); fixture = TestBed.createComponent(PoPageListComponent); @@ -122,6 +123,7 @@ describe('PoPageListComponent - Mobile:', () => { @Component({ template: ` `, + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) class DesktopComponent { @@ -156,7 +158,7 @@ describe('PoPageListComponent - Desktop:', () => { imports: [ FormsModule, ReactiveFormsModule, - RouterTestingModule.withRoutes([]), + RouterModule.forRoot([]), PoBreadcrumbModule, PoButtonModule, PoDisclaimerGroupModule, @@ -169,7 +171,7 @@ describe('PoPageListComponent - Desktop:', () => { PoPageHeaderComponent, PoPageContentComponent ], - providers: [{ provide: Router, useValue: routerStub }] + providers: [provideLocationMocks(), { provide: Router, useValue: routerStub }] }).compileComponents(); fixture = TestBed.createComponent(PoPageListComponent); diff --git a/projects/ui/src/lib/components/po-page/po-page-list/po-page-list.component.ts b/projects/ui/src/lib/components/po-page/po-page-list/po-page-list.component.ts index 20fa5c3cc5..b28c2309c2 100644 --- a/projects/ui/src/lib/components/po-page/po-page-list/po-page-list.component.ts +++ b/projects/ui/src/lib/components/po-page/po-page-list/po-page-list.component.ts @@ -10,7 +10,8 @@ import { SimpleChange, ViewChild, ViewContainerRef, - inject + inject, + ChangeDetectionStrategy } from '@angular/core'; import { Router } from '@angular/router'; @@ -47,6 +48,7 @@ import { PoPageListBaseComponent } from './po-page-list-base.component'; @Component({ selector: 'po-page-list', templateUrl: './po-page-list.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoPageListComponent diff --git a/projects/ui/src/lib/components/po-page/po-page-list/samples/sample-po-page-list-basic/sample-po-page-list-basic.component.ts b/projects/ui/src/lib/components/po-page/po-page-list/samples/sample-po-page-list-basic/sample-po-page-list-basic.component.ts index bdd88f1b99..1d350babea 100644 --- a/projects/ui/src/lib/components/po-page/po-page-list/samples/sample-po-page-list-basic/sample-po-page-list-basic.component.ts +++ b/projects/ui/src/lib/components/po-page/po-page-list/samples/sample-po-page-list-basic/sample-po-page-list-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-page-list-basic', templateUrl: './sample-po-page-list-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPageListBasicComponent {} diff --git a/projects/ui/src/lib/components/po-page/po-page-list/samples/sample-po-page-list-hiring-processes/sample-po-page-list-hiring-processes.component.ts b/projects/ui/src/lib/components/po-page/po-page-list/samples/sample-po-page-list-hiring-processes/sample-po-page-list-hiring-processes.component.ts index e82f319779..092ea49779 100644 --- a/projects/ui/src/lib/components/po-page/po-page-list/samples/sample-po-page-list-hiring-processes/sample-po-page-list-hiring-processes.component.ts +++ b/projects/ui/src/lib/components/po-page/po-page-list/samples/sample-po-page-list-hiring-processes/sample-po-page-list-hiring-processes.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, ViewChild, inject } from '@angular/core'; +import { Component, OnInit, ViewChild, inject, ChangeDetectionStrategy } from '@angular/core'; import { Router } from '@angular/router'; import { PoBreadcrumb } from '@po-ui/ng-components'; @@ -17,6 +17,7 @@ import { SamplePoPageListHiringProcessesService } from './sample-po-page-list-hi selector: 'sample-po-page-list-hiring-processes', templateUrl: './sample-po-page-list-hiring-processes.component.html', providers: [SamplePoPageListHiringProcessesService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPageListHiringProcessesComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-page/po-page-list/samples/sample-po-page-list-labs/sample-po-page-list-labs.component.ts b/projects/ui/src/lib/components/po-page/po-page-list/samples/sample-po-page-list-labs/sample-po-page-list-labs.component.ts index 26771dc5f9..69eb62ac0d 100644 --- a/projects/ui/src/lib/components/po-page/po-page-list/samples/sample-po-page-list-labs/sample-po-page-list-labs.component.ts +++ b/projects/ui/src/lib/components/po-page/po-page-list/samples/sample-po-page-list-labs/sample-po-page-list-labs.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, inject } from '@angular/core'; +import { Component, OnInit, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoBreadcrumb, @@ -13,6 +13,7 @@ import { PoNotificationService, PoPageAction, PoPageFilter, PoPageListLiterals } @Component({ selector: 'sample-po-page-list-labs', templateUrl: './sample-po-page-list-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPageListLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-page/po-page-slide/po-page-slide-base.component.ts b/projects/ui/src/lib/components/po-page/po-page-slide/po-page-slide-base.component.ts index 8b0dd6117d..94651bf9a0 100644 --- a/projects/ui/src/lib/components/po-page/po-page-slide/po-page-slide-base.component.ts +++ b/projects/ui/src/lib/components/po-page/po-page-slide/po-page-slide-base.component.ts @@ -15,45 +15,6 @@ import { PoPageSlideSize } from './po-page-slide-size.type'; * através do botão que encontra-se no cabeçalho do mesmo ou através do método * `#close()`. * - * > Para o correto funcionamento do componente `po-page-slide`, deve ser - * > importado o módulo `BrowserAnimationsModule` no módulo principal da sua - * > aplicação. - * - * Módulo da aplicação: - * ``` - * import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; - * import { PoModule } from '@po-ui/ng-components'; - * ... - * - * @NgModule({ - * imports: [ - * BrowserModule, - * BrowserAnimationsModule, - * ... - * PoModule - * ], - * declarations: [ - * AppComponent, - * ... - * ], - * providers: [], - * bootstrap: [AppComponent] - * }) - * export class AppModule { } - * ``` - * - * Em aplicações Standalone, utilize a seguinte configuração para o bootstrap: - * - * ``` - * import { bootstrapApplication } from '@angular/platform-browser'; - * import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; - * import { AppComponent } from './app.component'; - * - * bootstrapApplication(AppComponent, { - * providers: [importProvidersFrom(BrowserAnimationsModule)] - * }).catch(err => console.error(err)); - * ``` - * * Caso utilize componentes de field dentro do page-slide, recomenda-se o uso do [Grid System](https://po-ui.io/guides/grid-system). * * No rodapé é possível utilizar o componente [`PoPageSlideFooter`](/documentation/po-page-slide-footer) para customização do template. diff --git a/projects/ui/src/lib/components/po-page/po-page-slide/po-page-slide-footer/po-page-slide-footer.component.ts b/projects/ui/src/lib/components/po-page/po-page-slide/po-page-slide-footer/po-page-slide-footer.component.ts index f8b1f7a9ff..f5498d0e77 100644 --- a/projects/ui/src/lib/components/po-page/po-page-slide/po-page-slide-footer/po-page-slide-footer.component.ts +++ b/projects/ui/src/lib/components/po-page/po-page-slide/po-page-slide-footer/po-page-slide-footer.component.ts @@ -1,4 +1,4 @@ -import { Component, Input } from '@angular/core'; +import { Component, Input, ChangeDetectionStrategy } from '@angular/core'; /** * @description @@ -19,6 +19,7 @@ import { Component, Input } from '@angular/core'; @Component({ selector: 'po-page-slide-footer', templateUrl: './po-page-slide-footer.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoPageSlideFooterComponent { diff --git a/projects/ui/src/lib/components/po-page/po-page-slide/po-page-slide.component.html b/projects/ui/src/lib/components/po-page/po-page-slide/po-page-slide.component.html index 9a6b9472af..de1f620dfc 100644 --- a/projects/ui/src/lib/components/po-page/po-page-slide/po-page-slide.component.html +++ b/projects/ui/src/lib/components/po-page/po-page-slide/po-page-slide.component.html @@ -1,5 +1,11 @@ @if (!hidden) { -
    +
    @if (size !== 'full') {
    } @@ -9,7 +15,6 @@ aria-modal="true" [attr.aria-labelledby]="title ? titleId : null" [attr.aria-label]="title ? null : defaultDialogLabel" - [@slide]="slideParams" [ngStyle]="{ 'width': flexibleWidth ? '' : size === 'auto' ? 'auto' : '' }" >
    diff --git a/projects/ui/src/lib/components/po-page/po-page-slide/po-page-slide.component.spec.ts b/projects/ui/src/lib/components/po-page/po-page-slide/po-page-slide.component.spec.ts index 4f08fdd08d..e4096148ed 100644 --- a/projects/ui/src/lib/components/po-page/po-page-slide/po-page-slide.component.spec.ts +++ b/projects/ui/src/lib/components/po-page/po-page-slide/po-page-slide.component.spec.ts @@ -1,8 +1,7 @@ -import { Component, DebugElement, ElementRef, ViewChild } from '@angular/core'; +import { Component, DebugElement, ElementRef, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { ComponentFixture, fakeAsync, flush, TestBed, tick, waitForAsync } from '@angular/core/testing'; import { FormsModule } from '@angular/forms'; import { By } from '@angular/platform-browser'; -import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { PoActiveOverlayService } from '../../../services/po-active-overlay'; import { PoFieldModule } from '../../po-field'; @@ -18,6 +17,7 @@ import { PoPageSlideComponent } from './po-page-slide.component'; `, + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) class TestComponent { @@ -40,7 +40,7 @@ describe('PoPageSlideComponent', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ - imports: [FormsModule, NoopAnimationsModule, PoFieldModule], + imports: [FormsModule, PoFieldModule], declarations: [PoPageSlideComponent, TestComponent], providers: [PoActiveOverlayService] }).compileComponents(); @@ -371,17 +371,145 @@ describe('PoPageSlideComponent', () => { }); }); - describe('animation params:', () => { - it('fadeParams: should use the fallback duration when `duration` is empty', () => { - component.duration = ''; + describe('Animation methods:', () => { + it('animateEnter: should animate overlay opacity and container translateX', () => { + const rootElement = document.createElement('div'); + const container = document.createElement('div'); + container.classList.add('po-page-slide-container'); + rootElement.appendChild(container); + + const animationComplete = jasmine.createSpy('animationComplete'); + const rootAnimateSpy = spyOn(rootElement, 'animate').and.returnValue({} as any); + const cancelSpy = jasmine.createSpy('cancel'); + const containerAnimation: any = { cancel: cancelSpy }; + const containerAnimateSpy = spyOn(container, 'animate').and.returnValue(containerAnimation); + + component.animateEnter({ target: rootElement, animationComplete }); + + expect(rootAnimateSpy).toHaveBeenCalledWith( + [{ opacity: 0 }, { opacity: 1 }], + jasmine.objectContaining({ easing: 'linear', fill: 'forwards' }) + ); + expect(containerAnimateSpy).toHaveBeenCalledWith( + [{ transform: 'translateX(50px)' }, { transform: 'none' }], + jasmine.objectContaining({ fill: 'forwards' }) + ); + + containerAnimation.onfinish(); + + expect(container.style.transform).toBe('none'); + expect(cancelSpy).toHaveBeenCalled(); + expect(animationComplete).toHaveBeenCalled(); + }); + + it('animateLeave: should animate overlay opacity to 0 and container translateX out', () => { + const rootElement = document.createElement('div'); + const container = document.createElement('div'); + container.classList.add('po-page-slide-container'); + rootElement.appendChild(container); + + const animationComplete = jasmine.createSpy('animationComplete'); + spyOn(rootElement, 'animate').and.returnValue({} as any); + const containerAnimation: any = {}; + spyOn(container, 'animate').and.returnValue(containerAnimation); + + component.animateLeave({ target: rootElement, animationComplete }); + + containerAnimation.onfinish(); + expect(animationComplete).toHaveBeenCalled(); + }); + + it('animateEnter: should call animationComplete immediately if container not found', () => { + const rootElement = document.createElement('div'); + const animationComplete = jasmine.createSpy('animationComplete'); + spyOn(rootElement, 'animate').and.returnValue({} as any); + + component.animateEnter({ target: rootElement, animationComplete }); - expect(component.fadeParams.params.duration).toBe('70ms'); + expect(animationComplete).toHaveBeenCalled(); }); - it('slideParams: should use the fallback timing when `timing` is empty', () => { - component.timing = ''; + it('animateEnter: should use fallback duration 70 when parseDuration returns 0', () => { + const rootElement = document.createElement('div'); + const container = document.createElement('div'); + container.classList.add('po-page-slide-container'); + rootElement.appendChild(container); + + const animationComplete = jasmine.createSpy('animationComplete'); + const containerAnimation: any = {}; + const rootAnimateSpy = spyOn(rootElement, 'animate').and.returnValue({} as any); + spyOn(container, 'animate').and.returnValue(containerAnimation); + + // parseDuration retorna 0 para string '0ms', ativando o fallback || 70 + component.duration = '0ms'; + component.animateEnter({ target: rootElement, animationComplete }); + + expect(rootAnimateSpy).toHaveBeenCalledWith([{ opacity: 0 }, { opacity: 1 }], { + duration: 70, + easing: 'linear', + fill: 'forwards' + }); + }); + + it('parseDuration: should parse ms value', () => { + expect(component['parseDuration']('200ms')).toBe(200); + }); + + it('parseDuration: should parse s value', () => { + expect(component['parseDuration']('1.5s')).toBe(1500); + }); + + it('parseDuration: should return default for invalid value', () => { + expect(component['parseDuration']('')).toBe(70); + expect(component['parseDuration']('invalid')).toBe(70); + }); - expect(component.slideParams.params.timing).toBe('700ms cubic-bezier(0.35, 0, 0.1, 1)'); + it('parseTiming: should parse duration and easing', () => { + const result = component['parseTiming']('700ms cubic-bezier(0.35, 0, 0.1, 1)'); + expect(result.duration).toBe(700); + expect(result.easing).toBe('cubic-bezier(0.35, 0, 0.1, 1)'); }); + + it('parseTiming: should return default for empty value', () => { + const result = component['parseTiming'](''); + expect(result.duration).toBe(700); + expect(result.easing).toBe('cubic-bezier(0.35, 0, 0.1, 1)'); + }); + + it('parseTiming: should parse seconds value', () => { + const result = component['parseTiming']('1.5s ease-out'); + expect(result.duration).toBe(1500); + expect(result.easing).toBe('ease-out'); + }); + + it('parseTiming: should return default for invalid value', () => { + const result = component['parseTiming']('invalid'); + expect(result.duration).toBe(700); + expect(result.easing).toBe('cubic-bezier(0.35, 0, 0.1, 1)'); + }); + + it('parseDuration: should return default for null value', () => { + expect(component['parseDuration'](null)).toBe(70); + }); + + it('parseTiming: should return default for null value', () => { + const result = component['parseTiming'](null); + expect(result.duration).toBe(700); + expect(result.easing).toBe('cubic-bezier(0.35, 0, 0.1, 1)'); + }); + + it('animateLeave: should use setTimeout when container is not found', fakeAsync(() => { + const rootElement = document.createElement('div'); + const animationComplete = jasmine.createSpy('animationComplete'); + spyOn(rootElement, 'animate').and.returnValue({} as any); + + component.animateLeave({ target: rootElement, animationComplete }); + + expect(animationComplete).not.toHaveBeenCalled(); + + tick(150); + + expect(animationComplete).toHaveBeenCalled(); + })); }); }); diff --git a/projects/ui/src/lib/components/po-page/po-page-slide/po-page-slide.component.ts b/projects/ui/src/lib/components/po-page/po-page-slide/po-page-slide.component.ts index db3fd51092..20380cd21b 100644 --- a/projects/ui/src/lib/components/po-page/po-page-slide/po-page-slide.component.ts +++ b/projects/ui/src/lib/components/po-page/po-page-slide/po-page-slide.component.ts @@ -1,5 +1,12 @@ -import { animate, animateChild, group, query, style, transition, trigger } from '@angular/animations'; -import { Component, ContentChild, ElementRef, ViewChild, inject } from '@angular/core'; +import { + AnimationCallbackEvent, + Component, + ContentChild, + ElementRef, + ViewChild, + inject, + ChangeDetectionStrategy +} from '@angular/core'; import { ReplaySubject } from 'rxjs'; import { delay, take } from 'rxjs/operators'; @@ -54,22 +61,7 @@ export const poPageSlideLiteralsDefault = { selector: 'po-page-slide', templateUrl: './po-page-slide.component.html', providers: [], - animations: [ - trigger('fade', [ - transition(':enter', [ - style({ opacity: 0 }), - group([animate(`{{duration}}`, style({ opacity: 1 })), query('@slide', animateChild())]) - ]), - transition(':leave', group([query('@slide', animateChild()), animate('150ms', style({ opacity: 0 }))])) - ]), - trigger('slide', [ - transition(':enter', [ - style({ transform: 'translateX(50px)' }), - animate(`{{timing }}`, style({ transform: 'none' })) - ]), - transition(':leave', [animate('150ms', style({ transform: 'translateX(50px)' }))]) - ]) - ], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoPageSlideComponent extends PoPageSlideBaseComponent { @@ -148,6 +140,87 @@ export class PoPageSlideComponent extends PoPageSlideBaseComponent { } } + animateEnter(event: AnimationCallbackEvent): void { + const rootElement = event.target as HTMLElement; + const container = rootElement.querySelector('.po-page-slide-container') as HTMLElement; + + const fadeDuration = this.parseDuration(this.duration) || 70; + const { duration: slideDuration, easing: slideEasing } = this.parseTiming(this.timing); + + // Animate overlay fade in + rootElement.animate([{ opacity: 0 }, { opacity: 1 }], { + duration: fadeDuration, + easing: 'linear', + fill: 'forwards' + }); + + // Animate container slide in (in parallel) + if (container) { + const slideAnimation = container.animate([{ transform: 'translateX(50px)' }, { transform: 'none' }], { + duration: slideDuration, + easing: slideEasing, + fill: 'forwards' + }); + + slideAnimation.onfinish = () => { + (container as HTMLElement).style.transform = 'none'; + slideAnimation.cancel?.(); + event.animationComplete(); + }; + } else { + event.animationComplete(); + } + } + + animateLeave(event: AnimationCallbackEvent): void { + const rootElement = event.target as HTMLElement; + const container = rootElement.querySelector('.po-page-slide-container') as HTMLElement; + + const leaveDuration = 150; + + // Animate overlay fade out and slide out in parallel + rootElement.animate([{ opacity: 1 }, { opacity: 0 }], { + duration: leaveDuration, + easing: 'linear', + fill: 'forwards' + }); + + if (container) { + const slideAnimation = container.animate([{ transform: 'none' }, { transform: 'translateX(50px)' }], { + duration: leaveDuration, + easing: 'linear', + fill: 'forwards' + }); + + slideAnimation.onfinish = () => event.animationComplete(); + } else { + setTimeout(() => event.animationComplete(), leaveDuration); + } + } + + private parseDuration(value: string): number { + if (!value) { + return 70; + } + const match = value.match(/^(\d+(?:\.\d+)?)(ms|s)$/); + if (!match) { + return 70; + } + return match[2] === 's' ? parseFloat(match[1]) * 1000 : parseFloat(match[1]); + } + + private parseTiming(value: string): { duration: number; easing: string } { + if (!value) { + return { duration: 700, easing: 'cubic-bezier(0.35, 0, 0.1, 1)' }; + } + const durationMatch = value.match(/^(\d+(?:\.\d+)?)(ms|s)\s+(.+)$/); + if (!durationMatch) { + return { duration: 700, easing: 'cubic-bezier(0.35, 0, 0.1, 1)' }; + } + const duration = durationMatch[2] === 's' ? parseFloat(durationMatch[1]) * 1000 : parseFloat(durationMatch[1]); + return { duration, easing: durationMatch[3] }; + } + private setTimeFromCSS(): void { const rootStyles = getComputedStyle(document.documentElement); this.duration = rootStyles.getPropertyValue('--transition-duration').trim(); @@ -205,18 +278,4 @@ export class PoPageSlideComponent extends PoPageSlideBaseComponent { document.removeEventListener('focus', this.focusEvent, true); this.loadingCompleted.complete(); } - - get fadeParams() { - return { - value: true, - params: { duration: this.duration || '70ms' } - }; - } - - get slideParams() { - return { - value: true, - params: { timing: this.timing || '700ms cubic-bezier(0.35, 0, 0.1, 1)' } - }; - } } diff --git a/projects/ui/src/lib/components/po-page/po-page-slide/samples/sample-po-page-slide-basic/sample-po-page-slide-basic.component.ts b/projects/ui/src/lib/components/po-page/po-page-slide/samples/sample-po-page-slide-basic/sample-po-page-slide-basic.component.ts index e13a488d44..0f8cc84273 100644 --- a/projects/ui/src/lib/components/po-page/po-page-slide/samples/sample-po-page-slide-basic/sample-po-page-slide-basic.component.ts +++ b/projects/ui/src/lib/components/po-page/po-page-slide/samples/sample-po-page-slide-basic/sample-po-page-slide-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-page-slide-basic', templateUrl: './sample-po-page-slide-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPageSlideBasicComponent {} diff --git a/projects/ui/src/lib/components/po-page/po-page-slide/samples/sample-po-page-slide-configuration/sample-po-page-slide-configuration.component.ts b/projects/ui/src/lib/components/po-page/po-page-slide/samples/sample-po-page-slide-configuration/sample-po-page-slide-configuration.component.ts index d831a5744c..f64cfb2a27 100644 --- a/projects/ui/src/lib/components/po-page/po-page-slide/samples/sample-po-page-slide-configuration/sample-po-page-slide-configuration.component.ts +++ b/projects/ui/src/lib/components/po-page/po-page-slide/samples/sample-po-page-slide-configuration/sample-po-page-slide-configuration.component.ts @@ -1,9 +1,10 @@ -import { Component, inject } from '@angular/core'; +import { Component, inject, ChangeDetectionStrategy } from '@angular/core'; import { Router } from '@angular/router'; @Component({ selector: 'sample-po-page-slide-configuration', templateUrl: './sample-po-page-slide-configuration.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPageSlideConfigurationComponent { diff --git a/projects/ui/src/lib/components/po-page/po-page-slide/samples/sample-po-page-slide-labs/sample-po-page-slide-labs.component.ts b/projects/ui/src/lib/components/po-page/po-page-slide/samples/sample-po-page-slide-labs/sample-po-page-slide-labs.component.ts index b9aa44959a..b5da8af4ff 100644 --- a/projects/ui/src/lib/components/po-page/po-page-slide/samples/sample-po-page-slide-labs/sample-po-page-slide-labs.component.ts +++ b/projects/ui/src/lib/components/po-page/po-page-slide/samples/sample-po-page-slide-labs/sample-po-page-slide-labs.component.ts @@ -1,9 +1,10 @@ -import { Component, OnInit, ViewChild } from '@angular/core'; +import { Component, OnInit, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption, PoPageSlideComponent, PoRadioGroupOption } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-page-slide-labs', templateUrl: './sample-po-page-slide-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPageSlideLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-page/po-page.component.ts b/projects/ui/src/lib/components/po-page/po-page.component.ts index bbb00e0544..f0ba3343aa 100644 --- a/projects/ui/src/lib/components/po-page/po-page.component.ts +++ b/projects/ui/src/lib/components/po-page/po-page.component.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoPageBaseComponent } from './po-page-base.component'; @@ -10,6 +10,7 @@ import { PoPageBaseComponent } from './po-page-base.component'; @Component({ selector: 'po-page', templateUrl: './po-page.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoPageComponent extends PoPageBaseComponent {} diff --git a/projects/ui/src/lib/components/po-popover/po-popover-base.component.ts b/projects/ui/src/lib/components/po-popover/po-popover-base.component.ts index 7c7fd83dc4..b6293cd87e 100644 --- a/projects/ui/src/lib/components/po-popover/po-popover-base.component.ts +++ b/projects/ui/src/lib/components/po-popover/po-popover-base.component.ts @@ -1,4 +1,4 @@ -import { ElementRef, EventEmitter, Input, Output, input, Component } from '@angular/core'; +import { ElementRef, EventEmitter, Input, Output, input, Component, ChangeDetectionStrategy } from '@angular/core'; import { convertToBoolean } from '../../utils/util'; import { PO_CONTROL_POSITIONS } from './../../services/po-control-position/po-control-position.constants'; @@ -29,6 +29,7 @@ const PO_POPOVER_TRIGGERS = ['click', 'hover', 'function']; @Component({ selector: 'po-popover-base', template: '', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoPopoverBaseComponent { diff --git a/projects/ui/src/lib/components/po-popover/po-popover.component.spec.ts b/projects/ui/src/lib/components/po-popover/po-popover.component.spec.ts index 31e76d5c56..613ac3929c 100644 --- a/projects/ui/src/lib/components/po-popover/po-popover.component.spec.ts +++ b/projects/ui/src/lib/components/po-popover/po-popover.component.spec.ts @@ -190,11 +190,23 @@ describe('PoPopoverComponent:', () => { spyOn(fakeEvent, 'togglePopup').and.callFake(() => {}); + // Captura o callback registrado para 'click' no document ao invés de disparar + // um evento global em `document`, que acionaria listeners vazados de outras + // instâncias/testes e tornaria o teste intermitente. + let clickCallback: (event: MouseEvent) => void; + spyOn(fakeEvent.renderer, 'listen').and.callFake((target: any, eventName: string, callback: any) => { + if (target === 'document' && eventName === 'click') { + clickCallback = callback; + } + return () => {}; + }); + component.setRendererListenInit.call(fakeEvent); eventClick.initEvent('click', false, true); - document.dispatchEvent(eventClick); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion + clickCallback(eventClick as unknown as MouseEvent); expect(fakeEvent.togglePopup).toHaveBeenCalled(); }); diff --git a/projects/ui/src/lib/components/po-popover/po-popover.component.ts b/projects/ui/src/lib/components/po-popover/po-popover.component.ts index 0dde980783..dafe4324a1 100644 --- a/projects/ui/src/lib/components/po-popover/po-popover.component.ts +++ b/projects/ui/src/lib/components/po-popover/po-popover.component.ts @@ -8,7 +8,8 @@ import { OnDestroy, Renderer2, SimpleChanges, - ViewChild + ViewChild, + ChangeDetectionStrategy } from '@angular/core'; import { PoControlPositionService } from './../../services/po-control-position/po-control-position.service'; @@ -39,6 +40,7 @@ import { PoPopoverBaseComponent } from './po-popover-base.component'; selector: 'po-popover', templateUrl: './po-popover.component.html', providers: [PoControlPositionService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoPopoverComponent extends PoPopoverBaseComponent implements AfterViewInit, OnDestroy, OnChanges { diff --git a/projects/ui/src/lib/components/po-popover/samples/sample-po-popover-basic/sample-po-popover-basic.component.ts b/projects/ui/src/lib/components/po-popover/samples/sample-po-popover-basic/sample-po-popover-basic.component.ts index ea89ab729a..79074a5f67 100644 --- a/projects/ui/src/lib/components/po-popover/samples/sample-po-popover-basic/sample-po-popover-basic.component.ts +++ b/projects/ui/src/lib/components/po-popover/samples/sample-po-popover-basic/sample-po-popover-basic.component.ts @@ -1,10 +1,11 @@ -import { Component, ElementRef, ViewChild } from '@angular/core'; +import { Component, ElementRef, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { PoButtonComponent } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-popover-basic', templateUrl: './sample-po-popover-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPopoverBasicComponent { diff --git a/projects/ui/src/lib/components/po-popover/samples/sample-po-popover-credit-card/sample-po-popover-credit-card.component.ts b/projects/ui/src/lib/components/po-popover/samples/sample-po-popover-credit-card/sample-po-popover-credit-card.component.ts index 752a466a93..d1efe6cbc3 100644 --- a/projects/ui/src/lib/components/po-popover/samples/sample-po-popover-credit-card/sample-po-popover-credit-card.component.ts +++ b/projects/ui/src/lib/components/po-popover/samples/sample-po-popover-credit-card/sample-po-popover-credit-card.component.ts @@ -1,8 +1,9 @@ -import { Component, ElementRef, ViewChild } from '@angular/core'; +import { Component, ElementRef, ViewChild, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-popover-credit-card', templateUrl: './sample-po-popover-credit-card.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPopoverCreditCardComponent { diff --git a/projects/ui/src/lib/components/po-popover/samples/sample-po-popover-labs/sample-po-popover-labs.component.ts b/projects/ui/src/lib/components/po-popover/samples/sample-po-popover-labs/sample-po-popover-labs.component.ts index 7733808505..008872b49e 100644 --- a/projects/ui/src/lib/components/po-popover/samples/sample-po-popover-labs/sample-po-popover-labs.component.ts +++ b/projects/ui/src/lib/components/po-popover/samples/sample-po-popover-labs/sample-po-popover-labs.component.ts @@ -1,10 +1,11 @@ -import { Component, ElementRef, ViewChild } from '@angular/core'; +import { Component, ElementRef, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption, PoRadioGroupOption } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-popover-labs', templateUrl: './sample-po-popover-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPopoverLabsComponent { diff --git a/projects/ui/src/lib/components/po-popup/po-popup.component.spec.ts b/projects/ui/src/lib/components/po-popup/po-popup.component.spec.ts index 73cb45a4d9..6ef159abb5 100644 --- a/projects/ui/src/lib/components/po-popup/po-popup.component.spec.ts +++ b/projects/ui/src/lib/components/po-popup/po-popup.component.spec.ts @@ -1,6 +1,6 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; -import { of } from 'rxjs'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { configureTestSuite, expectPropertiesValues } from './../../util-test/util-expect.spec'; @@ -23,9 +23,9 @@ describe('PoPopupComponent:', () => { configureTestSuite(() => { TestBed.configureTestingModule({ - imports: [RouterTestingModule.withRoutes([])], + imports: [RouterModule.forRoot([])], declarations: [PoPopupComponent], - providers: [PoControlPositionService] + providers: [provideLocationMocks(), PoControlPositionService] }); }); diff --git a/projects/ui/src/lib/components/po-popup/po-popup.component.ts b/projects/ui/src/lib/components/po-popup/po-popup.component.ts index 55d4cc0d0f..3b15411d2d 100644 --- a/projects/ui/src/lib/components/po-popup/po-popup.component.ts +++ b/projects/ui/src/lib/components/po-popup/po-popup.component.ts @@ -1,4 +1,13 @@ -import { AfterViewInit, ChangeDetectorRef, Component, ElementRef, Renderer2, ViewChild, inject } from '@angular/core'; +import { + AfterViewInit, + ChangeDetectorRef, + Component, + ElementRef, + Renderer2, + ViewChild, + inject, + ChangeDetectionStrategy +} from '@angular/core'; import { Router } from '@angular/router'; import { PoControlPositionService } from '../../services/po-control-position/po-control-position.service'; @@ -58,6 +67,7 @@ const PO_POPUP_ARROW_TO_POSITION: Record = { selector: 'po-popup', templateUrl: './po-popup.component.html', providers: [PoControlPositionService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoPopupComponent extends PoPopupBaseComponent implements AfterViewInit { diff --git a/projects/ui/src/lib/components/po-popup/samples/sample-po-popup-basic/sample-po-popup-basic.component.ts b/projects/ui/src/lib/components/po-popup/samples/sample-po-popup-basic/sample-po-popup-basic.component.ts index d2740a342c..8058dff9ed 100644 --- a/projects/ui/src/lib/components/po-popup/samples/sample-po-popup-basic/sample-po-popup-basic.component.ts +++ b/projects/ui/src/lib/components/po-popup/samples/sample-po-popup-basic/sample-po-popup-basic.component.ts @@ -1,8 +1,17 @@ -import { AfterViewInit, ChangeDetectorRef, Component, ElementRef, ViewChild, inject } from '@angular/core'; +import { + AfterViewInit, + ChangeDetectorRef, + Component, + ElementRef, + ViewChild, + inject, + ChangeDetectionStrategy +} from '@angular/core'; @Component({ selector: 'sample-po-popup-basic', templateUrl: './sample-po-popup-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPopupBasicComponent implements AfterViewInit { diff --git a/projects/ui/src/lib/components/po-popup/samples/sample-po-popup-email/sample-po-popup-email.component.ts b/projects/ui/src/lib/components/po-popup/samples/sample-po-popup-email/sample-po-popup-email.component.ts index 30cc64b2bb..48765d9b60 100644 --- a/projects/ui/src/lib/components/po-popup/samples/sample-po-popup-email/sample-po-popup-email.component.ts +++ b/projects/ui/src/lib/components/po-popup/samples/sample-po-popup-email/sample-po-popup-email.component.ts @@ -1,4 +1,4 @@ -import { Component, ElementRef, OnInit, ViewChild } from '@angular/core'; +import { Component, ElementRef, OnInit, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { UntypedFormControl } from '@angular/forms'; import { PoModalAction, PoModalComponent, PoPopupAction } from '@po-ui/ng-components'; @@ -7,6 +7,7 @@ import { PoModalAction, PoModalComponent, PoPopupAction } from '@po-ui/ng-compon selector: 'sample-po-popup-email', templateUrl: './sample-po-popup-email.component.html', styleUrls: ['./sample-po-popup-email.component.css'], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPopupEmailComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-popup/samples/sample-po-popup-labs/sample-po-popup-labs.component.ts b/projects/ui/src/lib/components/po-popup/samples/sample-po-popup-labs/sample-po-popup-labs.component.ts index 4c7c2cf7ca..76d79f0f83 100644 --- a/projects/ui/src/lib/components/po-popup/samples/sample-po-popup-labs/sample-po-popup-labs.component.ts +++ b/projects/ui/src/lib/components/po-popup/samples/sample-po-popup-labs/sample-po-popup-labs.component.ts @@ -1,4 +1,4 @@ -import { Component, ElementRef, OnInit, ViewChild, inject } from '@angular/core'; +import { Component, ElementRef, OnInit, ViewChild, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption, @@ -12,6 +12,7 @@ import { selector: 'sample-po-popup-labs', templateUrl: './sample-po-popup-labs.component.html', styleUrls: ['./sample-po-popup-labs.component.css'], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoPopupLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-progress/po-progress-base.component.spec.ts b/projects/ui/src/lib/components/po-progress/po-progress-base.component.spec.ts index 63a8b6ee07..89e40aa9fe 100644 --- a/projects/ui/src/lib/components/po-progress/po-progress-base.component.spec.ts +++ b/projects/ui/src/lib/components/po-progress/po-progress-base.component.spec.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { PoThemeA11yEnum } from '../../services'; @@ -9,6 +9,7 @@ import { PoProgressBaseComponent } from './po-progress-base.component'; @Component({ template: '', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) class TestHostComponent extends PoProgressBaseComponent {} diff --git a/projects/ui/src/lib/components/po-progress/samples/sample-po-progress-basic/sample-po-progress-basic.component.ts b/projects/ui/src/lib/components/po-progress/samples/sample-po-progress-basic/sample-po-progress-basic.component.ts index 9f39583243..51671af04e 100644 --- a/projects/ui/src/lib/components/po-progress/samples/sample-po-progress-basic/sample-po-progress-basic.component.ts +++ b/projects/ui/src/lib/components/po-progress/samples/sample-po-progress-basic/sample-po-progress-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-progress-basic', templateUrl: './sample-po-progress-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoProgressBasicComponent {} diff --git a/projects/ui/src/lib/components/po-progress/samples/sample-po-progress-circle/sample-po-progress-circle.component.ts b/projects/ui/src/lib/components/po-progress/samples/sample-po-progress-circle/sample-po-progress-circle.component.ts index a1ee29526e..82fa0dc1a1 100644 --- a/projects/ui/src/lib/components/po-progress/samples/sample-po-progress-circle/sample-po-progress-circle.component.ts +++ b/projects/ui/src/lib/components/po-progress/samples/sample-po-progress-circle/sample-po-progress-circle.component.ts @@ -1,9 +1,10 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-progress-circle', templateUrl: './sample-po-progress-circle.component.html', styleUrls: ['./sample-po-progress-circle.component.css'], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoProgressCircleComponent { diff --git a/projects/ui/src/lib/components/po-progress/samples/sample-po-progress-labs/sample-po-progress-labs.component.ts b/projects/ui/src/lib/components/po-progress/samples/sample-po-progress-labs/sample-po-progress-labs.component.ts index f0e72fad79..640c4e6aea 100644 --- a/projects/ui/src/lib/components/po-progress/samples/sample-po-progress-labs/sample-po-progress-labs.component.ts +++ b/projects/ui/src/lib/components/po-progress/samples/sample-po-progress-labs/sample-po-progress-labs.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, inject } from '@angular/core'; +import { Component, OnInit, inject, ChangeDetectionStrategy } from '@angular/core'; import { FormGroup, FormBuilder } from '@angular/forms'; import { @@ -15,6 +15,7 @@ import { selector: 'sample-po-progress-labs', templateUrl: './sample-po-progress-labs.component.html', styleUrls: ['./sample-po-progress-labs.component.css'], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoProgressLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-progress/samples/sample-po-progress-publication/sample-po-progress-publication.component.ts b/projects/ui/src/lib/components/po-progress/samples/sample-po-progress-publication/sample-po-progress-publication.component.ts index f5878258cd..c8a3722a9d 100644 --- a/projects/ui/src/lib/components/po-progress/samples/sample-po-progress-publication/sample-po-progress-publication.component.ts +++ b/projects/ui/src/lib/components/po-progress/samples/sample-po-progress-publication/sample-po-progress-publication.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-progress-publication', templateUrl: './sample-po-progress-publication.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoProgressPublicationComponent { diff --git a/projects/ui/src/lib/components/po-search/po-search.component.spec.ts b/projects/ui/src/lib/components/po-search/po-search.component.spec.ts index 2aca17e8ba..cb5a23d34d 100644 --- a/projects/ui/src/lib/components/po-search/po-search.component.spec.ts +++ b/projects/ui/src/lib/components/po-search/po-search.component.spec.ts @@ -600,14 +600,27 @@ describe('PoSearchComponent', () => { component['eventResizeListener'] = undefined; const spyRemoveListeners = spyOn(component, 'removeListeners'); + // Captura os callbacks registrados e os invoca diretamente, em vez de disparar + // eventos globais (document/window) que acionariam handlers vazados de outras + // instâncias e tornavam o teste intermitente (erro 'contains' de undefined). + const listeners: { [key: string]: (event?: any) => void } = {}; + spyOn(component['renderer'], 'listen').and.callFake((target: any, eventName: string, callback: any) => { + listeners[`${target}:${eventName}`] = callback; + return () => {}; + }); + spyOn(component, 'clickedOutsideInput'); + spyOn(component, 'adjustContainerPosition'); + component['initializeListeners'](); - document.dispatchEvent(eventClick); - window.dispatchEvent(new Event('resize')); + // Exercita os callbacks de forma determinística. + listeners['document:click']?.(eventClick); + listeners['window:resize']?.(); expect(spyRemoveListeners).toHaveBeenCalled(); expect(component['clickoutListener']).toBeDefined(); expect(component['eventResizeListener']).toBeDefined(); + expect(component.clickedOutsideInput).toHaveBeenCalled(); }); it('should hide the listbox when was click out of the input', () => { @@ -1131,8 +1144,10 @@ describe('PoSearchComponent', () => { describe('locateCounter ViewChild setter', () => { let observeSpy: jasmine.Spy; + let originalResizeObserver: typeof ResizeObserver; beforeEach(() => { + originalResizeObserver = window.ResizeObserver; observeSpy = jasmine.createSpy('observe'); (window as any).ResizeObserver = function (callback) { callback(); @@ -1140,6 +1155,10 @@ describe('PoSearchComponent', () => { }; }); + afterEach(() => { + (window as any).ResizeObserver = originalResizeObserver; + }); + it('should set _locateCounter, create ResizeObserver and observe the element', () => { const element = document.createElement('span'); const elementRef = new ElementRef(element); diff --git a/projects/ui/src/lib/components/po-search/po-search.module.ts b/projects/ui/src/lib/components/po-search/po-search.module.ts index 03281a7e4b..5c57ee3183 100644 --- a/projects/ui/src/lib/components/po-search/po-search.module.ts +++ b/projects/ui/src/lib/components/po-search/po-search.module.ts @@ -1,6 +1,6 @@ import { CommonModule } from '@angular/common'; import { NgModule } from '@angular/core'; -import { PoCleanModule } from '../po-field'; +import { PoCleanModule } from '../po-field/po-clean/po-clean.module'; import { PoIconModule } from '../po-icon'; import { PoLoadingModule } from '../po-loading'; import { PoSearchComponent } from './po-search.component'; diff --git a/projects/ui/src/lib/components/po-search/samples/sample-po-search-basic/sample-po-search-basic.component.ts b/projects/ui/src/lib/components/po-search/samples/sample-po-search-basic/sample-po-search-basic.component.ts index 2b3fcb0b41..e05ad86788 100644 --- a/projects/ui/src/lib/components/po-search/samples/sample-po-search-basic/sample-po-search-basic.component.ts +++ b/projects/ui/src/lib/components/po-search/samples/sample-po-search-basic/sample-po-search-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-search-basic', templateUrl: './sample-po-search-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoSearchBasicComponent {} diff --git a/projects/ui/src/lib/components/po-search/samples/sample-po-search-execute/sample-po-search-execute.component.ts b/projects/ui/src/lib/components/po-search/samples/sample-po-search-execute/sample-po-search-execute.component.ts index 8bf435a57d..93c3adc5be 100644 --- a/projects/ui/src/lib/components/po-search/samples/sample-po-search-execute/sample-po-search-execute.component.ts +++ b/projects/ui/src/lib/components/po-search/samples/sample-po-search-execute/sample-po-search-execute.component.ts @@ -1,4 +1,4 @@ -import { Component, ViewChild } from '@angular/core'; +import { Component, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { PoModalComponent, PoSearchFilterMode } from '@po-ui/ng-components'; @@ -6,6 +6,7 @@ import { PoModalComponent, PoSearchFilterMode } from '@po-ui/ng-components'; selector: 'sample-po-search-execute', templateUrl: './sample-po-search-execute.component.html', styleUrls: ['./sample-po-search-execute.component.css'], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoSearchExecuteComponent { diff --git a/projects/ui/src/lib/components/po-search/samples/sample-po-search-fields-locate/sample-po-search-fields-locate.component.ts b/projects/ui/src/lib/components/po-search/samples/sample-po-search-fields-locate/sample-po-search-fields-locate.component.ts index e954ac2337..b2c06dee0f 100644 --- a/projects/ui/src/lib/components/po-search/samples/sample-po-search-fields-locate/sample-po-search-fields-locate.component.ts +++ b/projects/ui/src/lib/components/po-search/samples/sample-po-search-fields-locate/sample-po-search-fields-locate.component.ts @@ -1,4 +1,4 @@ -import { AfterViewInit, Component, ViewChild, inject } from '@angular/core'; +import { AfterViewInit, Component, ViewChild, inject, ChangeDetectionStrategy } from '@angular/core'; import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms'; import { PoEmailComponent, @@ -14,6 +14,7 @@ import { @Component({ selector: 'sample-po-search-fields-locate', templateUrl: './sample-po-search-fields-locate.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoSearchFieldsLocateComponent implements AfterViewInit { diff --git a/projects/ui/src/lib/components/po-search/samples/sample-po-search-filter-select/sample-po-search-filter-select.component.ts b/projects/ui/src/lib/components/po-search/samples/sample-po-search-filter-select/sample-po-search-filter-select.component.ts index 15bc7954d4..ba81d7c2a4 100644 --- a/projects/ui/src/lib/components/po-search/samples/sample-po-search-filter-select/sample-po-search-filter-select.component.ts +++ b/projects/ui/src/lib/components/po-search/samples/sample-po-search-filter-select/sample-po-search-filter-select.component.ts @@ -1,8 +1,9 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-search-filter-select', templateUrl: './sample-po-search-filter-select.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoSearchFilterSelectComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-search/samples/sample-po-search-find-people/sample-po-search-find-people.component.ts b/projects/ui/src/lib/components/po-search/samples/sample-po-search-find-people/sample-po-search-find-people.component.ts index 69cbc35b40..a5cd59a087 100644 --- a/projects/ui/src/lib/components/po-search/samples/sample-po-search-find-people/sample-po-search-find-people.component.ts +++ b/projects/ui/src/lib/components/po-search/samples/sample-po-search-find-people/sample-po-search-find-people.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, inject } from '@angular/core'; +import { Component, OnInit, inject, ChangeDetectionStrategy } from '@angular/core'; import { SamplePoSearchFindPeopleService } from './sample-po-search-find-people.service'; @Component({ @@ -6,6 +6,7 @@ import { SamplePoSearchFindPeopleService } from './sample-po-search-find-people. templateUrl: './sample-po-search-find-people.component.html', styleUrls: ['./sample-po-search-find-people.component.css'], providers: [SamplePoSearchFindPeopleService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoSearchFindPeopleComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-search/samples/sample-po-search-labs/sample-po-search-labs.component.ts b/projects/ui/src/lib/components/po-search/samples/sample-po-search-labs/sample-po-search-labs.component.ts index e1c021d5d1..bc5e70b197 100644 --- a/projects/ui/src/lib/components/po-search/samples/sample-po-search-labs/sample-po-search-labs.component.ts +++ b/projects/ui/src/lib/components/po-search/samples/sample-po-search-labs/sample-po-search-labs.component.ts @@ -1,5 +1,5 @@ import { HttpClient } from '@angular/common/http'; -import { Component, OnChanges, OnInit, SimpleChanges, ViewChild, inject } from '@angular/core'; +import { Component, OnChanges, OnInit, SimpleChanges, ViewChild, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption, PoRadioGroupOption, @@ -13,6 +13,7 @@ import { PoSearchLocateSummary } from '@po-ui/ng-components/lib/components/po-se selector: 'sample-po-search-labs', templateUrl: './sample-po-search-labs.component.html', styleUrls: ['./sample-po-search-labs.component.css'], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoSearchLabsComponent implements OnInit, OnChanges { diff --git a/projects/ui/src/lib/components/po-search/samples/sample-po-search-listbox/sample-po-search-listbox.component.ts b/projects/ui/src/lib/components/po-search/samples/sample-po-search-listbox/sample-po-search-listbox.component.ts index 2cdb0421a1..ccd11ef6ef 100644 --- a/projects/ui/src/lib/components/po-search/samples/sample-po-search-listbox/sample-po-search-listbox.component.ts +++ b/projects/ui/src/lib/components/po-search/samples/sample-po-search-listbox/sample-po-search-listbox.component.ts @@ -1,10 +1,11 @@ -import { Component, OnInit, inject } from '@angular/core'; +import { Component, OnInit, inject, ChangeDetectionStrategy } from '@angular/core'; import { SamplePoSearchListboxService } from './sample-po-search-listbox.service'; @Component({ selector: 'sample-po-search-listbox', templateUrl: './sample-po-search-listbox.component.html', providers: [SamplePoSearchListboxService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoSearchListboxComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-skeleton/po-skeleton-base.component.spec.ts b/projects/ui/src/lib/components/po-skeleton/po-skeleton-base.component.spec.ts index e8d9ef4b11..172a154a69 100644 --- a/projects/ui/src/lib/components/po-skeleton/po-skeleton-base.component.spec.ts +++ b/projects/ui/src/lib/components/po-skeleton/po-skeleton-base.component.spec.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { PoSkeletonBaseComponent } from './po-skeleton-base.component'; @@ -10,6 +10,7 @@ import { PoSkeletonVariant } from './enums/po-skeleton-variant.enum'; @Component({ selector: 'po-test-skeleton', template: '', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) class TestSkeletonComponent extends PoSkeletonBaseComponent {} diff --git a/projects/ui/src/lib/components/po-skeleton/samples/sample-po-skeleton-article/sample-po-skeleton-article.component.ts b/projects/ui/src/lib/components/po-skeleton/samples/sample-po-skeleton-article/sample-po-skeleton-article.component.ts index 9a9c1b79e9..a87a13361c 100644 --- a/projects/ui/src/lib/components/po-skeleton/samples/sample-po-skeleton-article/sample-po-skeleton-article.component.ts +++ b/projects/ui/src/lib/components/po-skeleton/samples/sample-po-skeleton-article/sample-po-skeleton-article.component.ts @@ -1,9 +1,10 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-skeleton-article', templateUrl: './sample-po-skeleton-article.component.html', styleUrls: ['./sample-po-skeleton-article.component.css'], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoSkeletonArticleComponent {} diff --git a/projects/ui/src/lib/components/po-skeleton/samples/sample-po-skeleton-basic/sample-po-skeleton-basic.component.ts b/projects/ui/src/lib/components/po-skeleton/samples/sample-po-skeleton-basic/sample-po-skeleton-basic.component.ts index af8bff26ba..eb3162d379 100644 --- a/projects/ui/src/lib/components/po-skeleton/samples/sample-po-skeleton-basic/sample-po-skeleton-basic.component.ts +++ b/projects/ui/src/lib/components/po-skeleton/samples/sample-po-skeleton-basic/sample-po-skeleton-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-skeleton-basic', templateUrl: './sample-po-skeleton-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoSkeletonBasicComponent {} diff --git a/projects/ui/src/lib/components/po-skeleton/samples/sample-po-skeleton-credit-card/sample-po-skeleton-credit-card.component.ts b/projects/ui/src/lib/components/po-skeleton/samples/sample-po-skeleton-credit-card/sample-po-skeleton-credit-card.component.ts index 0b1f31af7a..b0cdda411d 100644 --- a/projects/ui/src/lib/components/po-skeleton/samples/sample-po-skeleton-credit-card/sample-po-skeleton-credit-card.component.ts +++ b/projects/ui/src/lib/components/po-skeleton/samples/sample-po-skeleton-credit-card/sample-po-skeleton-credit-card.component.ts @@ -1,9 +1,10 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-skeleton-credit-card', templateUrl: './sample-po-skeleton-credit-card.component.html', styleUrls: ['./sample-po-skeleton-credit-card.component.css'], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoSkeletonCreditCardComponent {} diff --git a/projects/ui/src/lib/components/po-skeleton/samples/sample-po-skeleton-labs/sample-po-skeleton-labs.component.ts b/projects/ui/src/lib/components/po-skeleton/samples/sample-po-skeleton-labs/sample-po-skeleton-labs.component.ts index 532de694b6..e7cded37b8 100644 --- a/projects/ui/src/lib/components/po-skeleton/samples/sample-po-skeleton-labs/sample-po-skeleton-labs.component.ts +++ b/projects/ui/src/lib/components/po-skeleton/samples/sample-po-skeleton-labs/sample-po-skeleton-labs.component.ts @@ -1,8 +1,9 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-skeleton-labs', templateUrl: './sample-po-skeleton-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoSkeletonLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-skeleton/samples/sample-po-skeleton-social-post/sample-po-skeleton-social-post.component.ts b/projects/ui/src/lib/components/po-skeleton/samples/sample-po-skeleton-social-post/sample-po-skeleton-social-post.component.ts index ddfd5bf28f..f71caa3533 100644 --- a/projects/ui/src/lib/components/po-skeleton/samples/sample-po-skeleton-social-post/sample-po-skeleton-social-post.component.ts +++ b/projects/ui/src/lib/components/po-skeleton/samples/sample-po-skeleton-social-post/sample-po-skeleton-social-post.component.ts @@ -1,9 +1,10 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-skeleton-social-post', templateUrl: './sample-po-skeleton-social-post.component.html', styleUrls: ['./sample-po-skeleton-social-post.component.css'], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoSkeletonSocialPostComponent {} diff --git a/projects/ui/src/lib/components/po-skeleton/samples/sample-po-skeleton-user-profile/sample-po-skeleton-user-profile.component.ts b/projects/ui/src/lib/components/po-skeleton/samples/sample-po-skeleton-user-profile/sample-po-skeleton-user-profile.component.ts index 8b277e26e9..c8ff3cef9c 100644 --- a/projects/ui/src/lib/components/po-skeleton/samples/sample-po-skeleton-user-profile/sample-po-skeleton-user-profile.component.ts +++ b/projects/ui/src/lib/components/po-skeleton/samples/sample-po-skeleton-user-profile/sample-po-skeleton-user-profile.component.ts @@ -1,9 +1,10 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-skeleton-user-profile', templateUrl: './sample-po-skeleton-user-profile.component.html', styleUrls: ['./sample-po-skeleton-user-profile.component.css'], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoSkeletonUserProfileComponent {} diff --git a/projects/ui/src/lib/components/po-skeleton/samples/sample-po-skeleton-widget-card/sample-po-skeleton-widget-card.component.ts b/projects/ui/src/lib/components/po-skeleton/samples/sample-po-skeleton-widget-card/sample-po-skeleton-widget-card.component.ts index ba250e61f4..f8e87c4197 100644 --- a/projects/ui/src/lib/components/po-skeleton/samples/sample-po-skeleton-widget-card/sample-po-skeleton-widget-card.component.ts +++ b/projects/ui/src/lib/components/po-skeleton/samples/sample-po-skeleton-widget-card/sample-po-skeleton-widget-card.component.ts @@ -1,9 +1,10 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-skeleton-widget-card', templateUrl: './sample-po-skeleton-widget-card.component.html', styleUrls: ['./sample-po-skeleton-widget-card.component.css'], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoSkeletonWidgetCardComponent {} diff --git a/projects/ui/src/lib/components/po-slide/po-slide-circles/po-slide-circles.component.ts b/projects/ui/src/lib/components/po-slide/po-slide-circles/po-slide-circles.component.ts index 8e3da5ccb0..55408f8dbd 100644 --- a/projects/ui/src/lib/components/po-slide/po-slide-circles/po-slide-circles.component.ts +++ b/projects/ui/src/lib/components/po-slide/po-slide-circles/po-slide-circles.component.ts @@ -1,4 +1,4 @@ -import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { Component, EventEmitter, Input, Output, ChangeDetectionStrategy } from '@angular/core'; /** * @docsPrivate @@ -10,6 +10,7 @@ import { Component, EventEmitter, Input, Output } from '@angular/core'; @Component({ selector: 'po-slide-circles', templateUrl: './po-slide-circles.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoSlideCirclesComponent { diff --git a/projects/ui/src/lib/components/po-slide/po-slide-control/po-slide-control.component.ts b/projects/ui/src/lib/components/po-slide/po-slide-control/po-slide-control.component.ts index ae91f0dab3..b6ab23db64 100644 --- a/projects/ui/src/lib/components/po-slide/po-slide-control/po-slide-control.component.ts +++ b/projects/ui/src/lib/components/po-slide/po-slide-control/po-slide-control.component.ts @@ -1,4 +1,4 @@ -import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { Component, EventEmitter, Input, Output, ChangeDetectionStrategy } from '@angular/core'; /** * @docsPrivate @@ -10,6 +10,7 @@ import { Component, EventEmitter, Input, Output } from '@angular/core'; @Component({ selector: 'po-slide-control', templateUrl: './po-slide-control.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoSlideControlComponent { diff --git a/projects/ui/src/lib/components/po-slide/po-slide-item/po-slide-item.component.spec.ts b/projects/ui/src/lib/components/po-slide/po-slide-item/po-slide-item.component.spec.ts index 00e481113b..29d9e8c890 100644 --- a/projects/ui/src/lib/components/po-slide/po-slide-item/po-slide-item.component.spec.ts +++ b/projects/ui/src/lib/components/po-slide/po-slide-item/po-slide-item.component.spec.ts @@ -1,6 +1,7 @@ import { provideNgReflectAttributes } from '@angular/core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { PoSlideItemComponent } from './po-slide-item.component'; @@ -11,9 +12,9 @@ describe('PoSlideItemComponent:', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [RouterTestingModule.withRoutes([])], + imports: [RouterModule.forRoot([])], declarations: [PoSlideItemComponent], - providers: [provideNgReflectAttributes()] + providers: [provideLocationMocks(), provideNgReflectAttributes()] }).compileComponents(); fixture = TestBed.createComponent(PoSlideItemComponent); diff --git a/projects/ui/src/lib/components/po-slide/po-slide-item/po-slide-item.component.ts b/projects/ui/src/lib/components/po-slide/po-slide-item/po-slide-item.component.ts index ea03368f10..639cfa8cab 100644 --- a/projects/ui/src/lib/components/po-slide/po-slide-item/po-slide-item.component.ts +++ b/projects/ui/src/lib/components/po-slide/po-slide-item/po-slide-item.component.ts @@ -1,4 +1,4 @@ -import { Component, ElementRef, Input, ViewChild } from '@angular/core'; +import { Component, ElementRef, Input, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { isIEOrEdge } from '../../../utils/util'; @@ -14,6 +14,7 @@ import { PoSlideContentTemplateDirective } from '../directives/po-slide-content- @Component({ selector: 'po-slide-item', templateUrl: './po-slide-item.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoSlideItemComponent { diff --git a/projects/ui/src/lib/components/po-slide/po-slide.component.spec.ts b/projects/ui/src/lib/components/po-slide/po-slide.component.spec.ts index 24cb998dc4..95236718be 100644 --- a/projects/ui/src/lib/components/po-slide/po-slide.component.spec.ts +++ b/projects/ui/src/lib/components/po-slide/po-slide.component.spec.ts @@ -1,7 +1,7 @@ import { SimpleChange } from '@angular/core'; -import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { ComponentFixture, fakeAsync, TestBed, tick } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { PoSlideCirclesComponent } from './po-slide-circles/po-slide-circles.component'; import { PoSlideComponent } from './po-slide.component'; @@ -16,8 +16,9 @@ describe('PoSlideComponent:', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [RouterTestingModule.withRoutes([]), BrowserAnimationsModule], - declarations: [PoSlideCirclesComponent, PoSlideComponent, PoSlideControlComponent, PoSlideItemComponent] + imports: [RouterModule.forRoot([])], + declarations: [PoSlideCirclesComponent, PoSlideComponent, PoSlideControlComponent, PoSlideItemComponent], + providers: [provideLocationMocks()] }).compileComponents(); fixture = TestBed.createComponent(PoSlideComponent); @@ -323,36 +324,53 @@ describe('PoSlideComponent:', () => { expect(component['setHeight']).toHaveBeenCalledWith(slideHeight); }); - it(`animate: should call 'buildTransitionAnimation' with offset if has elements`, () => { + it(`animate: should call element.animate with offset if has elements`, () => { const offset = 400; spyOnProperty(component, 'hasElements').and.returnValue(true); - spyOn(component, 'buildTransitionAnimation').and.callThrough(); + spyOn(component['slide'].nativeElement, 'animate').and.returnValue({ cancel: () => {} }); component['animate'](offset); - expect(component['buildTransitionAnimation']).toHaveBeenCalledWith(offset); + expect(component['slide'].nativeElement.animate).toHaveBeenCalledWith( + [{ transform: 'translateX(-0px)' }, { transform: 'translateX(-400px)' }], + { duration: 250, easing: 'ease', fill: 'forwards' } + ); }); - it(`animate: shouldn't call 'buildTransitionAnimation' with offset if doesn't have elements`, () => { + it(`animate: shouldn't call element.animate if doesn't have elements`, () => { const offset = 400; spyOnProperty(component, 'hasElements').and.returnValue(false); - spyOn(component, 'buildTransitionAnimation'); + spyOn(component['slide'].nativeElement, 'animate'); component['animate'](offset); - expect(component['buildTransitionAnimation']).not.toHaveBeenCalled(); + expect(component['slide'].nativeElement.animate).not.toHaveBeenCalled(); }); - it(`buildTransitionAnimation: should call builder`, () => { - const offset = 400; + it(`animate: should cancel previous animation before starting new one`, () => { + spyOnProperty(component, 'hasElements').and.returnValue(true); + const cancelSpy = jasmine.createSpy('cancel'); + component['currentAnimation'] = { cancel: cancelSpy } as any; + spyOn(component['slide'].nativeElement, 'animate').and.returnValue({ cancel: () => {} }); + + component['animate'](200); + + expect(cancelSpy).toHaveBeenCalled(); + }); - spyOn(component['builder'], 'build').and.callThrough(); + it(`animate: should track previousOffset for smooth transitions`, () => { + spyOnProperty(component, 'hasElements').and.returnValue(true); + spyOn(component['slide'].nativeElement, 'animate').and.returnValue({ cancel: () => {} }); - component['buildTransitionAnimation'](offset); + component['animate'](400); + component['animate'](0); - expect(component['builder'].build).toHaveBeenCalled(); + expect(component['slide'].nativeElement.animate).toHaveBeenCalledWith( + [{ transform: 'translateX(-400px)' }, { transform: 'translateX(-0px)' }], + { duration: 250, easing: 'ease', fill: 'forwards' } + ); }); it(`createArrayForTemplate: should update 'slideItems' with array of any.`, () => { @@ -581,10 +599,12 @@ describe('PoSlideComponent:', () => { component.slides = [{ alt: '1' }, { alt: '2' }, { alt: '3' }, { alt: '4' }]; fixture.detectChanges(); - const interval = 1000; spyOn(component, 'next'); + spyOnProperty(component, 'hasElements').and.returnValue(true); + spyOnProperty(component, 'hasSlides').and.returnValue(true); - component.interval = interval; + component.interval = 1000; + component['startInterval'](); tick(2000); component['cancelInterval'](); @@ -598,6 +618,9 @@ describe('PoSlideComponent:', () => { component.slides = [{ alt: '1' }, { alt: '2' }, { alt: '3' }, { alt: '4' }]; fixture.detectChanges(); + // Simular que o elemento tem dimensões visíveis no DOM + Object.defineProperty(component['slide'].nativeElement, 'offsetWidth', { value: 800, configurable: true }); + expect(component['hasElements']).toBe(true); }); diff --git a/projects/ui/src/lib/components/po-slide/po-slide.component.ts b/projects/ui/src/lib/components/po-slide/po-slide.component.ts index 90d2df7bfe..b356698d8a 100644 --- a/projects/ui/src/lib/components/po-slide/po-slide.component.ts +++ b/projects/ui/src/lib/components/po-slide/po-slide.component.ts @@ -11,11 +11,10 @@ import { OnDestroy, OnInit, SimpleChanges, - inject + inject, + ChangeDetectionStrategy } from '@angular/core'; -import { animate, AnimationBuilder, AnimationFactory, AnimationPlayer, keyframes, style } from '@angular/animations'; - import { Subscription, Subject } from 'rxjs'; import { debounceTime } from 'rxjs/operators'; @@ -27,7 +26,6 @@ import { PoSlideItemComponent } from './po-slide-item/po-slide-item.component'; const poSlideDefaultHeight = 336; const poSlideIntervalMin = 1000; const poSlideMinHeight = 192; -const poSlideTiming = '250ms ease'; /** * @docsExtends PoSlideBaseComponent @@ -61,11 +59,10 @@ const poSlideTiming = '250ms ease'; @Component({ selector: 'po-slide', templateUrl: './po-slide.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoSlideComponent extends PoSlideBaseComponent implements OnInit, DoCheck, OnChanges, OnDestroy { - private readonly builder = inject(AnimationBuilder); - @ContentChild(PoSlideContentTemplateDirective, { static: true }) slideContentTemplate: PoSlideContentTemplateDirective; @@ -79,7 +76,8 @@ export class PoSlideComponent extends PoSlideBaseComponent implements OnInit, Do slideItemWidth: number; private isLoaded: boolean = false; - private player: AnimationPlayer; + private currentAnimation: Animation; + private previousOffset: number = 0; private setInterval: any; private readonly resize$ = new Subject(); private resizeSubscription: Subscription; @@ -255,15 +253,19 @@ export class PoSlideComponent extends PoSlideBaseComponent implements OnInit, Do private animate(offset: number) { if (this.hasElements) { - const animation: AnimationFactory = this.buildTransitionAnimation(offset); + const element = this.slide.nativeElement; - this.player = animation.create(this.slide.nativeElement); - this.player.play(); - } - } + if (this.currentAnimation) { + this.currentAnimation.cancel(); + } + + this.currentAnimation = element.animate( + [{ transform: `translateX(-${this.previousOffset}px)` }, { transform: `translateX(-${offset}px)` }], + { duration: 250, easing: 'ease', fill: 'forwards' } + ); - private buildTransitionAnimation(offset: number) { - return this.builder.build([animate(poSlideTiming, keyframes([style({ transform: `translateX(-${offset}px)` })]))]); + this.previousOffset = offset; + } } private createArrayForTemplate(slides: Array) { diff --git a/projects/ui/src/lib/components/po-slide/po-slide.module.ts b/projects/ui/src/lib/components/po-slide/po-slide.module.ts index 544e7283f2..ef19a231eb 100644 --- a/projects/ui/src/lib/components/po-slide/po-slide.module.ts +++ b/projects/ui/src/lib/components/po-slide/po-slide.module.ts @@ -16,43 +16,6 @@ import { PoSlideItemComponent } from './po-slide-item/po-slide-item.component'; * * Módulo do componente `po-slide`. * - * > Para o correto funcionamento do componente `po-slide`, deve ser importado o módulo `BrowserAnimationsModule` no - * > módulo principal da sua aplicação. - * - * Módulo da aplicação: - * ``` - * import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; - * import { PoModule } from '@po-ui/ng-components'; - * ... - * - * @NgModule({ - * imports: [ - * BrowserModule, - * BrowserAnimationsModule, - * ... - * PoModule - * ], - * declarations: [ - * AppComponent, - * ... - * ], - * providers: [], - * bootstrap: [AppComponent] - * }) - * export class AppModule { } - * ``` - * - * Em aplicações Standalone, utilize a seguinte configuração para o bootstrap: - * - * ``` - * import { bootstrapApplication } from '@angular/platform-browser'; - * import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; - * import { AppComponent } from './app.component'; - * - * bootstrapApplication(AppComponent, { - * providers: [importProvidersFrom(BrowserAnimationsModule)] - * }).catch(err => console.error(err)); - * ``` */ @NgModule({ imports: [CommonModule, RouterModule, PoContainerModule, PoIconModule], diff --git a/projects/ui/src/lib/components/po-slide/samples/sample-po-slide-basic/sample-po-slide-basic.component.ts b/projects/ui/src/lib/components/po-slide/samples/sample-po-slide-basic/sample-po-slide-basic.component.ts index ce4967446a..3703b59331 100644 --- a/projects/ui/src/lib/components/po-slide/samples/sample-po-slide-basic/sample-po-slide-basic.component.ts +++ b/projects/ui/src/lib/components/po-slide/samples/sample-po-slide-basic/sample-po-slide-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-slide-basic', templateUrl: './sample-po-slide-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoSlideBasicComponent {} diff --git a/projects/ui/src/lib/components/po-slide/samples/sample-po-slide-external-controls/sample-po-slide-external-controls.component.ts b/projects/ui/src/lib/components/po-slide/samples/sample-po-slide-external-controls/sample-po-slide-external-controls.component.ts index 9ce35b79f2..d7bd09dfcd 100644 --- a/projects/ui/src/lib/components/po-slide/samples/sample-po-slide-external-controls/sample-po-slide-external-controls.component.ts +++ b/projects/ui/src/lib/components/po-slide/samples/sample-po-slide-external-controls/sample-po-slide-external-controls.component.ts @@ -1,10 +1,11 @@ -import { Component, OnChanges, ViewChild } from '@angular/core'; +import { Component, OnChanges, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { PoSlideComponent } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-slide-external-controls', templateUrl: './sample-po-slide-external-controls.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoSlideExternalControlsComponent { diff --git a/projects/ui/src/lib/components/po-slide/samples/sample-po-slide-labs/sample-po-slide-labs.component.ts b/projects/ui/src/lib/components/po-slide/samples/sample-po-slide-labs/sample-po-slide-labs.component.ts index f4cca9458a..f562b3c064 100644 --- a/projects/ui/src/lib/components/po-slide/samples/sample-po-slide-labs/sample-po-slide-labs.component.ts +++ b/projects/ui/src/lib/components/po-slide/samples/sample-po-slide-labs/sample-po-slide-labs.component.ts @@ -1,10 +1,11 @@ -import { Component, OnInit, inject } from '@angular/core'; +import { Component, OnInit, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoNotificationService, PoSlideItem } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-slide-labs', templateUrl: './sample-po-slide-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoSlideLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-slide/samples/sample-po-slide-landscapes/sample-po-slide-landscapes.component.ts b/projects/ui/src/lib/components/po-slide/samples/sample-po-slide-landscapes/sample-po-slide-landscapes.component.ts index 57383d1882..51aa92f4ec 100644 --- a/projects/ui/src/lib/components/po-slide/samples/sample-po-slide-landscapes/sample-po-slide-landscapes.component.ts +++ b/projects/ui/src/lib/components/po-slide/samples/sample-po-slide-landscapes/sample-po-slide-landscapes.component.ts @@ -1,10 +1,11 @@ -import { Component, ViewChild } from '@angular/core'; +import { Component, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { PoModalComponent, PoSlideItem } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-slide-landscapes', templateUrl: './sample-po-slide-landscapes.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoSlideLandscapesComponent { diff --git a/projects/ui/src/lib/components/po-slide/samples/sample-po-slide-useful-articles/sample-po-slide-useful-articles.component.ts b/projects/ui/src/lib/components/po-slide/samples/sample-po-slide-useful-articles/sample-po-slide-useful-articles.component.ts index 1411e88507..7a5b9d7876 100644 --- a/projects/ui/src/lib/components/po-slide/samples/sample-po-slide-useful-articles/sample-po-slide-useful-articles.component.ts +++ b/projects/ui/src/lib/components/po-slide/samples/sample-po-slide-useful-articles/sample-po-slide-useful-articles.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-slide-useful-articles', templateUrl: './sample-po-slide-useful-articles.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoSlideUsefulArticlesComponent { diff --git a/projects/ui/src/lib/components/po-stepper/po-step/po-step.component.ts b/projects/ui/src/lib/components/po-stepper/po-step/po-step.component.ts index 411a14d882..1862d06923 100644 --- a/projects/ui/src/lib/components/po-stepper/po-step/po-step.component.ts +++ b/projects/ui/src/lib/components/po-stepper/po-step/po-step.component.ts @@ -1,4 +1,12 @@ -import { AfterContentInit, Component, ElementRef, Input, TemplateRef, inject } from '@angular/core'; +import { + AfterContentInit, + Component, + ElementRef, + Input, + TemplateRef, + inject, + ChangeDetectionStrategy +} from '@angular/core'; import { Observable } from 'rxjs'; import { uuid } from '../../../utils/util'; @@ -45,6 +53,7 @@ import { PoStepperStatus } from '../enums/po-stepper-status.enum'; @Component({ selector: 'po-step', templateUrl: 'po-step.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoStepComponent implements AfterContentInit { diff --git a/projects/ui/src/lib/components/po-stepper/po-stepper-circle/po-stepper-circle.component.ts b/projects/ui/src/lib/components/po-stepper/po-stepper-circle/po-stepper-circle.component.ts index fb5068305a..b1dd7ac796 100644 --- a/projects/ui/src/lib/components/po-stepper/po-stepper-circle/po-stepper-circle.component.ts +++ b/projects/ui/src/lib/components/po-stepper/po-stepper-circle/po-stepper-circle.component.ts @@ -1,4 +1,4 @@ -import { Component, Input, TemplateRef } from '@angular/core'; +import { Component, Input, TemplateRef, ChangeDetectionStrategy } from '@angular/core'; import { PoStepperStatus } from '../enums/po-stepper-status.enum'; @@ -15,6 +15,7 @@ const poLargeStepSize = 48; @Component({ selector: 'po-stepper-circle', templateUrl: './po-stepper-circle.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoStepperCircleComponent { diff --git a/projects/ui/src/lib/components/po-stepper/po-stepper-label/po-stepper-label.component.ts b/projects/ui/src/lib/components/po-stepper/po-stepper-label/po-stepper-label.component.ts index 23621489e3..d9961804e0 100644 --- a/projects/ui/src/lib/components/po-stepper/po-stepper-label/po-stepper-label.component.ts +++ b/projects/ui/src/lib/components/po-stepper/po-stepper-label/po-stepper-label.component.ts @@ -9,7 +9,8 @@ import { Renderer2, SimpleChanges, ViewChild, - inject + inject, + ChangeDetectionStrategy } from '@angular/core'; /** @@ -22,6 +23,7 @@ import { @Component({ selector: 'po-stepper-label', templateUrl: './po-stepper-label.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoStepperLabelComponent implements AfterViewInit, OnChanges { diff --git a/projects/ui/src/lib/components/po-stepper/po-stepper-step/po-stepper-step.component.ts b/projects/ui/src/lib/components/po-stepper/po-stepper-step/po-stepper-step.component.ts index 65e2d00476..df57f36f8e 100644 --- a/projects/ui/src/lib/components/po-stepper/po-stepper-step/po-stepper-step.component.ts +++ b/projects/ui/src/lib/components/po-stepper/po-stepper-step/po-stepper-step.component.ts @@ -1,4 +1,13 @@ -import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges, TemplateRef } from '@angular/core'; +import { + Component, + EventEmitter, + Input, + OnChanges, + Output, + SimpleChanges, + TemplateRef, + ChangeDetectionStrategy +} from '@angular/core'; import { getShortBrowserLanguage, convertToBoolean, isTypeof } from './../../../utils/util'; import { poLocaleDefault } from './../../../services/po-language/po-language.constant'; @@ -23,6 +32,7 @@ const poStepLiteralsDefault = { @Component({ selector: 'po-stepper-step', templateUrl: 'po-stepper-step.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoStepperStepComponent implements OnChanges { diff --git a/projects/ui/src/lib/components/po-stepper/po-stepper.component.html b/projects/ui/src/lib/components/po-stepper/po-stepper.component.html index 4b7c84f327..5e6c795516 100644 --- a/projects/ui/src/lib/components/po-stepper/po-stepper.component.html +++ b/projects/ui/src/lib/components/po-stepper/po-stepper.component.html @@ -1,17 +1,18 @@
    - + @for (step of stepList; track step.id; let index = $index) {
    -
    + @if (index > 0) { +
    + } -
    + @if (index < stepList.length - 1) { +
    + }
    -
    + }
    -
    - -
    + @if (usePoSteps) { +
    + +
    + }
    diff --git a/projects/ui/src/lib/components/po-stepper/po-stepper.component.ts b/projects/ui/src/lib/components/po-stepper/po-stepper.component.ts index 03932757a2..58574c9f0a 100644 --- a/projects/ui/src/lib/components/po-stepper/po-stepper.component.ts +++ b/projects/ui/src/lib/components/po-stepper/po-stepper.component.ts @@ -1,4 +1,12 @@ -import { AfterContentInit, ChangeDetectorRef, Component, ContentChildren, QueryList, inject } from '@angular/core'; +import { + AfterContentInit, + ChangeDetectorRef, + Component, + ContentChildren, + QueryList, + inject, + ChangeDetectionStrategy +} from '@angular/core'; import { Observable, of, throwError } from 'rxjs'; import { take, tap, catchError, map, mergeMap } from 'rxjs/operators'; @@ -43,6 +51,7 @@ import { PoStepperItem } from './po-stepper-item.interface'; @Component({ selector: 'po-stepper', templateUrl: './po-stepper.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoStepperComponent extends PoStepperBaseComponent implements AfterContentInit { @@ -242,10 +251,6 @@ export class PoStepperComponent extends PoStepperBaseComponent implements AfterC }); } - trackByFn(step: PoStepComponent) { - return step.id; - } - private activeFirstStep() { const hasStepActive = this.poSteps.some(poStep => poStep.status === PoStepperStatus.Active); diff --git a/projects/ui/src/lib/components/po-stepper/samples/sample-po-stepper-active/sample-po-stepper-active.component.ts b/projects/ui/src/lib/components/po-stepper/samples/sample-po-stepper-active/sample-po-stepper-active.component.ts index 7524d39ab2..a2e143eef6 100644 --- a/projects/ui/src/lib/components/po-stepper/samples/sample-po-stepper-active/sample-po-stepper-active.component.ts +++ b/projects/ui/src/lib/components/po-stepper/samples/sample-po-stepper-active/sample-po-stepper-active.component.ts @@ -1,4 +1,13 @@ -import { AfterViewInit, ChangeDetectorRef, Component, OnDestroy, OnInit, ViewChild, inject } from '@angular/core'; +import { + AfterViewInit, + ChangeDetectorRef, + Component, + OnDestroy, + OnInit, + ViewChild, + inject, + ChangeDetectionStrategy +} from '@angular/core'; import { NgForm } from '@angular/forms'; import { Subscription } from 'rxjs'; import { PoSelectOption, PoStepperComponent } from '@po-ui/ng-components'; @@ -7,6 +16,7 @@ import { SamplePoStepperActiveService } from './sample-po-stepper-active.service @Component({ selector: 'sample-po-stepper-active', templateUrl: './sample-po-stepper-active.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoStepperActiveComponent implements OnInit, AfterViewInit, OnDestroy { diff --git a/projects/ui/src/lib/components/po-stepper/samples/sample-po-stepper-basic/sample-po-stepper-basic.component.ts b/projects/ui/src/lib/components/po-stepper/samples/sample-po-stepper-basic/sample-po-stepper-basic.component.ts index 243f721068..bbc5be642e 100644 --- a/projects/ui/src/lib/components/po-stepper/samples/sample-po-stepper-basic/sample-po-stepper-basic.component.ts +++ b/projects/ui/src/lib/components/po-stepper/samples/sample-po-stepper-basic/sample-po-stepper-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-stepper-basic', templateUrl: './sample-po-stepper-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoStepperBasicComponent {} diff --git a/projects/ui/src/lib/components/po-stepper/samples/sample-po-stepper-labs/sample-po-stepper-labs.component.ts b/projects/ui/src/lib/components/po-stepper/samples/sample-po-stepper-labs/sample-po-stepper-labs.component.ts index 1a1aa1635b..0293020646 100644 --- a/projects/ui/src/lib/components/po-stepper/samples/sample-po-stepper-labs/sample-po-stepper-labs.component.ts +++ b/projects/ui/src/lib/components/po-stepper/samples/sample-po-stepper-labs/sample-po-stepper-labs.component.ts @@ -1,10 +1,11 @@ -import { ChangeDetectorRef, Component, OnInit, inject } from '@angular/core'; +import { ChangeDetectorRef, Component, OnInit, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoDynamicFormField, PoStepperItem } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-stepper-labs', templateUrl: './sample-po-stepper-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoStepperLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-stepper/samples/sample-po-stepper-sales/sample-po-stepper-sales.component.ts b/projects/ui/src/lib/components/po-stepper/samples/sample-po-stepper-sales/sample-po-stepper-sales.component.ts index 2bcdab83fa..b182bdac19 100644 --- a/projects/ui/src/lib/components/po-stepper/samples/sample-po-stepper-sales/sample-po-stepper-sales.component.ts +++ b/projects/ui/src/lib/components/po-stepper/samples/sample-po-stepper-sales/sample-po-stepper-sales.component.ts @@ -1,4 +1,4 @@ -import { Component, ViewChild } from '@angular/core'; +import { Component, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { NgForm } from '@angular/forms'; import { PoModalComponent, PoStepComponent, PoStepperComponent } from '@po-ui/ng-components'; @@ -9,6 +9,7 @@ import { delay, finalize, map, tap } from 'rxjs/operators'; selector: 'sample-po-stepper-sales', templateUrl: './sample-po-stepper-sales.component.html', styleUrls: ['./sample-po-stepper-sales.component.css'], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoStepperSalesComponent { diff --git a/projects/ui/src/lib/components/po-stepper/samples/sample-po-stepper-steps/sample-po-stepper-steps.component.ts b/projects/ui/src/lib/components/po-stepper/samples/sample-po-stepper-steps/sample-po-stepper-steps.component.ts index e824e47fe6..13e9c16300 100644 --- a/projects/ui/src/lib/components/po-stepper/samples/sample-po-stepper-steps/sample-po-stepper-steps.component.ts +++ b/projects/ui/src/lib/components/po-stepper/samples/sample-po-stepper-steps/sample-po-stepper-steps.component.ts @@ -1,9 +1,10 @@ -import { AfterViewInit, ChangeDetectorRef, Component, inject } from '@angular/core'; +import { AfterViewInit, ChangeDetectorRef, Component, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoStepperItem, PoStepperStatus } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-stepper-steps', templateUrl: './sample-po-stepper-steps.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoStepperStepsComponent implements AfterViewInit { diff --git a/projects/ui/src/lib/components/po-table/po-table-base.component.spec.ts b/projects/ui/src/lib/components/po-table/po-table-base.component.spec.ts index 6240c82ac5..67088527fa 100644 --- a/projects/ui/src/lib/components/po-table/po-table-base.component.spec.ts +++ b/projects/ui/src/lib/components/po-table/po-table-base.component.spec.ts @@ -6,7 +6,7 @@ import { PoLanguageService } from '../../services/po-language/po-language.servic import { expectPropertiesValues, expectSettersMethod } from '../../util-test/util-expect.spec'; import { PoUtils as utilsFunctions } from '../../utils/util'; -import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; import { provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed } from '@angular/core/testing'; import { Observable, of } from 'rxjs'; @@ -40,7 +40,7 @@ describe('PoTableBaseComponent:', () => { PoTableService, PoLanguageService, PoDateService, - provideHttpClient(withInterceptorsFromDi()), + provideHttpClient(withXhr(), withInterceptorsFromDi()), provideHttpClientTesting() ] }).compileComponents(); diff --git a/projects/ui/src/lib/components/po-table/po-table-column-frozen/po-table-column-frozen.directive.spec.ts b/projects/ui/src/lib/components/po-table/po-table-column-frozen/po-table-column-frozen.directive.spec.ts index e2f7fbe5af..a20519d178 100644 --- a/projects/ui/src/lib/components/po-table/po-table-column-frozen/po-table-column-frozen.directive.spec.ts +++ b/projects/ui/src/lib/components/po-table/po-table-column-frozen/po-table-column-frozen.directive.spec.ts @@ -1,5 +1,5 @@ import { TestBed, ComponentFixture, fakeAsync, tick } from '@angular/core/testing'; -import { Component, DebugElement, ElementRef, SimpleChanges } from '@angular/core'; +import { Component, DebugElement, ElementRef, SimpleChanges, ChangeDetectionStrategy } from '@angular/core'; import { By } from '@angular/platform-browser'; import { PoTableColumnFrozenDirective } from './po-table-column-frozen.directive'; @@ -10,6 +10,7 @@ import { PoTableColumnFrozenDirective } from './po-table-column-frozen.directive
    `, + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) class TestHostComponent { diff --git a/projects/ui/src/lib/components/po-table/po-table-column-icon/po-table-column-icon.component.html b/projects/ui/src/lib/components/po-table/po-table-column-icon/po-table-column-icon.component.html index 003daa589d..32098361ec 100644 --- a/projects/ui/src/lib/components/po-table/po-table-column-icon/po-table-column-icon.component.html +++ b/projects/ui/src/lib/components/po-table/po-table-column-icon/po-table-column-icon.component.html @@ -1,10 +1,11 @@ - - +@for (column of icons; track $index) { + + +} diff --git a/projects/ui/src/lib/components/po-table/po-table-column-label/po-table-column-label.component.html b/projects/ui/src/lib/components/po-table/po-table-column-label/po-table-column-label.component.html index 38dadc8506..18ce91a224 100644 --- a/projects/ui/src/lib/components/po-table/po-table-column-label/po-table-column-label.component.html +++ b/projects/ui/src/lib/components/po-table/po-table-column-label/po-table-column-label.component.html @@ -1,10 +1,10 @@ @if (checkValueHasLabel()) { } diff --git a/projects/ui/src/lib/components/po-table/po-table-column-link/po-table-column-link.component.spec.ts b/projects/ui/src/lib/components/po-table/po-table-column-link/po-table-column-link.component.spec.ts index 22cfb9ea46..93639cbbf6 100644 --- a/projects/ui/src/lib/components/po-table/po-table-column-link/po-table-column-link.component.spec.ts +++ b/projects/ui/src/lib/components/po-table/po-table-column-link/po-table-column-link.component.spec.ts @@ -1,5 +1,6 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { PoTableColumnLinkComponent } from './po-table-column-link.component'; import { PoTableModule } from '../po-table.module'; @@ -12,7 +13,8 @@ describe('PoTableColumnLinkComponent:', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [RouterTestingModule.withRoutes([]), PoTableModule, PoTooltipModule] + imports: [RouterModule.forRoot([]), PoTableModule, PoTooltipModule], + providers: [provideLocationMocks()] }).compileComponents(); fixture = TestBed.createComponent(PoTableColumnLinkComponent); diff --git a/projects/ui/src/lib/components/po-table/po-table-column-manager/po-table-column-manager.component.ts b/projects/ui/src/lib/components/po-table/po-table-column-manager/po-table-column-manager.component.ts index bc507de28c..7a316e0fbf 100644 --- a/projects/ui/src/lib/components/po-table/po-table-column-manager/po-table-column-manager.component.ts +++ b/projects/ui/src/lib/components/po-table/po-table-column-manager/po-table-column-manager.component.ts @@ -10,7 +10,8 @@ import { SimpleChange, SimpleChanges, ViewChild, - output + output, + ChangeDetectionStrategy } from '@angular/core'; import { PoFieldSize } from '../../../enums/po-field-size.enum'; @@ -48,6 +49,7 @@ type Direction = 'up' | 'down'; @Component({ selector: 'po-table-column-manager', templateUrl: './po-table-column-manager.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoTableColumnManagerComponent implements OnChanges, OnDestroy { diff --git a/projects/ui/src/lib/components/po-table/po-table-detail/po-table-detail.component.ts b/projects/ui/src/lib/components/po-table/po-table-detail/po-table-detail.component.ts index 5efe310aba..5445338b06 100644 --- a/projects/ui/src/lib/components/po-table/po-table-detail/po-table-detail.component.ts +++ b/projects/ui/src/lib/components/po-table/po-table-detail/po-table-detail.component.ts @@ -1,5 +1,5 @@ import { DecimalPipe } from '@angular/common'; -import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { Component, EventEmitter, Input, Output, ChangeDetectionStrategy } from '@angular/core'; import { getDefaultSizeFn, isTypeof, validateSizeFn, PoUtils } from '../../../utils/util'; @@ -17,6 +17,7 @@ import { PoTableDetail } from './po-table-detail.interface'; @Component({ selector: 'po-table-detail', templateUrl: './po-table-detail.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoTableDetailComponent { diff --git a/projects/ui/src/lib/components/po-table/po-table-list-manager/po-table-list-manager.component.ts b/projects/ui/src/lib/components/po-table/po-table-list-manager/po-table-list-manager.component.ts index 7e2f9db0e3..453e8a9ca1 100644 --- a/projects/ui/src/lib/components/po-table/po-table-list-manager/po-table-list-manager.component.ts +++ b/projects/ui/src/lib/components/po-table/po-table-list-manager/po-table-list-manager.component.ts @@ -1,4 +1,14 @@ -import { ChangeDetectorRef, Component, EventEmitter, Inject, Input, Optional, Output, forwardRef } from '@angular/core'; +import { + ChangeDetectorRef, + Component, + EventEmitter, + Inject, + Input, + Optional, + Output, + forwardRef, + ChangeDetectionStrategy +} from '@angular/core'; import { NG_VALUE_ACCESSOR } from '@angular/forms'; import { PoFieldSize } from '../../../enums/po-field-size.enum'; @@ -47,6 +57,7 @@ type Direction = 'up' | 'down'; multi: true } ], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoTableListManagerComponent extends PoCheckboxGroupComponent { diff --git a/projects/ui/src/lib/components/po-table/po-table-show-subtitle/po-table-show-subtitle.component.ts b/projects/ui/src/lib/components/po-table/po-table-show-subtitle/po-table-show-subtitle.component.ts index cfe375c4e3..9c2297fd33 100644 --- a/projects/ui/src/lib/components/po-table/po-table-show-subtitle/po-table-show-subtitle.component.ts +++ b/projects/ui/src/lib/components/po-table/po-table-show-subtitle/po-table-show-subtitle.component.ts @@ -1,4 +1,4 @@ -import { Component, Input } from '@angular/core'; +import { Component, Input, ChangeDetectionStrategy } from '@angular/core'; import { PoTableSubtitleColumn } from '../po-table-subtitle-footer/po-table-subtitle-column.interface'; @@ -12,6 +12,7 @@ import { PoTableSubtitleColumn } from '../po-table-subtitle-footer/po-table-subt @Component({ selector: 'po-table-show-subtitle', templateUrl: './po-table-show-subtitle.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoTableShowSubtitleComponent { diff --git a/projects/ui/src/lib/components/po-table/po-table-subtitle-circle/po-table-subtitle-circle.component.html b/projects/ui/src/lib/components/po-table/po-table-subtitle-circle/po-table-subtitle-circle.component.html index caaf83f5d7..2c0349e0e7 100644 --- a/projects/ui/src/lib/components/po-table/po-table-subtitle-circle/po-table-subtitle-circle.component.html +++ b/projects/ui/src/lib/components/po-table/po-table-subtitle-circle/po-table-subtitle-circle.component.html @@ -1,3 +1,6 @@ - + {{ subtitle?.content }} diff --git a/projects/ui/src/lib/components/po-table/po-table-subtitle-footer/po-table-subtitle-footer.component.ts b/projects/ui/src/lib/components/po-table/po-table-subtitle-footer/po-table-subtitle-footer.component.ts index cb7a117886..f6aa94ee60 100644 --- a/projects/ui/src/lib/components/po-table/po-table-subtitle-footer/po-table-subtitle-footer.component.ts +++ b/projects/ui/src/lib/components/po-table/po-table-subtitle-footer/po-table-subtitle-footer.component.ts @@ -1,4 +1,13 @@ -import { AfterViewInit, Component, DoCheck, ElementRef, Input, OnDestroy, Renderer2 } from '@angular/core'; +import { + AfterViewInit, + Component, + DoCheck, + ElementRef, + Input, + OnDestroy, + Renderer2, + ChangeDetectionStrategy +} from '@angular/core'; import { PoTableSubtitleColumn } from './po-table-subtitle-column.interface'; @@ -12,6 +21,7 @@ import { PoTableSubtitleColumn } from './po-table-subtitle-column.interface'; @Component({ selector: 'po-table-subtitle-footer', templateUrl: './po-table-subtitle-footer.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoTableSubtitleFooterComponent implements AfterViewInit, DoCheck, OnDestroy { diff --git a/projects/ui/src/lib/components/po-table/po-table.component.html b/projects/ui/src/lib/components/po-table/po-table.component.html index 570ddfdb94..cd85d59e15 100644 --- a/projects/ui/src/lib/components/po-table/po-table.component.html +++ b/projects/ui/src/lib/components/po-table/po-table.component.html @@ -269,7 +269,7 @@ [ngClass]="{ 'po-table-header-sorted': sort && - JSON.stringify(sortedColumn?.property) === JSON.stringify(column) && + JSON.stringify($safeNavigationMigration(sortedColumn?.property)) === JSON.stringify(column) && (sortedColumn.ascending || !sortedColumn.ascending) }" [ngStyle]="{ @@ -309,7 +309,7 @@ [ngClass]="{ 'po-table-header-sorted': sort && - JSON.stringify(sortedColumn?.property) === JSON.stringify(column) && + JSON.stringify($safeNavigationMigration(sortedColumn?.property)) === JSON.stringify(column) && (sortedColumn.ascending || !sortedColumn.ascending) }" [ngStyle]="{ @@ -430,7 +430,10 @@ @case ('cellTemplate') { @@ -634,7 +637,7 @@ [ngClass]="{ 'po-table-header-sorted': sort && - JSON.stringify(sortedColumn?.property) === JSON.stringify(column) && + JSON.stringify($safeNavigationMigration(sortedColumn?.property)) === JSON.stringify(column) && (sortedColumn.ascending || !sortedColumn.ascending) }" [ngStyle]="{ 'width': !hasItems ? '100%' : applyFixedColumns() ? column.width : 'auto' }" @@ -672,7 +675,7 @@ [ngClass]="{ 'po-table-header-sorted': sort && - JSON.stringify(sortedColumn?.property) === JSON.stringify(column) && + JSON.stringify($safeNavigationMigration(sortedColumn?.property)) === JSON.stringify(column) && (sortedColumn.ascending || !sortedColumn.ascending) }" [ngStyle]="{ 'width': !hasItems ? '100%' : applyFixedColumns() ? column.width : 'auto' }" @@ -793,7 +796,10 @@ @case ('cellTemplate') { @@ -954,21 +960,31 @@ @if (sort && column.sortable !== false) { - @if (JSON.stringify(sortedColumn?.property) !== JSON.stringify(column)) { + @if (JSON.stringify($safeNavigationMigration(sortedColumn?.property)) !== JSON.stringify(column)) { } - @if (JSON.stringify(sortedColumn?.property) === JSON.stringify(column) && sortedColumn.ascending) { + @if ( + JSON.stringify($safeNavigationMigration(sortedColumn?.property)) === JSON.stringify(column) && + sortedColumn.ascending + ) { } - @if (JSON.stringify(sortedColumn?.property) === JSON.stringify(column) && !sortedColumn.ascending) { + @if ( + JSON.stringify($safeNavigationMigration(sortedColumn?.property)) === JSON.stringify(column) && + !sortedColumn.ascending + ) { } diff --git a/projects/ui/src/lib/components/po-table/po-table.component.spec.ts b/projects/ui/src/lib/components/po-table/po-table.component.spec.ts index 7e3a28fa3c..8a675ecbe2 100644 --- a/projects/ui/src/lib/components/po-table/po-table.component.spec.ts +++ b/projects/ui/src/lib/components/po-table/po-table.component.spec.ts @@ -1,10 +1,10 @@ import { DecimalPipe } from '@angular/common'; import { provideHttpClientTesting } from '@angular/common/http/testing'; -import { Component, ElementRef, TemplateRef, ViewChild } from '@angular/core'; +import { Component, ElementRef, TemplateRef, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { ComponentFixture, TestBed, fakeAsync, tick } from '@angular/core/testing'; +import { provideLocationMocks } from '@angular/common/testing'; import { By } from '@angular/platform-browser'; -import { Routes } from '@angular/router'; -import { RouterTestingModule } from '@angular/router/testing'; +import { Routes, RouterModule } from '@angular/router'; import { of, throwError } from 'rxjs'; import { PoControlPositionService } from '../../services/po-control-position/po-control-position.service'; @@ -13,8 +13,7 @@ import { PoUtils as utilsFunctions } from '../../utils/util'; import { PoColorPaletteService } from './../../services/po-color-palette/po-color-palette.service'; import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling'; -import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; -import { NoopAnimationsModule } from '@angular/platform-browser/animations'; +import { provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; import { PoFieldSize } from '../../enums/po-field-size.enum'; import { PoTableRowTemplateArrowDirection } from './enums/po-table-row-template-arrow-direction.enum'; import { PoTableColumnSpacing } from './enums/po-table-spacing.enum'; @@ -31,6 +30,7 @@ import { PoSearchAiResponseType } from '../po-field/po-search-ai/interfaces/po-s @Component({ selector: 'app-table-search', template: 'Search', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SearchComponent {} @@ -38,6 +38,7 @@ export class SearchComponent {} @Component({ selector: 'app-table-test-menu', template: 'Home', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class TestMenuComponent {} @@ -223,7 +224,7 @@ describe('PoTableComponent:', () => { debounceResize: () => true, checkInfiniteScroll: () => {}, applyFixedColumns: () => {}, - initializeVisibleElement() { + initializeVisibleElement: function () { if (this.tableWrapperElement?.nativeElement.offsetWidth && !this.visibleElement) { this.debounceResize(); this.checkInfiniteScroll(); @@ -242,8 +243,9 @@ describe('PoTableComponent:', () => { await TestBed.configureTestingModule({ declarations: [TestMenuComponent, SearchComponent], - imports: [RouterTestingModule.withRoutes(routes), PoTableModule, NoopAnimationsModule], + imports: [RouterModule.forRoot(routes), PoTableModule], providers: [ + provideLocationMocks(), PoControlPositionService, PoDateService, DecimalPipe, @@ -251,7 +253,7 @@ describe('PoTableComponent:', () => { { provide: PoTableService, useValue: poTableService }, { provide: CdkVirtualScrollViewport, useValue: mockViewPort }, { provide: changeDetector, useValue: changeDetector }, - provideHttpClient(withInterceptorsFromDi()), + provideHttpClient(withXhr(), withInterceptorsFromDi()), provideHttpClientTesting() ] }).compileComponents(); @@ -3978,4 +3980,35 @@ describe('PoTableComponent:', () => { expect(component.searchAiComponent.search).toHaveBeenCalled(); }); }); + + describe('initializeVisibleElement:', () => { + it('should call debounceResize, checkInfiniteScroll and set visibleElement when wrapper has width and element is not visible', () => { + // Exercita o método REAL do componente de forma determinística, sem depender + // do offsetWidth calculado pelo layout do headless (que oscila e tornava a + // cobertura deste trecho intermitente). + component['tableWrapperElement'] = { nativeElement: { offsetWidth: 100 } } as any; + component['visibleElement'] = false; + spyOn(component, 'debounceResize'); + spyOn(component, 'checkInfiniteScroll'); + + component['initializeVisibleElement'](); + + expect(component['debounceResize']).toHaveBeenCalled(); + expect(component['checkInfiniteScroll']).toHaveBeenCalled(); + expect(component['visibleElement']).toBeTrue(); + }); + + it('should not do anything when wrapper width is 0', () => { + component['tableWrapperElement'] = { nativeElement: { offsetWidth: 0 } } as any; + component['visibleElement'] = false; + spyOn(component, 'debounceResize'); + spyOn(component, 'checkInfiniteScroll'); + + component['initializeVisibleElement'](); + + expect(component['debounceResize']).not.toHaveBeenCalled(); + expect(component['checkInfiniteScroll']).not.toHaveBeenCalled(); + expect(component['visibleElement']).toBeFalse(); + }); + }); }); diff --git a/projects/ui/src/lib/components/po-table/po-table.component.ts b/projects/ui/src/lib/components/po-table/po-table.component.ts index d5b13e64a1..fd5d17b14b 100644 --- a/projects/ui/src/lib/components/po-table/po-table.component.ts +++ b/projects/ui/src/lib/components/po-table/po-table.component.ts @@ -18,7 +18,8 @@ import { TemplateRef, ViewChild, ViewChildren, - inject + inject, + ChangeDetectionStrategy } from '@angular/core'; import { Observable, Subscription } from 'rxjs'; @@ -99,7 +100,7 @@ import { PoFieldSize } from '../../enums/po-field-size.enum'; * * * - * + * * * * @@ -108,6 +109,7 @@ import { PoFieldSize } from '../../enums/po-field-size.enum'; selector: 'po-table', templateUrl: './po-table.component.html', providers: [PoDateService, PoTableService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoTableComponent extends PoTableBaseComponent implements AfterViewInit, DoCheck, OnDestroy, OnInit { diff --git a/projects/ui/src/lib/components/po-table/samples/sample-po-table-airfare/sample-po-table-airfare.component.html b/projects/ui/src/lib/components/po-table/samples/sample-po-table-airfare/sample-po-table-airfare.component.html index a0367dab81..154ef6d75c 100644 --- a/projects/ui/src/lib/components/po-table/samples/sample-po-table-airfare/sample-po-table-airfare.component.html +++ b/projects/ui/src/lib/components/po-table/samples/sample-po-table-airfare/sample-po-table-airfare.component.html @@ -51,9 +51,9 @@
    - + - + - + diff --git a/projects/ui/src/lib/components/po-table/samples/sample-po-table-airfare/sample-po-table-airfare.component.ts b/projects/ui/src/lib/components/po-table/samples/sample-po-table-airfare/sample-po-table-airfare.component.ts index 8c9abce50b..0933d99901 100644 --- a/projects/ui/src/lib/components/po-table/samples/sample-po-table-airfare/sample-po-table-airfare.component.ts +++ b/projects/ui/src/lib/components/po-table/samples/sample-po-table-airfare/sample-po-table-airfare.component.ts @@ -1,4 +1,4 @@ -import { AfterViewInit, Component, ViewChild, OnInit } from '@angular/core'; +import { AfterViewInit, Component, ViewChild, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoDialogService, @@ -15,6 +15,7 @@ import { SamplePoTableAirfareService } from './sample-po-table-airfare.service'; selector: 'sample-po-table-airfare', templateUrl: './sample-po-table-airfare.component.html', providers: [SamplePoTableAirfareService, PoDialogService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoTableAirfareComponent implements AfterViewInit, OnInit { diff --git a/projects/ui/src/lib/components/po-table/samples/sample-po-table-basic/sample-po-table-basic.component.ts b/projects/ui/src/lib/components/po-table/samples/sample-po-table-basic/sample-po-table-basic.component.ts index 36ee213959..e8341e5383 100644 --- a/projects/ui/src/lib/components/po-table/samples/sample-po-table-basic/sample-po-table-basic.component.ts +++ b/projects/ui/src/lib/components/po-table/samples/sample-po-table-basic/sample-po-table-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-table-basic', templateUrl: './sample-po-table-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoTableBasicComponent {} diff --git a/projects/ui/src/lib/components/po-table/samples/sample-po-table-components/sample-po-table-components.component.ts b/projects/ui/src/lib/components/po-table/samples/sample-po-table-components/sample-po-table-components.component.ts index c09d5b2bb4..e689e23a2a 100644 --- a/projects/ui/src/lib/components/po-table/samples/sample-po-table-components/sample-po-table-components.component.ts +++ b/projects/ui/src/lib/components/po-table/samples/sample-po-table-components/sample-po-table-components.component.ts @@ -1,4 +1,4 @@ -import { Component, ViewChild, OnInit } from '@angular/core'; +import { Component, ViewChild, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { Router } from '@angular/router'; import { PoModalComponent, PoTableColumn, PoTableColumnLabel, PoTableColumnSort } from '@po-ui/ng-components'; @@ -11,6 +11,7 @@ import { SamplePoTableComponentsService } from './sample-po-table-components.ser templateUrl: './sample-po-table-components.component.html', styleUrls: ['./sample-po-table-components.component.css'], providers: [SamplePoTableComponentsService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoTableComponentsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-table/samples/sample-po-table-draggable/sample-po-table-draggable.component.ts b/projects/ui/src/lib/components/po-table/samples/sample-po-table-draggable/sample-po-table-draggable.component.ts index 5c1df1f765..8ea0df7232 100644 --- a/projects/ui/src/lib/components/po-table/samples/sample-po-table-draggable/sample-po-table-draggable.component.ts +++ b/projects/ui/src/lib/components/po-table/samples/sample-po-table-draggable/sample-po-table-draggable.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-table-draggable', templateUrl: './sample-po-table-draggable.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoTableDraggableComponent {} diff --git a/projects/ui/src/lib/components/po-table/samples/sample-po-table-heroes/sample-po-table-heroes.component.ts b/projects/ui/src/lib/components/po-table/samples/sample-po-table-heroes/sample-po-table-heroes.component.ts index beb20f89e0..2216be3af1 100644 --- a/projects/ui/src/lib/components/po-table/samples/sample-po-table-heroes/sample-po-table-heroes.component.ts +++ b/projects/ui/src/lib/components/po-table/samples/sample-po-table-heroes/sample-po-table-heroes.component.ts @@ -1,4 +1,4 @@ -import { Component, ViewChild, OnInit } from '@angular/core'; +import { Component, ViewChild, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoTableColumn, PoTableComponent } from '@po-ui/ng-components'; import { SamplePoTableHeroesService } from './sample-po-table-heroes.service'; @@ -7,6 +7,7 @@ import { SamplePoTableHeroesService } from './sample-po-table-heroes.service'; selector: 'sample-po-table-heroes', templateUrl: './sample-po-table-heroes.component.html', providers: [SamplePoTableHeroesService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoTableHeroesComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-table/samples/sample-po-table-labs/sample-po-table-labs.component.ts b/projects/ui/src/lib/components/po-table/samples/sample-po-table-labs/sample-po-table-labs.component.ts index 8201b85c47..d2ee09d06f 100644 --- a/projects/ui/src/lib/components/po-table/samples/sample-po-table-labs/sample-po-table-labs.component.ts +++ b/projects/ui/src/lib/components/po-table/samples/sample-po-table-labs/sample-po-table-labs.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, ViewChild } from '@angular/core'; +import { Component, OnInit, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption, @@ -17,6 +17,7 @@ import { SamplePoTableLabsService } from './sample-po-table-labs.service'; selector: 'sample-po-table-labs', templateUrl: './sample-po-table-labs.component.html', providers: [SamplePoTableLabsService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoTableLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-table/samples/sample-po-table-transport/sample-po-table-transport.component.ts b/projects/ui/src/lib/components/po-table/samples/sample-po-table-transport/sample-po-table-transport.component.ts index 7f5d6dee62..b4d6b1346d 100644 --- a/projects/ui/src/lib/components/po-table/samples/sample-po-table-transport/sample-po-table-transport.component.ts +++ b/projects/ui/src/lib/components/po-table/samples/sample-po-table-transport/sample-po-table-transport.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoSelectOption } from '@po-ui/ng-components'; @@ -10,6 +10,7 @@ import { SamplePoTableTransportService } from './sample-po-table-transport.servi selector: 'sample-po-table-transport', templateUrl: 'sample-po-table-transport.component.html', providers: [SamplePoTableTransportService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoTableTransportComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-table/samples/sample-po-table-with-api/sample-po-table-with-api.component.ts b/projects/ui/src/lib/components/po-table/samples/sample-po-table-with-api/sample-po-table-with-api.component.ts index 8fa2a6c835..22786da8f1 100644 --- a/projects/ui/src/lib/components/po-table/samples/sample-po-table-with-api/sample-po-table-with-api.component.ts +++ b/projects/ui/src/lib/components/po-table/samples/sample-po-table-with-api/sample-po-table-with-api.component.ts @@ -1,9 +1,10 @@ -import { Component, ViewChild } from '@angular/core'; +import { Component, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { PoDisclaimerGroupRemoveAction, PoDisclaimer, PoTableComponent, PoTableColumn } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-table-with-api', templateUrl: './sample-po-table-with-api.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoTableWithApiComponent { diff --git a/projects/ui/src/lib/components/po-table/services/po-table.service.spec.ts b/projects/ui/src/lib/components/po-table/services/po-table.service.spec.ts index 1233584769..af342d9b39 100644 --- a/projects/ui/src/lib/components/po-table/services/po-table.service.spec.ts +++ b/projects/ui/src/lib/components/po-table/services/po-table.service.spec.ts @@ -3,7 +3,7 @@ import { provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed } from '@angular/core/testing'; import { PoTableService } from './po-table.service'; -import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; describe('PoTableService', () => { let service: PoTableService; @@ -11,7 +11,7 @@ describe('PoTableService', () => { beforeEach(() => { TestBed.configureTestingModule({ imports: [], - providers: [provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting(), PoTableService] + providers: [provideHttpClient(withXhr(), withInterceptorsFromDi()), provideHttpClientTesting(), PoTableService] }); service = TestBed.inject(PoTableService); }); diff --git a/projects/ui/src/lib/components/po-tabs/po-tab-button/po-tab-button.component.ts b/projects/ui/src/lib/components/po-tabs/po-tab-button/po-tab-button.component.ts index ebfdffa0a0..c3cda503ef 100644 --- a/projects/ui/src/lib/components/po-tabs/po-tab-button/po-tab-button.component.ts +++ b/projects/ui/src/lib/components/po-tabs/po-tab-button/po-tab-button.component.ts @@ -9,7 +9,8 @@ import { Output, SimpleChanges, ViewChild, - inject + inject, + ChangeDetectionStrategy } from '@angular/core'; import { convertToBoolean } from '../../../utils/util'; @@ -24,6 +25,7 @@ import { convertToBoolean } from '../../../utils/util'; @Component({ selector: 'po-tab-button', templateUrl: './po-tab-button.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoTabButtonComponent implements OnChanges, AfterViewInit { diff --git a/projects/ui/src/lib/components/po-tabs/po-tab-dropdown/po-tab-dropdown.component.spec.ts b/projects/ui/src/lib/components/po-tabs/po-tab-dropdown/po-tab-dropdown.component.spec.ts index 2612563427..e6fae280f5 100644 --- a/projects/ui/src/lib/components/po-tabs/po-tab-dropdown/po-tab-dropdown.component.spec.ts +++ b/projects/ui/src/lib/components/po-tabs/po-tab-dropdown/po-tab-dropdown.component.spec.ts @@ -1,6 +1,7 @@ import { ElementRef } from '@angular/core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { configureTestSuite } from './../../../util-test/util-expect.spec'; @@ -48,9 +49,9 @@ describe('PoTabDropdownComponent:', () => { configureTestSuite(() => { TestBed.configureTestingModule({ - imports: [PoPopoverModule, RouterTestingModule.withRoutes([])], + imports: [PoPopoverModule, RouterModule.forRoot([])], declarations: [PoTabDropdownComponent], - providers: [{ provide: ElementRef, useValue: buttonElementRefMock }] + providers: [provideLocationMocks(), { provide: ElementRef, useValue: buttonElementRefMock }] }); }); diff --git a/projects/ui/src/lib/components/po-tabs/po-tab-dropdown/po-tab-dropdown.component.ts b/projects/ui/src/lib/components/po-tabs/po-tab-dropdown/po-tab-dropdown.component.ts index 227f6b3f93..f5a21f5554 100644 --- a/projects/ui/src/lib/components/po-tabs/po-tab-dropdown/po-tab-dropdown.component.ts +++ b/projects/ui/src/lib/components/po-tabs/po-tab-dropdown/po-tab-dropdown.component.ts @@ -7,7 +7,8 @@ import { Input, Output, ViewChild, - inject + inject, + ChangeDetectionStrategy } from '@angular/core'; import { PoButtonComponent } from '../../po-button/po-button.component'; @@ -25,6 +26,7 @@ import { PoTabComponent } from '../po-tab/po-tab.component'; @Component({ selector: 'po-tab-dropdown', templateUrl: './po-tab-dropdown.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoTabDropdownComponent implements AfterViewInit { diff --git a/projects/ui/src/lib/components/po-tabs/po-tab/po-tab.base.component.spec.ts b/projects/ui/src/lib/components/po-tabs/po-tab/po-tab.base.component.spec.ts index b7fac3becb..cf0bd65cbc 100644 --- a/projects/ui/src/lib/components/po-tabs/po-tab/po-tab.base.component.spec.ts +++ b/projects/ui/src/lib/components/po-tabs/po-tab/po-tab.base.component.spec.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { TestBed } from '@angular/core/testing'; import { expectPropertiesValues } from '../../../util-test/util-expect.spec'; @@ -7,6 +7,7 @@ import { PoTabBaseComponent } from './po-tab-base.component'; @Component({ template: '', + changeDetection: ChangeDetectionStrategy.Eager, standalone: true }) class PoTabComponent extends PoTabBaseComponent { diff --git a/projects/ui/src/lib/components/po-tabs/po-tab/po-tab.component.ts b/projects/ui/src/lib/components/po-tabs/po-tab/po-tab.component.ts index f12e0fddb6..558170e75b 100644 --- a/projects/ui/src/lib/components/po-tabs/po-tab/po-tab.component.ts +++ b/projects/ui/src/lib/components/po-tabs/po-tab/po-tab.component.ts @@ -1,4 +1,12 @@ -import { AfterContentInit, Component, ElementRef, OnChanges, SimpleChanges, inject } from '@angular/core'; +import { + AfterContentInit, + Component, + ElementRef, + OnChanges, + SimpleChanges, + inject, + ChangeDetectionStrategy +} from '@angular/core'; import { PoTabBaseComponent } from './po-tab-base.component'; import { PoTabsService } from '../po-tabs.service'; @@ -9,6 +17,7 @@ import { PoTabsService } from '../po-tabs.service'; @Component({ selector: 'po-tab', templateUrl: './po-tab.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoTabComponent extends PoTabBaseComponent implements AfterContentInit, OnChanges { diff --git a/projects/ui/src/lib/components/po-tabs/po-tabs.component.ts b/projects/ui/src/lib/components/po-tabs/po-tabs.component.ts index 5b1e3f96eb..d16f488a25 100644 --- a/projects/ui/src/lib/components/po-tabs/po-tabs.component.ts +++ b/projects/ui/src/lib/components/po-tabs/po-tabs.component.ts @@ -10,7 +10,8 @@ import { QueryList, ViewChild, ViewChildren, - inject + inject, + ChangeDetectionStrategy } from '@angular/core'; import { PoLanguageService } from '../../services/po-language/po-language.service'; @@ -89,6 +90,7 @@ const poTabsMaxNumberOfTabs = 5; @Component({ selector: 'po-tabs', templateUrl: './po-tabs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoTabsComponent extends PoTabsBaseComponent implements OnInit, AfterViewInit, OnDestroy, AfterContentInit { diff --git a/projects/ui/src/lib/components/po-tabs/samples/sample-po-tabs-basic/sample-po-tabs-basic.component.ts b/projects/ui/src/lib/components/po-tabs/samples/sample-po-tabs-basic/sample-po-tabs-basic.component.ts index b83be82df5..5d31759dae 100644 --- a/projects/ui/src/lib/components/po-tabs/samples/sample-po-tabs-basic/sample-po-tabs-basic.component.ts +++ b/projects/ui/src/lib/components/po-tabs/samples/sample-po-tabs-basic/sample-po-tabs-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-tabs-basic', templateUrl: './sample-po-tabs-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoTabsBasicComponent {} diff --git a/projects/ui/src/lib/components/po-tabs/samples/sample-po-tabs-business-conf/sample-po-tabs-business-conf.component.ts b/projects/ui/src/lib/components/po-tabs/samples/sample-po-tabs-business-conf/sample-po-tabs-business-conf.component.ts index 1f5a87d366..ca014b6fca 100644 --- a/projects/ui/src/lib/components/po-tabs/samples/sample-po-tabs-business-conf/sample-po-tabs-business-conf.component.ts +++ b/projects/ui/src/lib/components/po-tabs/samples/sample-po-tabs-business-conf/sample-po-tabs-business-conf.component.ts @@ -1,10 +1,11 @@ -import { Component, OnInit, ViewChild, inject } from '@angular/core'; +import { Component, OnInit, ViewChild, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoNotificationService, PoTabsComponent } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-tabs-business-conf', templateUrl: './sample-po-tabs-business-conf.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoTabsBusinessConfComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-tabs/samples/sample-po-tabs-labs/sample-po-tabs-labs.component.ts b/projects/ui/src/lib/components/po-tabs/samples/sample-po-tabs-labs/sample-po-tabs-labs.component.ts index 1fae06e7d1..3eab081d07 100644 --- a/projects/ui/src/lib/components/po-tabs/samples/sample-po-tabs-labs/sample-po-tabs-labs.component.ts +++ b/projects/ui/src/lib/components/po-tabs/samples/sample-po-tabs-labs/sample-po-tabs-labs.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, ViewChild, inject } from '@angular/core'; +import { Component, OnInit, ViewChild, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoDynamicFormField, @@ -11,6 +11,7 @@ import { @Component({ selector: 'sample-po-tabs-labs', templateUrl: './sample-po-tabs-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoTabsLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-tabs/samples/sample-po-tabs-travel/sample-po-tabs-travel.component.ts b/projects/ui/src/lib/components/po-tabs/samples/sample-po-tabs-travel/sample-po-tabs-travel.component.ts index 468c0d17d5..ad16f3c521 100644 --- a/projects/ui/src/lib/components/po-tabs/samples/sample-po-tabs-travel/sample-po-tabs-travel.component.ts +++ b/projects/ui/src/lib/components/po-tabs/samples/sample-po-tabs-travel/sample-po-tabs-travel.component.ts @@ -1,10 +1,11 @@ -import { Component, inject } from '@angular/core'; +import { Component, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoNotificationService, PoRadioGroupOption, PoSelectOption } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-tabs-travel', templateUrl: './sample-po-tabs-travel.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoTabsTravelComponent { diff --git a/projects/ui/src/lib/components/po-tag/po-tag.component.spec.ts b/projects/ui/src/lib/components/po-tag/po-tag.component.spec.ts index a4083c28e1..8185cf592f 100644 --- a/projects/ui/src/lib/components/po-tag/po-tag.component.spec.ts +++ b/projects/ui/src/lib/components/po-tag/po-tag.component.spec.ts @@ -1,4 +1,4 @@ -import { Component, provideNgReflectAttributes } from '@angular/core'; +import { Component, provideNgReflectAttributes, ChangeDetectionStrategy } from '@angular/core'; import { ComponentFixture, fakeAsync, flush, TestBed } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; @@ -16,6 +16,7 @@ import { PoTagLiterals } from './po-tag.literals'; @Component({ template: ` `, + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) class PoTagClickableComponent { diff --git a/projects/ui/src/lib/components/po-tag/samples/sample-po-tag-bank-account/sample-po-tag-bank-account.component.ts b/projects/ui/src/lib/components/po-tag/samples/sample-po-tag-bank-account/sample-po-tag-bank-account.component.ts index 2183d7df14..d8b643c088 100644 --- a/projects/ui/src/lib/components/po-tag/samples/sample-po-tag-bank-account/sample-po-tag-bank-account.component.ts +++ b/projects/ui/src/lib/components/po-tag/samples/sample-po-tag-bank-account/sample-po-tag-bank-account.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-tag-bank-account', templateUrl: './sample-po-tag-bank-account.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoTagBankAccountComponent { diff --git a/projects/ui/src/lib/components/po-tag/samples/sample-po-tag-basic/sample-po-tag-basic.component.ts b/projects/ui/src/lib/components/po-tag/samples/sample-po-tag-basic/sample-po-tag-basic.component.ts index 15975cc364..e5ca8d5285 100644 --- a/projects/ui/src/lib/components/po-tag/samples/sample-po-tag-basic/sample-po-tag-basic.component.ts +++ b/projects/ui/src/lib/components/po-tag/samples/sample-po-tag-basic/sample-po-tag-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-tag-basic', templateUrl: './sample-po-tag-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoTagBasicComponent {} diff --git a/projects/ui/src/lib/components/po-tag/samples/sample-po-tag-caption-tag-colors/sample-po-tag-caption-tag-colors.component.ts b/projects/ui/src/lib/components/po-tag/samples/sample-po-tag-caption-tag-colors/sample-po-tag-caption-tag-colors.component.ts index a21b321266..dc3a1b6c79 100644 --- a/projects/ui/src/lib/components/po-tag/samples/sample-po-tag-caption-tag-colors/sample-po-tag-caption-tag-colors.component.ts +++ b/projects/ui/src/lib/components/po-tag/samples/sample-po-tag-caption-tag-colors/sample-po-tag-caption-tag-colors.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-tag-caption-tag-colors', templateUrl: './sample-po-tag-caption-tag-colors.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoTagCaptionTagColorsComponent { diff --git a/projects/ui/src/lib/components/po-tag/samples/sample-po-tag-labs/sample-po-tag-labs.component.ts b/projects/ui/src/lib/components/po-tag/samples/sample-po-tag-labs/sample-po-tag-labs.component.ts index a37775bff0..d7309b69ef 100644 --- a/projects/ui/src/lib/components/po-tag/samples/sample-po-tag-labs/sample-po-tag-labs.component.ts +++ b/projects/ui/src/lib/components/po-tag/samples/sample-po-tag-labs/sample-po-tag-labs.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoRadioGroupOption, @@ -12,6 +12,7 @@ import { selector: 'sample-po-tag-labs', templateUrl: './sample-po-tag-labs.component.html', styleUrls: ['./sample-po-tag-labs.component.css'], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoTagLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-timer/samples/sample-po-timer-alarm/sample-po-timer-alarm.component.ts b/projects/ui/src/lib/components/po-timer/samples/sample-po-timer-alarm/sample-po-timer-alarm.component.ts index 27d8aa1c0a..eafd6cdc3b 100644 --- a/projects/ui/src/lib/components/po-timer/samples/sample-po-timer-alarm/sample-po-timer-alarm.component.ts +++ b/projects/ui/src/lib/components/po-timer/samples/sample-po-timer-alarm/sample-po-timer-alarm.component.ts @@ -1,10 +1,11 @@ -import { Component, inject } from '@angular/core'; +import { Component, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoNotificationService } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-timer-alarm', templateUrl: './sample-po-timer-alarm.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoTimerAlarmComponent { diff --git a/projects/ui/src/lib/components/po-timer/samples/sample-po-timer-basic/sample-po-timer-basic.component.ts b/projects/ui/src/lib/components/po-timer/samples/sample-po-timer-basic/sample-po-timer-basic.component.ts index aaae64e849..01e24cf217 100644 --- a/projects/ui/src/lib/components/po-timer/samples/sample-po-timer-basic/sample-po-timer-basic.component.ts +++ b/projects/ui/src/lib/components/po-timer/samples/sample-po-timer-basic/sample-po-timer-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-timer-basic', templateUrl: './sample-po-timer-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoTimerBasicComponent {} diff --git a/projects/ui/src/lib/components/po-timer/samples/sample-po-timer-labs/sample-po-timer-labs.component.ts b/projects/ui/src/lib/components/po-timer/samples/sample-po-timer-labs/sample-po-timer-labs.component.ts index fd9093a5b5..465ca5243c 100644 --- a/projects/ui/src/lib/components/po-timer/samples/sample-po-timer-labs/sample-po-timer-labs.component.ts +++ b/projects/ui/src/lib/components/po-timer/samples/sample-po-timer-labs/sample-po-timer-labs.component.ts @@ -1,10 +1,11 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption, PoRadioGroupOption } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-timer-labs', templateUrl: './sample-po-timer-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoTimerLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-timer/samples/sample-po-timer-shift/sample-po-timer-shift.component.ts b/projects/ui/src/lib/components/po-timer/samples/sample-po-timer-shift/sample-po-timer-shift.component.ts index bfee83715c..eba2fdbd3e 100644 --- a/projects/ui/src/lib/components/po-timer/samples/sample-po-timer-shift/sample-po-timer-shift.component.ts +++ b/projects/ui/src/lib/components/po-timer/samples/sample-po-timer-shift/sample-po-timer-shift.component.ts @@ -1,10 +1,11 @@ -import { Component, inject } from '@angular/core'; +import { Component, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoNotificationService, PoRadioGroupOption } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-timer-shift', templateUrl: './sample-po-timer-shift.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoTimerShiftComponent { diff --git a/projects/ui/src/lib/components/po-toaster/po-toaster.component.ts b/projects/ui/src/lib/components/po-toaster/po-toaster.component.ts index 8016dcd946..312d868e54 100644 --- a/projects/ui/src/lib/components/po-toaster/po-toaster.component.ts +++ b/projects/ui/src/lib/components/po-toaster/po-toaster.component.ts @@ -8,7 +8,8 @@ import { Renderer2, SimpleChanges, ViewChild, - inject + inject, + ChangeDetectionStrategy } from '@angular/core'; import { Subject } from 'rxjs'; @@ -41,6 +42,7 @@ const SPACE_BETWEEN_TOASTERS = 8; @Component({ selector: 'po-toaster', templateUrl: './po-toaster.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoToasterComponent extends PoToasterBaseComponent implements AfterViewInit, OnDestroy, OnChanges { diff --git a/projects/ui/src/lib/components/po-toaster/samples/sample-po-toaster-basic/sample-po-toaster-basic.component.ts b/projects/ui/src/lib/components/po-toaster/samples/sample-po-toaster-basic/sample-po-toaster-basic.component.ts index 876f0b4051..31fe1b65ec 100644 --- a/projects/ui/src/lib/components/po-toaster/samples/sample-po-toaster-basic/sample-po-toaster-basic.component.ts +++ b/projects/ui/src/lib/components/po-toaster/samples/sample-po-toaster-basic/sample-po-toaster-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-toaster-basic', templateUrl: './sample-po-toaster-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoToasterBasicComponent {} diff --git a/projects/ui/src/lib/components/po-toaster/samples/sample-po-toaster-labs/sample-po-toaster-labs.component.ts b/projects/ui/src/lib/components/po-toaster/samples/sample-po-toaster-labs/sample-po-toaster-labs.component.ts index 498bba224b..070128bc4b 100644 --- a/projects/ui/src/lib/components/po-toaster/samples/sample-po-toaster-labs/sample-po-toaster-labs.component.ts +++ b/projects/ui/src/lib/components/po-toaster/samples/sample-po-toaster-labs/sample-po-toaster-labs.component.ts @@ -1,4 +1,4 @@ -import { Component, ViewChild } from '@angular/core'; +import { Component, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption, PoModalComponent, @@ -11,6 +11,7 @@ import { @Component({ selector: 'sample-po-toaster-labs', templateUrl: './sample-po-toaster-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoToasterLabsComponent { diff --git a/projects/ui/src/lib/components/po-toolbar/po-toolbar-actions/po-toolbar-actions.component.ts b/projects/ui/src/lib/components/po-toolbar/po-toolbar-actions/po-toolbar-actions.component.ts index a7236bb2e8..ac34740a0d 100644 --- a/projects/ui/src/lib/components/po-toolbar/po-toolbar-actions/po-toolbar-actions.component.ts +++ b/projects/ui/src/lib/components/po-toolbar/po-toolbar-actions/po-toolbar-actions.component.ts @@ -1,4 +1,4 @@ -import { Component, Input, TemplateRef } from '@angular/core'; +import { Component, Input, TemplateRef, ChangeDetectionStrategy } from '@angular/core'; import { isTypeof } from '../../../utils/util'; @@ -18,6 +18,7 @@ const poToolbarActionsIconDefault = 'ICON_MORE'; @Component({ selector: 'po-toolbar-actions', templateUrl: './po-toolbar-actions.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoToolbarActionsComponent { diff --git a/projects/ui/src/lib/components/po-toolbar/po-toolbar-notification/po-toolbar-notification.component.spec.ts b/projects/ui/src/lib/components/po-toolbar/po-toolbar-notification/po-toolbar-notification.component.spec.ts index 10eeca420d..2a6b511454 100644 --- a/projects/ui/src/lib/components/po-toolbar/po-toolbar-notification/po-toolbar-notification.component.spec.ts +++ b/projects/ui/src/lib/components/po-toolbar/po-toolbar-notification/po-toolbar-notification.component.spec.ts @@ -1,6 +1,7 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { ChangeDetectorRef, ElementRef, NO_ERRORS_SCHEMA, Renderer2 } from '@angular/core'; -import { RouterTestingModule } from '@angular/router/testing'; import { configureTestSuite, expectPropertiesValues } from '../../../util-test/util-expect.spec'; @@ -25,10 +26,11 @@ describe('PoToolbarNotificationComponent: ', () => { }; TestBed.configureTestingModule({ - imports: [RouterTestingModule.withRoutes([])], + imports: [RouterModule.forRoot([])], declarations: [PoToolbarNotificationComponent, PoPopupComponent], schemas: [NO_ERRORS_SCHEMA], providers: [ + provideLocationMocks(), { provide: ElementRef, useValue: { elementRef } }, { provide: Renderer2, useValue: renderer2 }, { provide: PoControlPositionService, useValue: poControlPositionService } diff --git a/projects/ui/src/lib/components/po-toolbar/po-toolbar-notification/po-toolbar-notification.component.ts b/projects/ui/src/lib/components/po-toolbar/po-toolbar-notification/po-toolbar-notification.component.ts index 38fbf0459a..666d8ce715 100644 --- a/projects/ui/src/lib/components/po-toolbar/po-toolbar-notification/po-toolbar-notification.component.ts +++ b/projects/ui/src/lib/components/po-toolbar/po-toolbar-notification/po-toolbar-notification.component.ts @@ -1,4 +1,13 @@ -import { AfterViewInit, ChangeDetectorRef, Component, ElementRef, Input, ViewChild, inject } from '@angular/core'; +import { + AfterViewInit, + ChangeDetectorRef, + Component, + ElementRef, + Input, + ViewChild, + inject, + ChangeDetectionStrategy +} from '@angular/core'; import { PoControlPositionService } from '../../../services/po-control-position/po-control-position.service'; @@ -21,6 +30,7 @@ import { PoToolbarAction } from '../po-toolbar-action.interface'; selector: 'po-toolbar-notification', templateUrl: './po-toolbar-notification.component.html', providers: [PoControlPositionService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoToolbarNotificationComponent implements AfterViewInit { diff --git a/projects/ui/src/lib/components/po-toolbar/po-toolbar-profile/po-toolbar-profile.component.spec.ts b/projects/ui/src/lib/components/po-toolbar/po-toolbar-profile/po-toolbar-profile.component.spec.ts index be263eebc0..b0471c504d 100644 --- a/projects/ui/src/lib/components/po-toolbar/po-toolbar-profile/po-toolbar-profile.component.spec.ts +++ b/projects/ui/src/lib/components/po-toolbar/po-toolbar-profile/po-toolbar-profile.component.spec.ts @@ -1,6 +1,7 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { ElementRef, NO_ERRORS_SCHEMA, Renderer2 } from '@angular/core'; -import { RouterTestingModule } from '@angular/router/testing'; import { configureTestSuite } from './../../../util-test/util-expect.spec'; @@ -25,10 +26,11 @@ describe('PoToolbarProfileComponent:', () => { }; TestBed.configureTestingModule({ - imports: [RouterTestingModule.withRoutes([])], + imports: [RouterModule.forRoot([])], declarations: [PoToolbarProfileComponent, PoPopupComponent], schemas: [NO_ERRORS_SCHEMA], providers: [ + provideLocationMocks(), { provide: ElementRef, useValue: elementRef }, { provide: Renderer2, useValue: renderer2 }, { provide: PoControlPositionService, useValue: poControlPositionService } diff --git a/projects/ui/src/lib/components/po-toolbar/po-toolbar-profile/po-toolbar-profile.component.ts b/projects/ui/src/lib/components/po-toolbar/po-toolbar-profile/po-toolbar-profile.component.ts index 36f9638feb..e15bde34ab 100644 --- a/projects/ui/src/lib/components/po-toolbar/po-toolbar-profile/po-toolbar-profile.component.ts +++ b/projects/ui/src/lib/components/po-toolbar/po-toolbar-profile/po-toolbar-profile.component.ts @@ -1,4 +1,4 @@ -import { Component, Input } from '@angular/core'; +import { Component, Input, ChangeDetectionStrategy } from '@angular/core'; import { PoControlPositionService } from '../../../services/po-control-position/po-control-position.service'; @@ -18,6 +18,7 @@ import { PoToolbarAction } from '../po-toolbar-action.interface'; selector: 'po-toolbar-profile', templateUrl: './po-toolbar-profile.component.html', providers: [PoControlPositionService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoToolbarProfileComponent { diff --git a/projects/ui/src/lib/components/po-toolbar/po-toolbar.component.spec.ts b/projects/ui/src/lib/components/po-toolbar/po-toolbar.component.spec.ts index 16eaf6919d..bc84a79b18 100644 --- a/projects/ui/src/lib/components/po-toolbar/po-toolbar.component.spec.ts +++ b/projects/ui/src/lib/components/po-toolbar/po-toolbar.component.spec.ts @@ -1,5 +1,6 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { configureTestSuite } from './../../util-test/util-expect.spec'; @@ -13,7 +14,8 @@ describe('PoToolbarComponent:', () => { configureTestSuite(() => { TestBed.configureTestingModule({ - imports: [RouterTestingModule.withRoutes([]), PoToolbarModule] + imports: [RouterModule.forRoot([]), PoToolbarModule], + providers: [provideLocationMocks()] }); }); diff --git a/projects/ui/src/lib/components/po-toolbar/po-toolbar.component.ts b/projects/ui/src/lib/components/po-toolbar/po-toolbar.component.ts index 1354266fed..f30fdaed82 100644 --- a/projects/ui/src/lib/components/po-toolbar/po-toolbar.component.ts +++ b/projects/ui/src/lib/components/po-toolbar/po-toolbar.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, ViewContainerRef, inject } from '@angular/core'; +import { Component, OnInit, ViewContainerRef, inject, ChangeDetectionStrategy } from '@angular/core'; import { Title } from '@angular/platform-browser'; import { PoToolbarBaseComponent } from './po-toolbar-base.component'; @@ -26,6 +26,7 @@ import { PoToolbarBaseComponent } from './po-toolbar-base.component'; @Component({ selector: 'po-toolbar', templateUrl: './po-toolbar.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoToolbarComponent extends PoToolbarBaseComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-toolbar/samples/sample-po-toolbar-basic/sample-po-toolbar-basic.component.ts b/projects/ui/src/lib/components/po-toolbar/samples/sample-po-toolbar-basic/sample-po-toolbar-basic.component.ts index e87e4add6a..52bf6f0a5b 100644 --- a/projects/ui/src/lib/components/po-toolbar/samples/sample-po-toolbar-basic/sample-po-toolbar-basic.component.ts +++ b/projects/ui/src/lib/components/po-toolbar/samples/sample-po-toolbar-basic/sample-po-toolbar-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-toolbar-basic', templateUrl: './sample-po-toolbar-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoToolbarBasicComponent {} diff --git a/projects/ui/src/lib/components/po-toolbar/samples/sample-po-toolbar-labs/sample-po-toolbar-labs.component.ts b/projects/ui/src/lib/components/po-toolbar/samples/sample-po-toolbar-labs/sample-po-toolbar-labs.component.ts index f2279e44e1..9ffca2a3a1 100644 --- a/projects/ui/src/lib/components/po-toolbar/samples/sample-po-toolbar-labs/sample-po-toolbar-labs.component.ts +++ b/projects/ui/src/lib/components/po-toolbar/samples/sample-po-toolbar-labs/sample-po-toolbar-labs.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, inject } from '@angular/core'; +import { Component, OnInit, inject, ChangeDetectionStrategy } from '@angular/core'; import { NgForm } from '@angular/forms'; import { @@ -12,6 +12,7 @@ import { @Component({ selector: 'sample-po-toolbar-labs', templateUrl: './sample-po-toolbar-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoToolbarLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-toolbar/samples/sample-po-toolbar-logged/sample-po-toolbar-logged.component.ts b/projects/ui/src/lib/components/po-toolbar/samples/sample-po-toolbar-logged/sample-po-toolbar-logged.component.ts index f684d541ed..4a6aebe191 100644 --- a/projects/ui/src/lib/components/po-toolbar/samples/sample-po-toolbar-logged/sample-po-toolbar-logged.component.ts +++ b/projects/ui/src/lib/components/po-toolbar/samples/sample-po-toolbar-logged/sample-po-toolbar-logged.component.ts @@ -1,4 +1,4 @@ -import { Component, inject } from '@angular/core'; +import { Component, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoDialogService, PoNotificationService, PoToolbarAction, PoToolbarProfile } from '@po-ui/ng-components'; @@ -6,6 +6,7 @@ import { PoDialogService, PoNotificationService, PoToolbarAction, PoToolbarProfi selector: 'sample-po-toolbar-logged', templateUrl: './sample-po-toolbar-logged.component.html', providers: [PoNotificationService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoToolbarLoggedComponent { diff --git a/projects/ui/src/lib/components/po-tree-view/po-tree-view.module.ts b/projects/ui/src/lib/components/po-tree-view/po-tree-view.module.ts index fd15b90297..40ce00c985 100644 --- a/projects/ui/src/lib/components/po-tree-view/po-tree-view.module.ts +++ b/projects/ui/src/lib/components/po-tree-view/po-tree-view.module.ts @@ -17,6 +17,7 @@ import { PoTreeViewItemContentComponent } from './po-tree-view-item-content/po-t * @description * * Módulo do componente `po-tree-view`. + * */ @NgModule({ declarations: [PoTreeViewComponent, PoTreeViewItemComponent, PoTreeViewItemContentComponent], diff --git a/projects/ui/src/lib/components/po-tree-view/samples/sample-po-tree-view-basic/sample-po-tree-view-basic.component.ts b/projects/ui/src/lib/components/po-tree-view/samples/sample-po-tree-view-basic/sample-po-tree-view-basic.component.ts index 36dbf847a6..c2d89d69b3 100644 --- a/projects/ui/src/lib/components/po-tree-view/samples/sample-po-tree-view-basic/sample-po-tree-view-basic.component.ts +++ b/projects/ui/src/lib/components/po-tree-view/samples/sample-po-tree-view-basic/sample-po-tree-view-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-tree-view-basic', templateUrl: 'sample-po-tree-view-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoTreeViewBasicComponent {} diff --git a/projects/ui/src/lib/components/po-tree-view/samples/sample-po-tree-view-folder-structure/sample-po-tree-view-folder-structure.component.ts b/projects/ui/src/lib/components/po-tree-view/samples/sample-po-tree-view-folder-structure/sample-po-tree-view-folder-structure.component.ts index bca5b77a1f..ff811f1959 100644 --- a/projects/ui/src/lib/components/po-tree-view/samples/sample-po-tree-view-folder-structure/sample-po-tree-view-folder-structure.component.ts +++ b/projects/ui/src/lib/components/po-tree-view/samples/sample-po-tree-view-folder-structure/sample-po-tree-view-folder-structure.component.ts @@ -1,10 +1,11 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoTreeViewItem } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-tree-view-folder-structure', templateUrl: 'sample-po-tree-view-folder-structure.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoTreeViewFolderStructureComponent { diff --git a/projects/ui/src/lib/components/po-tree-view/samples/sample-po-tree-view-labs/sample-po-tree-view-labs.component.ts b/projects/ui/src/lib/components/po-tree-view/samples/sample-po-tree-view-labs/sample-po-tree-view-labs.component.ts index ad2bb488ad..6a7e516ad2 100644 --- a/projects/ui/src/lib/components/po-tree-view/samples/sample-po-tree-view-labs/sample-po-tree-view-labs.component.ts +++ b/projects/ui/src/lib/components/po-tree-view/samples/sample-po-tree-view-labs/sample-po-tree-view-labs.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { NgForm } from '@angular/forms'; import { PoCheckboxGroupOption, PoRadioGroupOption, PoSelectOption, PoTreeViewItem } from '@po-ui/ng-components'; @@ -6,6 +6,7 @@ import { PoCheckboxGroupOption, PoRadioGroupOption, PoSelectOption, PoTreeViewIt @Component({ selector: 'sample-po-tree-view-labs', templateUrl: 'sample-po-tree-view-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoTreeViewLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-tree-view/samples/sample-po-tree-view-supermarket/sample-po-tree-view-supermarket.component.ts b/projects/ui/src/lib/components/po-tree-view/samples/sample-po-tree-view-supermarket/sample-po-tree-view-supermarket.component.ts index f6b1867129..8c0966d034 100644 --- a/projects/ui/src/lib/components/po-tree-view/samples/sample-po-tree-view-supermarket/sample-po-tree-view-supermarket.component.ts +++ b/projects/ui/src/lib/components/po-tree-view/samples/sample-po-tree-view-supermarket/sample-po-tree-view-supermarket.component.ts @@ -1,10 +1,11 @@ -import { Component, ViewChild } from '@angular/core'; +import { Component, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { PoStepperComponent, PoTableColumn, PoTreeViewItem } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-tree-view-supermarket', templateUrl: 'sample-po-tree-view-supermarket.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoTreeViewSupermarketComponent { diff --git a/projects/ui/src/lib/components/po-widget/po-widget-base.component.spec.ts b/projects/ui/src/lib/components/po-widget/po-widget-base.component.spec.ts index 06ee6723f3..a24f056e51 100644 --- a/projects/ui/src/lib/components/po-widget/po-widget-base.component.spec.ts +++ b/projects/ui/src/lib/components/po-widget/po-widget-base.component.spec.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { PoWidgetBaseComponent } from './po-widget-base.component'; @@ -8,6 +8,7 @@ import { PoThemeA11yEnum } from '../../services'; @Component({ template: '', + changeDetection: ChangeDetectionStrategy.Eager, standalone: true }) class TestComponent extends PoWidgetBaseComponent {} diff --git a/projects/ui/src/lib/components/po-widget/po-widget.component.ts b/projects/ui/src/lib/components/po-widget/po-widget.component.ts index affbec0fe8..a3aeea4bf0 100644 --- a/projects/ui/src/lib/components/po-widget/po-widget.component.ts +++ b/projects/ui/src/lib/components/po-widget/po-widget.component.ts @@ -8,7 +8,8 @@ import { SimpleChanges, ViewChild, computed, - inject + inject, + ChangeDetectionStrategy } from '@angular/core'; import { PoLanguageService, poLocaleDefault, PoThemeA11yEnum, PoThemeService } from '../../services'; @@ -57,6 +58,7 @@ import { @Component({ selector: 'po-widget', templateUrl: './po-widget.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoWidgetComponent extends PoWidgetBaseComponent implements OnInit, OnChanges, AfterViewInit { diff --git a/projects/ui/src/lib/components/po-widget/samples/sample-po-widget-basic/sample-po-widget-basic.component.ts b/projects/ui/src/lib/components/po-widget/samples/sample-po-widget-basic/sample-po-widget-basic.component.ts index 30c33d565f..a30f808fc1 100644 --- a/projects/ui/src/lib/components/po-widget/samples/sample-po-widget-basic/sample-po-widget-basic.component.ts +++ b/projects/ui/src/lib/components/po-widget/samples/sample-po-widget-basic/sample-po-widget-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-widget-basic', templateUrl: './sample-po-widget-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoWidgetBasicComponent {} diff --git a/projects/ui/src/lib/components/po-widget/samples/sample-po-widget-card/sample-po-widget-card.component.ts b/projects/ui/src/lib/components/po-widget/samples/sample-po-widget-card/sample-po-widget-card.component.ts index d29440371c..49bde0ebee 100644 --- a/projects/ui/src/lib/components/po-widget/samples/sample-po-widget-card/sample-po-widget-card.component.ts +++ b/projects/ui/src/lib/components/po-widget/samples/sample-po-widget-card/sample-po-widget-card.component.ts @@ -1,10 +1,11 @@ -import { Component, OnInit, ViewChild } from '@angular/core'; +import { Component, OnInit, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { PoModalComponent } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-widget-card', templateUrl: './sample-po-widget-card.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoWidgetCardComponent implements OnInit { diff --git a/projects/ui/src/lib/components/po-widget/samples/sample-po-widget-finance-dashboard/sample-po-widget-finance-dashboard.component.ts b/projects/ui/src/lib/components/po-widget/samples/sample-po-widget-finance-dashboard/sample-po-widget-finance-dashboard.component.ts index 2a0f9f5694..090b2efafb 100644 --- a/projects/ui/src/lib/components/po-widget/samples/sample-po-widget-finance-dashboard/sample-po-widget-finance-dashboard.component.ts +++ b/projects/ui/src/lib/components/po-widget/samples/sample-po-widget-finance-dashboard/sample-po-widget-finance-dashboard.component.ts @@ -1,4 +1,4 @@ -import { Component, ViewChild, inject } from '@angular/core'; +import { Component, ViewChild, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoModalComponent, PoMultiselectOption, PoNotificationService, PoTableColumn } from '@po-ui/ng-components'; @@ -6,6 +6,7 @@ import { PoModalComponent, PoMultiselectOption, PoNotificationService, PoTableCo selector: 'sample-po-widget-finance-dashboard', templateUrl: './sample-po-widget-finance-dashboard.component.html', styleUrls: ['./sample-po-widget-finance-dashboard.component.css'], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoWidgetFinanceDashboardComponent { diff --git a/projects/ui/src/lib/components/po-widget/samples/sample-po-widget-labs/sample-po-widget-labs.component.ts b/projects/ui/src/lib/components/po-widget/samples/sample-po-widget-labs/sample-po-widget-labs.component.ts index 095bd3adfc..b8483f9989 100644 --- a/projects/ui/src/lib/components/po-widget/samples/sample-po-widget-labs/sample-po-widget-labs.component.ts +++ b/projects/ui/src/lib/components/po-widget/samples/sample-po-widget-labs/sample-po-widget-labs.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, inject } from '@angular/core'; +import { Component, OnInit, inject, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption, PoNotificationService, PoPopupAction, PoSelectOption } from '@po-ui/ng-components'; @@ -6,6 +6,7 @@ import { PoCheckboxGroupOption, PoNotificationService, PoPopupAction, PoSelectOp selector: 'sample-po-widget-labs', templateUrl: './sample-po-widget-labs.component.html', styleUrls: ['./sample-po-widget-labs.component.css'], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoWidgetLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/decorators/input-boolean/input-boolean.decorator.spec.ts b/projects/ui/src/lib/decorators/input-boolean/input-boolean.decorator.spec.ts index 71372dd7ca..15628fdba0 100644 --- a/projects/ui/src/lib/decorators/input-boolean/input-boolean.decorator.spec.ts +++ b/projects/ui/src/lib/decorators/input-boolean/input-boolean.decorator.spec.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { TestBed } from '@angular/core/testing'; import { configureTestSuite, expectPropertiesValues } from '../../util-test/util-expect.spec'; @@ -7,6 +7,7 @@ import { InputBoolean } from './input-boolean.decorator'; @Component({ selector: 'mock-component', template: '', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) class PoMockComponent { diff --git a/projects/ui/src/lib/decorators/input-required/input-required.decorator.spec.ts b/projects/ui/src/lib/decorators/input-required/input-required.decorator.spec.ts index 6cea570ba5..f4f558e4d7 100644 --- a/projects/ui/src/lib/decorators/input-required/input-required.decorator.spec.ts +++ b/projects/ui/src/lib/decorators/input-required/input-required.decorator.spec.ts @@ -1,4 +1,4 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { TestBed } from '@angular/core/testing'; import { configureTestSuite } from '../../util-test/util-expect.spec'; @@ -7,6 +7,7 @@ import { InputRequired } from './input-required.decorator'; @Component({ selector: 'mock-component', template: '', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) class PoMockComponent implements OnInit { @@ -33,7 +34,7 @@ describe('InputRequired:', () => { it('should call console.warn if `myProperty` is null', () => { spyOn(console, 'warn'); - const consoleMessage = 'PoMockComponent: myProperty is required, but was not provided'; + const consoleMessage = `${component.constructor.name}: myProperty is required, but was not provided`; component.ngOnInit(); diff --git a/projects/ui/src/lib/directives/po-drag-drop/po-drag-base.directive.spec.ts b/projects/ui/src/lib/directives/po-drag-drop/po-drag-base.directive.spec.ts index 864b39ea72..8d6ceb08a0 100644 --- a/projects/ui/src/lib/directives/po-drag-drop/po-drag-base.directive.spec.ts +++ b/projects/ui/src/lib/directives/po-drag-drop/po-drag-base.directive.spec.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, Input } from '@angular/core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; @@ -24,8 +24,10 @@ interface TestItem { standalone: false }) class TestHostComponent { - item: TestItem = { id: '1', name: 'test' }; - disabled = false; + // Inputs do host para permitir atualização via fixture.componentRef.setInput, + // que é o mecanismo suportado para refletir mudanças de binding no ambiente de teste (Angular 22). + @Input() item: TestItem = { id: '1', name: 'test' }; + @Input() disabled = false; startedItem: TestItem | null = null; endedItem: TestItem | null = null; movedEvent: any = null; @@ -84,19 +86,19 @@ describe('PoDragBaseDirective (via PoDragDirective)', () => { }); it('should reflect changes when input item is updated', () => { - component.item = { id: '99', name: 'changed' }; + fixture.componentRef.setInput('item', { id: '99', name: 'changed' }); fixture.detectChanges(); expect(directive.data()).toEqual(jasmine.objectContaining({ id: '99', name: 'changed' })); }); it('should accept undefined as data value', () => { - component.item = undefined; + fixture.componentRef.setInput('item', undefined); fixture.detectChanges(); expect(directive.data()).toBeUndefined(); }); it('should accept null as data value', () => { - component.item = null; + fixture.componentRef.setInput('item', null); fixture.detectChanges(); expect(directive.data()).toBeNull(); }); @@ -108,15 +110,15 @@ describe('PoDragBaseDirective (via PoDragDirective)', () => { }); it('should read `dragDisabled` signal as true when bound to true', () => { - component.disabled = true; + fixture.componentRef.setInput('disabled', true); fixture.detectChanges(); expect(directive.dragDisabled()).toBeTrue(); }); it('should toggle dragDisabled back to false', () => { - component.disabled = true; + fixture.componentRef.setInput('disabled', true); fixture.detectChanges(); - component.disabled = false; + fixture.componentRef.setInput('disabled', false); fixture.detectChanges(); expect(directive.dragDisabled()).toBeFalse(); }); @@ -137,7 +139,7 @@ describe('PoDragBaseDirective (via PoDragDirective)', () => { it('should emit updated item data after input change', () => { const newItem: TestItem = { id: '5', name: 'new item' }; - component.item = newItem; + fixture.componentRef.setInput('item', newItem); fixture.detectChanges(); directive.dragStarted.emit(directive.data()); expect(component.startedItem).toEqual(newItem); diff --git a/projects/ui/src/lib/directives/po-drag-drop/po-drag.directive.spec.ts b/projects/ui/src/lib/directives/po-drag-drop/po-drag.directive.spec.ts index 5b43e5c6fa..8ceda476c3 100644 --- a/projects/ui/src/lib/directives/po-drag-drop/po-drag.directive.spec.ts +++ b/projects/ui/src/lib/directives/po-drag-drop/po-drag.directive.spec.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, Input } from '@angular/core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; import { CdkDrag } from '@angular/cdk/drag-drop'; @@ -25,8 +25,10 @@ interface TestItem { standalone: false }) class TestHostComponent { - item: TestItem = { id: '1', name: 'test' }; - disabled = false; + // Inputs do host para permitir atualização via fixture.componentRef.setInput, + // que é o mecanismo suportado para refletir mudanças de binding no ambiente de teste (Angular 22). + @Input() item: TestItem = { id: '1', name: 'test' }; + @Input() disabled = false; startedItem: TestItem | null = null; endedItem: TestItem | null = null; movedEvent: any = null; @@ -63,7 +65,7 @@ class TestDisabledHostComponent { class TestDropListHostComponent { item: TestItem = { id: '1', name: 'test' }; items: Array = [{ id: '1', name: 'test' }]; - dropListDisabled = false; + @Input() dropListDisabled = false; } describe('PoDragDirective', () => { @@ -95,7 +97,7 @@ describe('PoDragDirective', () => { it('should update `data` signal when input changes', () => { const newItem: TestItem = { id: '2', name: 'updated' }; - component.item = newItem; + fixture.componentRef.setInput('item', newItem); fixture.detectChanges(); expect(directive.data()).toEqual(newItem); }); @@ -105,7 +107,7 @@ describe('PoDragDirective', () => { }); it('should read `dragDisabled` signal as true when disabled is set', () => { - component.disabled = true; + fixture.componentRef.setInput('disabled', true); fixture.detectChanges(); expect(directive.dragDisabled()).toBeTrue(); }); @@ -141,16 +143,16 @@ describe('PoDragDirective', () => { }); it('should remove po-drag-drop-item class when disabled', () => { - component.disabled = true; + fixture.componentRef.setInput('disabled', true); fixture.detectChanges(); const hostEl = fixture.debugElement.query(By.directive(PoDragDirective)).nativeElement; expect(hostEl.classList.contains('po-drag-drop-item')).toBeFalse(); }); it('should add po-drag-drop-item class back when re-enabled', () => { - component.disabled = true; + fixture.componentRef.setInput('disabled', true); fixture.detectChanges(); - component.disabled = false; + fixture.componentRef.setInput('disabled', false); fixture.detectChanges(); const hostEl = fixture.debugElement.query(By.directive(PoDragDirective)).nativeElement; expect(hostEl.classList.contains('po-drag-drop-item')).toBeTrue(); @@ -175,7 +177,7 @@ describe('PoDragDirective', () => { }); it('should remove handle when drag is disabled', () => { - component.disabled = true; + fixture.componentRef.setInput('disabled', true); fixture.detectChanges(); const hostEl = fixture.debugElement.query(By.directive(PoDragDirective)).nativeElement; const handle = hostEl.querySelector('po-drag-handle-button'); @@ -183,9 +185,9 @@ describe('PoDragDirective', () => { }); it('should re-append handle when drag is re-enabled', () => { - component.disabled = true; + fixture.componentRef.setInput('disabled', true); fixture.detectChanges(); - component.disabled = false; + fixture.componentRef.setInput('disabled', false); fixture.detectChanges(); const hostEl = fixture.debugElement.query(By.directive(PoDragDirective)).nativeElement; const handle = hostEl.querySelector('po-drag-handle-button'); @@ -201,7 +203,7 @@ describe('PoDragDirective', () => { it('should update cdkDrag.data when input changes', () => { const newItem: TestItem = { id: '3', name: 'new' }; - component.item = newItem; + fixture.componentRef.setInput('item', newItem); fixture.detectChanges(); const cdkDrag = fixture.debugElement.query(By.directive(CdkDrag)).injector.get(CdkDrag); expect(cdkDrag.data).toEqual(newItem); @@ -317,7 +319,7 @@ describe('PoDragDirective', () => { describe('parent drop list disabled', () => { it('should not append handle when parent drop list is disabled', () => { const dropListFixture = TestBed.createComponent(TestDropListHostComponent); - dropListFixture.componentInstance.dropListDisabled = true; + dropListFixture.componentRef.setInput('dropListDisabled', true); dropListFixture.detectChanges(); const hostEl = dropListFixture.debugElement.query(By.directive(PoDragDirective)).nativeElement; @@ -334,7 +336,7 @@ describe('PoDragDirective', () => { it('should remove po-drag-drop-item class when parent drop list is disabled', () => { const dropListFixture = TestBed.createComponent(TestDropListHostComponent); - dropListFixture.componentInstance.dropListDisabled = true; + dropListFixture.componentRef.setInput('dropListDisabled', true); dropListFixture.detectChanges(); const hostEl = dropListFixture.debugElement.query(By.directive(PoDragDirective)).nativeElement; @@ -355,11 +357,11 @@ describe('PoDragDirective', () => { const hostEl = dropListFixture.debugElement.query(By.directive(PoDragDirective)).nativeElement; expect(hostEl.querySelector('po-drag-handle-button')).toBeTruthy(); - dropListFixture.componentInstance.dropListDisabled = true; + dropListFixture.componentRef.setInput('dropListDisabled', true); dropListFixture.detectChanges(); expect(hostEl.querySelector('po-drag-handle-button')).toBeNull(); - dropListFixture.componentInstance.dropListDisabled = false; + dropListFixture.componentRef.setInput('dropListDisabled', false); dropListFixture.detectChanges(); expect(hostEl.querySelector('po-drag-handle-button')).toBeTruthy(); }); @@ -371,18 +373,18 @@ describe('PoDragDirective', () => { expect(hostEl.querySelector('po-drag-handle-button')).toBeTruthy(); // Disabling destroys the handle - component.disabled = true; + fixture.componentRef.setInput('disabled', true); fixture.detectChanges(); expect(hostEl.querySelector('po-drag-handle-button')).toBeNull(); // Re-enabling appends the handle again - component.disabled = false; + fixture.componentRef.setInput('disabled', false); fixture.detectChanges(); expect(hostEl.querySelector('po-drag-handle-button')).toBeTruthy(); }); it('should not append handle while dragDisabled is true', () => { - component.disabled = true; + fixture.componentRef.setInput('disabled', true); fixture.detectChanges(); const hostEl = fixture.debugElement.query(By.directive(PoDragDirective)).nativeElement; diff --git a/projects/ui/src/lib/directives/po-drag-drop/po-drop-list-base.directive.spec.ts b/projects/ui/src/lib/directives/po-drag-drop/po-drop-list-base.directive.spec.ts index ec4dc0408b..f32e33c49d 100644 --- a/projects/ui/src/lib/directives/po-drag-drop/po-drop-list-base.directive.spec.ts +++ b/projects/ui/src/lib/directives/po-drag-drop/po-drop-list-base.directive.spec.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, Input } from '@angular/core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; @@ -27,15 +27,17 @@ interface TestItem { standalone: false }) class TestHostComponent { - items: Array = [ + // Inputs do host para permitir atualização via fixture.componentRef.setInput, + // que é o mecanismo suportado para refletir mudanças de binding no ambiente de teste (Angular 22). + @Input() items: Array = [ { id: '1', value: 10 }, { id: '2', value: 20 } ]; - listId = 'test-list'; - disabled = false; - orientation: 'horizontal' | 'vertical' | 'mixed' = 'vertical'; - connectedTo: Array = []; - sortingDisabled = false; + @Input() listId = 'test-list'; + @Input() disabled = false; + @Input() orientation: 'horizontal' | 'vertical' | 'mixed' = 'vertical'; + @Input() connectedTo: Array = []; + @Input() sortingDisabled = false; droppedEvent: PoDropEvent | null = null; enteredEvent: PoDragEnterEvent | null = null; @@ -89,14 +91,14 @@ describe('PoDropListBaseDirective (via PoDropListDirective)', () => { }); it('should update items when bound array changes', () => { - component.items = [{ id: '3', value: 30 }]; + fixture.componentRef.setInput('items', [{ id: '3', value: 30 }]); fixture.detectChanges(); expect(directive.items()).toHaveSize(1); expect(directive.items()[0]).toEqual(jasmine.objectContaining({ id: '3', value: 30 })); }); it('should accept empty array', () => { - component.items = []; + fixture.componentRef.setInput('items', []); fixture.detectChanges(); expect(directive.items()).toEqual([]); }); @@ -123,15 +125,15 @@ describe('PoDropListBaseDirective (via PoDropListDirective)', () => { }); it('should read `dropListDisabled` signal as true when bound to true', () => { - component.disabled = true; + fixture.componentRef.setInput('disabled', true); fixture.detectChanges(); expect(directive.dropListDisabled()).toBeTrue(); }); it('should toggle back to false', () => { - component.disabled = true; + fixture.componentRef.setInput('disabled', true); fixture.detectChanges(); - component.disabled = false; + fixture.componentRef.setInput('disabled', false); fixture.detectChanges(); expect(directive.dropListDisabled()).toBeFalse(); }); @@ -152,13 +154,13 @@ describe('PoDropListBaseDirective (via PoDropListDirective)', () => { }); it('should update to "horizontal" when input changes', () => { - component.orientation = 'horizontal'; + fixture.componentRef.setInput('orientation', 'horizontal'); fixture.detectChanges(); expect(directive.dropListOrientation()).toBe('horizontal'); }); it('should accept "mixed" value', () => { - component.orientation = 'mixed'; + fixture.componentRef.setInput('orientation', 'mixed'); fixture.detectChanges(); expect(directive.dropListOrientation()).toBe('mixed'); }); @@ -170,15 +172,15 @@ describe('PoDropListBaseDirective (via PoDropListDirective)', () => { }); it('should update when string ids are provided', () => { - component.connectedTo = ['list-x', 'list-y']; + fixture.componentRef.setInput('connectedTo', ['list-x', 'list-y']); fixture.detectChanges(); expect(directive.dropListConnectedTo()).toEqual(['list-x', 'list-y']); }); it('should update back to empty array', () => { - component.connectedTo = ['list-x']; + fixture.componentRef.setInput('connectedTo', ['list-x']); fixture.detectChanges(); - component.connectedTo = []; + fixture.componentRef.setInput('connectedTo', []); fixture.detectChanges(); expect(directive.dropListConnectedTo()).toEqual([]); }); @@ -190,7 +192,7 @@ describe('PoDropListBaseDirective (via PoDropListDirective)', () => { }); it('should read `dropSortingDisabled` as true when bound to true', () => { - component.sortingDisabled = true; + fixture.componentRef.setInput('sortingDisabled', true); fixture.detectChanges(); expect(directive.dropSortingDisabled()).toBeTrue(); }); diff --git a/projects/ui/src/lib/directives/po-drag-drop/po-drop-list.directive.spec.ts b/projects/ui/src/lib/directives/po-drag-drop/po-drop-list.directive.spec.ts index 38e20e52eb..2964ef17e4 100644 --- a/projects/ui/src/lib/directives/po-drag-drop/po-drop-list.directive.spec.ts +++ b/projects/ui/src/lib/directives/po-drag-drop/po-drop-list.directive.spec.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, Input } from '@angular/core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; import { CdkDropList } from '@angular/cdk/drag-drop'; @@ -33,15 +33,17 @@ interface TestItem { standalone: false }) class TestHostComponent { - items: Array = [ + // Inputs do host para permitir atualização via fixture.componentRef.setInput, + // que é o mecanismo suportado para refletir mudanças de binding no ambiente de teste (Angular 22). + @Input() items: Array = [ { id: '1', name: 'Item 1' }, { id: '2', name: 'Item 2' }, { id: '3', name: 'Item 3' } ]; - disabled = false; - orientation: 'horizontal' | 'vertical' | 'mixed' = 'vertical'; - connectedTo: Array = []; - sortingDisabled = false; + @Input() disabled = false; + @Input() orientation: 'horizontal' | 'vertical' | 'mixed' = 'vertical'; + @Input() connectedTo: Array = []; + @Input() sortingDisabled = false; droppedEvent: PoDropEvent | null = null; dragEnteredEvent: PoDragEnterEvent | null = null; @@ -129,7 +131,7 @@ describe('PoDropListDirective', () => { it('should update `items` signal when input changes', () => { const newItems: Array = [{ id: '4', name: 'New Item' }]; - component.items = newItems; + fixture.componentRef.setInput('items', newItems); fixture.detectChanges(); expect(directive.items()).toEqual(newItems); }); @@ -143,7 +145,7 @@ describe('PoDropListDirective', () => { }); it('should read `dropListDisabled` signal as true when input changes', () => { - component.disabled = true; + fixture.componentRef.setInput('disabled', true); fixture.detectChanges(); expect(directive.dropListDisabled()).toBeTrue(); }); @@ -153,7 +155,7 @@ describe('PoDropListDirective', () => { }); it('should update `dropListConnectedTo` when input changes', () => { - component.connectedTo = ['list-b', 'list-c']; + fixture.componentRef.setInput('connectedTo', ['list-b', 'list-c']); fixture.detectChanges(); expect(directive.dropListConnectedTo()).toEqual(['list-b', 'list-c']); }); @@ -163,13 +165,13 @@ describe('PoDropListDirective', () => { }); it('should update `dropListOrientation` when input changes', () => { - component.orientation = 'horizontal'; + fixture.componentRef.setInput('orientation', 'horizontal'); fixture.detectChanges(); expect(directive.dropListOrientation()).toBe('horizontal'); }); it('should accept "mixed" as orientation value', () => { - component.orientation = 'mixed'; + fixture.componentRef.setInput('orientation', 'mixed'); fixture.detectChanges(); expect(directive.dropListOrientation()).toBe('mixed'); }); @@ -179,7 +181,7 @@ describe('PoDropListDirective', () => { }); it('should read `dropSortingDisabled` as true when input changes', () => { - component.sortingDisabled = true; + fixture.componentRef.setInput('sortingDisabled', true); fixture.detectChanges(); expect(directive.dropSortingDisabled()).toBeTrue(); }); @@ -194,7 +196,7 @@ describe('PoDropListDirective', () => { it('should sync disabled state to CdkDropList', () => { expect(cdkDropList.disabled).toBeFalse(); - component.disabled = true; + fixture.componentRef.setInput('disabled', true); fixture.detectChanges(); expect(cdkDropList.disabled).toBeTrue(); }); @@ -209,13 +211,13 @@ describe('PoDropListDirective', () => { it('should sync sortingDisabled to CdkDropList', () => { expect(cdkDropList.sortingDisabled).toBeFalse(); - component.sortingDisabled = true; + fixture.componentRef.setInput('sortingDisabled', true); fixture.detectChanges(); expect(cdkDropList.sortingDisabled).toBeTrue(); }); it('should sync connectedTo as string[] to CdkDropList', () => { - component.connectedTo = ['list-b']; + fixture.componentRef.setInput('connectedTo', ['list-b']); fixture.detectChanges(); expect(cdkDropList.connectedTo).toEqual(['list-b']); }); diff --git a/projects/ui/src/lib/directives/po-tooltip/po-tooltip.directive.spec.ts b/projects/ui/src/lib/directives/po-tooltip/po-tooltip.directive.spec.ts index b04b5f65a3..82429b6268 100644 --- a/projects/ui/src/lib/directives/po-tooltip/po-tooltip.directive.spec.ts +++ b/projects/ui/src/lib/directives/po-tooltip/po-tooltip.directive.spec.ts @@ -1,4 +1,4 @@ -import { Component, Renderer2 } from '@angular/core'; +import { Component, Renderer2, ChangeDetectionStrategy } from '@angular/core'; import { ComponentFixture, fakeAsync, TestBed, tick } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; @@ -13,6 +13,7 @@ import { PoControlPositionService } from '../../services/po-control-position/po-
    `, + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class TestComponent {} diff --git a/projects/ui/src/lib/directives/po-tooltip/samples/sample-po-tooltip-basic/sample-po-tooltip-basic.component.ts b/projects/ui/src/lib/directives/po-tooltip/samples/sample-po-tooltip-basic/sample-po-tooltip-basic.component.ts index 20f9a1c4a8..1efd1d1282 100644 --- a/projects/ui/src/lib/directives/po-tooltip/samples/sample-po-tooltip-basic/sample-po-tooltip-basic.component.ts +++ b/projects/ui/src/lib/directives/po-tooltip/samples/sample-po-tooltip-basic/sample-po-tooltip-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-tooltip-basic', templateUrl: './sample-po-tooltip-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoTooltipBasicComponent {} diff --git a/projects/ui/src/lib/directives/po-tooltip/samples/sample-po-tooltip-labs/sample-po-tooltip-labs.component.ts b/projects/ui/src/lib/directives/po-tooltip/samples/sample-po-tooltip-labs/sample-po-tooltip-labs.component.ts index 383cf320df..c6ab49e483 100644 --- a/projects/ui/src/lib/directives/po-tooltip/samples/sample-po-tooltip-labs/sample-po-tooltip-labs.component.ts +++ b/projects/ui/src/lib/directives/po-tooltip/samples/sample-po-tooltip-labs/sample-po-tooltip-labs.component.ts @@ -1,10 +1,11 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-tooltip-labs', templateUrl: './sample-po-tooltip-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoTooltipLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/directives/po-tooltip/samples/sample-po-tooltip-new-user/sample-po-tooltip-new-user.component.ts b/projects/ui/src/lib/directives/po-tooltip/samples/sample-po-tooltip-new-user/sample-po-tooltip-new-user.component.ts index 13fb22a826..46468c47fc 100644 --- a/projects/ui/src/lib/directives/po-tooltip/samples/sample-po-tooltip-new-user/sample-po-tooltip-new-user.component.ts +++ b/projects/ui/src/lib/directives/po-tooltip/samples/sample-po-tooltip-new-user/sample-po-tooltip-new-user.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, ViewChild } from '@angular/core'; +import { Component, OnInit, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { UntypedFormControl } from '@angular/forms'; import { PoNotificationService } from '@po-ui/ng-components'; @@ -6,6 +6,7 @@ import { PoNotificationService } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-tooltip-new-user', templateUrl: './sample-po-tooltip-new-user.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoTooltipNewUserComponent implements OnInit { diff --git a/projects/ui/src/lib/interceptors/po-http-interceptor/po-http-interceptor-base.service.spec.ts b/projects/ui/src/lib/interceptors/po-http-interceptor/po-http-interceptor-base.service.spec.ts index 42ec5dd0bc..35691c6b1c 100644 --- a/projects/ui/src/lib/interceptors/po-http-interceptor/po-http-interceptor-base.service.spec.ts +++ b/projects/ui/src/lib/interceptors/po-http-interceptor/po-http-interceptor-base.service.spec.ts @@ -6,7 +6,8 @@ import { HttpRequest, HttpResponse, provideHttpClient, - withInterceptorsFromDi + withInterceptorsFromDi, + withXhr } from '@angular/common/http'; import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { inject, TestBed } from '@angular/core/testing'; @@ -48,7 +49,7 @@ describe('PoHttpInterceptorBaseService', () => { useClass: PoHttpInterceptorService, multi: true }, - provideHttpClient(withInterceptorsFromDi()), + provideHttpClient(withXhr(), withInterceptorsFromDi()), provideHttpClientTesting() ] }).compileComponents(); diff --git a/projects/ui/src/lib/interceptors/po-http-interceptor/po-http-interceptor-base.service.ts b/projects/ui/src/lib/interceptors/po-http-interceptor/po-http-interceptor-base.service.ts index 5be3f59ef2..bf21746a34 100644 --- a/projects/ui/src/lib/interceptors/po-http-interceptor/po-http-interceptor-base.service.ts +++ b/projects/ui/src/lib/interceptors/po-http-interceptor/po-http-interceptor-base.service.ts @@ -30,17 +30,15 @@ const NO_MESSAGE_HEADER_PARAM = 'X-PO-No-Message'; * * ## Configuração * - * Para o correto funcionamento do interceptor `po-http-interceptor`, deve ser importado o `BrowserAnimationsModule` na - * aplicação. Além disso, é necessário configurar o `HttpClient` para utilizar os interceptors registrados via Dependency - * Injection (DI) por meio da função `provideHttpClient(withInterceptorsFromDi())`. + * Para o correto funcionamento do interceptor `po-http-interceptor`, é necessário configurar o `HttpClient` para utilizar + * os interceptors registrados via Dependency Injection (DI) por meio da função `provideHttpClient(withInterceptorsFromDi())`. * * ### 1) NgModule * - * No módulo principal da aplicação (geralmente `AppModule`), importe o `BrowserAnimationsModule` e configure o `HttpClient`, + * No módulo principal da aplicação (geralmente `AppModule`), configure o `HttpClient`, * como no exemplo abaixo: * * ``` - * import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; * import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; * import { PoModule } from '@po-ui/ng-components'; * ... @@ -48,7 +46,6 @@ const NO_MESSAGE_HEADER_PARAM = 'X-PO-No-Message'; * @NgModule({ * imports: [ * BrowserModule, - * BrowserAnimationsModule, * ... * PoModule * ], @@ -76,13 +73,11 @@ const NO_MESSAGE_HEADER_PARAM = 'X-PO-No-Message'; * ``` * import { ApplicationConfig, importProvidersFrom } from '@angular/core'; * import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; - * import { provideAnimations } from '@angular/platform-browser/animations'; * import { PoHttpInterceptorModule } from '@po-ui/ng-components'; * * export const appConfig: ApplicationConfig = { * providers: [ * ... - * provideAnimations(), * provideHttpClient(withInterceptorsFromDi()), * importProvidersFrom([ * PoHttpInterceptorModule diff --git a/projects/ui/src/lib/interceptors/po-http-interceptor/po-http-interceptor-detail/po-http-interceptor-detail.component.ts b/projects/ui/src/lib/interceptors/po-http-interceptor/po-http-interceptor-detail/po-http-interceptor-detail.component.ts index 9b9ca4de65..9d4473963d 100644 --- a/projects/ui/src/lib/interceptors/po-http-interceptor/po-http-interceptor-detail/po-http-interceptor-detail.component.ts +++ b/projects/ui/src/lib/interceptors/po-http-interceptor/po-http-interceptor-detail/po-http-interceptor-detail.component.ts @@ -1,4 +1,4 @@ -import { Component, EventEmitter, OnInit, ViewChild } from '@angular/core'; +import { Component, EventEmitter, OnInit, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { PoModalAction } from '../../../components/po-modal/po-modal-action.interface'; import { PoModalComponent } from '../../../components/po-modal/po-modal.component'; @@ -19,6 +19,7 @@ export const colors = { success: 'color-11', error: 'color-07', warning: 'color- @Component({ selector: 'po-http-interceptor-detail', templateUrl: './po-http-interceptor-detail.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoHttpInterceptorDetailComponent implements OnInit { diff --git a/projects/ui/src/lib/interceptors/po-http-interceptor/samples/sample-po-http-interceptor-labs.component.ts b/projects/ui/src/lib/interceptors/po-http-interceptor/samples/sample-po-http-interceptor-labs.component.ts index fda5140784..9367e6a281 100644 --- a/projects/ui/src/lib/interceptors/po-http-interceptor/samples/sample-po-http-interceptor-labs.component.ts +++ b/projects/ui/src/lib/interceptors/po-http-interceptor/samples/sample-po-http-interceptor-labs.component.ts @@ -1,6 +1,6 @@ // import { PoRadioGroupOption } from './../../../../../../../dist/ng-components/lib/components/po-field/po-radio-group/po-radio-group-option.interface.d'; import { HttpClient } from '@angular/common/http'; -import { Component, OnDestroy, OnInit } from '@angular/core'; +import { Component, OnDestroy, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoRadioGroupOption } from '@po-ui/ng-components'; import { Subscription } from 'rxjs'; @@ -8,6 +8,7 @@ import { Subscription } from 'rxjs'; @Component({ selector: 'sample-po-http-interceptor-labs', templateUrl: './sample-po-http-interceptor-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoHttpInterceptorLabsComponent implements OnDestroy, OnInit { diff --git a/projects/ui/src/lib/interceptors/po-http-request/po-http-request-interceptor.service.spec.ts b/projects/ui/src/lib/interceptors/po-http-request/po-http-request-interceptor.service.spec.ts index acf19525a4..2e99cb955d 100644 --- a/projects/ui/src/lib/interceptors/po-http-request/po-http-request-interceptor.service.spec.ts +++ b/projects/ui/src/lib/interceptors/po-http-request/po-http-request-interceptor.service.spec.ts @@ -4,7 +4,8 @@ import { HTTP_INTERCEPTORS, HttpRequest, provideHttpClient, - withInterceptorsFromDi + withInterceptorsFromDi, + withXhr } from '@angular/common/http'; import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { inject, TestBed } from '@angular/core/testing'; @@ -37,7 +38,7 @@ describe('PoHttpRequestInterceptorService: ', () => { useClass: PoHttpRequestInterceptorService, multi: true }, - provideHttpClient(withInterceptorsFromDi()), + provideHttpClient(withXhr(), withInterceptorsFromDi()), provideHttpClientTesting() ] }); diff --git a/projects/ui/src/lib/interceptors/po-http-request/po-http-request-interceptor.service.ts b/projects/ui/src/lib/interceptors/po-http-request/po-http-request-interceptor.service.ts index 12bccdc1df..5a8107983b 100644 --- a/projects/ui/src/lib/interceptors/po-http-request/po-http-request-interceptor.service.ts +++ b/projects/ui/src/lib/interceptors/po-http-request/po-http-request-interceptor.service.ts @@ -88,7 +88,6 @@ const screenLock = 'X-PO-Screen-Lock'; * ``` * import { ApplicationConfig, importProvidersFrom } from '@angular/core'; * import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; - * import { provideAnimations } from '@angular/platform-browser/animations'; * import { PoHttpRequestModule } from '@po-ui/ng-components'; * * export const appConfig: ApplicationConfig = { diff --git a/projects/ui/src/lib/interceptors/po-http-request/samples/sample-po-http-request-interceptor-labs.component.ts b/projects/ui/src/lib/interceptors/po-http-request/samples/sample-po-http-request-interceptor-labs.component.ts index 0b877a926f..cd3bfc3cbc 100644 --- a/projects/ui/src/lib/interceptors/po-http-request/samples/sample-po-http-request-interceptor-labs.component.ts +++ b/projects/ui/src/lib/interceptors/po-http-request/samples/sample-po-http-request-interceptor-labs.component.ts @@ -1,4 +1,4 @@ -import { Component, OnDestroy, OnInit } from '@angular/core'; +import { Component, OnDestroy, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { Subscription } from 'rxjs'; @@ -8,6 +8,7 @@ import { PoHttpRequestInterceptorService } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-http-request-interceptor-labs', templateUrl: './sample-po-http-request-interceptor-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoHttpRequestInterceptorLabsComponent implements OnInit, OnDestroy { diff --git a/projects/ui/src/lib/services/po-component-injector/po-component-injector.service.spec.ts b/projects/ui/src/lib/services/po-component-injector/po-component-injector.service.spec.ts index e376b8e8af..143d18a2ba 100644 --- a/projects/ui/src/lib/services/po-component-injector/po-component-injector.service.spec.ts +++ b/projects/ui/src/lib/services/po-component-injector/po-component-injector.service.spec.ts @@ -1,4 +1,4 @@ -import { NgModule, Component } from '@angular/core'; +import { NgModule, Component, ChangeDetectionStrategy } from '@angular/core'; import { TestBed, inject } from '@angular/core/testing'; import { CommonModule } from '@angular/common'; @@ -8,6 +8,7 @@ import { PoComponentInjectorService } from './po-component-injector.service'; @Component({ template: `
    test component
    `, + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) class TestComponent { diff --git a/projects/ui/src/lib/services/po-component-injector/po-component-injector.service.ts b/projects/ui/src/lib/services/po-component-injector/po-component-injector.service.ts index 27b9a57f7e..972d453eb4 100644 --- a/projects/ui/src/lib/services/po-component-injector/po-component-injector.service.ts +++ b/projects/ui/src/lib/services/po-component-injector/po-component-injector.service.ts @@ -1,26 +1,37 @@ -import { Injectable, ComponentRef, ComponentFactoryResolver, ApplicationRef, Injector } from '@angular/core'; +import { Injectable, ComponentRef, ApplicationRef, Injector, createComponent, Type } from '@angular/core'; @Injectable({ providedIn: 'root' }) export class PoComponentInjectorService { constructor( - private readonly componentResolver: ComponentFactoryResolver, private readonly applicationRef: ApplicationRef, private readonly injector: Injector ) {} - // Cria um dinamicamente no ApplicationRef - createComponentInApplication(component: any): ComponentRef { - const componentRef = this.componentResolver.resolveComponentFactory(component).create(this.injector); + /** + * Cria dinamicamente um componente no ApplicationRef e o anexa ao body do documento. + * @param component Classe do componente Angular (ex: MeuComponente) + */ + createComponentInApplication(component: Type): ComponentRef { + const componentRef = createComponent(component, { + environmentInjector: this.applicationRef.injector, + elementInjector: this.injector + }); + this.applicationRef.attachView(componentRef.hostView); - const domElem = (componentRef.hostView).rootNodes[0]; + + const domElem = (componentRef.hostView as any).rootNodes[0] as HTMLElement; document.body.appendChild(domElem); + return componentRef; } - // Destrói o componente e remove do ApplicationRef - destroyComponentInApplication(componentRef: any) { + /** + * Destrói o componente e remove suas referências do ApplicationRef e do DOM. + * @param componentRef Referência do componente que foi criado dinamicamente + */ + destroyComponentInApplication(componentRef: ComponentRef): void { this.applicationRef.detachView(componentRef.hostView); componentRef.destroy(); } diff --git a/projects/ui/src/lib/services/po-dialog/po-dialog.component.ts b/projects/ui/src/lib/services/po-dialog/po-dialog.component.ts index b81a2e5fa9..6b221b1176 100644 --- a/projects/ui/src/lib/services/po-dialog/po-dialog.component.ts +++ b/projects/ui/src/lib/services/po-dialog/po-dialog.component.ts @@ -1,4 +1,14 @@ -import { Component, ComponentRef, HostBinding, HostListener, Input, OnDestroy, OnInit, ViewChild } from '@angular/core'; +import { + Component, + ComponentRef, + HostBinding, + HostListener, + Input, + OnDestroy, + OnInit, + ViewChild, + ChangeDetectionStrategy +} from '@angular/core'; import { Subscription } from 'rxjs'; @@ -39,6 +49,7 @@ export const poDialogConfirmLiteralsDefault = { @Component({ templateUrl: './po-dialog.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoDialogComponent implements OnDestroy, OnInit { diff --git a/projects/ui/src/lib/services/po-dialog/po-dialog.service.spec.ts b/projects/ui/src/lib/services/po-dialog/po-dialog.service.spec.ts index 2d64a97aba..f3550edba5 100644 --- a/projects/ui/src/lib/services/po-dialog/po-dialog.service.spec.ts +++ b/projects/ui/src/lib/services/po-dialog/po-dialog.service.spec.ts @@ -1,4 +1,4 @@ -import { Component, NgModule } from '@angular/core'; +import { Component, NgModule, ChangeDetectionStrategy } from '@angular/core'; import { CommonModule } from '@angular/common'; import { ComponentFixture, inject, TestBed } from '@angular/core/testing'; @@ -18,6 +18,7 @@ class TestModule {} @Component({ template: ` test component `, providers: [PoComponentInjectorService, PoDialogService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) class TestComponent { diff --git a/projects/ui/src/lib/services/po-dialog/samples/sample-po-dialog-basic/sample-po-dialog-basic.component.ts b/projects/ui/src/lib/services/po-dialog/samples/sample-po-dialog-basic/sample-po-dialog-basic.component.ts index 05db343e79..fafb8fab6b 100644 --- a/projects/ui/src/lib/services/po-dialog/samples/sample-po-dialog-basic/sample-po-dialog-basic.component.ts +++ b/projects/ui/src/lib/services/po-dialog/samples/sample-po-dialog-basic/sample-po-dialog-basic.component.ts @@ -1,10 +1,11 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoDialogService } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-dialog-basic', templateUrl: './sample-po-dialog-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoDialogBasicComponent { diff --git a/projects/ui/src/lib/services/po-dialog/samples/sample-po-dialog-cancel-credit-card/sample-po-dialog-cancel-credit-card.component.ts b/projects/ui/src/lib/services/po-dialog/samples/sample-po-dialog-cancel-credit-card/sample-po-dialog-cancel-credit-card.component.ts index d2c3a7ebb5..d780a9dc73 100644 --- a/projects/ui/src/lib/services/po-dialog/samples/sample-po-dialog-cancel-credit-card/sample-po-dialog-cancel-credit-card.component.ts +++ b/projects/ui/src/lib/services/po-dialog/samples/sample-po-dialog-cancel-credit-card/sample-po-dialog-cancel-credit-card.component.ts @@ -1,4 +1,4 @@ -import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core'; +import { Component, OnDestroy, OnInit, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { UntypedFormControl } from '@angular/forms'; import { Subscription } from 'rxjs'; @@ -8,6 +8,7 @@ import { PoDialogService, PoNotificationService, PoPageAction, PoRadioGroupOptio @Component({ selector: 'sample-po-dialog-cancel-credit-card', templateUrl: './sample-po-dialog-cancel-credit-card.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoDialogCancelCreditCardComponent implements OnDestroy, OnInit { diff --git a/projects/ui/src/lib/services/po-dialog/samples/sample-po-dialog-labs/sample-po-dialog-labs.component.ts b/projects/ui/src/lib/services/po-dialog/samples/sample-po-dialog-labs/sample-po-dialog-labs.component.ts index 09d28886a4..235bb4966b 100644 --- a/projects/ui/src/lib/services/po-dialog/samples/sample-po-dialog-labs/sample-po-dialog-labs.component.ts +++ b/projects/ui/src/lib/services/po-dialog/samples/sample-po-dialog-labs/sample-po-dialog-labs.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption, PoRadioGroupOption } from '@po-ui/ng-components'; @@ -7,6 +7,7 @@ import { PoDialogAlertLiterals, PoDialogConfirmLiterals, PoDialogService } from @Component({ selector: 'sample-po-dialog-labs', templateUrl: './sample-po-dialog-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoDialogLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/services/po-i18n/po-i18n-base.service.spec.ts b/projects/ui/src/lib/services/po-i18n/po-i18n-base.service.spec.ts index 89cdca7f3a..4c3eb5c761 100644 --- a/projects/ui/src/lib/services/po-i18n/po-i18n-base.service.spec.ts +++ b/projects/ui/src/lib/services/po-i18n/po-i18n-base.service.spec.ts @@ -1,6 +1,6 @@ import { fakeAsync, TestBed, tick } from '@angular/core/testing'; import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; -import { HttpRequest, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { HttpRequest, provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; import { of } from 'rxjs'; @@ -44,7 +44,7 @@ describe('PoI18nService:', () => { beforeEach(async () => { await TestBed.configureTestingModule({ imports: [PoLanguageModule, PoI18nModule.config(config)], - providers: [provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting()] + providers: [provideHttpClient(withXhr(), withInterceptorsFromDi()), provideHttpClientTesting()] }).compileComponents(); service = TestBed.inject(PoI18nService); @@ -334,7 +334,7 @@ describe('PoI18nService:', () => { beforeEach(() => { TestBed.configureTestingModule({ imports: [PoLanguageModule, PoI18nModule.config(config)], - providers: [provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting()] + providers: [provideHttpClient(withXhr(), withInterceptorsFromDi()), provideHttpClientTesting()] }); service = TestBed.inject(PoI18nService); diff --git a/projects/ui/src/lib/services/po-i18n/samples/sample-po-i18n-pipe-labs.component.ts b/projects/ui/src/lib/services/po-i18n/samples/sample-po-i18n-pipe-labs.component.ts index 3dee1dabdb..0bdd45ca8e 100644 --- a/projects/ui/src/lib/services/po-i18n/samples/sample-po-i18n-pipe-labs.component.ts +++ b/projects/ui/src/lib/services/po-i18n/samples/sample-po-i18n-pipe-labs.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-i18n-pipe-labs', templateUrl: './sample-po-i18n-pipe-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoI18nPipeLabsComponent { diff --git a/projects/ui/src/lib/services/po-i18n/samples/sample-po-i18n-pipe.component.ts b/projects/ui/src/lib/services/po-i18n/samples/sample-po-i18n-pipe.component.ts index f0c1b303c3..16e99066c8 100644 --- a/projects/ui/src/lib/services/po-i18n/samples/sample-po-i18n-pipe.component.ts +++ b/projects/ui/src/lib/services/po-i18n/samples/sample-po-i18n-pipe.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-i18n-pipe', templateUrl: './sample-po-i18n-pipe.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoI18nPipeComponent {} diff --git a/projects/ui/src/lib/services/po-notification/samples/sample-po-notification-basic/sample-po-notification-basic.component.ts b/projects/ui/src/lib/services/po-notification/samples/sample-po-notification-basic/sample-po-notification-basic.component.ts index 00abb4c048..b8961a0637 100644 --- a/projects/ui/src/lib/services/po-notification/samples/sample-po-notification-basic/sample-po-notification-basic.component.ts +++ b/projects/ui/src/lib/services/po-notification/samples/sample-po-notification-basic/sample-po-notification-basic.component.ts @@ -1,10 +1,11 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoNotificationService } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-notification-basic', templateUrl: './sample-po-notification-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoNotificationBasicComponent { diff --git a/projects/ui/src/lib/services/po-notification/samples/sample-po-notification-labs/sample-po-notification-labs.component.ts b/projects/ui/src/lib/services/po-notification/samples/sample-po-notification-labs/sample-po-notification-labs.component.ts index b6ca6c0ee7..cbc51faddb 100644 --- a/projects/ui/src/lib/services/po-notification/samples/sample-po-notification-labs/sample-po-notification-labs.component.ts +++ b/projects/ui/src/lib/services/po-notification/samples/sample-po-notification-labs/sample-po-notification-labs.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, ViewChild } from '@angular/core'; +import { Component, OnInit, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { PoModalComponent, @@ -13,6 +13,7 @@ import { selector: 'sample-po-notification-labs', templateUrl: './sample-po-notification-labs.component.html', providers: [PoNotificationService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoNotificationLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/services/po-notification/samples/sample-po-notification-sales/sample-po-notification-sales.component.ts b/projects/ui/src/lib/services/po-notification/samples/sample-po-notification-sales/sample-po-notification-sales.component.ts index 627d3c6406..97a8043649 100644 --- a/projects/ui/src/lib/services/po-notification/samples/sample-po-notification-sales/sample-po-notification-sales.component.ts +++ b/projects/ui/src/lib/services/po-notification/samples/sample-po-notification-sales/sample-po-notification-sales.component.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoComboOption, PoNotificationService, PoTableColumn } from '@po-ui/ng-components'; @@ -6,6 +6,7 @@ import { PoComboOption, PoNotificationService, PoTableColumn } from '@po-ui/ng-c selector: 'sample-po-notification-sales', templateUrl: './sample-po-notification-sales.component.html', providers: [PoNotificationService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoNotificationSalesComponent { diff --git a/projects/ui/src/lib/services/po-theme/samples/sample-po-theme-labs/sample-po-theme-labs.component.ts b/projects/ui/src/lib/services/po-theme/samples/sample-po-theme-labs/sample-po-theme-labs.component.ts index 582620ef53..91a0b0d43a 100644 --- a/projects/ui/src/lib/services/po-theme/samples/sample-po-theme-labs/sample-po-theme-labs.component.ts +++ b/projects/ui/src/lib/services/po-theme/samples/sample-po-theme-labs/sample-po-theme-labs.component.ts @@ -1,4 +1,4 @@ -import { ChangeDetectorRef, Component, OnDestroy, OnInit, ViewChild } from '@angular/core'; +import { ChangeDetectorRef, Component, OnDestroy, OnInit, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms'; import { @@ -20,6 +20,7 @@ import { PoModalAction, PoModalComponent } from '@po-ui/ng-components'; selector: 'sample-po-theme-labs', templateUrl: './sample-po-theme-labs.component.html', providers: [PoThemeService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoThemeLabsComponent implements OnInit, OnDestroy { diff --git a/projects/ui/src/lib/services/po-user-guide/po-user-guide.service.spec.ts b/projects/ui/src/lib/services/po-user-guide/po-user-guide.service.spec.ts index 87b099b99e..015d6ad630 100644 --- a/projects/ui/src/lib/services/po-user-guide/po-user-guide.service.spec.ts +++ b/projects/ui/src/lib/services/po-user-guide/po-user-guide.service.spec.ts @@ -996,7 +996,9 @@ describe('PoUserGuideService:', () => { it('should return a Promise when importDriver is invoked directly', () => { const result = (service as any).importDriver(); - expect(result).toBeInstanceOf(Promise); + expect(result).toBeDefined(); + expect(typeof result.then).toBe('function'); + expect(typeof result.catch).toBe('function'); (result as Promise).catch(() => {}); }); diff --git a/projects/ui/src/lib/services/po-user-guide/samples/sample-po-user-guide-basic/sample-po-user-guide-basic.component.ts b/projects/ui/src/lib/services/po-user-guide/samples/sample-po-user-guide-basic/sample-po-user-guide-basic.component.ts index ad93d67f61..afba12b5d1 100644 --- a/projects/ui/src/lib/services/po-user-guide/samples/sample-po-user-guide-basic/sample-po-user-guide-basic.component.ts +++ b/projects/ui/src/lib/services/po-user-guide/samples/sample-po-user-guide-basic/sample-po-user-guide-basic.component.ts @@ -1,10 +1,11 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoUserGuidePosition, PoUserGuideService, PoUserGuideStep } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-user-guide-basic', templateUrl: './sample-po-user-guide-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoUserGuideBasicComponent { diff --git a/projects/ui/src/lib/services/po-user-guide/samples/sample-po-user-guide-labs/sample-po-user-guide-labs.component.ts b/projects/ui/src/lib/services/po-user-guide/samples/sample-po-user-guide-labs/sample-po-user-guide-labs.component.ts index 9884dfa8e0..fa3b0126f8 100644 --- a/projects/ui/src/lib/services/po-user-guide/samples/sample-po-user-guide-labs/sample-po-user-guide-labs.component.ts +++ b/projects/ui/src/lib/services/po-user-guide/samples/sample-po-user-guide-labs/sample-po-user-guide-labs.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoUserGuideOptions, PoUserGuidePosition, PoUserGuideService, PoUserGuideStep } from '@po-ui/ng-components'; @@ -6,6 +6,7 @@ import { PoUserGuideOptions, PoUserGuidePosition, PoUserGuideService, PoUserGuid selector: 'sample-po-user-guide-labs', templateUrl: './sample-po-user-guide-labs.component.html', providers: [PoUserGuideService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoUserGuideLabsComponent implements OnInit { diff --git a/projects/ui/src/lib/services/po-user-guide/samples/sample-po-user-guide-onboarding/sample-po-user-guide-onboarding.component.ts b/projects/ui/src/lib/services/po-user-guide/samples/sample-po-user-guide-onboarding/sample-po-user-guide-onboarding.component.ts index 82f6c37070..d6ddce029f 100644 --- a/projects/ui/src/lib/services/po-user-guide/samples/sample-po-user-guide-onboarding/sample-po-user-guide-onboarding.component.ts +++ b/projects/ui/src/lib/services/po-user-guide/samples/sample-po-user-guide-onboarding/sample-po-user-guide-onboarding.component.ts @@ -1,4 +1,4 @@ -import { Component, AfterViewInit } from '@angular/core'; +import { Component, AfterViewInit, ChangeDetectionStrategy } from '@angular/core'; import { PoUserGuidePosition, PoUserGuideService, PoUserGuideStep } from '@po-ui/ng-components'; @@ -6,6 +6,7 @@ import { PoUserGuidePosition, PoUserGuideService, PoUserGuideStep } from '@po-ui selector: 'sample-po-user-guide-onboarding', templateUrl: './sample-po-user-guide-onboarding.component.html', providers: [PoUserGuideService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoUserGuideOnboardingComponent implements AfterViewInit { diff --git a/projects/ui/tsconfig.dts.json b/projects/ui/tsconfig.dts.json index ed6cb6dc74..ee7e147dcc 100644 --- a/projects/ui/tsconfig.dts.json +++ b/projects/ui/tsconfig.dts.json @@ -1,6 +1,7 @@ { "extends": "./tsconfig.lib.json", "compilerOptions": { + "rootDir": "./src", "declaration": true, "declarationMap": false, "emitDeclarationOnly": true, diff --git a/projects/ui/tsconfig.lib.json b/projects/ui/tsconfig.lib.json index 65eb256a90..0d64ccf35f 100644 --- a/projects/ui/tsconfig.lib.json +++ b/projects/ui/tsconfig.lib.json @@ -1,7 +1,6 @@ { "extends": "../../tsconfig.json", "compilerOptions": { - "baseUrl": ".", "outDir": "./dist/", "declarationMap": true, "declaration": true, @@ -11,9 +10,9 @@ "angularCompilerOptions": { "skipTemplateCodegen": true, "strictMetadataEmit": true, - "fullTemplateTypeCheck": true, "strictInjectionParameters": true, - "enableResourceInlining": true + "enableResourceInlining": true, + "strictTemplates": false }, "exclude": ["test.ts", "**/*.spec.ts", "**/*.e2e-spec.ts", "**/*.po.ts", "./node_modules/"] } diff --git a/projects/ui/tsconfig.schematics-spec.json b/projects/ui/tsconfig.schematics-spec.json new file mode 100644 index 0000000000..19387dd819 --- /dev/null +++ b/projects/ui/tsconfig.schematics-spec.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.schematics.json", + "compilerOptions": { + "noEmitOnError": false, + "noUnusedLocals": false, + "noUnusedParameters": false + }, + "include": ["schematics/**/*.spec.ts"], + "exclude": ["schematics/**/*/files/**/*", "schematics/ng-update/v22/gauge-manual-test/**/*"] +} diff --git a/projects/ui/tsconfig.schematics.json b/projects/ui/tsconfig.schematics.json index c2756d4fd7..07625afc82 100644 --- a/projects/ui/tsconfig.schematics.json +++ b/projects/ui/tsconfig.schematics.json @@ -1,11 +1,10 @@ { "extends": "../../tsconfig.json", "compilerOptions": { - "baseUrl": "../../", "lib": ["es2022", "dom"], "declaration": true, - "module": "commonjs", - "moduleResolution": "node", + "module": "node16", + "moduleResolution": "node16", "noEmitOnError": true, "noFallthroughCasesInSwitch": true, "noImplicitAny": false, @@ -22,5 +21,9 @@ "types": ["jasmine", "node"] }, "include": ["schematics/**/*"], - "exclude": ["schematics/**/*/files/**/*", "schematics/**/*/*.spec.ts"] + "exclude": [ + "schematics/**/*/files/**/*", + "schematics/**/*/*.spec.ts", + "schematics/ng-update/v22/gauge-manual-test/**/*" + ] } diff --git a/projects/ui/tsconfig.spec.json b/projects/ui/tsconfig.spec.json index 4005d5cb0f..96ecd96f9a 100644 --- a/projects/ui/tsconfig.spec.json +++ b/projects/ui/tsconfig.spec.json @@ -7,5 +7,8 @@ }, "files": ["src/test.ts"], "include": ["**/*.spec.ts", "**/*.d.ts", "src/lib/util-test/util-setup.ts"], - "exclude": ["schematics/**/*.spec.ts", "**/*.d.ts"] + "exclude": ["schematics/**/*.spec.ts", "**/*.d.ts"], + "angularCompilerOptions": { + "strictTemplates": false + } } diff --git a/scripts/generate-dist-trees.js b/scripts/generate-dist-trees.js new file mode 100644 index 0000000000..f36fa6b35f --- /dev/null +++ b/scripts/generate-dist-trees.js @@ -0,0 +1,67 @@ +/** + * generate-dist-trees.js + * + * Mapeia cada subdiretório presente em `dist/` e gera um arquivo + * `.tree` contendo a lista recursiva de todos os arquivos. + * + * Uso: + * node scripts/generate-dist-trees.js [outputDir] + * + * - outputDir (opcional): diretório onde os arquivos .tree serão salvos. + * Padrão: ./dist-trees + */ + +const fs = require('fs'); +const path = require('path'); + +const DIST_DIR = path.resolve(__dirname, '..', 'dist'); +const OUTPUT_DIR = path.resolve(process.argv[2] || path.join(__dirname, '..', 'dist-trees')); + +function getAllFiles(dirPath, basePath) { + const entries = fs.readdirSync(dirPath, { withFileTypes: true }); + let files = []; + + for (const entry of entries) { + const fullPath = path.join(dirPath, entry.name); + if (entry.isDirectory()) { + files = files.concat(getAllFiles(fullPath, basePath)); + } else { + // Caminho relativo ao diretório base (subdiretório de dist) + files.push(path.relative(basePath, fullPath).replace(/\\/g, '/')); + } + } + + return files; +} + +function main() { + if (!fs.existsSync(DIST_DIR)) { + console.error(`Erro: diretório "dist" não encontrado em: ${DIST_DIR}`); + process.exit(1); + } + + // Cria o diretório de saída se não existir + if (!fs.existsSync(OUTPUT_DIR)) { + fs.mkdirSync(OUTPUT_DIR, { recursive: true }); + } + + const subDirs = fs.readdirSync(DIST_DIR, { withFileTypes: true }).filter(d => d.isDirectory()); + + if (subDirs.length === 0) { + console.log('Nenhum subdiretório encontrado em dist/'); + return; + } + + for (const dir of subDirs) { + const dirFullPath = path.join(DIST_DIR, dir.name); + const files = getAllFiles(dirFullPath, dirFullPath).sort(); + const outputFile = path.join(OUTPUT_DIR, `${dir.name}.tree`); + + fs.writeFileSync(outputFile, files.join('\n') + '\n', 'utf-8'); + console.log(`✔ ${dir.name}.tree (${files.length} arquivos)`); + } + + console.log(`\nArquivos .tree salvos em: ${OUTPUT_DIR}`); +} + +main(); diff --git a/scripts/schematics.js b/scripts/schematics.js index 4c7ef6d7bb..033e8e2904 100644 --- a/scripts/schematics.js +++ b/scripts/schematics.js @@ -30,6 +30,23 @@ task('tsc:schematics', done => { }); }); +// Compiles the schematics *.spec.ts files so they can be executed with jasmine. +// The spec files are intentionally excluded from the production build (tsconfig.schematics.json), +// so this task uses a dedicated tsconfig that includes them. +task('tsc:schematics:spec', done => { + const lib = argv.lib; + + exec(`npm run tsc -- -p ./projects/${lib}/tsconfig.schematics-spec.json`, (err, stdout, stderr) => { + if (err) { + console.error(`exec error: ${err}`); + return done(err); + } + console.log(stdout); + console.log(stderr); + done(); + }); +}); + task('tsc:schematics:lib', done => { exec(`npm run tsc -- -p ./projects/schematics/tsconfig.json`, (err, stdout, stderr) => { if (err) { @@ -52,6 +69,16 @@ task('clean:schematics:lib', () => { return src('./dist/ng-schematics', { read: false, allowEmpty: true }).pipe(clean()); }); +// Removes the compiled schematics output of the library informed by the lib argument. +// Ensures a clean state for tests (e.g. avoids a leftover `dist//package.json` with +// `"type": "module"` from a previous production build breaking the CommonJS spec execution). +task('clean:schematics', () => { + const lib = argv.lib; + const distLib = lib === 'ui' ? 'components' : lib; + + return src(`./dist/ng-${distLib}`, { read: false, allowEmpty: true }).pipe(clean()); +}); + /** * build schematics of library informed by lib argument * @@ -59,5 +86,12 @@ task('clean:schematics:lib', () => { */ task('build:schematics', series('tsc:schematics', 'copy-resources:schematics')); +/** + * build schematics (including *.spec.ts files) so they can be executed with jasmine. + * + * ex: gulp build:schematics:spec --lib ui + */ +task('build:schematics:spec', series('tsc:schematics', 'copy-resources:schematics', 'tsc:schematics:spec')); + /** build ./project/schematics */ task('build:schematics:lib', series('clean:schematics:lib', 'tsc:schematics:lib', 'copy-resources:schematics:lib')); diff --git a/tsconfig.json b/tsconfig.json index 9b3b4da874..a1eb3c9cac 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,8 +1,9 @@ { "compileOnSave": false, "compilerOptions": { - "baseUrl": "./", "outDir": "./dist/out-tsc", + "strict": false, + "esModuleInterop": true, "sourceMap": true, "declaration": false, "module": "es2022", From f69413c9a22fc2a1f659e8550f0054c85530d664 Mon Sep 17 00:00:00 2001 From: Luiz Gustavo da Silva Vasconcellos Date: Fri, 19 Jun 2026 11:12:32 -0300 Subject: [PATCH 2/8] refactor(gauge): remove componente po-gauge depreciado MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Remove o componente po-gauge, seus samples e a documentação associada. O componente havia sido depreciado na v19.16.0 e marcado para remoção na v22. A alternativa recomendada é o po-chart com p-type="gauge". Para facilitar a adoção, a remoção acompanha uma migração automática na schematic de ng-update da v22, que converte os usos de po-gauge para po-chart nos arquivos .html e .ts dos projetos consumidores, mapeando as propriedades e os símbolos equivalentes (PoGaugeModule para PoChartModule, PoGaugeComponent para PoChartComponent, entre outros). Símbolos sem equivalente são reportados para revisão manual, com um resumo dos arquivos analisados e alterados ao final. Fixes DTHFUI-13230 BREAKING CHANGE: removido componente po-gauge O componente po-gauge foi removido por completo da biblioteca. Utilize o po-chart com type=gauge como alternativa. A migração pode ser aplicada automaticamente via ng update do PO UI para a v22. Antes: Depois: --- README.md | 6 +- docs/guides/browser-support.md | 4 - docs/guides/deprecations.md | 52 +- docs/guides/migration-poui.md | 35 +- projects/sync/schematics/package.json | 3 + projects/ui/README.md | 2 +- .../ui/schematics/ng-add/setup-project.ts | 115 +++ .../ui/schematics/ng-update/v22/changes.ts | 47 ++ .../v22/gauge-html-migration.spec.ts | 759 ++++++++++++++++++ .../ng-update/v22/gauge-html-migration.ts | 402 ++++++++++ .../all-cases.component.html | 723 +++++++++++++++++ .../gauge-manual-test/all-cases.component.ts | 376 +++++++++ .../v22/gauge-manual-test/all-cases.module.ts | 12 + .../v22/gauge-manual-test/run-migration.ts | 161 ++++ .../ng-update/v22/gauge-property-map.spec.ts | 615 ++++++++++++++ .../ng-update/v22/gauge-property-map.ts | 366 +++++++++ .../ng-update/v22/gauge-ts-migration.spec.ts | 497 ++++++++++++ .../ng-update/v22/gauge-ts-migration.ts | 438 ++++++++++ .../ui/schematics/ng-update/v22/index.spec.ts | 660 +++++++++++++++ projects/ui/schematics/ng-update/v22/index.ts | 334 +++++++- .../ng-update/v22/migration-report.spec.ts | 152 ++++ .../ng-update/v22/migration-report.ts | 84 ++ projects/ui/schematics/package.json | 3 + .../src/lib/components/components.module.ts | 2 - projects/ui/src/lib/components/index.ts | 1 - .../ui/src/lib/components/po-gauge/index.ts | 6 - .../po-gauge-coordinates.interface.ts | 22 - .../interfaces/po-gauge-options.interface.ts | 75 -- .../interfaces/po-gauge-ranges.interface.ts | 47 -- .../po-gauge-svg-container.interface.ts | 16 - .../po-gauge/po-gauge-base.component.spec.ts | 102 --- .../po-gauge/po-gauge-base.component.ts | 184 ----- .../po-gauge-default-values.constant.ts | 14 - .../po-gauge/po-gauge.component.html | 8 - .../po-gauge/po-gauge.component.spec.ts | 125 --- .../components/po-gauge/po-gauge.component.ts | 63 -- .../components/po-gauge/po-gauge.module.ts | 17 - .../sample-po-gauge-basic.component.html | 1 - .../sample-po-gauge-basic.component.ts | 9 - .../sample-po-gauge-labs.component.html | 59 -- .../sample-po-gauge-labs.component.ts | 70 -- .../sample-po-gauge-summary.component.html | 23 - .../sample-po-gauge-summary.component.ts | 23 - 43 files changed, 5800 insertions(+), 913 deletions(-) create mode 100644 projects/sync/schematics/package.json create mode 100644 projects/ui/schematics/ng-update/v22/gauge-html-migration.spec.ts create mode 100644 projects/ui/schematics/ng-update/v22/gauge-html-migration.ts create mode 100644 projects/ui/schematics/ng-update/v22/gauge-manual-test/all-cases.component.html create mode 100644 projects/ui/schematics/ng-update/v22/gauge-manual-test/all-cases.component.ts create mode 100644 projects/ui/schematics/ng-update/v22/gauge-manual-test/all-cases.module.ts create mode 100644 projects/ui/schematics/ng-update/v22/gauge-manual-test/run-migration.ts create mode 100644 projects/ui/schematics/ng-update/v22/gauge-property-map.spec.ts create mode 100644 projects/ui/schematics/ng-update/v22/gauge-property-map.ts create mode 100644 projects/ui/schematics/ng-update/v22/gauge-ts-migration.spec.ts create mode 100644 projects/ui/schematics/ng-update/v22/gauge-ts-migration.ts create mode 100644 projects/ui/schematics/ng-update/v22/index.spec.ts create mode 100644 projects/ui/schematics/ng-update/v22/migration-report.spec.ts create mode 100644 projects/ui/schematics/ng-update/v22/migration-report.ts create mode 100644 projects/ui/schematics/package.json delete mode 100644 projects/ui/src/lib/components/po-gauge/index.ts delete mode 100644 projects/ui/src/lib/components/po-gauge/interfaces/po-gauge-coordinates.interface.ts delete mode 100644 projects/ui/src/lib/components/po-gauge/interfaces/po-gauge-options.interface.ts delete mode 100644 projects/ui/src/lib/components/po-gauge/interfaces/po-gauge-ranges.interface.ts delete mode 100644 projects/ui/src/lib/components/po-gauge/interfaces/po-gauge-svg-container.interface.ts delete mode 100644 projects/ui/src/lib/components/po-gauge/po-gauge-base.component.spec.ts delete mode 100644 projects/ui/src/lib/components/po-gauge/po-gauge-base.component.ts delete mode 100644 projects/ui/src/lib/components/po-gauge/po-gauge-default-values.constant.ts delete mode 100644 projects/ui/src/lib/components/po-gauge/po-gauge.component.html delete mode 100644 projects/ui/src/lib/components/po-gauge/po-gauge.component.spec.ts delete mode 100644 projects/ui/src/lib/components/po-gauge/po-gauge.component.ts delete mode 100644 projects/ui/src/lib/components/po-gauge/po-gauge.module.ts delete mode 100644 projects/ui/src/lib/components/po-gauge/samples/sample-po-gauge-basic/sample-po-gauge-basic.component.html delete mode 100644 projects/ui/src/lib/components/po-gauge/samples/sample-po-gauge-basic/sample-po-gauge-basic.component.ts delete mode 100644 projects/ui/src/lib/components/po-gauge/samples/sample-po-gauge-labs/sample-po-gauge-labs.component.html delete mode 100644 projects/ui/src/lib/components/po-gauge/samples/sample-po-gauge-labs/sample-po-gauge-labs.component.ts delete mode 100644 projects/ui/src/lib/components/po-gauge/samples/sample-po-gauge-summary/sample-po-gauge-summary.component.html delete mode 100644 projects/ui/src/lib/components/po-gauge/samples/sample-po-gauge-summary/sample-po-gauge-summary.component.ts diff --git a/README.md b/README.md index dcfac29bf9..570b25d9e6 100644 --- a/README.md +++ b/README.md @@ -65,13 +65,13 @@ Veja abaixo a lista de dependências e as versões compatíveis, elas devem ser ... }, "devDependencies": { - "@angular-devkit/build-angular": "~22.0.1", "@angular-devkit/schematics": "~22.0.1", "@angular/build": "~22.2.1", "@angular/cli": "~22.0.1", "@angular/compiler-cli": "~22.0.1", ... - "typescript": "~6.0.3" + "typescript": "~6.0.3", + "vitest": "^4.0.0" } ``` @@ -89,7 +89,7 @@ Caso prefira instalar com o yarn: yarn install ``` -### Passo 2 - Adiconando o pacote @po-ui/ng-components +### Passo 2 - Adicionando o pacote @po-ui/ng-components Utilizando o comando `ng add` do [Angular CLI](https://cli.angular.io/), vamos adicionar o **Po** em seu projeto e o mesmo se encarregará de configurar o tema, instalar o guia de primeiros passos **Po**. Além de importar também o modulo **HttpClientModule**. diff --git a/docs/guides/browser-support.md b/docs/guides/browser-support.md index 38cc267361..58019c68f0 100644 --- a/docs/guides/browser-support.md +++ b/docs/guides/browser-support.md @@ -25,10 +25,6 @@ Atualmente o PO está homologado para os seguintes navegadores: Edge 2 últimas versões principais - - IOS - 2 últimas versões principais - Android 2 últimas versões principais diff --git a/docs/guides/deprecations.md b/docs/guides/deprecations.md index e6318ac55f..d56d183f32 100644 --- a/docs/guides/deprecations.md +++ b/docs/guides/deprecations.md @@ -25,11 +25,16 @@ A tabela a seguir lista todos os recursos depreciados, organizados pelo release - - PoNavbar + + PoNavbar Componente descontinuado v23 + + PoGauge + Componente descontinuado + v22 + PoTabs p-small @@ -71,6 +76,43 @@ A tabela a seguir lista todos os recursos depreciados, organizados pelo release Esta seção contém uma lista completa de todos os recursos obsoletos com detalhes para ajudá-lo a planejar sua migração. +### PoGauge + +
    +
    + + + + + + + + + + + + + + + + + +
    RecursoSubstituiçãoAnúncio da DepreciaçãoRemovido em
    Componente po-gaugepo-chart (type=gauge)v19v22
    +
    +
    + +O componente `po-gauge` foi removido. Utilize o `po-chart` com `p-type="gauge"` como alternativa. + +Antes: +``` + +``` + +Depois: +``` + +``` + ### PoButton
    @@ -222,6 +264,12 @@ Depois - Animalia Icons (atual) + + PoGauge + Componente descontinuado + PoChart (type=gauge) + v22 + PoNavbar Componente descontinuado diff --git a/docs/guides/migration-poui.md b/docs/guides/migration-poui.md index a2b097fc42..0562c97e17 100644 --- a/docs/guides/migration-poui.md +++ b/docs/guides/migration-poui.md @@ -59,7 +59,7 @@ ng update @po-ui/ng-components@ --allow-dirty --force Por exemplo: ``` -ng update @po-ui/ng-components --allow-dirty --force +ng update @po-ui/ng-components@next --allow-dirty --force ``` > Caso ocorra um erro ao concluir o comando acima pode ser necessário fazer uma instalação limpa no projeto apagando a pasta `node_modules` e o arquivo `package-lock.json` e executando o comando `npm i --legacy-peer-deps` antes de realizar o `ng update`. @@ -92,13 +92,44 @@ ng update @po-ui/ng-sync@ --allow-dirty --force Por exemplo: ``` -ng update @po-ui/ng-sync --allow-dirty --force +ng update @po-ui/ng-sync@next --allow-dirty --force ``` O `ng update` ajudará nas alterações necessárias para seu projeto, que será atualizar as versões dos pacotes: - `@po-ui/ng-sync`; - `@po-ui/ng-storage`; +> Pode ocorrer o seguinte erro `TypeError: Failed to fetch dynamically imported module...`, sendo necessário adicionar ao arquivo `angular.json` as seguintes configurações: +> ```json +> { +> "projects": { +> "app": { +> ... +> "architect": { +> ... +> "build": { +> ... +> "options": { +> ... +> "polyfills": ["zone.js"], +> }, +> }, +> "serve": { +> ... +> "builder": "@angular/build:dev-server", +> "options": { +> ... +> "prebundle": { +> "exclude": ["@ionic/angular", "@ionic/core", "ionicons"] +> } +> } +> }, +> } +> } +> }, +> } +> ``` + ## Depreciações e Breaking Changes Possuimos uma documentação que lista as depreciações correntes e os *breaking changes* já realizados na biblioteca, diff --git a/projects/sync/schematics/package.json b/projects/sync/schematics/package.json new file mode 100644 index 0000000000..5bbefffbab --- /dev/null +++ b/projects/sync/schematics/package.json @@ -0,0 +1,3 @@ +{ + "type": "commonjs" +} diff --git a/projects/ui/README.md b/projects/ui/README.md index c91ad0af74..f9dc90304f 100644 --- a/projects/ui/README.md +++ b/projects/ui/README.md @@ -12,7 +12,7 @@ Biblioteca de componentes de UI para Angular. --- -### Adiconando o pacote @po-ui/ng-components +### Adicionando o pacote @po-ui/ng-components Utilizando o comando `ng add` do [Angular CLI](https://cli.angular.io/), vamos adicionar o **Po** em seu projeto e o mesmo se encarregará de configurar o tema, instalar o pacote e importar o módulo do **Po**. Além de importar também o modulo **HttpClientModule**. diff --git a/projects/ui/schematics/ng-add/setup-project.ts b/projects/ui/schematics/ng-add/setup-project.ts index f080b124f9..dff00b8e63 100644 --- a/projects/ui/schematics/ng-add/setup-project.ts +++ b/projects/ui/schematics/ng-add/setup-project.ts @@ -25,6 +25,7 @@ const httpClientModuleSourcePath = '@angular/common/http'; * - Add PO Module to app root module * - Adds themes to styles * - Run sidemenu schematic + * - Add provideZoneChangeDetection: standalone via app.config.ts, module-based via main.ts */ export default function (options: any): Rule { return chain([ @@ -33,6 +34,7 @@ export default function (options: any): Rule { addProviderToAppModule(options, 'provideHttpClient(withInterceptorsFromDi())'), addThemeToAppStyles(options), addPolyfillsZoneJS(options), + addZoneChangeDetection(options), updateAppConfigFileRule(options), configureSideMenu(options) ]); @@ -243,3 +245,116 @@ function addPolyfillsZoneJS(options: any): (tree: Tree) => Tree { return tree; }; } + +/** + * Adiciona provideZoneChangeDetection ao main.ts de apps module-based. + * + * Para apps standalone, o provider já é adicionado no app.config.ts por + * `updateAppConfigFileRule`, então esta rule ignora esse caso para evitar + * a duplicação de providers (NG0408). + */ +function addZoneChangeDetection(options: any): (tree: Tree) => Tree { + return function (tree: Tree): Tree { + const workspace = getWorkspaceConfigGracefully(tree) ?? ({} as WorkspaceSchema); + const project: any = getProjectFromWorkspace(workspace, options.project); + const browserEntryPoint = getProjectMainFile(project); + + // Apps standalone são tratados por updateAppConfigFileRule (app.config.ts) + if (isStandaloneApp(tree, browserEntryPoint)) { + return tree; + } + + // O browserEntryPoint já vem como caminho relativo ao workspace root + // Exemplo: "projects/test-app/src/main.ts" + const mainFilePath = browserEntryPoint; + + if (!tree.exists(mainFilePath)) { + return tree; + } + + const content = tree.read(mainFilePath)?.toString('utf-8') || ''; + + // Verifica se já tem provideZoneChangeDetection + if (content.includes('provideZoneChangeDetection')) { + return tree; + } + + const modifiedContent = updateMainFile(content); + + // Se nada mudou (padrão de bootstrap não reconhecido), não sobrescreve + if (modifiedContent === content) { + return tree; + } + + tree.overwrite(mainFilePath, modifiedContent); + + return tree; + }; +} + +/** + * Atualiza o main.ts de um app module-based para incluir provideZoneChangeDetection + * via `applicationProviders` (opção correta para platformBrowser().bootstrapModule). + * + * Também garante o import de `provideZoneChangeDetection` a partir de '@angular/core'. + */ +function updateMainFile(content: string): string { + if (!content.includes('platformBrowser()') || !content.includes('bootstrapModule')) { + return content; + } + + // Já configurado; evita duplicar o provider (NG0408) + if (content.includes('provideZoneChangeDetection')) { + return content; + } + + let updated = content; + + const provider = 'provideZoneChangeDetection({ eventCoalescing: true })'; + + // bootstrapModule(AppModule, { ... }) -> injeta applicationProviders no objeto existente + const regexWithOptions = /(bootstrapModule\([^,]+,\s*\{)/; + // bootstrapModule(AppModule) -> reconstrói a chamada adicionando o objeto de opções + // Captura o argumento do módulo (grupo 1) para reinserir dentro dos parênteses. + const regexNoOptions = /bootstrapModule\(\s*([^,)]+?)\s*\)/; + + if (regexWithOptions.test(updated)) { + updated = updated.replace(regexWithOptions, `$1\n applicationProviders: [${provider}],`); + } else if (regexNoOptions.test(updated)) { + updated = updated.replace(regexNoOptions, `bootstrapModule($1, { applicationProviders: [${provider}] })`); + } else { + return content; + } + + updated = ensureCoreImport(updated); + + return updated; +} + +/** + * Garante que `provideZoneChangeDetection` esteja importado de '@angular/core'. + * - Se já existe um import de '@angular/core', adiciona o símbolo à lista. + * - Caso contrário, insere uma nova linha de import no topo do arquivo. + */ +function ensureCoreImport(content: string): string { + if (content.includes('provideZoneChangeDetection')) { + // símbolo já usado; verifica se está de fato importado + const alreadyImported = + /import\s*\{[^}]*\bprovideZoneChangeDetection\b[^}]*\}\s*from\s*['"]@angular\/core['"]/.test(content); + if (alreadyImported) { + return content; + } + } + + const coreImportRegex = /import\s*\{([^}]*)\}\s*from\s*['"]@angular\/core['"];?/; + + if (coreImportRegex.test(content)) { + return content.replace(coreImportRegex, (_match, symbols) => { + const trimmed = symbols.trim().replace(/,\s*$/, ''); + return `import { ${trimmed}, provideZoneChangeDetection } from '@angular/core';`; + }); + } + + // Não há import de @angular/core; adiciona no topo + return `import { provideZoneChangeDetection } from '@angular/core';\n${content}`; +} diff --git a/projects/ui/schematics/ng-update/v22/changes.ts b/projects/ui/schematics/ng-update/v22/changes.ts index 197dbab8a9..4eda192a61 100644 --- a/projects/ui/schematics/ng-update/v22/changes.ts +++ b/projects/ui/schematics/ng-update/v22/changes.ts @@ -10,3 +10,50 @@ export const updateDepedenciesVersion: UpdateDependencies = { '@po-ui/style' ] }; + +/** Pacote de origem/destino dos símbolos migrados do gauge. */ +export const PO_UI_PACKAGE = '@po-ui/ng-components'; + +/** Símbolos gauge com equivalente direto no po-chart. */ +export const gaugeSymbolMap: Record = { + PoGaugeModule: 'PoChartModule', + PoGaugeComponent: 'PoChartComponent', + PoGaugeRanges: 'PoChartSerie', + PoGaugeOptions: 'PoChartOptions' +}; + +/** Símbolos gauge SEM equivalente -> exigem revisão manual (Req 4.4). */ +export const gaugeSymbolsWithoutEquivalent: ReadonlyArray = ['PoGaugeCoordinates', 'PoGaugeSvgContainer']; + +/** Destino de uma propriedade do po-gauge na configuração do po-chart. */ +export type PropertyTarget = 'p-series' | 'p-options' | 'passthrough' | 'unmapped'; + +/** Regra de mapeamento de uma propriedade do po-gauge para o po-chart. */ +export interface GaugePropertyRule { + /** Nome da propriedade do po-gauge (ex.: 'p-value', 'p-ranges'). */ + gaugeProp: string; + /** Destino da propriedade na configuração do po-chart. */ + target: PropertyTarget; + /** Chave em p-options quando target = 'p-options'. */ + optionsKey?: string; +} + +/** + * Tabela de Mapeamento das propriedades do po-gauge para o po-chart + * (conforme comportamento real do componente po-gauge da v21). + * + * Referência: po-gauge.component.html passa `[p-title]` e `[p-height]` + * diretamente como inputs do po-chart. `p-show-pointer` é consumido via + * `p-options.pointer`. `p-value` com `p-ranges` vai para + * `p-value-gauge-multiple`. + */ +export const gaugePropertyRules: ReadonlyArray = [ + { gaugeProp: 'p-value', target: 'p-series' }, + { gaugeProp: 'p-ranges', target: 'p-series' }, + { gaugeProp: 'p-description', target: 'p-options', optionsKey: 'descriptionChart' }, + { gaugeProp: 'p-title', target: 'passthrough' }, + { gaugeProp: 'p-height', target: 'passthrough' }, + { gaugeProp: 'p-show-from-to-legend', target: 'p-options', optionsKey: 'showFromToLegend' }, + { gaugeProp: 'p-show-pointer', target: 'p-options', optionsKey: 'pointer' }, + { gaugeProp: 'p-options', target: 'p-options' } +]; diff --git a/projects/ui/schematics/ng-update/v22/gauge-html-migration.spec.ts b/projects/ui/schematics/ng-update/v22/gauge-html-migration.spec.ts new file mode 100644 index 0000000000..dfdb7a6a46 --- /dev/null +++ b/projects/ui/schematics/ng-update/v22/gauge-html-migration.spec.ts @@ -0,0 +1,759 @@ +import * as fc from 'fast-check'; + +import { migrateHtmlContent } from './gauge-html-migration'; + +/** Marcador estável dos comentários TODO inseridos pela migração (idempotência). */ +const TODO_MARKER = 'TODO: migração po-gauge'; + +/** Conta ocorrências não sobrepostas de um trecho literal em um texto. */ +function countOccurrences(haystack: string, needle: string): number { + if (needle.length === 0) { + return 0; + } + + let count = 0; + let index = haystack.indexOf(needle); + while (index !== -1) { + count++; + index = haystack.indexOf(needle, index + needle.length); + } + + return count; +} + +/** + * Expressão de binding simples e determinística (sem espaços nas bordas nem + * caracteres que quebrem a varredura textual de atributos). + */ +const bindingExpressionArb = fc.oneof( + fc.integer({ min: 0, max: 1000 }).map(String), + fc.constantFrom('valor', 'ranges', 'options', 'this.total', 'getValor()', 'true', 'false') +); + +/** Texto estático simples para atributos sem binding (ex.: `p-description="..."`). */ +const staticTextArb = fc.stringMatching(/^[a-zA-Z0-9 ]{0,12}$/); + +/** + * Gera um atributo mapeado do po-gauge. Cobre os bindings mais relevantes: + * `[p-value]`, `[p-ranges]`, `[p-show-from-to-legend]`, `[p-show-pointer]`, + * `[p-options]`, o atributo estático `p-description`, e os passthrough + * `p-title` e `p-height` (que são reconhecidos pela migração). + */ +const mappedAttrArb: fc.Arbitrary = fc.oneof( + bindingExpressionArb.map(expr => `[p-value]="${expr}"`), + bindingExpressionArb.map(expr => `[p-ranges]="${expr}"`), + fc.constantFrom('true', 'false', 'showLegend').map(expr => `[p-show-from-to-legend]="${expr}"`), + fc.constantFrom('true', 'false').map(expr => `[p-show-pointer]="${expr}"`), + staticTextArb.map(text => `p-description="${text}"`), + staticTextArb.map(text => `p-title="${text}"`), + bindingExpressionArb.map(expr => `[p-height]="${expr}"`), + fc.constantFrom('{ showFromToLegend: true }', 'options', '{ pointer: false }').map(expr => `[p-options]="${expr}"`) +); + +/** + * Atributos "passthrough" (fora do Mapeamento_Propriedades) que devem ser + * preservados: classe, id, eventos e template refs. + */ +const passthroughAttrArb: fc.Arbitrary = fc.oneof( + staticTextArb.map(cls => `class="${cls}"`), + fc.stringMatching(/^[a-z][a-z0-9-]{0,8}$/).map(id => `id="${id}"`), + fc.constantFrom('onClick()', 'handle($event)', 'doThing()').map(handler => `(click)="${handler}"`), + fc.stringMatching(/^[a-z][a-z0-9]{0,6}$/).map(name => `#${name}`) +); + +/** + * Propriedade `p-*` sem equivalente na Tabela de Mapeamento: dispara o caminho + * de preservação + comentário TODO (Caso_Nao_Migravel). + */ +const unmappedAttrArb: fc.Arbitrary = fc + .constantFrom('p-foo', 'p-bar', 'p-unknown', 'p-custom') + .chain(name => staticTextArb.map(value => `${name}="${value}"`)); + +/** Um atributo qualquer, com maior peso para os mapeados/passthrough. */ +const anyAttrArb: fc.Arbitrary = fc.oneof( + { weight: 5, arbitrary: mappedAttrArb }, + { weight: 3, arbitrary: passthroughAttrArb }, + { weight: 1, arbitrary: unmappedAttrArb } +); + +/** Whitespace de separação entre atributos (espaço, múltiplos espaços ou quebra). */ +const separatorArb = fc.constantFrom(' ', ' ', '\n ', '\n ', '\t'); + +/** Gera um elemento `` completo (auto-fechado ou com fechamento). */ +const poGaugeElementArb: fc.Arbitrary = fc + .tuple(fc.array(anyAttrArb, { minLength: 0, maxLength: 5 }), separatorArb, fc.boolean()) + .map(([attrs, sep, selfClosing]) => { + const attrsText = attrs.map(attr => `${sep}${attr}`).join(''); + return selfClosing ? `` : ``; + }); + +/** Trecho de marcação arbitrária ao redor dos elementos po-gauge. */ +const surroundingMarkupArb: fc.Arbitrary = fc.oneof( + fc.constant(''), + fc.constant('\n'), + fc.constant('
    '), + fc.constant('
    '), + fc.constant('

    texto

    '), + fc.constant(''), + fc.constant(''), + staticTextArb.map(text => `${text}`) +); + +/** + * Documento HTML arbitrário contendo de 1 a 4 elementos po-gauge intercalados + * com marcação arbitrária ao redor. + */ +const htmlWithGaugeArb: fc.Arbitrary = fc + .array(fc.tuple(surroundingMarkupArb, poGaugeElementArb), { minLength: 1, maxLength: 4 }) + .chain(pairs => + surroundingMarkupArb.map(tail => pairs.map(([markup, gauge]) => `${markup}${gauge}`).join('\n') + '\n' + tail) + ); + +/** HTML arbitrário SEM qualquer po-gauge (para confirmar idempotência trivial). */ +const htmlWithoutGaugeArb: fc.Arbitrary = fc + .array(surroundingMarkupArb, { minLength: 0, maxLength: 8 }) + .map(parts => parts.join('\n')); + +describe('v22 gauge-html-migration (property-based):', () => { + /** + * Propriedade 1 — Idempotência (ponto fixo). + * + * Para qualquer HTML de origem (incluindo fontes com `` com combinações + * variadas de atributos/bindings), aplicar `migrateHtmlContent` duas vezes produz + * o mesmo conteúdo que aplicá-la uma vez: + * `migrateHtmlContent(migrateHtmlContent(x).content).content === migrateHtmlContent(x).content` + * Além disso, não há duplicação de comentários TODO na segunda execução. + * + * **Validates: Requirements 7.2, 7.4** + * **Valida: Requisitos 7.2, 7.4** + */ + it('should reach a fixed point on HTML containing po-gauge elements without duplicating TODO markers (Prop 1, Req 7.2, 7.4)', () => { + fc.assert( + fc.property(htmlWithGaugeArb, source => { + const once = migrateHtmlContent(source).content; + const twice = migrateHtmlContent(once).content; + + // Ponto fixo: a segunda aplicação não altera o conteúdo já migrado. + expect(twice).toBe(once); + + // Sem duplicação de marcadores TODO entre a primeira e a segunda execução. + expect(countOccurrences(twice, TODO_MARKER)).toBe(countOccurrences(once, TODO_MARKER)); + }), + { numRuns: 500 } + ); + }); + + it('should be idempotent on arbitrary HTML without any po-gauge element (Prop 1, Req 7.2, 7.4)', () => { + fc.assert( + fc.property(htmlWithoutGaugeArb, source => { + const once = migrateHtmlContent(source).content; + const twice = migrateHtmlContent(once).content; + + expect(twice).toBe(once); + expect(countOccurrences(twice, TODO_MARKER)).toBe(countOccurrences(once, TODO_MARKER)); + }), + { numRuns: 300 } + ); + }); +}); + +/** Seletor de abertura exato reconhecido pela migração (case-sensitive, Req. 2.1). */ +const OPEN_TAG = '`). */ +function isTagBoundary(char: string): boolean { + return ( + char === ' ' || + char === '\t' || + char === '\n' || + char === '\r' || + char === '\f' || + char === '\v' || + char === '/' || + char === '>' + ); +} + +/** + * Replica exatamente a detecção de correspondência da implementação: existe uma + * ocorrência de ``). Near-misses como + * ``, ``). O caractere + * seguinte a ` = fc + .stringMatching(/^[a-z][a-z0-9-]{0,8}$/) + .map(suffix => `conteúdo`); + +/** + * `po-gauge` aparecendo apenas como texto/atributo/comentário/nome de outro + * elemento — nunca como o token de abertura ` = fc.constantFrom( + 'o po-gauge foi descontinuado', + '', + '', + 'legado', + '', + '', + '', + 'class="po-gauge-legacy"' +); + +/** Marcação genérica que comprovadamente não contém o token ` = fc.oneof( + fc.constant(''), + fc.constant('\n'), + fc.constant(' '), + fc.constant('
    '), + fc.constant('
    '), + fc.constant('

    texto

    '), + fc.constant(''), + fc.stringMatching(/^[a-zA-Z0-9 .,;:!?_-]{0,24}$/), + fc.stringMatching(/^<[a-z][a-z0-9]{0,8}>[a-zA-Z0-9 ]{0,10}<\/[a-z][a-z0-9]{0,8}>$/) +); + +/** + * Documento HTML arbitrário que NÃO contém nenhuma ocorrência do seletor de + * abertura ``) e `po-gauge` como texto puro. Uma pré-condição + * (`fc.pre`) descarta qualquer combinação acidental que forme uma correspondência, + * garantindo o espaço de entrada exato de "sem Uso_Template". + */ +const htmlWithoutGaugeOccurrenceArb: fc.Arbitrary = fc + .array( + fc.oneof( + { weight: 4, arbitrary: safeMarkupArb }, + { weight: 2, arbitrary: nearMissTagArb }, + { weight: 2, arbitrary: poGaugeAsTextArb } + ), + { + minLength: 0, + maxLength: 12 + } + ) + .map(parts => parts.join('')); + +describe('v22 gauge-html-migration — no-op sem ocorrência (property-based):', () => { + /** + * Propriedade 2 — No-op sem ocorrência. + * + * Para qualquer HTML de origem que NÃO contenha nenhum Uso_Template (``) e `po-gauge` como texto/comentário/atributo. + * + * **Validates: Requirements 7.1** + * **Valida: Requisito 7.1** + */ + it('should leave HTML byte-for-byte unchanged when there is no po-gauge occurrence (Prop 2, Req 7.1)', () => { + fc.assert( + fc.property(htmlWithoutGaugeOccurrenceArb, source => { + // Garante o espaço de entrada: nenhuma correspondência real de po-gauge. + fc.pre(!hasPoGaugeMatch(source)); + + const result = migrateHtmlContent(source); + + expect(result.content).toBe(source); + expect(result.changed).toBe(false); + expect(result.warnings).toEqual([]); + }), + { numRuns: 500 } + ); + }); +}); + +/** + * Atributo mapeável do po-gauge (garante que o elemento seja migrado para + * po-chart). Restringe-se a propriedades presentes na Tabela de Mapeamento + * que efetivamente geram p-series ou p-options, evitando o caminho de `unmapped`. + */ +const mappableAttrArb: fc.Arbitrary = fc.oneof( + bindingExpressionArb.map(expr => `[p-value]="${expr}"`), + bindingExpressionArb.map(expr => `[p-ranges]="${expr}"`), + staticTextArb.map(text => `p-description="${text}"`), + fc.constantFrom('true', 'false').map(expr => `[p-show-pointer]="${expr}"`) +); + +/** + * Atributos/bindings "passthrough" (fora do Mapeamento_Propriedades) que devem + * ser preservados verbatim no elemento migrado. Nenhum começa com `p-`, de modo + * a não colidir com as propriedades mapeadas nem cair no caminho `unmapped`. + * Cobre `class`, `id`, eventos `(click)`, estruturais `*ngIf`, `[ngClass]` e + * template refs `#x`. + */ +const passthroughAttrProp4Arb: fc.Arbitrary = fc.oneof( + fc.stringMatching(/^[a-z][a-z0-9-]{0,8}$/).map(cls => `class="${cls}"`), + fc.stringMatching(/^[a-z][a-z0-9-]{0,8}$/).map(id => `id="${id}"`), + fc.constantFrom('onClick()', 'handle($event)', 'doThing()').map(handler => `(click)="${handler}"`), + fc.constantFrom('cond', 'isActive', 'show && ready').map(cond => `*ngIf="${cond}"`), + fc.constantFrom('{ active: isActive }', 'classExpr', "{ 'is-open': open }").map(expr => `[ngClass]="${expr}"`), + fc.stringMatching(/^[a-z][a-z0-9]{0,6}$/).map(name => `#${name}`) +); + +/** + * Gera um `` com exatamente um atributo mapeável (para garantir a + * migração) e um conjunto de atributos passthrough, inseridos em ordem + * arbitrária. Também varia a separação entre atributos e o auto-fechamento. + * Retorna o elemento e a lista de atributos passthrough esperados na saída. + */ +const gaugeWithPassthroughArb: fc.Arbitrary<{ element: string; passthrough: Array }> = fc + .tuple( + mappableAttrArb, + fc.array(passthroughAttrProp4Arb, { minLength: 1, maxLength: 5 }), + fc.nat(), + separatorArb, + fc.boolean() + ) + .map(([mappable, passthrough, pos, sep, selfClosing]) => { + const attrs = [...passthrough]; + const insertAt = pos % (attrs.length + 1); + attrs.splice(insertAt, 0, mappable); + const attrsText = attrs.map(attr => `${sep}${attr}`).join(''); + const element = selfClosing ? `` : ``; + return { element, passthrough }; + }); + +describe('v22 gauge-html-migration — preservação de atributos não mapeados (property-based):', () => { + /** + * Propriedade 4 — Preservação de atributos não mapeados (HTML). + * + * Para qualquer `` contendo ao menos uma propriedade mapeável (que o + * faz migrar para `po-chart`) mais um conjunto de atributos/bindings fora do + * Mapeamento_Propriedades (`class`, `id`, `(click)`, `*ngIf`, `[ngClass]`, + * template refs `#x`), após `migrateHtmlContent`: + * - o elemento passa a ser `po-chart` com `[p-type]="'gauge'"`; + * - cada atributo passthrough (nome e valor) é preservado verbatim na saída; + * - não resta nenhum seletor de abertura ` { + fc.assert( + fc.property(gaugeWithPassthroughArb, ({ element, passthrough }) => { + const { content } = migrateHtmlContent(element); + + // O elemento foi migrado para po-chart com [p-type]="$any('gauge')". + expect(content).toContain(' { + expect(content).toContain(attr); + }); + }), + { numRuns: 500 } + ); + }); +}); + +/** + * Divide o conteúdo em linhas (independente do separador \n) para inspecionar a + * posição relativa do comentário TODO em relação ao trecho preservado. + */ +function splitLines(content: string): Array { + return content.split('\n'); +} + +describe('v22 gauge-html-migration — casos malformados, TODO e exemplo canônico (unit):', () => { + describe('trecho malformado preservado + advertência (Req 2.7, 6.1, 6.3):', () => { + it('should preserve a without a closing tag and record a warning (Req 2.7, 6.1)', () => { + const source = ['
    ', ' ', '
    '].join('\n'); + + const result = migrateHtmlContent(source); + + // O trecho original é preservado sem alteração de conteúdo. + expect(result.content).toContain(''); + + // Uma advertência é registrada, com arquivo (preenchido pela orquestração), + // linha e motivo identificando a ausência do fechamento. + expect(result.warnings.length).toBe(1); + expect(result.warnings[0].filePath).toBe(''); + expect(typeof result.warnings[0].line).toBe('number'); + expect(result.warnings[0].line).toBe(2); + expect(result.warnings[0].reason).toContain('sem tag de fechamento'); + + // Um comentário TODO foi inserido (Req 6.3), portanto houve marcação. + expect(result.changed).toBe(true); + expect(result.content).toContain(TODO_MARKER); + }); + + it('should preserve a with a malformed opening tag (unclosed quote) and record a warning (Req 2.7, 6.1)', () => { + // Aspas não fechadas no valor do atributo: a tag de abertura não pode ser + // interpretada com segurança. + const source = ['
    ', ' '); + + expect(result.warnings.length).toBe(1); + expect(result.warnings[0].filePath).toBe(''); + expect(result.warnings[0].line).toBe(2); + expect(result.warnings[0].reason).toContain('malformado'); + + expect(result.content).toContain(TODO_MARKER); + }); + + it('should not migrate the malformed element to po-chart (Req 2.7)', () => { + const source = ''; + + const result = migrateHtmlContent(source); + + // Nenhuma reescrita para po-chart quando o trecho não é migrável. + expect(result.content).not.toContain(''); + expect(result.warnings.length).toBe(1); + }); + }); + + describe('inserção de TODO para propriedade sem equivalente (Req 3.10, 6.1, 6.3):', () => { + it('should preserve the element and insert a TODO on the line immediately before it (Req 6.3)', () => { + const source = ['
    ', ' ', '
    '].join('\n'); + + const result = migrateHtmlContent(source); + + // Trecho original preservado sem alteração (Req 3.10). + expect(result.content).toContain(''); + expect(result.content).not.toContain(' line.includes(' { + const source = ' '; + + const result = migrateHtmlContent(source); + + expect(countOccurrences(result.content, TODO_MARKER)).toBe(1); + expect(result.warnings.length).toBe(1); + expect(result.warnings[0].reason).toContain('p-unknown'); + }); + }); + + describe('exemplo canônico da transformação (design.md):', () => { + it(`should transform the canonical into with p-series, p-value-gauge-multiple and p-options`, () => { + const source = [ + '', + '' + ].join('\n'); + + const result = migrateHtmlContent(source); + + // Elemento migrado para po-chart com [p-type]="$any('gauge')". + expect(result.content).toContain(''); + expect(result.content).not.toContain(' with only p-value (no ranges) into [p-series]="[{ data: }]"', () => { + const source = ''; + + const result = migrateHtmlContent(source); + + expect(result.content).toContain(' { + const source = ''; + + const result = migrateHtmlContent(source); + + expect(result.content).toContain(' { + const source = ''; + + const result = migrateHtmlContent(source); + + expect(result.content).toContain(' { + it('should generate conditional fallback when p-ranges is a variable (case 9b/27b)', () => { + const source = + ''; + + const result = migrateHtmlContent(source); + + expect(result.content).toContain( + '[p-series]="item.ranges && item.ranges.length ? item.ranges : [{ data: item.value }]"' + ); + expect(result.content).toContain( + '[p-value-gauge-multiple]="item.ranges && item.ranges.length ? item.value : undefined"' + ); + expect(result.content).toContain('descriptionChart: item.description'); + expect(result.changed).toBe(true); + expect(result.warnings).toEqual([]); + }); + + it('should generate conditional fallback for empty array variable (case 28)', () => { + const source = ''; + + const result = migrateHtmlContent(source); + + expect(result.content).toContain('[p-series]="emptyRanges && emptyRanges.length ? emptyRanges : [{ data: 50 }]"'); + expect(result.content).toContain('[p-value-gauge-multiple]="emptyRanges && emptyRanges.length ? 50 : undefined"'); + expect(result.content).toContain('p-title="Empty"'); + }); + + it('should NOT generate conditional fallback for non-empty array literal (case 36)', () => { + const source = ``; + + const result = migrateHtmlContent(source); + + // Array literal com conteúdo: direto, sem ternário + expect(result.content).toContain('[p-series]="[{ from: 0, to: 50 }, { from: 50, to: 100 }]"'); + expect(result.content).toContain('[p-value-gauge-multiple]="60"'); + expect(result.content).not.toContain('&& '); + }); + }); + + describe('prioridade de p-description sobre p-options.descriptionChart (cases 16b, 40):', () => { + it('should let p-description win over descriptionChart in p-options literal (case 16b)', () => { + const source = [ + '`, + '
    ' + ].join('\n'); + + const result = migrateHtmlContent(source); + + expect(result.content).toContain("descriptionChart: 'Desc pela propriedade'"); + expect(result.content).not.toContain('Desc pelo options'); + expect(result.changed).toBe(true); + }); + + it('should let p-description win over opaque p-options variable (case 40)', () => { + const source = + ''; + + const result = migrateHtmlContent(source); + + // descriptionChart aparece DEPOIS do spread para prevalecer + expect(result.content).toContain('...fullOptions, descriptionChart: descricao'); + expect(result.changed).toBe(true); + }); + }); + + describe('gauge sem propriedades (case 21):', () => { + it('should migrate an empty with default series and options', () => { + const source = ''; + + const result = migrateHtmlContent(source); + + expect(result.content).toContain(' { + it('should preserve inner content between po-gauge opening and closing tags', () => { + const source = ' '; + + const result = migrateHtmlContent(source); + + expect(result.content).toContain(''); + // Inner whitespace content is preserved + expect(result.content).toMatch(/>[ ]<\/po-chart>/); + expect(result.changed).toBe(true); + }); + }); + + describe('pipes em bindings (cases 19, 19b, 20):', () => { + it('should preserve pipe expressions in p-value bindings (case 19b)', () => { + const source = ''; + + const result = migrateHtmlContent(source); + + expect(result.content).toContain('[p-series]="[{ data: score }]"'); + expect(result.content).toContain('descriptionChart: descricao | uppercase'); + expect(result.changed).toBe(true); + }); + + it('should preserve $any() and async pipe in bindings (case 20)', () => { + const source = + ''; + + const result = migrateHtmlContent(source); + + expect(result.content).toContain(' { + it('should preserve style, [style.x], data-*, [attr.*], [hidden], tabindex, role, [class.x] attributes', () => { + const source = [ + '', + '
    ' + ].join('\n'); + + const result = migrateHtmlContent(source); + + expect(result.content).toContain(' { + it('should migrate po-gauge inside @if block', () => { + const source = '@if (showGauge) {\n \n}'; + + const result = migrateHtmlContent(source); + + expect(result.content).toContain('@if (showGauge)'); + expect(result.content).toContain(' { + const source = [ + '@for (item of gaugeItems; track item.title) {', + ' ', + '}' + ].join('\n'); + + const result = migrateHtmlContent(source); + + expect(result.content).toContain('@for (item of gaugeItems; track item.title)'); + expect(result.content).toContain(' { + it('should spread opaque p-options with individual showFromToLegend and pointer', () => { + const source = + ''; + + const result = migrateHtmlContent(source); + + expect(result.content).toContain('showFromToLegend: true'); + expect(result.content).toContain('pointer: false'); + expect(result.content).toContain('...optionsWithHeader'); + expect(result.changed).toBe(true); + }); + }); +}); diff --git a/projects/ui/schematics/ng-update/v22/gauge-html-migration.ts b/projects/ui/schematics/ng-update/v22/gauge-html-migration.ts new file mode 100644 index 0000000000..bfa614f1e0 --- /dev/null +++ b/projects/ui/schematics/ng-update/v22/gauge-html-migration.ts @@ -0,0 +1,402 @@ +import { GaugeAttribute, mapGaugeProperties, MappedChartAttributes } from './gauge-property-map'; +import { MigrationWarning } from './migration-report'; + +/** + * Resultado da transformação de um arquivo de template HTML pela + * Schematic_Migracao. + * + * A função `migrateHtmlContent` é pura (string → string): recebe o conteúdo + * original e devolve o conteúdo transformado, um indicador de alteração e a + * lista de Casos_Nao_Migravel encontrados. O `filePath` das advertências é + * preenchido pela camada de orquestração da schematic (que conhece o caminho). + */ +export interface HtmlMigrationResult { + /** Conteúdo do template após a transformação (idêntico ao original se nada mudou). */ + content: string; + /** `true` somente quando alguma transformação/marcação foi efetivamente aplicada. */ + changed: boolean; + /** Casos_Nao_Migravel identificados (trecho malformado ou propriedade sem equivalente). */ + warnings: Array; +} + +/** Seletor de abertura do po-gauge (correspondência exata e case-sensitive, Req. 2.1). */ +const OPEN_TAG = '`. */ +interface OpeningTag { + attrs: Array; + /** Whitespace entre o último atributo e o `>`/`/>`. */ + trailingWs: string; + /** `true` quando a tag é auto-fechada (`/>`). */ + selfClosing: boolean; + /** Índice do caractere imediatamente após `>` ou `/>`. */ + tagEndIndex: number; +} + +/** Descreve um Caso_Nao_Migravel a preservar, com o trecho original e o motivo. */ +interface PreservedSnippet { + snippet: string; + reason: string; + line: number; +} + +/** + * Transforma usos de `` em `` em um template + * HTML, mapeando as propriedades públicas conforme a Tabela de Mapeamento. + * + * Comportamento (Req. 2.1–2.3, 2.5–2.7, 3.10, 6.1, 6.3): + * - Localiza cada elemento `po-gauge` (abertura/fechamento exatos e sensíveis a + * maiúsculas) e o reescreve para `po-chart`, injetando `p-type="gauge"` e os + * atributos gerados (`[p-series]`/`[p-options]`), preservando os atributos não + * mapeados e sua ordem original. + * - Elementos já migrados (`po-chart`) nunca são correspondidos, garantindo + * idempotência (Req. 2.6, 7.4). + * - Trechos malformados ou com propriedade sem equivalente são preservados sem + * alteração; um comentário `TODO` é inserido na linha anterior e um + * `MigrationWarning` é registrado (Req. 2.7, 3.10, 6.1, 6.3). O `TODO` não é + * duplicado quando já existe imediatamente antes do trecho (Req. 7.4). + */ +export function migrateHtmlContent(source: string): HtmlMigrationResult { + const warnings: Array = []; + let result = ''; + let index = 0; + let changed = false; + + while (index <= source.length) { + const openIdx = source.indexOf(OPEN_TAG, index); + if (openIdx === -1) { + result += source.slice(index); + break; + } + + const charAfter = source[openIdx + OPEN_TAG.length]; + // Garante correspondência exata do seletor: o caractere seguinte deve ser + // whitespace, `/` ou `>` (evita casar ``, aspas não fechadas, etc.). + if (!openingTag) { + const preserved: PreservedSnippet = { + snippet: OPEN_TAG, + reason: 'Elemento po-gauge malformado (tag de abertura não pôde ser interpretada).', + line + }; + const outcome = appendPreserved(result, preserved, warnings); + result = outcome.result; + changed = outcome.changed || changed; + index = openIdx + OPEN_TAG.length; + continue; + } + + // Caso 2: elemento não auto-fechado sem `` correspondente. + let innerContent = ''; + let elementEnd = openingTag.tagEndIndex; + if (!openingTag.selfClosing) { + const closeIdx = source.indexOf(CLOSE_TAG, openingTag.tagEndIndex); + if (closeIdx === -1) { + const preserved: PreservedSnippet = { + snippet: source.slice(openIdx, openingTag.tagEndIndex), + reason: 'Elemento po-gauge sem tag de fechamento () correspondente.', + line + }; + const outcome = appendPreserved(result, preserved, warnings); + result = outcome.result; + changed = outcome.changed || changed; + index = openingTag.tagEndIndex; + continue; + } + innerContent = source.slice(openingTag.tagEndIndex, closeIdx); + elementEnd = closeIdx + CLOSE_TAG.length; + } + + const gaugeAttrs = toGaugeAttributes(openingTag.attrs); + const mapped = mapGaugeProperties(gaugeAttrs); + + // Caso 3: propriedade sem equivalente na Tabela de Mapeamento (Req. 3.10). + if (mapped.unmapped.length > 0) { + const props = mapped.unmapped.map(attr => attr.name).join(', '); + const preserved: PreservedSnippet = { + snippet: source.slice(openIdx, elementEnd), + reason: `Propriedade(s) do po-gauge sem equivalente no po-chart: ${props}. Migração manual necessária.`, + line + }; + const outcome = appendPreserved(result, preserved, warnings); + result = outcome.result; + changed = outcome.changed || changed; + index = elementEnd; + continue; + } + + // Caso de sucesso: reescreve o elemento para po-chart. + result += buildChartElement(openingTag, mapped, innerContent); + changed = true; + index = elementEnd; + + // Conflito de p-options resolvido em favor de p-options (Req. 3.11): migra e + // apenas registra a advertência, sem preservar/TODO. + if (mapped.conflicts.length > 0) { + warnings.push({ + filePath: '', + line, + reason: + `Conflito de configuração em p-options para: ${mapped.conflicts.join(', ')}. ` + + `Prevaleceu o valor definido em p-options; revise o resultado.` + }); + } + } + + return { content: result, changed, warnings }; +} + +/** + * Anexa ao `result` acumulado um trecho preservado (Caso_Nao_Migravel), + * inserindo um comentário `TODO` na linha imediatamente anterior (sem duplicar) + * e registrando a advertência correspondente. + */ +function appendPreserved( + result: string, + preserved: PreservedSnippet, + warnings: Array +): { result: string; changed: boolean } { + warnings.push({ filePath: '', line: preserved.line, reason: preserved.reason }); + + if (hasTodoImmediatelyBefore(result)) { + // TODO já presente (execução idempotente): apenas preserva o trecho. + return { result: result + preserved.snippet, changed: false }; + } + + const lineStart = result.lastIndexOf('\n') + 1; + const linePrefix = result.slice(lineStart); + const todo = ``; + + if (/^\s*$/.test(linePrefix)) { + // O trecho inicia a linha (após a indentação): TODO na linha anterior com a + // mesma indentação. + const withTodo = result.slice(0, lineStart) + linePrefix + todo + '\n' + linePrefix; + return { result: withTodo + preserved.snippet, changed: true }; + } + + // Há conteúdo antes do trecho na mesma linha: insere o TODO imediatamente + // antes, em nova linha. + return { result: result + todo + '\n' + preserved.snippet, changed: true }; +} + +/** + * Reescreve a tag `po-gauge` para `po-chart`, injetando `p-type="gauge"`, os + * atributos gerados (`[p-series]`/`[p-options]`/`[p-value-gauge-multiple]`) e + * preservando os atributos não mapeados na ordem original. + */ +function buildChartElement(openingTag: OpeningTag, mapped: MappedChartAttributes, innerContent: string): string { + const separator = openingTag.attrs.length > 0 ? openingTag.attrs[0].leadingWs || ' ' : ' '; + const parts: Array = [`${separator}[p-type]="$any('gauge')"`]; + + // Atributos não mapeados preservados na ordem original, com a whitespace + // original de cada um. + mapped.passthrough.forEach(attr => { + const source = (attr as ParsedAttr).source; + parts.push(`${source.leadingWs || ' '}${source.raw}`); + }); + + if (mapped.pSeries !== undefined) { + parts.push(`${separator}[p-series]="${mapped.pSeries}"`); + } + if (mapped.pValueGaugeMultiple !== undefined) { + parts.push(`${separator}[p-value-gauge-multiple]="${mapped.pValueGaugeMultiple}"`); + } + if (mapped.pOptions !== undefined) { + parts.push(`${separator}[p-options]="${mapped.pOptions}"`); + } + + const openTag = `' : '>'}`; + + return openingTag.selfClosing ? openTag : `${openTag}${innerContent}`; +} + +/** + * Varre a tag de abertura `` a partir de `openIdx`, extraindo os + * atributos com a whitespace que os precede e determinando o fim da tag. + * Retorna `null` quando a tag está malformada (sem `>` ou com aspas não + * fechadas), sinalizando um Caso_Nao_Migravel. + */ +function scanOpeningTag(source: string, openIdx: number): OpeningTag | null { + const len = source.length; + const attrs: Array = []; + let i = openIdx + OPEN_TAG.length; + + while (i < len) { + const wsStart = i; + while (i < len && isWhitespace(source[i])) { + i++; + } + const leadingWs = source.slice(wsStart, i); + + if (i >= len) { + return null; + } + + const ch = source[i]; + + if (ch === '>') { + return { attrs, trailingWs: leadingWs, selfClosing: false, tagEndIndex: i + 1 }; + } + if (ch === '/' && source[i + 1] === '>') { + return { attrs, trailingWs: leadingWs, selfClosing: true, tagEndIndex: i + 2 }; + } + if (ch === '/') { + // `/` isolado não seguido de `>`: estrutura não reconhecida. + return null; + } + + const nameStart = i; + while (i < len && !isNameTerminator(source[i])) { + i++; + } + const name = source.slice(nameStart, i); + if (name.length === 0) { + return null; + } + + // Whitespace opcional antes de um eventual `=`. + let j = i; + while (j < len && isWhitespace(source[j])) { + j++; + } + + if (source[j] === '=') { + j++; + while (j < len && isWhitespace(source[j])) { + j++; + } + const quote = source[j]; + if (quote === '"' || quote === "'") { + const valueEnd = source.indexOf(quote, j + 1); + if (valueEnd === -1) { + return null; + } + attrs.push({ leadingWs, name, raw: source.slice(nameStart, valueEnd + 1) }); + i = valueEnd + 1; + } else { + // Valor sem aspas: consome até whitespace ou `>`. + let k = j; + while (k < len && !isWhitespace(source[k]) && source[k] !== '>') { + k++; + } + attrs.push({ leadingWs, name, raw: source.slice(nameStart, k) }); + i = k; + } + } else { + // Atributo booleano (sem valor). + attrs.push({ leadingWs, name, raw: source.slice(nameStart, i) }); + } + } + + return null; +} + +/** + * Converte os atributos brutos em `GaugeAttribute` (enriquecidos com o atributo + * de origem) para consumo por `mapGaugeProperties`. A expressão original é + * preservada textualmente (Req. 3.1–3.7). + */ +function toGaugeAttributes(attrs: Array): Array { + return attrs.map(source => { + const binding = source.name.startsWith('['); + return { + name: source.name, + binding, + rawExpression: extractRawExpression(source), + source + }; + }); +} + +/** Extrai a expressão/valor original do atributo (conteúdo entre aspas, se houver). */ +function extractRawExpression(source: RawAttr): string { + const eqIndex = source.raw.indexOf('='); + if (eqIndex === -1) { + // Atributo booleano sem valor. + return ''; + } + + const afterEq = source.raw.slice(eqIndex + 1).trim(); + const first = afterEq[0]; + if (first === '"' || first === "'") { + return afterEq.slice(1, afterEq.lastIndexOf(first)); + } + return afterEq; +} + +/** + * Indica se já existe um comentário `TODO` da migração imediatamente antes do + * trecho (última linha não vazia do conteúdo já acumulado), evitando duplicatas + * em reexecuções (idempotência, Req. 7.4). + */ +function hasTodoImmediatelyBefore(result: string): boolean { + const trimmed = result.replace(/\s+$/, ''); + if (!trimmed.endsWith('-->')) { + return false; + } + const open = trimmed.lastIndexOf(' +

    Caso 1: Apenas p-value

    + + + +

    Caso 1b: p-value literal

    + + + +

    Caso 1c: p-value string numérica com binding

    + + + +

    Caso 1d: p-value zero

    + + + +

    Caso 1e: p-value overflow (>100)

    + + + +

    Caso 1f: p-value negativo

    + + + +

    Caso 2: Todas as propriedades

    + + + + +

    Caso 2b: Booleans explicitamente false

    + + + + +

    Caso 3: Com ranges e description

    + + + +

    Caso 3b: Ranges sem label

    + + + +

    Caso 3c: Ranges com cores hex

    + + + +

    Caso 3d: Ranges com cores RGB

    + + + +

    Caso 3e: Ranges com cores do tema

    + + + +

    Caso 4: Com p-options variável

    + + + +

    Caso 4b: p-options inline

    + + + + +

    Caso 4c: p-options completo

    + + + +

    Caso 4d: p-options com header

    + + + +

    Caso 4e: p-options com subtitleGauge

    + + + +

    Caso 4f: p-options com descriptionChart

    + + + + +

    Caso 4g: p-options sem container

    + + + +

    Caso 4h: p-options pointer false

    + + + +

    Caso 4i: p-options inline completo

    + + + + +

    Caso 5: Estático

    + + + +

    Caso 5b: Mix binding + estático

    + + + + +

    Caso 5c: Apenas título estático

    + + + +

    Caso 5d: Value e title estáticos

    + + + +

    Caso 6: Múltiplos gauges

    +
    +
    + +
    +
    + +
    +
    + +
    +
    + + +

    Caso 6b: Gauges variados lado a lado

    +
    +
    + +
    +
    + +
    +
    + +
    +
    + + +

    Caso 7: Conteúdo projetado

    + + + +

    Caso 7b: Ranges + descrição

    + + + +

    Caso 8: Atributos genéricos

    + + + + +

    Caso 8b: Com style inline

    + + + +

    Caso 8c: Com data attributes

    + + + + +

    Caso 9: Dentro de *ngIf

    +
    + +
    + + +

    Caso 9b: Dentro de *ngFor

    +
    + + +
    + + +

    Caso 9c: Com ngSwitch

    + + + + + + + +

    Caso 9d: Com ng-template

    + + + + + + +

    Caso 10: showFromToLegend isolado

    + + + +

    Caso 10b: showPointer false

    + + + +

    Caso 10c: showPointer dinâmico

    + + + + +

    Caso 10d: showFromToLegend dinâmico

    + + + + +

    Caso 10e: Flags com expressão

    + + + + +

    Caso 11: Gauge ao lado de po-chart

    +
    +
    + +
    +
    + +
    +
    + + +

    Caso 11b: Pendente de migração

    + + + +

    Caso 12: Multiline

    + + + + +

    Caso 12b: Inline

    + + + +

    Caso 12c: Tag fechada imediata

    + + + +

    Caso 13: Height mínimo (300)

    + + + +

    Caso 13b: Height abaixo do mínimo

    + + + +

    Caso 13c: Height grande

    + + + +

    Caso 13d: Height dinâmico

    + + + +

    Caso 13e: Height literal

    + + + +

    Caso 14: Description com ranges (acima do gauge)

    + + + + +

    Caso 14b: Description sem ranges (dentro do arco)

    + + + +

    Caso 14c: Description dinâmico

    + + + +

    Caso 14d: Description longo

    + + + + +

    Caso 15: Title com binding

    + + + +

    Caso 15b: Title com expressão ternária

    + + + +

    Caso 16: p-options + p-show-from-to-legend (conflito)

    + + + + +

    Caso 16b: Conflito description

    + + + + +

    Caso 17: Ranges com valor abaixo do from mínimo

    + + + +

    Caso 17b: Value acima do max to

    + + + +

    Caso 17c: Ranges negativos

    + + + +

    Caso 17d: Um único range

    + + + +

    Caso 17e: Muitos ranges (12)

    + + + +

    Caso 18: Dentro de po-container

    + +
    Sales Performance
    +
    +
    + + +
    +
    + + +
    +
    +
    + + +

    Caso 19: Value com expressão concatenada

    + + + +

    Caso 19b: Description com pipe

    + + + +

    Caso 20: Value com async pipe

    + + + + +

    Caso 21: Gauge vazio (sem props)

    + + + +

    Caso 22: Header options completo

    + + + +

    Caso 23: Com template reference

    + + + +

    Caso 24: Dentro de po-widget

    + + + + + +

    Caso 24b: Dentro de po-accordion

    + + + + + + + +

    Caso 25: Value com expressão aritmética

    + + + +

    Caso 25b: Value com ternário

    + + + +

    Caso 25c: Value com método

    + + + +

    Caso 25d: Value de objeto

    + + + +

    Caso 25e: Value com non-null assertion

    + + + +

    Caso 26: Indentação com 2 espaços

    +
    + +
    + + +

    Caso 26b: Indentação com 4 espaços

    +
    + +
    + + +

    Caso 27: Com @if (Angular 17+)

    +@if (showGauge) { + +} + + +

    Caso 27b: Com @for

    +@for (item of gaugeItems; track item.title) { + +} + + +

    Caso 27c: Com @switch

    +@switch (gaugeType) { + @case ('simple') { + + } + @case ('ranged') { + + } + @default { + + } +} + + +

    Caso 28: Ranges vazio

    + + + +

    Caso 28b: Ranges null

    + + + +

    Caso 29: Options apenas showContainerGauge true

    + + + +

    Caso 30: Atributos extras preservados

    + + + + +

    Caso 31: Gauge entre comentários HTML

    + + + + + +

    Caso 32: Labs-style (tudo dinâmico)

    + + + + +

    Caso 33: Minimal — só valor decimal

    + + + +

    Caso 33b: Valor decimal longo

    + + + +

    Caso 34: Com múltiplos event handlers

    + + + + +

    Caso 35: Dentro de form

    +
    + + +
    + + +

    Caso 36: Ranges inline literal

    + + + + +

    Caso 37: Atributos não-standard

    + + + +

    Caso 38: Múltiplas classes

    + + + + +

    Caso 39: Propriedades de @Input do pai

    + + + + +

    Caso 40: Tudo junto — máximo de propriedades

    + + diff --git a/projects/ui/schematics/ng-update/v22/gauge-manual-test/all-cases.component.ts b/projects/ui/schematics/ng-update/v22/gauge-manual-test/all-cases.component.ts new file mode 100644 index 0000000000..0de6ea0481 --- /dev/null +++ b/projects/ui/schematics/ng-update/v22/gauge-manual-test/all-cases.component.ts @@ -0,0 +1,376 @@ +import { Component, Input, OnInit } from '@angular/core'; +import { Observable, of } from 'rxjs'; + +import { PoGaugeRanges, PoGaugeOptions } from '@po-ui/ng-components'; + +@Component({ + selector: 'app-all-gauge-cases', + templateUrl: './all-cases.component.html' +}) +export class AllGaugeCasesComponent implements OnInit { + // ═══════════════════════════════════════════════════════════════ + // CASO 1: p-value variações + // ═══════════════════════════════════════════════════════════════ + percentual = 65; + negativeValue = -10; + + // ═══════════════════════════════════════════════════════════════ + // CASO 2: Todas as propriedades + // ═══════════════════════════════════════════════════════════════ + currentValue = 85; + gaugeRanges: PoGaugeRanges[] = [ + { from: 0, to: 40, label: 'Baixo', color: 'red' }, + { from: 40, to: 70, label: 'Médio', color: 'yellow' }, + { from: 70, to: 100, label: 'Alto', color: 'green' } + ]; + descricao = 'Desempenho do sistema'; + + // ═══════════════════════════════════════════════════════════════ + // CASO 3: Ranges variações + // ═══════════════════════════════════════════════════════════════ + score = 72; + scoreRanges: PoGaugeRanges[] = [ + { from: 0, to: 50, label: 'Ruim', color: '#c64840' }, + { from: 50, to: 75, label: 'Regular', color: '#f5a623' }, + { from: 75, to: 100, label: 'Bom', color: '#0c9abe' } + ]; + + // Ranges sem label (legenda oculta) + rangesWithoutLabel: PoGaugeRanges[] = [ + { from: 0, to: 33, color: '#c64840' }, + { from: 33, to: 66, color: '#f5a623' }, + { from: 66, to: 100, color: '#0c9abe' } + ]; + + // Ranges com cores hexadecimais + rangesHexColor: PoGaugeRanges[] = [ + { from: 0, to: 25, label: 'Q1', color: '#FF5733' }, + { from: 25, to: 50, label: 'Q2', color: '#33FF57' }, + { from: 50, to: 75, label: 'Q3', color: '#3357FF' }, + { from: 75, to: 100, label: 'Q4', color: '#FF33F5' } + ]; + + // Ranges com cores RGB + rangesRgbColor: PoGaugeRanges[] = [ + { from: 0, to: 33, label: 'Low', color: 'rgb(198, 72, 64)' }, + { from: 33, to: 66, label: 'Mid', color: 'rgb(245, 166, 35)' }, + { from: 66, to: 100, label: 'High', color: 'rgb(12, 154, 190)' } + ]; + + // Ranges com cores do tema PO + rangesThemeColor: PoGaugeRanges[] = [ + { from: 0, to: 25, label: 'Color 01', color: 'color-01' }, + { from: 25, to: 50, label: 'Color 02', color: 'color-02' }, + { from: 50, to: 75, label: 'Color 03', color: 'color-03' }, + { from: 75, to: 100, label: 'Color 04', color: 'color-04' } + ]; + + // ═══════════════════════════════════════════════════════════════ + // CASO 4: p-options variações + // ═══════════════════════════════════════════════════════════════ + valor = 55; + gaugeOptions: PoGaugeOptions = { showFromToLegend: true }; + temperatura = 78; + + fullOptions: PoGaugeOptions = { + showFromToLegend: true, + pointer: true, + showContainerGauge: true, + subtitleGauge: 'Subtítulo completo', + descriptionChart: 'Descrição via options', + header: { + hideExpand: false, + hideTableDetails: false, + hideExportCsv: false, + hideExportImage: false + } + }; + + optionsWithHeader: PoGaugeOptions = { + header: { + hideExpand: true, + hideTableDetails: true, + hideExportCsv: true, + hideExportImage: true + } + }; + + optionsWithSubtitle: PoGaugeOptions = { + subtitleGauge: 'Este é o subtítulo', + showContainerGauge: true + }; + + optionsWithDescriptionChart: PoGaugeOptions = { + descriptionChart: 'Descrição vinda do options', + showContainerGauge: true + }; + + // ═══════════════════════════════════════════════════════════════ + // CASO 5: Atributos estáticos + // ═══════════════════════════════════════════════════════════════ + dynamicValue = 88; + myRanges: PoGaugeRanges[] = [ + { from: 0, to: 30, label: 'Frio', color: 'blue' }, + { from: 30, to: 70, label: 'Morno', color: 'orange' }, + { from: 70, to: 100, label: 'Quente', color: 'red' } + ]; + + // ═══════════════════════════════════════════════════════════════ + // CASO 6: Múltiplos gauges + // ═══════════════════════════════════════════════════════════════ + cpu = 45; + cpuRanges: PoGaugeRanges[] = [ + { from: 0, to: 60, label: 'Normal', color: 'green' }, + { from: 60, to: 85, label: 'Alto', color: 'yellow' }, + { from: 85, to: 100, label: 'Crítico', color: 'red' } + ]; + memory = 72; + memRanges: PoGaugeRanges[] = [ + { from: 0, to: 50, label: 'OK', color: 'green' }, + { from: 50, to: 80, label: 'Atenção', color: 'yellow' }, + { from: 80, to: 100, label: 'Crítico', color: 'red' } + ]; + disk = 33; + + // ═══════════════════════════════════════════════════════════════ + // CASO 7: Conteúdo projetado + // ═══════════════════════════════════════════════════════════════ + progress = 60; + ranges: PoGaugeRanges[] = [ + { from: 0, to: 50, label: 'Baixo', color: '#c64840' }, + { from: 50, to: 80, label: 'Médio', color: '#f5a623' }, + { from: 80, to: 100, label: 'Alto', color: '#0c9abe' } + ]; + + // ═══════════════════════════════════════════════════════════════ + // CASO 8: Atributos genéricos + // ═══════════════════════════════════════════════════════════════ + val = 90; + isActive = true; + showGauge = true; + + // ═══════════════════════════════════════════════════════════════ + // CASO 9: Estruturas condicionais + // ═══════════════════════════════════════════════════════════════ + gaugeItems = [ + { value: 30, title: 'Item 1', ranges: [], description: 'Primeiro' }, + { + value: 60, + title: 'Item 2', + ranges: [ + { from: 0, to: 50, color: 'red' }, + { from: 50, to: 100, color: 'green' } + ], + description: 'Segundo' + }, + { value: 90, title: 'Item 3', ranges: [], description: 'Terceiro' } + ]; + gaugeType = 'simple'; + + // ═══════════════════════════════════════════════════════════════ + // CASO 10: showFromToLegend e showPointer + // ═══════════════════════════════════════════════════════════════ + showPointerFlag = true; + showLegendFlag = false; + properties: string[] = ['showFromToLegend', 'showPointer']; + + // ═══════════════════════════════════════════════════════════════ + // CASO 11: Convivência com po-chart + // ═══════════════════════════════════════════════════════════════ + b = 42; + chartSeries = [{ label: 'Series A', data: [10, 20, 30, 40, 50] }]; + + // ═══════════════════════════════════════════════════════════════ + // CASO 12: Indentação e formatação + // ═══════════════════════════════════════════════════════════════ + longVariableName = 67; + rangesArray: PoGaugeRanges[] = [ + { from: 0, to: 33, label: 'Baixo', color: 'red' }, + { from: 33, to: 66, label: 'Médio', color: 'yellow' }, + { from: 66, to: 100, label: 'Alto', color: 'green' } + ]; + x = 55; + r: PoGaugeRanges[] = [ + { from: 0, to: 50, color: '#c64840' }, + { from: 50, to: 100, color: '#0c9abe' } + ]; + + // ═══════════════════════════════════════════════════════════════ + // CASO 13: p-height variações + // ═══════════════════════════════════════════════════════════════ + dynamicHeight = 450; + + // ═══════════════════════════════════════════════════════════════ + // CASO 14: p-description variações + // ═══════════════════════════════════════════════════════════════ + dynamicDescription = 'Descrição dinâmica via variável'; + + // ═══════════════════════════════════════════════════════════════ + // CASO 15: p-title variações + // ═══════════════════════════════════════════════════════════════ + dynamicTitle = 'Título Dinâmico'; + + // ═══════════════════════════════════════════════════════════════ + // CASO 17: Ranges com valores extremos + // ═══════════════════════════════════════════════════════════════ + rangesStartAt20: PoGaugeRanges[] = [ + { from: 20, to: 50, label: 'Baixo', color: 'blue' }, + { from: 50, to: 80, label: 'Alto', color: 'red' } + ]; + + rangesEndAt80: PoGaugeRanges[] = [ + { from: 0, to: 40, label: 'Baixo', color: 'blue' }, + { from: 40, to: 80, label: 'Alto', color: 'red' } + ]; + + negativeRanges: PoGaugeRanges[] = [ + { from: -50, to: -20, label: 'Muito Baixo', color: 'blue' }, + { from: -20, to: 0, label: 'Baixo', color: 'cyan' }, + { from: 0, to: 50, label: 'Normal', color: 'green' } + ]; + + singleRange: PoGaugeRanges[] = [{ from: 0, to: 100, label: 'Total', color: 'green' }]; + + manyRanges: PoGaugeRanges[] = [ + { from: 0, to: 8, label: 'R1', color: 'color-01' }, + { from: 8, to: 16, label: 'R2', color: 'color-02' }, + { from: 16, to: 24, label: 'R3', color: 'color-03' }, + { from: 24, to: 32, label: 'R4', color: 'color-04' }, + { from: 32, to: 40, label: 'R5', color: 'color-05' }, + { from: 40, to: 48, label: 'R6', color: 'color-06' }, + { from: 48, to: 56, label: 'R7', color: 'color-07' }, + { from: 56, to: 64, label: 'R8', color: 'color-08' }, + { from: 64, to: 72, label: 'R9', color: 'color-09' }, + { from: 72, to: 80, label: 'R10', color: 'color-10' }, + { from: 80, to: 90, label: 'R11', color: 'color-11' }, + { from: 90, to: 100, label: 'R12', color: 'color-12' } + ]; + + // ═══════════════════════════════════════════════════════════════ + // CASO 18: Uso dentro de po-container (sample-summary) + // ═══════════════════════════════════════════════════════════════ + turnoverRanges: PoGaugeRanges[] = [ + { from: 0, to: 50, label: 'Low rate', color: '#00b28e' }, + { from: 50, to: 75, label: 'Average rate', color: '#ea9b3e' }, + { from: 75, to: 100, label: 'High rate', color: '#c64840' } + ]; + + salesRanges: PoGaugeRanges[] = [ + { from: 0, to: 50, label: 'Sales reduction', color: '#c64840' }, + { from: 50, to: 75, label: 'Average sales', color: '#ea9b3e' }, + { from: 75, to: 100, label: 'Sales soared', color: '#00b28e' } + ]; + + // ═══════════════════════════════════════════════════════════════ + // CASO 19: Uso com pipe + // ═══════════════════════════════════════════════════════════════ + rawValue = 77.777; + + // ═══════════════════════════════════════════════════════════════ + // CASO 20: Uso com async pipe (Observable) + // ═══════════════════════════════════════════════════════════════ + gaugeValue$: Observable = of(68); + gaugeTitle$: Observable = of('Async Gauge'); + gaugeRanges$: Observable = of([ + { from: 0, to: 50, label: 'Low', color: 'red' }, + { from: 50, to: 100, label: 'High', color: 'green' } + ]); + + // ═══════════════════════════════════════════════════════════════ + // CASO 22: Header options completo + // ═══════════════════════════════════════════════════════════════ + fullHeaderOptions: PoGaugeOptions = { + showFromToLegend: true, + pointer: true, + showContainerGauge: true, + subtitleGauge: 'Full Header Sub', + descriptionChart: 'Full Header Desc', + header: { + hideExpand: true, + hideTableDetails: true, + hideExportCsv: true, + hideExportImage: true + } + }; + + // ═══════════════════════════════════════════════════════════════ + // CASO 25: Expressões complexas + // ═══════════════════════════════════════════════════════════════ + gaugeData: { value: number; title: string; ranges: PoGaugeRanges[] } = { + value: 78, + title: 'Object Gauge', + ranges: [ + { from: 0, to: 50, label: 'Low', color: 'red' }, + { from: 50, to: 100, label: 'High', color: 'green' } + ] + }; + + // ═══════════════════════════════════════════════════════════════ + // CASO 28: Ranges vazios e null + // ═══════════════════════════════════════════════════════════════ + emptyRanges: PoGaugeRanges[] = []; + // @ts-ignore + nullRanges: PoGaugeRanges[] = undefined; + + // ═══════════════════════════════════════════════════════════════ + // CASO 32: Labs-style (tudo dinâmico) + // ═══════════════════════════════════════════════════════════════ + labsDescription = 'Labs Description'; + labsHeight = 350; + labsRanges: PoGaugeRanges[] = [ + { from: 0, to: 30, label: 'Baixo', color: '#c64840' }, + { from: 30, to: 60, label: 'Médio', color: '#f5a623' }, + { from: 60, to: 100, label: 'Alto', color: '#0c9abe' } + ]; + labsTitle = 'Labs Gauge'; + labsValue = 55; + labsOptions: PoGaugeOptions = { + showFromToLegend: true, + pointer: true, + showContainerGauge: true, + subtitleGauge: 'Labs Sub' + }; + labsShowFromToLegend = true; + labsShowPointer = true; + + // ═══════════════════════════════════════════════════════════════ + // CASO 35: Dentro de form + // ═══════════════════════════════════════════════════════════════ + formValue = 42; + + // ═══════════════════════════════════════════════════════════════ + // CASO 39: @Input properties do componente pai + // ═══════════════════════════════════════════════════════════════ + @Input() inputValue = 50; + @Input() inputTitle = 'Input Title'; + @Input() inputDescription = 'Input Desc'; + @Input() inputRanges: PoGaugeRanges[] = [ + { from: 0, to: 50, color: 'blue' }, + { from: 50, to: 100, color: 'green' } + ]; + @Input() inputHeight = 300; + @Input() inputShowLegend = false; + @Input() inputShowPointer = true; + @Input() inputOptions: PoGaugeOptions = {}; + + ngOnInit(): void {} + + // ═══════════════════════════════════════════════════════════════ + // Métodos + // ═══════════════════════════════════════════════════════════════ + onGaugeClick(): void { + console.log('Gauge clicked!'); + } + + onMouseEnter(): void { + console.log('Mouse enter'); + } + + onMouseLeave(): void { + console.log('Mouse leave'); + } + + getGaugeValue(): number { + return 73; + } +} diff --git a/projects/ui/schematics/ng-update/v22/gauge-manual-test/all-cases.module.ts b/projects/ui/schematics/ng-update/v22/gauge-manual-test/all-cases.module.ts new file mode 100644 index 0000000000..0155cd10e6 --- /dev/null +++ b/projects/ui/schematics/ng-update/v22/gauge-manual-test/all-cases.module.ts @@ -0,0 +1,12 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { PoGaugeModule } from '@po-ui/ng-components'; + +import { AllGaugeCasesComponent } from './all-cases.component'; + +@NgModule({ + declarations: [AllGaugeCasesComponent], + imports: [CommonModule, PoGaugeModule], + exports: [AllGaugeCasesComponent] +}) +export class AllGaugeCasesModule {} diff --git a/projects/ui/schematics/ng-update/v22/gauge-manual-test/run-migration.ts b/projects/ui/schematics/ng-update/v22/gauge-manual-test/run-migration.ts new file mode 100644 index 0000000000..411bf8d15f --- /dev/null +++ b/projects/ui/schematics/ng-update/v22/gauge-manual-test/run-migration.ts @@ -0,0 +1,161 @@ +/** + * Script utilitário para testar manualmente a migração do po-gauge. + * + * Uso: + * npx ts-node --project tsconfig.json run-migration.ts + * + * Ou via tsx (mais rápido, sem compilar): + * npx tsx run-migration.ts + * + * O script lê todos os arquivos .html e .ts desta pasta (exceto ele mesmo), + * aplica a migração correspondente e grava o resultado na pasta "output/". + */ +import * as fs from 'fs'; +import * as path from 'path'; + +import { migrateHtmlContent } from '../gauge-html-migration'; +import { migrateTypeScriptContent } from '../gauge-ts-migration'; +import { MigrationWarning } from '../migration-report'; + +const DIR = __dirname; +const OUTPUT_DIR = path.join(DIR, 'output'); + +function ensureOutputDir(): void { + if (!fs.existsSync(OUTPUT_DIR)) { + fs.mkdirSync(OUTPUT_DIR, { recursive: true }); + } +} + +function run(): void { + ensureOutputDir(); + + const files = fs.readdirSync(DIR).filter(f => { + // Ignora este próprio script e a pasta de output + if (f === 'run-migration.ts' || f === 'output') return false; + return f.endsWith('.html') || f.endsWith('.ts'); + }); + + if (files.length === 0) { + console.log('Nenhum arquivo .html ou .ts encontrado para migrar.'); + return; + } + + let totalChanged = 0; + let totalWarnings = 0; + + for (const file of files) { + const filePath = path.join(DIR, file); + const source = fs.readFileSync(filePath, 'utf-8'); + const ext = path.extname(file); + + console.log(`\n${'─'.repeat(60)}`); + console.log(`📄 ${file}`); + + if (ext === '.html') { + const result = migrateHtmlContent(source); + fs.writeFileSync(path.join(OUTPUT_DIR, file), result.content, 'utf-8'); + + if (result.changed) { + totalChanged++; + console.log(' ✅ Migrado com sucesso'); + } else { + console.log(' ⏭️ Sem alterações'); + } + + if (result.warnings.length > 0) { + totalWarnings += result.warnings.length; + result.warnings.forEach(w => { + console.log(` ⚠️ Linha ${w.line}: ${w.reason}`); + }); + } + } else if (ext === '.ts') { + // Primeiro aplica a migração TypeScript (imports/referências). + const tsResult = migrateTypeScriptContent(source, true); + // Depois aplica a migração HTML em templates inline (template: `...`). + const withInlineTemplates = migrateInlineTemplates(tsResult.content); + + const finalContent = withInlineTemplates.content; + const changed = tsResult.changed || withInlineTemplates.changed; + + fs.writeFileSync(path.join(OUTPUT_DIR, file), finalContent, 'utf-8'); + + if (changed) { + totalChanged++; + console.log(' ✅ Migrado com sucesso'); + } else { + console.log(' ⏭️ Sem alterações'); + } + + const allWarnings = [...tsResult.warnings, ...withInlineTemplates.warnings]; + if (allWarnings.length > 0) { + totalWarnings += allWarnings.length; + allWarnings.forEach(w => { + console.log(` ⚠️ Linha ${w.line}: ${w.reason}`); + }); + } + } + } + + console.log(`\n${'─'.repeat(60)}`); + console.log(`\n📊 Resumo:`); + console.log(` Arquivos processados: ${files.length}`); + console.log(` Arquivos alterados: ${totalChanged}`); + console.log(` Warnings: ${totalWarnings}`); + console.log(`\n📁 Resultados gravados em: ${OUTPUT_DIR}`); +} + +/** + * Procura templates inline (template: `...` ou template: '...' ou template: "...") + * dentro de um arquivo .ts e aplica migrateHtmlContent em cada um encontrado. + */ +function migrateInlineTemplates(source: string): { + content: string; + changed: boolean; + warnings: Array; +} { + const warnings: Array = []; + let changed = false; + + // Regex para encontrar template: `...` (backtick — mais comum para multiline) + const templateRegex = /template\s*:\s*`([^`]*)`/g; + let result = source; + + // Processa templates com backticks + result = result.replace(templateRegex, (match, templateContent: string) => { + const migrated = migrateHtmlContent(templateContent); + if (migrated.changed) { + changed = true; + warnings.push(...migrated.warnings); + return match.replace(templateContent, migrated.content); + } + return match; + }); + + // Processa templates com aspas simples (single-line) + const singleQuoteRegex = /template\s*:\s*'([^']*)'/g; + result = result.replace(singleQuoteRegex, (match, templateContent: string) => { + const migrated = migrateHtmlContent(templateContent); + if (migrated.changed) { + changed = true; + warnings.push(...migrated.warnings); + return match.replace(templateContent, migrated.content); + } + return match; + }); + + // Processa templates com aspas duplas (single-line) + const doubleQuoteRegex = /template\s*:\s*"([^"]*)"/g; + result = result.replace(doubleQuoteRegex, (match, templateContent: string) => { + const migrated = migrateHtmlContent(templateContent); + if (migrated.changed) { + changed = true; + warnings.push(...migrated.warnings); + return match.replace(templateContent, migrated.content); + } + return match; + }); + + return { content: result, changed, warnings }; +} + +run(); diff --git a/projects/ui/schematics/ng-update/v22/gauge-property-map.spec.ts b/projects/ui/schematics/ng-update/v22/gauge-property-map.spec.ts new file mode 100644 index 0000000000..3f6d8bcde9 --- /dev/null +++ b/projects/ui/schematics/ng-update/v22/gauge-property-map.spec.ts @@ -0,0 +1,615 @@ +import * as fc from 'fast-check'; + +import { GaugeAttribute, mapGaugeProperties } from './gauge-property-map'; + +/** + * Gera fragmentos de expressão "atômicos" e plausíveis de aparecer em um + * binding `[p-value]="..."` de template Angular: literais numéricos, + * identificadores, acessos a propriedades, chamadas de método e literais de + * string. As expressões são combinadas para exercitar o mapeamento sem + * introduzir espaços nas bordas (a implementação preserva a expressão via + * `trim()`). + */ +const identifierArb = fc + .tuple( + fc.constantFrom(...'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_$'.split('')), + fc.stringMatching(/^[a-zA-Z0-9_$]*$/) + ) + .map(([head, tail]) => `${head}${tail}`); + +const numberArb = fc.oneof( + fc.integer({ min: 0, max: 1_000_000 }).map(String), + fc.float({ min: 0, max: 1000, noNaN: true }).map(value => String(value)) +); + +const memberAccessArb = fc.array(identifierArb, { minLength: 2, maxLength: 4 }).map(parts => parts.join('.')); + +const methodCallArb = fc.tuple(identifierArb, identifierArb).map(([obj, method]) => `${obj}.${method}()`); + +const ternaryArb = fc.tuple(identifierArb, numberArb, numberArb).map(([cond, a, b]) => `${cond} ? ${a} : ${b}`); + +/** Expressão de binding arbitrária, sem espaços nas bordas. */ +const valueExpressionArb = fc.oneof(numberArb, identifierArb, memberAccessArb, methodCallArb, ternaryArb); + +describe('v22 gauge-property-map (property-based):', () => { + /** + * Propriedade 5 — Mapeamento de `p-value` (sem `p-ranges`). + * + * Para qualquer expressão de valor, `mapGaugeProperties` com um atributo + * `p-value` (binding) deve produzir um `pSeries` na forma + * `[{ data: }]`, preservando a expressão original textualmente. + */ + it('should map a `p-value` binding to `[{ data: }]` preserving the original expression (Prop 5)', () => { + fc.assert( + fc.property(valueExpressionArb, expression => { + const attr: GaugeAttribute = { + name: 'p-value', + binding: true, + rawExpression: expression + }; + + const result = mapGaugeProperties([attr]); + + // A expressão original é preservada dentro da estrutura { data: ... }. + expect(result.pSeries).toBe(`[{ data: ${expression.trim()} }]`); + // Reforço: a expressão original aparece textualmente no resultado. + expect(result.pSeries).toContain(expression.trim()); + // p-value sozinho não deve gerar pValueGaugeMultiple. + expect(result.pValueGaugeMultiple).toBeUndefined(); + // p-value não deve gerar casos não migráveis. + expect(result.unmapped).toEqual([]); + expect(result.conflicts).toEqual([]); + }), + { numRuns: 500 } + ); + }); + + it('should preserve the expression even when the binding has surrounding whitespace (Prop 5)', () => { + fc.assert( + fc.property( + valueExpressionArb, + fc.stringMatching(/^ *$/), + fc.stringMatching(/^ *$/), + (expression, pad1, pad2) => { + const attr: GaugeAttribute = { + name: 'p-value', + binding: true, + rawExpression: `${pad1}${expression}${pad2}` + }; + + const result = mapGaugeProperties([attr]); + + expect(result.pSeries).toBe(`[{ data: ${expression.trim()} }]`); + } + ), + { numRuns: 300 } + ); + }); +}); + +/** + * Gera um objeto de faixa (`range`) plausível de aparecer em `p-ranges`, como + * `{ from: 0, to: 50, color: 'green' }`. Os objetos possuem vírgulas internas, + * o que torna a contagem de faixas de nível superior um teste real de + * preservação da quantidade. + */ +const rangeObjectArb = fc + .record( + { + from: numberArb, + to: numberArb, + color: identifierArb.map(id => `'${id}'`), + label: identifierArb.map(id => `'${id}'`) + }, + { requiredKeys: ['from', 'to'] } + ) + .map( + range => + `{ ${Object.entries(range) + .map(([key, value]) => `${key}: ${value}`) + .join(', ')} }` + ); + +/** Lista de 1..6 objetos de faixa (a quantidade N que deve ser preservada). */ +const rangesListArb = fc.array(rangeObjectArb, { minLength: 1, maxLength: 6 }); + +/** + * Conta os elementos de nível superior de um array literal preservado + * textualmente, respeitando aninhamento de `{}`/`[]`/`()` e literais de string. + * Usado para verificar que a quantidade de faixas foi mantida no resultado. + */ +function countTopLevelElements(arrayLiteral: string): number { + const trimmed = arrayLiteral.trim(); + const inner = trimmed.slice(1, -1); + if (inner.trim().length === 0) { + return 0; + } + + let depth = 0; + let count = 1; + let quote = ''; + + for (let i = 0; i < inner.length; i++) { + const char = inner[i]; + + if (quote) { + if (char === quote && inner[i - 1] !== '\\') { + quote = ''; + } + continue; + } + + if (char === '"' || char === "'" || char === '`') { + quote = char; + continue; + } + + if (char === '{' || char === '[' || char === '(') { + depth++; + } else if (char === '}' || char === ']' || char === ')') { + depth--; + } else if (char === ',' && depth === 0) { + count++; + } + } + + return count; +} + +describe('v22 gauge-property-map ranges preservation (property-based):', () => { + /** + * Propriedade 6 — Preservação da quantidade de faixas. + * + * Para qualquer binding `p-ranges` cuja expressão seja um array literal com N + * objetos de faixa, após `mapGaugeProperties` o `pSeries` resultante deve + * preservar a mesma quantidade de faixas (N) e a expressão original das + * faixas textualmente. + */ + it('should preserve the number of ranges and the original expression when only `p-ranges` is present (Prop 6)', () => { + fc.assert( + fc.property(rangesListArb, ranges => { + const arrayLiteral = `[${ranges.join(', ')}]`; + const attr: GaugeAttribute = { + name: 'p-ranges', + binding: true, + rawExpression: arrayLiteral + }; + + const result = mapGaugeProperties([attr]); + + // Apenas p-ranges: a expressão é preservada verbatim em p-series. + expect(result.pSeries).toBe(arrayLiteral); + // A quantidade de faixas (N) é mantida. + expect(countTopLevelElements(result.pSeries!)).toBe(ranges.length); + // Cada faixa original aparece textualmente no resultado. + ranges.forEach(range => expect(result.pSeries).toContain(range)); + // Sem p-value, pValueGaugeMultiple não é gerado. + expect(result.pValueGaugeMultiple).toBeUndefined(); + // Somente faixas não geram casos não migráveis. + expect(result.unmapped).toEqual([]); + expect(result.conflicts).toEqual([]); + }), + { numRuns: 500 } + ); + }); + + /** + * Propriedade 6 (combinada com `p-value`) — quando ambos estão presentes, + * p-ranges vai direto para p-series e p-value vai para pValueGaugeMultiple + * (como no ngOnChanges do po-gauge original). + */ + it('should put ranges in p-series and value in p-value-gauge-multiple when both present (Prop 6)', () => { + fc.assert( + fc.property(valueExpressionArb, rangesListArb, (value, ranges) => { + const arrayLiteral = `[${ranges.join(', ')}]`; + const attrs: Array = [ + { name: 'p-value', binding: true, rawExpression: value }, + { name: 'p-ranges', binding: true, rawExpression: arrayLiteral } + ]; + + const result = mapGaugeProperties(attrs); + + // p-series recebe ranges diretamente (como this.series = [...this.ranges]). + expect(result.pSeries).toBe(arrayLiteral); + // p-value vai para pValueGaugeMultiple (como this.valuesMultiple = this.value). + expect(result.pValueGaugeMultiple).toBe(value.trim()); + // A quantidade de faixas (N) é mantida. + expect(countTopLevelElements(result.pSeries!)).toBe(ranges.length); + // Cada faixa original aparece textualmente no resultado. + ranges.forEach(range => expect(result.pSeries).toContain(range)); + }), + { numRuns: 500 } + ); + }); +}); + +/** + * Definições das propriedades individuais do `po-gauge` que são mapeadas para + * chaves de `p-options` do `po-chart` (conforme o comportamento real do + * po-gauge). `p-title` e `p-height` agora são passthrough direto. + */ +const optionPropDefs: ReadonlyArray<{ gaugeProp: string; optionsKey: string }> = [ + { gaugeProp: 'p-description', optionsKey: 'descriptionChart' }, + { gaugeProp: 'p-show-from-to-legend', optionsKey: 'showFromToLegend' }, + { gaugeProp: 'p-show-pointer', optionsKey: 'pointer' } +]; + +/** Todas as `optionsKey` mapeáveis para `p-options`. */ +const allOptionKeys = optionPropDefs.map(def => def.optionsKey); + +/** Subconjunto não vazio (preservando ordem) das propriedades de `p-options`. */ +const nonEmptyOptionSubsetArb = fc.subarray([...optionPropDefs], { minLength: 1 }); + +describe('v22 gauge-property-map option-keys omission (property-based):', () => { + /** + * Propriedade 7 — Omissão de chaves não definidas. + * + * Para qualquer subconjunto de propriedades do `po-gauge` fornecido, + * `mapGaugeProperties` deve gerar em `p-options` apenas as chaves das + * propriedades presentes (mais `showContainerGauge: true` como default), + * omitindo (sem valor padrão) as chaves das propriedades ausentes. + */ + it('should only emit keys for provided properties (plus showContainerGauge default) and omit the missing ones (Prop 7)', () => { + fc.assert( + fc.property(nonEmptyOptionSubsetArb, subset => { + const attrs: Array = subset.map(def => ({ + name: def.gaugeProp, + binding: true, + // Valor identificador único e distinto por chave, sem `:` embutido. + rawExpression: `val_${def.optionsKey}` + })); + + const result = mapGaugeProperties(attrs); + + const providedKeys = subset.map(def => def.optionsKey); + const missingKeys = allOptionKeys.filter(key => !providedKeys.includes(key)); + + // p-options deve existir (showContainerGauge é sempre injetado). + expect(result.pOptions).toBeDefined(); + + // showContainerGauge: true é sempre presente. + expect(result.pOptions).toContain('showContainerGauge: true'); + + // Cada chave fornecida aparece com sua expressão original preservada. + providedKeys.forEach(key => { + expect(result.pOptions).toContain(`${key}: val_${key}`); + }); + + // Nenhuma chave ausente é injetada (sem valor padrão). + missingKeys.forEach(key => { + expect(result.pOptions).not.toContain(`${key}:`); + }); + + // Sem propriedades de série, pSeries é [] (default do po-gauge); sem conflitos/unmapped. + expect(result.pSeries).toBe('[]'); + expect(result.conflicts).toEqual([]); + expect(result.unmapped).toEqual([]); + }), + { numRuns: 500 } + ); + }); +}); + +describe('v22 gauge-property-map p-options conflict priority (property-based):', () => { + /** + * Gera um cenário de conflito: um subconjunto não vazio de propriedades + * individuais (`individual`) e um subconjunto não vazio dessas + * (`conflicting`) que também são definidas dentro do objeto literal + * `p-options`. Os valores individuais e os de `p-options` são distintos, o que + * permite verificar qual valor prevalece. + */ + const conflictScenarioArb = nonEmptyOptionSubsetArb.chain(individual => + fc.subarray([...individual], { minLength: 1 }).map(conflicting => ({ individual, conflicting })) + ); + + /** + * Propriedade 8 — Prioridade em conflito de `p-options`. + * + * Quando uma mesma chave de destino em `p-options` é definida tanto por uma + * propriedade individual do `po-gauge` quanto por uma chave dentro do objeto + * `p-options`, o valor de `p-options` deve prevalecer e a chave em conflito + * deve ser registrada em `result.conflicts`. + */ + it('should let the `p-options` value win on conflict and record the conflicting key (Prop 8)', () => { + fc.assert( + fc.property(conflictScenarioArb, ({ individual, conflicting }) => { + const conflictKeys = conflicting.map(def => def.optionsKey); + + // Bindings das propriedades individuais (valor prefixado `indiv_`). + const individualAttrs: Array = individual.map(def => ({ + name: def.gaugeProp, + binding: true, + rawExpression: `indiv_${def.optionsKey}` + })); + + // Objeto literal p-options com as chaves conflitantes (valor `po_`) + + // showContainerGauge para absorver o default sem gerar conflito extra. + const optionsLiteral = `{ ${conflictKeys.map(key => `${key}: po_${key}`).join(', ')}, showContainerGauge: true }`; + const optionsAttr: GaugeAttribute = { + name: 'p-options', + binding: true, + rawExpression: optionsLiteral + }; + + const result = mapGaugeProperties([...individualAttrs, optionsAttr]); + + // Todas (e somente) as chaves em conflito são registradas. + expect([...result.conflicts].sort()).toEqual([...conflictKeys].sort()); + + // p-options deve existir e o valor prevalecente depende da chave. + expect(result.pOptions).toBeDefined(); + conflictKeys.forEach(key => { + if (key === 'descriptionChart') { + // descriptionChart de p-description PREVALECE sobre p-options + // (this.description || options.descriptionChart no po-gauge original). + expect(result.pOptions).toContain(`descriptionChart: indiv_descriptionChart`); + expect(result.pOptions).not.toContain('po_descriptionChart'); + } else { + // Demais chaves: o valor de p-options prevalece; o individual é descartado. + expect(result.pOptions).toContain(`${key}: po_${key}`); + expect(result.pOptions).not.toContain(`indiv_${key}`); + } + }); + + // Propriedades individuais SEM conflito são preservadas com seu valor. + individual + .filter(def => !conflictKeys.includes(def.optionsKey)) + .forEach(def => { + expect(result.pOptions).toContain(`${def.optionsKey}: indiv_${def.optionsKey}`); + }); + + // Conflito de p-options não afeta série nem gera propriedades não mapeadas. + expect(result.pSeries).toBe('[]'); + expect(result.unmapped).toEqual([]); + }), + { numRuns: 500 } + ); + }); +}); + +describe('v22 gauge-property-map (unit):', () => { + /** + * Propriedade `p-*` sem equivalente na Tabela de Mapeamento deve ser coletada + * em `result.unmapped` (Caso_Nao_Migravel), preservada verbatim, e não deve + * contaminar `pSeries`/`pOptions`. + */ + it('should collect a `p-*` attribute without equivalent in `unmapped`', () => { + const fooBinding: GaugeAttribute = { name: '[p-foo]', binding: true, rawExpression: 'someExpr' }; + const barStatic: GaugeAttribute = { name: 'p-bar', binding: false, rawExpression: 'baz' }; + + const result = mapGaugeProperties([fooBinding, barStatic]); + + // Ambas as propriedades `p-*` desconhecidas vão para `unmapped`, preservadas. + expect(result.unmapped).toEqual([fooBinding, barStatic]); + // Não devem aparecer em passthrough nem série. + expect(result.passthrough).toEqual([]); + expect(result.pSeries).toBe('[]'); + // showContainerGauge default é sempre injetado em p-options. + expect(result.pOptions).toBe('{ showContainerGauge: true }'); + expect(result.conflicts).toEqual([]); + }); + + /** + * Atributos que não começam com `p-` (ex.: `class`, eventos `(click)`, + * bindings estruturais) são atributos genéricos do elemento e devem ser + * preservados em `result.passthrough`, jamais mapeados. + */ + it('should collect non `p-*` attributes (class, events) in `passthrough`', () => { + const classAttr: GaugeAttribute = { name: 'class', binding: false, rawExpression: 'x' }; + const clickAttr: GaugeAttribute = { name: '(click)', binding: false, rawExpression: 'f()' }; + const idBinding: GaugeAttribute = { name: '[id]', binding: true, rawExpression: 'gaugeId' }; + + const result = mapGaugeProperties([classAttr, clickAttr, idBinding]); + + // Todos os atributos genéricos são preservados, na ordem original. + expect(result.passthrough).toEqual([classAttr, clickAttr, idBinding]); + // Nada é mapeado nem sinalizado como sem equivalente. + expect(result.unmapped).toEqual([]); + expect(result.pSeries).toBe('[]'); + // showContainerGauge default é injetado em p-options. + expect(result.pOptions).toBe('{ showContainerGauge: true }'); + expect(result.conflicts).toEqual([]); + }); + + /** + * Caso canônico: `[p-value]="72"`, `p-description="Faturamento"` e + * `[p-show-from-to-legend]="true"` produzem: + * - `pSeries = [{ data: 72 }]` + * - `pOptions = { showContainerGauge: true, descriptionChart: 'Faturamento', showFromToLegend: true }` + */ + it('should map the canonical `p-value` + `p-description` + `p-show-from-to-legend` case', () => { + const attrs: Array = [ + { name: 'p-value', binding: true, rawExpression: '72' }, + { name: 'p-description', binding: false, rawExpression: 'Faturamento' }, + { name: 'p-show-from-to-legend', binding: true, rawExpression: 'true' } + ]; + + const result = mapGaugeProperties(attrs); + + expect(result.pSeries).toBe('[{ data: 72 }]'); + expect(result.pOptions).toBe( + "{ showContainerGauge: true, descriptionChart: 'Faturamento', showFromToLegend: true }" + ); + expect(result.passthrough).toEqual([]); + expect(result.unmapped).toEqual([]); + expect(result.conflicts).toEqual([]); + }); + + /** + * `p-title` e `p-height` devem ir para passthrough (como no template real do + * po-gauge que passa `[p-title]` e `[p-height]` diretamente para o po-chart). + */ + it('should treat `p-title` and `p-height` as passthrough attributes', () => { + const titleAttr: GaugeAttribute = { name: 'p-title', binding: false, rawExpression: 'Velocidade' }; + const heightAttr: GaugeAttribute = { name: '[p-height]', binding: true, rawExpression: '300' }; + + const result = mapGaugeProperties([titleAttr, heightAttr]); + + expect(result.passthrough).toEqual([titleAttr, heightAttr]); + expect(result.pSeries).toBe('[]'); + // p-options ainda tem showContainerGauge default. + expect(result.pOptions).toBe('{ showContainerGauge: true }'); + expect(result.unmapped).toEqual([]); + }); + + /** + * `p-show-pointer` deve ir para `p-options.pointer`. + */ + it('should map `p-show-pointer` to `p-options.pointer`', () => { + const pointerAttr: GaugeAttribute = { name: '[p-show-pointer]', binding: true, rawExpression: 'true' }; + + const result = mapGaugeProperties([pointerAttr]); + + expect(result.pOptions).toBe('{ showContainerGauge: true, pointer: true }'); + expect(result.pSeries).toBe('[]'); + expect(result.unmapped).toEqual([]); + }); + + /** + * Formatação de atributo estático vs. binding: um atributo estático é + * convertido em literal de string (`'Faturamento'`), enquanto um binding + * preserva a expressão original textualmente (`descVar`). + */ + it('should format a static attribute as a string literal in `p-options`', () => { + const result = mapGaugeProperties([{ name: 'p-description', binding: false, rawExpression: 'Faturamento' }]); + + expect(result.pOptions).toBe("{ showContainerGauge: true, descriptionChart: 'Faturamento' }"); + expect(result.pSeries).toBe('[]'); + }); + + it('should preserve the original expression for a `p-description` binding in `p-options`', () => { + const result = mapGaugeProperties([{ name: '[p-description]', binding: true, rawExpression: 'descVar' }]); + + expect(result.pOptions).toBe('{ showContainerGauge: true, descriptionChart: descVar }'); + expect(result.pSeries).toBe('[]'); + }); + + /** + * Formatação de atributo estático: aspas simples dentro do valor são + * escapadas ao gerar o literal de string. + */ + it('should escape single quotes when formatting a static attribute value', () => { + const result = mapGaugeProperties([{ name: 'p-description', binding: false, rawExpression: "Vendas d'agosto" }]); + + expect(result.pOptions).toBe("{ showContainerGauge: true, descriptionChart: 'Vendas d\\'agosto' }"); + }); + + /** + * showContainerGauge: true é injetado por padrão mesmo sem nenhuma propriedade + * de options fornecida. + */ + it('should always inject showContainerGauge: true in p-options', () => { + const result = mapGaugeProperties([{ name: 'p-value', binding: true, rawExpression: '50' }]); + + expect(result.pOptions).toBe('{ showContainerGauge: true }'); + expect(result.pSeries).toBe('[{ data: 50 }]'); + }); + + /** + * Quando p-options já tem showContainerGauge definido, não há conflito + * registrado (é apenas um default). + */ + it('should not register conflict for showContainerGauge when already in p-options', () => { + const attrs: Array = [ + { name: 'p-options', binding: true, rawExpression: '{ showContainerGauge: false }' } + ]; + + const result = mapGaugeProperties(attrs); + + // O valor de p-options prevalece, sem conflito registrado. + expect(result.pOptions).toContain('showContainerGauge: false'); + expect(result.conflicts).toEqual([]); + }); + + /** + * Fallback condicional para ranges dinâmico: quando p-value + p-ranges (variável) + * estão presentes, p-series deve usar expressão ternária `expr && expr.length ? expr : [{ data: value }]`. + */ + it('should generate conditional fallback for dynamic ranges with p-value (cases 9b, 28, 28b)', () => { + const attrs: Array = [ + { name: 'p-value', binding: true, rawExpression: 'item.value' }, + { name: 'p-ranges', binding: true, rawExpression: 'item.ranges' } + ]; + + const result = mapGaugeProperties(attrs); + + expect(result.pSeries).toBe('item.ranges && item.ranges.length ? item.ranges : [{ data: item.value }]'); + expect(result.pValueGaugeMultiple).toBe('item.ranges && item.ranges.length ? item.value : undefined'); + }); + + /** + * Ranges como array literal não vazio: não gera fallback condicional, usa direto. + */ + it('should use direct series (no fallback) when p-ranges is a non-empty array literal (case 36)', () => { + const attrs: Array = [ + { name: 'p-value', binding: true, rawExpression: '60' }, + { name: 'p-ranges', binding: true, rawExpression: '[{ from: 0, to: 50 }, { from: 50, to: 100 }]' } + ]; + + const result = mapGaugeProperties(attrs); + + expect(result.pSeries).toBe('[{ from: 0, to: 50 }, { from: 50, to: 100 }]'); + expect(result.pValueGaugeMultiple).toBe('60'); + }); + + /** + * p-description prevalece sobre descriptionChart em p-options literal (case 16b). + */ + it('should let p-description win over descriptionChart in p-options literal (case 16b)', () => { + const attrs: Array = [ + { name: 'p-description', binding: false, rawExpression: 'Desc pela propriedade' }, + { name: 'p-options', binding: true, rawExpression: "{ descriptionChart: 'Desc pelo options' }" } + ]; + + const result = mapGaugeProperties(attrs); + + expect(result.pOptions).toContain("descriptionChart: 'Desc pela propriedade'"); + expect(result.pOptions).not.toContain('Desc pelo options'); + expect(result.conflicts).toContain('descriptionChart'); + }); + + /** + * p-description prevalece sobre p-options opaco via spread (case 40). + * descriptionChart deve vir DEPOIS do spread para prevalecer. + */ + it('should let p-description win over p-options opaque variable via spread (case 40)', () => { + const attrs: Array = [ + { name: '[p-description]', binding: true, rawExpression: 'descricao' }, + { name: 'p-options', binding: true, rawExpression: 'fullOptions' } + ]; + + const result = mapGaugeProperties(attrs); + + // descriptionChart vem após o spread para garantir prioridade + expect(result.pOptions).toContain('...fullOptions, descriptionChart: descricao'); + }); + + /** + * Gauge sem nenhuma propriedade (case 21): gera series vazio e options default. + */ + it('should handle gauge with no properties at all (case 21)', () => { + const result = mapGaugeProperties([]); + + expect(result.pSeries).toBe('[]'); + expect(result.pOptions).toBe('{ showContainerGauge: true }'); + expect(result.pValueGaugeMultiple).toBeUndefined(); + expect(result.passthrough).toEqual([]); + expect(result.unmapped).toEqual([]); + expect(result.conflicts).toEqual([]); + }); + + /** + * p-options opaco (variável) sem p-description: spread no final, sem descriptionChart extra. + */ + it('should spread opaque p-options at the end without extra descriptionChart when no p-description (case 4)', () => { + const attrs: Array = [ + { name: 'p-value', binding: true, rawExpression: 'valor' }, + { name: 'p-options', binding: true, rawExpression: 'gaugeOptions' } + ]; + + const result = mapGaugeProperties(attrs); + + expect(result.pOptions).toBe('{ showContainerGauge: true, ...gaugeOptions }'); + expect(result.pOptions).not.toContain('descriptionChart'); + }); +}); diff --git a/projects/ui/schematics/ng-update/v22/gauge-property-map.ts b/projects/ui/schematics/ng-update/v22/gauge-property-map.ts new file mode 100644 index 0000000000..fa97eb0d55 --- /dev/null +++ b/projects/ui/schematics/ng-update/v22/gauge-property-map.ts @@ -0,0 +1,366 @@ +import { gaugePropertyRules, GaugePropertyRule } from './changes'; + +/** + * Representa um único atributo/binding de um elemento `po-gauge` extraído do + * template. A expressão original é preservada textualmente (`rawExpression`), + * sem qualquer avaliação, garantindo que a migração seja fiel ao código-fonte. + */ +export interface GaugeAttribute { + /** Nome da propriedade do po-gauge (ex.: `p-value`, `p-ranges`). */ + name: string; + /** `true` quando o atributo é um property binding (`[p-value]="..."`). */ + binding: boolean; + /** Expressão/valor original preservado textualmente. */ + rawExpression: string; +} + +/** + * Resultado do mapeamento das propriedades do `po-gauge` para os atributos do + * `po-chart`, conforme o comportamento real do componente po-gauge da v21. + */ +export interface MappedChartAttributes { + /** Expressão gerada para `[p-series]` do po-chart. */ + pSeries?: string; + /** Expressão gerada para `[p-options]` do po-chart (omitida se não aplicável). */ + pOptions?: string; + /** Expressão gerada para `[p-value-gauge-multiple]` (quando p-value + p-ranges). */ + pValueGaugeMultiple?: string; + /** Atributos fora do Mapeamento_Propriedades preservados no elemento (Req. 2.5). */ + passthrough: Array; + /** Propriedades `po-gauge` sem equivalente na tabela (Req. 3.10). */ + unmapped: Array; + /** Chaves de `p-options` em conflito entre propriedade individual e `p-options` (Req. 3.11). */ + conflicts: Array; +} + +/** Índice das regras de mapeamento por nome da propriedade do po-gauge. */ +const ruleByProp: Map = (() => { + const map = new Map(); + gaugePropertyRules.forEach(rule => map.set(rule.gaugeProp, rule)); + return map; +})(); + +/** + * Mapeia os atributos/bindings de um `po-gauge` para a configuração equivalente + * do `po-chart`, seguindo o comportamento real do componente po-gauge da v21. + * + * Regras aplicadas (baseadas no template e ngOnChanges do po-gauge): + * - `p-value` sem `p-ranges` → `[p-series]="[{ data: }]"` + * - `p-value` com `p-ranges` → `[p-value-gauge-multiple]=""` + * - `p-ranges` → `[p-series]=""` (direto, sem wrap) + * - `p-title` → `[p-title]` passthrough direto no po-chart + * - `p-height` → `[p-height]` passthrough direto no po-chart + * - `p-description` → `p-options.descriptionChart` + * - `p-show-from-to-legend` → `p-options.showFromToLegend` + * - `p-show-pointer` → `p-options.pointer` + * - `p-options` → mescla para `[p-options]` do po-chart + * - `showContainerGauge: true` é injetado por padrão em `p-options` + * (comportamento do ngOnInit do po-gauge) + * - Propriedade `p-*` sem equivalente: coletada em `unmapped` + * - Demais atributos (não `po-gauge`): coletados em `passthrough` + * - Conflito entre propriedade individual e chave de `p-options`: prevalece o + * valor de `p-options` e o conflito é registrado + */ +export function mapGaugeProperties(attrs: Array): MappedChartAttributes { + const result: MappedChartAttributes = { + passthrough: [], + unmapped: [], + conflicts: [] + }; + + let valueAttr: GaugeAttribute | undefined; + let rangesAttr: GaugeAttribute | undefined; + let optionsAttr: GaugeAttribute | undefined; + + // Entradas individuais destinadas a p-options, na ordem de ocorrência. + const optionEntries: Array<{ key: string; value: string }> = []; + + attrs.forEach(attr => { + const base = normalizeName(attr.name); + const rule = ruleByProp.get(base); + + if (!rule) { + // Propriedade `p-*` do po-gauge sem equivalente vs. atributo genérico + // preservado. + if (base.toLowerCase().startsWith('p-')) { + result.unmapped.push(attr); + } else { + result.passthrough.push(attr); + } + return; + } + + switch (rule.target) { + case 'p-series': + if (base === 'p-value') { + valueAttr = attr; + } else if (base === 'p-ranges') { + rangesAttr = attr; + } + break; + case 'p-options': + if (base === 'p-options') { + optionsAttr = attr; + } else if (rule.optionsKey) { + optionEntries.push({ key: rule.optionsKey, value: formatValue(attr) }); + } + break; + case 'passthrough': + // p-title e p-height vão direto como inputs do po-chart. + result.passthrough.push(attr); + break; + } + }); + + const pSeries = buildSeries(valueAttr, rangesAttr); + if (pSeries !== undefined) { + result.pSeries = pSeries; + } + + // Quando p-value + p-ranges estão presentes, o valor vai para + // p-value-gauge-multiple (como no ngOnChanges do po-gauge original). + if (valueAttr && rangesAttr) { + const rangesExpr = formatValue(rangesAttr); + if (isNonEmptyArrayLiteral(rangesExpr)) { + result.pValueGaugeMultiple = formatValue(valueAttr); + } else { + // Ranges dinâmico: quando vazio em runtime, o po-gauge colocava o valor na + // série (`[{ data: value }]`) e não usava valuesMultiple. Replica esse + // fallback condicional para preservar o comportamento original. + // Usa `expr && expr.length` para evitar warning NG8107. + result.pValueGaugeMultiple = `${rangesExpr} && ${rangesExpr}.length ? ${formatValue(valueAttr)} : undefined`; + } + } + + const pOptions = buildOptions(optionEntries, optionsAttr, result.conflicts); + if (pOptions !== undefined) { + result.pOptions = pOptions; + } + + return result; +} + +/** + * Constrói a expressão de `p-series` seguindo o comportamento real do + * ngOnChanges do po-gauge: + * - Com ranges: `this.series = [...this.ranges]` → p-series recebe ranges diretamente + * - Sem ranges, com value: `this.series = [{ data: this.value }]` + * - Nem value nem ranges: gera `[]` (comportamento padrão do po-gauge que + * inicializava `series: Array = []`) + * + * Quando ambos existem, o value é tratado separadamente via + * `p-value-gauge-multiple` (pelo chamador). + */ +function buildSeries(valueAttr: GaugeAttribute | undefined, rangesAttr: GaugeAttribute | undefined): string { + if (rangesAttr) { + const rangesExpr = formatValue(rangesAttr); + + // Array literal não vazio: o conteúdo é garantido em tempo de build, então + // usa os ranges diretamente (equivale a `this.series = [...this.ranges]`). + if (isNonEmptyArrayLiteral(rangesExpr)) { + return rangesExpr; + } + + // Ranges dinâmico (variável/expressão) ou array literal vazio: pode não ter + // itens em runtime. O po-gauge decidia isso em tempo de execução no + // ngOnChanges: + // this.ranges?.length ? [...this.ranges] + // : (value ? [{ data: value }] : []) + // Replica esse fallback condicional para preservar o comportamento original. + // Usa `expr && expr.length` em vez de `expr?.length` para evitar o warning + // NG8107 do Angular (optional chain desnecessário em tipos não-nullable). + const fallback = valueAttr ? `[{ data: ${formatValue(valueAttr)} }]` : '[]'; + return `${rangesExpr} && ${rangesExpr}.length ? ${rangesExpr} : ${fallback}`; + } + + if (valueAttr) { + // Sem ranges: series é [{ data: value }]. + return `[{ data: ${formatValue(valueAttr)} }]`; + } + + // Sem value nem ranges: o po-gauge inicializava series como [] por padrão. + // É necessário passar explicitamente para evitar que o po-chart receba + // undefined (o que causaria erro em runtime no template). + return '[]'; +} + +/** + * Indica se a expressão é um array literal com pelo menos um elemento (ex.: + * `[{ from: 0, to: 50 }]`). Nesses casos o conteúdo é garantido em build-time e + * dispensa o fallback condicional aplicado a ranges dinâmicos. + */ +function isNonEmptyArrayLiteral(expr: string): boolean { + const trimmed = expr.trim(); + return trimmed.startsWith('[') && trimmed.endsWith(']') && trimmed.slice(1, -1).trim().length > 0; +} + +/** + * Constrói a expressão de `p-options` mesclando as propriedades individuais com + * o objeto `p-options` de origem, e injetando `showContainerGauge: true` por + * padrão (comportamento do ngOnInit do po-gauge original). + * + * Quando uma mesma chave é definida pela propriedade individual e por + * `p-options`, prevalece o valor de `p-options` e o conflito é registrado. + */ +function buildOptions( + individualEntries: Array<{ key: string; value: string }>, + optionsAttr: GaugeAttribute | undefined, + conflicts: Array +): string | undefined { + // showContainerGauge: true é o default do ngOnInit do po-gauge. + const defaultEntries: Array<{ key: string; value: string }> = [{ key: 'showContainerGauge', value: 'true' }]; + + const allIndividualEntries = [...defaultEntries, ...individualEntries]; + + if (!optionsAttr) { + return `{ ${allIndividualEntries.map(entry => `${entry.key}: ${entry.value}`).join(', ')} }`; + } + + const optionsExpr = optionsAttr.binding ? optionsAttr.rawExpression.trim() : formatValue(optionsAttr); + const isLiteralObject = optionsAttr.binding && optionsExpr.startsWith('{') && optionsExpr.endsWith('}'); + + if (isLiteralObject) { + const topLevelKeys = parseTopLevelKeys(optionsExpr); + const keptEntries: Array<{ key: string; value: string }> = []; + + allIndividualEntries.forEach(entry => { + if (topLevelKeys.includes(entry.key)) { + if (entry.key === 'descriptionChart') { + // descriptionChart de p-description PREVALECE sobre p-options + // (comportamento do po-gauge: this.description || options.descriptionChart). + keptEntries.push(entry); + conflicts.push(entry.key); + } else if (entry.key !== 'showContainerGauge') { + // Demais chaves: prevalece o valor definido em p-options. + // Não registra conflito para showContainerGauge (é apenas um default). + conflicts.push(entry.key); + } + } else { + keptEntries.push(entry); + } + }); + + // Monta o corpo do p-options literal, removendo a chave descriptionChart + // quando p-description prevalece (para não duplicar a chave). + let inner = optionsExpr.slice(1, -1).trim(); + const descriptionOverrides = + allIndividualEntries.some(entry => entry.key === 'descriptionChart') && topLevelKeys.includes('descriptionChart'); + + if (descriptionOverrides) { + inner = splitTopLevel(inner, ',') + .map(part => part.trim()) + .filter(part => part.length > 0) + .filter(part => { + const key = (splitTopLevel(part, ':')[0] ?? '').trim().replace(/^['"`]|['"`]$/g, ''); + return key !== 'descriptionChart'; + }) + .join(', '); + } + + const parts = keptEntries.map(entry => `${entry.key}: ${entry.value}`); + if (inner.length > 0) { + parts.push(inner); + } + + return parts.length > 0 ? `{ ${parts.join(', ')} }` : '{}'; + } + + // p-options é uma expressão opaca (variável/chamada): mescla via spread. + // As chaves individuais vêm antes do spread (p-options vence), EXCETO + // descriptionChart, que vem depois do spread para prevalecer, replicando + // `this.description || options.descriptionChart` do po-gauge original. + const descriptionEntry = allIndividualEntries.find(entry => entry.key === 'descriptionChart'); + const otherEntries = allIndividualEntries.filter(entry => entry.key !== 'descriptionChart'); + + const otherParts = otherEntries.map(entry => `${entry.key}: ${entry.value}`).join(', '); + const prefix = otherParts.length > 0 ? `${otherParts}, ` : ''; + + if (descriptionEntry) { + return `{ ${prefix}...${optionsExpr}, ${descriptionEntry.key}: ${descriptionEntry.value} }`; + } + return `{ ${prefix}...${optionsExpr} }`; +} + +/** + * Formata o valor de um atributo para uso em uma expressão de binding do + * po-chart. Bindings preservam a expressão original; atributos estáticos são + * convertidos em literais de string (Req. 3.1, 3.3). + */ +function formatValue(attr: GaugeAttribute): string { + if (attr.binding) { + return attr.rawExpression.trim(); + } + return `'${attr.rawExpression.replace(/'/g, "\\'")}'`; +} + +/** Remove colchetes/parênteses de binding e espaços do nome de um atributo. */ +function normalizeName(name: string): string { + return name + .replace(/^[[(]/, '') + .replace(/[\])]$/, '') + .trim(); +} + +/** + * Extrai as chaves de primeiro nível de um objeto literal preservado + * textualmente, respeitando aninhamento de `{}`/`[]`/`()` e literais de string. + */ +function parseTopLevelKeys(objectLiteral: string): Array { + const inner = objectLiteral.trim().slice(1, -1); + + return splitTopLevel(inner, ',') + .map(entry => { + const key = splitTopLevel(entry, ':')[0]?.trim() ?? ''; + return key.replace(/^['"`]|['"`]$/g, ''); + }) + .filter(key => key.length > 0); +} + +/** + * Divide uma string por um separador considerando apenas o nível superior, + * ignorando separadores dentro de `{}`/`[]`/`()` ou de literais de string. + */ +function splitTopLevel(source: string, separator: string): Array { + const parts: Array = []; + let current = ''; + let depth = 0; + let quote = ''; + + for (let i = 0; i < source.length; i++) { + const char = source[i]; + + if (quote) { + current += char; + if (char === quote && source[i - 1] !== '\\') { + quote = ''; + } + continue; + } + + if (char === '"' || char === "'" || char === '`') { + quote = char; + current += char; + continue; + } + + if (char === '{' || char === '[' || char === '(') { + depth++; + } else if (char === '}' || char === ']' || char === ')') { + depth--; + } + + if (char === separator && depth === 0) { + parts.push(current); + current = ''; + continue; + } + + current += char; + } + + if (current.trim().length > 0) { + parts.push(current); + } + + return parts; +} diff --git a/projects/ui/schematics/ng-update/v22/gauge-ts-migration.spec.ts b/projects/ui/schematics/ng-update/v22/gauge-ts-migration.spec.ts new file mode 100644 index 0000000000..74089bc0bc --- /dev/null +++ b/projects/ui/schematics/ng-update/v22/gauge-ts-migration.spec.ts @@ -0,0 +1,497 @@ +import fc from 'fast-check'; + +import { gaugeSymbolMap, gaugeSymbolsWithoutEquivalent } from './changes'; +import { migrateTypeScriptContent } from './gauge-ts-migration'; + +/** + * Testes de propriedade para a transformação de referências TypeScript + * (`migrateTypeScriptContent`). + */ +describe('v22 gauge-ts-migration (property-based):', () => { + // Símbolos gauge que possuem equivalente direto no po-chart. + const gaugeSymbols = Object.keys(gaugeSymbolMap); + + // Conjunto de símbolos não-gauge, reais do @po-ui/ng-components, garantidamente + // distintos dos símbolos gauge e de seus equivalentes (evita colisões de dedup). + const nonGaugeSymbols = [ + 'PoButtonModule', + 'PoTableModule', + 'PoFieldModule', + 'PoModalModule', + 'PoNotificationModule', + 'PoPageModule', + 'PoLoadingModule', + 'PoWidgetModule', + 'PoInfoModule', + 'PoTabsModule' + ]; + + /** Verifica a presença de um identificador com fronteira de palavra. */ + function hasSymbol(content: string, symbol: string): boolean { + return new RegExp(`\\b${symbol}\\b`).test(content); + } + + /** Gera um subconjunto não-vazio, sem repetição. */ + function nonEmptySubset(pool: Array): fc.Arbitrary> { + return fc.subarray(pool, { minLength: 1, maxLength: pool.length }); + } + + function subset(pool: Array): fc.Arbitrary> { + return fc.subarray(pool, { minLength: 0, maxLength: pool.length }); + } + + /** + * Extrai os símbolos nomeados do import de `@po-ui/ng-components` presente no + * conteúdo, retornando a lista de nomes (na forma textual, ex.: `PoChartModule` + * ou `PoGaugeModule as Foo`). Retorna `[]` quando não há import do pacote. + */ + function poUiImportSymbols(content: string): Array { + const match = content.match(/import\s*\{([^}]*)\}\s*from\s*['"]@po-ui\/ng-components['"]/); + if (!match) { + return []; + } + return match[1] + .split(',') + .map(symbol => symbol.trim()) + .filter(symbol => symbol.length > 0); + } + + /** Indica se há símbolos duplicados na lista de imports informada. */ + function hasDuplicateSymbols(symbols: Array): boolean { + return new Set(symbols).size !== symbols.length; + } + + /** + * Propriedade 9: Preservação dos demais imports (TS) + * + * Para qualquer declaração de importação de `@po-ui/ng-components` que misture + * símbolos gauge (com equivalente) e símbolos não-gauge arbitrários, após + * `migrateTypeScriptContent`: + * - cada símbolo gauge é substituído pelo equivalente de `gaugeSymbolMap`; + * - todos os símbolos não-gauge do mesmo import são preservados. + * + * **Validates: Requisitos 4.1, 4.2** + */ + it('should replace gauge symbols by their equivalents while preserving every non-gauge import (Prop 9)', () => { + fc.assert( + fc.property( + nonEmptySubset(gaugeSymbols), + subset(nonGaugeSymbols), + fc.boolean(), + fc.boolean(), + (chosenGauge, chosenNonGauge, gaugeFirst, isStandalone) => { + // Compõe a lista de símbolos do import, variando a ordem relativa. + const symbols = gaugeFirst ? [...chosenGauge, ...chosenNonGauge] : [...chosenNonGauge, ...chosenGauge]; + + const source = `import { ${symbols.join(', ')} } from '@po-ui/ng-components';\n`; + + const result = migrateTypeScriptContent(source, isStandalone); + + // 1. Todos os símbolos não-gauge devem permanecer presentes. + for (const symbol of chosenNonGauge) { + expect(hasSymbol(result.content, symbol)).toBe(true); + } + + // 2. Cada símbolo gauge deve ter sido substituído pelo equivalente. + for (const gauge of chosenGauge) { + const equivalent = gaugeSymbolMap[gauge]; + + expect(hasSymbol(result.content, equivalent)).toBe(true); + expect(hasSymbol(result.content, gauge)).toBe(false); + } + + // 3. Como há ao menos um símbolo gauge com equivalente, houve alteração. + expect(result.changed).toBe(true); + + // 4. Nenhuma advertência para símbolos que possuem equivalente. + expect(result.warnings.length).toBe(0); + } + ) + ); + }); + + /** + * Propriedade 10: Símbolo sem equivalente inalterado (TS) + * + * Para qualquer fonte TypeScript que importe ao menos um símbolo gauge SEM + * equivalente (`PoGaugeCoordinates`/`PoGaugeSvgContainer`, de + * `gaugeSymbolsWithoutEquivalent`) de `@po-ui/ng-components` — possivelmente + * misturado a outros símbolos —, após `migrateTypeScriptContent`: + * - o conteúdo é retornado INALTERADO (idêntico byte a byte ao original); + * - `changed === false`; + * - ao menos um `MigrationWarning` é registrado para o símbolo sem equivalente. + * + * **Validates: Requisito 4.4** + */ + it('should keep content unchanged and register a warning when a no-equivalent gauge symbol is imported (Prop 10)', () => { + // Pool de "outros símbolos" arbitrários: não-gauge + gauge com equivalente. + // Independentemente da mistura, a presença de um símbolo sem equivalente + // deve manter o arquivo inalterado (Req. 4.4). + const otherSymbols = [...nonGaugeSymbols, ...gaugeSymbols]; + + fc.assert( + fc.property( + nonEmptySubset([...gaugeSymbolsWithoutEquivalent]), + subset(otherSymbols), + fc.boolean(), + fc.boolean(), + (chosenWithout, chosenOthers, withoutFirst, isStandalone) => { + // Compõe a lista de símbolos do import, variando a ordem relativa. + const symbols = withoutFirst ? [...chosenWithout, ...chosenOthers] : [...chosenOthers, ...chosenWithout]; + + const source = `import { ${symbols.join(', ')} } from '@po-ui/ng-components';\n`; + + const result = migrateTypeScriptContent(source, isStandalone); + + // 1. Conteúdo idêntico byte a byte ao original. + expect(result.content).toBe(source); + + // 2. Nenhuma alteração aplicada. + expect(result.changed).toBe(false); + + // 3. Ao menos uma advertência registrada. + expect(result.warnings.length).toBeGreaterThanOrEqual(1); + + // 4. Ao menos uma advertência referencia um símbolo sem equivalente. + const mentionsWithout = result.warnings.some(warning => + chosenWithout.some(symbol => warning.reason.includes(symbol)) + ); + expect(mentionsWithout).toBe(true); + } + ) + ); + }); + + /** + * Propriedade 1: Idempotência (ponto fixo) — TS + * + * Para qualquer fonte TypeScript variada (import de `@po-ui/ng-components` + * misturando símbolos gauge com equivalente, símbolos não-gauge, opcionalmente + * símbolos sem equivalente, e opcionalmente uma estrutura `@NgModule` + * declarando/importando/exportando ou um componente standalone importando os + * símbolos gauge), aplicar `migrateTypeScriptContent` duas vezes produz o mesmo + * conteúdo que aplicá-la uma única vez (a transformação é um ponto fixo): + * + * migrate(migrate(x, s).content, s).content === migrate(x, s).content + * + * Além disso, após a segunda execução, não há símbolos de import duplicados. + * + * **Validates: Requisitos 7.2, 7.4** + */ + it('should be idempotent (fixed point) and not duplicate import symbols on the second run (Prop 1)', () => { + // Símbolos gauge que podem aparecer em arrays de módulo/standalone. + const referenceableGauge = gaugeSymbols; + + /** + * Constrói uma fonte TypeScript variada a partir dos parâmetros gerados. + */ + function buildSource(params: { + chosenGauge: Array; + chosenNonGauge: Array; + chosenWithout: Array; + gaugeFirst: boolean; + structure: 'none' | 'ngmodule' | 'standalone'; + }): string { + const { chosenGauge, chosenNonGauge, chosenWithout, gaugeFirst, structure } = params; + + const gaugePart = [...chosenGauge, ...chosenWithout]; + const symbols = gaugeFirst ? [...gaugePart, ...chosenNonGauge] : [...chosenNonGauge, ...gaugePart]; + + // Sempre há ao menos um símbolo no import (garantido pelos geradores). + let source = `import { ${symbols.join(', ')} } from '@po-ui/ng-components';\n\n`; + + // Referências usadas nas estruturas: apenas símbolos gauge com equivalente + // efetivamente importados (identificadores válidos no corpo do arquivo). + const refs = chosenGauge; + + if (structure === 'ngmodule') { + const decls = ['AppComponent', ...refs].join(', '); + const imps = ['CommonModule', ...refs].join(', '); + const exps = refs.join(', '); + source += + `@NgModule({\n` + + ` declarations: [${decls}],\n` + + ` imports: [${imps}],\n` + + ` exports: [${exps}]\n` + + `})\n` + + `export class AppModule {}\n`; + } else if (structure === 'standalone') { + const imps = ['CommonModule', ...refs].join(', '); + source += + `@Component({\n` + + ` selector: 'app-demo',\n` + + ` imports: [${imps}],\n` + + ` template: ''\n` + + `})\n` + + `export class DemoComponent {}\n`; + } + + return source; + } + + fc.assert( + fc.property( + subset(referenceableGauge), + subset(nonGaugeSymbols), + subset([...gaugeSymbolsWithoutEquivalent]), + fc.boolean(), + fc.constantFrom('none', 'ngmodule', 'standalone'), + fc.boolean(), + (chosenGauge, chosenNonGauge, chosenWithout, gaugeFirst, structure, isStandalone) => { + // Garante ao menos um símbolo no import para uma fonte válida. + if (chosenGauge.length + chosenNonGauge.length + chosenWithout.length === 0) { + return true; + } + + const source = buildSource({ + chosenGauge, + chosenNonGauge, + chosenWithout, + gaugeFirst, + structure: structure as 'none' | 'ngmodule' | 'standalone' + }); + + const once = migrateTypeScriptContent(source, isStandalone).content; + const twice = migrateTypeScriptContent(once, isStandalone).content; + + // 1. Ponto fixo: aplicar duas vezes é igual a aplicar uma vez. + expect(twice).toBe(once); + + // 2. Nenhum símbolo de import duplicado após a segunda execução. + expect(hasDuplicateSymbols(poUiImportSymbols(twice))).toBe(false); + + return true; + } + ) + ); + }); +}); + +/** + * Testes unitários (baseados em exemplos) para a transformação de referências + * TypeScript em projetos NgModule e standalone. + * + * Cobrem os cenários da migração po-gauge → po-chart em que os símbolos gauge + * aparecem nas listas `declarations`/`imports`/`exports` de um `@NgModule`, nos + * `imports` de um componente standalone e na configuração da aplicação + * standalone, verificando que: + * - as referências gauge são atualizadas para os equivalentes do po-chart; + * - a declaração de importação é atualizada de forma correspondente; + * - todos os demais itens já existentes são preservados. + * + * Validates: Requisitos 5.1, 5.2, 5.3 + */ +describe('v22 gauge-ts-migration (NgModule e standalone):', () => { + /** Extrai os símbolos importados de `@po-ui/ng-components`, se houver. */ + function poUiImportSymbols(content: string): Array { + const match = content.match(/import\s*\{([^}]*)\}\s*from\s*['"]@po-ui\/ng-components['"]/); + if (!match) { + return []; + } + return match[1] + .split(',') + .map(symbol => symbol.trim()) + .filter(symbol => symbol.length > 0); + } + + /** + * Extrai o conteúdo textual de uma lista nomeada de um decorator + * (`declarations: [...]`, `imports: [...]`, `exports: [...]`, `providers: [...]`). + */ + function arrayContentOf(content: string, key: string): string { + const match = content.match(new RegExp(`${key}\\s*:\\s*\\[([^\\]]*)\\]`)); + return match ? match[1] : ''; + } + + describe('NgModule (Req 5.1):', () => { + const source = + `import { NgModule } from '@angular/core';\n` + + `import { CommonModule } from '@angular/common';\n` + + `import { PoButtonModule, PoGaugeModule, PoGaugeComponent, PoFieldModule } from '@po-ui/ng-components';\n` + + `\n` + + `import { AppComponent } from './app.component';\n` + + `\n` + + `@NgModule({\n` + + ` declarations: [AppComponent, PoGaugeComponent],\n` + + ` imports: [CommonModule, PoButtonModule, PoGaugeModule, PoFieldModule],\n` + + ` bootstrap: [AppComponent]\n` + + `})\n` + + `export class AppModule {}\n`; + + const result = migrateTypeScriptContent(source, false); + + it('should mark the file as changed without warnings', () => { + expect(result.changed).toBe(true); + expect(result.warnings.length).toBe(0); + }); + + it('should update gauge references in declarations to the po-chart equivalent', () => { + const declarations = arrayContentOf(result.content, 'declarations'); + + expect(declarations).toContain('PoChartComponent'); + expect(declarations).not.toContain('PoGaugeComponent'); + // Item já existente preservado. + expect(declarations).toContain('AppComponent'); + }); + + it('should update gauge references in imports to the po-chart equivalent', () => { + const imports = arrayContentOf(result.content, 'imports'); + + expect(imports).toContain('PoChartModule'); + expect(imports).not.toContain('PoGaugeModule'); + // Itens já existentes preservados, na mesma ordem. + expect(imports).toContain('CommonModule'); + expect(imports).toContain('PoButtonModule'); + expect(imports).toContain('PoFieldModule'); + }); + + it('should update the po-ui import declaration replacing gauge symbols by equivalents', () => { + const symbols = poUiImportSymbols(result.content); + + expect(symbols).toContain('PoChartModule'); + expect(symbols).toContain('PoChartComponent'); + expect(symbols).toContain('PoButtonModule'); + expect(symbols).toContain('PoFieldModule'); + expect(symbols).not.toContain('PoGaugeModule'); + expect(symbols).not.toContain('PoGaugeComponent'); + }); + + it('should preserve unrelated imports and the bootstrap array untouched', () => { + // Imports de @angular preservados. + expect(result.content).toContain(`import { NgModule } from '@angular/core';`); + expect(result.content).toContain(`import { CommonModule } from '@angular/common';`); + // Array bootstrap preservado. + expect(arrayContentOf(result.content, 'bootstrap')).toContain('AppComponent'); + }); + }); + + describe('NgModule com exports (Req 5.1):', () => { + const source = + `import { NgModule } from '@angular/core';\n` + + `import { PoGaugeModule } from '@po-ui/ng-components';\n` + + `\n` + + `@NgModule({\n` + + ` imports: [PoGaugeModule],\n` + + ` exports: [PoGaugeModule]\n` + + `})\n` + + `export class SharedModule {}\n`; + + const result = migrateTypeScriptContent(source, false); + + it('should update gauge references in both imports and exports arrays', () => { + expect(result.changed).toBe(true); + expect(arrayContentOf(result.content, 'imports')).toContain('PoChartModule'); + expect(arrayContentOf(result.content, 'exports')).toContain('PoChartModule'); + expect(result.content).not.toContain('PoGaugeModule'); + }); + }); + + describe('Componente standalone (Req 5.2):', () => { + const source = + `import { Component } from '@angular/core';\n` + + `import { CommonModule } from '@angular/common';\n` + + `import { PoTableModule, PoGaugeModule } from '@po-ui/ng-components';\n` + + `\n` + + `@Component({\n` + + ` selector: 'app-dashboard',\n` + + ` standalone: true,\n` + + ` imports: [CommonModule, PoGaugeModule, PoTableModule],\n` + + ` template: ''\n` + + `})\n` + + `export class DashboardComponent {}\n`; + + const result = migrateTypeScriptContent(source, true); + + it('should mark the file as changed without warnings', () => { + expect(result.changed).toBe(true); + expect(result.warnings.length).toBe(0); + }); + + it('should update gauge references in the standalone imports to the po-chart equivalent', () => { + const imports = arrayContentOf(result.content, 'imports'); + + expect(imports).toContain('PoChartModule'); + expect(imports).not.toContain('PoGaugeModule'); + // Itens já existentes preservados. + expect(imports).toContain('CommonModule'); + expect(imports).toContain('PoTableModule'); + }); + + it('should update the po-ui import declaration preserving the non-gauge symbol', () => { + const symbols = poUiImportSymbols(result.content); + + expect(symbols).toContain('PoChartModule'); + expect(symbols).toContain('PoTableModule'); + expect(symbols).not.toContain('PoGaugeModule'); + }); + }); + + describe('Configuração de aplicação standalone (Req 5.3):', () => { + const source = + `import { ApplicationConfig, importProvidersFrom } from '@angular/core';\n` + + `import { provideRouter } from '@angular/router';\n` + + `import { PoGaugeModule, PoI18nModule } from '@po-ui/ng-components';\n` + + `\n` + + `import { routes } from './app.routes';\n` + + `\n` + + `export const appConfig: ApplicationConfig = {\n` + + ` providers: [provideRouter(routes), importProvidersFrom(PoGaugeModule, PoI18nModule)]\n` + + `};\n`; + + const result = migrateTypeScriptContent(source, true); + + it('should mark the file as changed without warnings', () => { + expect(result.changed).toBe(true); + expect(result.warnings.length).toBe(0); + }); + + it('should update the gauge reference in the application config providers', () => { + expect(result.content).toContain('importProvidersFrom(PoChartModule, PoI18nModule)'); + expect(result.content).not.toContain('PoGaugeModule'); + }); + + it('should preserve the remaining providers and po-ui symbols', () => { + // Provedor não relacionado preservado. + expect(result.content).toContain('provideRouter(routes)'); + // Símbolo po-ui não-gauge preservado no import. + const symbols = poUiImportSymbols(result.content); + expect(symbols).toContain('PoChartModule'); + expect(symbols).toContain('PoI18nModule'); + expect(symbols).not.toContain('PoGaugeModule'); + }); + }); + + describe('Interfaces do gauge em NgModule/standalone (Req 5.1, 5.2):', () => { + const source = + `import { Component } from '@angular/core';\n` + + `import { PoGaugeRanges, PoGaugeOptions } from '@po-ui/ng-components';\n` + + `\n` + + `@Component({\n` + + ` selector: 'app-metric',\n` + + ` template: ''\n` + + `})\n` + + `export class MetricComponent {\n` + + ` ranges: Array = [];\n` + + ` options: PoGaugeOptions = {};\n` + + `}\n`; + + const result = migrateTypeScriptContent(source, true); + + it('should replace gauge interface imports and usages by their equivalents', () => { + expect(result.changed).toBe(true); + expect(result.warnings.length).toBe(0); + + const symbols = poUiImportSymbols(result.content); + expect(symbols).toContain('PoChartSerie'); + expect(symbols).toContain('PoChartOptions'); + expect(symbols).not.toContain('PoGaugeRanges'); + expect(symbols).not.toContain('PoGaugeOptions'); + + // Usos no corpo da classe atualizados. + expect(result.content).toContain('Array'); + expect(result.content).toContain('options: PoChartOptions'); + expect(result.content).not.toContain('PoGaugeRanges'); + expect(result.content).not.toContain('PoGaugeOptions'); + }); + }); +}); diff --git a/projects/ui/schematics/ng-update/v22/gauge-ts-migration.ts b/projects/ui/schematics/ng-update/v22/gauge-ts-migration.ts new file mode 100644 index 0000000000..76e7220e13 --- /dev/null +++ b/projects/ui/schematics/ng-update/v22/gauge-ts-migration.ts @@ -0,0 +1,438 @@ +import * as ts from 'typescript'; + +import { gaugeSymbolMap, gaugeSymbolsWithoutEquivalent, PO_UI_PACKAGE } from './changes'; +import { MigrationWarning } from './migration-report'; + +/** + * Resultado da transformação de um arquivo TypeScript pela Schematic_Migracao. + * + * A função `migrateTypeScriptContent` é pura (string → string): recebe o + * conteúdo original e devolve o conteúdo transformado, um indicador de + * alteração e a lista de Casos_Nao_Migravel encontrados. + */ +export interface TsMigrationResult { + /** Conteúdo do arquivo após a transformação (idêntico ao original se nada mudou). */ + content: string; + /** `true` somente quando alguma transformação foi efetivamente aplicada. */ + changed: boolean; + /** Casos_Nao_Migravel identificados (ex.: símbolo gauge sem equivalente). */ + warnings: Array; +} + +/** Edição textual pontual a ser aplicada sobre o conteúdo original. */ +interface TextEdit { + start: number; + end: number; + text: string; +} + +/** Informações de um símbolo gauge encontrado em uma declaração de importação. */ +interface GaugeSpecifierInfo { + specifier: ts.ImportSpecifier; + /** Nome importado (lado esquerdo de `as`, ou o próprio nome). */ + importedName: string; + /** Nome local usado nas referências (lado direito de `as`, ou o próprio nome). */ + localName: string; + /** Indica se o import usa alias (`PoGaugeModule as Foo`). */ + aliased: boolean; + namedImports: ts.NamedImports; + decl: ts.ImportDeclaration; +} + +/** + * Transforma referências ao `po-gauge` em referências equivalentes ao + * `po-chart` em um arquivo TypeScript. + * + * Comportamento (Req. 4.1–4.4, 4.6, 5.1–5.3): + * - Localiza `ImportDeclaration` de `@po-ui/ng-components` que contenham + * símbolos gauge e substitui os símbolos com equivalente conhecido + * (`gaugeSymbolMap`), preservando os demais símbolos do mesmo import. + * - Atualiza as referências desses símbolos no restante do arquivo + * (`declarations`/`imports`/`exports` de `@NgModule` e `imports` de + * componentes standalone / configuração da aplicação). + * - Se um símbolo gauge importado NÃO possui equivalente + * (`gaugeSymbolsWithoutEquivalent`), o arquivo é mantido inalterado e um + * `MigrationWarning` é registrado (Req. 4.4). + * - Deduplica símbolos-alvo já importados, evitando imports/itens duplicados + * (idempotência, Req. 7.4). + * - Preserva indentação, quebras de linha e a ordenação das importações não + * relacionadas ao gauge (Req. 4.6). + * + * @param source Conteúdo original do arquivo `.ts`. + * @param isStandalone Indica se o projeto é standalone (mantido por contrato de + * interface; a transformação de referências é a mesma para ambas as + * arquiteturas). + */ +export function migrateTypeScriptContent(source: string, isStandalone: boolean): TsMigrationResult { + void isStandalone; + + const warnings: Array = []; + const sourceFile = ts.createSourceFile('file.ts', source, ts.ScriptTarget.Latest, /* setParentNodes */ true); + + const poUiImports = collectPoUiImports(sourceFile); + + if (poUiImports.length === 0) { + return { content: source, changed: false, warnings }; + } + + const gaugeSpecifiers: Array = []; + const withoutEquivalent: Array = []; + const allImportedNames = new Set(); + + for (const decl of poUiImports) { + const named = getNamedImports(decl); + if (!named) { + continue; + } + + for (const element of named.elements) { + const importedName = (element.propertyName ?? element.name).text; + const localName = element.name.text; + allImportedNames.add(localName); + + if (Object.prototype.hasOwnProperty.call(gaugeSymbolMap, importedName)) { + gaugeSpecifiers.push({ + specifier: element, + importedName, + localName, + aliased: element.propertyName !== undefined, + namedImports: named, + decl + }); + } else if (gaugeSymbolsWithoutEquivalent.includes(importedName)) { + withoutEquivalent.push(element); + } + } + } + + // Req. 4.4 — símbolo gauge sem equivalente: mantém o arquivo inalterado e + // registra advertência para revisão manual. + if (withoutEquivalent.length > 0) { + for (const element of withoutEquivalent) { + const importedName = (element.propertyName ?? element.name).text; + warnings.push({ + filePath: '', + line: lineOf(sourceFile, element), + reason: + `O símbolo "${importedName}" do po-gauge não possui equivalente no po-chart. ` + + `Revise manualmente este arquivo antes de removê-lo.` + }); + } + + return { content: source, changed: false, warnings }; + } + + if (gaugeSpecifiers.length === 0) { + return { content: source, changed: false, warnings }; + } + + const edits: Array = []; + + // Nomes locais (sem alias) que serão substituídos por seu equivalente nas + // referências ao longo do arquivo. + const referenceRenameMap = new Map(); + + buildImportEdits(sourceFile, gaugeSpecifiers, allImportedNames, referenceRenameMap, edits); + + buildReferenceEdits(sourceFile, poUiImports, referenceRenameMap, edits); + + if (edits.length === 0) { + return { content: source, changed: false, warnings }; + } + + const content = applyEdits(source, edits); + + return { content, changed: content !== source, warnings }; +} + +/** Coleta as `ImportDeclaration` cujo módulo é `@po-ui/ng-components`. */ +function collectPoUiImports(sourceFile: ts.SourceFile): Array { + const imports: Array = []; + + for (const statement of sourceFile.statements) { + if ( + ts.isImportDeclaration(statement) && + ts.isStringLiteral(statement.moduleSpecifier) && + statement.moduleSpecifier.text === PO_UI_PACKAGE + ) { + imports.push(statement); + } + } + + return imports; +} + +/** Retorna os `NamedImports` de uma declaração, quando existirem. */ +function getNamedImports(decl: ts.ImportDeclaration): ts.NamedImports | undefined { + const bindings = decl.importClause?.namedBindings; + return bindings && ts.isNamedImports(bindings) ? bindings : undefined; +} + +/** + * Gera as edições sobre as declarações de importação, renomeando ou removendo + * (deduplicando) os símbolos gauge, e alimenta o mapa de renomeação de + * referências. + */ +function buildImportEdits( + sourceFile: ts.SourceFile, + gaugeSpecifiers: Array, + allImportedNames: Set, + referenceRenameMap: Map, + edits: Array +): void { + // Alvos já presentes como símbolos importados que NÃO são símbolos gauge. + const gaugeLocalNames = new Set(gaugeSpecifiers.map(info => info.localName)); + const presentTargets = new Set(); + allImportedNames.forEach(name => { + if (!gaugeLocalNames.has(name)) { + presentTargets.add(name); + } + }); + + // Índice: declaração -> símbolos gauge que serão removidos (dedup). + const removedByDecl = new Map>(); + const declSpecifierEdits: Array<{ info: GaugeSpecifierInfo; remove: boolean; target: string }> = []; + + for (const info of gaugeSpecifiers) { + const target = gaugeSymbolMap[info.importedName]; + + if (info.aliased) { + // Import com alias: renomeia apenas o nome importado, preservando o alias + // local. As referências (que usam o alias) permanecem inalteradas. + declSpecifierEdits.push({ info, remove: false, target }); + continue; + } + + // Referências ao símbolo gauge passam a apontar para o equivalente. + referenceRenameMap.set(info.localName, target); + + // Dedup: se o alvo já é importado, remove o símbolo gauge em vez de renomear. + const alreadyPresent = presentTargets.has(target); + + if (alreadyPresent) { + declSpecifierEdits.push({ info, remove: true, target }); + const set = removedByDecl.get(info.decl) ?? new Set(); + set.add(info.specifier); + removedByDecl.set(info.decl, set); + } else { + declSpecifierEdits.push({ info, remove: false, target }); + presentTargets.add(target); + } + } + + // Declarações cujos elementos serão TODOS removidos são apagadas por inteiro. + const fullyRemovedDecls = new Set(); + removedByDecl.forEach((removedSet, decl) => { + const named = getNamedImports(decl); + if (named && named.elements.every(element => removedSet.has(element))) { + fullyRemovedDecls.add(decl); + } + }); + + for (const decl of fullyRemovedDecls) { + edits.push(removeDeclarationEdit(sourceFile, decl)); + } + + for (const { info, remove, target } of declSpecifierEdits) { + if (fullyRemovedDecls.has(info.decl)) { + continue; + } + + if (remove) { + edits.push(removeSpecifierEdit(sourceFile, info.namedImports, info.specifier)); + } else if (info.aliased && info.specifier.propertyName) { + edits.push({ + start: info.specifier.propertyName.getStart(sourceFile), + end: info.specifier.propertyName.getEnd(), + text: target + }); + } else { + edits.push({ + start: info.specifier.name.getStart(sourceFile), + end: info.specifier.name.getEnd(), + text: target + }); + } + } +} + +/** + * Gera as edições sobre as referências dos símbolos gauge no corpo do arquivo + * (fora das declarações de importação), com deduplicação dentro de arrays. + */ +function buildReferenceEdits( + sourceFile: ts.SourceFile, + poUiImports: Array, + referenceRenameMap: Map, + edits: Array +): void { + if (referenceRenameMap.size === 0) { + return; + } + + const importRanges = poUiImports.map(decl => ({ start: decl.getStart(sourceFile), end: decl.getEnd() })); + // Rastreia os alvos já presentes/emitidos por array, para evitar duplicatas + // em listas como `declarations`/`imports`/`exports`. + const emittedTargetsByArray = new Map>(); + + const visit = (node: ts.Node): void => { + if (ts.isIdentifier(node) && referenceRenameMap.has(node.text) && !isWithinRanges(node, sourceFile, importRanges)) { + if (isRenameableReference(node)) { + const target = referenceRenameMap.get(node.text)!; + const array = getContainingArrayElement(node); + + if (array) { + const emitted = emittedTargetsByArray.get(array) ?? collectExistingArrayNames(array, referenceRenameMap); + emittedTargetsByArray.set(array, emitted); + + if (emitted.has(target)) { + // Alvo já presente no array: remove o elemento gauge (dedup). + edits.push(removeArrayElementEdit(sourceFile, array, node)); + return; + } + + emitted.add(target); + } + + edits.push({ start: node.getStart(sourceFile), end: node.getEnd(), text: target }); + } + return; + } + + ts.forEachChild(node, visit); + }; + + visit(sourceFile); +} + +/** Verifica se o identificador é uma referência renomeável (não é chave/propriedade). */ +function isRenameableReference(node: ts.Identifier): boolean { + const parent = node.parent; + + if (!parent) { + return true; + } + + // `obj.PoGaugeModule` — não é referência ao símbolo importado. + if (ts.isPropertyAccessExpression(parent) && parent.name === node) { + return false; + } + + // `{ PoGaugeModule: ... }` — chave de objeto, não é referência. + if (ts.isPropertyAssignment(parent) && parent.name === node) { + return false; + } + + // `PoGaugeModule.prop` como qualificador de tipo. + if (ts.isQualifiedName(parent) && parent.right === node) { + return false; + } + + return true; +} + +/** Retorna o `ArrayLiteralExpression` do qual o nó é elemento direto, se houver. */ +function getContainingArrayElement(node: ts.Node): ts.ArrayLiteralExpression | undefined { + const parent = node.parent; + if (parent && ts.isArrayLiteralExpression(parent) && parent.elements.indexOf(node as ts.Expression) !== -1) { + return parent; + } + return undefined; +} + +/** Coleta os nomes já existentes em um array, mapeando símbolos gauge para seus alvos. */ +function collectExistingArrayNames( + array: ts.ArrayLiteralExpression, + referenceRenameMap: Map +): Set { + const names = new Set(); + + for (const element of array.elements) { + if (ts.isIdentifier(element)) { + // Nomes que não são gauge já contam como presentes com seu próprio nome. + if (!referenceRenameMap.has(element.text)) { + names.add(element.text); + } + } + } + + return names; +} + +/** Indica se um nó está contido em alguma das faixas informadas. */ +function isWithinRanges( + node: ts.Node, + sourceFile: ts.SourceFile, + ranges: Array<{ start: number; end: number }> +): boolean { + const start = node.getStart(sourceFile); + return ranges.some(range => start >= range.start && start < range.end); +} + +/** Cria uma edição que remove um `ImportSpecifier`, cuidando das vírgulas. */ +function removeSpecifierEdit(sourceFile: ts.SourceFile, named: ts.NamedImports, element: ts.ImportSpecifier): TextEdit { + const elements = named.elements; + const index = elements.indexOf(element); + + if (index < elements.length - 1) { + // Remove do início do elemento até o início do próximo (inclui a vírgula). + return { start: element.getStart(sourceFile), end: elements[index + 1].getStart(sourceFile), text: '' }; + } + + // Último elemento: remove do fim do elemento anterior (inclui a vírgula). + return { start: elements[index - 1].getEnd(), end: element.getEnd(), text: '' }; +} + +/** Cria uma edição que remove um elemento de array, cuidando das vírgulas. */ +function removeArrayElementEdit( + sourceFile: ts.SourceFile, + array: ts.ArrayLiteralExpression, + element: ts.Node +): TextEdit { + const elements = array.elements; + const index = elements.indexOf(element as ts.Expression); + + if (index < elements.length - 1) { + return { start: element.getStart(sourceFile), end: elements[index + 1].getStart(sourceFile), text: '' }; + } + + if (index > 0) { + return { start: elements[index - 1].getEnd(), end: element.getEnd(), text: '' }; + } + + // Único elemento do array. + return { start: element.getStart(sourceFile), end: element.getEnd(), text: '' }; +} + +/** Cria uma edição que remove uma `ImportDeclaration` inteira, incluindo a quebra de linha. */ +function removeDeclarationEdit(sourceFile: ts.SourceFile, decl: ts.ImportDeclaration): TextEdit { + const start = decl.getStart(sourceFile); + let end = decl.getEnd(); + + const text = sourceFile.getFullText(); + // Consome uma eventual quebra de linha subsequente para não deixar linha vazia. + if (text[end] === '\r' && text[end + 1] === '\n') { + end += 2; + } else if (text[end] === '\n' || text[end] === '\r') { + end += 1; + } + + return { start, end, text: '' }; +} + +/** Número da linha (1-indexado) em que o nó inicia. */ +function lineOf(sourceFile: ts.SourceFile, node: ts.Node): number { + return sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile)).line + 1; +} + +/** Aplica as edições sobre o conteúdo, do fim para o início, preservando offsets. */ +function applyEdits(source: string, edits: Array): string { + const ordered = [...edits].sort((a, b) => b.start - a.start); + + let result = source; + for (const edit of ordered) { + result = result.slice(0, edit.start) + edit.text + result.slice(edit.end); + } + + return result; +} diff --git a/projects/ui/schematics/ng-update/v22/index.spec.ts b/projects/ui/schematics/ng-update/v22/index.spec.ts new file mode 100644 index 0000000000..3a2b45dc97 --- /dev/null +++ b/projects/ui/schematics/ng-update/v22/index.spec.ts @@ -0,0 +1,660 @@ +import * as fc from 'fast-check'; +import * as path from 'path'; + +import { logging } from '@angular-devkit/core'; +import { SchematicContext, Tree } from '@angular-devkit/schematics'; +import { SchematicTestRunner } from '@angular-devkit/schematics/testing'; + +import { migrateHtmlContent } from './gauge-html-migration'; +import { migrateTypeScriptContent } from './gauge-ts-migration'; +import { gaugeMigrationRule, getAngularMajor } from './index'; + +/** + * Testes de propriedade para a **escrita condicional** (`Propriedade 3`) da regra + * de orquestração `gaugeMigrationRule`. + * + * A regra só deve gravar (`tree.overwrite`) um arquivo quando o conteúdo + * transformado difere do original (Req. 2.8, 4.6, 7.3). Consequentemente, quando + * o conteúdo migrado de um arquivo é idêntico ao original — por exemplo, um + * arquivo sem qualquer `Uso_Template`/`Uso_TypeScript` do `po-gauge`, ou um + * arquivo já migrado (`po-chart` com `p-type="gauge"` / símbolos do `po-chart`) — + * o arquivo NÃO deve ser sobrescrito e seu conteúdo deve permanecer idêntico + * byte a byte. + * + * Abordagem: teste em nível de regra. Constrói-se um `Tree` em memória com um + * `angular.json` mínimo (workspace + projeto `application` com `sourceRoot` e + * `browser`/main), um `main.ts` standalone (para `getProjectMainFile` / + * `isStandaloneApp`) e arquivos gerados sob o diretório-fonte do projeto cujo + * conteúdo migrado é idêntico ao original. Após aplicar `gaugeMigrationRule()`, + * verifica-se que: + * - o conteúdo de cada arquivo permanece idêntico byte a byte (invariante + * observável da escrita condicional); + * - `tree.overwrite` não foi chamado para esses arquivos (nenhuma escrita). + * + * O espaço de entrada "sem mudança" é garantido por uma pré-condição + * (`fc.pre`) que usa as próprias transformações puras: um arquivo só participa + * do teste quando `migrate(x).changed === false && migrate(x).content === x` — + * que é exatamente a condição sob a qual `scanDirectory` pula a escrita. + */ + +/** `angular.json` mínimo: um projeto `application` com `sourceRoot` e main file. */ +const ANGULAR_JSON = { + version: 1, + projects: { + demo: { + projectType: 'application', + root: '', + sourceRoot: 'src', + architect: { + build: { + builder: '@angular/build:application', + options: { + browser: 'src/main.ts' + } + } + } + } + } +}; + +/** `main.ts` standalone válido para `getProjectMainFile`/`isStandaloneApp`. */ +const MAIN_TS = [ + `import { bootstrapApplication } from '@angular/platform-browser';`, + `import { AppComponent } from './app/app.component';`, + ``, + `bootstrapApplication(AppComponent).catch(err => console.error(err));`, + `` +].join('\n'); + +/** Constrói um `Tree` em memória com o workspace mínimo e os arquivos gerados. */ +function buildTree(files: Array<{ path: string; content: string }>): Tree { + const tree = Tree.empty(); + tree.create('/angular.json', JSON.stringify(ANGULAR_JSON, null, 2)); + tree.create('/src/main.ts', MAIN_TS); + + for (const file of files) { + tree.create(file.path, file.content); + } + + return tree; +} + +/** Contexto mínimo: a regra só depende de `context.logger`. */ +function createContext(): SchematicContext { + return { logger: new logging.NullLogger() } as unknown as SchematicContext; +} + +/** Executa a regra de forma síncrona sobre o `tree` informado. */ +function runRule(tree: Tree): void { + const rule = gaugeMigrationRule() as (tree: Tree, context: SchematicContext) => Tree; + rule(tree, createContext()); +} + +/** + * Trechos de HTML seguros: marcação genérica e elementos já migrados + * (`po-chart` com `p-type="gauge"`). Nenhum contém o seletor de abertura + * ` = fc.constantFrom( + '
    ', + '

    texto

    ', + '', + 'conteúdo', + '', + '', + '', + '\n', + ' ' +); + +/** Documento HTML cujo conteúdo migrado é idêntico ao original (no-op). */ +const noChangeHtmlArb: fc.Arbitrary = fc + .array(safeHtmlPartArb, { minLength: 0, maxLength: 8 }) + .map(parts => parts.join('')); + +/** + * Trechos de TypeScript seguros: imports de símbolos não-gauge, símbolos já + * migrados (`PoChartModule`) e código comum. Nenhum importa símbolos gauge, + * portanto a migração não altera o conteúdo. + */ +const safeTsPartArb: fc.Arbitrary = fc.constantFrom( + `import { Component } from '@angular/core';\n`, + `import { CommonModule } from '@angular/common';\n`, + `import { PoButtonModule, PoTableModule } from '@po-ui/ng-components';\n`, + `import { PoChartModule } from '@po-ui/ng-components';\n`, + `export class FooComponent {}\n`, + `const total = 42;\n`, + `// comentário existente\n` +); + +/** Arquivo TypeScript cujo conteúdo migrado é idêntico ao original (no-op). */ +const noChangeTsArb: fc.Arbitrary = fc + .array(safeTsPartArb, { minLength: 0, maxLength: 6 }) + .map(parts => parts.join('')); + +/** Especificação de um arquivo gerado: tipo (html/ts) e conteúdo. */ +type FileSpecKind = 'html' | 'ts'; +interface FileSpec { + kind: FileSpecKind; + content: string; +} + +/** Gera a especificação de um arquivo no-change (html ou ts). */ +const fileSpecArb: fc.Arbitrary = fc.oneof( + noChangeHtmlArb.map(content => ({ kind: 'html' as const, content })), + noChangeTsArb.map(content => ({ kind: 'ts' as const, content })) +); + +describe('v22 gaugeMigrationRule — escrita condicional (property-based):', () => { + /** + * Propriedade 3 — Escrita condicional. + * + * Para qualquer conjunto de arquivos `.html`/`.ts` cujo conteúdo migrado é + * idêntico ao original (garantido pela pré-condição via transformações puras), + * após aplicar `gaugeMigrationRule()`: + * - nenhuma operação de escrita (`tree.overwrite`) ocorre para esses arquivos; + * - o conteúdo de cada arquivo permanece idêntico byte a byte ao original. + * + * **Validates: Requirements 2.8, 4.6, 7.3** + * **Valida: Requisitos 2.8, 4.6, 7.3** + */ + it('should not overwrite files whose migrated content equals the original (Prop 3, Req 2.8, 4.6, 7.3)', () => { + fc.assert( + fc.property(fc.array(fileSpecArb, { minLength: 1, maxLength: 5 }), specs => { + const files = specs.map((spec, index) => ({ + path: `/src/app/generated-${index}.${spec.kind === 'html' ? 'html' : 'ts'}`, + content: spec.content, + kind: spec.kind + })); + + // Pré-condição: cada arquivo é um caso genuíno de "sem mudança". + // (mesma condição sob a qual `scanDirectory` pula a escrita). + for (const file of files) { + const result = + file.kind === 'html' ? migrateHtmlContent(file.content) : migrateTypeScriptContent(file.content, true); + fc.pre(result.changed === false && result.content === file.content); + } + + const tree = buildTree(files); + const overwriteSpy = spyOn(tree, 'overwrite').and.callThrough(); + + runRule(tree); + + for (const file of files) { + // Invariante da escrita condicional: conteúdo idêntico byte a byte. + const after = tree.read(file.path); + expect(after).not.toBeNull(); + expect(after!.toString('utf-8')).toBe(file.content); + + // Nenhuma escrita ocorreu para este arquivo (Prop 3). + const overwroteThisFile = overwriteSpy.calls.allArgs().some(args => args[0] === file.path); + expect(overwroteThisFile).toBe(false); + } + }), + { numRuns: 100 } + ); + }); + + /** + * Exemplo determinístico (mesma invariante da Propriedade 3): um arquivo HTML + * sem `po-gauge` combinado com um arquivo já migrado (`po-chart`) e um arquivo + * TypeScript sem símbolos gauge não sofrem escrita e permanecem idênticos. + */ + it('should leave no-op html/ts files byte-for-byte identical and never call overwrite (Prop 3, Req 2.8, 4.6, 7.3)', () => { + const htmlNoGauge = '
    \n

    Sem gauge aqui

    \n
    \n'; + const htmlAlreadyMigrated = '\n'; + const tsNoGauge = + `import { Component } from '@angular/core';\n` + + `import { PoButtonModule } from '@po-ui/ng-components';\n\n` + + `@Component({ selector: 'app-x', imports: [PoButtonModule], template: '' })\n` + + `export class XComponent {}\n`; + + const files = [ + { path: '/src/app/no-gauge.html', content: htmlNoGauge }, + { path: '/src/app/already-migrated.html', content: htmlAlreadyMigrated }, + { path: '/src/app/no-gauge.component.ts', content: tsNoGauge } + ]; + + const tree = buildTree(files); + const overwriteSpy = spyOn(tree, 'overwrite').and.callThrough(); + + runRule(tree); + + for (const file of files) { + expect(tree.read(file.path)!.toString('utf-8')).toBe(file.content); + } + + expect(overwriteSpy).not.toHaveBeenCalled(); + }); +}); + +/** + * Testes de integração da `chain` do `migration-v22` (task 8.2). + * + * Abordagem escolhida: **nível de regra/chain com `SchematicTestRunner.callRule`** + * sobre um `Tree` em memória, em vez de `runner.runSchematic('migration-v22', ...)`. + * + * Justificativa: + * - O factory exportado por `./index` compõe a `chain` real (`updatePackageJson` + * → `gaugeMigrationRule` → `postUpdate`) e é a mesma `Rule` executada pelo + * Angular CLI durante `ng update`. Invocá-lo diretamente e rodá-lo com + * `runner.callRule(...)` exercita exatamente essa cadeia (ordem das regras, + * propagação de falha e agendamento de tarefas), sem depender de artefatos + * compilados/registro de collection resolvíveis em tempo de teste — que são + * frágeis quando o schematic é validado isoladamente. + * - `runner.tasks` reflete as tarefas agendadas via `context.addTask` durante a + * execução da `chain`, permitindo verificar o agendamento de exatamente um + * `NodePackageInstallTask` (nome de tarefa `node-package`). + * - O `Tree` em memória (mesmo `angular.json`/`main.ts` já usados nos testes de + * propriedade acima) permite montar um `package.json` com versão antiga e + * arquivos de projeto com `po-gauge`, verificando as transformações aplicadas. + */ +describe('v22 migration-v22 chain — integração (SchematicTestRunner.callRule):', () => { + /** Caminho do `migrations.json` (relativo ao diretório compilado deste spec). */ + const collectionPath = path.join(__dirname, '../../migrations.json'); + + /** Versão "antiga" do `@po-ui/ng-components` antes da migração de versões. */ + const OLD_PO_VERSION = '19.16.0'; + + /** `package.json` mínimo com a dependência do PO UI em versão antiga (Req 8.1). */ + const PACKAGE_JSON = { + name: 'consumer-app', + version: '0.0.0', + dependencies: { + '@angular/core': '^22.0.0', + '@po-ui/ng-components': OLD_PO_VERSION + }, + devDependencies: { + typescript: '~5.9.0' + } + }; + + /** Componente standalone com uso de `po-gauge` em TypeScript (Req 8.2). */ + const APP_COMPONENT_TS = [ + `import { Component } from '@angular/core';`, + `import { PoGaugeModule } from '@po-ui/ng-components';`, + ``, + `@Component({`, + ` selector: 'app-root',`, + ` standalone: true,`, + ` imports: [PoGaugeModule],`, + ` template: ''`, + `})`, + `export class AppComponent {}`, + `` + ].join('\n'); + + /** Template com uso de `` (Req 8.2). */ + const APP_COMPONENT_HTML = `\n`; + + /** Monta um `Tree` completo: workspace, main, package.json e arquivos do projeto. */ + function buildIntegrationTree(pkgJsonContent?: string): Tree { + const tree = Tree.empty(); + tree.create('/angular.json', JSON.stringify(ANGULAR_JSON, null, 2)); + tree.create('/src/main.ts', MAIN_TS); + tree.create('/package.json', pkgJsonContent ?? JSON.stringify(PACKAGE_JSON, null, 2)); + tree.create('/src/app/app.component.ts', APP_COMPONENT_TS); + tree.create('/src/app/app.component.html', APP_COMPONENT_HTML); + + return tree; + } + + /** Executa a `chain` real do factory sobre o `tree` e devolve o runner (para `tasks`). */ + async function runChain(tree: Tree): Promise { + const runner = new SchematicTestRunner('schematics', collectionPath); + await runner.runSchematic('migration-v22', {}, tree); + return runner; + } + + /** Conta as tarefas `NodePackageInstallTask` agendadas (nome `node-package`). */ + function countInstallTasks(runner: SchematicTestRunner): number { + return runner.tasks.filter(task => task.name === 'node-package').length; + } + + /** + * Ordem e efeitos da `chain` no caminho de sucesso (Req 8.1, 8.2, 8.3). + * + * Após executar a migração confirmada: + * - as versões de dependências do `package.json` são atualizadas (Req 8.1); + * - a transformação `po-gauge` → `po-chart` é aplicada em HTML e TS (Req 8.2); + * - exatamente um `NodePackageInstallTask` é agendado (Req 8.3). + * + * **Validates: Requirements 8.1, 8.2, 8.3** + */ + it('should update package.json versions, transform gauge usages and schedule exactly one install task (Req 8.1, 8.2, 8.3)', async () => { + const tree = buildIntegrationTree(); + + const runner = await runChain(tree); + + // Req 8.1 — versão da dependência do PO UI atualizada (deixou de ser a antiga). + const pkg = JSON.parse(tree.read('/package.json')!.toString('utf-8')); + expect(pkg.dependencies['@po-ui/ng-components']).toBeDefined(); + expect(pkg.dependencies['@po-ui/ng-components']).not.toBe(OLD_PO_VERSION); + + // Req 8.2 — transformação aplicada no template HTML. + const html = tree.read('/src/app/app.component.html')!.toString('utf-8'); + expect(html).toContain(' { + const tree = buildIntegrationTree(); + + const runner = await runChain(tree); + + const pkg = JSON.parse(tree.read('/package.json')!.toString('utf-8')); + const html = tree.read('/src/app/app.component.html')!.toString('utf-8'); + const ts = tree.read('/src/app/app.component.ts')!.toString('utf-8'); + + const versionsUpdated = pkg.dependencies['@po-ui/ng-components'] !== OLD_PO_VERSION; + const codeMigrated = html.includes(' { + const tree = buildIntegrationTree('{ this is not valid json'); + + const runner = new SchematicTestRunner('schematics', collectionPath); + + // A falha da regra propaga-se pela chain (runSchematic rejeita). + let rejected = false; + try { + await runner.runSchematic('migration-v22', {}, tree); + } catch { + rejected = true; + } + expect(rejected).toBe(true); + + // Req 8.4 — nenhuma tarefa de instalação foi agendada. + expect(countInstallTasks(runner)).toBe(0); + }); + + /** + * Pré-requisito de versão do Angular: quando o `package.json` do projeto + * declara um Angular anterior ao mínimo exigido (major < 22), a migração + * aborta de forma determinística — sem transformar arquivos, sem alterar + * versões e sem agendar tarefa de instalação. + * + * Substitui a antiga confirmação interativa (prompt via readline) por uma + * checagem baseada no `@angular/core` declarado no `package.json`. + */ + it('should abort without changes when the declared Angular is older than the required major', async () => { + const outdatedPackageJson = JSON.stringify( + { + name: 'consumer-app', + version: '0.0.0', + dependencies: { + '@angular/core': '^21.0.0', + '@po-ui/ng-components': OLD_PO_VERSION + }, + devDependencies: { typescript: '~5.9.0' } + }, + null, + 2 + ); + + const tree = buildIntegrationTree(outdatedPackageJson); + + const runner = await runChain(tree); + + // Nenhuma transformação: arquivos idênticos ao original. + expect(tree.read('/src/app/app.component.html')!.toString('utf-8')).toBe(APP_COMPONENT_HTML); + expect(tree.read('/src/app/app.component.ts')!.toString('utf-8')).toBe(APP_COMPONENT_TS); + + // package.json inalterado (versão antiga do PO UI preservada). + const pkg = JSON.parse(tree.read('/package.json')!.toString('utf-8')); + expect(pkg.dependencies['@po-ui/ng-components']).toBe(OLD_PO_VERSION); + + // Nenhuma tarefa de instalação agendada. + expect(countInstallTasks(runner)).toBe(0); + }); +}); + +/** + * Testes de integração de **idempotência multi-execução** (task 8.3). + * + * Verifica que o resultado da migração é um ponto fixo: a partir da segunda + * execução sobre o mesmo `Tree`, o conteúdo de todos os arquivos permanece + * idêntico byte a byte ao resultado da primeira execução e a migração reporta + * "nenhuma ocorrência" (Req. 9.4). + * + * Usa `fast-check` com `fc.integer({min: 2, max: 10})` para variar o número + * de re-execuções, exercitando a propriedade de ponto fixo para diferentes + * quantidades de iterações. + * + * **Validates: Requirements 7.1, 7.2, 9.4** + */ +describe('v22 migration-v22 chain — idempotência multi-execução (property-based):', () => { + const collectionPath = path.join(__dirname, '../../migrations.json'); + + const OLD_PO_VERSION = '19.16.0'; + + const PACKAGE_JSON = { + name: 'consumer-app', + version: '0.0.0', + dependencies: { + '@angular/core': '^22.0.0', + '@po-ui/ng-components': OLD_PO_VERSION + }, + devDependencies: { + typescript: '~5.9.0' + } + }; + + /** Componente standalone com uso de `po-gauge` em TypeScript. */ + const APP_COMPONENT_TS = [ + `import { Component } from '@angular/core';`, + `import { PoGaugeModule } from '@po-ui/ng-components';`, + ``, + `@Component({`, + ` selector: 'app-root',`, + ` standalone: true,`, + ` imports: [PoGaugeModule],`, + ` template: ''`, + `})`, + `export class AppComponent {}`, + `` + ].join('\n'); + + /** Template com uso de ``. */ + const APP_COMPONENT_HTML = `\n`; + + /** Monta um `Tree` completo com usos de `po-gauge`. */ + function buildIdempotencyTree(): Tree { + const tree = Tree.empty(); + tree.create('/angular.json', JSON.stringify(ANGULAR_JSON, null, 2)); + tree.create('/src/main.ts', MAIN_TS); + tree.create('/package.json', JSON.stringify(PACKAGE_JSON, null, 2)); + tree.create('/src/app/app.component.ts', APP_COMPONENT_TS); + tree.create('/src/app/app.component.html', APP_COMPONENT_HTML); + return tree; + } + + /** Executa a `chain` real do factory sobre o `tree`. */ + async function runMigration(tree: Tree): Promise { + const runner = new SchematicTestRunner('schematics', collectionPath); + await runner.runSchematic('migration-v22', {}, tree); + } + + /** Captura o conteúdo de todos os arquivos do `Tree` como mapa `path → content`. */ + function captureTreeContents(tree: Tree): Map { + const contents = new Map(); + tree.visit(filePath => { + const buffer = tree.read(filePath); + if (buffer) { + contents.set(filePath, buffer.toString('utf-8')); + } + }); + return contents; + } + + let originalIsTTY: boolean | undefined; + + beforeEach(() => { + originalIsTTY = process.stdin.isTTY; + (process.stdin as unknown as { isTTY?: boolean }).isTTY = false; + }); + + afterEach(() => { + (process.stdin as unknown as { isTTY?: boolean }).isTTY = originalIsTTY; + }); + + /** + * Propriedade: idempotência (ponto fixo) — multi-execução da chain completa. + * + * Dado um `Tree` com usos de `po-gauge`, após a primeira execução da migração + * o resultado é um ponto fixo: N execuções adicionais (2 ≤ N ≤ 10) produzem + * conteúdo idêntico byte a byte ao resultado da primeira execução. + * + * **Validates: Requirements 7.1, 7.2** + */ + it('should produce byte-for-byte identical content from the second execution onwards (Prop 1, Req 7.1, 7.2)', async () => { + await fc.assert( + fc.asyncProperty(fc.integer({ min: 2, max: 10 }), async (n: number) => { + const tree = buildIdempotencyTree(); + + // Primeira execução: transforma gauge → chart. + await runMigration(tree); + + // Captura o estado após a primeira execução (ponto fixo esperado). + const firstRunContents = captureTreeContents(tree); + + // Re-execuções adicionais (N vezes): conteúdo deve permanecer idêntico. + for (let i = 2; i <= n; i++) { + await runMigration(tree); + + const currentContents = captureTreeContents(tree); + + // Verificar que o conjunto de arquivos não mudou. + expect(currentContents.size).toBe(firstRunContents.size); + + // Verificar conteúdo idêntico byte a byte para cada arquivo. + for (const [filePath, expectedContent] of firstRunContents) { + const actualContent = currentContents.get(filePath); + expect(actualContent).toBe(expectedContent); + } + } + }), + { numRuns: 5 } + ); + }); + + /** + * Verificação do log "nenhuma ocorrência" em re-execuções (Req. 9.4). + * + * Após a primeira execução ter transformado todos os usos, execuções + * subsequentes devem detectar que não há mais `po-gauge` e registrar + * a mensagem "Nenhuma ocorrência do po-gauge foi encontrada no workspace". + * + * **Validates: Requirement 9.4** + */ + it('should log "nenhuma ocorrência" on subsequent executions when no gauge usages remain (Req 9.4)', async () => { + const tree = buildIdempotencyTree(); + + // Primeira execução: transforma gauge → chart. + await runMigration(tree); + + // Segunda execução capturando os logs do runner. + const runner = new SchematicTestRunner('schematics', collectionPath); + const infoMessages: string[] = []; + runner.logger.subscribe(entry => { + if (entry.level === 'info') { + infoMessages.push(entry.message); + } + }); + + await runner.runSchematic('migration-v22', {}, tree); + + // Req. 9.4 — a mensagem "nenhuma ocorrência" deve ter sido registrada. + const noOccurrenceMessage = infoMessages.find(msg => + msg.includes('Nenhuma ocorrência do po-gauge foi encontrada no workspace') + ); + expect(noOccurrenceMessage).toBeDefined(); + }); +}); + +/** + * Testes unitários de `getAngularMajor`. + * + * A função extrai o `major` do range declarado para `@angular/core` no + * `package.json`, priorizando `dependencies` sobre `devDependencies`, e devolve + * `null` em todos os cenários que impedem inferir o major com segurança + * (arquivo ausente, JSON inválido, dependência ausente ou range sem número). + */ +describe('v22 getAngularMajor:', () => { + /** Monta um `Tree` com um `package.json` de conteúdo arbitrário. */ + function treeWithPackageJson(content: string): Tree { + const tree = Tree.empty(); + tree.create('/package.json', content); + return tree; + } + + it('should extract the major from a caret range in dependencies', () => { + const tree = treeWithPackageJson(JSON.stringify({ dependencies: { '@angular/core': '^22.1.3' } })); + expect(getAngularMajor(tree)).toBe(22); + }); + + it('should extract the major from a tilde range', () => { + const tree = treeWithPackageJson(JSON.stringify({ dependencies: { '@angular/core': '~21.0.0' } })); + expect(getAngularMajor(tree)).toBe(21); + }); + + it('should extract the major from an exact version', () => { + const tree = treeWithPackageJson(JSON.stringify({ dependencies: { '@angular/core': '20.2.0' } })); + expect(getAngularMajor(tree)).toBe(20); + }); + + it('should fall back to devDependencies when not present in dependencies', () => { + const tree = treeWithPackageJson(JSON.stringify({ devDependencies: { '@angular/core': '^22.0.0' } })); + expect(getAngularMajor(tree)).toBe(22); + }); + + it('should return null when package.json does not exist', () => { + expect(getAngularMajor(Tree.empty())).toBeNull(); + }); + + it('should return null when the JSON is invalid', () => { + const tree = treeWithPackageJson('{ not valid json'); + expect(getAngularMajor(tree)).toBeNull(); + }); + + it('should return null when @angular/core is not declared', () => { + const tree = treeWithPackageJson(JSON.stringify({ dependencies: { '@po-ui/ng-components': '^22.0.0' } })); + expect(getAngularMajor(tree)).toBeNull(); + }); + + it('should return null when the range has no inferable major (e.g. "latest")', () => { + const tree = treeWithPackageJson(JSON.stringify({ dependencies: { '@angular/core': 'latest' } })); + expect(getAngularMajor(tree)).toBeNull(); + }); +}); diff --git a/projects/ui/schematics/ng-update/v22/index.ts b/projects/ui/schematics/ng-update/v22/index.ts index 882d1f5f2b..d47a92a4da 100644 --- a/projects/ui/schematics/ng-update/v22/index.ts +++ b/projects/ui/schematics/ng-update/v22/index.ts @@ -1,58 +1,324 @@ import { chain, Rule, SchematicContext, Tree } from '@angular-devkit/schematics'; import { NodePackageInstallTask } from '@angular-devkit/schematics/tasks'; +import { logging } from '@angular-devkit/core'; + import { updatePackageJson } from '@po-ui/ng-schematics/package-config'; +import { + getProjectFromWorkspace, + getProjectMainFile, + getWorkspaceConfigGracefully +} from '@po-ui/ng-schematics/project'; + +import { isStandaloneApp } from '@schematics/angular/utility/ng-ast-utils'; +import { WorkspaceSchema } from '@schematics/angular/utility/workspace-models'; import { updateDepedenciesVersion } from './changes'; +import { migrateHtmlContent } from './gauge-html-migration'; +import { migrateTypeScriptContent } from './gauge-ts-migration'; +import { createMigrationReport, MigrationReport, MigrationWarning, printMigrationSummary } from './migration-report'; -import * as readline from 'readline'; +/** Versão mínima do Angular exigida pela v22 do `@po-ui/ng-components`. */ +const MINIMUM_ANGULAR_MAJOR = 22; -function askQuestion(query: string): Promise { - const rl = readline.createInterface({ - input: process.stdin, - output: process.stdout - }); +/** + * Extrai o `major` declarado para o `@angular/core` no `package.json` do + * `Projeto_Consumidor`. + * + * Retorna `null` quando o `package.json` não existe, não é um JSON válido, a + * dependência não está declarada ou o range não permite inferir um `major` + * (por exemplo `*`, `latest` ou um caminho `file:`). Nesses casos a migração + * prossegue, para não bloquear cenários legítimos como monorepos que resolvem + * o Angular por outro meio. + */ +export function getAngularMajor(tree: Tree): number | null { + const buffer = tree.read('package.json'); + + if (!buffer) { + return null; + } + + try { + const json = JSON.parse(buffer.toString('utf-8')); + const range: string | undefined = json?.dependencies?.['@angular/core'] ?? json?.devDependencies?.['@angular/core']; + + if (!range) { + return null; + } + + const match = /(\d+)\./.exec(range); + + return match ? Number(match[1]) : null; + } catch { + return null; + } +} + +/** + * Ponto de entrada da `migration-v22`. + * + * Não realiza perguntas interativas: `readline` dentro do `ng update` provoca + * deadlock quando o `stdin` é um TTY. Em vez de perguntar, a checagem do + * pré-requisito do Angular é feita de forma determinística a partir do + * `package.json` do `Projeto_Consumidor`. + */ +export default function (): Rule { + return (tree: Tree, context: SchematicContext) => { + const logger = context.logger; + const angularMajor = getAngularMajor(tree); + + if (angularMajor !== null && angularMajor < MINIMUM_ANGULAR_MAJOR) { + logger.error( + `A v22 do @po-ui/ng-components exige o Angular ${MINIMUM_ANGULAR_MAJOR}, mas o projeto declara ` + + `o Angular ${angularMajor}. Nenhum arquivo foi alterado.\n` + + `Atualize o Angular primeiro:\n` + + ` ng update @angular/core@${MINIMUM_ANGULAR_MAJOR} @angular/cli@${MINIMUM_ANGULAR_MAJOR}\n` + + `Consulte o guia oficial: https://angular.dev/update-guide` + ); + + return tree; + } + + return chain([ + updatePackageJson('0.0.0-PLACEHOLDER', updateDepedenciesVersion), // Req 8.1 + gaugeMigrationRule(), // Req 8.2 (após versões, antes da instalação) + postUpdate() // Req 8.3 (NodePackageInstallTask) + ]); + }; +} + +/** + * Regra adicionada à `chain` do `migration-v22` responsável por localizar e + * transformar os usos do componente removido `po-gauge` para `po-chart` com + * `p-type="gauge"`. + * + * Comportamento (Req. 1.1, 1.2, 1.3, 1.4): + * - Obtém a configuração do workspace via `getWorkspaceConfigGracefully`. + * - Se a configuração não pôde ser obtida, registra erro e encerra sem alterar + * nenhum arquivo. + * - Se não há nenhum projeto definido, registra aviso e encerra sem alterar + * nenhum arquivo. + * - Caso contrário, itera por todos os `Projeto_Consumidor`, delegando a + * migração de cada projeto para `migrateProject`, e ao final apresenta o + * `Resumo_Migracao` (Req. 6.4, 9.1). + * + * Observação: a composição desta regra na `chain` é realizada na task 8.1. + */ +export function gaugeMigrationRule(): Rule { + return (tree: Tree, context: SchematicContext) => { + const logger = context.logger; + const workspace = getWorkspaceConfigGracefully(tree); + + if (!workspace) { + // Req. 1.2 — falha ao obter a configuração do workspace + logger.error('Não foi possível obter a configuração do workspace. Nenhum arquivo foi alterado.'); + return tree; + } + + const projectNames = Object.keys(workspace.projects ?? {}); + + if (projectNames.length === 0) { + // Req. 1.3 — nenhum projeto definido no workspace + logger.info('Nenhum projeto encontrado no workspace. Nenhum arquivo foi alterado.'); + return tree; + } + + const report = createMigrationReport(); + + // Req. 1.4 — itera por todos os projetos do workspace + for (const projectName of projectNames) { + migrateProject(tree, workspace, projectName, report, logger); + } + + // Req. 6.4 / 9.1 — apresenta o Resumo_Migracao ao final da execução + printMigrationSummary(report, logger); - return new Promise(resolve => - rl.question(query, (answer: string) => { - rl.close(); - resolve(answer); - }) - ); + return tree; + }; } -async function main(): Promise { - const message = - '\n⚠️ Antes de atualizar o PO UI para a versão 22, é necessário que o Angular do seu projeto ' + - 'já esteja na versão 22.\n' + - 'Siga o guia oficial de atualização do Angular: https://angular.dev/update-guide\n\n' + - 'Você já executou "ng update @angular/core@22 @angular/cli@22" e as migrações necessárias do Angular 22? (yes/no) '; +/** + * Contexto de um `Projeto_Consumidor` propagado para a varredura de arquivos. + * Reúne os dados de projeto já resolvidos (tipo, diretório-fonte e arquitetura) + * para que `scanDirectory` e as transformações não precisem recalculá-los. + */ +interface ProjectContext { + /** Nome do projeto no workspace. */ + projectName: string; + /** Tipo do projeto conforme o `angular.json`. */ + projectType: 'application' | 'library'; + /** Diretório-fonte base: `${sourceRoot}/${app|lib}`. */ + sourceDir: string; + /** `true` quando o projeto é uma aplicação standalone. */ + isStandalone: boolean; +} - let answer = 'yes'; +/** + * Migração por projeto (`Projeto_Consumidor`). + * + * Comportamento (Req. 1.6, 1.7, 1.8, 5.4, 5.5, 5.6): + * - Resolve a pasta de entrada (`lib` para `library`, `app` para `application`) + * e monta `sourceDir = ${sourceRoot}/${entryFolder}`, seguindo o mesmo padrão + * de `v20`/`v21`. + * - Se o diretório-fonte não existe ou está vazio, registra aviso identificando + * o projeto e prossegue para o próximo, sem encerrar a execução (Req. 1.6). + * - Resolve o `mainFile` via `getProjectMainFile` e determina a arquitetura com + * `isStandaloneApp` (Req. 5.4). Se o `mainFile` não pode ser localizado/lido, + * interrompe a migração deste projeto com erro (Req. 5.5). Se a arquitetura + * não pode ser determinada, idem, com mensagem específica (Req. 5.6). Em + * ambos os casos os arquivos do projeto permanecem inalterados. + * - Dispara a varredura recursiva (`scanDirectory`). + */ +function migrateProject( + tree: Tree, + workspace: WorkspaceSchema, + projectName: string, + report: MigrationReport, + logger: logging.LoggerApi +): void { + const project = getProjectFromWorkspace(workspace, projectName); - if (process.stdin.isTTY) { - answer = await askQuestion(message); - } else { - console.log(message); - console.log('Execução em modo não-interativo detectada. Assumindo "yes" como padrão.\n'); + if (!project) { + return; } - const confirmed = ['yes', 'y', 'sim', 's', ''].includes(answer.trim().toLowerCase()); + // Req. 1.7 / 1.8 — pasta de entrada conforme o tipo do projeto. + const projectType: 'application' | 'library' = project.projectType === 'library' ? 'library' : 'application'; + const entryFolder = projectType === 'library' ? 'lib' : 'app'; + const sourceDir = `${project.sourceRoot}/${entryFolder}`; - if (!confirmed) { - console.log( - '\n❌ Atualização cancelada. Execute primeiro as migrações do Angular 22:\n' + - ' ng update @angular/core@22 @angular/cli@22\n' + - ' Consulte: https://angular.dev/update-guide\n' + // Req. 1.6 — diretório-fonte inexistente ou vazio: avisa e segue adiante. + const directory = tree.getDir(sourceDir); + if (directory.subfiles.length === 0 && directory.subdirs.length === 0) { + logger.warn( + `[po-gauge] Projeto "${projectName}": o diretório-fonte "${sourceDir}" não existe ou está vazio. ` + + `Nenhum arquivo foi alterado neste projeto.` ); - return chain([]); + return; } - return chain([updatePackageJson('0.0.0-PLACEHOLDER', updateDepedenciesVersion), postUpdate()]); + // Req. 5.4 / 5.5 — localizar o arquivo de entrada principal (main). + let mainFile: string; + try { + mainFile = getProjectMainFile(project); + } catch (error) { + logger.error( + `[po-gauge] Projeto "${projectName}": não foi possível localizar o arquivo de entrada principal ` + + `(main) a partir do angular.json. Nenhum arquivo foi alterado neste projeto. ` + + `Detalhe: ${(error as Error)?.message ?? error}` + ); + return; + } + + if (!mainFile || !tree.exists(mainFile)) { + logger.error( + `[po-gauge] Projeto "${projectName}": o arquivo de entrada principal (main) não foi encontrado ou ` + + `não pôde ser lido. Nenhum arquivo foi alterado neste projeto.` + ); + return; + } + + // Req. 5.4 / 5.6 — determinar a arquitetura (NgModule x standalone). + let isStandalone: boolean; + try { + isStandalone = isStandaloneApp(tree, mainFile); + } catch (error) { + logger.error( + `[po-gauge] Projeto "${projectName}": não foi possível determinar a arquitetura do projeto ` + + `(NgModule ou standalone) a partir de "${mainFile}". Nenhum arquivo foi alterado neste projeto. ` + + `Detalhe: ${(error as Error)?.message ?? error}` + ); + return; + } + + const ctx: ProjectContext = { + projectName, + projectType, + sourceDir, + isStandalone + }; + + // Dispara a varredura recursiva dos arquivos `.html`/`.ts` do projeto. + scanDirectory(tree, sourceDir, ctx, report, logger); } -export default function (): Rule { - return (_tree: Tree, _context: SchematicContext) => main(); +/** + * Varredura recursiva do diretório-fonte de um `Projeto_Consumidor`. + * + * Comportamento (Req. 1.4, 1.5, 2.8, 4.6, 7.3, 7.5, 9.1): + * - Percorre recursivamente todos os subdiretórios sem limite de profundidade, + * reaproveitando o padrão de `v20`/`v21` (`tree.getDir(...)` com + * `subfiles`/`subdirs`) (Req. 1.4). + * - Processa apenas arquivos com extensão `.html` ou `.ts` (comparação + * case-insensitive); demais arquivos são ignorados sem alteração (Req. 1.5). + * - Para cada arquivo processado incrementa `report.filesScanned`, lê o + * conteúdo via `tree.read` e delega às transformações puras + * (`migrateHtmlContent` para `.html`, `migrateTypeScriptContent` para `.ts`). + * - Preenche o campo `filePath` das advertências com o caminho relativo do + * arquivo (as funções puras o deixam vazio) e as acumula em `report.warnings` + * (Req. 9.1). + * - Escreve com `tree.overwrite` somente quando o conteúdo transformado difere + * do original (Req. 2.8, 4.6, 7.3), incrementando `report.filesChanged`. + * - Em caso de exceção na escrita, preserva o arquivo original (sem aplicar + * alterações parciais) e registra erro identificando o arquivo, sem + * incrementar `report.filesChanged` (Req. 7.5). + */ +function scanDirectory( + tree: Tree, + dirPath: string, + ctx: ProjectContext, + report: MigrationReport, + logger: logging.LoggerApi +): void { + const directory = tree.getDir(dirPath); + + // Req. 1.5 — processa apenas arquivos `.html`/`.ts` (case-insensitive). + directory.subfiles.forEach((file: string) => { + const lowerName = file.toLowerCase(); + const isHtml = lowerName.endsWith('.html'); + const isTs = lowerName.endsWith('.ts'); + + if (!isHtml && !isTs) { + return; + } + + const filePath = `${directory.path}/${file}`; + const buffer = tree.read(filePath); + if (!buffer) { + return; + } + + const original = buffer.toString('utf-8'); + + // Req. 9.1 — contabiliza cada arquivo `.html`/`.ts` analisado. + report.filesScanned++; + + const result = isHtml ? migrateHtmlContent(original) : migrateTypeScriptContent(original, ctx.isStandalone); + + // Preenche o `filePath` (deixado vazio pelas funções puras) e acumula. + result.warnings.forEach((warning: MigrationWarning) => { + report.warnings.push({ ...warning, filePath }); + }); + + // Req. 2.8 / 4.6 / 7.3 — escreve somente quando o conteúdo efetivamente mudou. + if (result.content !== original) { + try { + tree.overwrite(filePath, result.content); + report.filesChanged++; + } catch (error) { + // Req. 7.5 — falha na escrita: preserva o original e registra o erro. + logger.error( + `[po-gauge] Falha ao gravar o arquivo "${filePath}". O conteúdo original foi preservado ` + + `(nenhuma alteração parcial foi aplicada). Detalhe: ${(error as Error)?.message ?? error}` + ); + } + } + }); + + // Req. 1.4 — varredura recursiva dos subdiretórios, sem limite de profundidade. + directory.subdirs.forEach((subdir: string) => { + scanDirectory(tree, `${directory.path}/${subdir}`, ctx, report, logger); + }); } function postUpdate() { diff --git a/projects/ui/schematics/ng-update/v22/migration-report.spec.ts b/projects/ui/schematics/ng-update/v22/migration-report.spec.ts new file mode 100644 index 0000000000..ec44d6dcc1 --- /dev/null +++ b/projects/ui/schematics/ng-update/v22/migration-report.spec.ts @@ -0,0 +1,152 @@ +import { logging } from '@angular-devkit/core'; + +import { createMigrationReport, MigrationReport, printMigrationSummary } from './migration-report'; + +describe('v22 migration-report:', () => { + let logger: jasmine.SpyObj; + + beforeEach(() => { + logger = jasmine.createSpyObj('LoggerApi', ['info', 'warn', 'error', 'debug', 'fatal']); + }); + + describe('createMigrationReport:', () => { + it('should return a report with zeroed counters and an empty warnings list', () => { + const report = createMigrationReport(); + + expect(report.filesScanned).toBe(0); + expect(report.filesChanged).toBe(0); + expect(report.warnings).toEqual([]); + }); + + it('should return a new (independent) instance on each call', () => { + const first = createMigrationReport(); + const second = createMigrationReport(); + + expect(first).not.toBe(second); + expect(first.warnings).not.toBe(second.warnings); + }); + }); + + describe('printMigrationSummary:', () => { + it('should always log an info message with the total scanned/changed files (Req 9.1)', () => { + const report: MigrationReport = { + filesScanned: 5, + filesChanged: 2, + warnings: [] + }; + + printMigrationSummary(report, logger); + + expect(logger.info).toHaveBeenCalledWith( + 'Resumo da migração po-gauge → po-chart: 5 arquivo(s) analisado(s), 2 arquivo(s) alterado(s).' + ); + }); + + describe('when there are Casos_Nao_Migravel (warnings present) (Req 9.2, 6.5):', () => { + const report: MigrationReport = { + filesScanned: 3, + filesChanged: 1, + warnings: [ + { filePath: 'src/app/a.html', line: 10, reason: 'trecho malformado' }, + { filePath: 'src/app/b.ts', line: 4, reason: 'símbolo sem equivalente' } + ] + }; + + it('should log the info totals', () => { + printMigrationSummary(report, logger); + + expect(logger.info).toHaveBeenCalledWith( + 'Resumo da migração po-gauge → po-chart: 3 arquivo(s) analisado(s), 1 arquivo(s) alterado(s).' + ); + }); + + it('should log a warn header with the number of occurrences requiring manual review', () => { + printMigrationSummary(report, logger); + + expect(logger.warn).toHaveBeenCalledWith( + '2 ocorrência(s) exigem revisão manual (não foram migradas automaticamente):' + ); + }); + + it('should log a warn line for each warning with file/line/reason', () => { + printMigrationSummary(report, logger); + + expect(logger.warn).toHaveBeenCalledWith(' - src/app/a.html:10 — trecho malformado'); + expect(logger.warn).toHaveBeenCalledWith(' - src/app/b.ts:4 — símbolo sem equivalente'); + }); + + it('should not log the success message when warnings are present (Req 9.3)', () => { + printMigrationSummary(report, logger); + + expect(logger.info).not.toHaveBeenCalledWith( + 'Todas as ocorrências encontradas do po-gauge foram migradas com sucesso para po-chart.' + ); + }); + + it('should not throw even when Casos_Nao_Migravel exist (Req 6.5)', () => { + expect(() => printMigrationSummary(report, logger)).not.toThrow(); + expect(logger.error).not.toHaveBeenCalled(); + }); + }); + + describe('when there are no warnings but migration occurred (filesChanged > 0) (Req 9.3):', () => { + const report: MigrationReport = { + filesScanned: 4, + filesChanged: 4, + warnings: [] + }; + + it('should log the success info message', () => { + printMigrationSummary(report, logger); + + expect(logger.info).toHaveBeenCalledWith( + 'Todas as ocorrências encontradas do po-gauge foram migradas com sucesso para po-chart.' + ); + }); + + it('should not log any warn message', () => { + printMigrationSummary(report, logger); + + expect(logger.warn).not.toHaveBeenCalled(); + }); + + it('should not log the "nenhuma ocorrência" message (Req 9.4)', () => { + printMigrationSummary(report, logger); + + expect(logger.info).not.toHaveBeenCalledWith( + 'Nenhuma ocorrência do po-gauge foi encontrada no workspace. Nenhum arquivo foi alterado.' + ); + }); + }); + + describe('when no occurrence was found (filesChanged === 0, no warnings) (Req 9.4):', () => { + const report: MigrationReport = { + filesScanned: 7, + filesChanged: 0, + warnings: [] + }; + + it('should log the "nenhuma ocorrência" info message', () => { + printMigrationSummary(report, logger); + + expect(logger.info).toHaveBeenCalledWith( + 'Nenhuma ocorrência do po-gauge foi encontrada no workspace. Nenhum arquivo foi alterado.' + ); + }); + + it('should not log the success message (Req 9.3)', () => { + printMigrationSummary(report, logger); + + expect(logger.info).not.toHaveBeenCalledWith( + 'Todas as ocorrências encontradas do po-gauge foram migradas com sucesso para po-chart.' + ); + }); + + it('should not log any warn message', () => { + printMigrationSummary(report, logger); + + expect(logger.warn).not.toHaveBeenCalled(); + }); + }); + }); +}); diff --git a/projects/ui/schematics/ng-update/v22/migration-report.ts b/projects/ui/schematics/ng-update/v22/migration-report.ts new file mode 100644 index 0000000000..5df0bef811 --- /dev/null +++ b/projects/ui/schematics/ng-update/v22/migration-report.ts @@ -0,0 +1,84 @@ +import { logging } from '@angular-devkit/core'; + +/** + * Representa um Caso_Nao_Migravel identificado durante a execução da + * Schematic_Migracao. Guarda a localização e o motivo pelo qual o trecho não + * pôde ser migrado automaticamente, permitindo a revisão manual pelo + * desenvolvedor. + */ +export interface MigrationWarning { + /** Caminho do arquivo (relativo ao workspace) onde o caso foi encontrado. */ + filePath: string; + /** Número da linha inicial do trecho não migrado. */ + line: number; + /** Motivo pelo qual a transformação automática não foi aplicada. */ + reason: string; +} + +/** + * Relatório consolidado (Resumo_Migracao) acumulado ao longo da execução da + * Schematic_Migracao. Contém a quantidade de arquivos analisados e alterados, + * além da lista de Casos_Nao_Migravel encontrados. + */ +export interface MigrationReport { + /** Quantidade total de arquivos analisados durante a varredura. */ + filesScanned: number; + /** Quantidade total de arquivos efetivamente alterados. */ + filesChanged: number; + /** Lista de Casos_Nao_Migravel que exigem revisão manual. */ + warnings: Array; +} + +/** + * Cria um relatório de migração vazio, com as contagens zeradas e sem + * advertências. + */ +export function createMigrationReport(): MigrationReport { + return { + filesScanned: 0, + filesChanged: 0, + warnings: [] + }; +} + +/** + * Apresenta o Resumo_Migracao no logger da schematic ao final da execução. + * + * Comportamento: + * - Sempre registra, em nível informativo, o total de arquivos analisados e + * alterados (Req. 9.1). + * - Quando existem Casos_Nao_Migravel, registra em nível de alerta a lista de + * arquivos/linhas/motivos que exigem revisão manual, concluindo sem lançar + * erro (Req. 9.2, 6.5). + * - Quando não há Casos_Nao_Migravel mas houve migração, registra mensagem + * informativa de sucesso total (Req. 9.3). + * - Quando nenhuma ocorrência foi encontrada, registra mensagem informativa de + * "nenhuma ocorrência" (Req. 9.4). + */ +export function printMigrationSummary(report: MigrationReport, logger: logging.LoggerApi): void { + // Req. 9.1 — total de arquivos analisados e alterados + logger.info( + `Resumo da migração po-gauge → po-chart: ${report.filesScanned} arquivo(s) analisado(s), ` + + `${report.filesChanged} arquivo(s) alterado(s).` + ); + + if (report.warnings.length > 0) { + // Req. 9.2 / 6.5 — lista de casos não migráveis, concluindo sem lançar erro + logger.warn(`${report.warnings.length} ocorrência(s) exigem revisão manual (não foram migradas automaticamente):`); + + report.warnings.forEach(warning => { + logger.warn(` - ${warning.filePath}:${warning.line} — ${warning.reason}`); + }); + + return; + } + + if (report.filesChanged > 0) { + // Req. 9.3 — sucesso total (todas as ocorrências migradas) + logger.info('Todas as ocorrências encontradas do po-gauge foram migradas com sucesso para po-chart.'); + return; + } + + // Req. 9.4 — nenhuma ocorrência encontrada + logger.info('Nenhuma ocorrência do po-gauge foi encontrada no workspace. Nenhum arquivo foi alterado.'); +} diff --git a/projects/ui/schematics/package.json b/projects/ui/schematics/package.json new file mode 100644 index 0000000000..5bbefffbab --- /dev/null +++ b/projects/ui/schematics/package.json @@ -0,0 +1,3 @@ +{ + "type": "commonjs" +} diff --git a/projects/ui/src/lib/components/components.module.ts b/projects/ui/src/lib/components/components.module.ts index 959d7f92d4..3ca0e7c0a3 100644 --- a/projects/ui/src/lib/components/components.module.ts +++ b/projects/ui/src/lib/components/components.module.ts @@ -18,7 +18,6 @@ import { PoDynamicModule } from './po-dynamic/po-dynamic.module'; import { PoFieldModule } from './po-field/po-field.module'; import { PoFilterChipModule } from './po-filter-chip/po-filter-chip.module'; import { PoSwitchModule } from './po-field/po-switch/po-switch.module'; -import { PoGaugeModule } from './po-gauge/po-gauge.module'; import { PoGridModule } from './po-grid/po-grid.module'; import { PoIconModule } from './po-icon/po-icon.module'; import { PoImageModule } from './po-image/po-image.module'; @@ -72,7 +71,6 @@ const PO_MODULES = [ PoDynamicModule, PoFieldModule, PoFilterChipModule, - PoGaugeModule, PoGridModule, PoIconModule, PoInfoModule, diff --git a/projects/ui/src/lib/components/index.ts b/projects/ui/src/lib/components/index.ts index ca21a7e2c9..c52323578c 100644 --- a/projects/ui/src/lib/components/index.ts +++ b/projects/ui/src/lib/components/index.ts @@ -17,7 +17,6 @@ export * from './po-dropdown/index'; export * from './po-dynamic/index'; export * from './po-field/index'; export * from './po-filter-chip/index'; -export * from './po-gauge/index'; export * from './po-grid/index'; export * from './po-helper/index'; export * from './po-icon/index'; diff --git a/projects/ui/src/lib/components/po-gauge/index.ts b/projects/ui/src/lib/components/po-gauge/index.ts deleted file mode 100644 index 02822f2a51..0000000000 --- a/projects/ui/src/lib/components/po-gauge/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -export * from './interfaces/po-gauge-ranges.interface'; -export * from './interfaces/po-gauge-options.interface'; - -export * from './po-gauge.component'; - -export * from './po-gauge.module'; diff --git a/projects/ui/src/lib/components/po-gauge/interfaces/po-gauge-coordinates.interface.ts b/projects/ui/src/lib/components/po-gauge/interfaces/po-gauge-coordinates.interface.ts deleted file mode 100644 index 23c3752b95..0000000000 --- a/projects/ui/src/lib/components/po-gauge/interfaces/po-gauge-coordinates.interface.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * @docsPrivate - * - * @usedBy PoGaugeComponent - * - * @description - * - * Interface que define o objeto com as coordenadas do gauge. - */ -export interface PoGaugeCoordinates { - /** A cor do alcance. Aceita hexadecimais, string com nome da cor, RGB ou então uma das classes de cor do PO. */ - color?: string; - - /** Definição de coordenadas. */ - coordinates: string; - - /** O raio do circulo. Utilizado para posicionar o ponteiro no centro do gauge. */ - radius?: number; - - /** O grau de angulação do ponteiro. */ - pointerDegrees?: number; -} diff --git a/projects/ui/src/lib/components/po-gauge/interfaces/po-gauge-options.interface.ts b/projects/ui/src/lib/components/po-gauge/interfaces/po-gauge-options.interface.ts deleted file mode 100644 index e2f83ec809..0000000000 --- a/projects/ui/src/lib/components/po-gauge/interfaces/po-gauge-options.interface.ts +++ /dev/null @@ -1,75 +0,0 @@ -import { PoChartHeaderOptions } from '../../po-chart'; - -/** - * @usedBy PoGaugeComponent - * - * @description - * - * *Interface* para configurações dos elementos do gráfico. - */ -export interface PoGaugeOptions { - /** - * @optional - * - * @description - * - * Define a descrição do gráfico exibido acima do gráfico. - * - */ - descriptionChart?: string; - - /** - * @optional - * - * @description - * - * Define um objeto do tipo `PoChartHeaderOptions` para configurar a exibição de botões no cabeçalho do gráfico. - */ - header?: PoChartHeaderOptions; - - /** - * @optional - * - * @description - * - * Esconde a estilização do container em volta do gráfico. - * - * @default `true` - */ - showContainerGauge?: boolean; - - /** - * @optional - * - * @description - * - * Exibe os valores das propriedades `from` e `to` no gráfico do no texto da legenda entre parênteses. - * - * > Válido para gráfico do tipo `Gauge`. - * - */ - showFromToLegend?: boolean; - - /** - * @optional - * - * @description - * - * Define um subtítulo para o Gauge. Indicamos um subtítulo pequeno, com uma quantidade máxima de 32 caracteres na altura padrão. - * - */ - subtitleGauge?: string; - - /** - * @optional - * - * @description - * - * Define a exibição do ponteiro. - * - * > Válido para gráfico do tipo `Gauge`. - * - * @default `true` - */ - pointer?: boolean; -} diff --git a/projects/ui/src/lib/components/po-gauge/interfaces/po-gauge-ranges.interface.ts b/projects/ui/src/lib/components/po-gauge/interfaces/po-gauge-ranges.interface.ts deleted file mode 100644 index ca7f8f517c..0000000000 --- a/projects/ui/src/lib/components/po-gauge/interfaces/po-gauge-ranges.interface.ts +++ /dev/null @@ -1,47 +0,0 @@ -/** - * @usedBy PoGaugeComponent - * - * @description - * - * Interface que define os alcances das cores do gauge. - */ -export interface PoGaugeRanges { - /** Alcance inicial da cor. O valor padrão é 0. */ - from?: number; - - /** Alcance final da cor. O valor padrão é 100. */ - to?: number; - - /** - * @description - * - * O texto para a legenda do alcance. - * - * > Se desejar ocultar a legenda basta ignorar esta propriedade. - */ - label?: string; - - /** - * @description - * - * Determina a cor do alcance. As maneiras de customizar o *preset* padrão de cores são: - * - Hexadeximal, por exemplo `#c64840`; - * - RGB, como `rgb(0, 0, 165)` - * - O nome da cor, por exemplo *blue*); - * - Usando uma das cores do tema do PO: - * Valores válidos: - * - `color-01` - * - `color-02` - * - `color-03` - * - `color-04` - * - `color-05` - * - `color-06` - * - `color-07` - * - `color-08` - * - `color-09` - * - `color-10` - * - `color-11` - * - `color-12` - */ - color?: string; -} diff --git a/projects/ui/src/lib/components/po-gauge/interfaces/po-gauge-svg-container.interface.ts b/projects/ui/src/lib/components/po-gauge/interfaces/po-gauge-svg-container.interface.ts deleted file mode 100644 index 2b6c9f69f2..0000000000 --- a/projects/ui/src/lib/components/po-gauge/interfaces/po-gauge-svg-container.interface.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * @docsPrivate - * - * @usedBy PoGaugeComponent - * - * @description - * - * Interface que implementa as dimensões do container do SVG. - */ -export interface PoGaugeSvgContainer { - /** Altura do container. */ - height?: number; - - /** Largura do container. */ - width: number; -} diff --git a/projects/ui/src/lib/components/po-gauge/po-gauge-base.component.spec.ts b/projects/ui/src/lib/components/po-gauge/po-gauge-base.component.spec.ts deleted file mode 100644 index 3ae55196c3..0000000000 --- a/projects/ui/src/lib/components/po-gauge/po-gauge-base.component.spec.ts +++ /dev/null @@ -1,102 +0,0 @@ -import { Component, ChangeDetectionStrategy } from '@angular/core'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { PoGaugeBaseComponent } from './po-gauge-base.component'; -import { poGaugeMinHeight } from './po-gauge-default-values.constant'; -import { PoGaugeRanges } from './interfaces/po-gauge-ranges.interface'; - -@Component({ selector: 'po-gauge-base-test', template: '', changeDetection: ChangeDetectionStrategy.Eager, - standalone: false }) -class TestComponent extends PoGaugeBaseComponent {} - -describe('PoGaugeBaseComponent', () => { - let component: TestComponent; - let fixture: ComponentFixture; - - beforeEach(() => { - TestBed.configureTestingModule({ - declarations: [TestComponent] - }); - - fixture = TestBed.createComponent(TestComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create the component', () => { - expect(component).toBeTruthy(); - }); - - describe('Properties:', () => { - it('should set and get description', () => { - component.description = 'Descriptive text'; - expect(component.description).toBe('Descriptive text'); - }); - - it('should return default height as poGaugeMinHeight', () => { - expect(component.height).toBe(poGaugeMinHeight); - }); - - it('should set height greater than poGaugeMinHeight', () => { - component.height = 500; - expect(component.height).toBe(500); - }); - - it('should fallback to poGaugeMinHeight if height is invalid or less than minimum', () => { - component.height = 100; - expect(component.height).toBe(poGaugeMinHeight); - - component.height = undefined; - expect(component.height).toBe(poGaugeMinHeight); - - component.height = null; - expect(component.height).toBe(poGaugeMinHeight); - }); - - it('should set ranges when it is an array', () => { - const ranges: Array = [{ from: 0, to: 50, color: 'red' }]; - component.ranges = ranges; - expect(component.ranges).toEqual(ranges); - }); - - it('should fallback ranges to empty array if input is not array', () => { - component.ranges = null; - expect(component.ranges).toEqual([]); - - component.ranges = 'invalid'; - expect(component.ranges).toEqual([]); - }); - - it('should set and get title', () => { - component.title = 'My Gauge'; - expect(component.title).toBe('My Gauge'); - }); - - it('should set value when it is a valid number', () => { - component.value = 75; - expect(component.value).toBe(75); - }); - - it('should convert string number to number in value', () => { - component.value = '123'; - expect(component.value).toBe(123); - }); - - it('should set value to undefined if invalid', () => { - component.value = ' '; - expect(component.value).toBeUndefined(); - - component.value = null; - expect(component.value).toBeUndefined(); - }); - - it('should have default values for showFromToLegend and showPointer', () => { - expect(component.showFromToLegend).toBeFalse(); - expect(component.showPointer).toBeTrue(); - }); - - it('should set value as undefined when gaugeValue is a non-numeric string', () => { - component.value = 'abc'; - expect(component.value).toBeUndefined(); - }); - }); -}); diff --git a/projects/ui/src/lib/components/po-gauge/po-gauge-base.component.ts b/projects/ui/src/lib/components/po-gauge/po-gauge-base.component.ts deleted file mode 100644 index c58044227d..0000000000 --- a/projects/ui/src/lib/components/po-gauge/po-gauge-base.component.ts +++ /dev/null @@ -1,184 +0,0 @@ -import { Directive, Input } from '@angular/core'; - -import { convertToInt } from '../../utils/util'; -import { poGaugeMinHeight } from './po-gauge-default-values.constant'; - -import { PoGaugeRanges } from './interfaces/po-gauge-ranges.interface'; -import { PoGaugeOptions } from './interfaces/po-gauge-options.interface'; - -/** - * @description - * - * > ESSE COMPONENTE ESTÁ DEPRECIADO E SERÁ REMOVIDO NA v22.x.x. Indicamos a utilização do `po-chart` com `type` Gauge. - * - * O componente `po-gauge` provê a representação de um valor através de um arco. É muito comum, por exemplo, para demonstrar o desempenho ou progresso de algo. - * O `po-gauge` possui dois tipos de tratamentos: - * - É possível demonstrar um dado percentual simples em conjunto com uma descrição resumida em seu interior; - * - Para um demonstrativo mais elaborado, consegue-se definir alcances em cores, um breve texto descritivo e um ponteiro indicando o valor desejado. - * - * #### Guia de uso para Gráficos - * - * > Veja nosso [guia de uso para gráficos](/guides/guide-charts) para auxiliar na construção do seu gráfico, - * informando em qual caso utilizar, o que devemos evitar e boas práticas relacionada a cores. - */ -@Directive() -export abstract class PoGaugeBaseComponent { - private _description: string; - private _height: number = poGaugeMinHeight; - private _ranges: Array = []; - private _title: string; - private _value: number; - - /** - * @optional - * - * @description - * - * Define a exibição dos valores de `from` - `to` entre parênteses caso haja definição de `p-ranges`. - * - * @default `false` - */ - @Input('p-show-from-to-legend') showFromToLegend: boolean = false; - - /** - * @optional - * - * @description - * - * Define a exibição do ponteiro caso haja definição de `p-ranges`. - * - * @default `true` - */ - @Input('p-show-pointer') showPointer: boolean = true; - - /** - * @optional - * - * @description - * - * Objeto com as configurações usadas no `po-gauge`. - * - * É possível, por exemplo, esconder as funcionalidades do header, - * ou habilitar uma legenda com `From` `To` da seguinte forma: - * - * ``` - * chartOptions: PoGaugeOptions = { - * showFromToLegend: true, - * header: { - * hideExpand: true, - * }, - * }; - * ``` - */ - @Input('p-options') options: PoGaugeOptions; - - /** - * @optional - * - * @description - * - * Define o texto que será exibido no gauge. - * Há dois posicionamentos para ele: - * - Se houver definição para `p-ranges`, o descritivo será exibido no topo do container, ficando acima do gauge; - * - Na ausência de `p-ranges`, será incorporado dentro do arco do gauge, e abaixo de `p-value`. - * - * > Para uma melhor experiência do usuário, é recomendado um descritivo breve e com poucas palavras. - * > Indicamos a utilização da nova propriedade `descriptionChart` em `p-options`. - */ - @Input('p-description') set description(value: string) { - this._description = value; - } - - get description() { - return this._description; - } - - /** - * @optional - * - * @description - * - * Define a altura do gauge. - * - * O valor mínimo aceito é 300px. - * - * @default `300px` - */ - @Input('p-height') set height(value: number) { - this._height = this.setGaugeHeight(value); - } - - get height(): number { - return this._height; - } - - /** - * @optional - * - * @description - * - * Definição para o alcance de cores. Ao adicionar pelo menos um item na lista, - * incorpora-se o ponteiro que assinala o valor passado em `p-value`. - * Se o valor de `p-value` for inferior ao mínimo valor definido em `PoGaugeRanges.from`, o domínio mínimo do gauge será `p-value`. - * A mesma regra prevalece para valores máximos. - */ - @Input('p-ranges') set ranges(value: Array) { - this._ranges = Array.isArray(value) ? value : []; - } - - get ranges(): Array { - return this._ranges; - } - - /** - * @optional - * - * @description - * - * Define o título do gauge. - */ - @Input('p-title') set title(value: string) { - this._title = value; - } - - get title() { - return this._title; - } - - /** - * @optional - * - * @description - * - * Valor referente ao valor da série. Seu comportamento segue a seguintes regras: - * - * - Sem `p-ranges`: Os valores passados para `p-value` e `p-description` serão centralizados no interior do arco. - * A base do valor será percentual tendo como base os alcances entre zero e 100%. Se passado um valor superior a 100, - * A colorização do gauge será completa e o valor passado será exibido no interior do arco. - * - Com `p-ranges`: A descrição será exibida acima do gauge e haverá um ponteiro marcando o valor passado em `p-value`. - * Considerando que o alcance em `ranges` é aberto, então a escala de `p-value` será em relação ao menor/maior alcance - * absoluto definido em `p-ranges`. - * Se passado um `p-value` inferior em relação ao mínimo valor definido em `p-ranges`, o domínio mínimo do gauge partirá de `p-value`. - * A mesma regra prevalece para valores máximos. - * - */ - @Input('p-value') set value(gaugeValue: number) { - if (typeof gaugeValue === 'number' || (typeof gaugeValue === 'string' && (gaugeValue).trim())) { - const value = !isNaN(gaugeValue) ? Number(gaugeValue) : undefined; - - this._value = value; - } else { - this._value = undefined; - } - } - - get value(): number { - return this._value; - } - - private setGaugeHeight(height: number): number { - const gaugeHeight = convertToInt(height); - - return gaugeHeight && gaugeHeight > poGaugeMinHeight ? gaugeHeight : poGaugeMinHeight; - } -} diff --git a/projects/ui/src/lib/components/po-gauge/po-gauge-default-values.constant.ts b/projects/ui/src/lib/components/po-gauge/po-gauge-default-values.constant.ts deleted file mode 100644 index 6a22d97001..0000000000 --- a/projects/ui/src/lib/components/po-gauge/po-gauge-default-values.constant.ts +++ /dev/null @@ -1,14 +0,0 @@ -// Padding existente nas bordas do componente -export const PoGaugePadding = 24; - -// Altura mínima aceita pelo po-gauge. -export const poGaugeMinHeight = 300; - -// Chamado de coroa circular, refere-se à área entre os círculos externos e internos e que define a espessura do gauge. -export const PoGaugeThickness = 16; - -// A medida referente ao quanto o ponteiro se sobressai em relação ao gráfico. É necessário esse desconto no viewBox para não haver overflow. -export const PoGaugePointerEnd = 4; - -// Base default para cálculo da angulação final. Para gauge simples, seria como se fosse 100%. -export const poGaugeTotalValueDefault = 100; diff --git a/projects/ui/src/lib/components/po-gauge/po-gauge.component.html b/projects/ui/src/lib/components/po-gauge/po-gauge.component.html deleted file mode 100644 index 2f244e5420..0000000000 --- a/projects/ui/src/lib/components/po-gauge/po-gauge.component.html +++ /dev/null @@ -1,8 +0,0 @@ - diff --git a/projects/ui/src/lib/components/po-gauge/po-gauge.component.spec.ts b/projects/ui/src/lib/components/po-gauge/po-gauge.component.spec.ts deleted file mode 100644 index 7c3abf1c10..0000000000 --- a/projects/ui/src/lib/components/po-gauge/po-gauge.component.spec.ts +++ /dev/null @@ -1,125 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { PoGaugeComponent } from './po-gauge.component'; -import { PoChartSerie } from '../po-chart'; - -describe('PoGaugeComponent', () => { - let component: PoGaugeComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [PoGaugeComponent] - }).compileComponents(); - - fixture = TestBed.createComponent(PoGaugeComponent); - component = fixture.componentInstance; - }); - - it('should create the component', () => { - expect(component).toBeTruthy(); - }); - - describe('ngOnInit', () => { - it('should set showContainerGauge by default', () => { - component.ngOnInit(); - - expect(component.options).toEqual({ showContainerGauge: true }); - }); - }); - - describe('ngOnChanges', () => { - it('should set options when description, showFromToLegend or showPointer change', () => { - component.description = 'Teste'; - component.options = { - showFromToLegend: true, - pointer: false - }; - - component.ngOnChanges({ - description: { currentValue: 'Teste', previousValue: '', firstChange: true, isFirstChange: () => true }, - options: { - currentValue: { showFromToLegend: true, pointer: false }, - previousValue: false, - firstChange: true, - isFirstChange: () => true - } - }); - - expect(component.options).toEqual({ - descriptionChart: 'Teste', - showFromToLegend: true, - pointer: false, - showContainerGauge: true - }); - }); - - it('should set options when descriptionChart, showContainerGauge change', () => { - component.options = { - showContainerGauge: false, - descriptionChart: 'Test' - }; - - component.ngOnChanges({ - options: { - currentValue: { showContainerGauge: false, descriptionChart: 'Test' }, - previousValue: false, - firstChange: true, - isFirstChange: () => true - } - }); - - expect(component.options).toEqual({ - descriptionChart: 'Test', - showContainerGauge: false - }); - }); - - it('should set series and valuesMultiple when ranges is defined and not empty', () => { - const mockRanges: Array = [{ label: 'Faixa', data: 75 }]; - - component.ranges = mockRanges; - component.value = 75; - - component.ngOnChanges({ - options: { - currentValue: {}, - previousValue: false, - firstChange: true, - isFirstChange: () => true - }, - ranges: { currentValue: mockRanges, previousValue: [], firstChange: true, isFirstChange: () => true }, - value: { currentValue: 75, previousValue: 50, firstChange: true, isFirstChange: () => true } - }); - - expect(component.options).toEqual({ - descriptionChart: undefined, - showContainerGauge: true - }); - expect(component.series).toEqual(mockRanges); - expect(component.valuesMultiple).toBe(75); - }); - - it('should set series with single value when only value is defined', () => { - component.ranges = []; - component.value = 60; - - component.ngOnChanges({ - value: { currentValue: 60, previousValue: null, firstChange: true, isFirstChange: () => true } - }); - - expect(component.series).toEqual([{ data: 60 }]); - }); - - it('should set series to empty when neither ranges nor value are defined', () => { - component.ranges = undefined; - component.value = undefined; - - component.ngOnChanges({ - ranges: { currentValue: undefined, previousValue: undefined, firstChange: true, isFirstChange: () => true }, - value: { currentValue: undefined, previousValue: undefined, firstChange: true, isFirstChange: () => true } - }); - - expect(component.series).toEqual([]); - }); - }); -}); diff --git a/projects/ui/src/lib/components/po-gauge/po-gauge.component.ts b/projects/ui/src/lib/components/po-gauge/po-gauge.component.ts deleted file mode 100644 index fa5e47872d..0000000000 --- a/projects/ui/src/lib/components/po-gauge/po-gauge.component.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { Component, OnChanges, OnInit, SimpleChanges, ChangeDetectionStrategy } from '@angular/core'; - -import { PoChartSerie } from '../po-chart'; -import { PoGaugeBaseComponent } from './po-gauge-base.component'; - -/** - * @docsExtends PoGaugeBaseComponent - * - * @example - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * @deprecated v22.x.x - * Utilize o `po-chart` com `type="gauge"` como alternativa recomendada. - */ -@Component({ - selector: 'po-gauge', - templateUrl: './po-gauge.component.html', - changeDetection: ChangeDetectionStrategy.Eager, - standalone: false -}) -export class PoGaugeComponent extends PoGaugeBaseComponent implements OnChanges, OnInit { - series: Array = []; - valuesMultiple: number; - - ngOnInit(): void { - if (this.options?.showContainerGauge !== false) { - this.options = { ...this.options, showContainerGauge: true }; - } - } - - ngOnChanges(changes: SimpleChanges): void { - const { description, ranges, value, options } = changes; - if (description || options) { - this.options = { - ...this.options, - showContainerGauge: this.options?.showContainerGauge !== false, - descriptionChart: this.description || options?.currentValue?.descriptionChart - }; - } - if (ranges || value) { - if (this.ranges?.length) { - this.series = [...this.ranges]; - this.valuesMultiple = this.value; - } else if (value?.currentValue) { - this.series = [{ data: this.value }]; - } else { - this.series = []; - } - } - } -} diff --git a/projects/ui/src/lib/components/po-gauge/po-gauge.module.ts b/projects/ui/src/lib/components/po-gauge/po-gauge.module.ts deleted file mode 100644 index 73764e3c53..0000000000 --- a/projects/ui/src/lib/components/po-gauge/po-gauge.module.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; - -import { PoGaugeComponent } from './po-gauge.component'; - -import { PoChartModule } from '../po-chart/po-chart.module'; - -/** - * @description - * Módulo do componente po-gauge. - */ -@NgModule({ - imports: [CommonModule, PoChartModule], - declarations: [PoGaugeComponent], - exports: [PoGaugeComponent] -}) -export class PoGaugeModule {} diff --git a/projects/ui/src/lib/components/po-gauge/samples/sample-po-gauge-basic/sample-po-gauge-basic.component.html b/projects/ui/src/lib/components/po-gauge/samples/sample-po-gauge-basic/sample-po-gauge-basic.component.html deleted file mode 100644 index afea39225c..0000000000 --- a/projects/ui/src/lib/components/po-gauge/samples/sample-po-gauge-basic/sample-po-gauge-basic.component.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/projects/ui/src/lib/components/po-gauge/samples/sample-po-gauge-basic/sample-po-gauge-basic.component.ts b/projects/ui/src/lib/components/po-gauge/samples/sample-po-gauge-basic/sample-po-gauge-basic.component.ts deleted file mode 100644 index cd5e6a1fdd..0000000000 --- a/projects/ui/src/lib/components/po-gauge/samples/sample-po-gauge-basic/sample-po-gauge-basic.component.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Component, ChangeDetectionStrategy } from '@angular/core'; - -@Component({ - selector: 'sample-po-gauge-basic', - templateUrl: './sample-po-gauge-basic.component.html', - changeDetection: ChangeDetectionStrategy.Eager, - standalone: false -}) -export class SamplePoGaugeBasicComponent {} diff --git a/projects/ui/src/lib/components/po-gauge/samples/sample-po-gauge-labs/sample-po-gauge-labs.component.html b/projects/ui/src/lib/components/po-gauge/samples/sample-po-gauge-labs/sample-po-gauge-labs.component.html deleted file mode 100644 index 54100dfd65..0000000000 --- a/projects/ui/src/lib/components/po-gauge/samples/sample-po-gauge-labs/sample-po-gauge-labs.component.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - -
    -
    - - - - - - -
    - - -
    - - - - - -
    -
    - - -
    -
    - -
    -
    - - -
    - - -
    diff --git a/projects/ui/src/lib/components/po-gauge/samples/sample-po-gauge-labs/sample-po-gauge-labs.component.ts b/projects/ui/src/lib/components/po-gauge/samples/sample-po-gauge-labs/sample-po-gauge-labs.component.ts deleted file mode 100644 index 7b255584a7..0000000000 --- a/projects/ui/src/lib/components/po-gauge/samples/sample-po-gauge-labs/sample-po-gauge-labs.component.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; - -import { PoCheckboxGroupOption, PoGaugeOptions, PoGaugeRanges } from '@po-ui/ng-components'; - -@Component({ - selector: 'sample-po-gauge-labs', - templateUrl: './sample-po-gauge-labs.component.html', - changeDetection: ChangeDetectionStrategy.Eager, - standalone: false -}) -export class SamplePoGaugeLabsComponent implements OnInit { - description: string; - subtitle: string; - gaugeValue: number; - height: number; - options: PoGaugeOptions; - optionsRanges: PoGaugeRanges = {}; - properties: Array; - ranges: Array = []; - title: string; - - public readonly propertiesOptions: Array = [ - { value: 'showFromToLegend', label: 'Show From To Legend' }, - { value: 'showPointer', label: 'Show Pointer' }, - { value: 'showContainerGauge', label: 'Show Container' }, - { value: 'hideExpand', label: 'Hide Expand' }, - { value: 'hideTableDetails', label: 'Hide Table Details' }, - { value: 'hideExportCsv', label: 'Hide Export Csv' }, - { value: 'hideExportImage', label: 'Hide Export Image' } - ]; - - get isEmptyObject() { - return Object.keys(this.optionsRanges).length === 0; - } - - ngOnInit() { - this.restore(); - } - - addRange() { - this.ranges = [...this.ranges, this.optionsRanges]; - this.optionsRanges = {}; - } - - restore() { - this.description = undefined; - this.gaugeValue = undefined; - this.height = undefined; - this.optionsRanges = {}; - this.ranges = []; - this.title = undefined; - this.properties = ['showPointer', 'showContainerGauge']; - this.changeOptions(); - } - - changeOptions() { - this.options = { - showFromToLegend: this.properties.includes('showFromToLegend'), - pointer: this.properties.includes('showPointer'), - showContainerGauge: this.properties.includes('showContainerGauge'), - subtitleGauge: this.subtitle, - header: { - hideExpand: this.properties.includes('hideExpand'), - hideTableDetails: this.properties.includes('hideTableDetails'), - hideExportCsv: this.properties.includes('hideExportCsv'), - hideExportImage: this.properties.includes('hideExportImage') - } - }; - } -} diff --git a/projects/ui/src/lib/components/po-gauge/samples/sample-po-gauge-summary/sample-po-gauge-summary.component.html b/projects/ui/src/lib/components/po-gauge/samples/sample-po-gauge-summary/sample-po-gauge-summary.component.html deleted file mode 100644 index b6806f5b65..0000000000 --- a/projects/ui/src/lib/components/po-gauge/samples/sample-po-gauge-summary/sample-po-gauge-summary.component.html +++ /dev/null @@ -1,23 +0,0 @@ - -
    Sales Performance
    -
    -
    - -
    -
    - -
    -
    -
    diff --git a/projects/ui/src/lib/components/po-gauge/samples/sample-po-gauge-summary/sample-po-gauge-summary.component.ts b/projects/ui/src/lib/components/po-gauge/samples/sample-po-gauge-summary/sample-po-gauge-summary.component.ts deleted file mode 100644 index 8b70a50e4e..0000000000 --- a/projects/ui/src/lib/components/po-gauge/samples/sample-po-gauge-summary/sample-po-gauge-summary.component.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { Component, ChangeDetectionStrategy } from '@angular/core'; - -import { PoGaugeRanges } from '@po-ui/ng-components'; - -@Component({ - selector: 'sample-po-gauge-summary', - templateUrl: './sample-po-gauge-summary.component.html', - changeDetection: ChangeDetectionStrategy.Eager, - standalone: false -}) -export class SamplePoGaugeSummaryComponent { - salesRanges: Array = [ - { from: 0, to: 50, label: 'Sales reduction', color: '#c64840' }, - { from: 50, to: 75, label: 'Average sales', color: '#ea9b3e' }, - { from: 75, to: 100, label: 'Sales soared', color: '#00b28e' } - ]; - - turnoverRanges: Array = [ - { from: 0, to: 50, label: 'Low rate', color: '#00b28e' }, - { from: 50, to: 75, label: 'Average rate', color: '#ea9b3e' }, - { from: 75, to: 100, label: 'High rate', color: '#c64840' } - ]; -} From d86728cd27f7639a22f19563634fbb9ca4b19a05 Mon Sep 17 00:00:00 2001 From: dominguespedro Date: Tue, 25 Aug 2026 18:47:52 +0000 Subject: [PATCH 3/8] =?UTF-8?q?refactor(schematics):=20remove=20ng=20gener?= =?UTF-8?q?ate=20de=20p=C3=A1ginas=20e=20templates?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Remove os schematics de ng generate para geração de páginas do PO UI, incluindo po-page-default, po-page-detail, po-page-edit, po-page-list e as páginas dinâmicas (detail, edit, search, table), além de po-page-login, po-page-blocked-user, po-page-change-password e po-page-job-scheduler. Remove também os templates, schemas e specs associados, as entradas correspondentes nos collection.json e as funções utilitárias que davam suporte apenas a esses geradores. Os demais schematics são mantidos, como o ng-add e o gerador sidemenu. Fixes DTHFUI-13230 BREAKING CHANGE: removidos os schematics de ng generate de páginas Os comandos "ng generate @po-ui/ng-templates:po-page-*" e "ng generate @po-ui/ng-components:po-page-*" para geração de páginas deixam de existir. A alternativa recomendada passa a ser o uso do MCP do PO UI para geração de páginas e componentes, conforme a documentação em https://po-ui.io/documentation/ia-tools-mcp. --- docs/guides/schematics.md | 119 --------- package.json | 2 +- projects/templates/schematics/collection.json | 40 --- ...e@dasherize__.component.__style__.template | 0 ...__name@dasherize__.component.html.template | 1 - ...ame@dasherize__.component.spec.ts.template | 34 --- .../__name@dasherize__.component.ts.template | 21 -- ...ame@dasherize__-routing.module.ts.template | 14 - ...e@dasherize__.component.__style__.template | 0 ...__name@dasherize__.component.html.template | 1 - ...ame@dasherize__.component.spec.ts.template | 35 --- .../__name@dasherize__.component.ts.template | 15 -- .../__name@dasherize__.module.ts.template | 19 -- .../po-page-blocked-user/index.spec.ts | 185 ------------- .../ng-generate/po-page-blocked-user/index.ts | 14 - .../po-page-blocked-user/schema.json | 67 ----- .../po-page-blocked-user/schema.ts | 3 - ...e@dasherize__.component.__style__.template | 0 ...__name@dasherize__.component.html.template | 1 - ...ame@dasherize__.component.spec.ts.template | 34 --- .../__name@dasherize__.component.ts.template | 21 -- ...ame@dasherize__-routing.module.ts.template | 14 - ...e@dasherize__.component.__style__.template | 0 ...__name@dasherize__.component.html.template | 1 - ...ame@dasherize__.component.spec.ts.template | 35 --- .../__name@dasherize__.component.ts.template | 15 -- .../__name@dasherize__.module.ts.template | 19 -- .../po-page-change-password/index.spec.ts | 184 ------------- .../po-page-change-password/index.ts | 14 - .../po-page-change-password/schema.json | 67 ----- .../po-page-change-password/schema.ts | 3 - ...e@dasherize__.component.__style__.template | 0 ...__name@dasherize__.component.html.template | 5 - ...ame@dasherize__.component.spec.ts.template | 34 --- .../__name@dasherize__.component.ts.template | 28 -- ...ame@dasherize__-routing.module.ts.template | 14 - ...e@dasherize__.component.__style__.template | 0 ...__name@dasherize__.component.html.template | 5 - ...ame@dasherize__.component.spec.ts.template | 35 --- .../__name@dasherize__.component.ts.template | 24 -- .../__name@dasherize__.module.ts.template | 19 -- .../po-page-dynamic-detail/index.spec.ts | 184 ------------- .../po-page-dynamic-detail/index.ts | 14 - .../po-page-dynamic-detail/schema.json | 67 ----- .../po-page-dynamic-detail/schema.ts | 3 - ...e@dasherize__.component.__style__.template | 0 ...__name@dasherize__.component.html.template | 5 - ...ame@dasherize__.component.spec.ts.template | 34 --- .../__name@dasherize__.component.ts.template | 30 --- ...ame@dasherize__-routing.module.ts.template | 14 - ...e@dasherize__.component.__style__.template | 0 ...__name@dasherize__.component.html.template | 5 - ...ame@dasherize__.component.spec.ts.template | 35 --- .../__name@dasherize__.component.ts.template | 24 -- .../__name@dasherize__.module.ts.template | 19 -- .../po-page-dynamic-edit/index.spec.ts | 184 ------------- .../ng-generate/po-page-dynamic-edit/index.ts | 14 - .../po-page-dynamic-edit/schema.json | 67 ----- .../po-page-dynamic-edit/schema.ts | 3 - ...e@dasherize__.component.__style__.template | 0 ...__name@dasherize__.component.html.template | 5 - ...ame@dasherize__.component.spec.ts.template | 34 --- .../__name@dasherize__.component.ts.template | 35 --- ...ame@dasherize__-routing.module.ts.template | 14 - ...e@dasherize__.component.__style__.template | 0 ...__name@dasherize__.component.html.template | 5 - ...ame@dasherize__.component.spec.ts.template | 35 --- .../__name@dasherize__.component.ts.template | 29 -- .../__name@dasherize__.module.ts.template | 19 -- .../po-page-dynamic-search/index.spec.ts | 184 ------------- .../po-page-dynamic-search/index.ts | 14 - .../po-page-dynamic-search/schema.json | 67 ----- .../po-page-dynamic-search/schema.ts | 3 - ...e@dasherize__.component.__style__.template | 0 ...__name@dasherize__.component.html.template | 5 - ...ame@dasherize__.component.spec.ts.template | 34 --- .../__name@dasherize__.component.ts.template | 27 -- ...ame@dasherize__-routing.module.ts.template | 14 - ...e@dasherize__.component.__style__.template | 0 ...__name@dasherize__.component.html.template | 5 - ...ame@dasherize__.component.spec.ts.template | 35 --- .../__name@dasherize__.component.ts.template | 22 -- .../__name@dasherize__.module.ts.template | 19 -- .../po-page-dynamic-table/index.spec.ts | 184 ------------- .../po-page-dynamic-table/index.ts | 14 - .../po-page-dynamic-table/schema.json | 67 ----- .../po-page-dynamic-table/schema.ts | 3 - ...e@dasherize__.component.__style__.template | 0 ...__name@dasherize__.component.html.template | 4 - ...ame@dasherize__.component.spec.ts.template | 34 --- .../__name@dasherize__.component.ts.template | 24 -- ...ame@dasherize__-routing.module.ts.template | 14 - ...e@dasherize__.component.__style__.template | 0 ...__name@dasherize__.component.html.template | 4 - ...ame@dasherize__.component.spec.ts.template | 35 --- .../__name@dasherize__.component.ts.template | 18 -- .../__name@dasherize__.module.ts.template | 19 -- .../po-page-job-scheduler/index.spec.ts | 184 ------------- .../po-page-job-scheduler/index.ts | 14 - .../po-page-job-scheduler/schema.json | 67 ----- .../po-page-job-scheduler/schema.ts | 3 - ...e@dasherize__.component.__style__.template | 0 ...__name@dasherize__.component.html.template | 1 - ...ame@dasherize__.component.spec.ts.template | 34 --- .../__name@dasherize__.component.ts.template | 22 -- ...ame@dasherize__-routing.module.ts.template | 14 - ...e@dasherize__.component.__style__.template | 0 ...__name@dasherize__.component.html.template | 1 - ...ame@dasherize__.component.spec.ts.template | 35 --- .../__name@dasherize__.component.ts.template | 15 -- .../__name@dasherize__.module.ts.template | 19 -- .../ng-generate/po-page-login/index.spec.ts | 180 ------------- .../ng-generate/po-page-login/index.ts | 14 - .../ng-generate/po-page-login/schema.json | 67 ----- .../ng-generate/po-page-login/schema.ts | 3 - .../po-page-dynamic-table.component.spec.ts | 2 +- .../po-page-dynamic-table.component.ts | 6 +- projects/templates/src/lib/utils/util.spec.ts | 58 +--- projects/templates/src/lib/utils/util.ts | 26 +- projects/ui/schematics/collection.json | 20 -- .../__componentFileName__.__style__.template | 0 .../__componentFileName__.html.template | 3 - .../__componentFileName__.spec.ts.template | 33 --- .../__componentFileName__.ts.template | 23 -- .../__componentFileName__.__style__.template | 0 .../__componentFileName__.html.template | 3 - .../__componentFileName__.spec.ts.template | 34 --- .../__componentFileName__.ts.template | 19 -- .../__moduleFileName__.ts.template | 19 -- .../__routingFileName__.ts.template | 14 - .../ng-generate/po-page-default/index.spec.ts | 249 ------------------ .../ng-generate/po-page-default/index.ts | 14 - .../ng-generate/po-page-default/schema.json | 72 ----- .../ng-generate/po-page-default/schema.ts | 3 - .../__componentFileName__.__style__.template | 0 .../__componentFileName__.html.template | 8 - .../__componentFileName__.spec.ts.template | 33 --- .../__componentFileName__.ts.template | 33 --- .../__componentFileName__.__style__.template | 0 .../__componentFileName__.html.template | 8 - .../__componentFileName__.spec.ts.template | 34 --- .../__componentFileName__.ts.template | 27 -- .../__moduleFileName__.ts.template | 19 -- .../__routingFileName__.ts.template | 14 - .../ng-generate/po-page-detail/index.spec.ts | 168 ------------ .../ng-generate/po-page-detail/index.ts | 12 - .../ng-generate/po-page-detail/schema.json | 72 ----- .../ng-generate/po-page-detail/schema.ts | 3 - .../__componentFileName__.__style__.template | 0 .../__componentFileName__.html.template | 8 - .../__componentFileName__.spec.ts.template | 33 --- .../__componentFileName__.ts.template | 33 --- .../__routingFileName__.ts.template | 14 - .../__componentFileName__.__style__.template | 0 .../__componentFileName__.html.template | 8 - .../__componentFileName__.spec.ts.template | 34 --- .../__componentFileName__.ts.template | 27 -- .../__moduleFileName__.ts.template | 19 -- .../__routingFileName__.ts.template | 14 - .../ng-generate/po-page-edit/index.spec.ts | 168 ------------ .../ng-generate/po-page-edit/index.ts | 12 - .../ng-generate/po-page-edit/schema.json | 72 ----- .../ng-generate/po-page-edit/schema.ts | 3 - .../__componentFileName__.__style__.template | 0 .../__componentFileName__.html.template | 28 -- .../__componentFileName__.spec.ts.template | 37 --- .../__componentFileName__.ts.template | 42 --- .../__routingFileName__.ts.template | 14 - .../__componentFileName__.__style__.template | 0 .../__componentFileName__.html.template | 28 -- .../__componentFileName__.spec.ts.template | 38 --- .../__componentFileName__.ts.template | 34 --- .../__moduleFileName__.ts.template | 19 -- .../__routingFileName__.ts.template | 14 - .../ng-generate/po-page-list/index.spec.ts | 168 ------------ .../ng-generate/po-page-list/index.ts | 15 -- .../ng-generate/po-page-list/schema.json | 83 ------ .../ng-generate/po-page-list/schema.ts | 6 - .../po-widget/po-widget-base.component.ts | 1 - projects/ui/src/lib/utils/util.spec.ts | 56 +--- projects/ui/src/lib/utils/util.ts | 28 -- 181 files changed, 12 insertions(+), 5615 deletions(-) delete mode 100644 projects/templates/schematics/ng-generate/po-page-blocked-user/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-blocked-user/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-blocked-user/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-blocked-user/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-blocked-user/index.spec.ts delete mode 100644 projects/templates/schematics/ng-generate/po-page-blocked-user/index.ts delete mode 100644 projects/templates/schematics/ng-generate/po-page-blocked-user/schema.json delete mode 100644 projects/templates/schematics/ng-generate/po-page-blocked-user/schema.ts delete mode 100644 projects/templates/schematics/ng-generate/po-page-change-password/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-change-password/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-change-password/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-change-password/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-change-password/index.spec.ts delete mode 100644 projects/templates/schematics/ng-generate/po-page-change-password/index.ts delete mode 100644 projects/templates/schematics/ng-generate/po-page-change-password/schema.json delete mode 100644 projects/templates/schematics/ng-generate/po-page-change-password/schema.ts delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-detail/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-detail/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-detail/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-detail/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-detail/index.spec.ts delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-detail/index.ts delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-detail/schema.json delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-detail/schema.ts delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-edit/index.spec.ts delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-edit/index.ts delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-edit/schema.json delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-edit/schema.ts delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-search/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-search/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-search/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-search/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-search/index.spec.ts delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-search/index.ts delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-search/schema.json delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-search/schema.ts delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-table/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-table/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-table/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-table/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-table/index.spec.ts delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-table/index.ts delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-table/schema.json delete mode 100644 projects/templates/schematics/ng-generate/po-page-dynamic-table/schema.ts delete mode 100644 projects/templates/schematics/ng-generate/po-page-job-scheduler/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-job-scheduler/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-job-scheduler/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-job-scheduler/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-job-scheduler/index.spec.ts delete mode 100644 projects/templates/schematics/ng-generate/po-page-job-scheduler/index.ts delete mode 100644 projects/templates/schematics/ng-generate/po-page-job-scheduler/schema.json delete mode 100644 projects/templates/schematics/ng-generate/po-page-job-scheduler/schema.ts delete mode 100644 projects/templates/schematics/ng-generate/po-page-login/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-login/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-login/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-login/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template delete mode 100644 projects/templates/schematics/ng-generate/po-page-login/index.spec.ts delete mode 100644 projects/templates/schematics/ng-generate/po-page-login/index.ts delete mode 100644 projects/templates/schematics/ng-generate/po-page-login/schema.json delete mode 100644 projects/templates/schematics/ng-generate/po-page-login/schema.ts delete mode 100644 projects/ui/schematics/ng-generate/po-page-default/files-standalone/__path__/__name@dasherize__/__componentFileName__.__style__.template delete mode 100644 projects/ui/schematics/ng-generate/po-page-default/files-standalone/__path__/__name@dasherize__/__componentFileName__.html.template delete mode 100644 projects/ui/schematics/ng-generate/po-page-default/files-standalone/__path__/__name@dasherize__/__componentFileName__.spec.ts.template delete mode 100644 projects/ui/schematics/ng-generate/po-page-default/files-standalone/__path__/__name@dasherize__/__componentFileName__.ts.template delete mode 100644 projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__componentFileName__.__style__.template delete mode 100644 projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__componentFileName__.html.template delete mode 100644 projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__componentFileName__.spec.ts.template delete mode 100644 projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__componentFileName__.ts.template delete mode 100644 projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__moduleFileName__.ts.template delete mode 100644 projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__routingFileName__.ts.template delete mode 100644 projects/ui/schematics/ng-generate/po-page-default/index.spec.ts delete mode 100644 projects/ui/schematics/ng-generate/po-page-default/index.ts delete mode 100644 projects/ui/schematics/ng-generate/po-page-default/schema.json delete mode 100644 projects/ui/schematics/ng-generate/po-page-default/schema.ts delete mode 100644 projects/ui/schematics/ng-generate/po-page-detail/files-standalone/__path__/__name@dasherize__/__componentFileName__.__style__.template delete mode 100644 projects/ui/schematics/ng-generate/po-page-detail/files-standalone/__path__/__name@dasherize__/__componentFileName__.html.template delete mode 100644 projects/ui/schematics/ng-generate/po-page-detail/files-standalone/__path__/__name@dasherize__/__componentFileName__.spec.ts.template delete mode 100644 projects/ui/schematics/ng-generate/po-page-detail/files-standalone/__path__/__name@dasherize__/__componentFileName__.ts.template delete mode 100644 projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__componentFileName__.__style__.template delete mode 100644 projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__componentFileName__.html.template delete mode 100644 projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__componentFileName__.spec.ts.template delete mode 100644 projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__componentFileName__.ts.template delete mode 100644 projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__moduleFileName__.ts.template delete mode 100644 projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__routingFileName__.ts.template delete mode 100644 projects/ui/schematics/ng-generate/po-page-detail/index.spec.ts delete mode 100644 projects/ui/schematics/ng-generate/po-page-detail/index.ts delete mode 100644 projects/ui/schematics/ng-generate/po-page-detail/schema.json delete mode 100644 projects/ui/schematics/ng-generate/po-page-detail/schema.ts delete mode 100644 projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__componentFileName__.__style__.template delete mode 100644 projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__componentFileName__.html.template delete mode 100644 projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__componentFileName__.spec.ts.template delete mode 100644 projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__componentFileName__.ts.template delete mode 100644 projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__routingFileName__.ts.template delete mode 100644 projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__componentFileName__.__style__.template delete mode 100644 projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__componentFileName__.html.template delete mode 100644 projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__componentFileName__.spec.ts.template delete mode 100644 projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__componentFileName__.ts.template delete mode 100644 projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__moduleFileName__.ts.template delete mode 100644 projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__routingFileName__.ts.template delete mode 100644 projects/ui/schematics/ng-generate/po-page-edit/index.spec.ts delete mode 100644 projects/ui/schematics/ng-generate/po-page-edit/index.ts delete mode 100644 projects/ui/schematics/ng-generate/po-page-edit/schema.json delete mode 100644 projects/ui/schematics/ng-generate/po-page-edit/schema.ts delete mode 100644 projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__componentFileName__.__style__.template delete mode 100644 projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__componentFileName__.html.template delete mode 100644 projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__componentFileName__.spec.ts.template delete mode 100644 projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__componentFileName__.ts.template delete mode 100644 projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__routingFileName__.ts.template delete mode 100644 projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__componentFileName__.__style__.template delete mode 100644 projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__componentFileName__.html.template delete mode 100644 projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__componentFileName__.spec.ts.template delete mode 100644 projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__componentFileName__.ts.template delete mode 100644 projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__moduleFileName__.ts.template delete mode 100644 projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__routingFileName__.ts.template delete mode 100644 projects/ui/schematics/ng-generate/po-page-list/index.spec.ts delete mode 100644 projects/ui/schematics/ng-generate/po-page-list/index.ts delete mode 100644 projects/ui/schematics/ng-generate/po-page-list/schema.json delete mode 100644 projects/ui/schematics/ng-generate/po-page-list/schema.ts diff --git a/docs/guides/schematics.md b/docs/guides/schematics.md index 02ac187da0..fa5ced785a 100644 --- a/docs/guides/schematics.md +++ b/docs/guides/schematics.md @@ -31,122 +31,3 @@ ng add @po-ui/ng-templates@next - Importa o módulo do PO; - Configura o tema do PO no projeto caso não possua; - -## Generate Schematics - -O `PO` vem com vários `schematics` que podem ser usados ​​para gerar componentes facilmente. - -Para gerar o componente, execute o comando abaixo, onde `package` é o pacote e ```schematic-name``` o componente que deseja: - -``` -ng generate : -``` - -> A lista de opções disponíveis que o CLI oferece para o *ng generate* é vista acrescentando `--help` no comando. - -### PO UI Components - -``` -ng generate @po-ui/ng-components: -``` - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - -
    NomeDescrição
    po-page-list - - Componente que deve ser utilizado como o container principal para as telas de listagem de dados, podendo ser apresentado como lista ou tabela. -
    - po-page-default - Componente que deve ser utilizado como o container principal para as telas sem um template definido.
    po-page-edit - Componente que deve ser utilizado como container principal para tela de edição ou adição de um registro.
    po-page-detail - Componente que deve ser utilizado como container principal para a tela de detalhamento de um registro.
    -
    -
    - -### Po UI Templates -``` -ng generate @po-ui/ng-templates: -``` - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NomeDescrição
    po-page-dynamic-table - Página que exibe uma lista de registros em uma tabela baseado em uma lista de fields, o mesmo também suporta metadados conforme especificado na documentação. -
    - po-page-dynamic-detail - Página que serve para exibir registros em detalhes, o mesmo também suporta metadados conforme especificado na documentação. -
    po-page-dynamic-editPágina que pode servir para editar ou criar novos registros, o mesmo também suporta metadados conforme especificado na documentação. -
    po-page-dynamic-searchComponente com as ações de pesquisa já definidas, bastando que o desenvolvedor implemente apenas a chamada para as APIs e exiba as informações. -
    po-page-job-schedulerPágina que serve para criação e atualização de agendamentos da execução de processos (Job Scheduler), como por exemplo: a geração da folha de pagamento dos funcionários. Para utilizá-la, basta informar o serviço (endpoint) para consumo, sem a necessidade de criar componentes e tratamentos dos dados. -
    po-page-loginPágina utilizada como template para tela de login. Com ele é possível definirmos valores para usuário, senha e definir ações para recuperação de senha e gravação de dados do usuário. Também é possível inserir uma imagem em conjunto com um texto de destaque. -
    po-page-change-passwordPágina utilizada como template para tela de cadastro ou alteração de senha. -
    po-page-blocked-userPágina utilizada como template para tela de bloqueio de usuário. -
    -
    -
    diff --git a/package.json b/package.json index a25c984c17..e79d6ad433 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "test:sync:schematics": "gulp build:schematics --lib sync && jasmine \"dist/ng-sync/schematics/**/*.spec.js\"", "test:sync:browse": "ng test sync --code-coverage --browsers=Chrome --source-map", "test:ui": "ng test ui --watch=false --code-coverage --browsers=ChromeHeadless --source-map", - "test:ui:schematics": "gulp build:schematics --lib ui && jasmine \"./dist/ng-components/schematics/**/*.spec.js\"", + "test:ui:schematics": "gulp clean:schematics --lib ui && gulp build:schematics:lib && gulp build:schematics:spec --lib ui && jasmine \"./dist/ng-components/schematics/**/*.spec.js\"", "test:ui:browse": "ng test ui --code-coverage --browsers=Chrome --source-map", "test:templates": "ng test templates --watch=false --code-coverage --browsers=ChromeHeadless --source-map", "test:templates:schematics": "gulp build:schematics --lib templates && jasmine \"dist/ng-templates/schematics/**/*.spec.js\"", diff --git a/projects/templates/schematics/collection.json b/projects/templates/schematics/collection.json index 6a0c1fa97a..25184461c2 100644 --- a/projects/templates/schematics/collection.json +++ b/projects/templates/schematics/collection.json @@ -5,46 +5,6 @@ "description": "Add my library to the project.", "factory": "./ng-add/index", "schema": "./ng-add/schema.json" - }, - "po-page-dynamic-table": { - "description": "Create a component with po-page-dynamic-table", - "factory": "./ng-generate/po-page-dynamic-table/index", - "schema": "./ng-generate/po-page-dynamic-table/schema.json" - }, - "po-page-dynamic-edit": { - "description": "Create a component with po-page-dynamic-edit", - "factory": "./ng-generate/po-page-dynamic-edit/index", - "schema": "./ng-generate/po-page-dynamic-edit/schema.json" - }, - "po-page-dynamic-detail": { - "description": "Create a component with po-page-dynamic-detail", - "factory": "./ng-generate/po-page-dynamic-detail/index", - "schema": "./ng-generate/po-page-dynamic-detail/schema.json" - }, - "po-page-dynamic-search": { - "description": "Create a component with po-page-dynamic-search", - "factory": "./ng-generate/po-page-dynamic-search/index", - "schema": "./ng-generate/po-page-dynamic-search/schema.json" - }, - "po-page-job-scheduler": { - "description": "Create a component with po-page-job-scheduler", - "factory": "./ng-generate/po-page-job-scheduler/index", - "schema": "./ng-generate/po-page-job-scheduler/schema.json" - }, - "po-page-blocked-user": { - "description": "Create a component with po-page-blocked-user", - "factory": "./ng-generate/po-page-blocked-user/index", - "schema": "./ng-generate/po-page-blocked-user/schema.json" - }, - "po-page-change-password": { - "description": "Create a component with po-page-change-password", - "factory": "./ng-generate/po-page-change-password/index", - "schema": "./ng-generate/po-page-change-password/schema.json" - }, - "po-page-login": { - "description": "Create a component with po-page-login", - "factory": "./ng-generate/po-page-login/index", - "schema": "./ng-generate/po-page-login/schema.json" } } } diff --git a/projects/templates/schematics/ng-generate/po-page-blocked-user/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template b/projects/templates/schematics/ng-generate/po-page-blocked-user/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/projects/templates/schematics/ng-generate/po-page-blocked-user/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template b/projects/templates/schematics/ng-generate/po-page-blocked-user/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template deleted file mode 100644 index bff95fdbbe..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-blocked-user/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/projects/templates/schematics/ng-generate/po-page-blocked-user/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template b/projects/templates/schematics/ng-generate/po-page-blocked-user/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template deleted file mode 100644 index 0c1acf0a36..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-blocked-user/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +++ /dev/null @@ -1,34 +0,0 @@ -import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { provideLocationMocks } from '@angular/common/testing'; -import { RouterModule } from '@angular/router'; -import { provideHttpClient } from '@angular/common/http'; - -import { PoPageBlockedUserModule } from '@po-ui/ng-templates'; - -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component'; - -describe('<%= classify(name) %>Component', () => { - let component: <%= classify(name) %>Component; - let fixture: ComponentFixture<<%= classify(name) %>Component>; - - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - imports: [ - RouterModule.forRoot([]), - PoPageBlockedUserModule - ], - providers: [provideLocationMocks(), provideHttpClient()] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(<%= classify(name) %>Component); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/projects/templates/schematics/ng-generate/po-page-blocked-user/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template b/projects/templates/schematics/ng-generate/po-page-blocked-user/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template deleted file mode 100644 index b91a580769..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-blocked-user/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +++ /dev/null @@ -1,21 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { CommonModule } from '@angular/common'; - -import { PoPageBlockedUserModule } from '@po-ui/ng-templates'; - -@Component({ - selector: '<%= selector %>', - imports: [ - CommonModule, - PoPageBlockedUserModule, - ], - templateUrl: './<%= dasherize(name) %>.component.html', - styleUrls: ['./<%= dasherize(name) %>.component.<%= style %>'] -}) -export class <%= classify(name) %>Component implements OnInit { - - constructor() { } - - ngOnInit() { } - -} diff --git a/projects/templates/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template b/projects/templates/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template deleted file mode 100644 index 08a37212f2..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template +++ /dev/null @@ -1,14 +0,0 @@ -import { NgModule } from '@angular/core'; -import { Routes, RouterModule } from '@angular/router'; - -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component'; - -const routes: Routes = [ - { path: '', component: <%= classify(name) %>Component } -]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class <%= classify(name) %>RoutingModule { } diff --git a/projects/templates/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template b/projects/templates/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/projects/templates/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template b/projects/templates/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template deleted file mode 100644 index bff95fdbbe..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/projects/templates/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template b/projects/templates/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template deleted file mode 100644 index 1d1f132494..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +++ /dev/null @@ -1,35 +0,0 @@ -import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { provideLocationMocks } from '@angular/common/testing'; -import { RouterModule } from '@angular/router'; -import { provideHttpClient } from '@angular/common/http'; - -import { PoPageBlockedUserModule } from '@po-ui/ng-templates'; - -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component'; - -describe('<%= classify(name) %>Component', () => { - let component: <%= classify(name) %>Component; - let fixture: ComponentFixture<<%= classify(name) %>Component>; - - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - imports: [ - RouterModule.forRoot([]), - PoPageBlockedUserModule - ], - providers: [provideLocationMocks(), provideHttpClient()], - declarations: [ <%= classify(name) %>Component ] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(<%= classify(name) %>Component); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/projects/templates/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template b/projects/templates/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template deleted file mode 100644 index 021ed143f7..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +++ /dev/null @@ -1,15 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: '<%= selector %>', - templateUrl: './<%= dasherize(name) %>.component.html', - styleUrls: ['./<%= dasherize(name) %>.component.<%= style %>'], - standalone: false -}) -export class <%= classify(name) %>Component implements OnInit { - - constructor() { } - - ngOnInit() { } - -} diff --git a/projects/templates/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template b/projects/templates/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template deleted file mode 100644 index 4ab8315236..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template +++ /dev/null @@ -1,19 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; - -import { PoPageBlockedUserModule } from '@po-ui/ng-templates'; - -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component';<% if (routing) { %> -import { <%= classify(name) %>RoutingModule } from './<%= dasherize(name) %>-routing.module';<% } %> - -@NgModule({ - declarations: [ - <%= classify(name) %>Component - ], - imports: [ - CommonModule, - PoPageBlockedUserModule,<% if (routing) { %> - <%= classify(name) %>RoutingModule<% } %> - ] -}) -export class <%= classify(name) %>Module { } diff --git a/projects/templates/schematics/ng-generate/po-page-blocked-user/index.spec.ts b/projects/templates/schematics/ng-generate/po-page-blocked-user/index.spec.ts deleted file mode 100644 index aa154e03e2..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-blocked-user/index.spec.ts +++ /dev/null @@ -1,185 +0,0 @@ -import { Tree } from '@angular-devkit/schematics'; -import { SchematicTestRunner, UnitTestTree } from '@angular-devkit/schematics/testing'; -import { Schema as WorkspaceOptions } from '@schematics/angular/workspace/schema'; -import * as path from 'path'; - -const collectionPath = path.join(__dirname, '../../collection.json'); - -xdescribe('po-page-blocked-user:', () => { - const runner = new SchematicTestRunner('schematics', collectionPath); - - const workspaceOptions: WorkspaceOptions = { - name: 'workspace', - newProjectRoot: 'projects', - version: '6.0.0' - }; - - const componentOptions: any = { - name: 'po', - style: 'css', - skipTests: false - }; - - let appTree: UnitTestTree; - - beforeEach(async () => { - appTree = await runner.runExternalSchematic('@schematics/angular', 'workspace', workspaceOptions); - appTree = await runner.runExternalSchematic('@schematics/angular', 'application', componentOptions, appTree); - }); - - it('should create component', async () => { - const componentName = 'supply'; - const tree = await runner.runSchematic( - 'po-page-blocked-user', - { ...componentOptions, name: componentName }, - appTree - ); - - const files: Array = tree.files; - - const fullFilePath = (ext: string) => - `/projects/${componentOptions.name}/src/app/${componentName}/${componentName}.component.${ext}`; - - expect(files).toContain(fullFilePath('ts')); - expect(files).toContain(fullFilePath('html')); - expect(files).toContain(fullFilePath('spec.ts')); - expect(files).toContain(fullFilePath(componentOptions.style)); - }); - - it('should create component and module', async () => { - const componentName = 'supply'; - const createModule = true; - - const options = { ...componentOptions, name: componentName, createModule, project: 'po' }; - - const tree = await runner.runSchematic('po-page-blocked-user', options, appTree); - - const files: Array = tree.files; - - expect(files).toContain(`/projects/${options.project}/src/app/${componentName}/${componentName}.module.ts`); - }); - - it('should add declaration component in closest module by default', async () => { - const options = { ...componentOptions, name: 'customers' }; - const tree = await runner.runSchematic('po-page-blocked-user', options, appTree); - - const moduleContent = getFileContent(tree, `/projects/${componentOptions.name}/src/app/app.module.ts`); - - expect(moduleContent).toMatch(/import.*CustomersComponent.*from '.\/customers\/customers.component'/); - expect(moduleContent).toMatch(/declarations:\s*\[[^\]]+?,\r?\n\s+CustomersComponent\r?\n/m); - }); - - it('should import component module if createModule is true', async () => { - const options = { ...componentOptions, name: 'customers', createModule: true }; - - const tree = await runner.runSchematic('po-page-blocked-user', options, appTree); - const moduleContent = getFileContent(tree, `/projects/${componentOptions.name}/src/app/app.module.ts`); - - expect(moduleContent).toMatch(/import.*CustomersModule.*from '.\/customers\/customers.module'/); - expect(moduleContent).toMatch(/imports:\s*\[[^\]]+?,\r?\n\s+CustomersModule\r?\n/m); - }); - - it('should generate component.less if style is `less`', async () => { - const options = { ...componentOptions, name: 'customers', style: 'less' }; - const tree = await runner.runSchematic('po-page-blocked-user', options, appTree); - - const files = tree.files; - - expect(files).toContain( - `/projects/${componentOptions.name}/src/app/customers/customers.component.${options.style}` - ); - }); - - it('should generate component with stylesheet `css` if options.style is empty', async () => { - const options = { ...componentOptions, name: 'customers', style: '' }; - - const tree = await runner.runSchematic('po-page-blocked-user', options, appTree); - const files = tree.files; - - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.css`); - }); - - it('shouldn`t generate component spec if `skipTests` is true', async () => { - const options = { ...componentOptions, name: 'customers', skipTests: true }; - const tree = await runner.runSchematic('po-page-blocked-user', options, appTree); - - const files = tree.files; - - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.ts`); - expect(files).not.toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.spec.ts`); - }); - - it('should generate component in path informed', async () => { - // create customers component module to use with path option - const options = { ...componentOptions, name: 'customers', createModule: true }; - await runner.runSchematic('po-page-blocked-user', options, appTree); - - const optionsPath = { - ...componentOptions, - name: 'wms', - path: `/projects/${componentOptions.name}/src/app/customers` - }; - - const treePath = await runner.runSchematic('po-page-blocked-user', optionsPath, appTree); - - const files = treePath.files; - - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.spec.ts`); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.ts`); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.html`); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.${options.style}`); - }); - - it('should use the custom prefix when create component', async () => { - const prefix = 'wms'; - - const options = { ...componentOptions, name: 'customers', prefix }; - const tree = await runner.runSchematic('po-page-blocked-user', options, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` - ); - - expect(componentContent).toMatch(new RegExp(`selector: '${prefix}-customers'`)); - }); - - it('should use the default prefix when create component if prefix is null', async () => { - const prefix = undefined; - - const options = { ...componentOptions, name: 'customers', sample: true, prefix }; - const tree = await runner.runSchematic('po-page-blocked-user', options, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` - ); - - expect(componentContent).toMatch(new RegExp(`selector: 'app-customers'`)); - }); - - it('should use only the name how prefix when create component if prefix is ""', async () => { - const prefix = ''; - - const options = { ...componentOptions, name: 'customers', prefix }; - const tree = await runner.runSchematic('po-page-blocked-user', options, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` - ); - - expect(componentContent).toMatch(new RegExp(`selector: 'customers'`)); - }); -}); - -/** Gets the content of a specified file from a schematic tree. */ -function getFileContent(tree: Tree, filePath: string): string { - const contentBuffer = tree.read(filePath); - - if (!contentBuffer) { - throw new Error(`Cannot read "${filePath}" because it does not exist.`); - } - - return contentBuffer.toString(); -} diff --git a/projects/templates/schematics/ng-generate/po-page-blocked-user/index.ts b/projects/templates/schematics/ng-generate/po-page-blocked-user/index.ts deleted file mode 100644 index f6d28becd1..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-blocked-user/index.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { chain, Rule } from '@angular-devkit/schematics'; - -import { buildComponent } from '@po-ui/ng-schematics/build-component'; - -import { Schema as ComponentOptions } from './schema'; - -/** Scaffolds a new component with */ -export default function (options: ComponentOptions): Rule { - return chain([createPageBlockedUserComponent(options)]); -} - -function createPageBlockedUserComponent(options: ComponentOptions): Rule { - return buildComponent(options); -} diff --git a/projects/templates/schematics/ng-generate/po-page-blocked-user/schema.json b/projects/templates/schematics/ng-generate/po-page-blocked-user/schema.json deleted file mode 100644 index 224c57c741..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-blocked-user/schema.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema", - "$id": "SchematicsPOPageBlockedUser", - "title": "Page Blocked User Options Schema", - "type": "object", - "properties": { - "style": { - "description": "The file extension or preprocessor to use for style files.", - "type": "string", - "default": "css" - }, - "project": { - "type": "string", - "description": "The name of the project.", - "$default": { - "$source": "projectName" - } - }, - "routing": { - "type": "boolean", - "description": "When true, creates a routing module.", - "default": false - }, - "createModule": { - "type": "boolean", - "description": "When true, create a component module.", - "default": false - }, - "name": { - "type": "string", - "description": "The name to use for the component", - "$default": { - "$source": "argv", - "index": 0 - }, - "x-prompt": "What name would you like to use for the component?" - }, - "skipTests": { - "description": "When true, does not create \"spec.ts\" test files for the app.", - "type": "boolean", - "default": false, - "alias": "S", - "x-user-analytics": 12 - }, - "path": { - "type": "string", - "format": "path", - "description": "The path at which to create the component file, relative to the current workspace. Default is a folder with the same name as the component in the project root.", - "visible": false - }, - "prefix": { - "type": "string", - "description": "The prefix to apply to the generated component selector.", - "alias": "p", - "oneOf": [ - { - "maxLength": 0 - }, - { - "minLength": 1, - "format": "html-selector" - } - ] - } - }, - "required": ["name"] -} diff --git a/projects/templates/schematics/ng-generate/po-page-blocked-user/schema.ts b/projects/templates/schematics/ng-generate/po-page-blocked-user/schema.ts deleted file mode 100644 index 0e5e0a349d..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-blocked-user/schema.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Schema as ComponentSchema } from '@po-ui/ng-schematics/build-component'; - -export interface Schema extends ComponentSchema {} diff --git a/projects/templates/schematics/ng-generate/po-page-change-password/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template b/projects/templates/schematics/ng-generate/po-page-change-password/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/projects/templates/schematics/ng-generate/po-page-change-password/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template b/projects/templates/schematics/ng-generate/po-page-change-password/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template deleted file mode 100644 index d6bcb9ba2d..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-change-password/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/projects/templates/schematics/ng-generate/po-page-change-password/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template b/projects/templates/schematics/ng-generate/po-page-change-password/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template deleted file mode 100644 index e0dfc39a4a..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-change-password/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +++ /dev/null @@ -1,34 +0,0 @@ -import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { provideLocationMocks } from '@angular/common/testing'; -import { RouterModule } from '@angular/router'; -import { provideHttpClient } from '@angular/common/http'; - -import { PoPageChangePasswordModule } from '@po-ui/ng-templates'; - -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component'; - -describe('<%= classify(name) %>Component', () => { - let component: <%= classify(name) %>Component; - let fixture: ComponentFixture<<%= classify(name) %>Component>; - - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - imports: [ - RouterModule.forRoot([]), - PoPageChangePasswordModule - ], - providers: [provideLocationMocks(), provideHttpClient()] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(<%= classify(name) %>Component); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/projects/templates/schematics/ng-generate/po-page-change-password/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template b/projects/templates/schematics/ng-generate/po-page-change-password/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template deleted file mode 100644 index d288044213..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-change-password/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +++ /dev/null @@ -1,21 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { CommonModule } from '@angular/common'; - -import { PoPageChangePasswordModule } from '@po-ui/ng-templates'; - -@Component({ - selector: '<%= selector %>', - imports: [ - CommonModule, - PoPageChangePasswordModule, - ], - templateUrl: './<%= dasherize(name) %>.component.html', - styleUrls: ['./<%= dasherize(name) %>.component.<%= style %>'] -}) -export class <%= classify(name) %>Component implements OnInit { - - constructor() { } - - ngOnInit() { } - -} diff --git a/projects/templates/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template b/projects/templates/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template deleted file mode 100644 index 08a37212f2..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template +++ /dev/null @@ -1,14 +0,0 @@ -import { NgModule } from '@angular/core'; -import { Routes, RouterModule } from '@angular/router'; - -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component'; - -const routes: Routes = [ - { path: '', component: <%= classify(name) %>Component } -]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class <%= classify(name) %>RoutingModule { } diff --git a/projects/templates/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template b/projects/templates/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/projects/templates/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template b/projects/templates/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template deleted file mode 100644 index d6bcb9ba2d..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/projects/templates/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template b/projects/templates/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template deleted file mode 100644 index 4aa88e7fc1..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +++ /dev/null @@ -1,35 +0,0 @@ -import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { provideLocationMocks } from '@angular/common/testing'; -import { RouterModule } from '@angular/router'; -import { provideHttpClient } from '@angular/common/http'; - -import { PoPageChangePasswordModule } from '@po-ui/ng-templates'; - -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component'; - -describe('<%= classify(name) %>Component', () => { - let component: <%= classify(name) %>Component; - let fixture: ComponentFixture<<%= classify(name) %>Component>; - - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - imports: [ - RouterModule.forRoot([]), - PoPageChangePasswordModule - ], - providers: [provideLocationMocks(), provideHttpClient()], - declarations: [ <%= classify(name) %>Component ] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(<%= classify(name) %>Component); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/projects/templates/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template b/projects/templates/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template deleted file mode 100644 index 021ed143f7..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +++ /dev/null @@ -1,15 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: '<%= selector %>', - templateUrl: './<%= dasherize(name) %>.component.html', - styleUrls: ['./<%= dasherize(name) %>.component.<%= style %>'], - standalone: false -}) -export class <%= classify(name) %>Component implements OnInit { - - constructor() { } - - ngOnInit() { } - -} diff --git a/projects/templates/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template b/projects/templates/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template deleted file mode 100644 index eca5dcff1c..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template +++ /dev/null @@ -1,19 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; - -import { PoPageChangePasswordModule } from '@po-ui/ng-templates'; - -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component';<% if (routing) { %> -import { <%= classify(name) %>RoutingModule } from './<%= dasherize(name) %>-routing.module';<% } %> - -@NgModule({ - declarations: [ - <%= classify(name) %>Component - ], - imports: [ - CommonModule, - PoPageChangePasswordModule,<% if (routing) { %> - <%= classify(name) %>RoutingModule<% } %> - ] -}) -export class <%= classify(name) %>Module { } diff --git a/projects/templates/schematics/ng-generate/po-page-change-password/index.spec.ts b/projects/templates/schematics/ng-generate/po-page-change-password/index.spec.ts deleted file mode 100644 index 3744b1f20b..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-change-password/index.spec.ts +++ /dev/null @@ -1,184 +0,0 @@ -import { Tree } from '@angular-devkit/schematics'; -import { SchematicTestRunner, UnitTestTree } from '@angular-devkit/schematics/testing'; -import { Schema as WorkspaceOptions } from '@schematics/angular/workspace/schema'; -import * as path from 'path'; - -const collectionPath = path.join(__dirname, '../../collection.json'); - -xdescribe('po-page-change-password:', () => { - const runner = new SchematicTestRunner('schematics', collectionPath); - - const workspaceOptions: WorkspaceOptions = { - name: 'workspace', - newProjectRoot: 'projects', - version: '6.0.0' - }; - - const componentOptions: any = { - name: 'po', - style: 'css', - skipTests: false - }; - - let appTree: UnitTestTree; - - beforeEach(async () => { - appTree = await runner.runExternalSchematic('@schematics/angular', 'workspace', workspaceOptions); - appTree = await runner.runExternalSchematic('@schematics/angular', 'application', componentOptions, appTree); - }); - - it('should create component', async () => { - const componentName = 'supply'; - const tree = await runner.runSchematic( - 'po-page-change-password', - { ...componentOptions, name: componentName }, - appTree - ); - const files: Array = tree.files; - - const fullFilePath = (ext: string) => - `/projects/${componentOptions.name}/src/app/${componentName}/${componentName}.component.${ext}`; - - expect(files).toContain(fullFilePath('ts')); - expect(files).toContain(fullFilePath('html')); - expect(files).toContain(fullFilePath('spec.ts')); - expect(files).toContain(fullFilePath(componentOptions.style)); - }); - - it('should create component and module', async () => { - const componentName = 'supply'; - const createModule = true; - - const options = { ...componentOptions, name: componentName, createModule, project: 'po' }; - - const tree = await runner.runSchematic('po-page-change-password', options, appTree); - - const files: Array = tree.files; - - expect(files).toContain(`/projects/${options.project}/src/app/${componentName}/${componentName}.module.ts`); - }); - - it('should add declaration component in closest module by default', async () => { - const options = { ...componentOptions, name: 'customers' }; - const tree = await runner.runSchematic('po-page-change-password', options, appTree); - - const moduleContent = getFileContent(tree, `/projects/${componentOptions.name}/src/app/app.module.ts`); - - expect(moduleContent).toMatch(/import.*CustomersComponent.*from '.\/customers\/customers.component'/); - expect(moduleContent).toMatch(/declarations:\s*\[[^\]]+?,\r?\n\s+CustomersComponent\r?\n/m); - }); - - it('should import component module if createModule is true', async () => { - const options = { ...componentOptions, name: 'customers', createModule: true }; - - const tree = await runner.runSchematic('po-page-change-password', options, appTree); - const moduleContent = getFileContent(tree, `/projects/${componentOptions.name}/src/app/app.module.ts`); - - expect(moduleContent).toMatch(/import.*CustomersModule.*from '.\/customers\/customers.module'/); - expect(moduleContent).toMatch(/imports:\s*\[[^\]]+?,\r?\n\s+CustomersModule\r?\n/m); - }); - - it('should generate component.less if style is `less`', async () => { - const options = { ...componentOptions, name: 'customers', style: 'less' }; - const tree = await runner.runSchematic('po-page-change-password', options, appTree); - - const files = tree.files; - - expect(files).toContain( - `/projects/${componentOptions.name}/src/app/customers/customers.component.${options.style}` - ); - }); - - it('should generate component with stylesheet `css` if options.style is empty', async () => { - const options = { ...componentOptions, name: 'customers', style: '' }; - - const tree = await runner.runSchematic('po-page-change-password', options, appTree); - const files = tree.files; - - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.css`); - }); - - it('shouldn`t generate component spec if `skipTests` is true', async () => { - const options = { ...componentOptions, name: 'customers', skipTests: true }; - const tree = await runner.runSchematic('po-page-change-password', options, appTree); - - const files = tree.files; - - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.ts`); - expect(files).not.toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.spec.ts`); - }); - - it('should generate component in path informed', async () => { - // create customers component module to use with path option - const options = { ...componentOptions, name: 'customers', createModule: true }; - await runner.runSchematic('po-page-change-password', options, appTree); - - const optionsPath = { - ...componentOptions, - name: 'wms', - path: `/projects/${componentOptions.name}/src/app/customers` - }; - - const treePath = await runner.runSchematic('po-page-change-password', optionsPath, appTree); - - const files = treePath.files; - - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.spec.ts`); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.ts`); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.html`); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.${options.style}`); - }); - - it('should use the custom prefix when create component', async () => { - const prefix = 'wms'; - - const options = { ...componentOptions, name: 'customers', prefix }; - const tree = await runner.runSchematic('po-page-change-password', options, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` - ); - - expect(componentContent).toMatch(new RegExp(`selector: '${prefix}-customers'`)); - }); - - it('should use the default prefix when create component if prefix is null', async () => { - const prefix = undefined; - - const options = { ...componentOptions, name: 'customers', sample: true, prefix }; - const tree = await runner.runSchematic('po-page-change-password', options, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` - ); - - expect(componentContent).toMatch(new RegExp(`selector: 'app-customers'`)); - }); - - it('should use only the name how prefix when create component if prefix is ""', async () => { - const prefix = ''; - - const options = { ...componentOptions, name: 'customers', prefix }; - const tree = await runner.runSchematic('po-page-change-password', options, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` - ); - - expect(componentContent).toMatch(new RegExp(`selector: 'customers'`)); - }); -}); - -/** Gets the content of a specified file from a schematic tree. */ -function getFileContent(tree: Tree, filePath: string): string { - const contentBuffer = tree.read(filePath); - - if (!contentBuffer) { - throw new Error(`Cannot read "${filePath}" because it does not exist.`); - } - - return contentBuffer.toString(); -} diff --git a/projects/templates/schematics/ng-generate/po-page-change-password/index.ts b/projects/templates/schematics/ng-generate/po-page-change-password/index.ts deleted file mode 100644 index 6cd8cedb0e..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-change-password/index.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { chain, Rule } from '@angular-devkit/schematics'; - -import { buildComponent } from '@po-ui/ng-schematics/build-component'; - -import { Schema as ComponentOptions } from './schema'; - -/** Scaffolds a new component with */ -export default function (options: ComponentOptions): Rule { - return chain([createPageChangePasswordComponent(options)]); -} - -function createPageChangePasswordComponent(options: ComponentOptions): Rule { - return buildComponent(options); -} diff --git a/projects/templates/schematics/ng-generate/po-page-change-password/schema.json b/projects/templates/schematics/ng-generate/po-page-change-password/schema.json deleted file mode 100644 index cb215dac8c..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-change-password/schema.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema", - "$id": "SchematicsPOPageChangePassword", - "title": "Page Change Password Options Schema", - "type": "object", - "properties": { - "style": { - "description": "The file extension or preprocessor to use for style files.", - "type": "string", - "default": "css" - }, - "project": { - "type": "string", - "description": "The name of the project.", - "$default": { - "$source": "projectName" - } - }, - "routing": { - "type": "boolean", - "description": "When true, creates a routing module.", - "default": false - }, - "createModule": { - "type": "boolean", - "description": "When true, create a component module.", - "default": false - }, - "name": { - "type": "string", - "description": "The name to use for the component", - "$default": { - "$source": "argv", - "index": 0 - }, - "x-prompt": "What name would you like to use for the component?" - }, - "skipTests": { - "description": "When true, does not create \"spec.ts\" test files for the app.", - "type": "boolean", - "default": false, - "alias": "S", - "x-user-analytics": 12 - }, - "path": { - "type": "string", - "format": "path", - "description": "The path at which to create the component file, relative to the current workspace. Default is a folder with the same name as the component in the project root.", - "visible": false - }, - "prefix": { - "type": "string", - "description": "The prefix to apply to the generated component selector.", - "alias": "p", - "oneOf": [ - { - "maxLength": 0 - }, - { - "minLength": 1, - "format": "html-selector" - } - ] - } - }, - "required": ["name"] -} diff --git a/projects/templates/schematics/ng-generate/po-page-change-password/schema.ts b/projects/templates/schematics/ng-generate/po-page-change-password/schema.ts deleted file mode 100644 index 0e5e0a349d..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-change-password/schema.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Schema as ComponentSchema } from '@po-ui/ng-schematics/build-component'; - -export interface Schema extends ComponentSchema {} diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-detail/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template b/projects/templates/schematics/ng-generate/po-page-dynamic-detail/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-detail/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template b/projects/templates/schematics/ng-generate/po-page-dynamic-detail/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template deleted file mode 100644 index 832b587fcf..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-detail/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template +++ /dev/null @@ -1,5 +0,0 @@ - - diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-detail/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template b/projects/templates/schematics/ng-generate/po-page-dynamic-detail/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template deleted file mode 100644 index ae89f3377d..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-detail/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +++ /dev/null @@ -1,34 +0,0 @@ -import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { provideLocationMocks } from '@angular/common/testing'; -import { RouterModule } from '@angular/router'; -import { provideHttpClient } from '@angular/common/http'; - -import { PoPageDynamicDetailModule } from '@po-ui/ng-templates'; - -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component'; - -describe('<%= classify(name) %>Component', () => { - let component: <%= classify(name) %>Component; - let fixture: ComponentFixture<<%= classify(name) %>Component>; - - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - imports: [ - RouterModule.forRoot([]), - PoPageDynamicDetailModule - ], - providers: [provideLocationMocks(), provideHttpClient()] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(<%= classify(name) %>Component); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-detail/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template b/projects/templates/schematics/ng-generate/po-page-dynamic-detail/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template deleted file mode 100644 index dfcf705d11..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-detail/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +++ /dev/null @@ -1,28 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { CommonModule } from '@angular/common'; - -import { PoPageDynamicDetailModule, PoPageDynamicDetailField } from '@po-ui/ng-templates'; - -@Component({ - selector: '<%= selector %>', - imports: [ - CommonModule, - PoPageDynamicDetailModule - ], - templateUrl: './<%= dasherize(name) %>.component.html', - styleUrls: ['./<%= dasherize(name) %>.component.<%= style %>'] -}) -export class <%= classify(name) %>Component implements OnInit { - - // PLEASE ADD THE API URL SERVICE HERE - readonly apiService = 'http://localhost:8080/api'; - - readonly fields: Array = [ - { property: 'id', label: 'User ID', key: true }, - ]; - - constructor() { } - - ngOnInit() { } - -} diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template b/projects/templates/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template deleted file mode 100644 index 08a37212f2..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template +++ /dev/null @@ -1,14 +0,0 @@ -import { NgModule } from '@angular/core'; -import { Routes, RouterModule } from '@angular/router'; - -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component'; - -const routes: Routes = [ - { path: '', component: <%= classify(name) %>Component } -]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class <%= classify(name) %>RoutingModule { } diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template b/projects/templates/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template b/projects/templates/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template deleted file mode 100644 index 832b587fcf..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template +++ /dev/null @@ -1,5 +0,0 @@ - - diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template b/projects/templates/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template deleted file mode 100644 index 9409fd2685..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +++ /dev/null @@ -1,35 +0,0 @@ -import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { provideLocationMocks } from '@angular/common/testing'; -import { RouterModule } from '@angular/router'; -import { provideHttpClient } from '@angular/common/http'; - -import { PoPageDynamicDetailModule } from '@po-ui/ng-templates'; - -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component'; - -describe('<%= classify(name) %>Component', () => { - let component: <%= classify(name) %>Component; - let fixture: ComponentFixture<<%= classify(name) %>Component>; - - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - imports: [ - RouterModule.forRoot([]), - PoPageDynamicDetailModule - ], - providers: [provideLocationMocks(), provideHttpClient()], - declarations: [ <%= classify(name) %>Component ] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(<%= classify(name) %>Component); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template b/projects/templates/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template deleted file mode 100644 index 8c1009db08..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +++ /dev/null @@ -1,24 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -import { PoPageDynamicDetailField } from '@po-ui/ng-templates'; - -@Component({ - selector: '<%= selector %>', - templateUrl: './<%= dasherize(name) %>.component.html', - styleUrls: ['./<%= dasherize(name) %>.component.<%= style %>'], - standalone: false -}) -export class <%= classify(name) %>Component implements OnInit { - - // PLEASE ADD THE API URL SERVICE HERE - readonly apiService = 'http://localhost:8080/api'; - - readonly fields: Array = [ - { property: 'id', label: 'User ID', key: true }, - ]; - - constructor() { } - - ngOnInit() { } - -} diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template b/projects/templates/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template deleted file mode 100644 index 20be42a154..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template +++ /dev/null @@ -1,19 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; - -import { PoPageDynamicDetailModule } from '@po-ui/ng-templates'; - -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component';<% if (routing) { %> -import { <%= classify(name) %>RoutingModule } from './<%= dasherize(name) %>-routing.module';<% } %> - -@NgModule({ - declarations: [ - <%= classify(name) %>Component - ], - imports: [ - CommonModule, - PoPageDynamicDetailModule,<% if (routing) { %> - <%= classify(name) %>RoutingModule<% } %> - ] -}) -export class <%= classify(name) %>Module { } diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-detail/index.spec.ts b/projects/templates/schematics/ng-generate/po-page-dynamic-detail/index.spec.ts deleted file mode 100644 index 812da56c14..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-detail/index.spec.ts +++ /dev/null @@ -1,184 +0,0 @@ -import { Tree } from '@angular-devkit/schematics'; -import { SchematicTestRunner, UnitTestTree } from '@angular-devkit/schematics/testing'; -import { Schema as WorkspaceOptions } from '@schematics/angular/workspace/schema'; -import * as path from 'path'; - -const collectionPath = path.join(__dirname, '../../collection.json'); - -xdescribe('po-page-dynamic-detail:', () => { - const runner = new SchematicTestRunner('schematics', collectionPath); - - const workspaceOptions: WorkspaceOptions = { - name: 'workspace', - newProjectRoot: 'projects', - version: '6.0.0' - }; - - const componentOptions: any = { - name: 'po', - style: 'css', - skipTests: false - }; - - let appTree: UnitTestTree; - - beforeEach(async () => { - appTree = await runner.runExternalSchematic('@schematics/angular', 'workspace', workspaceOptions); - appTree = await runner.runExternalSchematic('@schematics/angular', 'application', componentOptions, appTree); - }); - - it('should create component', async () => { - const componentName = 'supply'; - const tree = await runner.runSchematic( - 'po-page-dynamic-detail', - { ...componentOptions, name: componentName }, - appTree - ); - const files: Array = tree.files; - - const fullFilePath = (ext: string) => - `/projects/${componentOptions.name}/src/app/${componentName}/${componentName}.component.${ext}`; - - expect(files).toContain(fullFilePath('ts')); - expect(files).toContain(fullFilePath('html')); - expect(files).toContain(fullFilePath('spec.ts')); - expect(files).toContain(fullFilePath(componentOptions.style)); - }); - - it('should create component and module', async () => { - const componentName = 'supply'; - const createModule = true; - - const options = { ...componentOptions, name: componentName, createModule, project: 'po' }; - - const tree = await runner.runSchematic('po-page-dynamic-detail', options, appTree); - - const files: Array = tree.files; - - expect(files).toContain(`/projects/${options.project}/src/app/${componentName}/${componentName}.module.ts`); - }); - - it('should add declaration component in closest module by default', async () => { - const options = { ...componentOptions, name: 'customers' }; - const tree = await runner.runSchematic('po-page-dynamic-detail', options, appTree); - - const moduleContent = getFileContent(tree, `/projects/${componentOptions.name}/src/app/app.module.ts`); - - expect(moduleContent).toMatch(/import.*CustomersComponent.*from '.\/customers\/customers.component'/); - expect(moduleContent).toMatch(/declarations:\s*\[[^\]]+?,\r?\n\s+CustomersComponent\r?\n/m); - }); - - it('should import component module if createModule is true', async () => { - const options = { ...componentOptions, name: 'customers', createModule: true }; - - const tree = await runner.runSchematic('po-page-dynamic-detail', options, appTree); - const moduleContent = getFileContent(tree, `/projects/${componentOptions.name}/src/app/app.module.ts`); - - expect(moduleContent).toMatch(/import.*CustomersModule.*from '.\/customers\/customers.module'/); - expect(moduleContent).toMatch(/imports:\s*\[[^\]]+?,\r?\n\s+CustomersModule\r?\n/m); - }); - - it('should generate component.less if style is `less`', async () => { - const options = { ...componentOptions, name: 'customers', style: 'less' }; - const tree = await runner.runSchematic('po-page-dynamic-detail', options, appTree); - - const files = tree.files; - - expect(files).toContain( - `/projects/${componentOptions.name}/src/app/customers/customers.component.${options.style}` - ); - }); - - it('should generate component with stylesheet `css` if options.style is empty', async () => { - const options = { ...componentOptions, name: 'customers', style: '' }; - - const tree = await runner.runSchematic('po-page-dynamic-detail', options, appTree); - const files = tree.files; - - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.css`); - }); - - it('shouldn`t generate component spec if `skipTests` is true', async () => { - const options = { ...componentOptions, name: 'customers', skipTests: true }; - const tree = await runner.runSchematic('po-page-dynamic-detail', options, appTree); - - const files = tree.files; - - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.ts`); - expect(files).not.toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.spec.ts`); - }); - - it('should generate component in path informed', async () => { - // create customers component module to use with path option - const options = { ...componentOptions, name: 'customers', createModule: true }; - await runner.runSchematic('po-page-dynamic-detail', options, appTree); - - const optionsPath = { - ...componentOptions, - name: 'wms', - path: `/projects/${componentOptions.name}/src/app/customers` - }; - - const treePath = await runner.runSchematic('po-page-dynamic-detail', optionsPath, appTree); - - const files = treePath.files; - - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.spec.ts`); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.ts`); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.html`); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.${options.style}`); - }); - - it('should use the custom prefix when create component', async () => { - const prefix = 'wms'; - - const options = { ...componentOptions, name: 'customers', prefix }; - const tree = await runner.runSchematic('po-page-dynamic-detail', options, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` - ); - - expect(componentContent).toMatch(new RegExp(`selector: '${prefix}-customers'`)); - }); - - it('should use the default prefix when create component if prefix is null', async () => { - const prefix = undefined; - - const options = { ...componentOptions, name: 'customers', sample: true, prefix }; - const tree = await runner.runSchematic('po-page-dynamic-detail', options, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` - ); - - expect(componentContent).toMatch(new RegExp(`selector: 'app-customers'`)); - }); - - it('should use only the name how prefix when create component if prefix is ""', async () => { - const prefix = ''; - - const options = { ...componentOptions, name: 'customers', prefix }; - const tree = await runner.runSchematic('po-page-dynamic-detail', options, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` - ); - - expect(componentContent).toMatch(new RegExp(`selector: 'customers'`)); - }); -}); - -/** Gets the content of a specified file from a schematic tree. */ -function getFileContent(tree: Tree, filePath: string): string { - const contentBuffer = tree.read(filePath); - - if (!contentBuffer) { - throw new Error(`Cannot read "${filePath}" because it does not exist.`); - } - - return contentBuffer.toString(); -} diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-detail/index.ts b/projects/templates/schematics/ng-generate/po-page-dynamic-detail/index.ts deleted file mode 100644 index 9339554327..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-detail/index.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { chain, Rule } from '@angular-devkit/schematics'; - -import { buildComponent } from '@po-ui/ng-schematics/build-component'; - -import { Schema as ComponentOptions } from './schema'; - -/** Scaffolds a new component with */ -export default function (options: ComponentOptions): Rule { - return chain([createPageDynamicDetailComponent(options)]); -} - -function createPageDynamicDetailComponent(options: ComponentOptions): Rule { - return buildComponent(options); -} diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-detail/schema.json b/projects/templates/schematics/ng-generate/po-page-dynamic-detail/schema.json deleted file mode 100644 index caff096c30..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-detail/schema.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema", - "$id": "SchematicsPOPageDynamicDetail", - "title": "Page Dynamic Detail Options Schema", - "type": "object", - "properties": { - "style": { - "description": "The file extension or preprocessor to use for style files.", - "type": "string", - "default": "css" - }, - "project": { - "type": "string", - "description": "The name of the project.", - "$default": { - "$source": "projectName" - } - }, - "routing": { - "type": "boolean", - "description": "When true, creates a routing module.", - "default": false - }, - "createModule": { - "type": "boolean", - "description": "When true, create a component module.", - "default": false - }, - "name": { - "type": "string", - "description": "The name to use for the component", - "$default": { - "$source": "argv", - "index": 0 - }, - "x-prompt": "What name would you like to use for the component?" - }, - "skipTests": { - "description": "When true, does not create \"spec.ts\" test files for the app.", - "type": "boolean", - "default": false, - "alias": "S", - "x-user-analytics": 12 - }, - "path": { - "type": "string", - "format": "path", - "description": "The path at which to create the component file, relative to the current workspace. Default is a folder with the same name as the component in the project root.", - "visible": false - }, - "prefix": { - "type": "string", - "description": "The prefix to apply to the generated component selector.", - "alias": "p", - "oneOf": [ - { - "maxLength": 0 - }, - { - "minLength": 1, - "format": "html-selector" - } - ] - } - }, - "required": ["name"] -} diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-detail/schema.ts b/projects/templates/schematics/ng-generate/po-page-dynamic-detail/schema.ts deleted file mode 100644 index 0e5e0a349d..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-detail/schema.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Schema as ComponentSchema } from '@po-ui/ng-schematics/build-component'; - -export interface Schema extends ComponentSchema {} diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template b/projects/templates/schematics/ng-generate/po-page-dynamic-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template b/projects/templates/schematics/ng-generate/po-page-dynamic-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template deleted file mode 100644 index c151d1a85b..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template +++ /dev/null @@ -1,5 +0,0 @@ - - diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template b/projects/templates/schematics/ng-generate/po-page-dynamic-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template deleted file mode 100644 index c7ade3a64e..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +++ /dev/null @@ -1,34 +0,0 @@ -import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { provideLocationMocks } from '@angular/common/testing'; -import { RouterModule } from '@angular/router'; -import { provideHttpClient } from '@angular/common/http'; - -import { PoPageDynamicEditModule } from '@po-ui/ng-templates'; - -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component'; - -describe('<%= classify(name) %>Component', () => { - let component: <%= classify(name) %>Component; - let fixture: ComponentFixture<<%= classify(name) %>Component>; - - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - imports: [ - RouterModule.forRoot([]), - PoPageDynamicEditModule - ], - providers: [provideLocationMocks(), provideHttpClient()] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(<%= classify(name) %>Component); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template b/projects/templates/schematics/ng-generate/po-page-dynamic-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template deleted file mode 100644 index 175cbbb6c8..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +++ /dev/null @@ -1,30 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -import { CommonModule } from '@angular/common'; - -import { PoPageDynamicEditModule } from '@po-ui/ng-templates'; -import { PoPageDynamicEditField } from '@po-ui/ng-templates'; - -@Component({ - selector: '<%= selector %>', - imports: [ - CommonModule, - PoPageDynamicEditModule, - ], - templateUrl: './<%= dasherize(name) %>.component.html', - styleUrls: ['./<%= dasherize(name) %>.component.<%= style %>'] -}) -export class <%= classify(name) %>Component implements OnInit { - - // PLEASE ADD THE API URL SERVICE HERE - readonly apiService = 'http://localhost:8080/api'; - - readonly fields: Array = [ - { property: 'id', label: 'User ID', key: true }, - ]; - - constructor() { } - - ngOnInit() { } - -} diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template b/projects/templates/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template deleted file mode 100644 index 08a37212f2..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template +++ /dev/null @@ -1,14 +0,0 @@ -import { NgModule } from '@angular/core'; -import { Routes, RouterModule } from '@angular/router'; - -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component'; - -const routes: Routes = [ - { path: '', component: <%= classify(name) %>Component } -]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class <%= classify(name) %>RoutingModule { } diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template b/projects/templates/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template b/projects/templates/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template deleted file mode 100644 index c151d1a85b..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template +++ /dev/null @@ -1,5 +0,0 @@ - - diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template b/projects/templates/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template deleted file mode 100644 index 4b02921f39..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +++ /dev/null @@ -1,35 +0,0 @@ -import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { provideLocationMocks } from '@angular/common/testing'; -import { RouterModule } from '@angular/router'; -import { provideHttpClient } from '@angular/common/http'; - -import { PoPageDynamicEditModule } from '@po-ui/ng-templates'; - -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component'; - -describe('<%= classify(name) %>Component', () => { - let component: <%= classify(name) %>Component; - let fixture: ComponentFixture<<%= classify(name) %>Component>; - - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - imports: [ - RouterModule.forRoot([]), - PoPageDynamicEditModule - ], - providers: [provideLocationMocks(), provideHttpClient()], - declarations: [ <%= classify(name) %>Component ] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(<%= classify(name) %>Component); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template b/projects/templates/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template deleted file mode 100644 index a39deb9e81..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +++ /dev/null @@ -1,24 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -import { PoPageDynamicEditField } from '@po-ui/ng-templates'; - -@Component({ - selector: '<%= selector %>', - templateUrl: './<%= dasherize(name) %>.component.html', - styleUrls: ['./<%= dasherize(name) %>.component.<%= style %>'], - standalone: false -}) -export class <%= classify(name) %>Component implements OnInit { - - // PLEASE ADD THE API URL SERVICE HERE - readonly apiService = 'http://localhost:8080/api'; - - readonly fields: Array = [ - { property: 'id', label: 'User ID', key: true }, - ]; - - constructor() { } - - ngOnInit() { } - -} diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template b/projects/templates/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template deleted file mode 100644 index 54435e6e57..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template +++ /dev/null @@ -1,19 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; - -import { PoPageDynamicEditModule } from '@po-ui/ng-templates'; - -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component';<% if (routing) { %> -import { <%= classify(name) %>RoutingModule } from './<%= dasherize(name) %>-routing.module';<% } %> - -@NgModule({ - declarations: [ - <%= classify(name) %>Component - ], - imports: [ - CommonModule, - PoPageDynamicEditModule,<% if (routing) { %> - <%= classify(name) %>RoutingModule<% } %> - ] -}) -export class <%= classify(name) %>Module { } diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-edit/index.spec.ts b/projects/templates/schematics/ng-generate/po-page-dynamic-edit/index.spec.ts deleted file mode 100644 index e692d04f7c..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-edit/index.spec.ts +++ /dev/null @@ -1,184 +0,0 @@ -import { Tree } from '@angular-devkit/schematics'; -import { SchematicTestRunner, UnitTestTree } from '@angular-devkit/schematics/testing'; -import { Schema as WorkspaceOptions } from '@schematics/angular/workspace/schema'; -import * as path from 'path'; - -const collectionPath = path.join(__dirname, '../../collection.json'); - -xdescribe('po-page-dynamic-edit:', () => { - const runner = new SchematicTestRunner('schematics', collectionPath); - - const workspaceOptions: WorkspaceOptions = { - name: 'workspace', - newProjectRoot: 'projects', - version: '6.0.0' - }; - - const componentOptions: any = { - name: 'po', - style: 'css', - skipTests: false - }; - - let appTree: UnitTestTree; - - beforeEach(async () => { - appTree = await runner.runExternalSchematic('@schematics/angular', 'workspace', workspaceOptions); - appTree = await runner.runExternalSchematic('@schematics/angular', 'application', componentOptions, appTree); - }); - - it('should create component', async () => { - const componentName = 'supply'; - const tree = await runner.runSchematic( - 'po-page-dynamic-edit', - { ...componentOptions, name: componentName }, - appTree - ); - const files: Array = tree.files; - - const fullFilePath = (ext: string) => - `/projects/${componentOptions.name}/src/app/${componentName}/${componentName}.component.${ext}`; - - expect(files).toContain(fullFilePath('ts')); - expect(files).toContain(fullFilePath('html')); - expect(files).toContain(fullFilePath('spec.ts')); - expect(files).toContain(fullFilePath(componentOptions.style)); - }); - - it('should create component and module', async () => { - const componentName = 'supply'; - const createModule = true; - - const options = { ...componentOptions, name: componentName, createModule, project: 'po' }; - - const tree = await runner.runSchematic('po-page-dynamic-edit', options, appTree); - - const files: Array = tree.files; - - expect(files).toContain(`/projects/${options.project}/src/app/${componentName}/${componentName}.module.ts`); - }); - - it('should add declaration component in closest module by default', async () => { - const options = { ...componentOptions, name: 'customers' }; - const tree = await runner.runSchematic('po-page-dynamic-edit', options, appTree); - - const moduleContent = getFileContent(tree, `/projects/${componentOptions.name}/src/app/app.module.ts`); - - expect(moduleContent).toMatch(/import.*CustomersComponent.*from '.\/customers\/customers.component'/); - expect(moduleContent).toMatch(/declarations:\s*\[[^\]]+?,\r?\n\s+CustomersComponent\r?\n/m); - }); - - it('should import component module if createModule is true', async () => { - const options = { ...componentOptions, name: 'customers', createModule: true }; - - const tree = await runner.runSchematic('po-page-dynamic-edit', options, appTree); - const moduleContent = getFileContent(tree, `/projects/${componentOptions.name}/src/app/app.module.ts`); - - expect(moduleContent).toMatch(/import.*CustomersModule.*from '.\/customers\/customers.module'/); - expect(moduleContent).toMatch(/imports:\s*\[[^\]]+?,\r?\n\s+CustomersModule\r?\n/m); - }); - - it('should generate component.less if style is `less`', async () => { - const options = { ...componentOptions, name: 'customers', style: 'less' }; - const tree = await runner.runSchematic('po-page-dynamic-edit', options, appTree); - - const files = tree.files; - - expect(files).toContain( - `/projects/${componentOptions.name}/src/app/customers/customers.component.${options.style}` - ); - }); - - it('should generate component with stylesheet `css` if options.style is empty', async () => { - const options = { ...componentOptions, name: 'customers', style: '' }; - - const tree = await runner.runSchematic('po-page-dynamic-edit', options, appTree); - const files = tree.files; - - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.css`); - }); - - it('shouldn`t generate component spec if `skipTests` is true', async () => { - const options = { ...componentOptions, name: 'customers', skipTests: true }; - const tree = await runner.runSchematic('po-page-dynamic-edit', options, appTree); - - const files = tree.files; - - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.ts`); - expect(files).not.toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.spec.ts`); - }); - - it('should generate component in path informed', async () => { - // create customers component module to use with path option - const options = { ...componentOptions, name: 'customers', createModule: true }; - await runner.runSchematic('po-page-dynamic-edit', options, appTree); - - const optionsPath = { - ...componentOptions, - name: 'wms', - path: `/projects/${componentOptions.name}/src/app/customers` - }; - - const treePath = await runner.runSchematic('po-page-dynamic-edit', optionsPath, appTree); - - const files = treePath.files; - - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.spec.ts`); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.ts`); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.html`); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.${options.style}`); - }); - - it('should use the custom prefix when create component', async () => { - const prefix = 'wms'; - - const options = { ...componentOptions, name: 'customers', prefix }; - const tree = await runner.runSchematic('po-page-dynamic-edit', options, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` - ); - - expect(componentContent).toMatch(new RegExp(`selector: '${prefix}-customers'`)); - }); - - it('should use the default prefix when create component if prefix is null', async () => { - const prefix = undefined; - - const options = { ...componentOptions, name: 'customers', sample: true, prefix }; - const tree = await runner.runSchematic('po-page-dynamic-edit', options, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` - ); - - expect(componentContent).toMatch(new RegExp(`selector: 'app-customers'`)); - }); - - it('should use only the name how prefix when create component if prefix is ""', async () => { - const prefix = ''; - - const options = { ...componentOptions, name: 'customers', prefix }; - const tree = await runner.runSchematic('po-page-dynamic-edit', options, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` - ); - - expect(componentContent).toMatch(new RegExp(`selector: 'customers'`)); - }); -}); - -/** Gets the content of a specified file from a schematic tree. */ -function getFileContent(tree: Tree, filePath: string): string { - const contentBuffer = tree.read(filePath); - - if (!contentBuffer) { - throw new Error(`Cannot read "${filePath}" because it does not exist.`); - } - - return contentBuffer.toString(); -} diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-edit/index.ts b/projects/templates/schematics/ng-generate/po-page-dynamic-edit/index.ts deleted file mode 100644 index bbd17c0903..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-edit/index.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { chain, Rule } from '@angular-devkit/schematics'; - -import { buildComponent } from '@po-ui/ng-schematics/build-component'; - -import { Schema as ComponentOptions } from './schema'; - -/** Scaffolds a new component with */ -export default function (options: ComponentOptions): Rule { - return chain([createPageDynamicEditComponent(options)]); -} - -function createPageDynamicEditComponent(options: ComponentOptions): Rule { - return buildComponent(options); -} diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-edit/schema.json b/projects/templates/schematics/ng-generate/po-page-dynamic-edit/schema.json deleted file mode 100644 index 3239d1a31a..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-edit/schema.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema", - "$id": "SchematicsPOPageDynamicEdit", - "title": "Page Dynamic Edit Options Schema", - "type": "object", - "properties": { - "style": { - "description": "The file extension or preprocessor to use for style files.", - "type": "string", - "default": "css" - }, - "project": { - "type": "string", - "description": "The name of the project.", - "$default": { - "$source": "projectName" - } - }, - "routing": { - "type": "boolean", - "description": "When true, creates a routing module.", - "default": false - }, - "createModule": { - "type": "boolean", - "description": "When true, create a component module.", - "default": false - }, - "name": { - "type": "string", - "description": "The name to use for the component", - "$default": { - "$source": "argv", - "index": 0 - }, - "x-prompt": "What name would you like to use for the component?" - }, - "skipTests": { - "description": "When true, does not create \"spec.ts\" test files for the app.", - "type": "boolean", - "default": false, - "alias": "S", - "x-user-analytics": 12 - }, - "path": { - "type": "string", - "format": "path", - "description": "The path at which to create the component file, relative to the current workspace. Default is a folder with the same name as the component in the project root.", - "visible": false - }, - "prefix": { - "type": "string", - "description": "The prefix to apply to the generated component selector.", - "alias": "p", - "oneOf": [ - { - "maxLength": 0 - }, - { - "minLength": 1, - "format": "html-selector" - } - ] - } - }, - "required": ["name"] -} diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-edit/schema.ts b/projects/templates/schematics/ng-generate/po-page-dynamic-edit/schema.ts deleted file mode 100644 index 0e5e0a349d..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-edit/schema.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Schema as ComponentSchema } from '@po-ui/ng-schematics/build-component'; - -export interface Schema extends ComponentSchema {} diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-search/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template b/projects/templates/schematics/ng-generate/po-page-dynamic-search/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-search/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template b/projects/templates/schematics/ng-generate/po-page-dynamic-search/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template deleted file mode 100644 index 5293e89aaa..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-search/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template +++ /dev/null @@ -1,5 +0,0 @@ - - diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-search/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template b/projects/templates/schematics/ng-generate/po-page-dynamic-search/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template deleted file mode 100644 index 28dbc42972..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-search/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +++ /dev/null @@ -1,34 +0,0 @@ -import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { provideLocationMocks } from '@angular/common/testing'; -import { RouterModule } from '@angular/router'; -import { provideHttpClient } from '@angular/common/http'; - -import { PoPageDynamicSearchModule } from '@po-ui/ng-templates'; - -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component'; - -describe('<%= classify(name) %>Component', () => { - let component: <%= classify(name) %>Component; - let fixture: ComponentFixture<<%= classify(name) %>Component>; - - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - imports: [ - RouterModule.forRoot([]), - PoPageDynamicSearchModule - ], - providers: [provideLocationMocks(), provideHttpClient()] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(<%= classify(name) %>Component); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-search/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template b/projects/templates/schematics/ng-generate/po-page-dynamic-search/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template deleted file mode 100644 index 12066e982e..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-search/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +++ /dev/null @@ -1,35 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { CommonModule } from '@angular/common'; - -import { PoPageDynamicSearchModule } from '@po-ui/ng-templates'; - -import { PoPageAction, PoDynamicFormField } from '@po-ui/ng-components'; - -@Component({ - selector: '<%= selector %>', - imports: [ - CommonModule, - PoPageDynamicSearchModule, - ], - templateUrl: './<%= dasherize(name) %>.component.html', - styleUrls: ['./<%= dasherize(name) %>.component.<%= style %>'] -}) -export class <%= classify(name) %>Component implements OnInit { - - readonly actions: Array = [ - { label: 'Adicionar', action: this.add.bind(this) } - ]; - - readonly filter: Array = [ - { property: 'name' } - ]; - - constructor() { } - - ngOnInit() { } - - add() { - alert('ADD'); - } - -} diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template b/projects/templates/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template deleted file mode 100644 index 08a37212f2..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template +++ /dev/null @@ -1,14 +0,0 @@ -import { NgModule } from '@angular/core'; -import { Routes, RouterModule } from '@angular/router'; - -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component'; - -const routes: Routes = [ - { path: '', component: <%= classify(name) %>Component } -]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class <%= classify(name) %>RoutingModule { } diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template b/projects/templates/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template b/projects/templates/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template deleted file mode 100644 index 5293e89aaa..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template +++ /dev/null @@ -1,5 +0,0 @@ - - diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template b/projects/templates/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template deleted file mode 100644 index abbaf7abe1..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +++ /dev/null @@ -1,35 +0,0 @@ -import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { provideLocationMocks } from '@angular/common/testing'; -import { RouterModule } from '@angular/router'; -import { provideHttpClient } from '@angular/common/http'; - -import { PoPageDynamicSearchModule } from '@po-ui/ng-templates'; - -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component'; - -describe('<%= classify(name) %>Component', () => { - let component: <%= classify(name) %>Component; - let fixture: ComponentFixture<<%= classify(name) %>Component>; - - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - imports: [ - RouterModule.forRoot([]), - PoPageDynamicSearchModule - ], - providers: [provideLocationMocks(), provideHttpClient()], - declarations: [ <%= classify(name) %>Component ] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(<%= classify(name) %>Component); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template b/projects/templates/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template deleted file mode 100644 index 75ea9f7aaf..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +++ /dev/null @@ -1,29 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -import { PoPageAction, PoDynamicFormField } from '@po-ui/ng-components'; - -@Component({ - selector: '<%= selector %>', - templateUrl: './<%= dasherize(name) %>.component.html', - styleUrls: ['./<%= dasherize(name) %>.component.<%= style %>'], - standalone: false -}) -export class <%= classify(name) %>Component implements OnInit { - - readonly actions: Array = [ - { label: 'Adicionar', action: this.add.bind(this) } - ]; - - readonly filter: Array = [ - { property: 'name' } - ]; - - constructor() { } - - ngOnInit() { } - - add() { - alert('ADD'); - } - -} diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template b/projects/templates/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template deleted file mode 100644 index ab0d96885a..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template +++ /dev/null @@ -1,19 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; - -import { PoPageDynamicSearchModule } from '@po-ui/ng-templates'; - -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component';<% if (routing) { %> -import { <%= classify(name) %>RoutingModule } from './<%= dasherize(name) %>-routing.module';<% } %> - -@NgModule({ - declarations: [ - <%= classify(name) %>Component - ], - imports: [ - CommonModule, - PoPageDynamicSearchModule,<% if (routing) { %> - <%= classify(name) %>RoutingModule<% } %> - ] -}) -export class <%= classify(name) %>Module { } diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-search/index.spec.ts b/projects/templates/schematics/ng-generate/po-page-dynamic-search/index.spec.ts deleted file mode 100644 index 602d1ddb5c..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-search/index.spec.ts +++ /dev/null @@ -1,184 +0,0 @@ -import { Tree } from '@angular-devkit/schematics'; -import { SchematicTestRunner, UnitTestTree } from '@angular-devkit/schematics/testing'; -import { Schema as WorkspaceOptions } from '@schematics/angular/workspace/schema'; -import * as path from 'path'; - -const collectionPath = path.join(__dirname, '../../collection.json'); - -xdescribe('po-page-dynamic-search:', () => { - const runner = new SchematicTestRunner('schematics', collectionPath); - - const workspaceOptions: WorkspaceOptions = { - name: 'workspace', - newProjectRoot: 'projects', - version: '6.0.0' - }; - - const componentOptions: any = { - name: 'po', - style: 'css', - skipTests: false - }; - - let appTree: UnitTestTree; - - beforeEach(async () => { - appTree = await runner.runExternalSchematic('@schematics/angular', 'workspace', workspaceOptions); - appTree = await runner.runExternalSchematic('@schematics/angular', 'application', componentOptions, appTree); - }); - - it('should create component', async () => { - const componentName = 'supply'; - const tree = await runner.runSchematic( - 'po-page-dynamic-search', - { ...componentOptions, name: componentName }, - appTree - ); - const files: Array = tree.files; - - const fullFilePath = (ext: string) => - `/projects/${componentOptions.name}/src/app/${componentName}/${componentName}.component.${ext}`; - - expect(files).toContain(fullFilePath('ts')); - expect(files).toContain(fullFilePath('html')); - expect(files).toContain(fullFilePath('spec.ts')); - expect(files).toContain(fullFilePath(componentOptions.style)); - }); - - it('should create component and module', async () => { - const componentName = 'supply'; - const createModule = true; - - const options = { ...componentOptions, name: componentName, createModule, project: 'po' }; - - const tree = await runner.runSchematic('po-page-dynamic-search', options, appTree); - - const files: Array = tree.files; - - expect(files).toContain(`/projects/${options.project}/src/app/${componentName}/${componentName}.module.ts`); - }); - - it('should add declaration component in closest module by default', async () => { - const options = { ...componentOptions, name: 'customers' }; - const tree = await runner.runSchematic('po-page-dynamic-search', options, appTree); - - const moduleContent = getFileContent(tree, `/projects/${componentOptions.name}/src/app/app.module.ts`); - - expect(moduleContent).toMatch(/import.*CustomersComponent.*from '.\/customers\/customers.component'/); - expect(moduleContent).toMatch(/declarations:\s*\[[^\]]+?,\r?\n\s+CustomersComponent\r?\n/m); - }); - - it('should import component module if createModule is true', async () => { - const options = { ...componentOptions, name: 'customers', createModule: true }; - - const tree = await runner.runSchematic('po-page-dynamic-search', options, appTree); - const moduleContent = getFileContent(tree, `/projects/${componentOptions.name}/src/app/app.module.ts`); - - expect(moduleContent).toMatch(/import.*CustomersModule.*from '.\/customers\/customers.module'/); - expect(moduleContent).toMatch(/imports:\s*\[[^\]]+?,\r?\n\s+CustomersModule\r?\n/m); - }); - - it('should generate component.less if style is `less`', async () => { - const options = { ...componentOptions, name: 'customers', style: 'less' }; - const tree = await runner.runSchematic('po-page-dynamic-search', options, appTree); - - const files = tree.files; - - expect(files).toContain( - `/projects/${componentOptions.name}/src/app/customers/customers.component.${options.style}` - ); - }); - - it('should generate component with stylesheet `css` if options.style is empty', async () => { - const options = { ...componentOptions, name: 'customers', style: '' }; - - const tree = await runner.runSchematic('po-page-dynamic-search', options, appTree); - const files = tree.files; - - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.css`); - }); - - it('shouldn`t generate component spec if `skipTests` is true', async () => { - const options = { ...componentOptions, name: 'customers', skipTests: true }; - const tree = await runner.runSchematic('po-page-dynamic-search', options, appTree); - - const files = tree.files; - - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.ts`); - expect(files).not.toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.spec.ts`); - }); - - it('should generate component in path informed', async () => { - // create customers component module to use with path option - const options = { ...componentOptions, name: 'customers', createModule: true }; - await runner.runSchematic('po-page-dynamic-search', options, appTree); - - const optionsPath = { - ...componentOptions, - name: 'wms', - path: `/projects/${componentOptions.name}/src/app/customers` - }; - - const treePath = await runner.runSchematic('po-page-dynamic-search', optionsPath, appTree); - - const files = treePath.files; - - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.spec.ts`); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.ts`); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.html`); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.${options.style}`); - }); - - it('should use the custom prefix when create component', async () => { - const prefix = 'wms'; - - const options = { ...componentOptions, name: 'customers', prefix }; - const tree = await runner.runSchematic('po-page-dynamic-search', options, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` - ); - - expect(componentContent).toMatch(new RegExp(`selector: '${prefix}-customers'`)); - }); - - it('should use the default prefix when create component if prefix is null', async () => { - const prefix = undefined; - - const options = { ...componentOptions, name: 'customers', sample: true, prefix }; - const tree = await runner.runSchematic('po-page-dynamic-search', options, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` - ); - - expect(componentContent).toMatch(new RegExp(`selector: 'app-customers'`)); - }); - - it('should use only the name how prefix when create component if prefix is ""', async () => { - const prefix = ''; - - const options = { ...componentOptions, name: 'customers', prefix }; - const tree = await runner.runSchematic('po-page-dynamic-search', options, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` - ); - - expect(componentContent).toMatch(new RegExp(`selector: 'customers'`)); - }); -}); - -/** Gets the content of a specified file from a schematic tree. */ -function getFileContent(tree: Tree, filePath: string): string { - const contentBuffer = tree.read(filePath); - - if (!contentBuffer) { - throw new Error(`Cannot read "${filePath}" because it does not exist.`); - } - - return contentBuffer.toString(); -} diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-search/index.ts b/projects/templates/schematics/ng-generate/po-page-dynamic-search/index.ts deleted file mode 100644 index 0668538b7a..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-search/index.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { chain, Rule } from '@angular-devkit/schematics'; - -import { buildComponent } from '@po-ui/ng-schematics/build-component'; - -import { Schema as ComponentOptions } from './schema'; - -/** Scaffolds a new component with */ -export default function (options: ComponentOptions): Rule { - return chain([createPageDynamicSearchComponent(options)]); -} - -function createPageDynamicSearchComponent(options: ComponentOptions): Rule { - return buildComponent(options); -} diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-search/schema.json b/projects/templates/schematics/ng-generate/po-page-dynamic-search/schema.json deleted file mode 100644 index da4609117c..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-search/schema.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema", - "$id": "SchematicsPOPageDynamicSearch", - "title": "Page Dynamic Search Options Schema", - "type": "object", - "properties": { - "style": { - "description": "The file extension or preprocessor to use for style files.", - "type": "string", - "default": "css" - }, - "project": { - "type": "string", - "description": "The name of the project.", - "$default": { - "$source": "projectName" - } - }, - "routing": { - "type": "boolean", - "description": "When true, creates a routing module.", - "default": false - }, - "createModule": { - "type": "boolean", - "description": "When true, create a component module.", - "default": false - }, - "name": { - "type": "string", - "description": "The name to use for the component", - "$default": { - "$source": "argv", - "index": 0 - }, - "x-prompt": "What name would you like to use for the component?" - }, - "skipTests": { - "description": "When true, does not create \"spec.ts\" test files for the app.", - "type": "boolean", - "default": false, - "alias": "S", - "x-user-analytics": 12 - }, - "path": { - "type": "string", - "format": "path", - "description": "The path at which to create the component file, relative to the current workspace. Default is a folder with the same name as the component in the project root.", - "visible": false - }, - "prefix": { - "type": "string", - "description": "The prefix to apply to the generated component selector.", - "alias": "p", - "oneOf": [ - { - "maxLength": 0 - }, - { - "minLength": 1, - "format": "html-selector" - } - ] - } - }, - "required": ["name"] -} diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-search/schema.ts b/projects/templates/schematics/ng-generate/po-page-dynamic-search/schema.ts deleted file mode 100644 index 0e5e0a349d..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-search/schema.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Schema as ComponentSchema } from '@po-ui/ng-schematics/build-component'; - -export interface Schema extends ComponentSchema {} diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-table/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template b/projects/templates/schematics/ng-generate/po-page-dynamic-table/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-table/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template b/projects/templates/schematics/ng-generate/po-page-dynamic-table/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template deleted file mode 100644 index 80ab266341..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-table/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template +++ /dev/null @@ -1,5 +0,0 @@ - - diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-table/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template b/projects/templates/schematics/ng-generate/po-page-dynamic-table/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template deleted file mode 100644 index 0288a958b0..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-table/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +++ /dev/null @@ -1,34 +0,0 @@ -import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { provideLocationMocks } from '@angular/common/testing'; -import { RouterModule } from '@angular/router'; -import { provideHttpClient } from '@angular/common/http'; - -import { PoPageDynamicTableModule } from '@po-ui/ng-templates'; - -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component'; - -describe('<%= classify(name) %>Component', () => { - let component: <%= classify(name) %>Component; - let fixture: ComponentFixture<<%= classify(name) %>Component>; - - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - imports: [ - RouterModule.forRoot([]), - PoPageDynamicTableModule - ], - providers: [provideLocationMocks(), provideHttpClient()] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(<%= classify(name) %>Component); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-table/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template b/projects/templates/schematics/ng-generate/po-page-dynamic-table/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template deleted file mode 100644 index d13df7e21a..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-table/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +++ /dev/null @@ -1,27 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { CommonModule } from '@angular/common'; - -import { PoPageDynamicTableModule } from '@po-ui/ng-templates'; -import { PoPageDynamicTableActions } from '@po-ui/ng-templates'; - -@Component({ - selector: '<%= selector %>', - imports: [ - CommonModule, - PoPageDynamicTableModule, - ], - templateUrl: './<%= dasherize(name) %>.component.html', - styleUrls: ['./<%= dasherize(name) %>.component.<%= style %>'] -}) -export class <%= classify(name) %>Component implements OnInit { - - // PLEASE ADD THE API URL SERVICE HERE - readonly apiService = 'http://localhost:8080/api'; - - readonly actions: PoPageDynamicTableActions = { }; - - constructor() { } - - ngOnInit() { } - -} diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template b/projects/templates/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template deleted file mode 100644 index 08a37212f2..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template +++ /dev/null @@ -1,14 +0,0 @@ -import { NgModule } from '@angular/core'; -import { Routes, RouterModule } from '@angular/router'; - -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component'; - -const routes: Routes = [ - { path: '', component: <%= classify(name) %>Component } -]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class <%= classify(name) %>RoutingModule { } diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template b/projects/templates/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template b/projects/templates/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template deleted file mode 100644 index 80ab266341..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template +++ /dev/null @@ -1,5 +0,0 @@ - - diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template b/projects/templates/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template deleted file mode 100644 index 2e2983bb18..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +++ /dev/null @@ -1,35 +0,0 @@ -import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { provideLocationMocks } from '@angular/common/testing'; -import { RouterModule } from '@angular/router'; -import { provideHttpClient } from '@angular/common/http'; - -import { PoPageDynamicTableModule } from '@po-ui/ng-templates'; - -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component'; - -describe('<%= classify(name) %>Component', () => { - let component: <%= classify(name) %>Component; - let fixture: ComponentFixture<<%= classify(name) %>Component>; - - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - imports: [ - RouterModule.forRoot([]), - PoPageDynamicTableModule - ], - providers: [provideLocationMocks(), provideHttpClient()], - declarations: [ <%= classify(name) %>Component ] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(<%= classify(name) %>Component); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template b/projects/templates/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template deleted file mode 100644 index ca3eacb583..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +++ /dev/null @@ -1,22 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -import { PoPageDynamicTableActions } from '@po-ui/ng-templates'; - -@Component({ - selector: '<%= selector %>', - templateUrl: './<%= dasherize(name) %>.component.html', - styleUrls: ['./<%= dasherize(name) %>.component.<%= style %>'], - standalone: false -}) -export class <%= classify(name) %>Component implements OnInit { - - // PLEASE ADD THE API URL SERVICE HERE - readonly apiService = 'http://localhost:8080/api'; - - readonly actions: PoPageDynamicTableActions = { }; - - constructor() { } - - ngOnInit() { } - -} diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template b/projects/templates/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template deleted file mode 100644 index 87f5db5348..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template +++ /dev/null @@ -1,19 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; - -import { PoPageDynamicTableModule } from '@po-ui/ng-templates'; - -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component';<% if (routing) { %> -import { <%= classify(name) %>RoutingModule } from './<%= dasherize(name) %>-routing.module';<% } %> - -@NgModule({ - declarations: [ - <%= classify(name) %>Component - ], - imports: [ - CommonModule, - PoPageDynamicTableModule,<% if (routing) { %> - <%= classify(name) %>RoutingModule<% } %> - ] -}) -export class <%= classify(name) %>Module { } diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-table/index.spec.ts b/projects/templates/schematics/ng-generate/po-page-dynamic-table/index.spec.ts deleted file mode 100644 index 9412be080f..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-table/index.spec.ts +++ /dev/null @@ -1,184 +0,0 @@ -import { Tree } from '@angular-devkit/schematics'; -import { SchematicTestRunner, UnitTestTree } from '@angular-devkit/schematics/testing'; -import { Schema as WorkspaceOptions } from '@schematics/angular/workspace/schema'; -import * as path from 'path'; - -const collectionPath = path.join(__dirname, '../../collection.json'); - -xdescribe('po-page-dynamic-table:', () => { - const runner = new SchematicTestRunner('schematics', collectionPath); - - const workspaceOptions: WorkspaceOptions = { - name: 'workspace', - newProjectRoot: 'projects', - version: '6.0.0' - }; - - const componentOptions: any = { - name: 'po', - style: 'css', - skipTests: false - }; - - let appTree: UnitTestTree; - - beforeEach(async () => { - appTree = await runner.runExternalSchematic('@schematics/angular', 'workspace', workspaceOptions); - appTree = await runner.runExternalSchematic('@schematics/angular', 'application', componentOptions, appTree); - }); - - it('should create component', async () => { - const componentName = 'supply'; - const tree = await runner.runSchematic( - 'po-page-dynamic-table', - { ...componentOptions, name: componentName }, - appTree - ); - const files: Array = tree.files; - - const fullFilePath = (ext: string) => - `/projects/${componentOptions.name}/src/app/${componentName}/${componentName}.component.${ext}`; - - expect(files).toContain(fullFilePath('ts')); - expect(files).toContain(fullFilePath('html')); - expect(files).toContain(fullFilePath('spec.ts')); - expect(files).toContain(fullFilePath(componentOptions.style)); - }); - - it('should create component and module', async () => { - const componentName = 'supply'; - const createModule = true; - - const options = { ...componentOptions, name: componentName, createModule, project: 'po' }; - - const tree = await runner.runSchematic('po-page-dynamic-table', options, appTree); - - const files: Array = tree.files; - - expect(files).toContain(`/projects/${options.project}/src/app/${componentName}/${componentName}.module.ts`); - }); - - it('should add declaration component in closest module by default', async () => { - const options = { ...componentOptions, name: 'customers' }; - const tree = await runner.runSchematic('po-page-dynamic-table', options, appTree); - - const moduleContent = getFileContent(tree, `/projects/${componentOptions.name}/src/app/app.module.ts`); - - expect(moduleContent).toMatch(/import.*CustomersComponent.*from '.\/customers\/customers.component'/); - expect(moduleContent).toMatch(/declarations:\s*\[[^\]]+?,\r?\n\s+CustomersComponent\r?\n/m); - }); - - it('should import component module if createModule is true', async () => { - const options = { ...componentOptions, name: 'customers', createModule: true }; - - const tree = await runner.runSchematic('po-page-dynamic-table', options, appTree); - const moduleContent = getFileContent(tree, `/projects/${componentOptions.name}/src/app/app.module.ts`); - - expect(moduleContent).toMatch(/import.*CustomersModule.*from '.\/customers\/customers.module'/); - expect(moduleContent).toMatch(/imports:\s*\[[^\]]+?,\r?\n\s+CustomersModule\r?\n/m); - }); - - it('should generate component.less if style is `less`', async () => { - const options = { ...componentOptions, name: 'customers', style: 'less' }; - const tree = await runner.runSchematic('po-page-dynamic-table', options, appTree); - - const files = tree.files; - - expect(files).toContain( - `/projects/${componentOptions.name}/src/app/customers/customers.component.${options.style}` - ); - }); - - it('should generate component with stylesheet `css` if options.style is empty', async () => { - const options = { ...componentOptions, name: 'customers', style: '' }; - - const tree = await runner.runSchematic('po-page-dynamic-table', options, appTree); - const files = tree.files; - - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.css`); - }); - - it('shouldn`t generate component spec if `skipTests` is true', async () => { - const options = { ...componentOptions, name: 'customers', skipTests: true }; - const tree = await runner.runSchematic('po-page-dynamic-table', options, appTree); - - const files = tree.files; - - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.ts`); - expect(files).not.toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.spec.ts`); - }); - - it('should generate component in path informed', async () => { - // create customers component module to use with path option - const options = { ...componentOptions, name: 'customers', createModule: true }; - await runner.runSchematic('po-page-dynamic-table', options, appTree); - - const optionsPath = { - ...componentOptions, - name: 'wms', - path: `/projects/${componentOptions.name}/src/app/customers` - }; - - const treePath = await runner.runSchematic('po-page-dynamic-table', optionsPath, appTree); - - const files = treePath.files; - - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.spec.ts`); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.ts`); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.html`); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.${options.style}`); - }); - - it('should use the custom prefix when create component', async () => { - const prefix = 'wms'; - - const options = { ...componentOptions, name: 'customers', prefix }; - const tree = await runner.runSchematic('po-page-dynamic-table', options, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` - ); - - expect(componentContent).toMatch(new RegExp(`selector: '${prefix}-customers'`)); - }); - - it('should use the default prefix when create component if prefix is null', async () => { - const prefix = undefined; - - const options = { ...componentOptions, name: 'customers', sample: true, prefix }; - const tree = await runner.runSchematic('po-page-dynamic-table', options, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` - ); - - expect(componentContent).toMatch(new RegExp(`selector: 'app-customers'`)); - }); - - it('should use only the name how prefix when create component if prefix is ""', async () => { - const prefix = ''; - - const options = { ...componentOptions, name: 'customers', prefix }; - const tree = await runner.runSchematic('po-page-dynamic-table', options, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` - ); - - expect(componentContent).toMatch(new RegExp(`selector: 'customers'`)); - }); -}); - -/** Gets the content of a specified file from a schematic tree. */ -function getFileContent(tree: Tree, filePath: string): string { - const contentBuffer = tree.read(filePath); - - if (!contentBuffer) { - throw new Error(`Cannot read "${filePath}" because it does not exist.`); - } - - return contentBuffer.toString(); -} diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-table/index.ts b/projects/templates/schematics/ng-generate/po-page-dynamic-table/index.ts deleted file mode 100644 index 5d2392a7db..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-table/index.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { chain, Rule } from '@angular-devkit/schematics'; - -import { buildComponent } from '@po-ui/ng-schematics/build-component'; - -import { Schema as ComponentOptions } from './schema'; - -/** Scaffolds a new component with */ -export default function (options: ComponentOptions): Rule { - return chain([createPageDynamicTableComponent(options)]); -} - -function createPageDynamicTableComponent(options: ComponentOptions): Rule { - return buildComponent(options); -} diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-table/schema.json b/projects/templates/schematics/ng-generate/po-page-dynamic-table/schema.json deleted file mode 100644 index 0e325e6778..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-table/schema.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema", - "$id": "SchematicsPOPageDynamicTable", - "title": "Page Dynamic Table Options Schema", - "type": "object", - "properties": { - "style": { - "description": "The file extension or preprocessor to use for style files.", - "type": "string", - "default": "css" - }, - "project": { - "type": "string", - "description": "The name of the project.", - "$default": { - "$source": "projectName" - } - }, - "routing": { - "type": "boolean", - "description": "When true, creates a routing module.", - "default": false - }, - "createModule": { - "type": "boolean", - "description": "When true, create a component module.", - "default": false - }, - "name": { - "type": "string", - "description": "The name to use for the component", - "$default": { - "$source": "argv", - "index": 0 - }, - "x-prompt": "What name would you like to use for the component?" - }, - "skipTests": { - "description": "When true, does not create \"spec.ts\" test files for the app.", - "type": "boolean", - "default": false, - "alias": "S", - "x-user-analytics": 12 - }, - "path": { - "type": "string", - "format": "path", - "description": "The path at which to create the component file, relative to the current workspace. Default is a folder with the same name as the component in the project root.", - "visible": false - }, - "prefix": { - "type": "string", - "description": "The prefix to apply to the generated component selector.", - "alias": "p", - "oneOf": [ - { - "maxLength": 0 - }, - { - "minLength": 1, - "format": "html-selector" - } - ] - } - }, - "required": ["name"] -} diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-table/schema.ts b/projects/templates/schematics/ng-generate/po-page-dynamic-table/schema.ts deleted file mode 100644 index 0e5e0a349d..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-table/schema.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Schema as ComponentSchema } from '@po-ui/ng-schematics/build-component'; - -export interface Schema extends ComponentSchema {} diff --git a/projects/templates/schematics/ng-generate/po-page-job-scheduler/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template b/projects/templates/schematics/ng-generate/po-page-job-scheduler/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/projects/templates/schematics/ng-generate/po-page-job-scheduler/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template b/projects/templates/schematics/ng-generate/po-page-job-scheduler/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template deleted file mode 100644 index a0f6a54bd2..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-job-scheduler/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template +++ /dev/null @@ -1,4 +0,0 @@ - - \ No newline at end of file diff --git a/projects/templates/schematics/ng-generate/po-page-job-scheduler/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template b/projects/templates/schematics/ng-generate/po-page-job-scheduler/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template deleted file mode 100644 index 9b1f4cd923..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-job-scheduler/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +++ /dev/null @@ -1,34 +0,0 @@ -import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { provideLocationMocks } from '@angular/common/testing'; -import { RouterModule } from '@angular/router'; -import { provideHttpClient } from '@angular/common/http'; - -import { PoPageJobSchedulerModule } from '@po-ui/ng-templates'; - -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component'; - -describe('<%= classify(name) %>Component', () => { - let component: <%= classify(name) %>Component; - let fixture: ComponentFixture<<%= classify(name) %>Component>; - - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - imports: [ - RouterModule.forRoot([]), - PoPageJobSchedulerModule - ], - providers: [provideLocationMocks(), provideHttpClient()] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(<%= classify(name) %>Component); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/projects/templates/schematics/ng-generate/po-page-job-scheduler/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template b/projects/templates/schematics/ng-generate/po-page-job-scheduler/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template deleted file mode 100644 index 253d885129..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-job-scheduler/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +++ /dev/null @@ -1,24 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { CommonModule } from '@angular/common'; - -import { PoPageJobSchedulerModule } from '@po-ui/ng-templates'; - -@Component({ - selector: '<%= selector %>', - imports: [ - CommonModule, - PoPageJobSchedulerModule, - ], - templateUrl: './<%= dasherize(name) %>.component.html', - styleUrls: ['./<%= dasherize(name) %>.component.<%= style %>'] -}) -export class <%= classify(name) %>Component implements OnInit { - - // PLEASE ADD THE API URL SERVICE HERE - readonly apiService = 'http://localhost:8080/api'; - - constructor() { } - - ngOnInit() { } - -} diff --git a/projects/templates/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template b/projects/templates/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template deleted file mode 100644 index 08a37212f2..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template +++ /dev/null @@ -1,14 +0,0 @@ -import { NgModule } from '@angular/core'; -import { Routes, RouterModule } from '@angular/router'; - -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component'; - -const routes: Routes = [ - { path: '', component: <%= classify(name) %>Component } -]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class <%= classify(name) %>RoutingModule { } diff --git a/projects/templates/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template b/projects/templates/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/projects/templates/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template b/projects/templates/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template deleted file mode 100644 index a0f6a54bd2..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template +++ /dev/null @@ -1,4 +0,0 @@ - - \ No newline at end of file diff --git a/projects/templates/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template b/projects/templates/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template deleted file mode 100644 index caebe5c3d7..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +++ /dev/null @@ -1,35 +0,0 @@ -import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { provideLocationMocks } from '@angular/common/testing'; -import { RouterModule } from '@angular/router'; -import { provideHttpClient } from '@angular/common/http'; - -import { PoPageJobSchedulerModule } from '@po-ui/ng-templates'; - -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component'; - -describe('<%= classify(name) %>Component', () => { - let component: <%= classify(name) %>Component; - let fixture: ComponentFixture<<%= classify(name) %>Component>; - - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - imports: [ - RouterModule.forRoot([]), - PoPageJobSchedulerModule - ], - providers: [provideLocationMocks(), provideHttpClient()], - declarations: [ <%= classify(name) %>Component ] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(<%= classify(name) %>Component); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/projects/templates/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template b/projects/templates/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template deleted file mode 100644 index 3c4ebde1fb..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +++ /dev/null @@ -1,18 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: '<%= selector %>', - templateUrl: './<%= dasherize(name) %>.component.html', - styleUrls: ['./<%= dasherize(name) %>.component.<%= style %>'], - standalone: false -}) -export class <%= classify(name) %>Component implements OnInit { - - // PLEASE ADD THE API URL SERVICE HERE - readonly apiService = 'http://localhost:8080/api'; - - constructor() { } - - ngOnInit() { } - -} diff --git a/projects/templates/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template b/projects/templates/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template deleted file mode 100644 index a84063cc15..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template +++ /dev/null @@ -1,19 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; - -import { PoPageJobSchedulerModule } from '@po-ui/ng-templates'; - -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component';<% if (routing) { %> -import { <%= classify(name) %>RoutingModule } from './<%= dasherize(name) %>-routing.module';<% } %> - -@NgModule({ - declarations: [ - <%= classify(name) %>Component - ], - imports: [ - CommonModule, - PoPageJobSchedulerModule,<% if (routing) { %> - <%= classify(name) %>RoutingModule<% } %> - ] -}) -export class <%= classify(name) %>Module { } diff --git a/projects/templates/schematics/ng-generate/po-page-job-scheduler/index.spec.ts b/projects/templates/schematics/ng-generate/po-page-job-scheduler/index.spec.ts deleted file mode 100644 index c1b0f1f478..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-job-scheduler/index.spec.ts +++ /dev/null @@ -1,184 +0,0 @@ -import { Tree } from '@angular-devkit/schematics'; -import { SchematicTestRunner, UnitTestTree } from '@angular-devkit/schematics/testing'; -import { Schema as WorkspaceOptions } from '@schematics/angular/workspace/schema'; -import * as path from 'path'; - -const collectionPath = path.join(__dirname, '../../collection.json'); - -xdescribe('po-page-job-scheduler:', () => { - const runner = new SchematicTestRunner('schematics', collectionPath); - - const workspaceOptions: WorkspaceOptions = { - name: 'workspace', - newProjectRoot: 'projects', - version: '6.0.0' - }; - - const componentOptions: any = { - name: 'po', - style: 'css', - skipTests: false - }; - - let appTree: UnitTestTree; - - beforeEach(async () => { - appTree = await runner.runExternalSchematic('@schematics/angular', 'workspace', workspaceOptions); - appTree = await runner.runExternalSchematic('@schematics/angular', 'application', componentOptions, appTree); - }); - - it('should create component', async () => { - const componentName = 'supply'; - const tree = await runner.runSchematic( - 'po-page-job-scheduler', - { ...componentOptions, name: componentName }, - appTree - ); - const files: Array = tree.files; - - const fullFilePath = (ext: string) => - `/projects/${componentOptions.name}/src/app/${componentName}/${componentName}.component.${ext}`; - - expect(files).toContain(fullFilePath('ts')); - expect(files).toContain(fullFilePath('html')); - expect(files).toContain(fullFilePath('spec.ts')); - expect(files).toContain(fullFilePath(componentOptions.style)); - }); - - it('should create component and module', async () => { - const componentName = 'supply'; - const createModule = true; - - const options = { ...componentOptions, name: componentName, createModule, project: 'po' }; - - const tree = await runner.runSchematic('po-page-job-scheduler', options, appTree); - - const files: Array = tree.files; - - expect(files).toContain(`/projects/${options.project}/src/app/${componentName}/${componentName}.module.ts`); - }); - - it('should add declaration component in closest module by default', async () => { - const options = { ...componentOptions, name: 'customers' }; - const tree = await runner.runSchematic('po-page-job-scheduler', options, appTree); - - const moduleContent = getFileContent(tree, `/projects/${componentOptions.name}/src/app/app.module.ts`); - - expect(moduleContent).toMatch(/import.*CustomersComponent.*from '.\/customers\/customers.component'/); - expect(moduleContent).toMatch(/declarations:\s*\[[^\]]+?,\r?\n\s+CustomersComponent\r?\n/m); - }); - - it('should import component module if createModule is true', async () => { - const options = { ...componentOptions, name: 'customers', createModule: true }; - - const tree = await runner.runSchematic('po-page-job-scheduler', options, appTree); - const moduleContent = getFileContent(tree, `/projects/${componentOptions.name}/src/app/app.module.ts`); - - expect(moduleContent).toMatch(/import.*CustomersModule.*from '.\/customers\/customers.module'/); - expect(moduleContent).toMatch(/imports:\s*\[[^\]]+?,\r?\n\s+CustomersModule\r?\n/m); - }); - - it('should generate component.less if style is `less`', async () => { - const options = { ...componentOptions, name: 'customers', style: 'less' }; - const tree = await runner.runSchematic('po-page-job-scheduler', options, appTree); - - const files = tree.files; - - expect(files).toContain( - `/projects/${componentOptions.name}/src/app/customers/customers.component.${options.style}` - ); - }); - - it('should generate component with stylesheet `css` if options.style is empty', async () => { - const options = { ...componentOptions, name: 'customers', style: '' }; - - const tree = await runner.runSchematic('po-page-job-scheduler', options, appTree); - const files = tree.files; - - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.css`); - }); - - it('shouldn`t generate component spec if `skipTests` is true', async () => { - const options = { ...componentOptions, name: 'customers', skipTests: true }; - const tree = await runner.runSchematic('po-page-job-scheduler', options, appTree); - - const files = tree.files; - - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.ts`); - expect(files).not.toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.spec.ts`); - }); - - it('should generate component in path informed', async () => { - // create customers component module to use with path option - const options = { ...componentOptions, name: 'customers', createModule: true }; - await runner.runSchematic('po-page-job-scheduler', options, appTree); - - const optionsPath = { - ...componentOptions, - name: 'wms', - path: `/projects/${componentOptions.name}/src/app/customers` - }; - - const treePath = await runner.runSchematic('po-page-job-scheduler', optionsPath, appTree); - - const files = treePath.files; - - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.spec.ts`); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.ts`); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.html`); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.${options.style}`); - }); - - it('should use the custom prefix when create component', async () => { - const prefix = 'wms'; - - const options = { ...componentOptions, name: 'customers', prefix }; - const tree = await runner.runSchematic('po-page-job-scheduler', options, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` - ); - - expect(componentContent).toMatch(new RegExp(`selector: '${prefix}-customers'`)); - }); - - it('should use the default prefix when create component if prefix is null', async () => { - const prefix = undefined; - - const options = { ...componentOptions, name: 'customers', sample: true, prefix }; - const tree = await runner.runSchematic('po-page-job-scheduler', options, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` - ); - - expect(componentContent).toMatch(new RegExp(`selector: 'app-customers'`)); - }); - - it('should use only the name how prefix when create component if prefix is ""', async () => { - const prefix = ''; - - const options = { ...componentOptions, name: 'customers', prefix }; - const tree = await runner.runSchematic('po-page-job-scheduler', options, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` - ); - - expect(componentContent).toMatch(new RegExp(`selector: 'customers'`)); - }); -}); - -/** Gets the content of a specified file from a schematic tree. */ -function getFileContent(tree: Tree, filePath: string): string { - const contentBuffer = tree.read(filePath); - - if (!contentBuffer) { - throw new Error(`Cannot read "${filePath}" because it does not exist.`); - } - - return contentBuffer.toString(); -} diff --git a/projects/templates/schematics/ng-generate/po-page-job-scheduler/index.ts b/projects/templates/schematics/ng-generate/po-page-job-scheduler/index.ts deleted file mode 100644 index 6aa9424ec3..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-job-scheduler/index.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { chain, Rule } from '@angular-devkit/schematics'; - -import { buildComponent } from '@po-ui/ng-schematics/build-component'; - -import { Schema as ComponentOptions } from './schema'; - -/** Scaffolds a new component with */ -export default function (options: ComponentOptions): Rule { - return chain([createPageJobSchedulerComponent(options)]); -} - -function createPageJobSchedulerComponent(options: ComponentOptions): Rule { - return buildComponent(options); -} diff --git a/projects/templates/schematics/ng-generate/po-page-job-scheduler/schema.json b/projects/templates/schematics/ng-generate/po-page-job-scheduler/schema.json deleted file mode 100644 index 0e28a7bdd2..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-job-scheduler/schema.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema", - "$id": "SchematicsPOPageJobScheduler", - "title": "Page Job Scheduler Options Schema", - "type": "object", - "properties": { - "style": { - "description": "The file extension or preprocessor to use for style files.", - "type": "string", - "default": "css" - }, - "project": { - "type": "string", - "description": "The name of the project.", - "$default": { - "$source": "projectName" - } - }, - "routing": { - "type": "boolean", - "description": "When true, creates a routing module.", - "default": false - }, - "createModule": { - "type": "boolean", - "description": "When true, create a component module.", - "default": false - }, - "name": { - "type": "string", - "description": "The name to use for the component", - "$default": { - "$source": "argv", - "index": 0 - }, - "x-prompt": "What name would you like to use for the component?" - }, - "skipTests": { - "description": "When true, does not create \"spec.ts\" test files for the app.", - "type": "boolean", - "default": false, - "alias": "S", - "x-user-analytics": 12 - }, - "path": { - "type": "string", - "format": "path", - "description": "The path at which to create the component file, relative to the current workspace. Default is a folder with the same name as the component in the project root.", - "visible": false - }, - "prefix": { - "type": "string", - "description": "The prefix to apply to the generated component selector.", - "alias": "p", - "oneOf": [ - { - "maxLength": 0 - }, - { - "minLength": 1, - "format": "html-selector" - } - ] - } - }, - "required": ["name"] -} diff --git a/projects/templates/schematics/ng-generate/po-page-job-scheduler/schema.ts b/projects/templates/schematics/ng-generate/po-page-job-scheduler/schema.ts deleted file mode 100644 index 0e5e0a349d..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-job-scheduler/schema.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Schema as ComponentSchema } from '@po-ui/ng-schematics/build-component'; - -export interface Schema extends ComponentSchema {} diff --git a/projects/templates/schematics/ng-generate/po-page-login/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template b/projects/templates/schematics/ng-generate/po-page-login/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/projects/templates/schematics/ng-generate/po-page-login/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template b/projects/templates/schematics/ng-generate/po-page-login/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template deleted file mode 100644 index 1620011e8d..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-login/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/projects/templates/schematics/ng-generate/po-page-login/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template b/projects/templates/schematics/ng-generate/po-page-login/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template deleted file mode 100644 index 2295cda502..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-login/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +++ /dev/null @@ -1,34 +0,0 @@ -import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { provideLocationMocks } from '@angular/common/testing'; -import { RouterModule } from '@angular/router'; -import { provideHttpClient } from '@angular/common/http'; - -import { PoPageLoginModule } from '@po-ui/ng-templates'; - -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component'; - -describe('<%= classify(name) %>Component', () => { - let component: <%= classify(name) %>Component; - let fixture: ComponentFixture<<%= classify(name) %>Component>; - - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - imports: [ - RouterModule.forRoot([]), - PoPageLoginModule - ], - providers: [provideLocationMocks(), provideHttpClient()] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(<%= classify(name) %>Component); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/projects/templates/schematics/ng-generate/po-page-login/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template b/projects/templates/schematics/ng-generate/po-page-login/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template deleted file mode 100644 index e0c8d6013a..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-login/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +++ /dev/null @@ -1,22 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { CommonModule } from '@angular/common'; - -import { PoPageLoginModule } from '@po-ui/ng-templates'; - - -@Component({ - selector: '<%= selector %>', - imports: [ - CommonModule, - PoPageLoginModule, - ], - templateUrl: './<%= dasherize(name) %>.component.html', - styleUrls: ['./<%= dasherize(name) %>.component.<%= style %>'] -}) -export class <%= classify(name) %>Component implements OnInit { - - constructor() { } - - ngOnInit() { } - -} diff --git a/projects/templates/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template b/projects/templates/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template deleted file mode 100644 index 08a37212f2..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template +++ /dev/null @@ -1,14 +0,0 @@ -import { NgModule } from '@angular/core'; -import { Routes, RouterModule } from '@angular/router'; - -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component'; - -const routes: Routes = [ - { path: '', component: <%= classify(name) %>Component } -]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class <%= classify(name) %>RoutingModule { } diff --git a/projects/templates/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template b/projects/templates/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/projects/templates/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template b/projects/templates/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template deleted file mode 100644 index 1620011e8d..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/projects/templates/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template b/projects/templates/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template deleted file mode 100644 index 9d35e76d3a..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +++ /dev/null @@ -1,35 +0,0 @@ -import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { provideLocationMocks } from '@angular/common/testing'; -import { RouterModule } from '@angular/router'; -import { provideHttpClient } from '@angular/common/http'; - -import { PoPageLoginModule } from '@po-ui/ng-templates'; - -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component'; - -describe('<%= classify(name) %>Component', () => { - let component: <%= classify(name) %>Component; - let fixture: ComponentFixture<<%= classify(name) %>Component>; - - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - imports: [ - RouterModule.forRoot([]), - PoPageLoginModule - ], - providers: [provideLocationMocks(), provideHttpClient()], - declarations: [ <%= classify(name) %>Component ] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(<%= classify(name) %>Component); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/projects/templates/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template b/projects/templates/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template deleted file mode 100644 index 021ed143f7..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +++ /dev/null @@ -1,15 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: '<%= selector %>', - templateUrl: './<%= dasherize(name) %>.component.html', - styleUrls: ['./<%= dasherize(name) %>.component.<%= style %>'], - standalone: false -}) -export class <%= classify(name) %>Component implements OnInit { - - constructor() { } - - ngOnInit() { } - -} diff --git a/projects/templates/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template b/projects/templates/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template deleted file mode 100644 index 05554564e9..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template +++ /dev/null @@ -1,19 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; - -import { PoPageLoginModule } from '@po-ui/ng-templates'; - -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component';<% if (routing) { %> -import { <%= classify(name) %>RoutingModule } from './<%= dasherize(name) %>-routing.module';<% } %> - -@NgModule({ - declarations: [ - <%= classify(name) %>Component - ], - imports: [ - CommonModule, - PoPageLoginModule,<% if (routing) { %> - <%= classify(name) %>RoutingModule<% } %> - ] -}) -export class <%= classify(name) %>Module { } diff --git a/projects/templates/schematics/ng-generate/po-page-login/index.spec.ts b/projects/templates/schematics/ng-generate/po-page-login/index.spec.ts deleted file mode 100644 index 34a64f5401..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-login/index.spec.ts +++ /dev/null @@ -1,180 +0,0 @@ -import { Tree } from '@angular-devkit/schematics'; -import { SchematicTestRunner, UnitTestTree } from '@angular-devkit/schematics/testing'; -import { Schema as WorkspaceOptions } from '@schematics/angular/workspace/schema'; -import * as path from 'path'; - -const collectionPath = path.join(__dirname, '../../collection.json'); - -xdescribe('po-page-login:', () => { - const runner = new SchematicTestRunner('schematics', collectionPath); - - const workspaceOptions: WorkspaceOptions = { - name: 'workspace', - newProjectRoot: 'projects', - version: '6.0.0' - }; - - const componentOptions: any = { - name: 'po', - style: 'css', - skipTests: false - }; - - let appTree: UnitTestTree; - - beforeEach(async () => { - appTree = await runner.runExternalSchematic('@schematics/angular', 'workspace', workspaceOptions); - appTree = await runner.runExternalSchematic('@schematics/angular', 'application', componentOptions, appTree); - }); - - it('should create component', async () => { - const componentName = 'supply'; - const tree = await runner.runSchematic('po-page-login', { ...componentOptions, name: componentName }, appTree); - const files: Array = tree.files; - - const fullFilePath = (ext: string) => - `/projects/${componentOptions.name}/src/app/${componentName}/${componentName}.component.${ext}`; - - expect(files).toContain(fullFilePath('ts')); - expect(files).toContain(fullFilePath('html')); - expect(files).toContain(fullFilePath('spec.ts')); - expect(files).toContain(fullFilePath(componentOptions.style)); - }); - - it('should create component and module', async () => { - const componentName = 'supply'; - const createModule = true; - - const options = { ...componentOptions, name: componentName, createModule, project: 'po' }; - - const tree = await runner.runSchematic('po-page-login', options, appTree); - - const files: Array = tree.files; - - expect(files).toContain(`/projects/${options.project}/src/app/${componentName}/${componentName}.module.ts`); - }); - - it('should add declaration component in closest module by default', async () => { - const options = { ...componentOptions, name: 'customers' }; - const tree = await runner.runSchematic('po-page-login', options, appTree); - - const moduleContent = getFileContent(tree, `/projects/${componentOptions.name}/src/app/app.module.ts`); - - expect(moduleContent).toMatch(/import.*CustomersComponent.*from '.\/customers\/customers.component'/); - expect(moduleContent).toMatch(/declarations:\s*\[[^\]]+?,\r?\n\s+CustomersComponent\r?\n/m); - }); - - it('should import component module if createModule is true', async () => { - const options = { ...componentOptions, name: 'customers', createModule: true }; - - const tree = await runner.runSchematic('po-page-login', options, appTree); - const moduleContent = getFileContent(tree, `/projects/${componentOptions.name}/src/app/app.module.ts`); - - expect(moduleContent).toMatch(/import.*CustomersModule.*from '.\/customers\/customers.module'/); - expect(moduleContent).toMatch(/imports:\s*\[[^\]]+?,\r?\n\s+CustomersModule\r?\n/m); - }); - - it('should generate component.less if style is `less`', async () => { - const options = { ...componentOptions, name: 'customers', style: 'less' }; - const tree = await runner.runSchematic('po-page-login', options, appTree); - - const files = tree.files; - - expect(files).toContain( - `/projects/${componentOptions.name}/src/app/customers/customers.component.${options.style}` - ); - }); - - it('should generate component with stylesheet `css` if options.style is empty', async () => { - const options = { ...componentOptions, name: 'customers', style: '' }; - - const tree = await runner.runSchematic('po-page-login', options, appTree); - const files = tree.files; - - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.css`); - }); - - it('shouldn`t generate component spec if `skipTests` is true', async () => { - const options = { ...componentOptions, name: 'customers', skipTests: true }; - const tree = await runner.runSchematic('po-page-login', options, appTree); - - const files = tree.files; - - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.ts`); - expect(files).not.toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.spec.ts`); - }); - - it('should generate component in path informed', async () => { - // create customers component module to use with path option - const options = { ...componentOptions, name: 'customers', createModule: true }; - await runner.runSchematic('po-page-login', options, appTree); - - const optionsPath = { - ...componentOptions, - name: 'wms', - path: `/projects/${componentOptions.name}/src/app/customers` - }; - - const treePath = await runner.runSchematic('po-page-login', optionsPath, appTree); - - const files = treePath.files; - - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.spec.ts`); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.ts`); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.html`); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.component.${options.style}`); - }); - - it('should use the custom prefix when create component', async () => { - const prefix = 'wms'; - - const options = { ...componentOptions, name: 'customers', prefix }; - const tree = await runner.runSchematic('po-page-login', options, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` - ); - - expect(componentContent).toMatch(new RegExp(`selector: '${prefix}-customers'`)); - }); - - it('should use the default prefix when create component if prefix is null', async () => { - const prefix = undefined; - - const options = { ...componentOptions, name: 'customers', sample: true, prefix }; - const tree = await runner.runSchematic('po-page-login', options, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` - ); - - expect(componentContent).toMatch(new RegExp(`selector: 'app-customers'`)); - }); - - it('should use only the name how prefix when create component if prefix is ""', async () => { - const prefix = ''; - - const options = { ...componentOptions, name: 'customers', prefix }; - const tree = await runner.runSchematic('po-page-login', options, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` - ); - - expect(componentContent).toMatch(new RegExp(`selector: 'customers'`)); - }); -}); - -/** Gets the content of a specified file from a schematic tree. */ -function getFileContent(tree: Tree, filePath: string): string { - const contentBuffer = tree.read(filePath); - - if (!contentBuffer) { - throw new Error(`Cannot read "${filePath}" because it does not exist.`); - } - - return contentBuffer.toString(); -} diff --git a/projects/templates/schematics/ng-generate/po-page-login/index.ts b/projects/templates/schematics/ng-generate/po-page-login/index.ts deleted file mode 100644 index 978e118f2e..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-login/index.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { chain, Rule } from '@angular-devkit/schematics'; - -import { buildComponent } from '@po-ui/ng-schematics/build-component'; - -import { Schema as ComponentOptions } from './schema'; - -/** Scaffolds a new component with */ -export default function (options: ComponentOptions): Rule { - return chain([createPageLoginComponent(options)]); -} - -function createPageLoginComponent(options: ComponentOptions): Rule { - return buildComponent(options); -} diff --git a/projects/templates/schematics/ng-generate/po-page-login/schema.json b/projects/templates/schematics/ng-generate/po-page-login/schema.json deleted file mode 100644 index 536d54789a..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-login/schema.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema", - "$id": "SchematicsPOPageLogin", - "title": "Page Login Options Schema", - "type": "object", - "properties": { - "style": { - "description": "The file extension or preprocessor to use for style files.", - "type": "string", - "default": "css" - }, - "project": { - "type": "string", - "description": "The name of the project.", - "$default": { - "$source": "projectName" - } - }, - "routing": { - "type": "boolean", - "description": "When true, creates a routing module.", - "default": false - }, - "createModule": { - "type": "boolean", - "description": "When true, create a component module.", - "default": false - }, - "name": { - "type": "string", - "description": "The name to use for the component", - "$default": { - "$source": "argv", - "index": 0 - }, - "x-prompt": "What name would you like to use for the component?" - }, - "skipTests": { - "description": "When true, does not create \"spec.ts\" test files for the app.", - "type": "boolean", - "default": false, - "alias": "S", - "x-user-analytics": 12 - }, - "path": { - "type": "string", - "format": "path", - "description": "The path at which to create the component file, relative to the current workspace. Default is a folder with the same name as the component in the project root.", - "visible": false - }, - "prefix": { - "type": "string", - "description": "The prefix to apply to the generated component selector.", - "alias": "p", - "oneOf": [ - { - "maxLength": 0 - }, - { - "minLength": 1, - "format": "html-selector" - } - ] - } - }, - "required": ["name"] -} diff --git a/projects/templates/schematics/ng-generate/po-page-login/schema.ts b/projects/templates/schematics/ng-generate/po-page-login/schema.ts deleted file mode 100644 index 0e5e0a349d..0000000000 --- a/projects/templates/schematics/ng-generate/po-page-login/schema.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Schema as ComponentSchema } from '@po-ui/ng-schematics/build-component'; - -export interface Schema extends ComponentSchema {} diff --git a/projects/templates/src/lib/components/po-page-dynamic-table/po-page-dynamic-table.component.spec.ts b/projects/templates/src/lib/components/po-page-dynamic-table/po-page-dynamic-table.component.spec.ts index 0a6309f841..f82caae2d6 100644 --- a/projects/templates/src/lib/components/po-page-dynamic-table/po-page-dynamic-table.component.spec.ts +++ b/projects/templates/src/lib/components/po-page-dynamic-table/po-page-dynamic-table.component.spec.ts @@ -836,7 +836,7 @@ describe('PoPageDynamicTableComponent:', () => { component.items = [{ name: 'Anne', id: 2, seqItem: 9 }]; spyOn(component['poPageDynamicService'], 'getResources').and.returnValue(of(response)); - spyOn(utilsFunctions, 'removeDuplicateItemsWithArrayKey'); + spyOn(utilsFunctions, 'removeDuplicateItemsWithArrayKey').and.returnValue(undefined); component['loadData']({ page: 2 }).subscribe(); diff --git a/projects/templates/src/lib/components/po-page-dynamic-table/po-page-dynamic-table.component.ts b/projects/templates/src/lib/components/po-page-dynamic-table/po-page-dynamic-table.component.ts index cd65ce2630..f9f46f20bf 100644 --- a/projects/templates/src/lib/components/po-page-dynamic-table/po-page-dynamic-table.component.ts +++ b/projects/templates/src/lib/components/po-page-dynamic-table/po-page-dynamic-table.component.ts @@ -31,7 +31,7 @@ import { convertToBoolean, getDefaultSizeFn, validateSizeFn, PoUtils as util } f import { PoPageDynamicDetailComponent } from '../po-page-dynamic-detail/po-page-dynamic-detail.component'; import { PoPageDynamicService } from '../../services/po-page-dynamic/po-page-dynamic.service'; -import { isExternalLink, removeDuplicateItemsWithArrayKey, PoUtils } from '../../utils/util'; +import { isExternalLink, PoUtils } from '../../utils/util'; import { PoPageDynamicSearchLiterals } from '../po-page-dynamic-search/interfaces/po-page-dynamic-search-literals.interface'; import { PoPageCustomizationService } from './../../services/po-page-customization/po-page-customization.service'; import { PoPageDynamicOptionsSchema } from './../../services/po-page-customization/po-page-dynamic-options.interface'; @@ -879,9 +879,9 @@ export class PoPageDynamicTableComponent extends PoPageDynamicListBaseComponent tap(response => { let newArray; if (fullParams.page === 1) { - newArray = removeDuplicateItemsWithArrayKey(response.items, response.items, this.keys); + newArray = util.removeDuplicateItemsWithArrayKey(response.items, response.items, this.keys); } else { - newArray = removeDuplicateItemsWithArrayKey(this.items, response.items, this.keys); + newArray = util.removeDuplicateItemsWithArrayKey(this.items, response.items, this.keys); } this.items = newArray ? [...newArray] : this.items; this.page = fullParams.page; diff --git a/projects/templates/src/lib/utils/util.spec.ts b/projects/templates/src/lib/utils/util.spec.ts index 5fc42d787d..7fc063f4b4 100644 --- a/projects/templates/src/lib/utils/util.spec.ts +++ b/projects/templates/src/lib/utils/util.spec.ts @@ -29,13 +29,11 @@ import { removeDuplicateItems, removeDuplicateItemsWithArrayKey, sortArrayOfObjects, - getDefaultSize, getDefaultSizeFn, - validateSize, validateSizeFn } from './util'; import { changeChromeProperties } from '../util-test/util-expect.spec'; -import { PoThemeA11yEnum, PoThemeService } from '@po-ui/ng-components'; +import { PoThemeA11yEnum } from '@po-ui/ng-components'; import { PoFieldSize } from '../../../../ui/src/lib/enums/po-field-size.enum'; describe('Language:', () => { @@ -1213,13 +1211,7 @@ describe('Function sortArrayOfObjects:', () => { }); describe('accessibility level: ', () => { - describe('getDefaultSize', () => { - let poThemeServiceMock: jasmine.SpyObj; - - beforeEach(() => { - poThemeServiceMock = jasmine.createSpyObj('PoThemeService', ['getA11yLevel', 'getA11yDefaultSize']); - }); - + describe('getDefaultSizeFn', () => { beforeEach(() => { document.documentElement.removeAttribute('data-a11y'); localStorage.removeItem('po-default-size'); @@ -1230,13 +1222,6 @@ describe('accessibility level: ', () => { localStorage.removeItem('po-default-size'); }); - it('should return `small` when the default component size is `small` in accessibility level AA (Service)', () => { - poThemeServiceMock.getA11yLevel.and.returnValue(PoThemeA11yEnum.AA); - poThemeServiceMock.getA11yDefaultSize.and.returnValue('small'); - - expect(getDefaultSize(poThemeServiceMock)).toBe(PoFieldSize.Small); - }); - it('should return `small` when the default component size is `small` in accessibility level AA', () => { document.documentElement.setAttribute('data-a11y', PoThemeA11yEnum.AA); localStorage.setItem('po-default-size', 'small'); @@ -1244,12 +1229,6 @@ describe('accessibility level: ', () => { expect(getDefaultSizeFn()).toBe(PoFieldSize.Small); }); - it('should return `medium` if accessibility AA and default size is not set (Service)', () => { - poThemeServiceMock.getA11yLevel.and.returnValue(PoThemeA11yEnum.AA); - - expect(getDefaultSize(poThemeServiceMock)).toBe(PoFieldSize.Medium); - }); - it('should return `medium` if accessibility AA and default size is not set', () => { document.documentElement.setAttribute('data-a11y', PoThemeA11yEnum.AA); localStorage.removeItem('po-default-size'); @@ -1257,12 +1236,6 @@ describe('accessibility level: ', () => { expect(getDefaultSizeFn()).toBe(PoFieldSize.Medium); }); - it('should return `medium` when the accessibility level is AAA (Service)', () => { - poThemeServiceMock.getA11yLevel.and.returnValue(PoThemeA11yEnum.AAA); - - expect(getDefaultSize(poThemeServiceMock)).toBe(PoFieldSize.Medium); - }); - it('should return `medium` when the accessibility level is AAA', () => { document.documentElement.setAttribute('data-a11y', PoThemeA11yEnum.AAA); @@ -1270,13 +1243,7 @@ describe('accessibility level: ', () => { }); }); - describe('validateSize', () => { - let poThemeServiceMock: jasmine.SpyObj; - - beforeEach(() => { - poThemeServiceMock = jasmine.createSpyObj('PoThemeService', ['getA11yLevel', 'getA11yDefaultSize']); - }); - + describe('validateSizeFn', () => { beforeEach(() => { document.documentElement.removeAttribute('data-a11y'); localStorage.removeItem('po-default-size'); @@ -1287,13 +1254,6 @@ describe('accessibility level: ', () => { localStorage.removeItem('po-default-size'); }); - it('should return valid values based on accessibility level (Service)', () => { - poThemeServiceMock.getA11yLevel.and.returnValue(PoThemeA11yEnum.AA); - - expect(validateSize(PoFieldSize.Small, poThemeServiceMock)).toBe(PoFieldSize.Small); - expect(validateSize(PoFieldSize.Medium, poThemeServiceMock)).toBe(PoFieldSize.Medium); - }); - it('should return valid values based on accessibility level', () => { document.documentElement.setAttribute('data-a11y', PoThemeA11yEnum.AA); @@ -1301,24 +1261,12 @@ describe('accessibility level: ', () => { expect(validateSizeFn(PoFieldSize.Medium)).toBe(PoFieldSize.Medium); }); - it('should return `medium` when the value is `small` but the accessibility level is not AA (Service)', () => { - poThemeServiceMock.getA11yLevel.and.returnValue(PoThemeA11yEnum.AAA); - - expect(validateSize(PoFieldSize.Small, poThemeServiceMock)).toBe(PoFieldSize.Medium); - }); - it('should return `medium` when the value is `small` but the accessibility level is not AA', () => { document.documentElement.setAttribute('data-a11y', PoThemeA11yEnum.AAA); expect(validateSizeFn(PoFieldSize.Small)).toBe(PoFieldSize.Medium); }); - it('should return the default size when an invalid value is provided (Service)', () => { - poThemeServiceMock.getA11yLevel.and.returnValue(PoThemeA11yEnum.AA); - - expect(validateSize('xxg', poThemeServiceMock)).toBe(PoFieldSize.Medium); - }); - it('should return the default size when an invalid value is provided', () => { expect(validateSizeFn('xxg')).toBe(PoFieldSize.Medium); }); diff --git a/projects/templates/src/lib/utils/util.ts b/projects/templates/src/lib/utils/util.ts index 43373580c9..6d2e56fdbb 100644 --- a/projects/templates/src/lib/utils/util.ts +++ b/projects/templates/src/lib/utils/util.ts @@ -1,4 +1,4 @@ -import { poLocaleDefault, poLocales, PoThemeA11yEnum, PoThemeService } from '@po-ui/ng-components'; +import { poLocaleDefault, poLocales, PoThemeA11yEnum } from '@po-ui/ng-components'; import { PoPageComponentsSize } from '../components/enums/po-page-components-size.enum'; /** @@ -143,15 +143,6 @@ export function formatYear(year: number) { } } -/** - * @deprecated use getDefaultSizeFn - * - * Retorna o tamanho padrão dos componentes conforme o nível de acessibilidade. - */ -export function getDefaultSize(poThemeService: PoThemeService): string { - return poThemeService.getA11yDefaultSize() === 'small' ? PoPageComponentsSize.Small : PoPageComponentsSize.Medium; -} - /** * Retorna o tamanho padrão dos componentes conforme o nível de acessibilidade. */ @@ -485,21 +476,6 @@ export function sortArrayOfObjects(items, key, isAscendingOrder) { }); } -/** - * @deprecated use validateSizeFn - * - * Valida e retorna um tamanho permitido para os componentes, considerando a acessibilidade. - */ -export function validateSize(value: string, poThemeService: PoThemeService): string { - if (value && Object.values(PoPageComponentsSize).includes(value as PoPageComponentsSize)) { - if (value === PoPageComponentsSize.Small && poThemeService.getA11yLevel() !== 'AA') { - return PoPageComponentsSize.Medium; - } - return value; - } - return getDefaultSize(poThemeService); -} - /** * Valida e retorna um tamanho permitido para os componentes, considerando a acessibilidade. */ diff --git a/projects/ui/schematics/collection.json b/projects/ui/schematics/collection.json index 7ab5b42261..a74207451f 100644 --- a/projects/ui/schematics/collection.json +++ b/projects/ui/schematics/collection.json @@ -15,26 +15,6 @@ "description": "Crate a app.component with sidemenu layout configured and create a component how sample", "factory": "./ng-generate/sidemenu/index", "schema": "./ng-generate/sidemenu/schema.json" - }, - "po-page-list": { - "description": "Crate a component with po-page-list", - "factory": "./ng-generate/po-page-list/index", - "schema": "./ng-generate/po-page-list/schema.json" - }, - "po-page-edit": { - "description": "Crate a component with po-page-edit", - "factory": "./ng-generate/po-page-edit/index", - "schema": "./ng-generate/po-page-edit/schema.json" - }, - "po-page-detail": { - "description": "Crate a component with po-page-detail", - "factory": "./ng-generate/po-page-detail/index", - "schema": "./ng-generate/po-page-detail/schema.json" - }, - "po-page-default": { - "description": "Crate a component with po-page-default", - "factory": "./ng-generate/po-page-default/index", - "schema": "./ng-generate/po-page-default/schema.json" } } } diff --git a/projects/ui/schematics/ng-generate/po-page-default/files-standalone/__path__/__name@dasherize__/__componentFileName__.__style__.template b/projects/ui/schematics/ng-generate/po-page-default/files-standalone/__path__/__name@dasherize__/__componentFileName__.__style__.template deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/projects/ui/schematics/ng-generate/po-page-default/files-standalone/__path__/__name@dasherize__/__componentFileName__.html.template b/projects/ui/schematics/ng-generate/po-page-default/files-standalone/__path__/__name@dasherize__/__componentFileName__.html.template deleted file mode 100644 index 1fb992b060..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-default/files-standalone/__path__/__name@dasherize__/__componentFileName__.html.template +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/projects/ui/schematics/ng-generate/po-page-default/files-standalone/__path__/__name@dasherize__/__componentFileName__.spec.ts.template b/projects/ui/schematics/ng-generate/po-page-default/files-standalone/__path__/__name@dasherize__/__componentFileName__.spec.ts.template deleted file mode 100644 index 57b77e9fc0..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-default/files-standalone/__path__/__name@dasherize__/__componentFileName__.spec.ts.template +++ /dev/null @@ -1,33 +0,0 @@ -import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { provideLocationMocks } from '@angular/common/testing'; -import { RouterModule } from '@angular/router'; - -import { PoPageModule } from '@po-ui/ng-components'; - -import { <%= classify(name) %>Component } from './<%= componentFileName %>'; - -describe('<%= classify(name) %>Component', () => { - let component: <%= classify(name) %>Component; - let fixture: ComponentFixture<<%= classify(name) %>Component>; - - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - imports: [ - RouterModule.forRoot([]), - PoPageModule - ], - providers: [provideLocationMocks()] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(<%= classify(name) %>Component); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/projects/ui/schematics/ng-generate/po-page-default/files-standalone/__path__/__name@dasherize__/__componentFileName__.ts.template b/projects/ui/schematics/ng-generate/po-page-default/files-standalone/__path__/__name@dasherize__/__componentFileName__.ts.template deleted file mode 100644 index c954d957bc..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-default/files-standalone/__path__/__name@dasherize__/__componentFileName__.ts.template +++ /dev/null @@ -1,23 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { CommonModule } from '@angular/common'; - -import { PoPageAction, PoPageModule } from '@po-ui/ng-components'; - -@Component({ - selector: '<%= selector %>', - imports: [ - CommonModule, - PoPageModule, - ], - templateUrl: './<%= componentFileName %>.html', - styleUrls: ['./<%= componentFileName %>.<%= style %>'] -}) -export class <%= classify(name) %>Component implements OnInit { - - readonly pageActions: Array = []; - - constructor() { } - - ngOnInit() { } - -} diff --git a/projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__componentFileName__.__style__.template b/projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__componentFileName__.__style__.template deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__componentFileName__.html.template b/projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__componentFileName__.html.template deleted file mode 100644 index 1fb992b060..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__componentFileName__.html.template +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__componentFileName__.spec.ts.template b/projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__componentFileName__.spec.ts.template deleted file mode 100644 index bc328d8520..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__componentFileName__.spec.ts.template +++ /dev/null @@ -1,34 +0,0 @@ -import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { provideLocationMocks } from '@angular/common/testing'; -import { RouterModule } from '@angular/router'; - -import { PoPageModule } from '@po-ui/ng-components'; - -import { <%= classify(name) %>Component } from './<%= componentFileName %>'; - -describe('<%= classify(name) %>Component', () => { - let component: <%= classify(name) %>Component; - let fixture: ComponentFixture<<%= classify(name) %>Component>; - - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - imports: [ - RouterModule.forRoot([]), - PoPageModule - ], - providers: [provideLocationMocks()], - declarations: [ <%= classify(name) %>Component ] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(<%= classify(name) %>Component); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__componentFileName__.ts.template b/projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__componentFileName__.ts.template deleted file mode 100644 index 5f0ce2e37f..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__componentFileName__.ts.template +++ /dev/null @@ -1,19 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -import { PoPageAction } from '@po-ui/ng-components'; - -@Component({ - selector: '<%= selector %>', - templateUrl: './<%= componentFileName %>.html', - styleUrls: ['./<%= componentFileName %>.<%= style %>'], - standalone: false -}) -export class <%= classify(name) %>Component implements OnInit { - - readonly pageActions: Array = []; - - constructor() { } - - ngOnInit() { } - -} diff --git a/projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__moduleFileName__.ts.template b/projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__moduleFileName__.ts.template deleted file mode 100644 index da1b3e64c0..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__moduleFileName__.ts.template +++ /dev/null @@ -1,19 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; - -import { PoModule } from '@po-ui/ng-components'; - -import { <%= classify(name) %>Component } from './<%= componentFileName %>';<% if (routing) { %> -import { <%= classify(name) %>RoutingModule } from './<%= routingFileName %>';<% } %> - -@NgModule({ - declarations: [ - <%= classify(name) %>Component - ], - imports: [ - CommonModule, - PoModule,<% if (routing) { %> -<%= classify(name) %>RoutingModule<% } %> - ] -}) -export class <%= classify(name) %>Module { } diff --git a/projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__routingFileName__.ts.template b/projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__routingFileName__.ts.template deleted file mode 100644 index d2ab4235eb..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__routingFileName__.ts.template +++ /dev/null @@ -1,14 +0,0 @@ -import { NgModule } from '@angular/core'; -import { Routes, RouterModule } from '@angular/router'; - -import { <%= classify(name) %>Component } from './<%= componentFileName %>'; - -const routes: Routes = [ - { path: '', component: <%= classify(name) %>Component } -]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class <%= classify(name) %>RoutingModule { } diff --git a/projects/ui/schematics/ng-generate/po-page-default/index.spec.ts b/projects/ui/schematics/ng-generate/po-page-default/index.spec.ts deleted file mode 100644 index e498e44ee7..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-default/index.spec.ts +++ /dev/null @@ -1,249 +0,0 @@ -import { Tree } from '@angular-devkit/schematics'; -import { SchematicTestRunner, UnitTestTree } from '@angular-devkit/schematics/testing'; -import { Schema as WorkspaceOptions } from '@schematics/angular/workspace/schema'; -import * as path from 'path'; - -const collectionPath = path.join(__dirname, '../../collection.json'); - -describe('po-page-default:', () => { - const runner = new SchematicTestRunner('schematics', collectionPath); - - const workspaceOptions: WorkspaceOptions = { - name: 'workspace', - newProjectRoot: 'projects', - version: '6.0.0' - }; - - const applicationOptions: any = { - name: 'po', - style: 'css', - skipTests: false - }; - - const componentOptions: any = { - name: 'po', - style: 'css', - skipTests: false, - project: 'po' - }; - - let appTree: UnitTestTree; - - beforeEach(async () => { - appTree = await runner.runExternalSchematic('@schematics/angular', 'workspace', workspaceOptions); - appTree = await runner.runExternalSchematic('@schematics/angular', 'application', applicationOptions, appTree); - }); - - describe('auto-detected style on a project using the current Angular convention:', () => { - it('should create component files without type suffix', async () => { - const componentName = 'supply'; - const tree = await runner.runSchematic('po-page-default', { ...componentOptions, name: componentName }, appTree); - - const files: Array = tree.files; - - const fullFilePath = (ext: string) => - `/projects/${componentOptions.name}/src/app/${componentName}/${componentName}.${ext}`; - - expect(files).toContain(fullFilePath('ts')); - expect(files).toContain(fullFilePath('html')); - expect(files).toContain(fullFilePath('spec.ts')); - expect(files).toContain(fullFilePath(componentOptions.style)); - }); - - it('should not create files using the classic `.component` suffix', async () => { - const tree = await runner.runSchematic('po-page-default', { ...componentOptions, name: 'customers' }, appTree); - - const files: Array = tree.files; - - expect(files).not.toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.ts`); - }); - - it('should reference sibling files without type suffix in the component file', async () => { - const tree = await runner.runSchematic('po-page-default', { ...componentOptions, name: 'customers' }, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.ts` - ); - - expect(componentContent).toMatch(/templateUrl: '.\/customers.html'/); - expect(componentContent).toMatch(/styleUrls: \['.\/customers.css'\]/); - }); - - it('should generate stylesheet with `less` extension if style is `less`', async () => { - const options = { ...componentOptions, name: 'customers', style: 'less' }; - const tree = await runner.runSchematic('po-page-default', options, appTree); - - const files = tree.files; - - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.${options.style}`); - }); - - it('should generate component with stylesheet `css` if options.style is empty', async () => { - const options = { ...componentOptions, name: 'customers', style: '' }; - - const tree = await runner.runSchematic('po-page-default', options, appTree); - const files = tree.files; - - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.css`); - }); - - it('shouldn`t generate component spec if `skipTests` is true', async () => { - const options = { ...componentOptions, name: 'customers', skipTests: true }; - const tree = await runner.runSchematic('po-page-default', options, appTree); - - const files = tree.files; - - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.ts`); - expect(files).not.toContain(`/projects/${componentOptions.name}/src/app/customers/customers.spec.ts`); - }); - - it('should generate component in path informed', async () => { - const optionsPath = { - ...componentOptions, - name: 'wms', - path: `/projects/${componentOptions.name}/src/app/customers` - }; - - const treePath = await runner.runSchematic('po-page-default', optionsPath, appTree); - - const files = treePath.files; - - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.spec.ts`); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.ts`); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.html`); - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.${componentOptions.style}`); - }); - - it('should use the custom prefix when create component', async () => { - const prefix = 'wms'; - - const options = { ...componentOptions, name: 'customers', prefix }; - const tree = await runner.runSchematic('po-page-default', options, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.ts` - ); - - expect(componentContent).toMatch(new RegExp(`selector: '${prefix}-customers'`)); - }); - - it('should use the default prefix when create component if prefix is null', async () => { - const prefix = undefined; - - const options = { ...componentOptions, name: 'customers', prefix }; - const tree = await runner.runSchematic('po-page-default', options, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.ts` - ); - - expect(componentContent).toMatch(new RegExp(`selector: 'app-customers'`)); - }); - - it('should use only the name how prefix when create component if prefix is ""', async () => { - const prefix = ''; - - const options = { ...componentOptions, name: 'customers', prefix }; - const tree = await runner.runSchematic('po-page-default', options, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.ts` - ); - - expect(componentContent).toMatch(new RegExp(`selector: 'customers'`)); - }); - }); - - describe('fileNameStyleGuide 2016 (classic suffixes):', () => { - it('should create component files with the `.component` suffix', async () => { - const componentName = 'supply'; - const options = { ...componentOptions, name: componentName, fileNameStyleGuide: '2016' }; - const tree = await runner.runSchematic('po-page-default', options, appTree); - - const files: Array = tree.files; - - const fullFilePath = (ext: string) => - `/projects/${componentOptions.name}/src/app/${componentName}/${componentName}.component.${ext}`; - - expect(files).toContain(fullFilePath('ts')); - expect(files).toContain(fullFilePath('html')); - expect(files).toContain(fullFilePath('spec.ts')); - expect(files).toContain(fullFilePath(componentOptions.style)); - }); - - it('should reference sibling files with the `.component` suffix in the component file', async () => { - const options = { ...componentOptions, name: 'customers', fileNameStyleGuide: '2016' }; - const tree = await runner.runSchematic('po-page-default', options, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` - ); - - expect(componentContent).toMatch(/templateUrl: '.\/customers.component.html'/); - expect(componentContent).toMatch(/styleUrls: \['.\/customers.component.css'\]/); - }); - - it('shouldn`t generate the component spec if `skipTests` is true', async () => { - const options = { ...componentOptions, name: 'customers', skipTests: true, fileNameStyleGuide: '2016' }; - const tree = await runner.runSchematic('po-page-default', options, appTree); - - const files = tree.files; - - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.ts`); - expect(files).not.toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.spec.ts`); - }); - - it('should keep the current convention when `fileNameStyleGuide` is `2025` (explicit override)', async () => { - const options = { ...componentOptions, name: 'customers', fileNameStyleGuide: '2025' }; - const tree = await runner.runSchematic('po-page-default', options, appTree); - - const files = tree.files; - - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.ts`); - expect(files).not.toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.ts`); - }); - }); - - describe('auto-detected style on a project using the classic (2016) convention:', () => { - beforeEach(() => { - // Simulate a project generated with `--file-name-style-guide 2016`: the root component - // lives in `app.component.ts` and is bootstrapped from `main.ts`. - appTree.overwrite( - '/projects/po/src/main.ts', - `import { bootstrapApplication } from '@angular/platform-browser';\n` + - `import { App } from './app/app.component';\n` + - `import { appConfig } from './app/app.config';\n` + - `bootstrapApplication(App, appConfig);\n` - ); - appTree.create( - '/projects/po/src/app/app.component.ts', - `import { Component } from '@angular/core';\n@Component({ selector: 'app-root', template: '' })\nexport class App {}\n` - ); - }); - - it('should generate files with the classic `.component` suffix without passing the option', async () => { - const tree = await runner.runSchematic('po-page-default', { ...componentOptions, name: 'customers' }, appTree); - - const files = tree.files; - - expect(files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.ts`); - expect(files).not.toContain(`/projects/${componentOptions.name}/src/app/customers/customers.ts`); - }); - }); -}); - -/** Gets the content of a specified file from a schematic tree. */ -function getFileContent(tree: Tree, filePath: string): string { - const contentBuffer = tree.read(filePath); - - if (!contentBuffer) { - throw new Error(`Cannot read "${filePath}" because it does not exist.`); - } - - return contentBuffer.toString(); -} diff --git a/projects/ui/schematics/ng-generate/po-page-default/index.ts b/projects/ui/schematics/ng-generate/po-page-default/index.ts deleted file mode 100644 index 60d04b816a..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-default/index.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { chain, Rule } from '@angular-devkit/schematics'; - -import { buildComponent } from '@po-ui/ng-schematics/build-component'; - -import { Schema as ComponentOptions } from './schema'; - -/** Scaffolds a new component with */ -export default function (options: ComponentOptions): Rule { - return chain([createPageDefaultComponent(options)]); -} - -function createPageDefaultComponent(options: ComponentOptions): Rule { - return buildComponent(options); -} diff --git a/projects/ui/schematics/ng-generate/po-page-default/schema.json b/projects/ui/schematics/ng-generate/po-page-default/schema.json deleted file mode 100644 index 818dce5091..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-default/schema.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema", - "$id": "SchematicsPOPageDefault", - "title": "Page Default Options Schema", - "type": "object", - "properties": { - "style": { - "description": "The file extension or preprocessor to use for style files.", - "type": "string", - "default": "css" - }, - "project": { - "type": "string", - "description": "The name of the project.", - "$default": { - "$source": "projectName" - } - }, - "routing": { - "type": "boolean", - "description": "When true, creates a routing module.", - "default": false - }, - "createModule": { - "type": "boolean", - "description": "When true, create a component module.", - "default": false - }, - "name": { - "type": "string", - "description": "The name to use for the component", - "$default": { - "$source": "argv", - "index": 0 - }, - "x-prompt": "What name would you like to use for the component?" - }, - "skipTests": { - "description": "When true, does not create \"spec.ts\" test files for the app.", - "type": "boolean", - "default": false, - "alias": "S", - "x-user-analytics": 12 - }, - "path": { - "type": "string", - "format": "path", - "description": "The path at which to create the component file, relative to the current workspace. Default is a folder with the same name as the component in the project root.", - "visible": false - }, - "prefix": { - "type": "string", - "description": "The prefix to apply to the generated component selector.", - "alias": "p", - "oneOf": [ - { - "maxLength": 0 - }, - { - "minLength": 1, - "format": "html-selector" - } - ] - }, - "fileNameStyleGuide": { - "type": "string", - "description": "The file naming convention to use for generated files. `2016` uses classic suffixes such as `.component.ts` and `.module.ts`. `2025` omits type suffixes. When omitted, the convention already used by the project is auto-detected.", - "enum": ["2016", "2025"] - } - }, - "required": ["name"] -} diff --git a/projects/ui/schematics/ng-generate/po-page-default/schema.ts b/projects/ui/schematics/ng-generate/po-page-default/schema.ts deleted file mode 100644 index 0e5e0a349d..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-default/schema.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Schema as ComponentSchema } from '@po-ui/ng-schematics/build-component'; - -export interface Schema extends ComponentSchema {} diff --git a/projects/ui/schematics/ng-generate/po-page-detail/files-standalone/__path__/__name@dasherize__/__componentFileName__.__style__.template b/projects/ui/schematics/ng-generate/po-page-detail/files-standalone/__path__/__name@dasherize__/__componentFileName__.__style__.template deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/projects/ui/schematics/ng-generate/po-page-detail/files-standalone/__path__/__name@dasherize__/__componentFileName__.html.template b/projects/ui/schematics/ng-generate/po-page-detail/files-standalone/__path__/__name@dasherize__/__componentFileName__.html.template deleted file mode 100644 index c0bbb1685d..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-detail/files-standalone/__path__/__name@dasherize__/__componentFileName__.html.template +++ /dev/null @@ -1,8 +0,0 @@ - - - - diff --git a/projects/ui/schematics/ng-generate/po-page-detail/files-standalone/__path__/__name@dasherize__/__componentFileName__.spec.ts.template b/projects/ui/schematics/ng-generate/po-page-detail/files-standalone/__path__/__name@dasherize__/__componentFileName__.spec.ts.template deleted file mode 100644 index 57b77e9fc0..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-detail/files-standalone/__path__/__name@dasherize__/__componentFileName__.spec.ts.template +++ /dev/null @@ -1,33 +0,0 @@ -import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { provideLocationMocks } from '@angular/common/testing'; -import { RouterModule } from '@angular/router'; - -import { PoPageModule } from '@po-ui/ng-components'; - -import { <%= classify(name) %>Component } from './<%= componentFileName %>'; - -describe('<%= classify(name) %>Component', () => { - let component: <%= classify(name) %>Component; - let fixture: ComponentFixture<<%= classify(name) %>Component>; - - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - imports: [ - RouterModule.forRoot([]), - PoPageModule - ], - providers: [provideLocationMocks()] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(<%= classify(name) %>Component); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/projects/ui/schematics/ng-generate/po-page-detail/files-standalone/__path__/__name@dasherize__/__componentFileName__.ts.template b/projects/ui/schematics/ng-generate/po-page-detail/files-standalone/__path__/__name@dasherize__/__componentFileName__.ts.template deleted file mode 100644 index 2e0024712b..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-detail/files-standalone/__path__/__name@dasherize__/__componentFileName__.ts.template +++ /dev/null @@ -1,33 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { CommonModule } from '@angular/common'; - -import { PoPageModule } from '@po-ui/ng-components'; - -@Component({ - selector: '<%= selector %>', - imports: [ - CommonModule, - PoPageModule, - ], - templateUrl: './<%= componentFileName %>.html', - styleUrls: ['./<%= componentFileName %>.<%= style %>'] -}) -export class <%= classify(name) %>Component implements OnInit { - - constructor() { } - - ngOnInit() { } - - back() { - // back action here - } - - edit() { - // edit action here - } - - remove() { - // remove action here - } - -} diff --git a/projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__componentFileName__.__style__.template b/projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__componentFileName__.__style__.template deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__componentFileName__.html.template b/projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__componentFileName__.html.template deleted file mode 100644 index c0bbb1685d..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__componentFileName__.html.template +++ /dev/null @@ -1,8 +0,0 @@ - - - - diff --git a/projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__componentFileName__.spec.ts.template b/projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__componentFileName__.spec.ts.template deleted file mode 100644 index bc328d8520..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__componentFileName__.spec.ts.template +++ /dev/null @@ -1,34 +0,0 @@ -import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { provideLocationMocks } from '@angular/common/testing'; -import { RouterModule } from '@angular/router'; - -import { PoPageModule } from '@po-ui/ng-components'; - -import { <%= classify(name) %>Component } from './<%= componentFileName %>'; - -describe('<%= classify(name) %>Component', () => { - let component: <%= classify(name) %>Component; - let fixture: ComponentFixture<<%= classify(name) %>Component>; - - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - imports: [ - RouterModule.forRoot([]), - PoPageModule - ], - providers: [provideLocationMocks()], - declarations: [ <%= classify(name) %>Component ] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(<%= classify(name) %>Component); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__componentFileName__.ts.template b/projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__componentFileName__.ts.template deleted file mode 100644 index fa2906e721..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__componentFileName__.ts.template +++ /dev/null @@ -1,27 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: '<%= selector %>', - templateUrl: './<%= componentFileName %>.html', - styleUrls: ['./<%= componentFileName %>.<%= style %>'], - standalone: false -}) -export class <%= classify(name) %>Component implements OnInit { - - constructor() { } - - ngOnInit() { } - - back() { - // back action here - } - - edit() { - // edit action here - } - - remove() { - // remove action here - } - -} diff --git a/projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__moduleFileName__.ts.template b/projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__moduleFileName__.ts.template deleted file mode 100644 index da1b3e64c0..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__moduleFileName__.ts.template +++ /dev/null @@ -1,19 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; - -import { PoModule } from '@po-ui/ng-components'; - -import { <%= classify(name) %>Component } from './<%= componentFileName %>';<% if (routing) { %> -import { <%= classify(name) %>RoutingModule } from './<%= routingFileName %>';<% } %> - -@NgModule({ - declarations: [ - <%= classify(name) %>Component - ], - imports: [ - CommonModule, - PoModule,<% if (routing) { %> -<%= classify(name) %>RoutingModule<% } %> - ] -}) -export class <%= classify(name) %>Module { } diff --git a/projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__routingFileName__.ts.template b/projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__routingFileName__.ts.template deleted file mode 100644 index d2ab4235eb..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__routingFileName__.ts.template +++ /dev/null @@ -1,14 +0,0 @@ -import { NgModule } from '@angular/core'; -import { Routes, RouterModule } from '@angular/router'; - -import { <%= classify(name) %>Component } from './<%= componentFileName %>'; - -const routes: Routes = [ - { path: '', component: <%= classify(name) %>Component } -]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class <%= classify(name) %>RoutingModule { } diff --git a/projects/ui/schematics/ng-generate/po-page-detail/index.spec.ts b/projects/ui/schematics/ng-generate/po-page-detail/index.spec.ts deleted file mode 100644 index ab25e6aa40..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-detail/index.spec.ts +++ /dev/null @@ -1,168 +0,0 @@ -import { Tree } from '@angular-devkit/schematics'; -import { SchematicTestRunner, UnitTestTree } from '@angular-devkit/schematics/testing'; -import { Schema as WorkspaceOptions } from '@schematics/angular/workspace/schema'; -import * as path from 'path'; - -const collectionPath = path.join(__dirname, '../../collection.json'); - -describe('po-page-detail:', () => { - const runner = new SchematicTestRunner('schematics', collectionPath); - - const workspaceOptions: WorkspaceOptions = { - name: 'workspace', - newProjectRoot: 'projects', - version: '6.0.0' - }; - - const applicationOptions: any = { - name: 'po', - style: 'css', - skipTests: false - }; - - const componentOptions: any = { - name: 'po', - style: 'css', - skipTests: false, - project: 'po' - }; - - let appTree: UnitTestTree; - - beforeEach(async () => { - appTree = await runner.runExternalSchematic('@schematics/angular', 'workspace', workspaceOptions); - appTree = await runner.runExternalSchematic('@schematics/angular', 'application', applicationOptions, appTree); - }); - - describe('auto-detected style on a project using the current Angular convention:', () => { - it('should create component files without type suffix', async () => { - const componentName = 'supply'; - const tree = await runner.runSchematic('po-page-detail', { ...componentOptions, name: componentName }, appTree); - - const files: Array = tree.files; - - const fullFilePath = (ext: string) => - `/projects/${componentOptions.name}/src/app/${componentName}/${componentName}.${ext}`; - - expect(files).toContain(fullFilePath('ts')); - expect(files).toContain(fullFilePath('html')); - expect(files).toContain(fullFilePath('spec.ts')); - expect(files).toContain(fullFilePath(componentOptions.style)); - }); - - it('should reference sibling files without type suffix in the component file', async () => { - const tree = await runner.runSchematic('po-page-detail', { ...componentOptions, name: 'customers' }, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.ts` - ); - - expect(componentContent).toMatch(/templateUrl: '.\/customers.html'/); - expect(componentContent).toMatch(/styleUrls: \['.\/customers.css'\]/); - }); - - it('should generate stylesheet with `less` extension if style is `less`', async () => { - const options = { ...componentOptions, name: 'customers', style: 'less' }; - const tree = await runner.runSchematic('po-page-detail', options, appTree); - - expect(tree.files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.${options.style}`); - }); - - it('shouldn`t generate component spec if `skipTests` is true', async () => { - const options = { ...componentOptions, name: 'customers', skipTests: true }; - const tree = await runner.runSchematic('po-page-detail', options, appTree); - - expect(tree.files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.ts`); - expect(tree.files).not.toContain(`/projects/${componentOptions.name}/src/app/customers/customers.spec.ts`); - }); - - it('should generate component in path informed', async () => { - const optionsPath = { - ...componentOptions, - name: 'wms', - path: `/projects/${componentOptions.name}/src/app/customers` - }; - - const treePath = await runner.runSchematic('po-page-detail', optionsPath, appTree); - - expect(treePath.files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.ts`); - expect(treePath.files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.html`); - }); - - it('should use the custom prefix when create component', async () => { - const prefix = 'wms'; - const tree = await runner.runSchematic('po-page-detail', { ...componentOptions, name: 'customers', prefix }, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.ts` - ); - - expect(componentContent).toMatch(new RegExp(`selector: '${prefix}-customers'`)); - }); - }); - - describe('fileNameStyleGuide 2016 (classic suffixes):', () => { - it('should create component files with the `.component` suffix', async () => { - const componentName = 'supply'; - const options = { ...componentOptions, name: componentName, fileNameStyleGuide: '2016' }; - const tree = await runner.runSchematic('po-page-detail', options, appTree); - - const fullFilePath = (ext: string) => - `/projects/${componentOptions.name}/src/app/${componentName}/${componentName}.component.${ext}`; - - expect(tree.files).toContain(fullFilePath('ts')); - expect(tree.files).toContain(fullFilePath('html')); - expect(tree.files).toContain(fullFilePath('spec.ts')); - expect(tree.files).toContain(fullFilePath(componentOptions.style)); - }); - - it('should reference sibling files with the `.component` suffix in the component file', async () => { - const options = { ...componentOptions, name: 'customers', fileNameStyleGuide: '2016' }; - const tree = await runner.runSchematic('po-page-detail', options, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` - ); - - expect(componentContent).toMatch(/templateUrl: '.\/customers.component.html'/); - expect(componentContent).toMatch(/styleUrls: \['.\/customers.component.css'\]/); - }); - }); - - describe('auto-detected style on a project using the classic (2016) convention:', () => { - beforeEach(() => { - appTree.overwrite( - '/projects/po/src/main.ts', - `import { bootstrapApplication } from '@angular/platform-browser';\n` + - `import { App } from './app/app.component';\n` + - `import { appConfig } from './app/app.config';\n` + - `bootstrapApplication(App, appConfig);\n` - ); - appTree.create( - '/projects/po/src/app/app.component.ts', - `import { Component } from '@angular/core';\n@Component({ selector: 'app-root', template: '' })\nexport class App {}\n` - ); - }); - - it('should generate files with the classic `.component` suffix without passing the option', async () => { - const tree = await runner.runSchematic('po-page-detail', { ...componentOptions, name: 'customers' }, appTree); - - expect(tree.files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.ts`); - expect(tree.files).not.toContain(`/projects/${componentOptions.name}/src/app/customers/customers.ts`); - }); - }); -}); - -/** Gets the content of a specified file from a schematic tree. */ -function getFileContent(tree: Tree, filePath: string): string { - const contentBuffer = tree.read(filePath); - - if (!contentBuffer) { - throw new Error(`Cannot read "${filePath}" because it does not exist.`); - } - - return contentBuffer.toString(); -} diff --git a/projects/ui/schematics/ng-generate/po-page-detail/index.ts b/projects/ui/schematics/ng-generate/po-page-detail/index.ts deleted file mode 100644 index e3914b6bec..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-detail/index.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { chain, Rule } from '@angular-devkit/schematics'; - -import { buildComponent, Schema as ComponentOptions } from '@po-ui/ng-schematics/build-component'; - -/** Scaffolds a new component with */ -export default function (options: ComponentOptions): Rule { - return chain([createPageDetailComponent(options)]); -} - -function createPageDetailComponent(options: ComponentOptions): Rule { - return buildComponent(options); -} diff --git a/projects/ui/schematics/ng-generate/po-page-detail/schema.json b/projects/ui/schematics/ng-generate/po-page-detail/schema.json deleted file mode 100644 index 44058b29b2..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-detail/schema.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema", - "$id": "SchematicsPOPageDetail", - "title": "Page Detail Options Schema", - "type": "object", - "properties": { - "style": { - "description": "The file extension or preprocessor to use for style files.", - "type": "string", - "default": "css" - }, - "project": { - "type": "string", - "description": "The name of the project.", - "$default": { - "$source": "projectName" - } - }, - "routing": { - "type": "boolean", - "description": "When true, creates a routing module.", - "default": false - }, - "createModule": { - "type": "boolean", - "description": "When true, create a component module.", - "default": false - }, - "name": { - "type": "string", - "description": "The name to use for the component", - "$default": { - "$source": "argv", - "index": 0 - }, - "x-prompt": "What name would you like to use for the component?" - }, - "skipTests": { - "description": "When true, does not create \"spec.ts\" test files for the app.", - "type": "boolean", - "default": false, - "alias": "S", - "x-user-analytics": 12 - }, - "path": { - "type": "string", - "format": "path", - "description": "The path at which to create the component file, relative to the current workspace. Default is a folder with the same name as the component in the project root.", - "visible": false - }, - "prefix": { - "type": "string", - "description": "The prefix to apply to the generated component selector.", - "alias": "p", - "oneOf": [ - { - "maxLength": 0 - }, - { - "minLength": 1, - "format": "html-selector" - } - ] - }, - "fileNameStyleGuide": { - "type": "string", - "description": "The file naming convention to use for generated files. `2016` uses classic suffixes such as `.component.ts` and `.module.ts`. `2025` omits type suffixes. When omitted, the convention already used by the project is auto-detected.", - "enum": ["2016", "2025"] - } - }, - "required": ["name"] -} diff --git a/projects/ui/schematics/ng-generate/po-page-detail/schema.ts b/projects/ui/schematics/ng-generate/po-page-detail/schema.ts deleted file mode 100644 index 0e5e0a349d..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-detail/schema.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Schema as ComponentSchema } from '@po-ui/ng-schematics/build-component'; - -export interface Schema extends ComponentSchema {} diff --git a/projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__componentFileName__.__style__.template b/projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__componentFileName__.__style__.template deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__componentFileName__.html.template b/projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__componentFileName__.html.template deleted file mode 100644 index 1546109fb6..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__componentFileName__.html.template +++ /dev/null @@ -1,8 +0,0 @@ - - - - diff --git a/projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__componentFileName__.spec.ts.template b/projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__componentFileName__.spec.ts.template deleted file mode 100644 index 57b77e9fc0..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__componentFileName__.spec.ts.template +++ /dev/null @@ -1,33 +0,0 @@ -import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { provideLocationMocks } from '@angular/common/testing'; -import { RouterModule } from '@angular/router'; - -import { PoPageModule } from '@po-ui/ng-components'; - -import { <%= classify(name) %>Component } from './<%= componentFileName %>'; - -describe('<%= classify(name) %>Component', () => { - let component: <%= classify(name) %>Component; - let fixture: ComponentFixture<<%= classify(name) %>Component>; - - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - imports: [ - RouterModule.forRoot([]), - PoPageModule - ], - providers: [provideLocationMocks()] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(<%= classify(name) %>Component); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__componentFileName__.ts.template b/projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__componentFileName__.ts.template deleted file mode 100644 index 1597ee08d8..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__componentFileName__.ts.template +++ /dev/null @@ -1,33 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { CommonModule } from '@angular/common'; - -import { PoPageModule } from '@po-ui/ng-components'; - -@Component({ - selector: '<%= selector %>', - imports: [ - CommonModule, - PoPageModule, - ], - templateUrl: './<%= componentFileName %>.html', - styleUrls: ['./<%= componentFileName %>.<%= style %>'] -}) -export class <%= classify(name) %>Component implements OnInit { - - constructor() { } - - ngOnInit() { } - - cancel() { - // cancel action here - } - - save() { - // save action here - } - - saveNew() { - // saveNew action here - } - -} diff --git a/projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__routingFileName__.ts.template b/projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__routingFileName__.ts.template deleted file mode 100644 index d2ab4235eb..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-edit/files-standalone/__path__/__name@dasherize__/__routingFileName__.ts.template +++ /dev/null @@ -1,14 +0,0 @@ -import { NgModule } from '@angular/core'; -import { Routes, RouterModule } from '@angular/router'; - -import { <%= classify(name) %>Component } from './<%= componentFileName %>'; - -const routes: Routes = [ - { path: '', component: <%= classify(name) %>Component } -]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class <%= classify(name) %>RoutingModule { } diff --git a/projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__componentFileName__.__style__.template b/projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__componentFileName__.__style__.template deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__componentFileName__.html.template b/projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__componentFileName__.html.template deleted file mode 100644 index 1546109fb6..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__componentFileName__.html.template +++ /dev/null @@ -1,8 +0,0 @@ - - - - diff --git a/projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__componentFileName__.spec.ts.template b/projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__componentFileName__.spec.ts.template deleted file mode 100644 index bc328d8520..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__componentFileName__.spec.ts.template +++ /dev/null @@ -1,34 +0,0 @@ -import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { provideLocationMocks } from '@angular/common/testing'; -import { RouterModule } from '@angular/router'; - -import { PoPageModule } from '@po-ui/ng-components'; - -import { <%= classify(name) %>Component } from './<%= componentFileName %>'; - -describe('<%= classify(name) %>Component', () => { - let component: <%= classify(name) %>Component; - let fixture: ComponentFixture<<%= classify(name) %>Component>; - - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - imports: [ - RouterModule.forRoot([]), - PoPageModule - ], - providers: [provideLocationMocks()], - declarations: [ <%= classify(name) %>Component ] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(<%= classify(name) %>Component); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__componentFileName__.ts.template b/projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__componentFileName__.ts.template deleted file mode 100644 index 89ca0b5145..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__componentFileName__.ts.template +++ /dev/null @@ -1,27 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: '<%= selector %>', - templateUrl: './<%= componentFileName %>.html', - styleUrls: ['./<%= componentFileName %>.<%= style %>'], - standalone: false -}) -export class <%= classify(name) %>Component implements OnInit { - - constructor() { } - - ngOnInit() { } - - cancel() { - // cancel action here - } - - save() { - // save action here - } - - saveNew() { - // saveNew action here - } - -} diff --git a/projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__moduleFileName__.ts.template b/projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__moduleFileName__.ts.template deleted file mode 100644 index da1b3e64c0..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__moduleFileName__.ts.template +++ /dev/null @@ -1,19 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; - -import { PoModule } from '@po-ui/ng-components'; - -import { <%= classify(name) %>Component } from './<%= componentFileName %>';<% if (routing) { %> -import { <%= classify(name) %>RoutingModule } from './<%= routingFileName %>';<% } %> - -@NgModule({ - declarations: [ - <%= classify(name) %>Component - ], - imports: [ - CommonModule, - PoModule,<% if (routing) { %> -<%= classify(name) %>RoutingModule<% } %> - ] -}) -export class <%= classify(name) %>Module { } diff --git a/projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__routingFileName__.ts.template b/projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__routingFileName__.ts.template deleted file mode 100644 index d2ab4235eb..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__routingFileName__.ts.template +++ /dev/null @@ -1,14 +0,0 @@ -import { NgModule } from '@angular/core'; -import { Routes, RouterModule } from '@angular/router'; - -import { <%= classify(name) %>Component } from './<%= componentFileName %>'; - -const routes: Routes = [ - { path: '', component: <%= classify(name) %>Component } -]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class <%= classify(name) %>RoutingModule { } diff --git a/projects/ui/schematics/ng-generate/po-page-edit/index.spec.ts b/projects/ui/schematics/ng-generate/po-page-edit/index.spec.ts deleted file mode 100644 index df4a220a19..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-edit/index.spec.ts +++ /dev/null @@ -1,168 +0,0 @@ -import { Tree } from '@angular-devkit/schematics'; -import { SchematicTestRunner, UnitTestTree } from '@angular-devkit/schematics/testing'; -import { Schema as WorkspaceOptions } from '@schematics/angular/workspace/schema'; -import * as path from 'path'; - -const collectionPath = path.join(__dirname, '../../collection.json'); - -describe('po-page-edit:', () => { - const runner = new SchematicTestRunner('schematics', collectionPath); - - const workspaceOptions: WorkspaceOptions = { - name: 'workspace', - newProjectRoot: 'projects', - version: '6.0.0' - }; - - const applicationOptions: any = { - name: 'po', - style: 'css', - skipTests: false - }; - - const componentOptions: any = { - name: 'po', - style: 'css', - skipTests: false, - project: 'po' - }; - - let appTree: UnitTestTree; - - beforeEach(async () => { - appTree = await runner.runExternalSchematic('@schematics/angular', 'workspace', workspaceOptions); - appTree = await runner.runExternalSchematic('@schematics/angular', 'application', applicationOptions, appTree); - }); - - describe('auto-detected style on a project using the current Angular convention:', () => { - it('should create component files without type suffix', async () => { - const componentName = 'supply'; - const tree = await runner.runSchematic('po-page-edit', { ...componentOptions, name: componentName }, appTree); - - const files: Array = tree.files; - - const fullFilePath = (ext: string) => - `/projects/${componentOptions.name}/src/app/${componentName}/${componentName}.${ext}`; - - expect(files).toContain(fullFilePath('ts')); - expect(files).toContain(fullFilePath('html')); - expect(files).toContain(fullFilePath('spec.ts')); - expect(files).toContain(fullFilePath(componentOptions.style)); - }); - - it('should reference sibling files without type suffix in the component file', async () => { - const tree = await runner.runSchematic('po-page-edit', { ...componentOptions, name: 'customers' }, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.ts` - ); - - expect(componentContent).toMatch(/templateUrl: '.\/customers.html'/); - expect(componentContent).toMatch(/styleUrls: \['.\/customers.css'\]/); - }); - - it('should generate stylesheet with `less` extension if style is `less`', async () => { - const options = { ...componentOptions, name: 'customers', style: 'less' }; - const tree = await runner.runSchematic('po-page-edit', options, appTree); - - expect(tree.files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.${options.style}`); - }); - - it('shouldn`t generate component spec if `skipTests` is true', async () => { - const options = { ...componentOptions, name: 'customers', skipTests: true }; - const tree = await runner.runSchematic('po-page-edit', options, appTree); - - expect(tree.files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.ts`); - expect(tree.files).not.toContain(`/projects/${componentOptions.name}/src/app/customers/customers.spec.ts`); - }); - - it('should generate component in path informed', async () => { - const optionsPath = { - ...componentOptions, - name: 'wms', - path: `/projects/${componentOptions.name}/src/app/customers` - }; - - const treePath = await runner.runSchematic('po-page-edit', optionsPath, appTree); - - expect(treePath.files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.ts`); - expect(treePath.files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.html`); - }); - - it('should use the custom prefix when create component', async () => { - const prefix = 'wms'; - const tree = await runner.runSchematic('po-page-edit', { ...componentOptions, name: 'customers', prefix }, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.ts` - ); - - expect(componentContent).toMatch(new RegExp(`selector: '${prefix}-customers'`)); - }); - }); - - describe('fileNameStyleGuide 2016 (classic suffixes):', () => { - it('should create component files with the `.component` suffix', async () => { - const componentName = 'supply'; - const options = { ...componentOptions, name: componentName, fileNameStyleGuide: '2016' }; - const tree = await runner.runSchematic('po-page-edit', options, appTree); - - const fullFilePath = (ext: string) => - `/projects/${componentOptions.name}/src/app/${componentName}/${componentName}.component.${ext}`; - - expect(tree.files).toContain(fullFilePath('ts')); - expect(tree.files).toContain(fullFilePath('html')); - expect(tree.files).toContain(fullFilePath('spec.ts')); - expect(tree.files).toContain(fullFilePath(componentOptions.style)); - }); - - it('should reference sibling files with the `.component` suffix in the component file', async () => { - const options = { ...componentOptions, name: 'customers', fileNameStyleGuide: '2016' }; - const tree = await runner.runSchematic('po-page-edit', options, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` - ); - - expect(componentContent).toMatch(/templateUrl: '.\/customers.component.html'/); - expect(componentContent).toMatch(/styleUrls: \['.\/customers.component.css'\]/); - }); - }); - - describe('auto-detected style on a project using the classic (2016) convention:', () => { - beforeEach(() => { - appTree.overwrite( - '/projects/po/src/main.ts', - `import { bootstrapApplication } from '@angular/platform-browser';\n` + - `import { App } from './app/app.component';\n` + - `import { appConfig } from './app/app.config';\n` + - `bootstrapApplication(App, appConfig);\n` - ); - appTree.create( - '/projects/po/src/app/app.component.ts', - `import { Component } from '@angular/core';\n@Component({ selector: 'app-root', template: '' })\nexport class App {}\n` - ); - }); - - it('should generate files with the classic `.component` suffix without passing the option', async () => { - const tree = await runner.runSchematic('po-page-edit', { ...componentOptions, name: 'customers' }, appTree); - - expect(tree.files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.ts`); - expect(tree.files).not.toContain(`/projects/${componentOptions.name}/src/app/customers/customers.ts`); - }); - }); -}); - -/** Gets the content of a specified file from a schematic tree. */ -function getFileContent(tree: Tree, filePath: string): string { - const contentBuffer = tree.read(filePath); - - if (!contentBuffer) { - throw new Error(`Cannot read "${filePath}" because it does not exist.`); - } - - return contentBuffer.toString(); -} diff --git a/projects/ui/schematics/ng-generate/po-page-edit/index.ts b/projects/ui/schematics/ng-generate/po-page-edit/index.ts deleted file mode 100644 index 106a2d6795..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-edit/index.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { chain, Rule } from '@angular-devkit/schematics'; - -import { buildComponent, Schema as ComponentOptions } from '@po-ui/ng-schematics/build-component'; - -/** Scaffolds a new component with */ -export default function (options: ComponentOptions): Rule { - return chain([createPageEditComponent(options)]); -} - -function createPageEditComponent(options: ComponentOptions): Rule { - return buildComponent(options); -} diff --git a/projects/ui/schematics/ng-generate/po-page-edit/schema.json b/projects/ui/schematics/ng-generate/po-page-edit/schema.json deleted file mode 100644 index 0e32366eb2..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-edit/schema.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema", - "$id": "SchematicsPOPageEdit", - "title": "Page Edit Options Schema", - "type": "object", - "properties": { - "style": { - "description": "The file extension or preprocessor to use for style files.", - "type": "string", - "default": "css" - }, - "project": { - "type": "string", - "description": "The name of the project.", - "$default": { - "$source": "projectName" - } - }, - "routing": { - "type": "boolean", - "description": "When true, creates a routing module.", - "default": false - }, - "createModule": { - "type": "boolean", - "description": "When true, create a component module.", - "default": false - }, - "name": { - "type": "string", - "description": "The name to use for the component", - "$default": { - "$source": "argv", - "index": 0 - }, - "x-prompt": "What name would you like to use for the component?" - }, - "skipTests": { - "description": "When true, does not create \"spec.ts\" test files for the app.", - "type": "boolean", - "default": false, - "alias": "S", - "x-user-analytics": 12 - }, - "path": { - "type": "string", - "format": "path", - "description": "The path at which to create the component file, relative to the current workspace. Default is a folder with the same name as the component in the project root.", - "visible": false - }, - "prefix": { - "type": "string", - "description": "The prefix to apply to the generated component selector.", - "alias": "p", - "oneOf": [ - { - "maxLength": 0 - }, - { - "minLength": 1, - "format": "html-selector" - } - ] - }, - "fileNameStyleGuide": { - "type": "string", - "description": "The file naming convention to use for generated files. `2016` uses classic suffixes such as `.component.ts` and `.module.ts`. `2025` omits type suffixes. When omitted, the convention already used by the project is auto-detected.", - "enum": ["2016", "2025"] - } - }, - "required": ["name"] -} diff --git a/projects/ui/schematics/ng-generate/po-page-edit/schema.ts b/projects/ui/schematics/ng-generate/po-page-edit/schema.ts deleted file mode 100644 index 0e5e0a349d..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-edit/schema.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Schema as ComponentSchema } from '@po-ui/ng-schematics/build-component'; - -export interface Schema extends ComponentSchema {} diff --git a/projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__componentFileName__.__style__.template b/projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__componentFileName__.__style__.template deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__componentFileName__.html.template b/projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__componentFileName__.html.template deleted file mode 100644 index 7edb5d0c0d..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__componentFileName__.html.template +++ /dev/null @@ -1,28 +0,0 @@ - -<% if(dataView === 'table') { %> - - -<% } else { %> - - - -
    - - - - - -
    -
    - -
    -<% }%> -
    diff --git a/projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__componentFileName__.spec.ts.template b/projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__componentFileName__.spec.ts.template deleted file mode 100644 index 0f05f1bfde..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__componentFileName__.spec.ts.template +++ /dev/null @@ -1,37 +0,0 @@ -import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { provideLocationMocks } from '@angular/common/testing'; -import { RouterModule } from '@angular/router'; -import { provideHttpClient } from '@angular/common/http'; - -import { PoPageModule, PoInfoModule<% if(dataView === 'table') { %>, PoTableModule <% } else { %>, PoListViewModule <% } %>} from '@po-ui/ng-components'; - -import { <%= classify(name) %>Component } from './<%= componentFileName %>'; - -describe('<%= classify(name) %>Component', () => { - let component: <%= classify(name) %>Component; - let fixture: ComponentFixture<<%= classify(name) %>Component>; - - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - imports: [ - RouterModule.forRoot([]), - PoPageModule, - PoInfoModule,<% if(dataView === 'table') { %> - PoTableModule<% } else {%> - PoListViewModule<% } %> - ], - providers: [provideLocationMocks(), provideHttpClient()] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(<%= classify(name) %>Component); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__componentFileName__.ts.template b/projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__componentFileName__.ts.template deleted file mode 100644 index 54a8a91ccf..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__componentFileName__.ts.template +++ /dev/null @@ -1,42 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { CommonModule } from '@angular/common'; - -import { PoPageAction<% if(dataView === 'table') { %>, PoTableColumn<%} %> } from '@po-ui/ng-components'; -import { PoPageModule } from '@po-ui/ng-components'; -import { PoModule } from '@po-ui/ng-components'; - - -@Component({ - selector: '<%= selector %>', - imports: [ - CommonModule, - PoPageModule, - PoModule - ], - templateUrl: './<%= componentFileName %>.html', - styleUrls: ['./<%= componentFileName %>.<%= style %>'] -}) -export class <%= classify(name) %>Component implements OnInit { - - readonly actions: Array = [ - // actions of table here - ];<% if(dataView === 'table') { %> - - readonly columns: Array = [ - // columns of table here - { property: 'name', width: '50%' }, - { property: 'age', width: '15%' }, - { property: 'email', width: '35%' } - ]; -<%} %> - items: Array = []; - - constructor() { } - - ngOnInit() { - this.items = [ - { name: 'John Doe', age: 33, email: 'johndoe@example.com' } - ]; - } - -} diff --git a/projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__routingFileName__.ts.template b/projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__routingFileName__.ts.template deleted file mode 100644 index d2ab4235eb..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-list/files-standalone/__path__/__name@dasherize__/__routingFileName__.ts.template +++ /dev/null @@ -1,14 +0,0 @@ -import { NgModule } from '@angular/core'; -import { Routes, RouterModule } from '@angular/router'; - -import { <%= classify(name) %>Component } from './<%= componentFileName %>'; - -const routes: Routes = [ - { path: '', component: <%= classify(name) %>Component } -]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class <%= classify(name) %>RoutingModule { } diff --git a/projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__componentFileName__.__style__.template b/projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__componentFileName__.__style__.template deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__componentFileName__.html.template b/projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__componentFileName__.html.template deleted file mode 100644 index 7edb5d0c0d..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__componentFileName__.html.template +++ /dev/null @@ -1,28 +0,0 @@ - -<% if(dataView === 'table') { %> - - -<% } else { %> - - - -
    - - - - - -
    -
    - -
    -<% }%> -
    diff --git a/projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__componentFileName__.spec.ts.template b/projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__componentFileName__.spec.ts.template deleted file mode 100644 index 2b8ab0b80a..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__componentFileName__.spec.ts.template +++ /dev/null @@ -1,38 +0,0 @@ -import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { provideLocationMocks } from '@angular/common/testing'; -import { RouterModule } from '@angular/router'; -import { provideHttpClient } from '@angular/common/http'; - -import { PoPageModule, PoInfoModule<% if(dataView === 'table') { %>, PoTableModule <% } else { %>, PoListViewModule <% } %>} from '@po-ui/ng-components'; - -import { <%= classify(name) %>Component } from './<%= componentFileName %>'; - -describe('<%= classify(name) %>Component', () => { - let component: <%= classify(name) %>Component; - let fixture: ComponentFixture<<%= classify(name) %>Component>; - - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - imports: [ - RouterModule.forRoot([]), - PoPageModule, - PoInfoModule,<% if(dataView === 'table') { %> - PoTableModule<% } else {%> - PoListViewModule<% } %> - ], - providers: [provideLocationMocks(), provideHttpClient()], - declarations: [ <%= classify(name) %>Component ] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(<%= classify(name) %>Component); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__componentFileName__.ts.template b/projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__componentFileName__.ts.template deleted file mode 100644 index 345c6d7c17..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__componentFileName__.ts.template +++ /dev/null @@ -1,34 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -import { PoPageAction<% if(dataView === 'table') { %>, PoTableColumn<%} %> } from '@po-ui/ng-components'; - -@Component({ - selector: '<%= selector %>', - templateUrl: './<%= componentFileName %>.html', - styleUrls: ['./<%= componentFileName %>.<%= style %>'], - standalone: false -}) -export class <%= classify(name) %>Component implements OnInit { - - readonly actions: Array = [ - // actions of table here - ];<% if(dataView === 'table') { %> - - readonly columns: Array = [ - // columns of table here - { property: 'name', width: '50%' }, - { property: 'age', width: '15%' }, - { property: 'email', width: '35%' } - ]; -<%} %> - items: Array = []; - - constructor() { } - - ngOnInit() { - this.items = [ - { name: 'John Doe', age: 33, email: 'johndoe@example.com' } - ]; - } - -} diff --git a/projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__moduleFileName__.ts.template b/projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__moduleFileName__.ts.template deleted file mode 100644 index b974d67522..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__moduleFileName__.ts.template +++ /dev/null @@ -1,19 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; - -import { PoModule } from '@po-ui/ng-components'; - -import { <%= classify(name) %>Component } from './<%= componentFileName %>';<% if (routing) { %> -import { <%= classify(name) %>RoutingModule } from './<%= routingFileName %>';<% } %> - -@NgModule({ - declarations: [ - <%= classify(name) %>Component - ], - imports: [ - CommonModule, - PoModule,<% if (routing) { %> - <%= classify(name) %>RoutingModule<% } %> - ] -}) -export class <%= classify(name) %>Module { } diff --git a/projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__routingFileName__.ts.template b/projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__routingFileName__.ts.template deleted file mode 100644 index d2ab4235eb..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__routingFileName__.ts.template +++ /dev/null @@ -1,14 +0,0 @@ -import { NgModule } from '@angular/core'; -import { Routes, RouterModule } from '@angular/router'; - -import { <%= classify(name) %>Component } from './<%= componentFileName %>'; - -const routes: Routes = [ - { path: '', component: <%= classify(name) %>Component } -]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class <%= classify(name) %>RoutingModule { } diff --git a/projects/ui/schematics/ng-generate/po-page-list/index.spec.ts b/projects/ui/schematics/ng-generate/po-page-list/index.spec.ts deleted file mode 100644 index 35b164bd35..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-list/index.spec.ts +++ /dev/null @@ -1,168 +0,0 @@ -import { Tree } from '@angular-devkit/schematics'; -import { SchematicTestRunner, UnitTestTree } from '@angular-devkit/schematics/testing'; -import { Schema as WorkspaceOptions } from '@schematics/angular/workspace/schema'; -import * as path from 'path'; - -const collectionPath = path.join(__dirname, '../../collection.json'); - -describe('po-page-list:', () => { - const runner = new SchematicTestRunner('schematics', collectionPath); - - const workspaceOptions: WorkspaceOptions = { - name: 'workspace', - newProjectRoot: 'projects', - version: '6.0.0' - }; - - const applicationOptions: any = { - name: 'po', - style: 'css', - skipTests: false - }; - - const componentOptions: any = { - name: 'po', - style: 'css', - skipTests: false, - project: 'po' - }; - - let appTree: UnitTestTree; - - beforeEach(async () => { - appTree = await runner.runExternalSchematic('@schematics/angular', 'workspace', workspaceOptions); - appTree = await runner.runExternalSchematic('@schematics/angular', 'application', applicationOptions, appTree); - }); - - describe('auto-detected style on a project using the current Angular convention:', () => { - it('should create component files without type suffix', async () => { - const componentName = 'supply'; - const tree = await runner.runSchematic('po-page-list', { ...componentOptions, name: componentName }, appTree); - - const files: Array = tree.files; - - const fullFilePath = (ext: string) => - `/projects/${componentOptions.name}/src/app/${componentName}/${componentName}.${ext}`; - - expect(files).toContain(fullFilePath('ts')); - expect(files).toContain(fullFilePath('html')); - expect(files).toContain(fullFilePath('spec.ts')); - expect(files).toContain(fullFilePath(componentOptions.style)); - }); - - it('should reference sibling files without type suffix in the component file', async () => { - const tree = await runner.runSchematic('po-page-list', { ...componentOptions, name: 'customers' }, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.ts` - ); - - expect(componentContent).toMatch(/templateUrl: '.\/customers.html'/); - expect(componentContent).toMatch(/styleUrls: \['.\/customers.css'\]/); - }); - - it('should generate stylesheet with `less` extension if style is `less`', async () => { - const options = { ...componentOptions, name: 'customers', style: 'less' }; - const tree = await runner.runSchematic('po-page-list', options, appTree); - - expect(tree.files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.${options.style}`); - }); - - it('shouldn`t generate component spec if `skipTests` is true', async () => { - const options = { ...componentOptions, name: 'customers', skipTests: true }; - const tree = await runner.runSchematic('po-page-list', options, appTree); - - expect(tree.files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.ts`); - expect(tree.files).not.toContain(`/projects/${componentOptions.name}/src/app/customers/customers.spec.ts`); - }); - - it('should generate component in path informed', async () => { - const optionsPath = { - ...componentOptions, - name: 'wms', - path: `/projects/${componentOptions.name}/src/app/customers` - }; - - const treePath = await runner.runSchematic('po-page-list', optionsPath, appTree); - - expect(treePath.files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.ts`); - expect(treePath.files).toContain(`/projects/${componentOptions.name}/src/app/customers/wms/wms.html`); - }); - - it('should use the custom prefix when create component', async () => { - const prefix = 'wms'; - const tree = await runner.runSchematic('po-page-list', { ...componentOptions, name: 'customers', prefix }, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.ts` - ); - - expect(componentContent).toMatch(new RegExp(`selector: '${prefix}-customers'`)); - }); - }); - - describe('fileNameStyleGuide 2016 (classic suffixes):', () => { - it('should create component files with the `.component` suffix', async () => { - const componentName = 'supply'; - const options = { ...componentOptions, name: componentName, fileNameStyleGuide: '2016' }; - const tree = await runner.runSchematic('po-page-list', options, appTree); - - const fullFilePath = (ext: string) => - `/projects/${componentOptions.name}/src/app/${componentName}/${componentName}.component.${ext}`; - - expect(tree.files).toContain(fullFilePath('ts')); - expect(tree.files).toContain(fullFilePath('html')); - expect(tree.files).toContain(fullFilePath('spec.ts')); - expect(tree.files).toContain(fullFilePath(componentOptions.style)); - }); - - it('should reference sibling files with the `.component` suffix in the component file', async () => { - const options = { ...componentOptions, name: 'customers', fileNameStyleGuide: '2016' }; - const tree = await runner.runSchematic('po-page-list', options, appTree); - - const componentContent = getFileContent( - tree, - `/projects/${componentOptions.name}/src/app/customers/customers.component.ts` - ); - - expect(componentContent).toMatch(/templateUrl: '.\/customers.component.html'/); - expect(componentContent).toMatch(/styleUrls: \['.\/customers.component.css'\]/); - }); - }); - - describe('auto-detected style on a project using the classic (2016) convention:', () => { - beforeEach(() => { - appTree.overwrite( - '/projects/po/src/main.ts', - `import { bootstrapApplication } from '@angular/platform-browser';\n` + - `import { App } from './app/app.component';\n` + - `import { appConfig } from './app/app.config';\n` + - `bootstrapApplication(App, appConfig);\n` - ); - appTree.create( - '/projects/po/src/app/app.component.ts', - `import { Component } from '@angular/core';\n@Component({ selector: 'app-root', template: '' })\nexport class App {}\n` - ); - }); - - it('should generate files with the classic `.component` suffix without passing the option', async () => { - const tree = await runner.runSchematic('po-page-list', { ...componentOptions, name: 'customers' }, appTree); - - expect(tree.files).toContain(`/projects/${componentOptions.name}/src/app/customers/customers.component.ts`); - expect(tree.files).not.toContain(`/projects/${componentOptions.name}/src/app/customers/customers.ts`); - }); - }); -}); - -/** Gets the content of a specified file from a schematic tree. */ -function getFileContent(tree: Tree, filePath: string): string { - const contentBuffer = tree.read(filePath); - - if (!contentBuffer) { - throw new Error(`Cannot read "${filePath}" because it does not exist.`); - } - - return contentBuffer.toString(); -} diff --git a/projects/ui/schematics/ng-generate/po-page-list/index.ts b/projects/ui/schematics/ng-generate/po-page-list/index.ts deleted file mode 100644 index ee46878aba..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-list/index.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { chain, Rule } from '@angular-devkit/schematics'; - -import { buildComponent, Schema as ComponentOptions } from '@po-ui/ng-schematics/build-component'; - -/** - * Scaffolds a new component with - * - The property dataView set which component will be used to display data. - */ -export default function (options: ComponentOptions): Rule { - return chain([createPageListComponent(options)]); -} - -function createPageListComponent(options: ComponentOptions): Rule { - return buildComponent(options); -} diff --git a/projects/ui/schematics/ng-generate/po-page-list/schema.json b/projects/ui/schematics/ng-generate/po-page-list/schema.json deleted file mode 100644 index 3561e102dd..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-list/schema.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema", - "$id": "SchematicsPOPageList", - "title": "PageList Options Schema", - "type": "object", - "properties": { - "style": { - "description": "The file extension or preprocessor to use for style files.", - "type": "string", - "default": "css" - }, - "project": { - "type": "string", - "description": "The name of the project.", - "$default": { - "$source": "projectName" - } - }, - "routing": { - "type": "boolean", - "description": "When true, creates a routing module.", - "default": false - }, - "createModule": { - "type": "boolean", - "description": "When true, do not create a component module.", - "default": false - }, - "name": { - "type": "string", - "description": "The name to use for the component", - "$default": { - "$source": "argv", - "index": 0 - }, - "x-prompt": "What name would you like to use for the component?" - }, - "skipTests": { - "description": "When true, does not create \"spec.ts\" test files for the app.", - "type": "boolean", - "default": false, - "x-user-analytics": 12 - }, - "path": { - "type": "string", - "format": "path", - "description": "The path at which to create the component file, relative to the current workspace. Default is a folder with the same name as the component in the project root.", - "visible": false - }, - "prefix": { - "type": "string", - "description": "The prefix to apply to the generated component selector.", - "oneOf": [ - { - "maxLength": 0 - }, - { - "minLength": 1, - "format": "html-selector" - } - ] - }, - "dataView": { - "description": "Component to show datas.", - "type": "string", - "default": "table", - "x-prompt": { - "message": "Which component would you like to use to display data?", - "type": "list", - "items": [ - { "value": "table", "label": "PO Table [ https://po-ui.io/documentation/po-table ]" }, - { "value": "list", "label": "PO List View [ https://po-ui.io/documentation/po-list-view ]" } - ] - } - }, - "fileNameStyleGuide": { - "type": "string", - "description": "The file naming convention to use for generated files. `2016` uses classic suffixes such as `.component.ts` and `.module.ts`. `2025` omits type suffixes. When omitted, the convention already used by the project is auto-detected.", - "enum": ["2016", "2025"] - } - }, - "required": ["name"] -} diff --git a/projects/ui/schematics/ng-generate/po-page-list/schema.ts b/projects/ui/schematics/ng-generate/po-page-list/schema.ts deleted file mode 100644 index b508f0efbe..0000000000 --- a/projects/ui/schematics/ng-generate/po-page-list/schema.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { Schema as ComponentSchema } from '@po-ui/ng-schematics/build-component'; - -export interface Schema extends ComponentSchema { - /** Which component will be used to display the data. */ - dataView?: 'table' | 'list'; -} diff --git a/projects/ui/src/lib/components/po-widget/po-widget-base.component.ts b/projects/ui/src/lib/components/po-widget/po-widget-base.component.ts index 4c4a5147d9..266befcde3 100644 --- a/projects/ui/src/lib/components/po-widget/po-widget-base.component.ts +++ b/projects/ui/src/lib/components/po-widget/po-widget-base.component.ts @@ -49,7 +49,6 @@ const PO_WIDGET_TAG_POSITION_DEFAULT = 'right'; * | `--font-size` | Tamanho da fonte | `var(--font-size-sm)` | * | `--font-weight` | Peso da fonte | `var(--font-weight-bold)` | * | `--font-color` | Cor da fonte | `var(--color-neutral-dark-95)` | - * | `--padding` - `@deprecated 21.x.x` | Preenchimento do componente | `1rem` | * | `--padding-header` | Preenchimento do header | `var(--spacing-sm) var(--spacing-sm) var(--spacing-xs) var(--spacing-sm)` | * | `--padding-body` | Preenchimento do body | `var(--spacing-xs) var(--spacing-sm) var(--spacing-xs) var(--spacing-sm)` | * | `--padding-avatar` | Preenchimento do avatar | `var(--spacing-sm) 0 var(--spacing-xs) var(--spacing-sm)` | diff --git a/projects/ui/src/lib/utils/util.spec.ts b/projects/ui/src/lib/utils/util.spec.ts index 4d23d6ceb5..0b346b4c0a 100644 --- a/projects/ui/src/lib/utils/util.spec.ts +++ b/projects/ui/src/lib/utils/util.spec.ts @@ -1,7 +1,7 @@ import { ElementRef } from '@angular/core'; import { PoDensityMode } from '../enums/po-density-mode.enum'; import { PoFieldSize } from '../enums/po-field-size.enum'; -import { PoThemeA11yEnum, PoThemeService } from '../services'; +import { PoThemeA11yEnum } from '../services'; import { handleThrowError } from './../util-test/util-expect.spec'; import { @@ -1669,13 +1669,7 @@ describe('replaceFormatSeparator: ', () => { }); describe('accessibility level: ', () => { - describe('getDefaultSize', () => { - let poThemeServiceMock: jasmine.SpyObj; - - beforeEach(() => { - poThemeServiceMock = jasmine.createSpyObj('PoThemeService', ['getA11yLevel', 'getA11yDefaultSize']); - }); - + describe('getDefaultSizeFn', () => { beforeEach(() => { document.documentElement.removeAttribute('data-a11y'); localStorage.removeItem('po-default-size'); @@ -1686,13 +1680,6 @@ describe('accessibility level: ', () => { localStorage.removeItem('po-default-size'); }); - it('should return `small` when the default component size is `small` in accessibility level AA (Service)', () => { - poThemeServiceMock.getA11yLevel.and.returnValue(PoThemeA11yEnum.AA); - poThemeServiceMock.getA11yDefaultSize.and.returnValue('small'); - - expect(UtilFunctions.getDefaultSize(poThemeServiceMock, PoFieldSize)).toBe(PoFieldSize.Small); - }); - it('should return `small` when the default component size is `small` in accessibility level AA', () => { document.documentElement.setAttribute('data-a11y', PoThemeA11yEnum.AA); localStorage.setItem('po-default-size', 'small'); @@ -1700,12 +1687,6 @@ describe('accessibility level: ', () => { expect(UtilFunctions.getDefaultSizeFn(PoFieldSize)).toBe(PoFieldSize.Small); }); - it('should return `medium` if accessibility AA and default size is not set (Service)', () => { - poThemeServiceMock.getA11yLevel.and.returnValue(PoThemeA11yEnum.AA); - - expect(UtilFunctions.getDefaultSize(poThemeServiceMock, PoFieldSize)).toBe(PoFieldSize.Medium); - }); - it('should return `medium` if accessibility AA and default size is not set', () => { document.documentElement.setAttribute('data-a11y', PoThemeA11yEnum.AA); localStorage.removeItem('po-default-size'); @@ -1713,12 +1694,6 @@ describe('accessibility level: ', () => { expect(UtilFunctions.getDefaultSizeFn(PoFieldSize)).toBe(PoFieldSize.Medium); }); - it('should return `medium` when the accessibility level is AAA (Service)', () => { - poThemeServiceMock.getA11yLevel.and.returnValue(PoThemeA11yEnum.AAA); - - expect(UtilFunctions.getDefaultSize(poThemeServiceMock, PoFieldSize)).toBe(PoFieldSize.Medium); - }); - it('should return `medium` when the accessibility level is AAA', () => { document.documentElement.setAttribute('data-a11y', PoThemeA11yEnum.AAA); @@ -1726,13 +1701,7 @@ describe('accessibility level: ', () => { }); }); - describe('validateSize', () => { - let poThemeServiceMock: jasmine.SpyObj; - - beforeEach(() => { - poThemeServiceMock = jasmine.createSpyObj('PoThemeService', ['getA11yLevel', 'getA11yDefaultSize']); - }); - + describe('validateSizeFn', () => { beforeEach(() => { document.documentElement.removeAttribute('data-a11y'); localStorage.removeItem('po-default-size'); @@ -1743,13 +1712,6 @@ describe('accessibility level: ', () => { localStorage.removeItem('po-default-size'); }); - it('should return valid values based on accessibility level (Service)', () => { - poThemeServiceMock.getA11yLevel.and.returnValue(PoThemeA11yEnum.AA); - - expect(UtilFunctions.validateSize(PoFieldSize.Small, poThemeServiceMock, PoFieldSize)).toBe(PoFieldSize.Small); - expect(UtilFunctions.validateSize(PoFieldSize.Medium, poThemeServiceMock, PoFieldSize)).toBe(PoFieldSize.Medium); - }); - it('should return valid values based on accessibility level', () => { document.documentElement.setAttribute('data-a11y', PoThemeA11yEnum.AA); @@ -1757,24 +1719,12 @@ describe('accessibility level: ', () => { expect(UtilFunctions.validateSizeFn(PoFieldSize.Medium, PoFieldSize)).toBe(PoFieldSize.Medium); }); - it('should return `medium` when the value is `small` but the accessibility level is not AA (Service)', () => { - poThemeServiceMock.getA11yLevel.and.returnValue(PoThemeA11yEnum.AAA); - - expect(UtilFunctions.validateSize(PoFieldSize.Small, poThemeServiceMock, PoFieldSize)).toBe(PoFieldSize.Medium); - }); - it('should return `medium` when the value is `small` but the accessibility level is not AA', () => { document.documentElement.setAttribute('data-a11y', PoThemeA11yEnum.AAA); expect(UtilFunctions.validateSizeFn(PoFieldSize.Small, PoFieldSize)).toBe(PoFieldSize.Medium); }); - it('should return the default size when an invalid value is provided (Service)', () => { - poThemeServiceMock.getA11yLevel.and.returnValue(PoThemeA11yEnum.AA); - - expect(UtilFunctions.validateSize('xxg', poThemeServiceMock, PoFieldSize)).toBe(PoFieldSize.Medium); - }); - it('should return the default size when an invalid value is provided', () => { expect(UtilFunctions.validateSizeFn('xxg', PoFieldSize)).toBe(PoFieldSize.Medium); }); diff --git a/projects/ui/src/lib/utils/util.ts b/projects/ui/src/lib/utils/util.ts index dd31552893..50746fc36f 100644 --- a/projects/ui/src/lib/utils/util.ts +++ b/projects/ui/src/lib/utils/util.ts @@ -3,7 +3,6 @@ import { PoFieldSize } from '../enums/po-field-size.enum'; import { poLocaleDefault, poLocales } from '../services/po-language/po-language.constant'; import { ElementRef } from '@angular/core'; import { PoThemeA11yEnum } from '../services/po-theme/enum/po-theme-a11y.enum'; -import { PoThemeService } from '../services/po-theme/po-theme.service'; import { PoTableColumnSpacing } from '../components/po-table/enums/po-table-spacing.enum'; /** @@ -41,15 +40,6 @@ export function getBrowserLanguage(): string { return poLocales.includes(shortLanguage) ? language : poLocaleDefault; } -/** - * @deprecated use getDefaultSizeFn - * - * Retorna o tamanho padrão dos componentes conforme o nível de acessibilidade. - */ -export function getDefaultSize(poThemeService: PoThemeService, sizeEnum: T): T[keyof T] { - return poThemeService.getA11yDefaultSize() === 'small' ? sizeEnum['Small'] : sizeEnum['Medium']; -} - /** * Retorna o tamanho padrão dos componentes conforme o nível de acessibilidade. */ @@ -685,24 +675,6 @@ export function sortArrayOfObjects(items, key, isAscendingOrder) { } } -/** - * @deprecated use validateSizeFn - * - * Valida e retorna um tamanho permitido para os componentes, considerando a acessibilidade. - */ -export function validateSize(value: string, poThemeService: PoThemeService, sizeEnum: T): T[keyof T] { - const validSizes = Object.values(sizeEnum) as Array; - - if (value && validSizes.includes(value)) { - if (value === sizeEnum['Small'] && poThemeService.getA11yLevel() === PoThemeA11yEnum.AAA) { - return sizeEnum['Medium']; - } - return value as T[keyof T]; - } - - return getDefaultSize(poThemeService, sizeEnum); -} - /** * Valida e retorna um tamanho permitido para os componentes, considerando a acessibilidade. */ From cf009203f8693ff4de6c8a65a61f437546bd6ced Mon Sep 17 00:00:00 2001 From: luizvasconcellos Date: Tue, 1 Sep 2026 14:58:54 +0000 Subject: [PATCH 4/8] =?UTF-8?q?refactor(lint):=20migra=C3=A7=C3=A3o=20para?= =?UTF-8?q?=20flat=20config=20do=20ESLint?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Migra a estrutura conforme documentado em https://eslint.org/docs/latest/use/configure/migration-guide. --- .eslintrc.json | 278 ------------------ eslint.config.mjs | 248 ++++++++++++++++ package.json | 3 + projects/app/.eslintrc.json | 185 ------------ projects/code-editor/.eslintrc.json | 185 ------------ projects/portal/.eslintrc.json | 185 ------------ projects/storage/.eslintrc.json | 185 ------------ projects/sync/.eslintrc.json | 185 ------------ projects/templates/.eslintrc.json | 185 ------------ .../po-page-dynamic-table.component.ts | 7 +- projects/ui/.eslintrc.json | 194 ------------ .../ui/schematics/ng-add/setup-project.ts | 2 +- projects/ui/schematics/ng-update/v18/index.ts | 2 +- projects/ui/schematics/ng-update/v19/index.ts | 2 +- projects/ui/schematics/ng-update/v20/index.ts | 2 +- .../gauge-manual-test/all-cases.component.ts | 52 ++-- .../ng-update/v22/gauge-property-map.spec.ts | 10 +- .../ng-update/v22/gauge-ts-migration.spec.ts | 2 +- .../ng-update/v22/gauge-ts-migration.ts | 14 +- .../ui/schematics/ng-update/v22/index.spec.ts | 2 +- .../po-accordion-item-body.component.spec.ts | 4 +- .../po-button-group.component.ts | 2 +- ...-group-opening-service-ticket.component.ts | 4 +- .../po-calendar-wrapper.component.spec.ts | 6 +- .../po-chart/po-chart-grid-utils.spec.ts | 1 + .../po-chart/po-chart.component.spec.ts | 4 + .../sample-po-dropdown-labs.component.ts | 2 +- .../po-decimal/po-decimal.component.spec.ts | 14 + .../po-lookup-modal.component.ts | 2 +- .../components/po-link/po-link.component.ts | 2 +- .../po-list-view.component.spec.ts | 5 + .../po-menu-panel/po-menu-panel.component.ts | 2 +- .../sample-po-menu-labs.component.ts | 6 +- .../po-navbar-action.component.ts | 2 +- .../po-page-slide.component.spec.ts | 10 +- .../po-page-slide/po-page-slide.component.ts | 13 +- .../sample-po-popup-labs.component.ts | 2 +- .../po-progress/po-progress.component.spec.ts | 2 + .../components/po-slide/po-slide.component.ts | 1 - .../po-stepper/po-stepper.component.spec.ts | 2 + .../sample-po-stepper-labs.component.ts | 2 +- .../po-table-column-manager.component.spec.ts | 2 +- .../po-table-list-manager.component.ts | 2 - .../po-tag/po-tag.component.spec.ts | 1 + .../po-timer/po-timer.component.spec.ts | 2 +- .../po-toolbar/po-toolbar.component.ts | 2 +- .../po-tree-view-base.component.spec.ts | 5 + .../po-i18n/po-i18n-base.service.spec.ts | 3 + .../po-user-guide-base.service.spec.ts | 6 +- .../po-user-guide.service.spec.ts | 10 +- projects/ui/src/lib/utils/util.spec.ts | 2 + 51 files changed, 383 insertions(+), 1668 deletions(-) delete mode 100644 .eslintrc.json create mode 100644 eslint.config.mjs delete mode 100644 projects/app/.eslintrc.json delete mode 100644 projects/code-editor/.eslintrc.json delete mode 100644 projects/portal/.eslintrc.json delete mode 100644 projects/storage/.eslintrc.json delete mode 100644 projects/sync/.eslintrc.json delete mode 100644 projects/templates/.eslintrc.json delete mode 100644 projects/ui/.eslintrc.json diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index efa2465b8c..0000000000 --- a/.eslintrc.json +++ /dev/null @@ -1,278 +0,0 @@ -{ - "root": true, - "ignorePatterns": ["projects/**/*"], - "overrides": [ - { - "files": ["*.ts"], - "parserOptions": { - "project": ["tsconfig.json"], - "createDefaultProgram": true - }, - "extends": [ - "plugin:@typescript-eslint/recommended", - "plugin:@angular-eslint/recommended", - "plugin:@angular-eslint/template/process-inline-templates" - ], - "plugins": ["sonarjs"], - "rules": { - "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/no-this-alias": "off", - "@typescript-eslint/no-unused-vars": "off", - "@typescript-eslint/no-array-constructor": "off", - "@angular-eslint/component-selector": [ - "error", - { - "type": ["element", "attribute"], - "prefix": "", - "style": "kebab-case" - } - ], - "@angular-eslint/directive-class-suffix": "off", - "@angular-eslint/directive-selector": [ - "error", - { - "type": "attribute", - "prefix": "", - "style": "kebab-case" - } - ], - "@angular-eslint/no-input-rename": "off", - "@angular-eslint/no-output-rename": "off", - "@angular-eslint/no-output-native": "off", - "@angular-eslint/no-output-on-prefix": "off", - "@angular-eslint/no-conflicting-lifecycle": "off", - "@typescript-eslint/array-type": [ - "error", - { - "default": "generic" - } - ], - "@typescript-eslint/await-thenable": "error", - "@typescript-eslint/ban-types": [ - "off", - { - "types": { - "String": { - "message": "Use string instead", - "fixWith": "string" - }, - "Boolean": { - "message": "Use boolean instead", - "fixWith": "boolean" - }, - "Number": { - "message": "Use number instead", - "fixWith": "number" - } - } - } - ], - "@typescript-eslint/consistent-type-assertions": "off", - "@typescript-eslint/consistent-type-definitions": "error", - "@typescript-eslint/dot-notation": "off", - "@typescript-eslint/explicit-member-accessibility": [ - "off", - { - "accessibility": "explicit" - } - ], - "@typescript-eslint/member-delimiter-style": [ - "off", - { - "multiline": { - "delimiter": "none", - "requireLast": true - }, - "singleline": { - "delimiter": "semi", - "requireLast": false - } - } - ], - "@typescript-eslint/no-empty-interface": "off", - "@typescript-eslint/no-for-in-array": "error", - "@typescript-eslint/no-inferrable-types": [ - "off", - { - "ignoreParameters": true - } - ], - "@typescript-eslint/no-non-null-assertion": "off", - "@typescript-eslint/no-unnecessary-type-assertion": "error", - "@typescript-eslint/no-unused-expressions": "off", - "@typescript-eslint/no-var-requires": "error", - "@typescript-eslint/prefer-for-of": "off", - "@typescript-eslint/quotes": [ - "off", - "single", - { - "allowTemplateLiterals": true - } - ], - "@typescript-eslint/require-array-sort-compare": [ - "error", - { - "ignoreStringArrays": true - } - ], - "@typescript-eslint/semi": ["off", null], - "@typescript-eslint/type-annotation-spacing": "off", - "camelcase": "off", - "@typescript-eslint/naming-convention": [ - "error", - { - "selector": "default", - "format": ["camelCase"] - }, - { - "selector": "variable", - "format": ["camelCase", "UPPER_CASE", "snake_case", "PascalCase"], - "leadingUnderscore": "allow" - }, - { - "selector": "import", - "format": ["camelCase", "PascalCase"], - "leadingUnderscore": "allow" - }, - { - "selector": "classProperty", - "format": ["camelCase", "UPPER_CASE", "snake_case", "PascalCase"], - "leadingUnderscore": "allow" - }, - { - "selector": "parameter", - "format": ["camelCase"], - "leadingUnderscore": "allow" - }, - { - "selector": "memberLike", - "modifiers": ["private"], - "format": ["camelCase"], - "leadingUnderscore": "allow" - }, - { - "selector": "typeLike", - "format": ["PascalCase", "camelCase"] - }, - { - "selector": "enumMember", - "format": ["UPPER_CASE", "camelCase", "PascalCase"], - "leadingUnderscore": "allow" - }, - { - "selector": ["objectLiteralMethod"], - "format": ["PascalCase", "camelCase", "snake_case", "UPPER_CASE"], - "leadingUnderscore": "allow" - }, - { - "selector": ["objectLiteralProperty"], - "format": null, - "leadingUnderscore": "allow" - }, - { - "selector": "function", - "format": ["PascalCase", "camelCase"], - "leadingUnderscore": "allow" - } - ], - "@typescript-eslint/member-ordering": [ - "error", - { - "default": ["signature", "field", "constructor", "method"] - } - ], - "arrow-parens": ["off", "always"], - "arrow-body-style": ["error", "as-needed"], - "brace-style": ["off", "off"], - "default-case-last": "error", - "dot-notation": "off", - "eol-last": "off", - "id-blacklist": "off", - "id-match": "off", - "indent": "off", - "linebreak-style": "off", - "max-len": "off", - "max-lines-per-function": [ - "off", - { - "max": 200 - } - ], - "max-params": [ - "error", - { - "max": 8 - } - ], - "new-parens": "off", - "newline-per-chained-call": "off", - "no-empty-function": "off", - "no-empty-pattern": "off", - "no-extra-parens": "off", - "no-extra-semi": "error", - "no-irregular-whitespace": "off", - "no-multi-str": "error", - "no-self-assign": "error", - "no-shadow": "off", - "no-trailing-spaces": "off", - "no-underscore-dangle": "off", - "no-unused-expressions": [ - "error", - { - "allowTernary": true - } - ], - "no-use-before-define": "off", - "object-shorthand": "off", - "padded-blocks": [ - "off", - { - "blocks": "never" - }, - { - "allowSingleLineBlocks": true - } - ], - "prefer-arrow/prefer-arrow-functions": "off", - "quote-props": "off", - "jsdoc/no-types": "off", - "jsdoc/newline-after-description": "off", - "semi": "off", - "sonarjs/cognitive-complexity": "off", - "sonarjs/max-switch-cases": "error", - "sonarjs/no-all-duplicated-branches": "error", - "sonarjs/no-collapsible-if": "error", - "sonarjs/no-collection-size-mischeck": "error", - "sonarjs/no-duplicate-string": "off", - "sonarjs/no-duplicated-branches": "off", - "sonarjs/no-element-overwrite": "error", - "sonarjs/no-identical-conditions": "error", - "sonarjs/no-identical-expressions": "error", - "sonarjs/no-identical-functions": "off", - "sonarjs/no-inverted-boolean-check": "error", - "sonarjs/no-one-iteration-loop": "off", - "sonarjs/no-redundant-boolean": "error", - "sonarjs/no-redundant-jump": "error", - "sonarjs/no-same-line-conditional": "error", - "sonarjs/no-small-switch": "error", - "sonarjs/no-unused-collection": "error", - "sonarjs/no-use-of-empty-return-value": "error", - "sonarjs/no-useless-catch": "error", - "sonarjs/prefer-immediate-return": "error", - "space-before-function-paren": "off", - "space-in-parens": ["off", "never"], - "@angular-eslint/prefer-standalone": "off", - "@typescript-eslint/no-unsafe-function-type": "off", - "@typescript-eslint/no-empty-object-type": "off", - "@angular-eslint/prefer-inject": "off" - } - }, - { - "files": ["*.html"], - "extends": ["plugin:@angular-eslint/template/recommended"], - "rules": { - "@angular-eslint/template/prefer-control-flow": "warn" - } - } - ] -} diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000000..a3aaffd3ed --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,248 @@ +// Flat config (ESLint 9 / angular-eslint 22 / typescript-eslint 8). +// +// Migrado a partir dos arquivos .eslintrc.json legados. As regras foram +// preservadas conforme o modelo anterior. Os presets "recommended" do +// @angular-eslint e do @typescript-eslint sao carregados via os pacotes +// umbrella (angular-eslint / typescript-eslint), ja que os pacotes granulares +// da v22 nao expoem os shareable configs no formato eslintrc usado pelo +// FlatCompat. +import tseslint from 'typescript-eslint'; +import angular from 'angular-eslint'; +import sonarjs from 'eslint-plugin-sonarjs'; + +export default tseslint.config( + { + ignores: [ + 'dist/**', + 'node_modules/**', + '.angular/**', + 'coverage/**', + 'out-tsc/**', + // Fixtures de teste manual da migracao do po-gauge: arquivos de entrada + // propositalmente crafted (usos de po-gauge, @ts-ignore, etc.) que servem + // de material para a schematic transformar; nao devem ser lintados. + 'projects/ui/schematics/ng-update/v22/gauge-manual-test/**' + ] + }, + { + // O modelo legado (.eslintrc.json) nao reportava diretivas eslint-disable + // nao utilizadas; mantem o mesmo comportamento. + linterOptions: { + reportUnusedDisableDirectives: 'off' + } + }, + { + files: ['**/*.ts'], + extends: [ + // Baseline "recommended" equivalente ao modelo legado + // (plugin:@typescript-eslint/recommended + plugin:@angular-eslint/recommended). + ...tseslint.configs.recommended, + ...angular.configs.tsRecommended + ], + // Habilita o processamento de templates inline dos componentes + // (equivalente a plugin:@angular-eslint/template/process-inline-templates). + processor: angular.processInlineTemplates, + plugins: { + sonarjs + }, + languageOptions: { + parserOptions: { + // Usa o Project Service do typescript-eslint (v8+) em vez de listar + // manualmente todos os tsconfigs. O Project Service resolve o tsconfig + // correto por arquivo sob demanda e reaproveita Programs, reduzindo + // drasticamente o consumo de memoria (evita OOM ao manter 14 Programs + // TypeScript vivos ao mesmo tempo). + projectService: true, + tsconfigRootDir: import.meta.dirname + } + }, + rules: { + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-this-alias': 'off', + '@typescript-eslint/no-unused-vars': 'off', + '@typescript-eslint/no-array-constructor': 'off', + '@angular-eslint/component-selector': [ + 'error', + { type: ['element', 'attribute'], prefix: '', style: 'kebab-case' } + ], + '@angular-eslint/directive-class-suffix': 'off', + '@angular-eslint/directive-selector': ['error', { type: 'attribute', prefix: '', style: 'kebab-case' }], + '@angular-eslint/no-input-rename': 'off', + '@angular-eslint/no-output-rename': 'off', + '@angular-eslint/no-output-native': 'off', + '@angular-eslint/no-output-on-prefix': 'off', + '@angular-eslint/no-conflicting-lifecycle': 'off', + '@typescript-eslint/array-type': ['error', { default: 'generic' }], + '@typescript-eslint/await-thenable': 'error', + '@typescript-eslint/consistent-type-assertions': 'off', + '@typescript-eslint/consistent-type-definitions': 'error', + '@typescript-eslint/dot-notation': 'off', + '@typescript-eslint/explicit-member-accessibility': ['off', { accessibility: 'explicit' }], + '@typescript-eslint/no-empty-interface': 'off', + '@typescript-eslint/no-for-in-array': 'error', + '@typescript-eslint/no-inferrable-types': ['off', { ignoreParameters: true }], + '@typescript-eslint/no-non-null-assertion': 'off', + '@typescript-eslint/no-unnecessary-type-assertion': 'error', + '@typescript-eslint/no-unused-expressions': 'off', + '@typescript-eslint/no-var-requires': 'error', + '@typescript-eslint/prefer-for-of': 'off', + '@typescript-eslint/require-array-sort-compare': ['error', { ignoreStringArrays: true }], + camelcase: 'off', + '@typescript-eslint/naming-convention': [ + 'error', + { selector: 'default', format: ['camelCase'] }, + { selector: 'variable', format: ['camelCase', 'UPPER_CASE', 'snake_case', 'PascalCase'], leadingUnderscore: 'allow' }, + { selector: 'import', format: ['camelCase', 'PascalCase'], leadingUnderscore: 'allow' }, + { selector: 'classProperty', format: ['camelCase', 'UPPER_CASE', 'snake_case', 'PascalCase'], leadingUnderscore: 'allow' }, + { selector: 'parameter', format: ['camelCase'], leadingUnderscore: 'allow' }, + { selector: 'memberLike', modifiers: ['private'], format: ['camelCase'], leadingUnderscore: 'allow' }, + { selector: 'typeLike', format: ['PascalCase', 'camelCase'] }, + { selector: 'enumMember', format: ['UPPER_CASE', 'camelCase', 'PascalCase'], leadingUnderscore: 'allow' }, + { selector: ['objectLiteralMethod'], format: ['PascalCase', 'camelCase', 'snake_case', 'UPPER_CASE'], leadingUnderscore: 'allow' }, + { selector: ['objectLiteralProperty'], format: null, leadingUnderscore: 'allow' }, + { selector: 'function', format: ['PascalCase', 'camelCase'], leadingUnderscore: 'allow' } + ], + '@typescript-eslint/member-ordering': ['error', { default: ['signature', 'field', 'constructor', 'method'] }], + 'arrow-parens': ['off', 'always'], + 'arrow-body-style': ['error', 'as-needed'], + 'brace-style': ['off', 'off'], + 'default-case-last': 'error', + 'dot-notation': 'off', + 'eol-last': 'off', + 'id-blacklist': 'off', + 'id-match': 'off', + indent: 'off', + 'linebreak-style': 'off', + 'max-len': 'off', + 'max-lines-per-function': ['off', { max: 200 }], + 'max-params': ['error', { max: 8 }], + 'new-parens': 'off', + 'newline-per-chained-call': 'off', + 'no-empty-function': 'off', + 'no-empty-pattern': 'off', + 'no-extra-parens': 'off', + 'no-extra-semi': 'error', + 'no-irregular-whitespace': 'off', + 'no-multi-str': 'error', + 'no-self-assign': 'error', + 'no-shadow': 'off', + 'no-trailing-spaces': 'off', + 'no-underscore-dangle': 'off', + // No modelo legado, o preset @typescript-eslint/recommended desligava a + // regra core `no-unused-expressions` (em favor da versao TS, que estava + // `off`). O efeito liquido era nenhuma das duas ativa; mantido igual. + 'no-unused-expressions': 'off', + '@typescript-eslint/no-unused-expressions': 'off', + 'no-use-before-define': 'off', + 'object-shorthand': 'off', + 'padded-blocks': ['off', { blocks: 'never' }, { allowSingleLineBlocks: true }], + 'quote-props': 'off', + semi: 'off', + 'sonarjs/cognitive-complexity': 'off', + 'sonarjs/max-switch-cases': 'error', + 'sonarjs/no-all-duplicated-branches': 'error', + 'sonarjs/no-collapsible-if': 'error', + 'sonarjs/no-collection-size-mischeck': 'error', + 'sonarjs/no-duplicate-string': 'off', + 'sonarjs/no-duplicated-branches': 'off', + 'sonarjs/no-element-overwrite': 'error', + 'sonarjs/no-identical-conditions': 'error', + 'sonarjs/no-identical-expressions': 'error', + 'sonarjs/no-identical-functions': 'off', + 'sonarjs/no-inverted-boolean-check': 'error', + 'sonarjs/no-redundant-boolean': 'error', + 'sonarjs/no-redundant-jump': 'error', + 'sonarjs/no-same-line-conditional': 'error', + 'sonarjs/no-small-switch': 'error', + 'sonarjs/no-unused-collection': 'error', + 'sonarjs/no-use-of-empty-return-value': 'error', + 'sonarjs/no-useless-catch': 'error', + 'sonarjs/prefer-immediate-return': 'error', + 'space-before-function-paren': 'off', + 'space-in-parens': ['off', 'never'], + '@angular-eslint/prefer-standalone': 'off', + '@typescript-eslint/no-unsafe-function-type': 'off', + '@typescript-eslint/no-empty-object-type': 'off', + '@angular-eslint/prefer-inject': 'off', + // Nao fazia parte do preset "recommended" legado do @angular-eslint (v21); + // o preset da v22 passou a inclui-la. Desligada para preservar o + // comportamento anterior. + '@angular-eslint/prefer-on-push-component-change-detection': 'off' + } + }, + // Arquivos de schematics sao compilados com tsconfig.schematics.json + // (strictNullChecks: true). Type-checa-los com o mesmo tsconfig evita que + // regras type-aware (ex.: no-unnecessary-type-assertion) divirjam do build: + // sem isso, o lint usa o tsconfig.lib.json (strict: false) e considera + // desnecessarios os `!`/casts que o build strict realmente exige. + // Com o Project Service habilitado no bloco base, a associacao arquivo -> + // tsconfig e resolvida automaticamente (inclusive para os tsconfigs de + // schematics). Por isso nao e mais necessario declarar `project` aqui; fazer + // isso gera erro "Enabling 'project' does nothing when 'projectService' is + // enabled". Os blocos abaixo permanecem apenas como marcadores/documentacao + // do escopo, sem override de parserOptions. + + // --------------------------------------------------------------------------- + // Overrides por projeto (equivalentes aos .eslintrc.json de cada projeto). + // Aplicados apos o bloco compartilhado; em flat config, blocos posteriores + // sobrescrevem os anteriores para os arquivos correspondentes. + // --------------------------------------------------------------------------- + + // projects/ui: directive-selector como "warn"; specs e alguns arquivos + // excluidos das regras TS; regras extras desligadas. + { + ignores: ['projects/ui/**/util-expect.spec.ts'] + }, + { + files: ['projects/ui/**/*.ts'], + ignores: [ + 'projects/ui/**/test.ts', + 'projects/ui/**/*.spec.ts', + 'projects/ui/**/*.po.ts', + 'projects/ui/src/lib/util-test/util-expect.spec.ts' + ], + rules: { + '@angular-eslint/directive-selector': ['warn', { type: 'attribute', prefix: '', style: 'kebab-case' }], + // Nota: @angular-eslint/no-host-metadata-property foi removida na v22 e + // por isso nao e mais referenciada (era `off` no modelo legado, sem efeito). + 'prefer-spread': 'off' + } + }, + + // projects/sync: selectors com prefixo "lib". + { + files: ['projects/sync/**/*.ts'], + rules: { + '@angular-eslint/component-selector': ['error', { type: 'element', prefix: 'lib', style: 'kebab-case' }], + '@angular-eslint/directive-selector': ['error', { type: 'attribute', prefix: 'lib', style: 'camelCase' }] + } + }, + + // projects/portal: selectors com prefixo "app"; pastas de docs/samples ignoradas. + { + ignores: ['projects/portal/docs/**/*', 'projects/portal/src/app/documentation/samples/**/*'] + }, + { + files: ['projects/portal/**/*.ts'], + rules: { + '@angular-eslint/component-selector': ['error', { type: 'element', prefix: 'app', style: 'kebab-case' }], + '@angular-eslint/directive-selector': ['error', { type: 'attribute', prefix: 'app', style: 'camelCase' }] + } + }, + + // projects/app: no-extra-parens habilitado como erro. + { + files: ['projects/app/**/*.ts'], + rules: { + 'no-extra-parens': 'error' + } + }, + + { + files: ['**/*.html'], + extends: [...angular.configs.templateRecommended], + rules: { + '@angular-eslint/template/prefer-control-flow': 'warn' + } + } +); diff --git a/package.json b/package.json index e79d6ad433..e9c1dd6e51 100644 --- a/package.json +++ b/package.json @@ -102,6 +102,8 @@ "@animaliads/animalia-icon": "^1.1.0", "@commitlint/cli": "^18.4.3", "@commitlint/config-angular": "^18.4.3", + "@eslint/eslintrc": "^3.3.7", + "@eslint/js": "^9.39.5", "@po-ui/ng-schematics": "file:dist/ng-schematics", "@types/jasmine": "~5.1.4", "@types/jasminewd2": "~2.0.13", @@ -110,6 +112,7 @@ "@types/systemjs": "^6.13.5", "@typescript-eslint/eslint-plugin": "^8.33.1", "@typescript-eslint/parser": "^8.33.1", + "angular-eslint": "^22.2.0", "capitalize": "^2.0.4", "colors": "1.4.0", "core-js": "3.33.3", diff --git a/projects/app/.eslintrc.json b/projects/app/.eslintrc.json deleted file mode 100644 index 410dd78e8e..0000000000 --- a/projects/app/.eslintrc.json +++ /dev/null @@ -1,185 +0,0 @@ -{ - "extends": "../../.eslintrc.json", - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts"], - "parserOptions": { - "project": ["projects/app/tsconfig.app.json", "projects/app/tsconfig.spec.json"], - "createDefaultProgram": true - }, - "plugins": ["sonarjs"], - "rules": { - "@angular-eslint/component-selector": [ - "error", - { - "type": ["element", "attribute"], - "prefix": "", - "style": "kebab-case" - } - ], - "@angular-eslint/directive-class-suffix": "off", - "@angular-eslint/directive-selector": [ - "error", - { - "type": "attribute", - "prefix": "", - "style": "kebab-case" - } - ], - "@angular-eslint/no-input-rename": "off", - "@angular-eslint/no-output-rename": "off", - "@typescript-eslint/array-type": [ - "error", - { - "default": "generic" - } - ], - "@typescript-eslint/await-thenable": "error", - "@typescript-eslint/ban-types": [ - "off", - { - "types": { - "String": { - "message": "Use string instead", - "fixWith": "string" - }, - "Boolean": { - "message": "Use boolean instead", - "fixWith": "boolean" - }, - "Number": { - "message": "Use number instead", - "fixWith": "number" - } - } - } - ], - "@typescript-eslint/consistent-type-assertions": "off", - "@typescript-eslint/consistent-type-definitions": "error", - "@typescript-eslint/dot-notation": "off", - "@typescript-eslint/explicit-member-accessibility": [ - "off", - { - "accessibility": "explicit" - } - ], - "@typescript-eslint/member-delimiter-style": [ - "off", - { - "multiline": { - "delimiter": "none", - "requireLast": true - }, - "singleline": { - "delimiter": "semi", - "requireLast": false - } - } - ], - "@typescript-eslint/no-empty-interface": "off", - "@typescript-eslint/no-for-in-array": "error", - "@typescript-eslint/no-inferrable-types": [ - "off", - { - "ignoreParameters": true - } - ], - "@typescript-eslint/no-unnecessary-type-assertion": "error", - "@typescript-eslint/no-var-requires": "error", - "@typescript-eslint/prefer-for-of": "off", - "@typescript-eslint/quotes": [ - "off", - "single", - { - "allowTemplateLiterals": true - } - ], - "@typescript-eslint/require-array-sort-compare": [ - "error", - { - "ignoreStringArrays": true - } - ], - "@typescript-eslint/semi": ["off", null], - "@typescript-eslint/type-annotation-spacing": "off", - "arrow-parens": ["off", "always"], - "brace-style": ["off", "off"], - "default-case-last": "error", - "dot-notation": "off", - "eol-last": "off", - "id-blacklist": "off", - "id-match": "off", - "indent": "off", - "linebreak-style": "off", - "max-len": "off", - "max-lines-per-function": [ - "off", - { - "max": 200 - } - ], - "max-params": [ - "error", - { - "max": 8 - } - ], - "new-parens": "off", - "newline-per-chained-call": "off", - "no-empty-function": "off", - "no-empty-pattern": "off", - "no-extra-parens": "error", - "no-extra-semi": "error", - "no-irregular-whitespace": "off", - "no-multi-str": "error", - "no-self-assign": "error", - "no-shadow": "off", - "no-trailing-spaces": "off", - "no-underscore-dangle": "off", - "no-unused-expressions": "error", - "no-use-before-define": "off", - "object-shorthand": "off", - "padded-blocks": [ - "off", - { - "blocks": "never" - }, - { - "allowSingleLineBlocks": true - } - ], - "prefer-arrow/prefer-arrow-functions": "off", - "quote-props": "off", - "semi": "off", - "sonarjs/cognitive-complexity": "off", - "sonarjs/max-switch-cases": "error", - "sonarjs/no-all-duplicated-branches": "error", - "sonarjs/no-collapsible-if": "error", - "sonarjs/no-collection-size-mischeck": "error", - "sonarjs/no-duplicate-string": "off", - "sonarjs/no-duplicated-branches": "off", - "sonarjs/no-element-overwrite": "error", - "sonarjs/no-identical-conditions": "error", - "sonarjs/no-identical-expressions": "error", - "sonarjs/no-identical-functions": "off", - "sonarjs/no-inverted-boolean-check": "error", - "sonarjs/no-one-iteration-loop": "off", - "sonarjs/no-redundant-boolean": "error", - "sonarjs/no-redundant-jump": "error", - "sonarjs/no-same-line-conditional": "error", - "sonarjs/no-small-switch": "error", - "sonarjs/no-unused-collection": "error", - "sonarjs/no-use-of-empty-return-value": "error", - "sonarjs/no-useless-catch": "error", - "sonarjs/prefer-immediate-return": "error", - "space-before-function-paren": "off", - "space-in-parens": ["off", "never"] - } - }, - { - "files": ["*.html"], - "rules": {} - } - ] -} diff --git a/projects/code-editor/.eslintrc.json b/projects/code-editor/.eslintrc.json deleted file mode 100644 index 9de0388323..0000000000 --- a/projects/code-editor/.eslintrc.json +++ /dev/null @@ -1,185 +0,0 @@ -{ - "extends": "../../.eslintrc.json", - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts"], - "parserOptions": { - "project": ["projects/code-editor/tsconfig.lib.json", "projects/code-editor/tsconfig.spec.json"], - "createDefaultProgram": true - }, - "plugins": ["sonarjs"], - "rules": { - "@angular-eslint/component-selector": [ - "error", - { - "type": ["element", "attribute"], - "prefix": "", - "style": "kebab-case" - } - ], - "@angular-eslint/directive-class-suffix": "off", - "@angular-eslint/directive-selector": [ - "error", - { - "type": "attribute", - "prefix": "", - "style": "kebab-case" - } - ], - "@angular-eslint/no-input-rename": "off", - "@angular-eslint/no-output-rename": "off", - "@typescript-eslint/array-type": [ - "error", - { - "default": "generic" - } - ], - "@typescript-eslint/await-thenable": "error", - "@typescript-eslint/ban-types": [ - "off", - { - "types": { - "String": { - "message": "Use string instead", - "fixWith": "string" - }, - "Boolean": { - "message": "Use boolean instead", - "fixWith": "boolean" - }, - "Number": { - "message": "Use number instead", - "fixWith": "number" - } - } - } - ], - "@typescript-eslint/consistent-type-assertions": "off", - "@typescript-eslint/consistent-type-definitions": "error", - "@typescript-eslint/dot-notation": "off", - "@typescript-eslint/explicit-member-accessibility": [ - "off", - { - "accessibility": "explicit" - } - ], - "@typescript-eslint/member-delimiter-style": [ - "off", - { - "multiline": { - "delimiter": "none", - "requireLast": true - }, - "singleline": { - "delimiter": "semi", - "requireLast": false - } - } - ], - "@typescript-eslint/no-empty-interface": "off", - "@typescript-eslint/no-for-in-array": "error", - "@typescript-eslint/no-inferrable-types": [ - "off", - { - "ignoreParameters": true - } - ], - "@typescript-eslint/no-unnecessary-type-assertion": "error", - "@typescript-eslint/no-var-requires": "error", - "@typescript-eslint/prefer-for-of": "off", - "@typescript-eslint/quotes": [ - "off", - "single", - { - "allowTemplateLiterals": true - } - ], - "@typescript-eslint/require-array-sort-compare": [ - "error", - { - "ignoreStringArrays": true - } - ], - "@typescript-eslint/semi": ["off", null], - "@typescript-eslint/type-annotation-spacing": "off", - "arrow-parens": ["off", "always"], - "brace-style": ["off", "off"], - "default-case-last": "error", - "dot-notation": "off", - "eol-last": "off", - "id-blacklist": "off", - "id-match": "off", - "indent": "off", - "linebreak-style": "off", - "max-len": "off", - "max-lines-per-function": [ - "off", - { - "max": 200 - } - ], - "max-params": [ - "error", - { - "max": 8 - } - ], - "new-parens": "off", - "newline-per-chained-call": "off", - "no-empty-function": "off", - "no-empty-pattern": "off", - "no-extra-parens": "off", - "no-extra-semi": "error", - "no-irregular-whitespace": "off", - "no-multi-str": "error", - "no-self-assign": "error", - "no-shadow": "off", - "no-trailing-spaces": "off", - "no-underscore-dangle": "off", - "no-unused-expressions": "error", - "no-use-before-define": "off", - "object-shorthand": "off", - "padded-blocks": [ - "off", - { - "blocks": "never" - }, - { - "allowSingleLineBlocks": true - } - ], - "prefer-arrow/prefer-arrow-functions": "off", - "quote-props": "off", - "semi": "off", - "sonarjs/cognitive-complexity": "off", - "sonarjs/max-switch-cases": "error", - "sonarjs/no-all-duplicated-branches": "error", - "sonarjs/no-collapsible-if": "error", - "sonarjs/no-collection-size-mischeck": "error", - "sonarjs/no-duplicate-string": "off", - "sonarjs/no-duplicated-branches": "off", - "sonarjs/no-element-overwrite": "error", - "sonarjs/no-identical-conditions": "error", - "sonarjs/no-identical-expressions": "error", - "sonarjs/no-identical-functions": "off", - "sonarjs/no-inverted-boolean-check": "error", - "sonarjs/no-one-iteration-loop": "off", - "sonarjs/no-redundant-boolean": "error", - "sonarjs/no-redundant-jump": "error", - "sonarjs/no-same-line-conditional": "error", - "sonarjs/no-small-switch": "error", - "sonarjs/no-unused-collection": "error", - "sonarjs/no-use-of-empty-return-value": "error", - "sonarjs/no-useless-catch": "error", - "sonarjs/prefer-immediate-return": "error", - "space-before-function-paren": "off", - "space-in-parens": ["off", "never"] - } - }, - { - "files": ["*.html"], - "rules": {} - } - ] -} diff --git a/projects/portal/.eslintrc.json b/projects/portal/.eslintrc.json deleted file mode 100644 index a8a4c3d7a6..0000000000 --- a/projects/portal/.eslintrc.json +++ /dev/null @@ -1,185 +0,0 @@ -{ - "extends": "../../.eslintrc.json", - "ignorePatterns": ["!**/*", "docs/**/*", "src/app/documentation/samples/**/*"], - "overrides": [ - { - "files": ["*.ts"], - "parserOptions": { - "project": ["projects/portal/tsconfig.app.json", "projects/portal/tsconfig.spec.json"], - "createDefaultProgram": true - }, - "plugins": ["sonarjs"], - "rules": { - "@angular-eslint/component-selector": [ - "error", - { - "type": "element", - "prefix": "app", - "style": "kebab-case" - } - ], - "@angular-eslint/directive-class-suffix": "off", - "@angular-eslint/directive-selector": [ - "error", - { - "type": "attribute", - "prefix": "app", - "style": "camelCase" - } - ], - "@angular-eslint/no-input-rename": "off", - "@angular-eslint/no-output-rename": "off", - "@typescript-eslint/array-type": [ - "error", - { - "default": "generic" - } - ], - "@typescript-eslint/await-thenable": "error", - "@typescript-eslint/ban-types": [ - "off", - { - "types": { - "String": { - "message": "Use string instead", - "fixWith": "string" - }, - "Boolean": { - "message": "Use boolean instead", - "fixWith": "boolean" - }, - "Number": { - "message": "Use number instead", - "fixWith": "number" - } - } - } - ], - "@typescript-eslint/consistent-type-assertions": "off", - "@typescript-eslint/consistent-type-definitions": "error", - "@typescript-eslint/dot-notation": "off", - "@typescript-eslint/explicit-member-accessibility": [ - "off", - { - "accessibility": "explicit" - } - ], - "@typescript-eslint/member-delimiter-style": [ - "off", - { - "multiline": { - "delimiter": "none", - "requireLast": true - }, - "singleline": { - "delimiter": "semi", - "requireLast": false - } - } - ], - "@typescript-eslint/no-empty-interface": "off", - "@typescript-eslint/no-for-in-array": "error", - "@typescript-eslint/no-inferrable-types": [ - "off", - { - "ignoreParameters": true - } - ], - "@typescript-eslint/no-unnecessary-type-assertion": "error", - "@typescript-eslint/no-var-requires": "error", - "@typescript-eslint/prefer-for-of": "off", - "@typescript-eslint/quotes": [ - "off", - "single", - { - "allowTemplateLiterals": true - } - ], - "@typescript-eslint/require-array-sort-compare": [ - "error", - { - "ignoreStringArrays": true - } - ], - "@typescript-eslint/semi": ["off", null], - "@typescript-eslint/type-annotation-spacing": "off", - "arrow-parens": ["off", "always"], - "brace-style": ["off", "off"], - "default-case-last": "error", - "dot-notation": "off", - "eol-last": "off", - "id-blacklist": "off", - "id-match": "off", - "indent": "off", - "linebreak-style": "off", - "max-len": "off", - "max-lines-per-function": [ - "off", - { - "max": 200 - } - ], - "max-params": [ - "error", - { - "max": 8 - } - ], - "new-parens": "off", - "newline-per-chained-call": "off", - "no-empty-function": "off", - "no-empty-pattern": "off", - "no-extra-parens": "off", - "no-extra-semi": "error", - "no-irregular-whitespace": "off", - "no-multi-str": "error", - "no-self-assign": "error", - "no-shadow": "off", - "no-trailing-spaces": "off", - "no-underscore-dangle": "off", - "no-unused-expressions": "error", - "no-use-before-define": "off", - "object-shorthand": "off", - "padded-blocks": [ - "off", - { - "blocks": "never" - }, - { - "allowSingleLineBlocks": true - } - ], - "prefer-arrow/prefer-arrow-functions": "off", - "quote-props": "off", - "semi": "off", - "sonarjs/cognitive-complexity": "off", - "sonarjs/max-switch-cases": "error", - "sonarjs/no-all-duplicated-branches": "error", - "sonarjs/no-collapsible-if": "error", - "sonarjs/no-collection-size-mischeck": "error", - "sonarjs/no-duplicate-string": "off", - "sonarjs/no-duplicated-branches": "off", - "sonarjs/no-element-overwrite": "error", - "sonarjs/no-identical-conditions": "error", - "sonarjs/no-identical-expressions": "error", - "sonarjs/no-identical-functions": "off", - "sonarjs/no-inverted-boolean-check": "error", - "sonarjs/no-one-iteration-loop": "off", - "sonarjs/no-redundant-boolean": "error", - "sonarjs/no-redundant-jump": "error", - "sonarjs/no-same-line-conditional": "error", - "sonarjs/no-small-switch": "error", - "sonarjs/no-unused-collection": "error", - "sonarjs/no-use-of-empty-return-value": "error", - "sonarjs/no-useless-catch": "error", - "sonarjs/prefer-immediate-return": "error", - "space-before-function-paren": "off", - "space-in-parens": ["off", "never"] - } - }, - { - "files": ["*.html"], - "rules": {} - } - ] -} diff --git a/projects/storage/.eslintrc.json b/projects/storage/.eslintrc.json deleted file mode 100644 index dc546d54bc..0000000000 --- a/projects/storage/.eslintrc.json +++ /dev/null @@ -1,185 +0,0 @@ -{ - "extends": "../../.eslintrc.json", - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts"], - "parserOptions": { - "project": ["projects/storage/tsconfig.lib.json", "projects/storage/tsconfig.spec.json"], - "createDefaultProgram": true - }, - "plugins": ["sonarjs"], - "rules": { - "@angular-eslint/component-selector": [ - "error", - { - "type": ["element", "attribute"], - "prefix": "", - "style": "kebab-case" - } - ], - "@angular-eslint/directive-class-suffix": "off", - "@angular-eslint/directive-selector": [ - "error", - { - "type": "attribute", - "prefix": "", - "style": "kebab-case" - } - ], - "@angular-eslint/no-input-rename": "off", - "@angular-eslint/no-output-rename": "off", - "@typescript-eslint/array-type": [ - "error", - { - "default": "generic" - } - ], - "@typescript-eslint/await-thenable": "error", - "@typescript-eslint/ban-types": [ - "off", - { - "types": { - "String": { - "message": "Use string instead", - "fixWith": "string" - }, - "Boolean": { - "message": "Use boolean instead", - "fixWith": "boolean" - }, - "Number": { - "message": "Use number instead", - "fixWith": "number" - } - } - } - ], - "@typescript-eslint/consistent-type-assertions": "off", - "@typescript-eslint/consistent-type-definitions": "error", - "@typescript-eslint/dot-notation": "off", - "@typescript-eslint/explicit-member-accessibility": [ - "off", - { - "accessibility": "explicit" - } - ], - "@typescript-eslint/member-delimiter-style": [ - "off", - { - "multiline": { - "delimiter": "none", - "requireLast": true - }, - "singleline": { - "delimiter": "semi", - "requireLast": false - } - } - ], - "@typescript-eslint/no-empty-interface": "off", - "@typescript-eslint/no-for-in-array": "error", - "@typescript-eslint/no-inferrable-types": [ - "off", - { - "ignoreParameters": true - } - ], - "@typescript-eslint/no-unnecessary-type-assertion": "error", - "@typescript-eslint/no-var-requires": "error", - "@typescript-eslint/prefer-for-of": "off", - "@typescript-eslint/quotes": [ - "off", - "single", - { - "allowTemplateLiterals": true - } - ], - "@typescript-eslint/require-array-sort-compare": [ - "error", - { - "ignoreStringArrays": true - } - ], - "@typescript-eslint/semi": ["off", null], - "@typescript-eslint/type-annotation-spacing": "off", - "arrow-parens": ["off", "always"], - "brace-style": ["off", "off"], - "default-case-last": "error", - "dot-notation": "off", - "eol-last": "off", - "id-blacklist": "off", - "id-match": "off", - "indent": "off", - "linebreak-style": "off", - "max-len": "off", - "max-lines-per-function": [ - "off", - { - "max": 200 - } - ], - "max-params": [ - "error", - { - "max": 8 - } - ], - "new-parens": "off", - "newline-per-chained-call": "off", - "no-empty-function": "off", - "no-empty-pattern": "off", - "no-extra-parens": "off", - "no-extra-semi": "error", - "no-irregular-whitespace": "off", - "no-multi-str": "error", - "no-self-assign": "error", - "no-shadow": "off", - "no-trailing-spaces": "off", - "no-underscore-dangle": "off", - "no-unused-expressions": "error", - "no-use-before-define": "off", - "object-shorthand": "off", - "padded-blocks": [ - "off", - { - "blocks": "never" - }, - { - "allowSingleLineBlocks": true - } - ], - "prefer-arrow/prefer-arrow-functions": "off", - "quote-props": "off", - "semi": "off", - "sonarjs/cognitive-complexity": "off", - "sonarjs/max-switch-cases": "error", - "sonarjs/no-all-duplicated-branches": "error", - "sonarjs/no-collapsible-if": "error", - "sonarjs/no-collection-size-mischeck": "error", - "sonarjs/no-duplicate-string": "off", - "sonarjs/no-duplicated-branches": "off", - "sonarjs/no-element-overwrite": "error", - "sonarjs/no-identical-conditions": "error", - "sonarjs/no-identical-expressions": "error", - "sonarjs/no-identical-functions": "off", - "sonarjs/no-inverted-boolean-check": "error", - "sonarjs/no-one-iteration-loop": "off", - "sonarjs/no-redundant-boolean": "error", - "sonarjs/no-redundant-jump": "error", - "sonarjs/no-same-line-conditional": "error", - "sonarjs/no-small-switch": "error", - "sonarjs/no-unused-collection": "error", - "sonarjs/no-use-of-empty-return-value": "error", - "sonarjs/no-useless-catch": "error", - "sonarjs/prefer-immediate-return": "error", - "space-before-function-paren": "off", - "space-in-parens": ["off", "never"] - } - }, - { - "files": ["*.html"], - "rules": {} - } - ] -} diff --git a/projects/sync/.eslintrc.json b/projects/sync/.eslintrc.json deleted file mode 100644 index a3e99ce887..0000000000 --- a/projects/sync/.eslintrc.json +++ /dev/null @@ -1,185 +0,0 @@ -{ - "extends": "../../.eslintrc.json", - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts"], - "parserOptions": { - "project": ["projects/sync/tsconfig.lib.json", "projects/sync/tsconfig.spec.json"], - "createDefaultProgram": true - }, - "plugins": ["sonarjs"], - "rules": { - "@angular-eslint/component-selector": [ - "error", - { - "type": "element", - "prefix": "lib", - "style": "kebab-case" - } - ], - "@angular-eslint/directive-class-suffix": "off", - "@angular-eslint/directive-selector": [ - "error", - { - "type": "attribute", - "prefix": "lib", - "style": "camelCase" - } - ], - "@angular-eslint/no-input-rename": "off", - "@angular-eslint/no-output-rename": "off", - "@typescript-eslint/array-type": [ - "error", - { - "default": "generic" - } - ], - "@typescript-eslint/await-thenable": "error", - "@typescript-eslint/ban-types": [ - "off", - { - "types": { - "String": { - "message": "Use string instead", - "fixWith": "string" - }, - "Boolean": { - "message": "Use boolean instead", - "fixWith": "boolean" - }, - "Number": { - "message": "Use number instead", - "fixWith": "number" - } - } - } - ], - "@typescript-eslint/consistent-type-assertions": "off", - "@typescript-eslint/consistent-type-definitions": "error", - "@typescript-eslint/dot-notation": "off", - "@typescript-eslint/explicit-member-accessibility": [ - "off", - { - "accessibility": "explicit" - } - ], - "@typescript-eslint/member-delimiter-style": [ - "off", - { - "multiline": { - "delimiter": "none", - "requireLast": true - }, - "singleline": { - "delimiter": "semi", - "requireLast": false - } - } - ], - "@typescript-eslint/no-empty-interface": "off", - "@typescript-eslint/no-for-in-array": "error", - "@typescript-eslint/no-inferrable-types": [ - "off", - { - "ignoreParameters": true - } - ], - "@typescript-eslint/no-unnecessary-type-assertion": "error", - "@typescript-eslint/no-var-requires": "error", - "@typescript-eslint/prefer-for-of": "off", - "@typescript-eslint/quotes": [ - "off", - "single", - { - "allowTemplateLiterals": true - } - ], - "@typescript-eslint/require-array-sort-compare": [ - "error", - { - "ignoreStringArrays": true - } - ], - "@typescript-eslint/semi": ["off", null], - "@typescript-eslint/type-annotation-spacing": "off", - "arrow-parens": ["off", "always"], - "brace-style": ["off", "off"], - "default-case-last": "error", - "dot-notation": "off", - "eol-last": "off", - "id-blacklist": "off", - "id-match": "off", - "indent": "off", - "linebreak-style": "off", - "max-len": "off", - "max-lines-per-function": [ - "off", - { - "max": 200 - } - ], - "max-params": [ - "error", - { - "max": 8 - } - ], - "new-parens": "off", - "newline-per-chained-call": "off", - "no-empty-function": "off", - "no-empty-pattern": "off", - "no-extra-parens": "off", - "no-extra-semi": "error", - "no-irregular-whitespace": "off", - "no-multi-str": "error", - "no-self-assign": "error", - "no-shadow": "off", - "no-trailing-spaces": "off", - "no-underscore-dangle": "off", - "no-unused-expressions": "error", - "no-use-before-define": "off", - "object-shorthand": "off", - "padded-blocks": [ - "off", - { - "blocks": "never" - }, - { - "allowSingleLineBlocks": true - } - ], - "prefer-arrow/prefer-arrow-functions": "off", - "quote-props": "off", - "semi": "off", - "sonarjs/cognitive-complexity": "off", - "sonarjs/max-switch-cases": "error", - "sonarjs/no-all-duplicated-branches": "error", - "sonarjs/no-collapsible-if": "error", - "sonarjs/no-collection-size-mischeck": "error", - "sonarjs/no-duplicate-string": "off", - "sonarjs/no-duplicated-branches": "off", - "sonarjs/no-element-overwrite": "error", - "sonarjs/no-identical-conditions": "error", - "sonarjs/no-identical-expressions": "error", - "sonarjs/no-identical-functions": "off", - "sonarjs/no-inverted-boolean-check": "error", - "sonarjs/no-one-iteration-loop": "off", - "sonarjs/no-redundant-boolean": "error", - "sonarjs/no-redundant-jump": "error", - "sonarjs/no-same-line-conditional": "error", - "sonarjs/no-small-switch": "error", - "sonarjs/no-unused-collection": "error", - "sonarjs/no-use-of-empty-return-value": "error", - "sonarjs/no-useless-catch": "error", - "sonarjs/prefer-immediate-return": "error", - "space-before-function-paren": "off", - "space-in-parens": ["off", "never"] - } - }, - { - "files": ["*.html"], - "rules": {} - } - ] -} diff --git a/projects/templates/.eslintrc.json b/projects/templates/.eslintrc.json deleted file mode 100644 index fea366f397..0000000000 --- a/projects/templates/.eslintrc.json +++ /dev/null @@ -1,185 +0,0 @@ -{ - "extends": "../../.eslintrc.json", - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts"], - "parserOptions": { - "project": ["projects/templates/tsconfig.lib.json", "projects/templates/tsconfig.spec.json"], - "createDefaultProgram": true - }, - "plugins": ["sonarjs"], - "rules": { - "@angular-eslint/component-selector": [ - "error", - { - "type": ["element", "attribute"], - "prefix": "", - "style": "kebab-case" - } - ], - "@angular-eslint/directive-class-suffix": "off", - "@angular-eslint/directive-selector": [ - "error", - { - "type": "attribute", - "prefix": "", - "style": "kebab-case" - } - ], - "@angular-eslint/no-input-rename": "off", - "@angular-eslint/no-output-rename": "off", - "@typescript-eslint/array-type": [ - "error", - { - "default": "generic" - } - ], - "@typescript-eslint/await-thenable": "error", - "@typescript-eslint/ban-types": [ - "off", - { - "types": { - "String": { - "message": "Use string instead", - "fixWith": "string" - }, - "Boolean": { - "message": "Use boolean instead", - "fixWith": "boolean" - }, - "Number": { - "message": "Use number instead", - "fixWith": "number" - } - } - } - ], - "@typescript-eslint/consistent-type-assertions": "off", - "@typescript-eslint/consistent-type-definitions": "error", - "@typescript-eslint/dot-notation": "off", - "@typescript-eslint/explicit-member-accessibility": [ - "off", - { - "accessibility": "explicit" - } - ], - "@typescript-eslint/member-delimiter-style": [ - "off", - { - "multiline": { - "delimiter": "none", - "requireLast": true - }, - "singleline": { - "delimiter": "semi", - "requireLast": false - } - } - ], - "@typescript-eslint/no-empty-interface": "off", - "@typescript-eslint/no-for-in-array": "error", - "@typescript-eslint/no-inferrable-types": [ - "off", - { - "ignoreParameters": true - } - ], - "@typescript-eslint/no-unnecessary-type-assertion": "error", - "@typescript-eslint/no-var-requires": "error", - "@typescript-eslint/prefer-for-of": "off", - "@typescript-eslint/quotes": [ - "off", - "single", - { - "allowTemplateLiterals": true - } - ], - "@typescript-eslint/require-array-sort-compare": [ - "error", - { - "ignoreStringArrays": true - } - ], - "@typescript-eslint/semi": ["off", null], - "@typescript-eslint/type-annotation-spacing": "off", - "arrow-parens": ["off", "always"], - "brace-style": ["off", "off"], - "default-case-last": "error", - "dot-notation": "off", - "eol-last": "off", - "id-blacklist": "off", - "id-match": "off", - "indent": "off", - "linebreak-style": "off", - "max-len": "off", - "max-lines-per-function": [ - "off", - { - "max": 200 - } - ], - "max-params": [ - "error", - { - "max": 8 - } - ], - "new-parens": "off", - "newline-per-chained-call": "off", - "no-empty-function": "off", - "no-empty-pattern": "off", - "no-extra-parens": "off", - "no-extra-semi": "error", - "no-irregular-whitespace": "off", - "no-multi-str": "error", - "no-self-assign": "error", - "no-shadow": "off", - "no-trailing-spaces": "off", - "no-underscore-dangle": "off", - "no-unused-expressions": "error", - "no-use-before-define": "off", - "object-shorthand": "off", - "padded-blocks": [ - "off", - { - "blocks": "never" - }, - { - "allowSingleLineBlocks": true - } - ], - "prefer-arrow/prefer-arrow-functions": "off", - "quote-props": "off", - "semi": "off", - "sonarjs/cognitive-complexity": "off", - "sonarjs/max-switch-cases": "error", - "sonarjs/no-all-duplicated-branches": "error", - "sonarjs/no-collapsible-if": "error", - "sonarjs/no-collection-size-mischeck": "error", - "sonarjs/no-duplicate-string": "off", - "sonarjs/no-duplicated-branches": "off", - "sonarjs/no-element-overwrite": "error", - "sonarjs/no-identical-conditions": "error", - "sonarjs/no-identical-expressions": "error", - "sonarjs/no-identical-functions": "off", - "sonarjs/no-inverted-boolean-check": "error", - "sonarjs/no-one-iteration-loop": "off", - "sonarjs/no-redundant-boolean": "error", - "sonarjs/no-redundant-jump": "error", - "sonarjs/no-same-line-conditional": "error", - "sonarjs/no-small-switch": "error", - "sonarjs/no-unused-collection": "error", - "sonarjs/no-use-of-empty-return-value": "error", - "sonarjs/no-useless-catch": "error", - "sonarjs/prefer-immediate-return": "error", - "space-before-function-paren": "off", - "space-in-parens": ["off", "never"] - } - }, - { - "files": ["*.html"], - "rules": {} - } - ] -} diff --git a/projects/templates/src/lib/components/po-page-dynamic-table/po-page-dynamic-table.component.ts b/projects/templates/src/lib/components/po-page-dynamic-table/po-page-dynamic-table.component.ts index f9f46f20bf..cfc30456d9 100644 --- a/projects/templates/src/lib/components/po-page-dynamic-table/po-page-dynamic-table.component.ts +++ b/projects/templates/src/lib/components/po-page-dynamic-table/po-page-dynamic-table.component.ts @@ -26,12 +26,11 @@ import { poLocaleDefault } from '@po-ui/ng-components'; -import { convertToBoolean, getDefaultSizeFn, validateSizeFn, PoUtils as util } from '../../utils/util'; +import { convertToBoolean, getDefaultSizeFn, validateSizeFn, PoUtils as util, isExternalLink } from '../../utils/util'; import { PoPageDynamicDetailComponent } from '../po-page-dynamic-detail/po-page-dynamic-detail.component'; import { PoPageDynamicService } from '../../services/po-page-dynamic/po-page-dynamic.service'; -import { isExternalLink, PoUtils } from '../../utils/util'; import { PoPageDynamicSearchLiterals } from '../po-page-dynamic-search/interfaces/po-page-dynamic-search-literals.interface'; import { PoPageCustomizationService } from './../../services/po-page-customization/po-page-customization.service'; import { PoPageDynamicOptionsSchema } from './../../services/po-page-customization/po-page-dynamic-options.interface'; @@ -923,7 +922,7 @@ export class PoPageDynamicTableComponent extends PoPageDynamicListBaseComponent forceStopAutoRouter: boolean = false ) { if (isExternalLink(route.path)) { - return PoUtils.openExternalLink(route.path); + return util.openExternalLink(route.path); } this.router.navigate([route.url || route.path], { queryParams: route.params }).catch(() => { @@ -1291,7 +1290,7 @@ export class PoPageDynamicTableComponent extends PoPageDynamicListBaseComponent this.subscriptions.add(sendCustomActionSubscription); } else if (customAction.url) { if (isExternalLink(customAction.url)) { - PoUtils.openExternalLink(this.createConcatenatedUrl(customAction.concatKeys, customAction.url, selectedItem)); + util.openExternalLink(this.createConcatenatedUrl(customAction.concatKeys, customAction.url, selectedItem)); } else { this.navigateTo({ path: this.createConcatenatedUrl(customAction.concatKeys, customAction.url, selectedItem) diff --git a/projects/ui/.eslintrc.json b/projects/ui/.eslintrc.json deleted file mode 100644 index 280fa24b75..0000000000 --- a/projects/ui/.eslintrc.json +++ /dev/null @@ -1,194 +0,0 @@ -{ - "extends": "../../.eslintrc.json", - "ignorePatterns": ["!**/*", "**/util-expect.spec.ts"], - "overrides": [ - { - "files": ["*.ts"], - "parserOptions": { - "project": ["projects/ui/tsconfig.lib.json", "projects/ui/tsconfig.spec.json"], - "createDefaultProgram": true - }, - "plugins": ["sonarjs"], - "excludedFiles": [ - "test.ts", - "**/*.spec.ts", - "**/*.po.ts", - "./node_modules/", - "./projects/ui/src/lib/util-test/util-expect.spec.ts" - ], - "rules": { - "@angular-eslint/component-selector": [ - "error", - { - "type": ["element", "attribute"], - "prefix": "", - "style": "kebab-case" - } - ], - "@angular-eslint/directive-class-suffix": "off", - "@angular-eslint/no-host-metadata-property": "off", - "prefer-spread": "off", - "@angular-eslint/directive-selector": [ - "warn", - { - "type": "attribute", - "prefix": "", - "style": "kebab-case" - } - ], - "@angular-eslint/no-input-rename": "off", - "@angular-eslint/no-output-rename": "off", - "@typescript-eslint/array-type": [ - "error", - { - "default": "generic" - } - ], - "@typescript-eslint/await-thenable": "error", - "@typescript-eslint/ban-types": [ - "off", - { - "types": { - "String": { - "message": "Use string instead", - "fixWith": "string" - }, - "Boolean": { - "message": "Use boolean instead", - "fixWith": "boolean" - }, - "Number": { - "message": "Use number instead", - "fixWith": "number" - } - } - } - ], - "@typescript-eslint/consistent-type-assertions": "off", - "@typescript-eslint/consistent-type-definitions": "error", - "@typescript-eslint/dot-notation": "off", - "@typescript-eslint/explicit-member-accessibility": [ - "off", - { - "accessibility": "explicit" - } - ], - "@typescript-eslint/member-delimiter-style": [ - "off", - { - "multiline": { - "delimiter": "none", - "requireLast": true - }, - "singleline": { - "delimiter": "semi", - "requireLast": false - } - } - ], - "@typescript-eslint/no-empty-interface": "off", - "@typescript-eslint/no-for-in-array": "error", - "@typescript-eslint/no-inferrable-types": [ - "off", - { - "ignoreParameters": true - } - ], - "@typescript-eslint/no-unnecessary-type-assertion": "error", - "@typescript-eslint/no-var-requires": "error", - "@typescript-eslint/prefer-for-of": "off", - "@typescript-eslint/quotes": [ - "off", - "single", - { - "allowTemplateLiterals": true - } - ], - "@typescript-eslint/require-array-sort-compare": [ - "error", - { - "ignoreStringArrays": true - } - ], - "@typescript-eslint/semi": ["off", null], - "@typescript-eslint/type-annotation-spacing": "off", - "arrow-parens": ["off", "always"], - "brace-style": ["off", "off"], - "default-case-last": "error", - "dot-notation": "off", - "eol-last": "off", - "id-blacklist": "off", - "id-match": "off", - "indent": "off", - "linebreak-style": "off", - "max-len": "off", - "max-lines-per-function": [ - "off", - { - "max": 200 - } - ], - "max-params": [ - "error", - { - "max": 8 - } - ], - "new-parens": "off", - "newline-per-chained-call": "off", - "no-empty-function": "off", - "no-empty-pattern": "off", - "no-extra-parens": "off", - "no-extra-semi": "error", - "no-irregular-whitespace": "off", - "no-multi-str": "error", - "no-self-assign": "error", - "no-shadow": "off", - "no-trailing-spaces": "off", - "no-underscore-dangle": "off", - "no-unused-expressions": "error", - "no-use-before-define": "off", - "object-shorthand": "off", - "padded-blocks": [ - "off", - { - "blocks": "never" - }, - { - "allowSingleLineBlocks": true - } - ], - "prefer-arrow/prefer-arrow-functions": "off", - "quote-props": "off", - "semi": "off", - "sonarjs/cognitive-complexity": "off", - "sonarjs/max-switch-cases": "error", - "sonarjs/no-all-duplicated-branches": "error", - "sonarjs/no-collapsible-if": "error", - "sonarjs/no-collection-size-mischeck": "error", - "sonarjs/no-duplicate-string": "off", - "sonarjs/no-duplicated-branches": "off", - "sonarjs/no-element-overwrite": "error", - "sonarjs/no-identical-conditions": "error", - "sonarjs/no-identical-expressions": "error", - "sonarjs/no-identical-functions": "off", - "sonarjs/no-inverted-boolean-check": "error", - "sonarjs/no-one-iteration-loop": "off", - "sonarjs/no-redundant-boolean": "error", - "sonarjs/no-redundant-jump": "error", - "sonarjs/no-same-line-conditional": "error", - "sonarjs/no-small-switch": "error", - "sonarjs/no-unused-collection": "error", - "sonarjs/no-use-of-empty-return-value": "error", - "sonarjs/no-useless-catch": "error", - "sonarjs/prefer-immediate-return": "error", - "space-before-function-paren": "off", - "space-in-parens": ["off", "never"] - } - }, - { - "files": ["*.html"], - "rules": {} - } - ] -} diff --git a/projects/ui/schematics/ng-add/setup-project.ts b/projects/ui/schematics/ng-add/setup-project.ts index dff00b8e63..8aca74f7b5 100644 --- a/projects/ui/schematics/ng-add/setup-project.ts +++ b/projects/ui/schematics/ng-add/setup-project.ts @@ -161,7 +161,7 @@ export function addProviderToModuleProvider( ) { const moduleSource = getSourceFile(tree, modulePath); const changes = addProviderToModule( - moduleSource as any, + moduleSource, modulePath, ` ${provider}`, diff --git a/projects/ui/schematics/ng-update/v18/index.ts b/projects/ui/schematics/ng-update/v18/index.ts index 7b05608e9b..50aeb8152d 100644 --- a/projects/ui/schematics/ng-update/v18/index.ts +++ b/projects/ui/schematics/ng-update/v18/index.ts @@ -134,7 +134,7 @@ export function addProviderToModuleProvider( ) { const moduleSource = getSourceFile(tree, modulePath); const changes = addProviderToModule( - moduleSource as any, + moduleSource, modulePath, ` ${provider}`, diff --git a/projects/ui/schematics/ng-update/v19/index.ts b/projects/ui/schematics/ng-update/v19/index.ts index fb2e3e82c9..8d5cae970c 100644 --- a/projects/ui/schematics/ng-update/v19/index.ts +++ b/projects/ui/schematics/ng-update/v19/index.ts @@ -136,7 +136,7 @@ export function addProviderToModuleProvider( ) { const moduleSource = getSourceFile(tree, modulePath); const changes = addProviderToModule( - moduleSource as any, + moduleSource, modulePath, ` ${provider}`, diff --git a/projects/ui/schematics/ng-update/v20/index.ts b/projects/ui/schematics/ng-update/v20/index.ts index fb2e3e82c9..8d5cae970c 100644 --- a/projects/ui/schematics/ng-update/v20/index.ts +++ b/projects/ui/schematics/ng-update/v20/index.ts @@ -136,7 +136,7 @@ export function addProviderToModuleProvider( ) { const moduleSource = getSourceFile(tree, modulePath); const changes = addProviderToModule( - moduleSource as any, + moduleSource, modulePath, ` ${provider}`, diff --git a/projects/ui/schematics/ng-update/v22/gauge-manual-test/all-cases.component.ts b/projects/ui/schematics/ng-update/v22/gauge-manual-test/all-cases.component.ts index 0de6ea0481..1406ab4623 100644 --- a/projects/ui/schematics/ng-update/v22/gauge-manual-test/all-cases.component.ts +++ b/projects/ui/schematics/ng-update/v22/gauge-manual-test/all-cases.component.ts @@ -18,7 +18,7 @@ export class AllGaugeCasesComponent implements OnInit { // CASO 2: Todas as propriedades // ═══════════════════════════════════════════════════════════════ currentValue = 85; - gaugeRanges: PoGaugeRanges[] = [ + gaugeRanges: Array = [ { from: 0, to: 40, label: 'Baixo', color: 'red' }, { from: 40, to: 70, label: 'Médio', color: 'yellow' }, { from: 70, to: 100, label: 'Alto', color: 'green' } @@ -29,21 +29,21 @@ export class AllGaugeCasesComponent implements OnInit { // CASO 3: Ranges variações // ═══════════════════════════════════════════════════════════════ score = 72; - scoreRanges: PoGaugeRanges[] = [ + scoreRanges: Array = [ { from: 0, to: 50, label: 'Ruim', color: '#c64840' }, { from: 50, to: 75, label: 'Regular', color: '#f5a623' }, { from: 75, to: 100, label: 'Bom', color: '#0c9abe' } ]; // Ranges sem label (legenda oculta) - rangesWithoutLabel: PoGaugeRanges[] = [ + rangesWithoutLabel: Array = [ { from: 0, to: 33, color: '#c64840' }, { from: 33, to: 66, color: '#f5a623' }, { from: 66, to: 100, color: '#0c9abe' } ]; // Ranges com cores hexadecimais - rangesHexColor: PoGaugeRanges[] = [ + rangesHexColor: Array = [ { from: 0, to: 25, label: 'Q1', color: '#FF5733' }, { from: 25, to: 50, label: 'Q2', color: '#33FF57' }, { from: 50, to: 75, label: 'Q3', color: '#3357FF' }, @@ -51,14 +51,14 @@ export class AllGaugeCasesComponent implements OnInit { ]; // Ranges com cores RGB - rangesRgbColor: PoGaugeRanges[] = [ + rangesRgbColor: Array = [ { from: 0, to: 33, label: 'Low', color: 'rgb(198, 72, 64)' }, { from: 33, to: 66, label: 'Mid', color: 'rgb(245, 166, 35)' }, { from: 66, to: 100, label: 'High', color: 'rgb(12, 154, 190)' } ]; // Ranges com cores do tema PO - rangesThemeColor: PoGaugeRanges[] = [ + rangesThemeColor: Array = [ { from: 0, to: 25, label: 'Color 01', color: 'color-01' }, { from: 25, to: 50, label: 'Color 02', color: 'color-02' }, { from: 50, to: 75, label: 'Color 03', color: 'color-03' }, @@ -109,7 +109,7 @@ export class AllGaugeCasesComponent implements OnInit { // CASO 5: Atributos estáticos // ═══════════════════════════════════════════════════════════════ dynamicValue = 88; - myRanges: PoGaugeRanges[] = [ + myRanges: Array = [ { from: 0, to: 30, label: 'Frio', color: 'blue' }, { from: 30, to: 70, label: 'Morno', color: 'orange' }, { from: 70, to: 100, label: 'Quente', color: 'red' } @@ -119,13 +119,13 @@ export class AllGaugeCasesComponent implements OnInit { // CASO 6: Múltiplos gauges // ═══════════════════════════════════════════════════════════════ cpu = 45; - cpuRanges: PoGaugeRanges[] = [ + cpuRanges: Array = [ { from: 0, to: 60, label: 'Normal', color: 'green' }, { from: 60, to: 85, label: 'Alto', color: 'yellow' }, { from: 85, to: 100, label: 'Crítico', color: 'red' } ]; memory = 72; - memRanges: PoGaugeRanges[] = [ + memRanges: Array = [ { from: 0, to: 50, label: 'OK', color: 'green' }, { from: 50, to: 80, label: 'Atenção', color: 'yellow' }, { from: 80, to: 100, label: 'Crítico', color: 'red' } @@ -136,7 +136,7 @@ export class AllGaugeCasesComponent implements OnInit { // CASO 7: Conteúdo projetado // ═══════════════════════════════════════════════════════════════ progress = 60; - ranges: PoGaugeRanges[] = [ + ranges: Array = [ { from: 0, to: 50, label: 'Baixo', color: '#c64840' }, { from: 50, to: 80, label: 'Médio', color: '#f5a623' }, { from: 80, to: 100, label: 'Alto', color: '#0c9abe' } @@ -172,7 +172,7 @@ export class AllGaugeCasesComponent implements OnInit { // ═══════════════════════════════════════════════════════════════ showPointerFlag = true; showLegendFlag = false; - properties: string[] = ['showFromToLegend', 'showPointer']; + properties: Array = ['showFromToLegend', 'showPointer']; // ═══════════════════════════════════════════════════════════════ // CASO 11: Convivência com po-chart @@ -184,13 +184,13 @@ export class AllGaugeCasesComponent implements OnInit { // CASO 12: Indentação e formatação // ═══════════════════════════════════════════════════════════════ longVariableName = 67; - rangesArray: PoGaugeRanges[] = [ + rangesArray: Array = [ { from: 0, to: 33, label: 'Baixo', color: 'red' }, { from: 33, to: 66, label: 'Médio', color: 'yellow' }, { from: 66, to: 100, label: 'Alto', color: 'green' } ]; x = 55; - r: PoGaugeRanges[] = [ + r: Array = [ { from: 0, to: 50, color: '#c64840' }, { from: 50, to: 100, color: '#0c9abe' } ]; @@ -213,25 +213,25 @@ export class AllGaugeCasesComponent implements OnInit { // ═══════════════════════════════════════════════════════════════ // CASO 17: Ranges com valores extremos // ═══════════════════════════════════════════════════════════════ - rangesStartAt20: PoGaugeRanges[] = [ + rangesStartAt20: Array = [ { from: 20, to: 50, label: 'Baixo', color: 'blue' }, { from: 50, to: 80, label: 'Alto', color: 'red' } ]; - rangesEndAt80: PoGaugeRanges[] = [ + rangesEndAt80: Array = [ { from: 0, to: 40, label: 'Baixo', color: 'blue' }, { from: 40, to: 80, label: 'Alto', color: 'red' } ]; - negativeRanges: PoGaugeRanges[] = [ + negativeRanges: Array = [ { from: -50, to: -20, label: 'Muito Baixo', color: 'blue' }, { from: -20, to: 0, label: 'Baixo', color: 'cyan' }, { from: 0, to: 50, label: 'Normal', color: 'green' } ]; - singleRange: PoGaugeRanges[] = [{ from: 0, to: 100, label: 'Total', color: 'green' }]; + singleRange: Array = [{ from: 0, to: 100, label: 'Total', color: 'green' }]; - manyRanges: PoGaugeRanges[] = [ + manyRanges: Array = [ { from: 0, to: 8, label: 'R1', color: 'color-01' }, { from: 8, to: 16, label: 'R2', color: 'color-02' }, { from: 16, to: 24, label: 'R3', color: 'color-03' }, @@ -249,13 +249,13 @@ export class AllGaugeCasesComponent implements OnInit { // ═══════════════════════════════════════════════════════════════ // CASO 18: Uso dentro de po-container (sample-summary) // ═══════════════════════════════════════════════════════════════ - turnoverRanges: PoGaugeRanges[] = [ + turnoverRanges: Array = [ { from: 0, to: 50, label: 'Low rate', color: '#00b28e' }, { from: 50, to: 75, label: 'Average rate', color: '#ea9b3e' }, { from: 75, to: 100, label: 'High rate', color: '#c64840' } ]; - salesRanges: PoGaugeRanges[] = [ + salesRanges: Array = [ { from: 0, to: 50, label: 'Sales reduction', color: '#c64840' }, { from: 50, to: 75, label: 'Average sales', color: '#ea9b3e' }, { from: 75, to: 100, label: 'Sales soared', color: '#00b28e' } @@ -271,7 +271,7 @@ export class AllGaugeCasesComponent implements OnInit { // ═══════════════════════════════════════════════════════════════ gaugeValue$: Observable = of(68); gaugeTitle$: Observable = of('Async Gauge'); - gaugeRanges$: Observable = of([ + gaugeRanges$: Observable> = of([ { from: 0, to: 50, label: 'Low', color: 'red' }, { from: 50, to: 100, label: 'High', color: 'green' } ]); @@ -296,7 +296,7 @@ export class AllGaugeCasesComponent implements OnInit { // ═══════════════════════════════════════════════════════════════ // CASO 25: Expressões complexas // ═══════════════════════════════════════════════════════════════ - gaugeData: { value: number; title: string; ranges: PoGaugeRanges[] } = { + gaugeData: { value: number; title: string; ranges: Array } = { value: 78, title: 'Object Gauge', ranges: [ @@ -308,16 +308,16 @@ export class AllGaugeCasesComponent implements OnInit { // ═══════════════════════════════════════════════════════════════ // CASO 28: Ranges vazios e null // ═══════════════════════════════════════════════════════════════ - emptyRanges: PoGaugeRanges[] = []; + emptyRanges: Array = []; // @ts-ignore - nullRanges: PoGaugeRanges[] = undefined; + nullRanges: Array = undefined; // ═══════════════════════════════════════════════════════════════ // CASO 32: Labs-style (tudo dinâmico) // ═══════════════════════════════════════════════════════════════ labsDescription = 'Labs Description'; labsHeight = 350; - labsRanges: PoGaugeRanges[] = [ + labsRanges: Array = [ { from: 0, to: 30, label: 'Baixo', color: '#c64840' }, { from: 30, to: 60, label: 'Médio', color: '#f5a623' }, { from: 60, to: 100, label: 'Alto', color: '#0c9abe' } @@ -344,7 +344,7 @@ export class AllGaugeCasesComponent implements OnInit { @Input() inputValue = 50; @Input() inputTitle = 'Input Title'; @Input() inputDescription = 'Input Desc'; - @Input() inputRanges: PoGaugeRanges[] = [ + @Input() inputRanges: Array = [ { from: 0, to: 50, color: 'blue' }, { from: 50, to: 100, color: 'green' } ]; diff --git a/projects/ui/schematics/ng-update/v22/gauge-property-map.spec.ts b/projects/ui/schematics/ng-update/v22/gauge-property-map.spec.ts index 3f6d8bcde9..531283b546 100644 --- a/projects/ui/schematics/ng-update/v22/gauge-property-map.spec.ts +++ b/projects/ui/schematics/ng-update/v22/gauge-property-map.spec.ts @@ -179,7 +179,10 @@ describe('v22 gauge-property-map ranges preservation (property-based):', () => { // Apenas p-ranges: a expressão é preservada verbatim em p-series. expect(result.pSeries).toBe(arrayLiteral); - // A quantidade de faixas (N) é mantida. + // A quantidade de faixas (N) é mantida. O `!` e exigido pelo build + // strict (tsconfig.schematics-spec.json); a regra no-unnecessary-type- + // assertion gera falso positivo por nao propagar o narrowing do expect. + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion expect(countTopLevelElements(result.pSeries!)).toBe(ranges.length); // Cada faixa original aparece textualmente no resultado. ranges.forEach(range => expect(result.pSeries).toContain(range)); @@ -213,7 +216,10 @@ describe('v22 gauge-property-map ranges preservation (property-based):', () => { expect(result.pSeries).toBe(arrayLiteral); // p-value vai para pValueGaugeMultiple (como this.valuesMultiple = this.value). expect(result.pValueGaugeMultiple).toBe(value.trim()); - // A quantidade de faixas (N) é mantida. + // A quantidade de faixas (N) é mantida. O `!` e exigido pelo build + // strict (tsconfig.schematics-spec.json); a regra no-unnecessary-type- + // assertion gera falso positivo por nao propagar o narrowing do expect. + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion expect(countTopLevelElements(result.pSeries!)).toBe(ranges.length); // Cada faixa original aparece textualmente no resultado. ranges.forEach(range => expect(result.pSeries).toContain(range)); diff --git a/projects/ui/schematics/ng-update/v22/gauge-ts-migration.spec.ts b/projects/ui/schematics/ng-update/v22/gauge-ts-migration.spec.ts index 74089bc0bc..4a3d6c6541 100644 --- a/projects/ui/schematics/ng-update/v22/gauge-ts-migration.spec.ts +++ b/projects/ui/schematics/ng-update/v22/gauge-ts-migration.spec.ts @@ -248,7 +248,7 @@ describe('v22 gauge-ts-migration (property-based):', () => { chosenNonGauge, chosenWithout, gaugeFirst, - structure: structure as 'none' | 'ngmodule' | 'standalone' + structure }); const once = migrateTypeScriptContent(source, isStandalone).content; diff --git a/projects/ui/schematics/ng-update/v22/gauge-ts-migration.ts b/projects/ui/schematics/ng-update/v22/gauge-ts-migration.ts index 76e7220e13..840aaf96c8 100644 --- a/projects/ui/schematics/ng-update/v22/gauge-ts-migration.ts +++ b/projects/ui/schematics/ng-update/v22/gauge-ts-migration.ts @@ -278,6 +278,12 @@ function buildReferenceEdits( const visit = (node: ts.Node): void => { if (ts.isIdentifier(node) && referenceRenameMap.has(node.text) && !isWithinRanges(node, sourceFile, importRanges)) { if (isRenameableReference(node)) { + // O `!` é necessário sob strictNullChecks (build de schematics): a + // condição do `if` acima garante que a chave existe no mapa, mas o + // compilador nao relaciona Map.has() com Map.get(), entao get() ainda + // e `string | undefined`. A regra @typescript-eslint/no-unnecessary- + // type-assertion gera um falso positivo aqui. + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion const target = referenceRenameMap.get(node.text)!; const array = getContainingArrayElement(node); @@ -348,11 +354,9 @@ function collectExistingArrayNames( const names = new Set(); for (const element of array.elements) { - if (ts.isIdentifier(element)) { - // Nomes que não são gauge já contam como presentes com seu próprio nome. - if (!referenceRenameMap.has(element.text)) { - names.add(element.text); - } + // Nomes que não são gauge já contam como presentes com seu próprio nome. + if (ts.isIdentifier(element) && !referenceRenameMap.has(element.text)) { + names.add(element.text); } } diff --git a/projects/ui/schematics/ng-update/v22/index.spec.ts b/projects/ui/schematics/ng-update/v22/index.spec.ts index 3a2b45dc97..32d6c09753 100644 --- a/projects/ui/schematics/ng-update/v22/index.spec.ts +++ b/projects/ui/schematics/ng-update/v22/index.spec.ts @@ -586,7 +586,7 @@ describe('v22 migration-v22 chain — idempotência multi-execução (property-b // Segunda execução capturando os logs do runner. const runner = new SchematicTestRunner('schematics', collectionPath); - const infoMessages: string[] = []; + const infoMessages: Array = []; runner.logger.subscribe(entry => { if (entry.level === 'info') { infoMessages.push(entry.message); diff --git a/projects/ui/src/lib/components/po-accordion/po-accordion-item-body/po-accordion-item-body.component.spec.ts b/projects/ui/src/lib/components/po-accordion/po-accordion-item-body/po-accordion-item-body.component.spec.ts index b13069044f..646c3c5ea5 100644 --- a/projects/ui/src/lib/components/po-accordion/po-accordion-item-body/po-accordion-item-body.component.spec.ts +++ b/projects/ui/src/lib/components/po-accordion/po-accordion-item-body/po-accordion-item-body.component.spec.ts @@ -58,7 +58,7 @@ describe('PoAccordionItemBodyComponent:', () => { Object.defineProperty(element, 'scrollHeight', { value: 120 }); spyOn(element, 'animate').and.returnValue(animation); - component.animateEnter({ target: element, animationComplete }); + component.animateEnter({ target: element, animationComplete }); expect(element.animate).toHaveBeenCalledWith([{ height: '0px' }, { height: '120px' }], { duration: 200, @@ -76,7 +76,7 @@ describe('PoAccordionItemBodyComponent:', () => { Object.defineProperty(element, 'scrollHeight', { value: 80 }); spyOn(element, 'animate').and.returnValue(animation); - component.animateLeave({ target: element, animationComplete }); + component.animateLeave({ target: element, animationComplete }); expect(element.animate).toHaveBeenCalledWith([{ height: '80px' }, { height: '0px' }], { duration: 200, diff --git a/projects/ui/src/lib/components/po-button-group/po-button-group.component.ts b/projects/ui/src/lib/components/po-button-group/po-button-group.component.ts index 5f878f07d8..0c6abc6cc7 100644 --- a/projects/ui/src/lib/components/po-button-group/po-button-group.component.ts +++ b/projects/ui/src/lib/components/po-button-group/po-button-group.component.ts @@ -1,4 +1,4 @@ -import { Component, ViewContainerRef, inject, ChangeDetectionStrategy } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoButtonGroupBaseComponent } from './po-button-group-base.component'; diff --git a/projects/ui/src/lib/components/po-button-group/samples/sample-po-button-group-opening-service-ticket/sample-po-button-group-opening-service-ticket.component.ts b/projects/ui/src/lib/components/po-button-group/samples/sample-po-button-group-opening-service-ticket/sample-po-button-group-opening-service-ticket.component.ts index 85c49564dd..7639dee2c2 100644 --- a/projects/ui/src/lib/components/po-button-group/samples/sample-po-button-group-opening-service-ticket/sample-po-button-group-opening-service-ticket.component.ts +++ b/projects/ui/src/lib/components/po-button-group/samples/sample-po-button-group-opening-service-ticket/sample-po-button-group-opening-service-ticket.component.ts @@ -26,10 +26,10 @@ export class SamplePoButtonGroupOpeningServiceTicketComponent { ]; selectWeekDay(button: PoButtonGroupItem): void { - this.selectedWeekDay = button.selected ? button.label! : ''; + this.selectedWeekDay = button.selected ? button.label : ''; } selectPeriod(button: PoButtonGroupItem): void { - this.selectedPeriod = button.selected ? button.label! : ''; + this.selectedPeriod = button.selected ? button.label : ''; } } diff --git a/projects/ui/src/lib/components/po-calendar/po-calendar-wrapper/po-calendar-wrapper.component.spec.ts b/projects/ui/src/lib/components/po-calendar/po-calendar-wrapper/po-calendar-wrapper.component.spec.ts index 19a097f5fc..b06c47c60c 100644 --- a/projects/ui/src/lib/components/po-calendar/po-calendar-wrapper/po-calendar-wrapper.component.spec.ts +++ b/projects/ui/src/lib/components/po-calendar/po-calendar-wrapper/po-calendar-wrapper.component.spec.ts @@ -599,7 +599,7 @@ describe('PoCalendarWrapperComponent', () => { }); it('getDayBackgroundColor: should return empty string when date is falsy', () => { - expect(component.getDayBackgroundColor(null as any)).toBe(''); + expect(component.getDayBackgroundColor(null)).toBe(''); }); it('getDayForegroundColor: should call `getDayColor` with `date` and `foreground`', () => { @@ -2725,7 +2725,7 @@ describe('PoCalendarWrapperComponent', () => { it('should return "invalid-index" when the date is null', () => { const index = 5; - expect(component.trackByDay(index, null as any)).toBe('invalid-5'); + expect(component.trackByDay(index, null)).toBe('invalid-5'); }); it('should return "invalid-index" when the object is not an instance of Date', () => { @@ -2768,7 +2768,7 @@ describe('PoCalendarWrapperComponent', () => { }); it('trackByDay: deve retornar fallback para data inválida', () => { - expect(component.trackByDay(5, null as any)).toBe('invalid-5'); + expect(component.trackByDay(5, null)).toBe('invalid-5'); }); }); diff --git a/projects/ui/src/lib/components/po-chart/po-chart-grid-utils.spec.ts b/projects/ui/src/lib/components/po-chart/po-chart-grid-utils.spec.ts index d4fa878aa0..7e30e0ae4d 100644 --- a/projects/ui/src/lib/components/po-chart/po-chart-grid-utils.spec.ts +++ b/projects/ui/src/lib/components/po-chart/po-chart-grid-utils.spec.ts @@ -85,6 +85,7 @@ describe('PoChartGridUtils', () => { }); it('should set areaStyle.color using computedStyle when serie.color is var(...)', () => { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion const spyGetComputed = spyOn(globalThis, 'getComputedStyle').and.returnValue({ getPropertyValue: () => '#445566' } as unknown as CSSStyleDeclaration); diff --git a/projects/ui/src/lib/components/po-chart/po-chart.component.spec.ts b/projects/ui/src/lib/components/po-chart/po-chart.component.spec.ts index e356e7c6b3..d06a0a393b 100644 --- a/projects/ui/src/lib/components/po-chart/po-chart.component.spec.ts +++ b/projects/ui/src/lib/components/po-chart/po-chart.component.spec.ts @@ -1108,6 +1108,7 @@ describe('PoChartComponent', () => { it('should return an empty string when element is not found or CSS variable is not set', () => { spyOn(document, 'querySelector').and.returnValue(null); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion spyOn(window, 'getComputedStyle').and.returnValue({ getPropertyValue: () => '' } as unknown as CSSStyleDeclaration); @@ -1393,6 +1394,7 @@ describe('PoChartComponent', () => { }); it('should call getComputedStyle with document.documentElement and use its value for var(...) color', () => { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion const spyGetComputed = spyOn(window, 'getComputedStyle').and.returnValue({ getPropertyValue: (prop: string) => '#112233' } as unknown as CSSStyleDeclaration); @@ -2420,6 +2422,7 @@ describe('PoChartComponent', () => { it('should use default font size of 16px if parent font size is undefined', () => { spyOn(component, 'getCSSVariable').and.returnValue('2em'); spyOn(document, 'querySelector').and.returnValue(null); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion spyOn(window, 'getComputedStyle').and.returnValue({ fontSize: '16px' } as CSSStyleDeclaration); const result = (component as any)['chartGridUtils'].resolvePx('2em'); @@ -2433,6 +2436,7 @@ describe('PoChartComponent', () => { spyOn(component, 'getCSSVariable').and.returnValue('1.5em'); spyOn(document, 'querySelector').and.returnValue(mockParentElement); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion spyOn(window, 'getComputedStyle').and.returnValue({ fontSize: '18px' } as CSSStyleDeclaration); const result = (component as any)['chartGridUtils'].resolvePx('--some-size', '.some-selector'); diff --git a/projects/ui/src/lib/components/po-dropdown/samples/sample-po-dropdown-labs/sample-po-dropdown-labs.component.ts b/projects/ui/src/lib/components/po-dropdown/samples/sample-po-dropdown-labs/sample-po-dropdown-labs.component.ts index 3aef065cad..5c05353ee9 100644 --- a/projects/ui/src/lib/components/po-dropdown/samples/sample-po-dropdown-labs/sample-po-dropdown-labs.component.ts +++ b/projects/ui/src/lib/components/po-dropdown/samples/sample-po-dropdown-labs/sample-po-dropdown-labs.component.ts @@ -131,7 +131,7 @@ export class SamplePoDropdownLabsComponent implements OnInit { label: undefined, visible: null, parent: undefined - } as any; + }; } showAction(label: string): void { diff --git a/projects/ui/src/lib/components/po-field/po-decimal/po-decimal.component.spec.ts b/projects/ui/src/lib/components/po-field/po-decimal/po-decimal.component.spec.ts index 0b8b0a5dac..2394a8f240 100644 --- a/projects/ui/src/lib/components/po-field/po-decimal/po-decimal.component.spec.ts +++ b/projects/ui/src/lib/components/po-field/po-decimal/po-decimal.component.spec.ts @@ -189,6 +189,7 @@ describe('PoDecimalComponent:', () => { describe('decimalsLength: ', () => { it('should call refreshOnPropertyChange when set', () => { fixture.detectChanges(); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion const spy = spyOn(component as never, 'refreshOnPropertyChange' as never); component.decimalsLength = 4; @@ -200,6 +201,7 @@ describe('PoDecimalComponent:', () => { describe('thousandMaxlength: ', () => { it('should call refreshOnPropertyChange when set', () => { fixture.detectChanges(); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion const spy = spyOn(component as never, 'refreshOnPropertyChange' as never); component.thousandMaxlength = 8; @@ -1837,6 +1839,7 @@ describe('PoDecimalComponent:', () => { it('should not call setViewValue when modelValue is null', () => { fixture.detectChanges(); component['setViewValue'](''); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion const spy = spyOn(component as never, 'setViewValue' as never); component['refreshOnPropertyChange'](); @@ -1846,6 +1849,7 @@ describe('PoDecimalComponent:', () => { it('should not call setViewValue when inputEl is undefined', () => { component.inputEl = undefined; + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion const spy = spyOn(component as never, 'setViewValue' as never); component['refreshOnPropertyChange'](); @@ -1900,6 +1904,7 @@ describe('PoDecimalComponent:', () => { it('should apply format on blur when formatParsed is active and value is valid', () => { const fakeEvent = { target: { value: '1234,56' } }; + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion const spy = spyOn(component as never, 'setViewValue' as never).and.callThrough(); component.onBlur(fakeEvent); @@ -1911,6 +1916,7 @@ describe('PoDecimalComponent:', () => { it('should clear model when value results in null model', () => { const fakeEvent = { target: { value: '' } }; + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion spyOn(component as never, 'callOnChange' as never); component.onBlur(fakeEvent); @@ -1923,6 +1929,7 @@ describe('PoDecimalComponent:', () => { fixture.detectChanges(); const fakeEvent = { target: { value: '99999,99' } }; + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion const spy = spyOn(component as never, 'setViewValue' as never).and.callThrough(); component.onBlur(fakeEvent); @@ -1932,6 +1939,7 @@ describe('PoDecimalComponent:', () => { it('should call callOnChange with undefined when model value is undefined', () => { const fakeEvent = { target: { value: 'ABC' } }; + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion spyOn(component as never, 'callOnChange' as never); component.onBlur(fakeEvent); @@ -1983,6 +1991,7 @@ describe('PoDecimalComponent:', () => { } }; + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion spyOn(component as never, 'setViewValue' as never).and.callThrough(); component.onInput(fakeEvent); @@ -2003,6 +2012,7 @@ describe('PoDecimalComponent:', () => { } }; + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion const spy = spyOn(component as never, 'setViewValue' as never).and.callThrough(); component.onInput(fakeEvent); @@ -2021,6 +2031,7 @@ describe('PoDecimalComponent:', () => { } }; + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion spyOn(component as never, 'callOnChange' as never); component.onInput(fakeEvent); @@ -2099,6 +2110,7 @@ describe('PoDecimalComponent:', () => { }); it('should format value using advanced format when formatParsed is active', () => { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion const spy = spyOn(component as never, 'setViewValue' as never).and.callThrough(); component.writeValueModel(1234.56); @@ -2112,6 +2124,7 @@ describe('PoDecimalComponent:', () => { fixture.componentRef.setInput('p-display-format', '99.99'); fixture.detectChanges(); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion const spy = spyOn(component as never, 'setViewValue' as never).and.callThrough(); component.writeValueModel(9999.99); @@ -2129,6 +2142,7 @@ describe('PoDecimalComponent:', () => { }); it('should format string value parsed to number', () => { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion const spy = spyOn(component as never, 'setViewValue' as never).and.callThrough(); component.writeValueModel('4567.89'); diff --git a/projects/ui/src/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal.component.ts b/projects/ui/src/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal.component.ts index f909ef87df..7aacdc71b9 100644 --- a/projects/ui/src/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal.component.ts +++ b/projects/ui/src/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal.component.ts @@ -194,8 +194,8 @@ export class PoLookupModalComponent extends PoLookupModalBaseComponent implement // PoDynamicFormComponent -> PoDynamicFormFieldsComponent-> PoLookupComponent -> // PoLookupModalService -> PoLookupModalComponent -> PoDynamicFormComponent - // eslint-disable-next-line @typescript-eslint/naming-convention return import('./../../../po-dynamic/po-dynamic-form/po-dynamic-form.component').then( + // eslint-disable-next-line @typescript-eslint/naming-convention ({ PoDynamicFormComponent }) => { this.componentRef = this.container.createComponent(PoDynamicFormComponent); this.componentRef.instance.fields = this.advancedFilters; diff --git a/projects/ui/src/lib/components/po-link/po-link.component.ts b/projects/ui/src/lib/components/po-link/po-link.component.ts index 9d70f09a1c..fbc10d1433 100644 --- a/projects/ui/src/lib/components/po-link/po-link.component.ts +++ b/projects/ui/src/lib/components/po-link/po-link.component.ts @@ -1,4 +1,4 @@ -import { Component, ElementRef, ViewChild, ChangeDetectionStrategy } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { PoLinkBaseComponent } from './po-link-base.component'; diff --git a/projects/ui/src/lib/components/po-list-view/po-list-view.component.spec.ts b/projects/ui/src/lib/components/po-list-view/po-list-view.component.spec.ts index 45a50e79a6..d73e250c15 100644 --- a/projects/ui/src/lib/components/po-list-view/po-list-view.component.spec.ts +++ b/projects/ui/src/lib/components/po-list-view/po-list-view.component.spec.ts @@ -770,6 +770,7 @@ describe('PoListViewComponent:', () => { const getStyleSpy = spyOn(window, 'getComputedStyle'); ['none', 'normal', '""', "''", ''].forEach(content => { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion getStyleSpy.and.returnValue({ content } as unknown as CSSStyleDeclaration); expect(component['isIconGlyphEmpty'](el)).withContext(`content=${content}`).toBeTrue(); }); @@ -777,6 +778,7 @@ describe('PoListViewComponent:', () => { it('isIconGlyphEmpty: should return false when `::before` has a glyph content', () => { const el = document.createElement('i'); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion spyOn(window, 'getComputedStyle').and.returnValue({ content: '"\\e900"' } as CSSStyleDeclaration); expect(component['isIconGlyphEmpty'](el)).toBeFalse(); @@ -788,6 +790,7 @@ describe('PoListViewComponent:', () => { root.appendChild(avatarContainer); Object.defineProperty(component['elementRef'], 'nativeElement', { get: () => root, configurable: true }); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion spyOn(window, 'getComputedStyle').and.returnValue({ content: 'none' } as CSSStyleDeclaration); const setStyleSpy = spyOn(component['renderer'], 'setStyle'); @@ -804,6 +807,7 @@ describe('PoListViewComponent:', () => { root.appendChild(avatarContainer); Object.defineProperty(component['elementRef'], 'nativeElement', { get: () => root, configurable: true }); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion spyOn(window, 'getComputedStyle').and.returnValue({ content: '"\\e900"' } as CSSStyleDeclaration); const removeStyleSpy = spyOn(component['renderer'], 'removeStyle'); @@ -1319,6 +1323,7 @@ describe('PoListViewComponent:', () => { const selectSpy = spyOn(component, 'selectListItem'); spyOn(component.itemClick, 'emit'); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion expect(() => component['onItemClick'](testItem, null as any)).not.toThrow(); expect(selectSpy).toHaveBeenCalledWith(testItem); expect(component.itemClick.emit).toHaveBeenCalled(); diff --git a/projects/ui/src/lib/components/po-menu-panel/po-menu-panel.component.ts b/projects/ui/src/lib/components/po-menu-panel/po-menu-panel.component.ts index 44c5a7add7..4fbf31cada 100644 --- a/projects/ui/src/lib/components/po-menu-panel/po-menu-panel.component.ts +++ b/projects/ui/src/lib/components/po-menu-panel/po-menu-panel.component.ts @@ -1,5 +1,5 @@ import { Location } from '@angular/common'; -import { Component, OnDestroy, OnInit, ViewContainerRef, inject, ChangeDetectionStrategy } from '@angular/core'; +import { Component, OnDestroy, OnInit, inject, ChangeDetectionStrategy } from '@angular/core'; import { NavigationEnd, Router } from '@angular/router'; import { Subscription } from 'rxjs'; diff --git a/projects/ui/src/lib/components/po-menu/samples/sample-po-menu-labs/sample-po-menu-labs.component.ts b/projects/ui/src/lib/components/po-menu/samples/sample-po-menu-labs/sample-po-menu-labs.component.ts index 37b72da269..d8133804a5 100644 --- a/projects/ui/src/lib/components/po-menu/samples/sample-po-menu-labs/sample-po-menu-labs.component.ts +++ b/projects/ui/src/lib/components/po-menu/samples/sample-po-menu-labs/sample-po-menu-labs.component.ts @@ -194,15 +194,15 @@ export class SamplePoMenuLabsComponent implements OnInit { this.parentList = []; this.menuItems.forEach(item => { - this.parentList.push({ label: item.label, value: item['id'] }); + this.parentList.push({ label: item.label, value: item['id'] }); if (item.subItems) { item.subItems.forEach(secondItem => { - this.parentList.push({ label: `- ${secondItem.label}`, value: secondItem['id'] }); + this.parentList.push({ label: `- ${secondItem.label}`, value: secondItem['id'] }); if (secondItem.subItems) { secondItem.subItems.forEach(thirdItem => { - this.parentList.push({ label: `-- ${thirdItem.label}`, value: thirdItem['id'] }); + this.parentList.push({ label: `-- ${thirdItem.label}`, value: thirdItem['id'] }); }); } }); diff --git a/projects/ui/src/lib/components/po-navbar/po-navbar-actions/po-navbar-action/po-navbar-action.component.ts b/projects/ui/src/lib/components/po-navbar/po-navbar-actions/po-navbar-action/po-navbar-action.component.ts index ec69979937..c54f47d349 100644 --- a/projects/ui/src/lib/components/po-navbar/po-navbar-actions/po-navbar-action/po-navbar-action.component.ts +++ b/projects/ui/src/lib/components/po-navbar/po-navbar-actions/po-navbar-action/po-navbar-action.component.ts @@ -1,4 +1,4 @@ -import { Component, Input, TemplateRef, ViewContainerRef, inject, ChangeDetectionStrategy } from '@angular/core'; +import { Component, Input, TemplateRef, inject, ChangeDetectionStrategy } from '@angular/core'; import { Router } from '@angular/router'; import { isExternalLink, PoUtils } from '../../../../utils/util'; diff --git a/projects/ui/src/lib/components/po-page/po-page-slide/po-page-slide.component.spec.ts b/projects/ui/src/lib/components/po-page/po-page-slide/po-page-slide.component.spec.ts index e4096148ed..cf841e5117 100644 --- a/projects/ui/src/lib/components/po-page/po-page-slide/po-page-slide.component.spec.ts +++ b/projects/ui/src/lib/components/po-page/po-page-slide/po-page-slide.component.spec.ts @@ -384,7 +384,7 @@ describe('PoPageSlideComponent', () => { const containerAnimation: any = { cancel: cancelSpy }; const containerAnimateSpy = spyOn(container, 'animate').and.returnValue(containerAnimation); - component.animateEnter({ target: rootElement, animationComplete }); + component.animateEnter({ target: rootElement, animationComplete }); expect(rootAnimateSpy).toHaveBeenCalledWith( [{ opacity: 0 }, { opacity: 1 }], @@ -413,7 +413,7 @@ describe('PoPageSlideComponent', () => { const containerAnimation: any = {}; spyOn(container, 'animate').and.returnValue(containerAnimation); - component.animateLeave({ target: rootElement, animationComplete }); + component.animateLeave({ target: rootElement, animationComplete }); containerAnimation.onfinish(); expect(animationComplete).toHaveBeenCalled(); @@ -424,7 +424,7 @@ describe('PoPageSlideComponent', () => { const animationComplete = jasmine.createSpy('animationComplete'); spyOn(rootElement, 'animate').and.returnValue({} as any); - component.animateEnter({ target: rootElement, animationComplete }); + component.animateEnter({ target: rootElement, animationComplete }); expect(animationComplete).toHaveBeenCalled(); }); @@ -442,7 +442,7 @@ describe('PoPageSlideComponent', () => { // parseDuration retorna 0 para string '0ms', ativando o fallback || 70 component.duration = '0ms'; - component.animateEnter({ target: rootElement, animationComplete }); + component.animateEnter({ target: rootElement, animationComplete }); expect(rootAnimateSpy).toHaveBeenCalledWith([{ opacity: 0 }, { opacity: 1 }], { duration: 70, @@ -503,7 +503,7 @@ describe('PoPageSlideComponent', () => { const animationComplete = jasmine.createSpy('animationComplete'); spyOn(rootElement, 'animate').and.returnValue({} as any); - component.animateLeave({ target: rootElement, animationComplete }); + component.animateLeave({ target: rootElement, animationComplete }); expect(animationComplete).not.toHaveBeenCalled(); diff --git a/projects/ui/src/lib/components/po-page/po-page-slide/po-page-slide.component.ts b/projects/ui/src/lib/components/po-page/po-page-slide/po-page-slide.component.ts index 20380cd21b..c0394280bd 100644 --- a/projects/ui/src/lib/components/po-page/po-page-slide/po-page-slide.component.ts +++ b/projects/ui/src/lib/components/po-page/po-page-slide/po-page-slide.component.ts @@ -142,7 +142,7 @@ export class PoPageSlideComponent extends PoPageSlideBaseComponent { animateEnter(event: AnimationCallbackEvent): void { const rootElement = event.target as HTMLElement; - const container = rootElement.querySelector('.po-page-slide-container') as HTMLElement; + const container = rootElement.querySelector('.po-page-slide-container'); const fadeDuration = this.parseDuration(this.duration) || 70; const { duration: slideDuration, easing: slideEasing } = this.parseTiming(this.timing); @@ -174,7 +174,7 @@ export class PoPageSlideComponent extends PoPageSlideBaseComponent { animateLeave(event: AnimationCallbackEvent): void { const rootElement = event.target as HTMLElement; - const container = rootElement.querySelector('.po-page-slide-container') as HTMLElement; + const container = rootElement.querySelector('.po-page-slide-container'); const leaveDuration = 150; @@ -202,22 +202,23 @@ export class PoPageSlideComponent extends PoPageSlideBaseComponent { if (!value) { return 70; } - const match = value.match(/^(\d+(?:\.\d+)?)(ms|s)$/); + const match = /^(\d+(?:\.\d+)?)(ms|s)$/.exec(value); if (!match) { return 70; } - return match[2] === 's' ? parseFloat(match[1]) * 1000 : parseFloat(match[1]); + return match[2] === 's' ? Number.parseFloat(match[1]) * 1000 : Number.parseFloat(match[1]); } private parseTiming(value: string): { duration: number; easing: string } { if (!value) { return { duration: 700, easing: 'cubic-bezier(0.35, 0, 0.1, 1)' }; } - const durationMatch = value.match(/^(\d+(?:\.\d+)?)(ms|s)\s+(.+)$/); + const durationMatch = /^(\d+(?:\.\d+)?)(ms|s)\s+(.+)$/.exec(value); if (!durationMatch) { return { duration: 700, easing: 'cubic-bezier(0.35, 0, 0.1, 1)' }; } - const duration = durationMatch[2] === 's' ? parseFloat(durationMatch[1]) * 1000 : parseFloat(durationMatch[1]); + const duration = + durationMatch[2] === 's' ? Number.parseFloat(durationMatch[1]) * 1000 : Number.parseFloat(durationMatch[1]); return { duration, easing: durationMatch[3] }; } diff --git a/projects/ui/src/lib/components/po-popup/samples/sample-po-popup-labs/sample-po-popup-labs.component.ts b/projects/ui/src/lib/components/po-popup/samples/sample-po-popup-labs/sample-po-popup-labs.component.ts index 76d79f0f83..8045a10e22 100644 --- a/projects/ui/src/lib/components/po-popup/samples/sample-po-popup-labs/sample-po-popup-labs.component.ts +++ b/projects/ui/src/lib/components/po-popup/samples/sample-po-popup-labs/sample-po-popup-labs.component.ts @@ -125,7 +125,7 @@ export class SamplePoPopupLabsComponent implements OnInit { label: undefined, visible: null, parent: undefined - } as any; + }; } private getActionNode(items: Array, value: string): PoPopupAction | undefined { diff --git a/projects/ui/src/lib/components/po-progress/po-progress.component.spec.ts b/projects/ui/src/lib/components/po-progress/po-progress.component.spec.ts index 7f291abbcb..1410752105 100644 --- a/projects/ui/src/lib/components/po-progress/po-progress.component.spec.ts +++ b/projects/ui/src/lib/components/po-progress/po-progress.component.spec.ts @@ -696,6 +696,7 @@ describe('PoProgressComponent:', () => { describe('measureAndSetParentSize:', () => { it('should set parentSize based on element dimensions', () => { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion spyOn(window, 'getComputedStyle').and.returnValue({ height: '150px', width: '200px', @@ -718,6 +719,7 @@ describe('PoProgressComponent:', () => { }); it('should subtract padding from dimensions', () => { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion spyOn(window, 'getComputedStyle').and.returnValue({ height: '200px', width: '200px', diff --git a/projects/ui/src/lib/components/po-slide/po-slide.component.ts b/projects/ui/src/lib/components/po-slide/po-slide.component.ts index b356698d8a..09302cd530 100644 --- a/projects/ui/src/lib/components/po-slide/po-slide.component.ts +++ b/projects/ui/src/lib/components/po-slide/po-slide.component.ts @@ -11,7 +11,6 @@ import { OnDestroy, OnInit, SimpleChanges, - inject, ChangeDetectionStrategy } from '@angular/core'; diff --git a/projects/ui/src/lib/components/po-stepper/po-stepper.component.spec.ts b/projects/ui/src/lib/components/po-stepper/po-stepper.component.spec.ts index e3a18edd88..5cbcebfc54 100644 --- a/projects/ui/src/lib/components/po-stepper/po-stepper.component.spec.ts +++ b/projects/ui/src/lib/components/po-stepper/po-stepper.component.spec.ts @@ -409,6 +409,7 @@ describe('PoStepperComponent:', () => { const step = { status: 'default' } as PoStepComponent; const previousStep = { status: 'active' } as PoStepperItem; + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion spyOn(component, 'getPreviousPoSteps').and.returnValue(previousStep as unknown as PoStepComponent); spyOn(component, 'getPreviousSteps').and.returnValue(previousStep); @@ -421,6 +422,7 @@ describe('PoStepperComponent:', () => { const step = { status: 'disabled' } as PoStepComponent; const previousStep = { status: 'default' } as PoStepperItem; + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion spyOn(component, 'getPreviousPoSteps').and.returnValue(previousStep as unknown as PoStepComponent); spyOn(component, 'getPreviousSteps').and.returnValue(previousStep); diff --git a/projects/ui/src/lib/components/po-stepper/samples/sample-po-stepper-labs/sample-po-stepper-labs.component.ts b/projects/ui/src/lib/components/po-stepper/samples/sample-po-stepper-labs/sample-po-stepper-labs.component.ts index 0293020646..4044e751d2 100644 --- a/projects/ui/src/lib/components/po-stepper/samples/sample-po-stepper-labs/sample-po-stepper-labs.component.ts +++ b/projects/ui/src/lib/components/po-stepper/samples/sample-po-stepper-labs/sample-po-stepper-labs.component.ts @@ -13,7 +13,7 @@ export class SamplePoStepperLabsComponent implements OnInit { event: any; properties: any = {}; - stepItem: PoStepperItem = {}; + stepItem: PoStepperItem = {}; steps: Array = []; readonly propertiesFields: Array = [ diff --git a/projects/ui/src/lib/components/po-table/po-table-column-manager/po-table-column-manager.component.spec.ts b/projects/ui/src/lib/components/po-table/po-table-column-manager/po-table-column-manager.component.spec.ts index 7bfff79e69..49db643e7c 100644 --- a/projects/ui/src/lib/components/po-table/po-table-column-manager/po-table-column-manager.component.spec.ts +++ b/projects/ui/src/lib/components/po-table/po-table-column-manager/po-table-column-manager.component.spec.ts @@ -757,7 +757,7 @@ describe('PoTableColumnManagerComponent:', () => { it(`should return 'column.label' if it has 'column.label'`, () => { const fakeColumn = { property: 'name', label: 'Name' }; - expect(component['getColumnTitleLabel'](fakeColumn)).toBe(fakeColumn.label); + expect(component['getColumnTitleLabel'](fakeColumn)).toBe(fakeColumn.label); }); it(`should call 'capitalizeFirstLetter' to set 'getColumnTitleLabel' if 'column.label' is undefined`, () => { diff --git a/projects/ui/src/lib/components/po-table/po-table-list-manager/po-table-list-manager.component.ts b/projects/ui/src/lib/components/po-table/po-table-list-manager/po-table-list-manager.component.ts index 453e8a9ca1..0209f01c4c 100644 --- a/projects/ui/src/lib/components/po-table/po-table-list-manager/po-table-list-manager.component.ts +++ b/projects/ui/src/lib/components/po-table/po-table-list-manager/po-table-list-manager.component.ts @@ -2,9 +2,7 @@ import { ChangeDetectorRef, Component, EventEmitter, - Inject, Input, - Optional, Output, forwardRef, ChangeDetectionStrategy diff --git a/projects/ui/src/lib/components/po-tag/po-tag.component.spec.ts b/projects/ui/src/lib/components/po-tag/po-tag.component.spec.ts index 8185cf592f..d0c5a36052 100644 --- a/projects/ui/src/lib/components/po-tag/po-tag.component.spec.ts +++ b/projects/ui/src/lib/components/po-tag/po-tag.component.spec.ts @@ -377,6 +377,7 @@ describe('PoTagComponent:', () => { }); function mockGetComputedStyle(backgroundColor: string) { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion spyOn(window, 'getComputedStyle').and.returnValue({ backgroundColor: backgroundColor, getPropertyValue: (token: string) => { diff --git a/projects/ui/src/lib/components/po-timer/po-timer.component.spec.ts b/projects/ui/src/lib/components/po-timer/po-timer.component.spec.ts index 988ecdbcd1..a178d530ba 100644 --- a/projects/ui/src/lib/components/po-timer/po-timer.component.spec.ts +++ b/projects/ui/src/lib/components/po-timer/po-timer.component.spec.ts @@ -2372,7 +2372,7 @@ describe('PoTimerComponent:', () => { component['buildDisplayArrays'](); component['focusedDisplayIndex']['hour'] = 0; - expect(() => component['selectFocusedItem']('period' as any)).not.toThrow(); + expect(() => component['selectFocusedItem']('period')).not.toThrow(); }); }); diff --git a/projects/ui/src/lib/components/po-toolbar/po-toolbar.component.ts b/projects/ui/src/lib/components/po-toolbar/po-toolbar.component.ts index f30fdaed82..bbe80da884 100644 --- a/projects/ui/src/lib/components/po-toolbar/po-toolbar.component.ts +++ b/projects/ui/src/lib/components/po-toolbar/po-toolbar.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, ViewContainerRef, inject, ChangeDetectionStrategy } from '@angular/core'; +import { Component, OnInit, inject, ChangeDetectionStrategy } from '@angular/core'; import { Title } from '@angular/platform-browser'; import { PoToolbarBaseComponent } from './po-toolbar-base.component'; diff --git a/projects/ui/src/lib/components/po-tree-view/po-tree-view-base.component.spec.ts b/projects/ui/src/lib/components/po-tree-view/po-tree-view-base.component.spec.ts index 5b2c76e08a..e71e26815b 100644 --- a/projects/ui/src/lib/components/po-tree-view/po-tree-view-base.component.spec.ts +++ b/projects/ui/src/lib/components/po-tree-view/po-tree-view-base.component.spec.ts @@ -496,12 +496,14 @@ describe('PoTreeViewBaseComponent:', () => { { label: 'B', value: 2, selected: false, disabled: true } ]; + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion expect(component['everyItemSelected'](items as any)).toBe(true); }); it('everyItemSelected: should return false when there are no selectable items', () => { const items = [{ label: 'A', value: 1, selected: false, disabled: true }]; + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion expect(component['everyItemSelected'](items as any)).toBe(false); }); @@ -756,18 +758,21 @@ describe('PoTreeViewBaseComponent:', () => { { label: 'C', value: 3, selected: true } ]; + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion expect(component['getLastSelectedFinalItemValue'](items as any)).toBe(3); }); it('should return a nested final value when only a child is selected', () => { const items = [{ label: 'A', value: 1, subItems: [{ label: 'B', value: 2, selected: true }] }]; + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion expect(component['getLastSelectedFinalItemValue'](items as any)).toBe(2); }); it('should return undefined when no final item is selected', () => { const items = [{ label: 'A', value: 1, subItems: [{ label: 'B', value: 2, selected: false }] }]; + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion expect(component['getLastSelectedFinalItemValue'](items as any)).toBeUndefined(); }); diff --git a/projects/ui/src/lib/services/po-i18n/po-i18n-base.service.spec.ts b/projects/ui/src/lib/services/po-i18n/po-i18n-base.service.spec.ts index 4c3eb5c761..17796957df 100644 --- a/projects/ui/src/lib/services/po-i18n/po-i18n-base.service.spec.ts +++ b/projects/ui/src/lib/services/po-i18n/po-i18n-base.service.spec.ts @@ -398,8 +398,11 @@ describe('PoI18nService:', () => { const translations = {}; spyOn(service as any, 'mergeObject').and.callThrough(); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion spyOn(service, 'searchInVarI18n' as keyof PoI18nService).and.returnValue(''); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion spyOn(service, 'countObject' as keyof PoI18nService).and.returnValue('0'); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion spyOn(service, 'getLiteralsLocalStorageAndCache' as keyof PoI18nService); service['getLiteralsFromContextService']( diff --git a/projects/ui/src/lib/services/po-user-guide/po-user-guide-base.service.spec.ts b/projects/ui/src/lib/services/po-user-guide/po-user-guide-base.service.spec.ts index d551d75a29..f12c427027 100644 --- a/projects/ui/src/lib/services/po-user-guide/po-user-guide-base.service.spec.ts +++ b/projects/ui/src/lib/services/po-user-guide/po-user-guide-base.service.spec.ts @@ -48,11 +48,11 @@ describe('PoUserGuideBaseService:', () => { describe('validateSteps:', () => { it('should throw when steps is null', () => { - expect(() => service['validateSteps'](null as any)).toThrowError(/obrigatória/); + expect(() => service['validateSteps'](null)).toThrowError(/obrigatória/); }); it('should throw when steps is undefined', () => { - expect(() => service['validateSteps'](undefined as any)).toThrowError(/obrigatória/); + expect(() => service['validateSteps'](undefined)).toThrowError(/obrigatória/); }); it('should throw when steps is an empty array', () => { @@ -64,7 +64,7 @@ describe('PoUserGuideBaseService:', () => { }); it('should throw when a step entry is null', () => { - expect(() => service['validateSteps']([null] as any)).toThrowError(/índice 0 é inválido/); + expect(() => service['validateSteps']([null])).toThrowError(/índice 0 é inválido/); }); it('should throw when a step is missing the content property', () => { diff --git a/projects/ui/src/lib/services/po-user-guide/po-user-guide.service.spec.ts b/projects/ui/src/lib/services/po-user-guide/po-user-guide.service.spec.ts index 015d6ad630..fbe9a2ef34 100644 --- a/projects/ui/src/lib/services/po-user-guide/po-user-guide.service.spec.ts +++ b/projects/ui/src/lib/services/po-user-guide/po-user-guide.service.spec.ts @@ -350,7 +350,7 @@ describe('PoUserGuideService:', () => { expect(() => service.goTo(-1)).toThrowError(/fora do intervalo/); expect(() => service.goTo(2)).toThrowError(/fora do intervalo/); expect(() => service.goTo(Number.MAX_SAFE_INTEGER)).toThrowError(/fora do intervalo/); - expect(() => service.goTo(1.5 as any)).toThrowError(/fora do intervalo/); + expect(() => service.goTo(1.5)).toThrowError(/fora do intervalo/); expect(() => service.goTo('a' as any)).toThrowError(/fora do intervalo/); }); }); @@ -911,7 +911,7 @@ describe('PoUserGuideService:', () => { service.setSteps([{ content: 'a' }, { content: 'b' }]); expect(() => service.start(-1)).toThrowError(/fora do intervalo/); expect(() => service.start(5)).toThrowError(/fora do intervalo/); - expect(() => service.start(1.5 as any)).toThrowError(/fora do intervalo/); + expect(() => service.start(1.5)).toThrowError(/fora do intervalo/); expect(() => service.start('a' as any)).toThrowError(/fora do intervalo/); }); }); @@ -1374,11 +1374,11 @@ describe('PoUserGuideService:', () => { describe('setSteps validation:', () => { it('should throw when steps is null', () => { - expect(() => service.setSteps(null as any)).toThrowError(/obrigatória/); + expect(() => service.setSteps(null)).toThrowError(/obrigatória/); }); it('should throw when steps is undefined', () => { - expect(() => service.setSteps(undefined as any)).toThrowError(/obrigatória/); + expect(() => service.setSteps(undefined)).toThrowError(/obrigatória/); }); it('should throw when steps is not an array', () => { @@ -1390,7 +1390,7 @@ describe('PoUserGuideService:', () => { }); it('should throw when a step entry is null', () => { - expect(() => service.setSteps([null] as any)).toThrowError(/índice 0 é inválido/); + expect(() => service.setSteps([null])).toThrowError(/índice 0 é inválido/); }); it('should throw when a step is missing the content property', () => { diff --git a/projects/ui/src/lib/utils/util.spec.ts b/projects/ui/src/lib/utils/util.spec.ts index 0b346b4c0a..b78eac2a20 100644 --- a/projects/ui/src/lib/utils/util.spec.ts +++ b/projects/ui/src/lib/utils/util.spec.ts @@ -1932,6 +1932,7 @@ describe('getTextColor:', () => { let getComputedStyleSpy: jasmine.Spy; beforeEach(() => { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion getComputedStyleSpy = spyOn(window, 'getComputedStyle').and.returnValue({ getPropertyValue: (token: string) => { const tokens = { @@ -1999,6 +2000,7 @@ describe('getTextColor:', () => { describe('getTextColorFromBackgroundColor:', () => { beforeEach(() => { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion spyOn(window, 'getComputedStyle').and.returnValue({ getPropertyValue: (token: string) => { const tokens = { From 6dfd2c11dff725e90353ee8bf4120d055103d51f Mon Sep 17 00:00:00 2001 From: luizvasconcellos Date: Thu, 3 Sep 2026 20:03:00 +0000 Subject: [PATCH 5/8] refactor(migration): remove $safeNavigationMigration validados --- ...po-page-blocked-user-reason.component.html | 2 +- .../po-page-blocked-user.component.html | 2 +- ...-page-job-scheduler-summary.component.html | 2 +- .../po-page-job-scheduler.component.html | 2 +- ...ge-job-scheduler-directives.component.html | 4 +-- .../po-page-login-popover.component.html | 2 +- ...le-po-disclaimer-group-labs.component.html | 2 +- ...e-po-dynamic-form-container.component.html | 2 +- ...le-po-dynamic-form-register.component.html | 2 +- ...mple-po-checkbox-group-labs.component.html | 4 +-- .../sample-po-combo-labs.component.html | 6 ++-- .../po-datepicker-range.component.html | 4 +-- ...le-po-datepicker-range-labs.component.html | 8 ++--- ...nge-vacations-reactive-form.component.html | 12 ++------ ...-datepicker-range-vacations.component.html | 12 ++------ .../sample-po-datepicker-labs.component.html | 8 ++--- ...mple-po-datetimepicker-labs.component.html | 8 ++--- .../sample-po-decimal-labs.component.html | 8 ++--- .../sample-po-email-labs.component.html | 10 +++---- .../sample-po-input-labs.component.html | 30 +++++++++---------- .../sample-po-login-labs.component.html | 10 +++---- .../po-lookup-modal.component.html | 4 +-- .../sample-po-lookup-labs.component.html | 6 ++-- .../sample-po-multiselect-labs.component.html | 6 ++-- .../sample-po-number-labs.component.html | 10 +++---- .../sample-po-password-labs.component.html | 10 +++---- .../sample-po-radio-group-labs.component.html | 6 ++-- .../sample-po-rich-text-labs.component.html | 6 ++-- .../sample-po-select-labs.component.html | 6 ++-- .../sample-po-switch-labs.component.html | 6 ++-- .../sample-po-textarea-labs.component.html | 6 ++-- .../sample-po-timepicker-labs.component.html | 10 +++---- ...po-upload-file-restrictions.component.html | 10 +++---- .../po-upload/po-upload.component.html | 10 +++---- .../sample-po-upload-labs.component.html | 4 +-- .../sample-po-url-labs.component.html | 10 +++---- .../po-header-brand.component.html | 9 ++---- .../po-header-customer.component.html | 6 ++-- .../po-header-menu-item.component.html | 2 +- .../po-header-tools.component.html | 12 ++++---- .../po-header/po-header.component.html | 2 +- .../po-helper/po-helper.component.html | 4 +-- .../po-item-list/po-item-list.component.html | 4 +-- ...ple-po-loading-overlay-labs.component.html | 6 +--- .../components/po-menu/po-menu.component.html | 4 +-- .../po-page-list/po-page-list.component.html | 6 ++-- .../po-stepper/po-stepper.component.html | 2 +- .../po-table-column-label.component.html | 10 +++---- .../po-table-subtitle-circle.component.html | 5 +--- .../sample-po-table-airfare.component.html | 6 ++-- 50 files changed, 151 insertions(+), 177 deletions(-) diff --git a/projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user-reason/po-page-blocked-user-reason.component.html b/projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user-reason/po-page-blocked-user-reason.component.html index 9d941658b5..061f8b5509 100644 --- a/projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user-reason/po-page-blocked-user-reason.component.html +++ b/projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user-reason/po-page-blocked-user-reason.component.html @@ -5,7 +5,7 @@
    - {{ $safeNavigationMigration(literals?.firstPhrase) | poI18n: literalParams }} + {{ literals?.firstPhrase | poI18n: literalParams }}
    {{ literals?.secondPhrase }}
    @if (literals?.thirdPhrase) { diff --git a/projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user.component.html b/projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user.component.html index a55b468d6b..e039aced80 100644 --- a/projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user.component.html +++ b/projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user.component.html @@ -16,7 +16,7 @@ diff --git a/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-page-job-scheduler-summary.component.html b/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-page-job-scheduler-summary.component.html index 3f75e7bfce..9aeaf7aa43 100644 --- a/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-page-job-scheduler-summary.component.html +++ b/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-page-job-scheduler-summary.component.html @@ -61,6 +61,6 @@ } @if (jobSchedulerSummaryTemplate) {
    - +
    } diff --git a/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler.component.html b/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler.component.html index b75ac0839c..c4ef0b9368 100644 --- a/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler.component.html +++ b/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler.component.html @@ -62,7 +62,7 @@ @for (template of parametersTemplate; track template; let index = $index) {
    - +
    } diff --git a/projects/templates/src/lib/components/po-page-job-scheduler/samples/sample-po-page-job-scheduler-directives/sample-po-page-job-scheduler-directives.component.html b/projects/templates/src/lib/components/po-page-job-scheduler/samples/sample-po-page-job-scheduler-directives/sample-po-page-job-scheduler-directives.component.html index a0b031ac51..92927f81ac 100644 --- a/projects/templates/src/lib/components/po-page-job-scheduler/samples/sample-po-page-job-scheduler-directives/sample-po-page-job-scheduler-directives.component.html +++ b/projects/templates/src/lib/components/po-page-job-scheduler/samples/sample-po-page-job-scheduler-directives/sample-po-page-job-scheduler-directives.component.html @@ -5,8 +5,8 @@ >

    Etapa 1

    diff --git a/projects/templates/src/lib/components/po-page-login/po-page-login-popover/po-page-login-popover.component.html b/projects/templates/src/lib/components/po-page-login/po-page-login-popover/po-page-login-popover.component.html index d96e280fd6..2ec1b81318 100644 --- a/projects/templates/src/lib/components/po-page-login/po-page-login-popover/po-page-login-popover.component.html +++ b/projects/templates/src/lib/components/po-page-login/po-page-login-popover/po-page-login-popover.component.html @@ -11,7 +11,7 @@

    {{ literals?.ifYouTryHarder }} {{ literals?.yourUserWillBeBlocked }}


    diff --git a/projects/ui/src/lib/components/po-disclaimer-group/samples/sample-po-disclaimer-group-labs/sample-po-disclaimer-group-labs.component.html b/projects/ui/src/lib/components/po-disclaimer-group/samples/sample-po-disclaimer-group-labs/sample-po-disclaimer-group-labs.component.html index 7db7839d14..fd03e37f2d 100644 --- a/projects/ui/src/lib/components/po-disclaimer-group/samples/sample-po-disclaimer-group-labs/sample-po-disclaimer-group-labs.component.html +++ b/projects/ui/src/lib/components/po-disclaimer-group/samples/sample-po-disclaimer-group-labs/sample-po-disclaimer-group-labs.component.html @@ -1,6 +1,6 @@ diff --git a/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/samples/sample-po-dynamic-form-container/sample-po-dynamic-form-container.component.html b/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/samples/sample-po-dynamic-form-container/sample-po-dynamic-form-container.component.html index f7a702eb39..0f1dc75055 100644 --- a/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/samples/sample-po-dynamic-form-container/sample-po-dynamic-form-container.component.html +++ b/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/samples/sample-po-dynamic-form-container/sample-po-dynamic-form-container.component.html @@ -15,7 +15,7 @@ diff --git a/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/samples/sample-po-dynamic-form-register/sample-po-dynamic-form-register.component.html b/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/samples/sample-po-dynamic-form-register/sample-po-dynamic-form-register.component.html index f7a702eb39..0f1dc75055 100644 --- a/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/samples/sample-po-dynamic-form-register/sample-po-dynamic-form-register.component.html +++ b/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/samples/sample-po-dynamic-form-register/sample-po-dynamic-form-register.component.html @@ -15,7 +15,7 @@ diff --git a/projects/ui/src/lib/components/po-field/po-checkbox-group/samples/sample-po-checkbox-group-labs/sample-po-checkbox-group-labs.component.html b/projects/ui/src/lib/components/po-field/po-checkbox-group/samples/sample-po-checkbox-group-labs/sample-po-checkbox-group-labs.component.html index 3354fbb988..8d566ce653 100644 --- a/projects/ui/src/lib/components/po-field/po-checkbox-group/samples/sample-po-checkbox-group-labs/sample-po-checkbox-group-labs.component.html +++ b/projects/ui/src/lib/components/po-field/po-checkbox-group/samples/sample-po-checkbox-group-labs/sample-po-checkbox-group-labs.component.html @@ -11,10 +11,10 @@ [p-options]="options" [p-required]="properties.includes('required')" [p-field-error-message]="fieldErrorMessage" - [p-error-limit]="$safeNavigationMigration(properties?.includes('errorLimit'))" + [p-error-limit]="properties?.includes('errorLimit')" [p-show-required]="properties.includes('showRequired')" [p-label-text-wrap]="properties.includes('labelTextWrap')" - [p-compact-label]="$safeNavigationMigration(properties?.includes('compactLabel'))" + [p-compact-label]="properties?.includes('compactLabel')" [p-size]="size" (p-change)="changeEvent('p-change')" (p-change-model)="changeEvent('p-change-model')" diff --git a/projects/ui/src/lib/components/po-field/po-combo/samples/sample-po-combo-labs/sample-po-combo-labs.component.html b/projects/ui/src/lib/components/po-field/po-combo/samples/sample-po-combo-labs/sample-po-combo-labs.component.html index b58bdb252d..17ed7ccfe9 100644 --- a/projects/ui/src/lib/components/po-field/po-combo/samples/sample-po-combo-labs/sample-po-combo-labs.component.html +++ b/projects/ui/src/lib/components/po-field/po-combo/samples/sample-po-combo-labs/sample-po-combo-labs.component.html @@ -27,9 +27,9 @@ [p-show-required]="properties.includes('showRequired')" [p-sort]="properties.includes('sort')" [p-size]="size" - [p-error-limit]="$safeNavigationMigration(properties?.includes('errorLimit'))" - [p-label-text-wrap]="$safeNavigationMigration(properties?.includes('labelTextWrap'))" - [p-compact-label]="$safeNavigationMigration(properties?.includes('compactLabel'))" + [p-error-limit]="properties?.includes('errorLimit')" + [p-label-text-wrap]="properties?.includes('labelTextWrap')" + [p-compact-label]="properties?.includes('compactLabel')" [p-listbox-control-position]="listboxPosition" (p-change)="changeEvent('p-change')" (p-change-model)="changeEvent('p-change-model')" diff --git a/projects/ui/src/lib/components/po-field/po-datepicker-range/po-datepicker-range.component.html b/projects/ui/src/lib/components/po-field/po-datepicker-range/po-datepicker-range.component.html index 9dfb47ed73..535e1bc4d7 100644 --- a/projects/ui/src/lib/components/po-field/po-datepicker-range/po-datepicker-range.component.html +++ b/projects/ui/src/lib/components/po-field/po-datepicker-range/po-datepicker-range.component.html @@ -44,7 +44,7 @@ [name]="startDateInputName" [readonly]="readonly" [required]="required" - [placeholder]="isDisabled ? '' : $safeNavigationMigration(placeholder?.start)" + [placeholder]="isDisabled ? '' : placeholder?.start" (blur)="onBlur($event)" (focus)="onFocus($event)" (keydown)="onKeydown($event)" @@ -66,7 +66,7 @@ [disabled]="isDisabled" [name]="endDateInputName" [readonly]="readonly" - [placeholder]="isDisabled ? '' : $safeNavigationMigration(placeholder?.end)" + [placeholder]="isDisabled ? '' : placeholder?.end" (blur)="onBlur($event)" (focus)="onFocus($event)" (keydown)="onKeydown($event)" diff --git a/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-labs/sample-po-datepicker-range-labs.component.html b/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-labs/sample-po-datepicker-range-labs.component.html index 4264dcc5c9..48f5198868 100644 --- a/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-labs/sample-po-datepicker-range-labs.component.html +++ b/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-labs/sample-po-datepicker-range-labs.component.html @@ -16,18 +16,18 @@ [p-placeholder]="placeholder" [p-clean]="properties.includes('clean')" [p-disabled]="properties.includes('disabled')" - [p-no-autocomplete]="$safeNavigationMigration(properties?.includes('noAutocomplete'))" + [p-no-autocomplete]="properties?.includes('noAutocomplete')" [p-optional]="properties.includes('optional')" [p-readonly]="properties.includes('readonly')" [p-required]="properties.includes('required')" [p-loading]="properties.includes('loading')" [p-show-required]="properties.includes('showRequired')" - [p-label-text-wrap]="$safeNavigationMigration(properties?.includes('labelTextWrap'))" - [p-compact-label]="$safeNavigationMigration(properties?.includes('compactLabel'))" + [p-label-text-wrap]="properties?.includes('labelTextWrap')" + [p-compact-label]="properties?.includes('compactLabel')" (p-change)="changeEvent('p-change')" (p-change-model)="changeEvent('p-change-model')" (p-keydown)="changeEvent('p-keydown')" - [p-error-limit]="$safeNavigationMigration(properties?.includes('errorLimit'))" + [p-error-limit]="properties?.includes('errorLimit')" [p-range-presets]="rangePresets" [p-range-preset-options]="customPresets" [p-range-presets-order]="rangePresetsOrder" diff --git a/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-vacations-reactive-form/sample-po-datepicker-range-vacations-reactive-form.component.html b/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-vacations-reactive-form/sample-po-datepicker-range-vacations-reactive-form.component.html index 5f616841f0..0638a4ef39 100644 --- a/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-vacations-reactive-form/sample-po-datepicker-range-vacations-reactive-form.component.html +++ b/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-vacations-reactive-form/sample-po-datepicker-range-vacations-reactive-form.component.html @@ -42,18 +42,10 @@ [p-secondary-action]="cancel" >
    - + - + diff --git a/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-vacations/sample-po-datepicker-range-vacations.component.html b/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-vacations/sample-po-datepicker-range-vacations.component.html index d54f657191..847d22e503 100644 --- a/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-vacations/sample-po-datepicker-range-vacations.component.html +++ b/projects/ui/src/lib/components/po-field/po-datepicker-range/samples/sample-po-datepicker-range-vacations/sample-po-datepicker-range-vacations.component.html @@ -45,18 +45,10 @@ [p-secondary-action]="cancel" >
    - + - + diff --git a/projects/ui/src/lib/components/po-field/po-datepicker/samples/sample-po-datepicker-labs/sample-po-datepicker-labs.component.html b/projects/ui/src/lib/components/po-field/po-datepicker/samples/sample-po-datepicker-labs/sample-po-datepicker-labs.component.html index bd2362ea2a..55e9a0cec6 100644 --- a/projects/ui/src/lib/components/po-field/po-datepicker/samples/sample-po-datepicker-labs/sample-po-datepicker-labs.component.html +++ b/projects/ui/src/lib/components/po-field/po-datepicker/samples/sample-po-datepicker-labs/sample-po-datepicker-labs.component.html @@ -13,22 +13,22 @@ [p-label]="label" [p-locale]="locale" [p-min-date]="minDate" - [p-no-autocomplete]="$safeNavigationMigration(properties?.includes('noAutocomplete'))" + [p-no-autocomplete]="properties?.includes('noAutocomplete')" [p-optional]="properties.includes('optional')" [p-placeholder]="placeholder" [p-readonly]="properties.includes('readonly')" [p-required]="properties.includes('required')" [p-required-field-error-message]="properties.includes('requiredFieldErrorMessage')" [p-show-required]="properties.includes('showRequired')" - [p-label-text-wrap]="$safeNavigationMigration(properties?.includes('labelTextWrap'))" + [p-label-text-wrap]="properties?.includes('labelTextWrap')" [p-loading]="properties.includes('loading')" - [p-compact-label]="$safeNavigationMigration(properties?.includes('compactLabel'))" + [p-compact-label]="properties?.includes('compactLabel')" [p-size]="size" (p-blur)="changeEvent('p-blur')" (p-change)="changeEvent('p-change')" (p-change-model)="changeEvent('p-change-model')" (p-keydown)="changeEvent('p-keydown')" - [p-error-limit]="$safeNavigationMigration(properties?.includes('errorLimit'))" + [p-error-limit]="properties?.includes('errorLimit')" > diff --git a/projects/ui/src/lib/components/po-field/po-datetimepicker/samples/sample-po-datetimepicker-labs/sample-po-datetimepicker-labs.component.html b/projects/ui/src/lib/components/po-field/po-datetimepicker/samples/sample-po-datetimepicker-labs/sample-po-datetimepicker-labs.component.html index eb12f77d0d..fb698f05ef 100644 --- a/projects/ui/src/lib/components/po-field/po-datetimepicker/samples/sample-po-datetimepicker-labs/sample-po-datetimepicker-labs.component.html +++ b/projects/ui/src/lib/components/po-field/po-datetimepicker/samples/sample-po-datetimepicker-labs/sample-po-datetimepicker-labs.component.html @@ -3,16 +3,16 @@ name="datetimepicker" [(ngModel)]="datetimepicker" [p-clean]="properties.includes('clean')" - [p-compact-label]="$safeNavigationMigration(properties?.includes('compactLabel'))" + [p-compact-label]="properties?.includes('compactLabel')" [p-disabled]="properties.includes('disabled')" - [p-error-limit]="$safeNavigationMigration(properties?.includes('errorLimit'))" + [p-error-limit]="properties?.includes('errorLimit')" [p-error-pattern]="errorPattern" [p-format-date]="formatDate" [p-format-time]="formatTime" [p-help]="help" [p-helper]="helperText" [p-label]="label" - [p-label-text-wrap]="$safeNavigationMigration(properties?.includes('labelTextWrap'))" + [p-label-text-wrap]="properties?.includes('labelTextWrap')" [p-loading]="properties.includes('loading')" [p-locale]="locale" [p-max-date]="maxDate" @@ -20,7 +20,7 @@ [p-min-date]="minDate" [p-min-time]="minTime" [p-minute-interval]="minuteInterval" - [p-no-autocomplete]="$safeNavigationMigration(properties?.includes('noAutocomplete'))" + [p-no-autocomplete]="properties?.includes('noAutocomplete')" [p-optional]="properties.includes('optional')" [p-placeholder]="placeholder" [p-readonly]="properties.includes('readonly')" diff --git a/projects/ui/src/lib/components/po-field/po-decimal/samples/sample-po-decimal-labs/sample-po-decimal-labs.component.html b/projects/ui/src/lib/components/po-field/po-decimal/samples/sample-po-decimal-labs/sample-po-decimal-labs.component.html index a96570158b..3bb9603376 100644 --- a/projects/ui/src/lib/components/po-field/po-decimal/samples/sample-po-decimal-labs/sample-po-decimal-labs.component.html +++ b/projects/ui/src/lib/components/po-field/po-decimal/samples/sample-po-decimal-labs/sample-po-decimal-labs.component.html @@ -16,7 +16,7 @@ [p-error-pattern]="errorPattern" [p-max]="max" [p-min]="min" - [p-no-autocomplete]="$safeNavigationMigration(properties?.includes('noAutocomplete'))" + [p-no-autocomplete]="properties?.includes('noAutocomplete')" [p-optional]="properties.includes('optional')" [p-placeholder]="placeholder" [p-readonly]="properties.includes('readonly')" @@ -25,13 +25,13 @@ [p-show-required]="properties.includes('showRequired')" [p-size]="size" [p-thousand-maxlength]="thousandMaxlength" - [p-label-text-wrap]="$safeNavigationMigration(properties?.includes('labelTextWrap'))" - [p-compact-label]="$safeNavigationMigration(properties?.includes('compactLabel'))" + [p-label-text-wrap]="properties?.includes('labelTextWrap')" + [p-compact-label]="properties?.includes('compactLabel')" (p-blur)="changeEvent('p-blur')" (p-change)="changeEvent('p-change')" (p-change-model)="changeEvent('p-change-model')" (p-keydown)="changeEvent('p-keydown')" - [p-error-limit]="$safeNavigationMigration(properties?.includes('errorLimit'))" + [p-error-limit]="properties?.includes('errorLimit')" > diff --git a/projects/ui/src/lib/components/po-field/po-email/samples/sample-po-email-labs/sample-po-email-labs.component.html b/projects/ui/src/lib/components/po-field/po-email/samples/sample-po-email-labs/sample-po-email-labs.component.html index cae3968b77..cf4c4c6cc4 100644 --- a/projects/ui/src/lib/components/po-field/po-email/samples/sample-po-email-labs/sample-po-email-labs.component.html +++ b/projects/ui/src/lib/components/po-field/po-email/samples/sample-po-email-labs/sample-po-email-labs.component.html @@ -7,10 +7,10 @@ [p-error-pattern]="errorPattern" [p-help]="help" [p-label]="label" - [p-loading]="$safeNavigationMigration(properties?.includes('loading'))" + [p-loading]="properties?.includes('loading')" [p-maxlength]="maxlength" [p-minlength]="minlength" - [p-no-autocomplete]="$safeNavigationMigration(properties?.includes('noAutocomplete'))" + [p-no-autocomplete]="properties?.includes('noAutocomplete')" [p-optional]="properties.includes('optional')" [p-placeholder]="placeholder" [p-readonly]="properties.includes('readonly')" @@ -18,14 +18,14 @@ [p-required-field-error-message]="properties.includes('requiredFieldErrorMessage')" [p-show-required]="properties.includes('showRequired')" [p-size]="size" - [p-label-text-wrap]="$safeNavigationMigration(properties?.includes('labelTextWrap'))" - [p-compact-label]="$safeNavigationMigration(properties?.includes('compactLabel'))" + [p-label-text-wrap]="properties?.includes('labelTextWrap')" + [p-compact-label]="properties?.includes('compactLabel')" (p-blur)="changeEvent('p-blur')" (p-change)="changeEvent('p-change')" (p-change-model)="changeEvent('p-change-model')" (p-enter)="changeEvent('p-enter')" (p-keydown)="changeEvent('p-keydown')" - [p-error-limit]="$safeNavigationMigration(properties?.includes('errorLimit'))" + [p-error-limit]="properties?.includes('errorLimit')" > diff --git a/projects/ui/src/lib/components/po-field/po-input/samples/sample-po-input-labs/sample-po-input-labs.component.html b/projects/ui/src/lib/components/po-field/po-input/samples/sample-po-input-labs/sample-po-input-labs.component.html index da9b98bd5e..07d1b608ee 100644 --- a/projects/ui/src/lib/components/po-field/po-input/samples/sample-po-input-labs/sample-po-input-labs.component.html +++ b/projects/ui/src/lib/components/po-field/po-input/samples/sample-po-input-labs/sample-po-input-labs.component.html @@ -2,36 +2,36 @@ name="input" [(ngModel)]="input" [p-helper]="helperText" - [p-clean]="$safeNavigationMigration(properties?.includes('clean'))" - [p-disabled]="$safeNavigationMigration(properties?.includes('disabled'))" + [p-clean]="properties?.includes('clean')" + [p-disabled]="properties?.includes('disabled')" [p-error-pattern]="errorPattern" [p-help]="help" [p-icon]="icon" [p-label]="label" - [p-loading]="$safeNavigationMigration(properties?.includes('loading'))" + [p-loading]="properties?.includes('loading')" [p-mask]="mask" - [p-mask-format-model]="$safeNavigationMigration(properties?.includes('maskFormatModel'))" + [p-mask-format-model]="properties?.includes('maskFormatModel')" [p-maxlength]="maxlength" [p-minlength]="minlength" - [p-no-autocomplete]="$safeNavigationMigration(properties?.includes('noAutocomplete'))" - [p-optional]="$safeNavigationMigration(properties?.includes('optional'))" + [p-no-autocomplete]="properties?.includes('noAutocomplete')" + [p-optional]="properties?.includes('optional')" [p-pattern]="pattern" [p-placeholder]="placeholder" - [p-required]="$safeNavigationMigration(properties?.includes('required'))" - [p-required-field-error-message]="$safeNavigationMigration(properties?.includes('requiredFieldErrorMessage'))" - [p-readonly]="$safeNavigationMigration(properties?.includes('readonly'))" - [p-upper-case]="$safeNavigationMigration(properties?.includes('uppercase'))" - [p-show-required]="$safeNavigationMigration(properties?.includes('showRequired'))" - [p-mask-no-length-validation]="$safeNavigationMigration(properties?.includes('maskNoLengthValidation'))" + [p-required]="properties?.includes('required')" + [p-required-field-error-message]="properties?.includes('requiredFieldErrorMessage')" + [p-readonly]="properties?.includes('readonly')" + [p-upper-case]="properties?.includes('uppercase')" + [p-show-required]="properties?.includes('showRequired')" + [p-mask-no-length-validation]="properties?.includes('maskNoLengthValidation')" [p-size]="size" (p-blur)="changeEvent('p-blur')" (p-change)="changeEvent('p-change')" (p-change-model)="changeEvent('p-change-model')" (p-enter)="changeEvent('p-enter')" (p-keydown)="changeEvent('p-keydown')" - [p-error-limit]="$safeNavigationMigration(properties?.includes('errorLimit'))" - [p-label-text-wrap]="$safeNavigationMigration(properties?.includes('labelTextWrap'))" - [p-compact-label]="$safeNavigationMigration(properties?.includes('compactLabel'))" + [p-error-limit]="properties?.includes('errorLimit')" + [p-label-text-wrap]="properties?.includes('labelTextWrap')" + [p-compact-label]="properties?.includes('compactLabel')" > diff --git a/projects/ui/src/lib/components/po-field/po-login/samples/sample-po-login-labs/sample-po-login-labs.component.html b/projects/ui/src/lib/components/po-field/po-login/samples/sample-po-login-labs/sample-po-login-labs.component.html index 5e890480e0..c0e6d3e0d2 100644 --- a/projects/ui/src/lib/components/po-field/po-login/samples/sample-po-login-labs/sample-po-login-labs.component.html +++ b/projects/ui/src/lib/components/po-field/po-login/samples/sample-po-login-labs/sample-po-login-labs.component.html @@ -7,10 +7,10 @@ [p-error-pattern]="errorPattern" [p-help]="help" [p-label]="label" - [p-loading]="$safeNavigationMigration(properties?.includes('loading'))" + [p-loading]="properties?.includes('loading')" [p-maxlength]="maxlength" [p-minlength]="minlength" - [p-no-autocomplete]="$safeNavigationMigration(properties?.includes('noAutocomplete'))" + [p-no-autocomplete]="properties?.includes('noAutocomplete')" [p-optional]="properties.includes('optional')" [p-pattern]="pattern" [p-placeholder]="placeholder" @@ -19,14 +19,14 @@ [p-required-field-error-message]="properties.includes('requiredFieldErrorMessage')" [p-show-required]="properties.includes('showRequired')" [p-size]="size" - [p-label-text-wrap]="$safeNavigationMigration(properties?.includes('labelTextWrap'))" - [p-compact-label]="$safeNavigationMigration(properties?.includes('compactLabel'))" + [p-label-text-wrap]="properties?.includes('labelTextWrap')" + [p-compact-label]="properties?.includes('compactLabel')" (p-blur)="changeEvent('p-blur')" (p-change)="changeEvent('p-change')" (p-change-model)="changeEvent('p-change-model')" (p-enter)="changeEvent('p-enter')" (p-keydown)="changeEvent('p-keydown')" - [p-error-limit]="$safeNavigationMigration(properties?.includes('errorLimit'))" + [p-error-limit]="properties?.includes('errorLimit')" > diff --git a/projects/ui/src/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal.component.html b/projects/ui/src/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal.component.html index a568d6a88f..6a88ce86e6 100644 --- a/projects/ui/src/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal.component.html +++ b/projects/ui/src/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal.component.html @@ -51,8 +51,8 @@ @if (!!disclaimerGroup) { diff --git a/projects/ui/src/lib/components/po-field/po-lookup/samples/sample-po-lookup-labs/sample-po-lookup-labs.component.html b/projects/ui/src/lib/components/po-field/po-lookup/samples/sample-po-lookup-labs/sample-po-lookup-labs.component.html index e294276c77..4e3f8d8e47 100644 --- a/projects/ui/src/lib/components/po-field/po-lookup/samples/sample-po-lookup-labs/sample-po-lookup-labs.component.html +++ b/projects/ui/src/lib/components/po-field/po-lookup/samples/sample-po-lookup-labs/sample-po-lookup-labs.component.html @@ -27,15 +27,15 @@ [p-size]="size" [p-spacing]="spacing" [p-text-wrap]="properties.includes('textWrap')" - [p-label-text-wrap]="$safeNavigationMigration(properties?.includes('labelTextWrap'))" + [p-label-text-wrap]="properties?.includes('labelTextWrap')" [p-virtual-scroll]="properties.includes('virtualScroll')" (p-change)="changeEvent('p-change')" (p-change-model)="changeEvent('p-change-model')" (p-error)="changeEvent('p-error')" (p-keydown)="changeEvent('p-keydown')" (p-selected)="changeEvent('p-selected')" - [p-error-limit]="$safeNavigationMigration(properties?.includes('errorLimit'))" - [p-compact-label]="$safeNavigationMigration(properties?.includes('compactLabel'))" + [p-error-limit]="properties?.includes('errorLimit')" + [p-compact-label]="properties?.includes('compactLabel')" > diff --git a/projects/ui/src/lib/components/po-field/po-multiselect/samples/sample-po-multiselect-labs/sample-po-multiselect-labs.component.html b/projects/ui/src/lib/components/po-field/po-multiselect/samples/sample-po-multiselect-labs/sample-po-multiselect-labs.component.html index f48760a95d..5c83a97cc4 100644 --- a/projects/ui/src/lib/components/po-field/po-multiselect/samples/sample-po-multiselect-labs/sample-po-multiselect-labs.component.html +++ b/projects/ui/src/lib/components/po-field/po-multiselect/samples/sample-po-multiselect-labs/sample-po-multiselect-labs.component.html @@ -29,9 +29,9 @@ (p-change)="changeEvent('p-change')" (p-change-model)="changeEvent('p-change-model')" (p-keydown)="changeEvent('p-keydown')" - [p-error-limit]="$safeNavigationMigration(properties?.includes('errorLimit'))" - [p-label-text-wrap]="$safeNavigationMigration(properties?.includes('labelTextWrap'))" - [p-compact-label]="$safeNavigationMigration(properties?.includes('compactLabel'))" + [p-error-limit]="properties?.includes('errorLimit')" + [p-label-text-wrap]="properties?.includes('labelTextWrap')" + [p-compact-label]="properties?.includes('compactLabel')" >
    diff --git a/projects/ui/src/lib/components/po-field/po-number/samples/sample-po-number-labs/sample-po-number-labs.component.html b/projects/ui/src/lib/components/po-field/po-number/samples/sample-po-number-labs/sample-po-number-labs.component.html index 9328657d67..bb60a69af9 100644 --- a/projects/ui/src/lib/components/po-field/po-number/samples/sample-po-number-labs/sample-po-number-labs.component.html +++ b/projects/ui/src/lib/components/po-field/po-number/samples/sample-po-number-labs/sample-po-number-labs.component.html @@ -9,12 +9,12 @@ [p-help]="help" [p-icon]="icon" [p-label]="label" - [p-loading]="$safeNavigationMigration(properties?.includes('loading'))" + [p-loading]="properties?.includes('loading')" [p-max]="max" [p-maxlength]="maxlength" [p-min]="min" [p-minlength]="minlength" - [p-no-autocomplete]="$safeNavigationMigration(properties?.includes('noAutocomplete'))" + [p-no-autocomplete]="properties?.includes('noAutocomplete')" [p-optional]="properties.includes('optional')" [p-placeholder]="placeholder" [p-readonly]="properties.includes('readonly')" @@ -27,9 +27,9 @@ (p-change)="changeEvent('p-change')" (p-change-model)="changeEvent('p-change-model')" (p-keydown)="changeEvent('p-keydown')" - [p-error-limit]="$safeNavigationMigration(properties?.includes('errorLimit'))" - [p-label-text-wrap]="$safeNavigationMigration(properties?.includes('labelTextWrap'))" - [p-compact-label]="$safeNavigationMigration(properties?.includes('compactLabel'))" + [p-error-limit]="properties?.includes('errorLimit')" + [p-label-text-wrap]="properties?.includes('labelTextWrap')" + [p-compact-label]="properties?.includes('compactLabel')" > diff --git a/projects/ui/src/lib/components/po-field/po-password/samples/sample-po-password-labs/sample-po-password-labs.component.html b/projects/ui/src/lib/components/po-field/po-password/samples/sample-po-password-labs/sample-po-password-labs.component.html index 4c7f092fa6..d3e4155a4b 100644 --- a/projects/ui/src/lib/components/po-field/po-password/samples/sample-po-password-labs/sample-po-password-labs.component.html +++ b/projects/ui/src/lib/components/po-field/po-password/samples/sample-po-password-labs/sample-po-password-labs.component.html @@ -8,10 +8,10 @@ [p-help]="help" [p-hide-password-peek]="properties.includes('hidepasswordpeek')" [p-label]="label" - [p-loading]="$safeNavigationMigration(properties?.includes('loading'))" + [p-loading]="properties?.includes('loading')" [p-maxlength]="maxlength" [p-minlength]="minlength" - [p-no-autocomplete]="$safeNavigationMigration(properties?.includes('noAutocomplete'))" + [p-no-autocomplete]="properties?.includes('noAutocomplete')" [p-optional]="properties.includes('optional')" [p-pattern]="pattern" [p-placeholder]="placeholder" @@ -25,9 +25,9 @@ (p-change-model)="changeEvent('p-change-model')" (p-enter)="changeEvent('p-enter')" (p-keydown)="changeEvent('p-keydown')" - [p-error-limit]="$safeNavigationMigration(properties?.includes('errorLimit'))" - [p-label-text-wrap]="$safeNavigationMigration(properties?.includes('labelTextWrap'))" - [p-compact-label]="$safeNavigationMigration(properties?.includes('compactLabel'))" + [p-error-limit]="properties?.includes('errorLimit')" + [p-label-text-wrap]="properties?.includes('labelTextWrap')" + [p-compact-label]="properties?.includes('compactLabel')" > diff --git a/projects/ui/src/lib/components/po-field/po-radio-group/samples/sample-po-radio-group-labs/sample-po-radio-group-labs.component.html b/projects/ui/src/lib/components/po-field/po-radio-group/samples/sample-po-radio-group-labs/sample-po-radio-group-labs.component.html index 1d53ee1e80..24335fb277 100644 --- a/projects/ui/src/lib/components/po-field/po-radio-group/samples/sample-po-radio-group-labs/sample-po-radio-group-labs.component.html +++ b/projects/ui/src/lib/components/po-field/po-radio-group/samples/sample-po-radio-group-labs/sample-po-radio-group-labs.component.html @@ -15,9 +15,9 @@ (p-change)="changeEvent('p-change')" (p-change-model)="changeEvent('p-change-model')" (p-keydown)="changeEvent('p-keydown')" - [p-error-limit]="$safeNavigationMigration(properties?.includes('errorLimit'))" - [p-label-text-wrap]="$safeNavigationMigration(properties?.includes('labelTextWrap'))" - [p-compact-label]="$safeNavigationMigration(properties?.includes('compactLabel'))" + [p-error-limit]="properties?.includes('errorLimit')" + [p-label-text-wrap]="properties?.includes('labelTextWrap')" + [p-compact-label]="properties?.includes('compactLabel')" > diff --git a/projects/ui/src/lib/components/po-field/po-rich-text/samples/sample-po-rich-text-labs/sample-po-rich-text-labs.component.html b/projects/ui/src/lib/components/po-field/po-rich-text/samples/sample-po-rich-text-labs/sample-po-rich-text-labs.component.html index a9ed269e27..3647d81ccf 100644 --- a/projects/ui/src/lib/components/po-field/po-rich-text/samples/sample-po-rich-text-labs/sample-po-rich-text-labs.component.html +++ b/projects/ui/src/lib/components/po-field/po-rich-text/samples/sample-po-rich-text-labs/sample-po-rich-text-labs.component.html @@ -18,9 +18,9 @@ (p-change)="changeEvent('p-change')" (p-change-model)="changeEvent('p-change-model')" (p-keydown)="changeEvent('p-keydown')" - [p-error-limit]="$safeNavigationMigration(properties?.includes('errorLimit'))" - [p-label-text-wrap]="$safeNavigationMigration(properties?.includes('labelTextWrap'))" - [p-compact-label]="$safeNavigationMigration(properties?.includes('compactLabel'))" + [p-error-limit]="properties?.includes('errorLimit')" + [p-label-text-wrap]="properties?.includes('labelTextWrap')" + [p-compact-label]="properties?.includes('compactLabel')" > diff --git a/projects/ui/src/lib/components/po-field/po-select/samples/sample-po-select-labs/sample-po-select-labs.component.html b/projects/ui/src/lib/components/po-field/po-select/samples/sample-po-select-labs/sample-po-select-labs.component.html index f7643fa2f7..dac726812c 100644 --- a/projects/ui/src/lib/components/po-field/po-select/samples/sample-po-select-labs/sample-po-select-labs.component.html +++ b/projects/ui/src/lib/components/po-field/po-select/samples/sample-po-select-labs/sample-po-select-labs.component.html @@ -20,9 +20,9 @@ (p-change-model)="changeEvent('p-change-model')" (p-enter)="changeEvent('p-enter')" (p-keydown)="changeEvent('p-keydown')" - [p-error-limit]="$safeNavigationMigration(properties?.includes('errorLimit'))" - [p-label-text-wrap]="$safeNavigationMigration(properties?.includes('labelTextWrap'))" - [p-compact-label]="$safeNavigationMigration(properties?.includes('compactLabel'))" + [p-error-limit]="properties?.includes('errorLimit')" + [p-label-text-wrap]="properties?.includes('labelTextWrap')" + [p-compact-label]="properties?.includes('compactLabel')" > diff --git a/projects/ui/src/lib/components/po-field/po-switch/samples/sample-po-switch-labs/sample-po-switch-labs.component.html b/projects/ui/src/lib/components/po-field/po-switch/samples/sample-po-switch-labs/sample-po-switch-labs.component.html index 91d640e147..05a2c859d5 100644 --- a/projects/ui/src/lib/components/po-field/po-switch/samples/sample-po-switch-labs/sample-po-switch-labs.component.html +++ b/projects/ui/src/lib/components/po-field/po-switch/samples/sample-po-switch-labs/sample-po-switch-labs.component.html @@ -3,19 +3,19 @@ [(ngModel)]="switch" [p-helper]="helperText" [p-disabled]="properties.includes('disabled')" - [p-error-limit]="$safeNavigationMigration(properties?.includes('errorLimit'))" + [p-error-limit]="properties?.includes('errorLimit')" [p-field-error-message]="fieldErrorMessage" [p-format-model]="properties.includes('formatModel')" [p-help]="help" [p-hide-label-status]="properties.includes('hideLabelStatus')" - [p-invalid-value]="$safeNavigationMigration(properties?.includes('invalidValue'))" + [p-invalid-value]="properties?.includes('invalidValue')" [p-label]="label" [p-label-off]="labelOff" [p-label-on]="labelOn" [p-label-position]="labelPosition" [p-label-text-wrap]="properties.includes('labelTextWrap')" [p-loading]="properties.includes('loading')" - [p-compact-label]="$safeNavigationMigration(properties?.includes('compactLabel'))" + [p-compact-label]="properties?.includes('compactLabel')" [p-size]="size" (p-change)="changeEvent('p-change')" (p-change-model)="changeEvent('p-change-model')" diff --git a/projects/ui/src/lib/components/po-field/po-textarea/samples/sample-po-textarea-labs/sample-po-textarea-labs.component.html b/projects/ui/src/lib/components/po-field/po-textarea/samples/sample-po-textarea-labs/sample-po-textarea-labs.component.html index d1f235bc70..076d39f6a2 100644 --- a/projects/ui/src/lib/components/po-field/po-textarea/samples/sample-po-textarea-labs/sample-po-textarea-labs.component.html +++ b/projects/ui/src/lib/components/po-field/po-textarea/samples/sample-po-textarea-labs/sample-po-textarea-labs.component.html @@ -21,9 +21,9 @@ (p-change-model)="changeEvent('p-change-model')" (p-enter)="changeEvent('p-enter')" (p-keydown)="changeEvent('p-keydown')" - [p-error-limit]="$safeNavigationMigration(properties?.includes('errorLimit'))" - [p-label-text-wrap]="$safeNavigationMigration(properties?.includes('labelTextWrap'))" - [p-compact-label]="$safeNavigationMigration(properties?.includes('compactLabel'))" + [p-error-limit]="properties?.includes('errorLimit')" + [p-label-text-wrap]="properties?.includes('labelTextWrap')" + [p-compact-label]="properties?.includes('compactLabel')" > diff --git a/projects/ui/src/lib/components/po-field/po-timepicker/samples/sample-po-timepicker-labs/sample-po-timepicker-labs.component.html b/projects/ui/src/lib/components/po-field/po-timepicker/samples/sample-po-timepicker-labs/sample-po-timepicker-labs.component.html index ba208687ec..3ee3987734 100644 --- a/projects/ui/src/lib/components/po-field/po-timepicker/samples/sample-po-timepicker-labs/sample-po-timepicker-labs.component.html +++ b/projects/ui/src/lib/components/po-field/po-timepicker/samples/sample-po-timepicker-labs/sample-po-timepicker-labs.component.html @@ -15,7 +15,7 @@ [p-min-time]="minTime" [p-minute-interval]="minuteInterval" [p-second-interval]="secondInterval" - [p-no-autocomplete]="$safeNavigationMigration(properties?.includes('noAutocomplete'))" + [p-no-autocomplete]="properties?.includes('noAutocomplete')" [p-optional]="properties.includes('optional')" [p-placeholder]="placeholder" [p-readonly]="properties.includes('readonly')" @@ -23,11 +23,11 @@ [p-required-field-error-message]="properties.includes('requiredFieldErrorMessage')" [p-show-required]="properties.includes('showRequired')" [p-show-seconds]="properties.includes('showSeconds')" - [p-label-text-wrap]="$safeNavigationMigration(properties?.includes('labelTextWrap'))" + [p-label-text-wrap]="properties?.includes('labelTextWrap')" [p-loading]="properties.includes('loading')" - [p-compact-label]="$safeNavigationMigration(properties?.includes('compactLabel'))" - [p-append-in-body]="$safeNavigationMigration(properties?.includes('appendInBody'))" - [p-error-limit]="$safeNavigationMigration(properties?.includes('errorLimit'))" + [p-compact-label]="properties?.includes('compactLabel')" + [p-append-in-body]="properties?.includes('appendInBody')" + [p-error-limit]="properties?.includes('errorLimit')" [p-size]="size" (p-blur)="changeEvent('p-blur')" (p-change)="changeEvent('p-change')" diff --git a/projects/ui/src/lib/components/po-field/po-upload/po-upload-file-restrictions/po-upload-file-restrictions.component.html b/projects/ui/src/lib/components/po-field/po-upload/po-upload-file-restrictions/po-upload-file-restrictions.component.html index 2de03d5817..eaa1bbc579 100644 --- a/projects/ui/src/lib/components/po-field/po-upload/po-upload-file-restrictions/po-upload-file-restrictions.component.html +++ b/projects/ui/src/lib/components/po-field/po-upload/po-upload-file-restrictions/po-upload-file-restrictions.component.html @@ -1,12 +1,12 @@ @if (maxFiles > 1) {

    - {{ $safeNavigationMigration(literals?.numberOfFilesAllowed) | poI18n: maxFiles }} + {{ literals?.numberOfFilesAllowed | poI18n: maxFiles }}

    } @if (allowedExtensions) {

    - {{ $safeNavigationMigration(literals?.allowedFormats) | poI18n: allowedExtensions }} + {{ literals?.allowedFormats | poI18n: allowedExtensions }}

    } @@ -15,17 +15,17 @@ {{ literals?.allowedSizes }} @if (minFileSize && maxFileSize) { - {{ $safeNavigationMigration(literals?.allowedFileSizeRange) | poI18n: [minFileSize, maxFileSize] }} + {{ literals?.allowedFileSizeRange | poI18n: [minFileSize, maxFileSize] }} } @if (minFileSize && !maxFileSize) { - {{ $safeNavigationMigration(literals?.minFileSizeAllowed) | poI18n: minFileSize }} + {{ literals?.minFileSizeAllowed | poI18n: minFileSize }} } @if (maxFileSize && !minFileSize) { - {{ $safeNavigationMigration(literals?.maxFileSizeAllowed) | poI18n: maxFileSize }} + {{ literals?.maxFileSizeAllowed | poI18n: maxFileSize }} }

    diff --git a/projects/ui/src/lib/components/po-field/po-upload/po-upload.component.html b/projects/ui/src/lib/components/po-field/po-upload/po-upload.component.html index cd8817c77d..84ed150b44 100644 --- a/projects/ui/src/lib/components/po-field/po-upload/po-upload.component.html +++ b/projects/ui/src/lib/components/po-field/po-upload/po-upload.component.html @@ -44,10 +44,10 @@ class="po-upload-file-restrictions" [ngClass]="{ 'po-upload-file-restrictions-drag-drop': displayDragDrop }" [class.po-pb-1]="!displayDragDrop" - [p-allowed-extensions]="$safeNavigationMigration(fileRestrictions?.allowedExtensions)" + [p-allowed-extensions]="fileRestrictions?.allowedExtensions" [p-max-files]="maxFiles" - [p-max-file-size]="$safeNavigationMigration(fileRestrictions?.maxFileSize)" - [p-min-file-size]="$safeNavigationMigration(fileRestrictions?.minFileSize)" + [p-max-file-size]="fileRestrictions?.maxFileSize" + [p-min-file-size]="fileRestrictions?.minFileSize" > } @@ -107,8 +107,8 @@ [p-tooltip]="tooltipTitle" (keydown)="openModal(file, $event)" (click)="openModal(file)" - (mouseover)="showTooltipText($event, $safeNavigationMigration(file?.displayName))" - (focus)="showTooltipText($event, $safeNavigationMigration(file?.displayName))" + (mouseover)="showTooltipText($event, file?.displayName)" + (focus)="showTooltipText($event, file?.displayName)" >{{ file.displayName }}
    diff --git a/projects/ui/src/lib/components/po-field/po-upload/samples/sample-po-upload-labs/sample-po-upload-labs.component.html b/projects/ui/src/lib/components/po-field/po-upload/samples/sample-po-upload-labs/sample-po-upload-labs.component.html index 4a398bcfd8..30e53b9e04 100644 --- a/projects/ui/src/lib/components/po-field/po-upload/samples/sample-po-upload-labs/sample-po-upload-labs.component.html +++ b/projects/ui/src/lib/components/po-field/po-upload/samples/sample-po-upload-labs/sample-po-upload-labs.component.html @@ -27,8 +27,8 @@ [p-url]="url" [p-headers]="headers" [p-custom-action]="action" - [p-label-text-wrap]="$safeNavigationMigration(properties?.includes('labelTextWrap'))" - [p-compact-label]="$safeNavigationMigration(properties?.includes('compactLabel'))" + [p-label-text-wrap]="properties?.includes('labelTextWrap')" + [p-compact-label]="properties?.includes('compactLabel')" [p-custom-modal-actions]="customModalActions" (p-custom-action-click)="changeEvent('p-custom-action-click')" (p-error)="changeEvent('p-error')" diff --git a/projects/ui/src/lib/components/po-field/po-url/samples/sample-po-url-labs/sample-po-url-labs.component.html b/projects/ui/src/lib/components/po-field/po-url/samples/sample-po-url-labs/sample-po-url-labs.component.html index b4b9b2058e..f94a73f575 100644 --- a/projects/ui/src/lib/components/po-field/po-url/samples/sample-po-url-labs/sample-po-url-labs.component.html +++ b/projects/ui/src/lib/components/po-field/po-url/samples/sample-po-url-labs/sample-po-url-labs.component.html @@ -7,10 +7,10 @@ [p-error-pattern]="errorPattern" [p-help]="help" [p-label]="label" - [p-loading]="$safeNavigationMigration(properties?.includes('loading'))" + [p-loading]="properties?.includes('loading')" [p-maxlength]="maxlength" [p-minlength]="minlength" - [p-no-autocomplete]="$safeNavigationMigration(properties?.includes('noAutocomplete'))" + [p-no-autocomplete]="properties?.includes('noAutocomplete')" [p-optional]="properties.includes('optional')" [p-placeholder]="placeholder" [p-readonly]="properties.includes('readonly')" @@ -23,9 +23,9 @@ (p-change-model)="changeEvent('p-change-model')" (p-enter)="changeEvent('p-enter')" (p-keydown)="changeEvent('p-keydown')" - [p-error-limit]="$safeNavigationMigration(properties?.includes('errorLimit'))" - [p-label-text-wrap]="$safeNavigationMigration(properties?.includes('labelTextWrap'))" - [p-compact-label]="$safeNavigationMigration(properties?.includes('compactLabel'))" + [p-error-limit]="properties?.includes('errorLimit')" + [p-label-text-wrap]="properties?.includes('labelTextWrap')" + [p-compact-label]="properties?.includes('compactLabel')" > diff --git a/projects/ui/src/lib/components/po-header/po-header-brand/po-header-brand.component.html b/projects/ui/src/lib/components/po-header/po-header-brand/po-header-brand.component.html index ea60f15211..82eb288777 100644 --- a/projects/ui/src/lib/components/po-header/po-header-brand/po-header-brand.component.html +++ b/projects/ui/src/lib/components/po-header/po-header-brand/po-header-brand.component.html @@ -24,10 +24,7 @@ Logo
    } - {{ brand?.title }} + {{ + brand?.title + }}
    diff --git a/projects/ui/src/lib/components/po-header/po-header-customer/po-header-customer.component.html b/projects/ui/src/lib/components/po-header/po-header-customer/po-header-customer.component.html index 75ab051e51..af8a71755b 100644 --- a/projects/ui/src/lib/components/po-header/po-header-customer/po-header-customer.component.html +++ b/projects/ui/src/lib/components/po-header/po-header-customer/po-header-customer.component.html @@ -8,14 +8,14 @@ [attr.aria-label]="literals.labelUser" >
    - User + User
    - Avatar + Avatar
    @if (headerUser?.status) { @@ -25,7 +25,7 @@
  • - Avatar + Avatar
    @if (headerUser?.status) { diff --git a/projects/ui/src/lib/components/po-header/po-header-menu-item/po-header-menu-item.component.html b/projects/ui/src/lib/components/po-header/po-header-menu-item/po-header-menu-item.component.html index 98de435743..58604701c8 100644 --- a/projects/ui/src/lib/components/po-header/po-header-menu-item/po-header-menu-item.component.html +++ b/projects/ui/src/lib/components/po-header/po-header-menu-item/po-header-menu-item.component.html @@ -24,7 +24,7 @@
  • - + - + }
  • diff --git a/projects/ui/src/lib/components/po-header/po-header.component.html b/projects/ui/src/lib/components/po-header/po-header.component.html index e3c097123b..d69f1aa816 100644 --- a/projects/ui/src/lib/components/po-header/po-header.component.html +++ b/projects/ui/src/lib/components/po-header/po-header.component.html @@ -59,7 +59,7 @@ p-menu-id="po-header-nav-bar" >
    - +
    diff --git a/projects/ui/src/lib/components/po-helper/po-helper.component.html b/projects/ui/src/lib/components/po-helper/po-helper.component.html index 9d911c334a..0a1ac2f24b 100644 --- a/projects/ui/src/lib/components/po-helper/po-helper.component.html +++ b/projects/ui/src/lib/components/po-helper/po-helper.component.html @@ -32,7 +32,7 @@ #popover [p-position]="popoverPosition" [p-target]="target" - [p-title]="$safeNavigationMigration(helper()?.title)" + [p-title]="helper()?.title" [p-append-in-body]="appendBox()" [p-offset]="8" p-custom-classes="po-helper-popover" @@ -58,7 +58,7 @@ (keydown.enter)="$event.stopPropagation()" (keydown.space)="$event.stopPropagation()" (p-action)="helper()?.footerAction?.action()" - [p-label]="$safeNavigationMigration(helper()?.footerAction?.label)" + [p-label]="helper()?.footerAction?.label" > } diff --git a/projects/ui/src/lib/components/po-listbox/po-item-list/po-item-list.component.html b/projects/ui/src/lib/components/po-listbox/po-item-list/po-item-list.component.html index 8e3ca9d807..3c51513bec 100644 --- a/projects/ui/src/lib/components/po-listbox/po-item-list/po-item-list.component.html +++ b/projects/ui/src/lib/components/po-listbox/po-item-list/po-item-list.component.html @@ -63,7 +63,7 @@ } @@ -91,7 +91,7 @@ {{ label }} } diff --git a/projects/ui/src/lib/components/po-loading/po-loading-overlay/samples/sample-po-loading-overlay-labs/sample-po-loading-overlay-labs.component.html b/projects/ui/src/lib/components/po-loading/po-loading-overlay/samples/sample-po-loading-overlay-labs/sample-po-loading-overlay-labs.component.html index aeda7d52e9..e6e945708e 100644 --- a/projects/ui/src/lib/components/po-loading/po-loading-overlay/samples/sample-po-loading-overlay-labs/sample-po-loading-overlay-labs.component.html +++ b/projects/ui/src/lib/components/po-loading/po-loading-overlay/samples/sample-po-loading-overlay-labs/sample-po-loading-overlay-labs.component.html @@ -1,9 +1,5 @@
    - +
    diff --git a/projects/ui/src/lib/components/po-menu/po-menu.component.html b/projects/ui/src/lib/components/po-menu/po-menu.component.html index 81f8180afb..8a782a12b5 100644 --- a/projects/ui/src/lib/components/po-menu/po-menu.component.html +++ b/projects/ui/src/lib/components/po-menu/po-menu.component.html @@ -105,8 +105,8 @@ } diff --git a/projects/ui/src/lib/components/po-table/po-table-subtitle-circle/po-table-subtitle-circle.component.html b/projects/ui/src/lib/components/po-table/po-table-subtitle-circle/po-table-subtitle-circle.component.html index 2c0349e0e7..caaf83f5d7 100644 --- a/projects/ui/src/lib/components/po-table/po-table-subtitle-circle/po-table-subtitle-circle.component.html +++ b/projects/ui/src/lib/components/po-table/po-table-subtitle-circle/po-table-subtitle-circle.component.html @@ -1,6 +1,3 @@ - + {{ subtitle?.content }} diff --git a/projects/ui/src/lib/components/po-table/samples/sample-po-table-airfare/sample-po-table-airfare.component.html b/projects/ui/src/lib/components/po-table/samples/sample-po-table-airfare/sample-po-table-airfare.component.html index 154ef6d75c..a0367dab81 100644 --- a/projects/ui/src/lib/components/po-table/samples/sample-po-table-airfare/sample-po-table-airfare.component.html +++ b/projects/ui/src/lib/components/po-table/samples/sample-po-table-airfare/sample-po-table-airfare.component.html @@ -51,9 +51,9 @@
    - + - + - + From 049bc7f66738475e072c1d1b504fc555125d5adb Mon Sep 17 00:00:00 2001 From: Luiz Gustavo da Silva Vasconcellos Date: Fri, 9 Oct 2026 13:53:59 -0300 Subject: [PATCH 6/8] build: release 22.0.0-next.0 --- CHANGELOG.md | 35 ++++++++++++++++++++++++++++++++++ package.json | 4 ++-- po-ui-style-22.0.0-next.0.tgz | Bin 1244930 -> 0 bytes 3 files changed, 37 insertions(+), 2 deletions(-) delete mode 100644 po-ui-style-22.0.0-next.0.tgz diff --git a/CHANGELOG.md b/CHANGELOG.md index e00cb74112..5f54850f56 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,41 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [22.0.0-next.0](https://github.com/po-ui/po-angular/compare/v21.33.0...v22.0.0-next.0) (2026-10-09) + + +### ⚠ BREAKING CHANGES + +* **schematics:** removidos os schematics de ng generate de páginas + +Os comandos "ng generate @po-ui/ng-templates:po-page-*" e +"ng generate @po-ui/ng-components:po-page-*" para geração de páginas +deixam de existir. A alternativa recomendada passa a ser o uso do +MCP do PO UI para geração de páginas e componentes, conforme a +documentação em https://po-ui.io/documentation/ia-tools-mcp. + +* **gauge:** removido componente po-gauge + +O componente po-gauge foi removido por completo da biblioteca. +Utilize o po-chart com type=gauge como alternativa. A migração pode +ser aplicada automaticamente via ng update do PO UI para a v22. + +Antes: + + +Depois: + + +### Features + +* **angular:** atualiza projeto para o Angular 22 ([cd1917c](https://github.com/po-ui/po-angular/commit/cd1917c47c9d42a3f38cee3da891282d52746c2e)) +* **gauge:** remove componente po-gauge depreciado ([8166802](https://github.com/po-ui/po-angular/commit/8166802a6571f7631d5aa3e7ad5b96a41a2c7fba)) +* **schematics:** remove ng generate de páginas e templates ([2900b06](https://github.com/po-ui/po-angular/commit/2900b06370dcd9485f0b53ae05d460383b00b563)) + ### [21.35.0](https://github.com/po-ui/po-angular/compare/v21.34.1...v21.35.0) (2026-10-27) Compatibilidade com @totvs/thf-components@21.35.0 diff --git a/package.json b/package.json index e9c1dd6e51..dc2f28e207 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "po-ui-sources", - "version": "22.0.0", + "version": "22.0.0-next.0", "description": "PO UI", "homepage": "https://po-ui.io", "license": "MIT", @@ -77,7 +77,7 @@ "@angular/router": "~22.0.1", "@capacitor/core": "5.7.2", "@capacitor/network": "^5.0.7", - "@po-ui/style": "file:po-ui-style-22.0.0-next.0.tgz", + "@po-ui/style": "22.0.0-next.0", "custom-idle-queue": "4.0.0", "driver.js": "~1.4.0", "echarts": "^6.1.0", diff --git a/po-ui-style-22.0.0-next.0.tgz b/po-ui-style-22.0.0-next.0.tgz deleted file mode 100644 index 6abcf58a29add5de8eab3cb513ecd359418dd5cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1244930 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℞0dNG(;o=7)iEEKkXJfQG>Q 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�paA_ixR#C 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
    6?tcP(*YU}!qpGU5lvEP-4_68 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%0D0`r4fhhayfqF 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 z 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%0D>un6IntF^01UX_Z9sRe?$#5C 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ΜEJqVX(|XKHFedc=?SP{Y{O`3jvr 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%0A7MeTFIf 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

    !*3F6{jQu-0!OU%S7@xl&&xd>!A;4`{Vo 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

    M$-)Y|&-*3J@e9gYIe&{Ft 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Ι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

    Cl^VYG8btzafVx zpt7v`tiC$<>Pn68H9zN%sgN8VS)HD$Kr|Z`e%IZ9&4Dz$x^Qz9cBzUG4V&>$A&z=l4Rns4!`a)njo9J_w4m@%ue}y|Oa3mWQ|KQ!nHwyc&*|GZcrf2Bp!3Bv3E~8)z10LLzjn+(!|3 z$Rp>L?{?!xk=oi2nOB&q#v?X5t>GfQrPK%UT0YLv2S{_{@{5v+(dgwW5Z9TA9{n@E zv^Tgq4^R0?vvVxX%{Ht4VGj!Rk zD0x_08rSFdt8iO9jm$U6YIe{0)kV-*VI&X)u&64)(T%Q!rLcWKZcCtld;`@;zmGgg zew6&IqdaER%eFUFwqdsU&0NQ9{TK%N#(tC#%bVvE14bAu@@ymHS)i_-RISE6CpWxI z(A^;o-c3y?-GbR!qJ@{1=BtO&DJ}du<#=Pq$#`^QEe3jKWMqH2JPB){2M5A)t5JCA z6^j*QqkF9-*hV_TRu5wpnaT(~Nu(EyorG@&OsQN_F+(~!A zttU?Y=)V2is9K~VudE*W=`*J<2x1dzcUF}A= z^qRFhs%VoEDS-MyKom8m$Jmu;rl)V7m>gG2W7~h|0I+JZZdj{S*4L|ZT38=i$*b)f zv8r)6lNt5O@^R?0Y>>S{+G>hJsNcnMov>0Gt-SHK089b3gaaQ2bS4 z?N@>szi{vohvV;m&>YVi^%zc*v*do959=8ZFO|h+rPdHG=GEn}pLn~#s8N(NaTg_6 z+$ff7nN-!U#Vl6xXxy290iI)Wsa|KLjmsC#MtgD61KN?^K-o*q!juMSyANQ07+Qq+Cl#B**V-}ul&R( zUTJ>Z0<-<>>5}Anc1Nr`V^o@5n(l7!z9nvh-FBFMmps0{+i& zj_wCmKl`)>+6nW!F5h|wtw$h5hm&RwoF&s0FHPGefkwV}h#2vj=v^bLVtcJPH8^nd zw(Wbt;sMGQnW3_+0vkVX<^QQ&oyUx@PIeUsZ0`yL*5 z)DWSw(Q#w)eRf=@K#CL%P$3IsiR>T*dS$mTAzbTK42N>9Zp1U?e9FkAjC#CY%QVXM zn)oP{%F->-EL@?PwsrUNk1;yI<|hbUMN^j%uXmG zKwHhHpqnZvZ2=;oQrm2{5gH?0gamcN&A+4Gw`AU=p{EWXll^im>t8UB!^Z&P=Ku0) zYwch$7l&V&YgW22wjBLqJ^wao8(q#ty1ucfvA*X#zOb4Cfr)YA>PY)BhN~bvWpc{4 z^Ly}>6(P`g_a$6Ot(pS|Pd`LPNP!$7YgEA@4<07}?KUQ&D%Vm*4deROLvCy?D5}=n z)HKCf%J74e5qH_{V%vP1`8HnWE~Nc~(J#|M`sq*I^yOyL+|6pv_uh00@AvC?=*!VT z{~lT@|69!_d;?vDs%^QeP9E5AhN}53ND#XrLx5=1}^{DH(!8u zv)MMPesdUpLcMhtoHcXs7iV{!R?Q2UMt@`x)N83>FzVQ?#d6<-dl_d zHP4z`N8fv)L<1`84A#e>e)zB;I*^)Km1s5up>0Lf)nZ03o1)s7n5r1cg1b!c+X4=(plSj&MSJeMVIa(~A5AGM$^< z!NHN;bJ5{2JckA8Si>TR)nqObgvT(43eQl5nk!Tglv1MO79~f2YWJG;efZVFg`-c+ z?%{n!ZI;(lofOtKHm|QMC}HEkdIkP0Y_bK6Q(PG*Y-A(TPYa=zvC+&N1Hg$-G(?blY@ZSSrZ@)4(Gr@cvkuCrNIuC?_^UVfE2X6uR$e%zfx@PtNr z{(y^eP)3;-q3$g*n1m?)f})m&Qo1U|C^}2>D~bAO{ct4oCalGNgjr_4`m2;dSrk9@ zDNbDUtG~+PtKx5c3avEiaLNJcuYAeiP-!3mTx~QES2MZ8^>jJ*tQHm?!&ATZH5^lN zK>Fi9<{U#``x-aK=pHpJx!a{m?(*R3w``XmyiKZGHA-anWZxFSQ@3gn*s4j26{|g9 z;03pbgJ~P3yxh0hj6_BcY|$R9;T?m5Qlj&^EOR>RqpiZN@u9%{q}0)-v_R z=l{KH=)gA_X@E#J*n3tB-WIwvIEy6-3~JNm03N;Bc7-AJw%G*Y-a%aP1>~yVYhlt2 z-aWQ-Hk*yNgIgF0t#UWEy9yaFgUj}UuO(L8^5L~nfQNw2lM~`W);h$ zc@18tW+v`{kv1R~y%uh+ex98~IfphrAxC}j%-eDMJFEUclY@+)TQju|eulW~@d^}m zNLL%b%M-Fv7#vtFHh7%jU(A28gv)fc3v{|Fe~$hQnBU_wG23mfTPvqEHr8nj>o)R3 zO6<56xNi8WC_f%5AD6rV(pF8yV$p!^?)`Ib{TB zS+>yJb|95rov$uqcsi9nuna5r&(JtzNFFi9j!hx?*VM5wW7Km0W*%5EJ6i>bg>&&l zA^{X!2SOwoi-17E%;HZCWCUu-0%)lerbZ~nIW+(i#m85d=I2+_DZG>UrPasBAbGeh zGkt)uT&{#YU&`giWF{0)Kb-vQtwQ4;Dcw9fdrMhB*qx|~`f9m+sDO0Wm{0l$?6_1D z(ZUrKaq5nG{mxm5QZWVn)dzQgH;0WiR%gg#4DrDmf4|r`x+d%6roK5F&uYiIFpH?Ri z(L7Mz9?`0^?r`!3Czw;s+rfP*wB~rJ4wG;A24w$jm)7#z2Y?p~ z#L8)QJd(f<#-n;M>x-%I9myyAqEdWYp?-L>02H9Ah_&WJ$EFSseThmv5mo(?67#XX z_>STi1%H6uKY|d~F1h1c$EnuSIr1{{IE~(0dRG?dyqIL|mde*RtGoBf-Sx)wMa{rS zND9?aJaGQHhmBe6v=Q~x7URKSTx^3DZawc_=NRyXuX!}0C(?zabIZrfTTl$;OK6ef zKP$V{ZBa;`K#)erBoq?gYI;alyzk)q=1=R*W)s@%LbH21R)UVT7hPj#spfQxJU|tV z_zaSFvD?+V~tUWXK>>g{puXyYs9@`KsY#a#S!Qc>_uqk0T5DZR? z!;;7(Kpa9Ifv|-~qWq6Pe}I?wlaPcEtn%aBTdTUqX32YoX;s}?RCQJN*1hL^OK2_e za9KOP{BS}LS>uN`>vewm0&cNy(?nt_uA#m@#pPO`h1$ByrS$a;xhm=V1DQY|9eA@K zh6Aw&cww&KiMnAll=fbdoO6Zp8vw$AKqlbnKUCXJ58Yl9Jd#x;M)C+Y4-1UE--g<{ zu$g(cnVnawW};QJ8qku9x)N8#zN{xFt-^WcGD_UP$PO=ZdT3ZBf^_kmG+G-V5_^0` z4rT@hGC_G}+`5cAZ7yZYJ{fV-m*4tAXN6m2-z>{`e%dq$R`>ek->lc$^*TBlB)r~0 z!0S!upLogEb^N5n+RcSq9jxULt#jfVxLc^Az>6tVWnV-=$`CfHS{TGuwmh9@qYWLU zfO48)dc!BDP5X4UZZ0>>MM8fnCOe_(MtaR;Rz*vp2F`^^Ym+=weY4(E*J{Mf^g!CW z0X1Wrn(xmn^-<#t?dBoa%%ltGqvm+jkh7rbMz6yMzH zj#U9)LQali)zq0>#G%l^N zMmp5=p=DS|G#eH^iHTK7aYe4mt#JpPvCiaV)|}lMsH9TKBvPUKFFX=3|X~uBo^H}U7j1;mxiHz zV{_%{z0uf_9iaXoHB9`O5QVS}rvd|h;>01D(>oBjFf`%z4g?ZYQHTz?-yfMu;AZ#4 zAh?I3)v;`LE)>FJ3wwuPXuS~11PKX+=Cau_wN)8~(9TIHD3PfIn}Na)@I*>sYG-Jy z!lt97E;t2tee7BVr=TsQI?BI5CkQ% zGy;O)@j$FHKyGq-1R=W=8LUPj8Vt;iWbvR_1mu_?jE!Vx13|SkdpcD)+y{bFs5M61 z9(FNb^0-GDHNhz)Hl|7H^enq-Ys@dpjWTqJnSRy9o3*Td)c}lSAj5ynl?rwLL>_Xg zU7pYNlWp>l6L_8%MfLODKLMU><9S~&8ia1!;ggctXb?ypi69|o_w7^=!EBSrh&#&N zOff)tee$4`1xjIx@qXZ;O}*SdkKwBD3-}oyh=qm z98$!g0U-6Bs-kyQn+n*gP(wIoGh0r^VsYlzl+Q7;B6fy)=eW6`n&G)7#v(D`6Ott2 zbowEiyvZ4GRO%H+zv+_8W9cTI zBU}fy4v?5NvAA^q^0p!o@pT~Zi3Iv$;oodh6N&6Jj4{;uEKJSL-chY~|H;@-;1dla zu7|P24432f(wHxMU)fDFs4EMS)9{T(rwOukfIuI&Y9^{tu*w*ei^Z!oNqZ8p|D&Nu z4&`IsIy4fN>*M3)(iLe4`vNE}vnyU7*>hd8?>&MD4dx*g3cTee$+OB&vr4FD${C0nFna-N(xHf&V}~bPRrzFqH#P zKVgI)u6TIx3wWT2@)s`=4y8*;w$E1{GVzK58|@3~ST^>xM#{L1&gufC4m zL7NhUfBMg+`?ZJLNBL#OJF40F7lRO?@$%mTo4*;ZXC{f32#g-&4I4{@0z=_mKB^1E%zDuHWGi z)lRri_dC@;<1(fh9B$dEeiA4F3;)@9B8RyX+{4_bIWB7fiN%esCtfiVuvRh?3;alN z9iB4}3qV6f!@6AFJkVj3q?!1z7^Z=gtZiwYpqJ-04=N+~KzTx&vVevILp92u=r%Pj z$Z8}WiyfSq*#;~ON8T)JTe|P}`Cu=Bvnztc?~P3KX&S8Q)Jz|_Qhga(zz!cCXVR`i zDa}=jk0zL4s!|^y%y||>p3D^-ZU+#N_`?COGwfP9D+qiDQxSKQw#ETjSB^|9*J{U- zNyiHQR57g_9v_@fki(9EbLA`?b~-gd*5(TD_rO);R-Oh;BQd7;S~*)_VOEzgv~QGM zb2tcuIGyT`q=2(92fAwnA!k>7{a%)Z6nN0)Y@|eaayn*FV-OG%(%&{v_H=wkni{W; z0~>=bYU3jit~ZWO>YF0@b}yMT6i0w=!}+QXEww~yH?!9zT`gH(2w5nKCNipQMXM@e zEu>iyDxq4Obu6HS;`}3zxTG)j`l^0Oay{a7>H>he6rfXrZm`jSMq#eeZa3x%&}cN^ zWycS?0>Z@ucFWfT7lnZ9;Bmq4VlB@i+0D89!sNXAV`Rv-;Nh3NM7_`|%stP6G;hTu zu5(vVPUi*gA~I0)dho*lm@E{D5~wX3qc2z)Gr7FPTxxJ*#$1#tAzebts2(v?3Gwu1 zQX>?*&>BesTh%cUIyzz`nW4iP)HbMN%C`=6qmsBf`I{SX&l}w3p%0w79T#su^MRqV z+bHdJOl^54K0j1;FBoB~hEHy*t+B|zO1Mn-{CGIhUQCQJB z5eoXzQF)qW)d1_-*a&rVbyc>mK;1;7M(OBrG%o>tC%yj6CpMJPDpJwU#5Y|*Cq$#$ zbGhNM?bOy|Y&e(O9*s&t7jl#ssM}B)({bK&1vNQPmF4Qd(p{eJpL*`xrhb+_ZzNrq zt0Rl4PU`i!0;KCqn2qNh+l!^WsZ=agVcNNsR4kR+TPkjM@cdk%V|+!=pAPmMay}Nz z%Z2N&xZ?VP`c5V&KUZi_b%zGNOB#haCNXcByCu0nBbs6Jq^@S!%T5f5{1>`uo)LY0 zGWh~}Om(Z|YO)L*_Es#U_<3;Ul&f~QB zJnZ|&A3ykGJ|sEat^)|v5P$o(DR$KDI-q`0%jA+a?+`>6uO7Nj^f(+I@xC^sS${|K zFALnY+*`Om=D4iQ6VsSQP5~n<**V9Ws-li)?@9Q^;)=t%f4riJBS6u_!wlyPK%4;w zsOWf@TGhA!ruCL*DH^3B85I|wHX$_eN}SwLNT;WKUaxOzD4i#g+b!izlwf1m?wbb( z2M2H7y=wzXCkk}KM^+XVk1?~Lh1K{}jEtmG1vE0t52O@`OvQmr>I!WyD&_X(%WJn~ znY!D%B7=kLIFocpa1~RgdlC7%>Xwpq6I9O5_P!hEN{mG#_W+a(2LLud-VRn0u2QYV?cQ4q z0<#%ED&=c&of-Sg*U%{7NnhOc=YOQrVv|q)_2Y0za}s!;7SByQIU-WXwD3`k3OxK| z<4J?c`qy7$MgnfvvtQPV+)w`XC-EF^x9h!HfVlt35lS%=#gDRB#U<)8;IR2>qwdg6 z+-*PKy#vnN;tDz-yhsiF0=4n-KVAL&UthS;Uj5AW&6Tn`q*cn$>d#d@utQWn}B}k6BYmr#CP0X)zImN9U#f zP^e#;e>6JacAXyvk6Q}5rGNwOzu)0^x`LA11Hqk9~?0n1A@HR`^v7H#LHVe?#GUqVP>tNZucag6GwNa5(U44;hSk zqY|9G#5;I@OcEV}uzx>7@uZlacL;FltTXBrox)26pF{-m>wA%?zxUUPKqQ}V+5;X5 z9(cg%0newtr#&Ly71`(KMGs16e@!d?Dqe}e%KkL=sozsmpR>R_9OEhIHZsNj z2z=oRUMObz^6r~%a_9OoMS+Jaz7XvP*z+By2hQL;3tSTLgcktdRifYJ@{6wmBA|qu z!;PCygU9(DL3Bx^CAma_PwT%xU7r%&pB%yOaKTCS87btVU;N~gkwh`$3P`a1q&wFq zxFoiMU;qh?%p) zKIWx#{wEo8^nA{kbz>DqdJzSZVctpy)l7;{hZ35wk!7e(0iyl3wvdgN`L-O6?HnJ= zj;y4IhWeAqS}K)FEhQ2I;P?CT{Zpq4%nOmk6aDjAfu7!uztZ|bS z?q=>b?h)=;%0JgVX$^(YN_i0IXbo!)7s|6%-Z+)Cjxtefbl9_-ft9P7P*3)si6!SN zMylfSVl;UGTR^10lW!7bE|w+=Q)_5dHrg|VYV^6z)kF>iv!T#XfH2KX;+ygDB0z8? zwcA1DfO5*=VH^B2K0yEwq_}rruSDon5q(Nq3}XOI$s=|Iv2)=)^1>1jUX_J;vB z*nocn!0Y-qIvm>K z;URaQhp-SO@PeB-1)e8@lXvB3;G+#~e%{uB{mCq&sHQKdufuPD{p(#m8qDwD+@!;< z^A%LZKy)AjQxrAlb#Qr*uNe)A9%undi6 zP5U&YiJzjE6d$kV#i|tLTQ&o@rp*AZVKac^tZU?ahj)sCQ|Mr~VqI3xw_2@ss|C## z&)GcTT9@~Pg)e7iQKS`AQAE4qaCQnuPt_Dy>I+e@9F$tiI>uu4ZW zt>+jOfpQ9-Yx8xrp|J`~Y!hwDLu(9qxyFQtM@L!T(ES~@yYaRq9VTBO+BIe)Lh={fT6hsbub})~oy4$!t5D)M6lvzp!6tFBtl@17OM6Y0pWI zktRbtP?XBBZlBJWZDqv2DA&zfO}gf%eKHaZ{qLsUMu&uJMbLdV)$KH7e#rSK5 zBHO>gHWv%ELw8PQB?`{vrYNq96zsAkaf~;SoMEFt1X08*h#bwtna)#2p#e1}gwSyL1%Jv9y9A}r6LDR0 zjVt2mQ-odqq?ZVO7aAgwHvUy(*EpjdPt;ONt z1dYch8pYvBlnio8v0ND7rr0185FCuDkA<=kUUD**rIoY59g!qSI-+(ua|Na9fIVkY zse`lCcs2lWXX?xzsj8s!lC^#qmwJgiptTZ1Hn#`JsrA~Jc^idlM(o8LZIa66JI~Pv zoSFgfOcQ{nwOSbW#EdO8R1546EX#z+-quYcNG35`Z*SJSwcHES_BhL3W9WMZdOl5! z4}*bYFVF`ZMX2?TKoA=t=WB7?L_rTfYOx90um8IJvxU2T#;*c*2hHYpP;jZ2&Py|GxWWRhXZx-B2n` z@Pf}bnoOn1J0~lZJC+ug1qTmqcP^P!$WnFYaDTrO?jMN9huv;6z9R;)RB9!c8@)VX zL;W9~kT7{=UQAuL^3cFsKRGMRO|i9=XkT)JbXGDW0h|HjPB5>dZ6UM$`)J3B{a?p+l#snn>?Czv?F z7S%pG#$CtVMVYIPEz}=tSl71Mj{WzoF~k{_l?Us%%}7?&Y&3!R3#{=iNm0(PtsTKS z%A^MdZrrtN180mrIpp2BxOhB~NTsgcQD5JsNxX!8%z&k1c#gF6G@YS})i9(a-@dVH z_l*MsDAT_G*paoh^NJ$LK3^CdgM(+cZQHe8-*I&+MKg-4#2Z3QCjefPz@|ONW|hcC z3`&7TdlknE1#XU8qjkHrszfaluTY$h7Q4qW1mDBt)w&Z+oj)I!YEDm&^KNMCbAG#0MYmnAUvNm0 z;{xGujG%`I>i%>%oDP8YQP+>ITXUOMpO!MWjCu4;au(V=4KAb8S~1uwiVOHps<&QA zryT)d*Dj{_POemM#Udn;@TB{W_q}ibH$=bFk{jgaE3SA zbH-9{l@l)AwfGZTmn|C9BV3-F<2YG=!PqbeHl}F2402`@JN;jHNpJ^*Rj98D0ZMmz zo)ZFYcR+Za1LAgq{{i(m%sX`JI_(>H+;Hg$cb+p-_0;*{g23 z<*Kuj3_t@j*QXv$!|Lk3eXFZC zWYSVy%I5Alc<>}?%06}mb~c}^{v$nZ5>GMt!Bkd!DW3P=(wRH`QE>pRY-lF8KB zdVMb($38u6^Hto*y#i5z)~DW>>DmqTc-=$a)F8;2Ezqq@$~7B?%L&d_?-PY zfd{cKesHF;q+C^1R#G%9qCTCR>AOKUb4>U5XFW7fh+nk0@Sc+=x4l~1_)thbzfsuT zZ)yfKXncX{Um2k_>uuYbfHeooA6MHt)mV4rsIx&&x21g@p}>ClfZEns$GT+*T%!7F zE!{YzVe*ho4Xo1~m)&G_G6bkzxS8i+^+KuYK?@`2u7@qGR!jU_detd9oy+M~h{BJs zrhg=e`X0~PMK%7R)A@(3E}7gBYy33TVM6(zJ^k3bo%ld; zd#pXWHD$DEfzC#Cog%3sZC(gvpk}#8O9jMD>WU@$%Os<)0~O$|yELU``vQguk8HUG z7mkp&I=WZC`E|X{HkVNAJM>3{`FT{pHUDB%E1B*7#;CoRz$lqeKmG!z+-rRXL>ou@ zYVHB<-M=J5n`eo%>I)F&YbN{ta=S<`y35bc*nYV$5by~Bmp@F1%j0oV{b5%?=nM>{ z2Y^P~2_%xKgudZ?G#-zE7QGM2a#-K+3z=~Kx4!wo!TAJGRVXJP9*xDu!l?J;54)u1 z%)Kis_s#N>i@ug8Z=IjNwMclU;FDd>dhTSYbSh7@BZu}D3VSoS(I0j>?U>_vZX35o zBR5-!I!1N8&}K3Gd{hZ(LXQwqLZHtdLW-EFX85KouNJ3jJe8xHD;9UkvN>L@x5pKw z;`cw#HJ|7F{%J)SBW=>|ay$o(`ttnzS!E;wG2As485ub{Kfhe3ra1IZy$;vQgM<4g zCd+_=8f~>%o}Ab}I4G-cZ8hxpx+SXiyl$#?ialdGhPtbkc?~OUi%07KI*^qR{x5`K z4gL`t@#WRL`j0e{hMqkq;kWB7(qB(zol^Hl2fkXbLxX=A=E0uRg(;i7Kp_7uHOj(r zbnusU`33c}&vS?@0#2n&BHqU9DqMaf%5Tz_w(+;n7`myu*&>L~PTK0$NmFfG25&3| z`Uv0VCb<%~hkGseIQIpPlj&Dxdi-;AxT0Muvx3$U1_iWiH{AH;Gee?=>^Cy3J$mhV zW0s_8vFB|dUZso!+J-iJWZ4h3i5)YvFI<42>^sk@W5XwR|Lzyf{y@sDd69+FewWsX zUc{76e~u@DRv@7el2#(^PL2>DwKj zY??hYiP`)1V?=cSecEpzN%!4{;bU`-tGCak7ipg_=0me(n{67oDSc_{wrkskF4^WH zHSUCgOB~QA5ZXtoM-`{G2{uSy1jB}Zr#?r)cQ~b*@E_L()%n8cMm{$(rVLL9gN{_h z9hO4bk(aFPIcAKbML~U5_Kl5=9x3GWV`~`*9owPgatHJI5uf}+5@%!W-w`|>CDAuH zGCF#)SS$k%k(5&kXVR<5e({~g=pD6#{{4ba79Fu*FxFQcggp<{2IKJzrnE2o(5??; z@)j~WQ_7xX+{C^xz^grP1B1XGS3=cFG=y59?e4!G7lN*)j(=vhW;D}Rho<>bV6*!4 z{`%`%trlti9=@8HeYM3>SZ$ea2B5^7W>aO_qUP8utzk{>;ND2%urHv?Vc5-wsJ}>F zGA0)KBbn!|iblHTU|BXjC(47m))ebiMQdbxtJrusUyDnm(Tjzrt@psrxGUtTz8T^B zKKbRZ=7Vm*!8<)b{y_-1vC9fda=#}&yBiy+JIFT(c%0{XiMKBA-c#LUB3BG(y;|1{ zc6LasBff;^<+liaCvD4LI-!06zl0CEd5I?>mz#j-afC)fBU7?3?QwS4HaGqd}Fut1%|C z)y;Q&@~tQMpquXW!437Fs6v}pgxFpB3*L-zO;ZKKJ6Z3}xN@|u>k_UywTe=*H7hy& zl`mz$t|NyzEyf}qBBC|36LGL?rj23#_6x;D*>~tpDwCsr!Q*qg;PZml0i|SC4i2c_ zR#z);6PTOpn_KeThv48cxvTrux8gm}KP}n!E&TkJPloJ5-|4x#ee#`$d@?V5&y@)H z<1Td``}_U!pz|U4bm48Q%< zy}@iTwo1t4_tT#@WcKqAtyD#PDO5rV`eb_DC8EQ@9Yo|kL7oiCzUP{n7i8 zwy2bx+G(j&U!>D&ksRBb`q|Pa{-p#@r=HUKk!CVWUleL5o5T?Y*XeXnmjasBXF0{q zq5EZa>(sRpVjzu8our}8!fQ{8l`R~7ahYDWj_w3z0vmfxQg4_YC|zvss}7XI;qrhy z?5EL6)|s*af&SUB%2T2}Ch6!)`WCfS-4~BU;%=AA%@WwMuSJC->`R=-XdnByQ``;Q zo!qZ-ujAg%eUSS@?(^JNDYrtgi&AM_Cjv|*W2hN5fQ*dgtKs=-`XVFHE41Y(5=8`- zvw0l+#?ep^Y2Gyj9fhKjRHLrUdHO!K^)r|;t4Meys6Mm=`LaD>Alq?=wl(`Uegja( z=RTJQWs~3&!O8xqm15R8Jhn15SPsB5umdHLeQ=u;bfUIWN2q^7@JMi*6mWw2dZ#zy zdi=f4um?`L!!Eeb;p9K@_wTQ}0uFda5WuOYWRBzRlfMT9-l^wN>PEW8$l!GJ1yUD; z$NcGVamS7#@8A!}v6ZR(k_-OOJD;6eN%hT6)pr!5IsXRe5ctQOVK=zG`M@7bLD#H1;vzNu>n}Qe;vZe_@JYOb_v+uP*7eQj4L+EW z0kX883|FRJgZ8l><7`sYn%+=k=ACNv3DV_cd^fMNF|jrxCLOho>3U`$r?v`nB#rBh zxk9(YtO6TbH4(iTRrm4rvn#5muRm8vpIw3U%2_lT1Zq~usNYQbqh|?QkleSgYMEOP zav5%(j(#=3QPh&qu}lj14Cu@lR!e5GM+^acn3woST6&)23G46%Vm_P-!%v>)oI{cR z94qCC`dQ%kt05MG?kgQ$iH(HgirC#jn%&WRsC0C(s*vo=aw-{yft1 zpQm>N?B>)q=()s(HlLW}wozx|`!1v9LeWQ?q-CaK(UASQiB`A7-DP{<$YRyj?`sE< z^d`4LXk?QOn=+Cij6{3xWEQ7VI-N?bXOku+5QUe_6RIspck1lvWCP~3g@t7vl}#E< zyJo}E-|Mkxf@9$T#-i;RIFdHfY>nsIrrw;*_W(Tr&T*Hxk8}S^j}HYvvE*B#7Dh$I zl4jApAJ8m9HUjjDfiBfTj~Z7)8}~(-I~)!fs#YaX{iHT^P#k?}$5m`viw3{Lu$!Q{ z15HiQjGE}Tpp})Z<9mG6iRLtO_j~Ww;}aLPVUoQFr)|yVE%K@P^&59ofb!S8uFTlV z)X0Jdc%~E#$8KDoKP6M!`ylUK7@1lbOM}Z3_7jn>tf}Ut?lYLtp zZRKPRaZB7S+^ZV5t{6!=Z$#^^jZQ0>(iN}+PL?XO4)n$fs_}P?w zR<{>43TGEHR;gUrzI`PzGLl%^x%2K~aR~i!R+hKlRhb?eDVHzoSW#a!K2y1CdE1U1 z+m`RD%#3r$=+?$>L8`iN1$RC70QY|GL);VG?{iOcpTcSMCL5}n&GAZ)7H0K8w;ltC z>%uKP0{N8eAGbkah8LB1c5TLCIvCKgw&f9QY2?~DE*s$ROsf6XgC61_y;HhU>bjGp-q@bs3i8#KS^ z3iHyY=%s#0KPb&aXLbElpR8`sOomf{G=)-k1Sb*+A&6QOjYhrRY0%iX%V=L2s+cs% zmANW6&nmiiA?WJ1T|uFR zt|>fqP3eB5bWaK9O81oNrF%+i+P{r^O80cHXf~hcpiVgWOQ<{DZVA*jF9{tgN{6Yt z5MKE6T!a4CYN+49Y1}v3ZQY-yP4(mEXs+TgcMW%edlmO)?!A_~u}Yq6B0mW3Hh6>9 zOa@eXz@vIHsy;>pO{fmZu-~ZH)po1VfMzeya}%w66B5)KFZ6NC z+|4*MwyQ%_w0vd8md#uQtt&QaMAF4v#SG#bjbM){JcJN1-3Kc}C)HU?K7-#d&}M%~Weq z#i({B{+|t1qNPZgZ?U)8&CY>vJv`uCXSr2>I7H=3Y3LDG<_hcD9yc?K(C4{Mo8?^V z^_8=bu9LK}vz8mS9?2s;) zX|h~}+d=iRFVE_*MNld)uomBPW>(E?PUdtwdV79i(?Wv*)uGMiSWRed&hi*G>AnBX zTP<4DPREM9EOHCnqo%?&@B!M$T7!JkbEX86@-SXAkZ2srmzXuM?q4yl(PS5m-0*Hdk9rp7QAM6v|fkdCk z6H(BF=V{Taf2O^lO|cxhg<#=POkld`Gj&7KYc_ug#DAOcj~};{9Q_OAtYzMgO8@aBl7X3C#;#seT2A*pgQ~(QXs|rEehI zQ}|#$CHcc)KZ{0v>1X`~-V#nZsXItO;GF`vN@J7z2e&Fyx6u*2L%5s%^srZ3?f!YQ z*=)8AZ8o}98=q7BZ;qSh7PuYU0UAqx9ruJ)$!RNcfdN30kvXDGV?{&*GpSn)m!s6J zqRoMMw3pP$AmTFAG;FX0KTFy@ySZrdVL+1!I~Nv?_a&^@EX}S~y3cUU&SKWQwdw83}6zPw@6_h&M9 z?z5xxbT#Yp$vkA{`uY5cqN9Id2tK!X;}jpuhbM2E6T+i$xHxy+6dxS&laZqnycqC+ zlHHZ&qq!hS4#F*i#o~SIdyhKgv=6S_yME93L<0H>;eYBc$4Pv&aL3MF2SlfbUzwk~ zYIs-%xKZj$?4O>VCvs|FePVK&Z=`a$QvM`AwDr4CNB53 z;6#dqG9l>8dLW(;!fRdWI00ReyBi;K2tfm0=Rf#bB^p zdd0r|SBl=j@b%zy!jZK-7bhnBNwk=NzFhX2g@qLX78Yk_4kuIYYH{k&&`=aKya{Ty zUZ7)Kjr*0eAl%E#w68XZlC~{OQA}5tX7UO%Hs1xSA-#UEABYvS$zeqqp1jmJ_0n{1Vq)yEP%)XA-Mb-=gh)INf93Q!PVIJu z^HUmcf1uCn8c*|lRPI~JFK?uik+pds5Z_)H7|txn^33e`%MTrT`S|S2#u2Je=-{Vw zxr)!Xx;k^|#EDBYtE+RVk<*j4Q|ZUT(d=k$RTRf|#x3KI1Z5t*iq?9j$Bf$;m$Es1 zNDCdH!=N7gr${a^-e{YrWSdQ6EF-}!5bJ~;cC&uD579U+Kn z4;?K!{SLzx(QHGMdnDr*X3aRi4@@RL4pXvPI01UDspWN%289)PT-|>me)d?AZp-B* zP3tw0v~d|hfnFXy=^Z}gR&8F5V9cSGb+=2aQj+m*tr>xiT8}HC9ud`6_o zPyAcoh2Qe+kEk!Db@aL3a(KN@M$qcl1nLVYK5k6qdrQpgd?g(_q6eKctdq?pKiG6w zY7}9LJ->xqaqq;jNx>~FTw9zxHj&<;P{TEzpEx#IzinD8LM)*mz*DmeBJ9Xz=R|&L zg1Vx)gxLjA+BwRK5ZlB&wux~~;}n0UJyyEWjOD6k@uIZLV(L<}w*HN=hL}W+l{lpE z_oDUp%-ONIYbW==@oLd6`DDqlRIN6~$MXjsX$WqI+Wjrye9HKUKK4Cf-bVnjFEZ`mD=ME{OiE(9I@X@L`q>RQQ zvL_gv7En=)=WSkq3e|#P7#R&mV@X`O^xELJA@WP&yDgl+lLnPWrvygENsi@DsjR@drKK}u3NVHV4A2Vny=UV4r&Gf(1@@wbMsj( z=*08KM2|!Ain99s^?Lp4RBC$sN^MMj#l&q(x^Zgh*a&U;IU-67Ks=g|d!-smH|5-Yl9b;eD{qyw3B-Ce%#a(jbdCty< zTILS@!gp-kryf=VtzY>$Zj=DM!Phe9sBftUhI21^ccj8jufB%4PN~DWb2ZC79psL2 zTsBiP4Kea%E1}MWBpZl=SX_b4&eF({)Y)|Ofg1ZLxPBnocjuwkw;N1AqI_a_yXK$1BSJm({66)q`1!bY#}teV z|2hWY94QLxQTVVYxoXj^_b?PynrJ3qMwCg%pomtY$G~!5`eKM;- z+|Kr;L_m5DTRSaj7%+Qan_*R0xm}Hu@eJ_Sx6VQIC&GGJSk~0P^K#c@dzOR9Zq4?x z8nWg~uD6a1g9N-(RQ@pEanE!5?`ahf(aSLFWLQ1Xw+h>?%Zcb-duBZqZ8!tFmy20$ z<2bQ|XYYxbiZzqmgpSV6uwA59#`a-=|d?+`;%E@PU zX$@spc5HC)=3Tot_W#-p?9!Tvtx)~R$^x?ghX+9&9ec^L+8!PR`1;sOmRWsl`b}&? z208|$9O_}C>Fn&fwf?vIeMnnvTWg*PVXJNHF9bTC#2mM6{p{w=6&)Pb+nkuwV%_@e zrd9fYvQ(C8dw`*7OJ%iL26yva*xL9U&JQ#uwb`y;u)RxBy;Y^VpV8i1dL!Se;n$|i z`x6NVS!Muu_O3F!9JBdH%8=a(+wzTtah|90`S0VBzLtV1l-p6_#W;scNfP&&f1KPX=NO}nb=6JN35tc52hG# zd0A_JdC+IK`7Dc8l`(XYqaKfzi7fLz9vT_h7#o|I7#rId85vsHvu9=g4TnZE6EB$* zBx+QjT+RUG_6$O0_Rt&Vafj~L1G9VpGeUMP<7iKsj@Li&qxzaoI6Fgm!F8$XmD9vK-<9~vJ&l(zCeuj20FUd_FWds=f| z&f$cAS(nRk#Ntz6PSi23Gd)}LgE^{2oiUwTfEz2CbgMSc&&MjPs&#^>gO+Onoj98t z#bb<_!VW=sCat~~@Rano)Kq2i3{sV+f#90N+JeL%DvXX6l(X~cU?6m6ef>-*5KPaX zRj|~P@WH^&ys~hK1E5(q6p>7Udh&%%#)#k7v9sR_s4P|L);{{$b4wG%&sXR^z6!Hlu#va z$0^&g>{%A#Gc146mkjZ;X0XT_6RMW&=VCPLY?7HVw%c7~ht^5E-F{?~mW%rTJ4gB; z96=;ZB%By=vK*7MHauK&vJBJT8TQLas%|q!2Q<3_u8W);12JqYIR}fuaIv4NH5S9c z;s8)NZ@+tJbacq=r)0sW4VPu!=%3LAwbbMOMMZYxK@%H0R(;{z{zR0fFb9>r1EmcmW7FJVLe6=%%R$n5knE z=M-+8J4e->-bH7tW_V3kGmS=K8W)?kH0X)+_PpElR~tJ*pY|F(A}qmnK&X6)Dmj~( z@hRr)Brn4v_)V!bX&GuE>{zK}GoFlG86NlhCcFn!sI{W&-c_|Tz3^<)~ zc*n%VwAz`TnAj1P*%~R~YwEXB0|TkVayq@7FqXPshWoDpkQ{JQaEqc_xZ2^IPb{b3 zq0IP>vyyA2zM#V^!quokP1u2yn%6 z{_eHySg@zCXHexl{XTx@xsh%0a*?xol!Ez^=J!w9^QF3D-h8zUlwdaOaseOwPizx1_@Y<^)!+b0ZR~rz-R~EWDtoLda%Q6SC7i+O~_g zSKno~pc}P0v(uMx#?KT4&#oYY0RKVfXFR2Ci`urInJr^%0NT1r;qx5(22>&>wtD@) zQK$da_4Z#~PgX3}I(L9O%-v730!DtiY~iy;?dI=gdnUWAnEH)+C(C@4gvHq#nvAe&6H*|)WX$uqKfP8u`HO;Y<=bWRA@F!2bCDr>Gc%`5_>o83;+ z^)tzvnDv+8PI6ai-a{JPvE0MC&=bXAc8I{VV9hFx3%i% zH@VFuKhToX2r)RV&DqR)I?kP@K25*ObGCJP&r>HN*ZReurQT}MA1Mz1z0d=*sRrm{ z(`;Jqb%I;u_M(3WWHi2G**eg*0KI3e(tnu{BZ9J_-Kb{Iq)C~xS>v!a}w!7M71Z&NZH2rDs z@r4#*SkV3*-Q(LVN!V_G`qODNKxO`bX53Aotf4JtIC{t_X3%5BjPB6JsDC_y%hM`X zm}Bb8dXjCfpmOjY!lMpA8rnRv`KVe9(U1o$o>G{rOF>t+Lp6(;HDeFHvC8e_j&L_o z4e-n18(&1H$vR9Z+u_e*ug?kX-fNdPLD>X^v+){;r{AtX*3^C8O&o8MyOR5L?k%WkZ@%Od zcK3#MHGi35gw{K31&S$a8p*MUy&qu1b%hPrG2pb_h=|d8$M}Zsm_j`aNcv4IHYP!v zF3|kQGTht@IR<_Zc8{OmCG%FUuySiV_+ z3$LS(2)s}Bd(wqM+T+vW7lXwhg!GwoC{!HyxG`4a@y+bN%V;lJn0=e`L>AMf zqCOrpS%i@O;p5sv@c~@_fc6|dPL<}2ZO=YyD~Gy?&qWsgWsb6)@z4LZ04>QKKij-L@Uiu-?#0Mt}NV(!$w3c~m>MCZtG?vt8ImOwSbNdUk0Dq6PP&aJ#s5 z?j(&iS-=`PGD633Wc6&iiKeilJM;s}6>$>4is;1FC}qv)uV~ZsX7aReLxWVc$-4y6 z$*WC?`KiEpIM2HTmtTDDPhApdo1sZ*O-&RJbJ3j}P=~tOhL&lMsXkItAE5$ol5t?& z=?wdk3H2p*(hl;nIwBRHBVYeIUcwXBV(aoJKl#b-L;6E}b?WQbK%Lt59F?i#iOqwW z)$8rt!~eDQx&>0GXT1A=tFAZWD*q4F`exMR<$nRw^BnbMPEqFf3wTIb2%$Bm`l}^u zSl56K9J8i3qGdA1x&Ru%Db4HRG#WhL_;sV?i5u6~Z^VC3px6Wc1I^ylA;N3I2`dD z`b%!-c60l=qug=sEO#S!CwDLRDw^lXIW*;~cq}g2ob)u-jmD}e0^@^Hj%_}dhkR`a zpWsTwA&CqPLPw<(>XyaPY&@E;M3pKAE2SvHQ!y_jS1Z(Rs8+2o)jLVy9~+ySzi->N zN@*Y!@^~{B31iyajtrOzW4+L2a`*6&iJh-ss0OuyAsqnO%v6^Nr;i{Fceni)<1gL2eplb!9$w3<_&hv_GEL zF}Ehx4eL`!yxBArCC!LI=b+Q*nPMohT4KSMf zKDa(6P-#B_xZH=&(CJ7KVu{u*)fxM2`bJUIIec52DYB z&@|x37Z0D1!0Cds`}W^5IKYdNz(4msy)QCEUnU$5ftTf}uq?}yvdl9a9FZea(WuzJ zn0AF-kj`fJXLD&mAgilJ#_f(hM09{W;`Vv^G}+f7pB$V|4&b!&6}o_$lVx>5=_hZYBT5{;H35hD5|tkLWAe%Wv- z*Pb)VySR#bJ@fa#kh{Z&(8JRO?oLgxjLB=C+7WUA?*LrdlLi0CA%$?W)uGVS*# zQ`m|fYumS*o?ecs9RP>wh~ZIAPU<_ooU zgO}RG1Gv_w!5csfhCC94fq~h{iNiA`-(V23$y_|0Ib1AOG;mdF;Og!5wMwygIGu?> zE}8YnE;6Vc5h*5o@_&Sq$(^Hx32TUUqAY(c$R-<7lZpO112H2Tpn{Cgz*KaYG$o8Wxv2rGsUW3ie$YN(SOefTSo?#R9; zJ74K;^tN5{vMVUR{SDfM2=jZkxZg|3^Uhx)}iG^irJAcs>094;u_IR&duV!tk;Yq zAb~wKnC*N4d!ehZeD&&5gVc73f8sv4B+Z{p)`!P8Mu^(FdR|)ntuwxjMR?m~_JPLL z^HT1}eJo(D~0NESQkF7s4>+wdy5Sw_}`cS;G_hordKWpxz zeyeAna3UPToh)Bj{qL0}*8MQ2^Y^0D~dQn^;TX2u!ycq6W%tLNDUh{rc(s!Q)0 zJTe7i`}%`p@%UJ9e7`cD%gu*EJd5(er;4Ma%i%C6gYPsW3O<>1SYIqie63X88;|j% zFyU}IB}mpZz$$^o%FKayOkEusnT+{@L7$QVJ`|qM=EixEXK~|Dc&SjB0s@nV2VuaX zAz_a7(%cBToP$2Nl`Ny%j1`NSsiG4c3IHlb1JzVM=;%wDnKlN!6?qP#Wo?YczoRpF z-O|!^gYb93a5%h#_uZZv9bF2C!$I}`!KA?VBYP(x%>>8ND`&A!{kzzn@$o%T_&cx9 zthZc``8Lj3ucX>#5Ty#j$C^nqokcp()>*$ znVm0|R>L&7#$4=tvK(G5PR;S{!d!coOjTgyc$9!Sn)pf&eB? zGi$;e7o%|_mZ{lPF+vipXsL-Qw@YD0yu-p?=DR;_L zyuc3B@d6!nUJsm?H8TPG7?V7mJu<-yE=1r=9T|bq^w5~cW1HQ1#)i_PPqTFRh|(yP z5{Xi&p^UJEI}hXgG6X?0!~4geST3C_mx|U9b+J@FS1K2~SF`<(9XRl-6XOwiV&Yd1 z95|*W*-fs=?c9SjPNvJHnxcX>EjOebY<><5IaPD|Wa!6gy0K<9)g1SgMN3*)J2c`@ zYP6BzA$;TPN-LerdfaHv?r;l{_`Yh|5YB7R%n~l)^p>`wR$*>7w-bwY?l|3THc(4} zJ~L-m8uh|ly)Z{!C9IrP+u5W);S!LeB?zJERCS*v$zC_LCae2&y!2c_$Wi{o=^Z;| zpC&uGa<(;Bm@C*c6b86FSEZgZTOtSb`_EV{S9LaGCX_*3p&41UYavkY({z_(pJ|-l zr%e}0wr;oLQtO7_8HNMusH0G4TmWL>Z)`(;O6UcM&hbj9hnojISVgrxswgx50PAvD z_Z#rf3@f8xN@B*&Jk_i<%zH}@dM z7OmHzY>9T!)r~b^t#(WL?b5CtOubtRdDjTnn6cZf0y|&`SGTQcx{;9+xtzc(mHAxm z$QwbMoY#wQKv63uTu__VFTFJCHBjzj65R z;lmsE7xD+zh~aE+%?h5{y}QxhPw0RB{f*tbPi?QxY$TIjZ!)TeGSPzCIz9vIvj`Z_fLU#8&17oXYZrkBpB(U3Pp10^ zthG7NpFUaj2B{76;h5u zEWN$o)f!k!Z*yk;w?X5}D_nzO_z?fE0TxhgVBBC)Pa95cmr=K7l6(rb5TAaikzy{h-z>VcgL3s)xktnb8teS-S=+b^+(lHkCl(rA_TQqsI03Ahskh2T{ggD`RTzn^-KH z4nOL<$Wb; znlv}T?Lp5@i#D15I<^|^NajElz!bYT^6(mekw4LGibxF>1nhsB*;&D*t>43DX3$nE zvJW2CGtBA*pL{oI3l1tJxvl$XVXidd)>dP*V)Lp@K1Z|7yAYHHpQN)d!FV?#@{y^0 z^&-+PgHdBQ*o#18N6_1$+YpI{|3a0hLfSf5Ozl`8XNbHqabzeokJB#|Gc|35p+Um{ zr3rRmRf*b@DvFKRq$x$x4rUQpceG7M zIf&W|UonEVc~&)cRvnd>wDwd(0F6zttmZjsSUJD8euRZCSl`lO?Vq-i=eb~DHk%!T z@;qX;tR1#p%Ldw;LR;;_yLaC-NF9Cm9dEFcvTvY+(B^nPzbMOM;iaqfy6kIMJNX9o zSgB-Rg39*Tee8VPmE8SQZK_A{(NNjWSMy4|6p8A?d2?XIBpumo1(PtW57&Jn$_ka_ z74xN;sx~Rm)Ocw&$D#i?nlI`QWb;Z~RN@tA>i3Kjw?|?b$HZ|zKsNcu4wsNmXC{5# zp`lyX)(#UMj;^oYmL8IQ|8MG9e3+I2a{bT{lBrWmi#vgbo!gd9_4m8oBZ)*BU~J&T z09^Z2?hz>IKU%4o%=XLhrV?PxE}7-|Ey zQ-5xCVewcZ0mk1=*Iz1-$6kIu`^*jSjkYOS|m z3w6P!)iJoPYYD1UVdbaO8e__?)}h(jB!p_ezC5?c-LUobMK$>tO(7jkltPI4)vSTo ze5jN@-xt>m+rcm@H! z(q-?`28sODx-KnTM`>ZaS_0jRq%YllKe-Km&JXn7o(1hley>U8g`2!2umJ-}3zBfS zj^@$NZn`TAgi)~cbxH0T?mfLdUEZEGvcEhcEcR=OZP*5^R%Ln%p(tPGb>(|gM-sjK zC?9kYdIoWN-q=3!BW@~DQkl%&LSc-(VdhFysYMXRO4d}U;OhK5s z7yzZ(tMRPQJQkoa?NopAB3&fB-sK^Xcle~Kl}P9` zmFk8%z^b=65Fhpb&sJu~@{^}rZhYS9q-Gf+es@rW$6u`HG{;eS?jU!Ddllsy4m+%J z6b9+fB1FN=33O;e5e#pn;s4#<`G>_--2eVHzYd$Qz$OscBqZ6G4Iv33n`D!$O5!GB zBuW&OD2b@Vkc22En4qpo6%`c~6)kF1RI1owyH%{TQbmg`R$5W1Ql*vZ+ER;(ii(z6 zB;PCnrx{r0kbpn$z5m?jxzA;u=lw8e&dhMmnc11o%zQrYj}@_etkS`hIBV`#`|4TGmv_uxv}pdcBWFotg(Vcr z60?t*F2jk71IHW_cmiaa=w?lfFqs=xvQqK}!;RqgU zG8#K#;4o$OL1(au2e+<0AYKm3 zEY5|K=dO#5U6Z_UsWs6)SYn?jrcFP3`m`PEH*5_T-MV4@j%ibmo<3d5&|KFwUsble z#x-}i=;k7qBVnRAA^b&7h)i&}iZ&1btHGJd5t*ACw)(W&eJLr&uHUhF-LQKw!Me>m z)~BVU`0P<)-b8h1{S{}$e@D9dsyDgOh_dO>9 z$86kqOc-9b+v|0^d%kvE7S>D69nzET=tkZzey_uDh zz9}h<9XKa_Q>lH4dg9PnG#xnh$Z8gvY)$-=>-WJ@2(xe9LR8J4gT9H^slvH+l6dPx$bd@m|J$$HPZ` zwvbvo?2!&%O4x(=V6}acV`k(;DW{}N-MDt`rug^~POL{}%uCGncsx@UPKohOPF=BL zlWVp^JRUpEwsMO*>ah6LiHQr;_o!9mPWHx3SvbYx@nk2?o8fTH-n3#xs>qFx-?Vn^ z#;GY&q?{Nz(=o|DER75v?TEBHw3g!Rydgj5D?W5@S!tUVo1B=qIzB#X^jtW+r+qYM z4)J1K&t0Rk$Pk^$SU$fYOR-UxV}}RrS`I#^aC1&6CyIcX%{5Ov^+mFD~Qgudn- zY}CGgI9>fo+l-D-{v&+bJ)ZE{^IpGy{Rq3xP~sBLk%6_|LceXIEn>;4x>lEDv8TUgF6=;t2oXH=Mr?9#Zy^huq!DHmRg=O`K>&N5xEvj)|~Gx^>LN z@b;;cvnEDHL`BEM&YC()J0^&bEk+Mcoo=()qM~9Z&x)Na#62TdF;USIBdlp@-|&dq zG-_9|pV9bN&S$1@3ipLQBp*_eAHzNrJ3>!9cJcGIMbVNY#j;^4n}eRU4zekkvBW{) zidW7)v~&uue!jEXaQf_#<@B%|8ZZ7J4*rw}4@OoVwjfSQONLnz;=R*H*u;dG93_OX zPZDB;E$WtG3M3hKm_1T_nH(88%(JCavgb)<8)8vfw8MAiDJNe#XHHajJmRN^Mj z;cI898UDjF!~1u$;^TxIW@w6^HfPSIC!ca=(uO%I*6ExqW@jY%@)wWcbPSJAnd}J5 zlw@7ASs)?~i;7E7YEyXWGa*`UjLh4zsX- zICZvb!@}gn@~H6Dm!VY^ybR{x{}{@T4&M%@etZ^0Ah6-#bUg9@;S< z-cKKGkXd5X{po0nEc3*T+*l=M4tr=C-gh54A)EWnRtcNq5&PY<;u8m*4aO{pPg!e= z5Sw(^R!1qZNvVXmsKYEF77Q&#lfB_;?2+?l&TxxC|5z`CYT4jTLqg5oZ=FU5-`zEw zdGHy>Yr-k-&c9&IaLX-Tn7qN|nkpVSFbIyA@(x+{ z4ap9K_w*&KJVK0c*dj7s{B{4sZ=W5L`WZtcvhdDw5)b~}zkh#|7OH8;0$UE17%Hcl z!nJAk@87>)i;?t0!J4DTTuJ`#20f1dhp>PD_%|5GIL0xKag1Xe;~2*{#xag@jAI<* z7{@rqF^+NkpWeGrG8<$U=rk}+u!xbzbkkAA(f-ut!Gs|IS zAIvH`fIe^)fvX>82M(Yg4ljl|HgIcjm%&^h(Fuw5FfR?}wL?+><~w12JuFCr1)Z=k z3z8j>TnCFXV9@}i)WPBc@Yumq4@>f3X&fwVhGj+Ib%Qqq%PU}oA67KON-wOe0$&vz zQ42>_z)>MsRSc_>;b;y1EC?HzuC0S(0+5yl$L7PjOjy?o>1nXu1;@MLgj&dGfDJ8h zVlJFi37OS!axR>b4yU>yOCLZfY%GG)3gGl6*pvX9gK$PZtf?C+K5B9b}Q3qUD z2^YH|Pz{$l;j(flu7V#_!{s$_MJ<#R!j(yIWj9<^16TXu>NY6NfzoccCKIlyhieny z+6uU?2g(lguj@VgMrpr#%kI?#W9?1mq= z!cWSf)(;PR;HP=;voZ+g!_W7@BdPGH2kM;gm=k{CgU55AJ_x^TgI_hl6ZP=xBzUq8 z8iA+N;h8FE((r68{4N`s3*fnA_*?@%2Xqu3Krj5&4sQT&R6=JP{H+Gw%!W7HA>@Qm zIlNs9e{Y6=R6|z)x_aQBA$X?}x&!cTHN2M(@Abj^70_dYo?7_81|PJ;N2v#fo)Y+^ z20jf!UpIW#4F9%6e;o9e!+#3l3kQ7B0sn1)ffD$#5J4+Kl^}E-!UPbO2VsQ}5gCYx z5W-f0n2>>(P>-1CM@;NTMAjngZHTB+M6??b9Yn-5ARNtz$$5ywYzSvHVrn&Fx)YI* zj7SI}W+otJB_mv3#OwmZ94}&S5+bn^krY5I@FNy>AQojHQj!rV?TE!02u~2P)Q(u% ziCC6_@WvsQCm@!0B3ASuR<ox)pJB0mAP@_?r=H zN)T(^h_yY4V{#E``w+)wBG%au$2k${35fMAh~s+^8F`2e#fTFFh?DvenGJ}Odl07< zA~w1ZrxhYjFF|An5S!8woBfE*t%x%k5jhQrv(gb~yAWqLA#(R2wv-^waU;&@Kx{2T z(q#BM*LFbi=(I$}>UVs8(k$c?xV z#D)717u6#!?nVTf5tq~;F0DjdmX5fr8&O<@_(3+}au4DPJEEijab+&z$_~U;^@ywU z5T#DUHCc#jlM&bUAj;AZ*ZUCH2N5?kB5uq>l-m(EWg%|%B5tlg+)|FHa3d;;5w}(% zZc9Vl)`h6lh{`6!?Fah99W{tMixK-Ah`Uk|ciRzn2NCx)BdUrJ_xcg{b|LPoLsa_^ z)vbshSh<6V3g@5@F-3^HM z+=%z%5bw7ldP)%=_z@rGB0efY^o9^0wcQK`tNGGufB z852ZKYC^`gBjd7=as9|CdC0@Mk?{ef(~WetBd3-kr+JanUC8NG$b@|43@>sykLgCH6(f%=K(5O| z9+!_y&qJ=yKptO=JfQ`-AqTmk8+l?c@+24XWQ{zf3wde)nN@?_Sb#j;fy}leHzgxC z`;ceUB6G5kXBH#R@*>abMxI@X%=II4dyreYkXuWUc}d8;X5_YVAOaa4_Q@@ytfE>UkUR50J1t4 z`G6DophiB}gnY=0{E0@^<{^LTK?V=B<3I*v?CwQMn2kxe5@S#cowqWi>z-& z{xS#oD;x3&C-T=C`D6m}DKGM=K4fD6*%(4T-Hm*v6#1JF^4SvP?+TI4Wyt3Wkk4l! zTS}3CbRu7E>pn}B@375QN^@?$^plWOFr?a0rvke@dp z|6Pad--rC79{FD%a=?Kc7(jkmg&gch?yp19jFL{2%0_8Wx)o(PQ4t=L&5p9wp(gaA zB6CpoGE`JMDms9Q@uD0-)Z|7~Yz->Tj+){?O({SfHh_w+MmZZ$Q_E1(T2a%pQ3)BS z8K7n+p=S1>Te7Wbn(9jK*F z)Y3lGvT~Hyi(0V{9=|Y|5MCHbzas#L>-KeeQsJvX%wno(UI@FFzRDLUJXEW;D9@KdasDdig`9ajK zHdJ9Ms;~of!2oKn7qzzobzwH@qH@&5C8$6L>QWEtGC!&~0d=_-bwxGm$|}@V)u^k3 zsM0#rwLVmt3w1*c>c)Q5Oo_^3hFUC>KAs@;~~^9 zy{ISJQ4M{lC*7#0yr{-9)YFxyXWCG|X+S-jf%UU05b1Le&5bF2UsOM`@Eybum z_)#zTP_50V7Xzr5vQRH~q5fn;y^@c5)r)$y57pj)dMyq0dMTrrp|P;a?WZ?&RA<*2udQGYK({i6}pm4$l8j_Phly<3NR---GlAN7$R^>GI3lLXYK z8ue){s;>am*N^&KqyC+W>d!%ap;7;Jqy9U98fZa%nTZ;#K zv(U!`(P<6nb)b*SLa)z8AMZtHWS}>cqfcr_XEvZu4x&%-p-(M9Z`A0GZRpb-=+hg~ z*$wDT9`qSbbWRQWtR!@99C}M0I&U9(y92$W6uncU&#gwEmxC_oLGLO?7gnM#$VKnT zLGMjMU)YVls1|*3F*?wXzO)5h+>E~5fxg0rF3Cn;nS;KnA6=S^zNQs@od;bOL|@;4 zzM&a?V+Xpt7=2Se`sQ}@EtTksZuG4K=pXvgl^R{yhrS~LeMcSo&TjNwcJ$pP=zGf1 zRjufItI_wBq3>@+R~H|^0Qvzp`oT(cO#}L&5c(&@=!bLBKlP%2mW>Y9qJN%^e$;`k zOG7^vLO&iv|1u8!L>{^!2mNaw`pIPUQ`zXoI`lJH=%!-yvjOyP8_~_V=;zwd&pXjA zE$BbAqW@TeexVlKT8w@%3;j|V`sD(2TNe6H_2^d`(XTe4|D1<@tqA>kHoBt%{g)v6 z4I8?%6#b?j{gw+IDntL>h5maxx=W+G+R^{2L%&;te&2@f$wq%rg8ncS{ZTc#w;uh8 z9sOx3`m-eT=OyTWH=+Am(En*df6;{=$U+Y~F{EKc2qXJ2Iu&C)7^@l+(TTA&VJ4(v zCe&gkCSf8QFi~DibScK+z)W&uCf8wNGcd8;m?<3?XF6sYnCS(Wgl^2t49u)Lj4Kl} zyA5-AE@n;;<1WX{bzTO$E-@ntZu>h6EJISm}AN@$J#LK8ZpPU zVA6Xr$CqF-T$l|m%t-;v$qATKGB8;gnA5zN)3Y$yEtpL~%o$Ehjt_HI7Ut}3Om08s zoJ`DCjoCVY$*aI@FTmt`G3SDyZbR01TcH*F?)M4MLn2{+?b2^ zVFEpvOL{PumSHX{#1ywFjlbYiaT!dwleG=#a%fw`_1Q#OFPK8U$73sWA%+?<14JeY~8slYtckNHU^=HWWb&vG!qHq0Yn9tmI`&BZ)s!~7zMdAtTwUxoQ)9p;Hl zOhYr~$u`VWy_lzKFu&=SB6^IQn?`)17Z`Ir_5<`0dS7xFMK z+A%NXU|uf5w3TB1l#h8O8S_dtro9OB8kpCsFdeO!zvf^%U6{Z5F>iV>Z@CYk1{2D} zyzRyOBOmjRF3dljn0Er0f8}GkOEK^IG4I(h@AY7MIxrvDFdyV#J}km~RD=20jrq6~ z^GOD#F9Y*g8s_sNOn(;UKS`J`Ixqun%%BIezXpq5ESZEQ`?0hWOLt*eHmrzNtO+ix zi9W1}y;zauSau&)lm{!i0xKp7%Mpj=XvUiC#ER|2ifhE0Qj9gF4=cV8Yia`4)JCjn zO<2<_v1Zt@X0&6??8TbZf#vGMn&ZTBhtYyHw*V`#8Y{5_YrYR_K|NOTKCDG~SSh_& zo+PX#X;@2}v6j_iElYiU9udtWhiolu zBbFNBoDn=R5?9!`ZX~X;g?IiK<{64)`$*iv#{DDliA=+ZLg)zy9N0$Ul4zb8i7Oo3 zG7{G~Xdj6i4&#E6xP^nCjKnA6W$Bt-JI~)zuyYG**u_rHXA1@FWXrnUyNX;pw(Z)s zXG_txJl8pwxYlpoy~;JdB6&FdqK@3;zRu_SZ51B02yUe$^)c From 155530fe7baa7db5fe958900c98582487979d72c Mon Sep 17 00:00:00 2001 From: Luiz Gustavo da Silva Vasconcellos Date: Mon, 19 Oct 2026 19:01:01 -0300 Subject: [PATCH 7/8] feat(schematics): detecta e preserva o nome da classe do App no sidemenu MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit O schematic `sidemenu` passa a detectar o nome da classe do componente raiz já usado pelo projeto (`App` ou `AppComponent`) em vez de assumi-lo a partir da convenção de style guide. Com isso, o componente sobrescrito continua compatível com os imports existentes em main.ts / app.module.ts, incluindo projetos no style 2016 e projetos NgModule cujo main.ts usa a chamada encadeada `platformBrowser().bootstrapModule(AppModule)`. Detalhes: - Adiciona `detectRootComponentClassName` em file-name-style-guide.ts: resolve o nome a partir do `bootstrapApplication(App)` (standalone) ou do `bootstrap: [...]` do `@NgModule` (NgModule), com fallback para a convenção do style guide quando indetectável. - `sidemenu/index.ts` passa a usar essa detecção para definir `appClassName`. - Adiciona testes para os cenários: style 2016 preservando a classe bootstrapada, NgModule com `bootstrapModule` encadeado e NgModule bootstrapando `AppComponent`. Atualiza as dependências do Angular para v22.2.1 (package.json, projects/ui/package.json e guias em docs/README) e adiciona supressões pontuais de lint `@typescript-eslint/no-unnecessary-type-assertion` nos specs de po-popup e po-listbox para compatibilidade com a nova versão. Fixes DTHFUI-12891 --- README.md | 23 ++- docs/guides/getting-started.md | 23 ++- docs/guides/sync-get-started.md | 24 +-- package.json | 20 +-- .../src/utils/file-name-style-guide.ts | 153 +++++++++++++++--- projects/ui/package.json | 2 +- .../ng-generate/sidemenu/index.spec.ts | 93 ++++++++++- .../schematics/ng-generate/sidemenu/index.ts | 8 +- .../po-listbox/po-listbox.component.spec.ts | 4 + .../po-popup/po-popup.component.spec.ts | 11 ++ 10 files changed, 290 insertions(+), 71 deletions(-) diff --git a/README.md b/README.md index 570b25d9e6..1e1d6c255e 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ Biblioteca de componentes de UI para Angular. ### Pré-requisitos -Para começar a utilizar o **PO UI** é pré-requisito ter o `Node.js` instalado (versão 24.15.0 e acima) e o seu gerenciador de pacote favorito na versão mais atual. Caso você ainda não tenha instalado o pacote `@angular/cli`, instale-o via `npm` ou `yarn`. +Para começar a utilizar o **PO UI** é pré-requisito ter o `Node.js` instalado (versão 24.22.1 e acima) e o seu gerenciador de pacote favorito na versão mais atual. Caso você ainda não tenha instalado o pacote `@angular/cli`, instale-o via `npm` ou `yarn`. Instalando com npm: ``` @@ -53,25 +53,24 @@ Veja abaixo a lista de dependências e as versões compatíveis, elas devem ser ```json "dependencies": { - "@angular/common": "~22.0.1", - "@angular/compiler": "~22.0.1", - "@angular/core": "~22.0.1", - "@angular/forms": "~22.0.1", - "@angular/platform-browser": "~22.0.1", - "@angular/router": "~22.0.1", + "@angular/common": "~22.2.1", + "@angular/compiler": "~22.2.1", + "@angular/core": "~22.2.1", + "@angular/forms": "~22.2.1", + "@angular/platform-browser": "~22.2.1", + "@angular/router": "~22.2.1", "rxjs": "~7.8.1", "tslib": "^2.6.2", "zone.js": "~0.15.0" ... }, "devDependencies": { - "@angular-devkit/schematics": "~22.0.1", + "@angular-devkit/schematics": "~22.2.1", "@angular/build": "~22.2.1", - "@angular/cli": "~22.0.1", - "@angular/compiler-cli": "~22.0.1", + "@angular/cli": "~22.2.1", + "@angular/compiler-cli": "~22.2.1", ... - "typescript": "~6.0.3", - "vitest": "^4.0.0" + "typescript": "~6.0.3" } ``` diff --git a/docs/guides/getting-started.md b/docs/guides/getting-started.md index 181b9fa2e1..4e2d43d6ad 100644 --- a/docs/guides/getting-started.md +++ b/docs/guides/getting-started.md @@ -3,7 +3,7 @@ ### Pré-requisitos -Para começar a utilizar o **PO UI** é pré-requisito ter o `Node.js` instalado (versão 24.15.0 e acima) e o seu gerenciador de pacote favorito na versão mais atual. Caso você ainda não tenha instalado o pacote `@angular/cli`, instale-o via `npm` ou `yarn`. +Para começar a utilizar o **PO UI** é pré-requisito ter o `Node.js` instalado (versão 24.22.1 e acima) e o seu gerenciador de pacote favorito na versão mais atual. Caso você ainda não tenha instalado o pacote `@angular/cli`, instale-o via `npm` ou `yarn`. Instalando com npm: ``` @@ -36,25 +36,24 @@ Veja abaixo a lista de dependências e as versões compatíveis, elas devem ser ```json "dependencies": { - "@angular/common": "~22.0.1", - "@angular/compiler": "~22.0.1", - "@angular/core": "~22.0.1", - "@angular/forms": "~22.0.1", - "@angular/platform-browser": "~22.0.1", - "@angular/router": "~22.0.1", + "@angular/common": "~22.2.1", + "@angular/compiler": "~22.2.1", + "@angular/core": "~22.2.1", + "@angular/forms": "~22.2.1", + "@angular/platform-browser": "~22.2.1", + "@angular/router": "~22.2.1", "rxjs": "~7.8.1", "tslib": "^2.6.2", "zone.js": "~0.15.0" ... }, "devDependencies": { - "@angular-devkit/schematics": "~22.0.1", + "@angular-devkit/schematics": "~22.2.1", "@angular/build": "~22.2.1", - "@angular/cli": "~22.0.1", - "@angular/compiler-cli": "~22.0.1", + "@angular/cli": "~22.2.1", + "@angular/compiler-cli": "~22.2.1", ... - "typescript": "~6.0.3", - "vitest": "^4.0.0" + "typescript": "~6.0.3" } ``` diff --git a/docs/guides/sync-get-started.md b/docs/guides/sync-get-started.md index f4668494a1..8e79ae9c26 100644 --- a/docs/guides/sync-get-started.md +++ b/docs/guides/sync-get-started.md @@ -9,7 +9,7 @@ Para maiores detalhes sobre os serviços e métodos utilizados neste tutorial, c ### Pré-requisitos - [Node.js e NPM](https://nodejs.org/en/) -- [Angular CLI](https://cli.angular.io/) (~22.0.1): +- [Angular CLI](https://cli.angular.io/) (~22.2.1): - ```shell npm install -g @angular/cli@22 ``` @@ -45,12 +45,12 @@ Veja abaixo a lista de dependências e as versões compatíveis, elas devem ser ```json ... "dependencies": { - "@angular/common": "~22.0.1", - "@angular/compiler": "~22.0.1", - "@angular/core": "~22.0.1", - "@angular/forms": "~22.0.1", - "@angular/platform-browser": "~22.0.1", - "@angular/router": "~22.0.1", + "@angular/common": "~22.2.1", + "@angular/compiler": "~22.2.1", + "@angular/core": "~22.2.1", + "@angular/forms": "~22.2.1", + "@angular/platform-browser": "~22.2.1", + "@angular/router": "~22.2.1", "@capacitor/app": "8.0.0", "@capacitor/core": "8.0.1", "@capacitor/haptics": "8.0.0", @@ -64,11 +64,11 @@ Veja abaixo a lista de dependências e as versões compatíveis, elas devem ser "zone.js": "~0.15.0" }, "devDependencies": { - "@angular-devkit/schematics": "~22.0.1", + "@angular-devkit/schematics": "~22.2.1", "@angular/build": "~22.2.1", - "@angular/cli": "~22.0.1", - "@angular/compiler-cli": "~22.0.1", - "@angular/language-service": "~22.0.1", + "@angular/cli": "~22.2.1", + "@angular/compiler-cli": "~22.2.1", + "@angular/language-service": "~22.2.1", "@capacitor/cli": "8.0.1", "@ionic/angular-toolkit": "^12.0.0", ... @@ -81,7 +81,7 @@ Veja abaixo a lista de dependências e as versões compatíveis, elas devem ser > ```json > "dependencies": { > ... -> "@angular/platform-browser-dynamic": "~22.0.1", +> "@angular/platform-browser-dynamic": "~22.2.1", > ... > } > ``` diff --git a/package.json b/package.json index dc2f28e207..6cd6e6d8ae 100644 --- a/package.json +++ b/package.json @@ -68,13 +68,13 @@ }, "private": true, "dependencies": { - "@angular/cdk": "~22.0.1", - "@angular/common": "~22.0.1", - "@angular/compiler": "~22.0.1", - "@angular/core": "~22.0.1", - "@angular/forms": "~22.0.1", - "@angular/platform-browser": "~22.0.1", - "@angular/router": "~22.0.1", + "@angular/cdk": "~22.2.1", + "@angular/common": "~22.2.1", + "@angular/compiler": "~22.2.1", + "@angular/core": "~22.2.1", + "@angular/forms": "~22.2.1", + "@angular/platform-browser": "~22.2.1", + "@angular/router": "~22.2.1", "@capacitor/core": "5.7.2", "@capacitor/network": "^5.0.7", "@po-ui/style": "22.0.0-next.0", @@ -96,9 +96,9 @@ "@angular-eslint/schematics": "^22.0.0", "@angular-eslint/template-parser": "^22.0.0", "@angular/build": "~22.2.1", - "@angular/cli": "~22.0.1", - "@angular/compiler-cli": "~22.0.1", - "@angular/language-service": "~22.0.1", + "@angular/cli": "~22.2.1", + "@angular/compiler-cli": "~22.2.1", + "@angular/language-service": "~22.2.1", "@animaliads/animalia-icon": "^1.1.0", "@commitlint/cli": "^18.4.3", "@commitlint/config-angular": "^18.4.3", diff --git a/projects/schematics/src/utils/file-name-style-guide.ts b/projects/schematics/src/utils/file-name-style-guide.ts index 006111b734..3ccf1ef94b 100644 --- a/projects/schematics/src/utils/file-name-style-guide.ts +++ b/projects/schematics/src/utils/file-name-style-guide.ts @@ -1,4 +1,5 @@ import { Tree } from '@angular-devkit/schematics'; +import { getAppModulePath } from '@schematics/angular/utility/ng-ast-utils'; import * as ts from 'typescript'; /** @@ -56,21 +57,64 @@ export function detectFileNameStyleGuide(host: Tree, mainPath: string): FileName } /** - * Reads the main file and returns the module specifier of the imported symbol that is passed - * to `bootstrapApplication(...)` (standalone) or `bootstrapModule(...)` (NgModule). + * Detects the name of the root component class already used by the project, so a schematic + * that overwrites the root component keeps the class name expected by the existing imports. + * + * - Standalone apps bootstrap the component directly (`bootstrapApplication(App)`), so the + * bootstrapped symbol is the component name (e.g. `App` or `AppComponent`). + * - NgModule apps bootstrap the module (`bootstrapModule(AppModule)`), so the component is + * read from the `bootstrap: [...]` array of the module's `@NgModule` decorator. + * + * Returns `undefined` when the name can not be resolved, so callers can fall back to their + * own convention. */ -function getBootstrapImportPath(host: Tree, mainPath: string): string | undefined { - if (!host.exists(mainPath)) { +export function detectRootComponentClassName(host: Tree, mainPath: string): string | undefined { + const mainSource = readSourceFile(host, mainPath); + + if (!mainSource) { return undefined; } - const content = host.read(mainPath)?.toString('utf-8'); + const bootstrapCall = getBootstrapCall(mainSource); - if (!content) { + if (!bootstrapCall) { + return undefined; + } + + // Standalone: the bootstrapped symbol is the root component itself. + if (bootstrapCall.callName === 'bootstrapApplication') { + return bootstrapCall.symbolName; + } + + // NgModule: resolve the module file and read the bootstrap component from its decorator. + let appModulePath: string; + + try { + appModulePath = getAppModulePath(host, mainPath); + } catch { + return undefined; + } + + const moduleSource = readSourceFile(host, appModulePath); + + if (!moduleSource) { + return undefined; + } + + return getNgModuleBootstrapComponent(moduleSource); +} + +/** + * Reads the main file and returns the module specifier of the imported symbol that is passed + * to `bootstrapApplication(...)` (standalone) or `bootstrapModule(...)` (NgModule). + */ +function getBootstrapImportPath(host: Tree, mainPath: string): string | undefined { + const source = readSourceFile(host, mainPath); + + if (!source) { return undefined; } - const source = ts.createSourceFile(mainPath, content, ts.ScriptTarget.Latest, true); const bootstrapSymbol = getBootstrappedSymbolName(source); if (!bootstrapSymbol) { @@ -80,28 +124,80 @@ function getBootstrapImportPath(host: Tree, mainPath: string): string | undefine return getImportSpecifierForSymbol(source, bootstrapSymbol); } +/** Describes the bootstrap call found in a main file. */ +interface BootstrapCall { + /** The bootstrap function name: `bootstrapApplication` (standalone) or `bootstrapModule` (NgModule). */ + callName: 'bootstrapApplication' | 'bootstrapModule'; + /** The identifier passed as the first argument (the root component or the root module). */ + symbolName: string; +} + /** - * Finds the name of the symbol passed as the first argument to a `bootstrapApplication` or - * `bootstrapModule` call. + * Finds the bootstrap call in the source and returns the function name along with the + * symbol passed as its first argument. */ +function getBootstrapCall(source: ts.SourceFile): BootstrapCall | undefined { + let result: BootstrapCall | undefined; + + const visit = (node: ts.Node): void => { + if (result) { + return; + } + + if (ts.isCallExpression(node)) { + // The bootstrap call may be a direct identifier (`bootstrapApplication(...)`) or a + // chained method (`platformBrowser().bootstrapModule(...)`), where the callee is a + // property access expression. Resolve the called name from either shape. + const callee = node.expression; + const calledName = ts.isIdentifier(callee) + ? callee.text + : ts.isPropertyAccessExpression(callee) + ? callee.name.text + : undefined; + + if (calledName === 'bootstrapApplication' || calledName === 'bootstrapModule') { + const firstArgument = node.arguments[0]; + + if (firstArgument && ts.isIdentifier(firstArgument)) { + result = { callName: calledName, symbolName: firstArgument.text }; + return; + } + } + } + + ts.forEachChild(node, visit); + }; + + ts.forEachChild(source, visit); + + return result; +} + +/** Finds the name of the symbol bootstrapped in the given source (component or module). */ function getBootstrappedSymbolName(source: ts.SourceFile): string | undefined { - let symbolName: string | undefined; + return getBootstrapCall(source)?.symbolName; +} + +/** + * Extracts the first component name listed in the `bootstrap: [...]` array of an `@NgModule` + * decorator found in the given module source. + */ +function getNgModuleBootstrapComponent(source: ts.SourceFile): string | undefined { + let componentName: string | undefined; const visit = (node: ts.Node): void => { - if (symbolName) { + if (componentName) { return; } - if ( - ts.isCallExpression(node) && - ts.isIdentifier(node.expression) && - (node.expression.text === 'bootstrapApplication' || node.expression.text === 'bootstrapModule') - ) { - const firstArgument = node.arguments[0]; + if (ts.isPropertyAssignment(node) && ts.isIdentifier(node.name) && node.name.text === 'bootstrap') { + if (ts.isArrayLiteralExpression(node.initializer)) { + const firstElement = node.initializer.elements[0]; - if (firstArgument && ts.isIdentifier(firstArgument)) { - symbolName = firstArgument.text; - return; + if (firstElement && ts.isIdentifier(firstElement)) { + componentName = firstElement.text; + return; + } } } @@ -110,7 +206,22 @@ function getBootstrappedSymbolName(source: ts.SourceFile): string | undefined { ts.forEachChild(source, visit); - return symbolName; + return componentName; +} + +/** Reads a file from the tree and parses it into a TypeScript source file. */ +function readSourceFile(host: Tree, filePath: string): ts.SourceFile | undefined { + if (!host.exists(filePath)) { + return undefined; + } + + const content = host.read(filePath)?.toString('utf-8'); + + if (!content) { + return undefined; + } + + return ts.createSourceFile(filePath, content, ts.ScriptTarget.Latest, true); } /** diff --git a/projects/ui/package.json b/projects/ui/package.json index 5699e7ce44..ab51aa1267 100644 --- a/projects/ui/package.json +++ b/projects/ui/package.json @@ -21,7 +21,7 @@ ] }, "dependencies": { - "@angular/cdk": "~22.0.1", + "@angular/cdk": "~22.2.1", "@po-ui/style": "0.0.0-PLACEHOLDER", "@po-ui/ng-schematics": "0.0.0-PLACEHOLDER", "driver.js": "~1.4.0", diff --git a/projects/ui/schematics/ng-generate/sidemenu/index.spec.ts b/projects/ui/schematics/ng-generate/sidemenu/index.spec.ts index 157edb5a72..a061b2fd79 100644 --- a/projects/ui/schematics/ng-generate/sidemenu/index.spec.ts +++ b/projects/ui/schematics/ng-generate/sidemenu/index.spec.ts @@ -58,7 +58,7 @@ describe('sidemenu:', () => { }); describe('fileNameStyleGuide 2016 (classic suffixes):', () => { - it('should create the app files with the `.component` suffix and use the `AppComponent` class', async () => { + it('should create the app files with the `.component` suffix while preserving the bootstrapped class', async () => { const options = { ...sidemenuOptions, fileNameStyleGuide: '2016' }; const tree = await runner.runSchematic('sidemenu', options, appTree); @@ -67,7 +67,10 @@ describe('sidemenu:', () => { expect(tree.files).toContain(`${appDir}/app.component.ts`); expect(tree.files).toContain(`${appDir}/app.component.html`); expect(tree.files).toContain(`${appDir}/app.component.${sidemenuOptions.style}`); - expect(getFileContent(tree, `${appDir}/app.component.ts`)).toContain('export class AppComponent {'); + // The option only controls the file-name suffix. The class name still follows the + // component bootstrapped by the base app (the CLI's standalone `App`) so the + // overwritten component keeps matching the existing import. + expect(getFileContent(tree, `${appDir}/app.component.ts`)).toContain('export class App {'); }); }); @@ -92,6 +95,92 @@ describe('sidemenu:', () => { expect(tree.files).toContain(`/projects/${sidemenuOptions.project}/src/app/app.component.ts`); }); }); + + describe('auto-detected style on an NgModule project with a chained bootstrapModule call:', () => { + beforeEach(() => { + // Mirrors the CLI v22 NgModule main.ts, where the bootstrap call is chained off + // `platformBrowser()` (a property-access callee) rather than a bare identifier. + appTree.overwrite( + '/projects/po/src/main.ts', + `import { platformBrowser } from '@angular/platform-browser';\n` + + `import { AppModule } from './app/app.module';\n` + + `platformBrowser().bootstrapModule(AppModule).catch(err => console.error(err));\n` + ); + appTree.create( + '/projects/po/src/app/app.component.ts', + `import { Component } from '@angular/core';\n@Component({ selector: 'app-root', template: '' })\nexport class App {}\n` + ); + appTree.create( + '/projects/po/src/app/app.module.ts', + `import { NgModule } from '@angular/core';\n` + + `import { BrowserModule } from '@angular/platform-browser';\n` + + `import { App } from './app.component';\n` + + `@NgModule({\n` + + ` declarations: [App],\n` + + ` imports: [BrowserModule],\n` + + ` bootstrap: [App]\n` + + `})\n` + + `export class AppModule {}\n` + ); + }); + + it('should overwrite the existing `.component` file with the PO layout', async () => { + const appDir = `/projects/${sidemenuOptions.project}/src/app`; + const originalComponent = getFileContent(appTree, `${appDir}/app.component.ts`); + + const tree = await runner.runSchematic('sidemenu', sidemenuOptions, appTree); + + const generatedComponent = getFileContent(tree, `${appDir}/app.component.ts`); + + // The chained `bootstrapModule(AppModule)` import resolves to `./app/app.module` + // (a `.module` suffix), so the classic 2016 style must be detected and the PO layout + // written to the existing `app.component.ts` (suffix `.component`), not to a new + // suffix-less `app.ts`. + expect(generatedComponent).not.toEqual(originalComponent); + expect(generatedComponent).toContain('PoMenuItem'); + expect(generatedComponent).toContain(`templateUrl: './app.component.html'`); + // The class name is read from the module's `bootstrap: [App]`, not from the + // bootstrapped module symbol (`AppModule`), so it stays `App` and keeps matching + // the module's `declarations`/`bootstrap` references. + expect(generatedComponent).toContain('export class App {'); + expect(generatedComponent).not.toContain('export class AppModule'); + }); + }); + + describe('auto-detected class name on an NgModule project bootstrapping `AppComponent`:', () => { + beforeEach(() => { + appTree.overwrite( + '/projects/po/src/main.ts', + `import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n` + + `import { AppModule } from './app/app.module';\n` + + `platformBrowserDynamic().bootstrapModule(AppModule).catch(err => console.error(err));\n` + ); + appTree.create( + '/projects/po/src/app/app.component.ts', + `import { Component } from '@angular/core';\n@Component({ selector: 'app-root', template: '' })\nexport class AppComponent {}\n` + ); + appTree.create( + '/projects/po/src/app/app.module.ts', + `import { NgModule } from '@angular/core';\n` + + `import { BrowserModule } from '@angular/platform-browser';\n` + + `import { AppComponent } from './app.component';\n` + + `@NgModule({\n` + + ` declarations: [AppComponent],\n` + + ` imports: [BrowserModule],\n` + + ` bootstrap: [AppComponent]\n` + + `})\n` + + `export class AppModule {}\n` + ); + }); + + it('should preserve the `AppComponent` class name read from the module bootstrap array', async () => { + const tree = await runner.runSchematic('sidemenu', sidemenuOptions, appTree); + + const content = getFileContent(tree, `/projects/${sidemenuOptions.project}/src/app/app.component.ts`); + + expect(content).toContain('export class AppComponent {'); + }); + }); }); /** Gets the content of a specified file from a schematic tree. */ diff --git a/projects/ui/schematics/ng-generate/sidemenu/index.ts b/projects/ui/schematics/ng-generate/sidemenu/index.ts index a6ab7e7e8e..7d31967c87 100644 --- a/projects/ui/schematics/ng-generate/sidemenu/index.ts +++ b/projects/ui/schematics/ng-generate/sidemenu/index.ts @@ -26,6 +26,7 @@ import { } from '@po-ui/ng-schematics/project'; import { detectFileNameStyleGuide, + detectRootComponentClassName, FileNameStyleGuide, getFileNameSuffixes, supportedCssExtensions @@ -64,7 +65,12 @@ function createAppComponent(options: ComponentOptions): Rule { options.fileNameStyleGuide ?? detectFileNameStyleGuide(tree, browserEntryPoint); const { componentSuffix } = getFileNameSuffixes(styleGuide); const appFileName = `app${componentSuffix}`; - const appClassName = styleGuide === '2016' ? 'AppComponent' : 'App'; + + // Preserve the root component class name already used by the project (e.g. `App` or + // `AppComponent`) so the overwritten component keeps matching the existing imports in + // main.ts / app.module.ts. Fall back to the style guide convention when undetectable. + const appClassName = + detectRootComponentClassName(tree, browserEntryPoint) ?? (styleGuide === '2016' ? 'AppComponent' : 'App'); const templateOptions = { ...options, appFileName, appClassName }; diff --git a/projects/ui/src/lib/components/po-listbox/po-listbox.component.spec.ts b/projects/ui/src/lib/components/po-listbox/po-listbox.component.spec.ts index 6fc5f04704..35d81f437e 100644 --- a/projects/ui/src/lib/components/po-listbox/po-listbox.component.spec.ts +++ b/projects/ui/src/lib/components/po-listbox/po-listbox.component.spec.ts @@ -462,6 +462,7 @@ describe('PoListBoxComponent', () => { component.openGroup(group, new MouseEvent('click')); expect(component.currentGroup).toBe(group); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion expect(component.currentItems).toEqual(group.subItems as Array); setTimeout(() => { @@ -497,6 +498,7 @@ describe('PoListBoxComponent', () => { component.openGroup(group1); expect(component.currentGroup).toEqual(group1); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion expect(component.currentItems).toEqual(group1.subItems as Array); expect((component as any).navigationStack.length).toBe(1); @@ -504,11 +506,13 @@ describe('PoListBoxComponent', () => { component.openGroup(group2); expect(component.currentGroup).toEqual(group2); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion expect(component.currentItems).toEqual(group2.subItems as Array); expect((component as any).navigationStack.length).toBe(2); component.goBack(new KeyboardEvent('keydown', { key: 'Enter' })); expect(component.currentGroup).toEqual(group1); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion expect(component.currentItems).toEqual(group1.subItems as Array); expect((component as any).navigationStack.length).toBe(1); diff --git a/projects/ui/src/lib/components/po-popup/po-popup.component.spec.ts b/projects/ui/src/lib/components/po-popup/po-popup.component.spec.ts index 6ef159abb5..e67fd1435c 100644 --- a/projects/ui/src/lib/components/po-popup/po-popup.component.spec.ts +++ b/projects/ui/src/lib/components/po-popup/po-popup.component.spec.ts @@ -1,6 +1,7 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { provideLocationMocks } from '@angular/common/testing'; import { RouterModule } from '@angular/router'; +import { of } from 'rxjs'; import { configureTestSuite, expectPropertiesValues } from './../../util-test/util-expect.spec'; @@ -847,12 +848,14 @@ describe('PoPopupComponent:', () => { it('clampHeightToViewport: should remove dynamic maxHeight from the listbox scroller when content fits', () => { const popupEl = document.createElement('div'); Object.defineProperty(popupEl, 'offsetHeight', { value: 1, configurable: true }); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion spyOn(popupEl, 'getBoundingClientRect').and.returnValue({ top: 0, bottom: 1 } as DOMRect); const scrollEl = document.createElement('ul'); component.popupRef = { nativeElement: popupEl } as any; const targetEl = document.createElement('button'); // target no topo: spaceBelow ~= innerHeight (cabe qualquer altura mínima); não abre para cima + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion spyOn(targetEl, 'getBoundingClientRect').and.returnValue({ top: 0, bottom: 0 } as DOMRect); component.target = targetEl; @@ -874,6 +877,7 @@ describe('PoPopupComponent:', () => { component.popupRef = { nativeElement: popupEl } as any; const targetEl = document.createElement('button'); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion spyOn(targetEl, 'getBoundingClientRect').and.returnValue({ top: 266 } as DOMRect); component.target = targetEl; @@ -897,6 +901,7 @@ describe('PoPopupComponent:', () => { component.popupRef = { nativeElement: popupEl } as any; const targetEl = document.createElement('button'); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion spyOn(targetEl, 'getBoundingClientRect').and.returnValue({ top: 266 } as DOMRect); component.target = targetEl; @@ -919,6 +924,7 @@ describe('PoPopupComponent:', () => { component.popupRef = { nativeElement: popupEl } as any; const targetEl = document.createElement('button'); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion spyOn(targetEl, 'getBoundingClientRect').and.returnValue({ top: 400 } as DOMRect); component.target = targetEl; @@ -934,12 +940,14 @@ describe('PoPopupComponent:', () => { it(`clampHeightToViewport: should anchor the popup by its bottom edge when opening up`, () => { const popupEl = document.createElement('div'); Object.defineProperty(popupEl, 'offsetHeight', { value: 300, configurable: true }); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion spyOn(popupEl, 'getBoundingClientRect').and.returnValue({ top: 110, bottom: 410 } as DOMRect); const scrollEl = document.createElement('ul'); Object.defineProperty(scrollEl, 'offsetHeight', { value: 300, configurable: true }); component.popupRef = { nativeElement: popupEl } as any; const targetEl = document.createElement('button'); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion spyOn(targetEl, 'getBoundingClientRect').and.returnValue({ top: 518, bottom: 562 } as DOMRect); component.target = targetEl; @@ -968,6 +976,7 @@ describe('PoPopupComponent:', () => { const targetTop = window.innerHeight - 40; const targetBottom = window.innerHeight - 4; const targetEl = document.createElement('button'); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion spyOn(targetEl, 'getBoundingClientRect').and.returnValue({ top: targetTop, bottom: targetBottom } as DOMRect); component.target = targetEl; @@ -991,6 +1000,7 @@ describe('PoPopupComponent:', () => { const targetEl = document.createElement('button'); // target no topo: cabe abaixo (spaceBelow ~= innerHeight) => não abre para cima + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion spyOn(targetEl, 'getBoundingClientRect').and.returnValue({ top: 0, bottom: 0 } as DOMRect); component.target = targetEl; @@ -1042,6 +1052,7 @@ describe('PoPopupComponent:', () => { component.popupRef = { nativeElement: popupEl } as any; const targetEl = document.createElement('button'); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion spyOn(targetEl, 'getBoundingClientRect').and.returnValue({ top: 10 } as DOMRect); component.target = targetEl; From 30d44cf4680e11dba1a803aa59887c3e3574f7b2 Mon Sep 17 00:00:00 2001 From: Luiz Gustavo da Silva Vasconcellos Date: Wed, 28 Oct 2026 11:46:06 -0300 Subject: [PATCH 8/8] build: release 22.0.0-rc.0 --- CHANGELOG.md | 6 ++++++ package.json | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f54850f56..4033c4ea7d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [22.0.0-rc.0](https://github.com/po-ui/po-angular/compare/v22.0.0-next.0...v22.0.0-rc.0) (2026-10-28) + +### Features + +* **schematics:** detecta e preserva o nome da classe do App ([155530f](https://github.com/po-ui/po-angular/commit/155530fe7baa7db5fe958900c98582487979d72c)) + ## [22.0.0-next.0](https://github.com/po-ui/po-angular/compare/v21.33.0...v22.0.0-next.0) (2026-10-09) diff --git a/package.json b/package.json index 6cd6e6d8ae..daab11d93b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "po-ui-sources", - "version": "22.0.0-next.0", + "version": "22.0.0-rc.0", "description": "PO UI", "homepage": "https://po-ui.io", "license": "MIT", @@ -77,7 +77,7 @@ "@angular/router": "~22.2.1", "@capacitor/core": "5.7.2", "@capacitor/network": "^5.0.7", - "@po-ui/style": "22.0.0-next.0", + "@po-ui/style": "22.0.0-rc.0", "custom-idle-queue": "4.0.0", "driver.js": "~1.4.0", "echarts": "^6.1.0",

    Cl^VYG8btzafVx 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 literal 0 HcmV?d00001 diff --git a/projects/app/src/app/app.component.ts b/projects/app/src/app/app.component.ts index 7bf08e2511..9de48f8882 100644 --- a/projects/app/src/app/app.component.ts +++ b/projects/app/src/app/app.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'app-root', templateUrl: './app.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class AppComponent {} diff --git a/projects/app/src/app/app.module.ts b/projects/app/src/app/app.module.ts index 919d44b3de..57d48ac7f7 100644 --- a/projects/app/src/app/app.module.ts +++ b/projects/app/src/app/app.module.ts @@ -1,4 +1,4 @@ -import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; import { BrowserModule } from '@angular/platform-browser'; import { FormsModule } from '@angular/forms'; import { NgModule } from '@angular/core'; @@ -12,6 +12,6 @@ import { AppComponent } from './app.component'; declarations: [AppComponent], bootstrap: [AppComponent], imports: [BrowserModule, FormsModule, RouterModule.forRoot([], {}), PoModule], - providers: [provideHttpClient(withInterceptorsFromDi())] + providers: [provideHttpClient(withXhr(), withInterceptorsFromDi())] }) export class AppModule {} diff --git a/projects/app/src/main.ts b/projects/app/src/main.ts index e4a844c38a..f77aa4e348 100644 --- a/projects/app/src/main.ts +++ b/projects/app/src/main.ts @@ -1,5 +1,5 @@ import { enableProdMode, provideZoneChangeDetection } from '@angular/core'; -import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; +import { platformBrowser } from '@angular/platform-browser'; import { AppModule } from './app/app.module'; import { environment } from './environments/environment'; @@ -8,6 +8,6 @@ if (environment.production) { enableProdMode(); } -platformBrowserDynamic() +platformBrowser() .bootstrapModule(AppModule, { applicationProviders: [provideZoneChangeDetection()] }) .catch(err => console.error('Error in app bootstrap:', err)); diff --git a/projects/app/tsconfig.app.json b/projects/app/tsconfig.app.json index cc10af0398..e1e7730a29 100644 --- a/projects/app/tsconfig.app.json +++ b/projects/app/tsconfig.app.json @@ -5,5 +5,8 @@ "types": [] }, "files": ["src/main.ts", "src/polyfills.ts"], - "include": ["src/**/*.d.ts"] + "include": ["src/**/*.d.ts"], + "angularCompilerOptions": { + "strictTemplates": false + } } diff --git a/projects/code-editor/karma.conf.js b/projects/code-editor/karma.conf.js index 011cc1dbb4..48e41f9154 100644 --- a/projects/code-editor/karma.conf.js +++ b/projects/code-editor/karma.conf.js @@ -9,8 +9,7 @@ module.exports = function (config) { require('karma-jasmine'), require('karma-chrome-launcher'), require('karma-jasmine-html-reporter'), - require('karma-coverage'), - require('@angular-devkit/build-angular/plugins/karma') + require('karma-coverage') ], client: { clearContext: false // leave Jasmine Spec Runner output visible in browser diff --git a/projects/code-editor/package.json b/projects/code-editor/package.json index 0676c54d14..c8801a8bdc 100644 --- a/projects/code-editor/package.json +++ b/projects/code-editor/package.json @@ -19,9 +19,9 @@ "tslib": "^2.6.2" }, "peerDependencies": { - "@angular/common": "^21", - "@angular/core": "^21", - "@angular/forms": "^21", + "@angular/common": "^22", + "@angular/core": "^22", + "@angular/forms": "^22", "@po-ui/ng-components": "0.0.0-PLACEHOLDER", "monaco-editor": "0.44.0", "zone.js": "~0.15.0" diff --git a/projects/code-editor/src/lib/components/po-code-editor/po-code-editor.component.ts b/projects/code-editor/src/lib/components/po-code-editor/po-code-editor.component.ts index ee14c79755..9f57fc5cd3 100644 --- a/projects/code-editor/src/lib/components/po-code-editor/po-code-editor.component.ts +++ b/projects/code-editor/src/lib/components/po-code-editor/po-code-editor.component.ts @@ -1,4 +1,14 @@ -import { AfterViewInit, Component, DoCheck, ElementRef, forwardRef, NgZone, ViewChild, Provider } from '@angular/core'; +import { + AfterViewInit, + Component, + DoCheck, + ElementRef, + forwardRef, + NgZone, + ViewChild, + Provider, + ChangeDetectionStrategy +} from '@angular/core'; import { NG_VALUE_ACCESSOR } from '@angular/forms'; import { PoCodeEditorBaseComponent } from './po-code-editor-base.component'; @@ -60,6 +70,7 @@ const providers: Array = [ selector: 'po-code-editor', templateUrl: './po-code-editor.component.html', providers, + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoCodeEditorComponent extends PoCodeEditorBaseComponent implements AfterViewInit, DoCheck { diff --git a/projects/code-editor/src/lib/components/po-code-editor/samples/sample-po-code-editor-basic/sample-po-code-editor-basic.component.ts b/projects/code-editor/src/lib/components/po-code-editor/samples/sample-po-code-editor-basic/sample-po-code-editor-basic.component.ts index c684b8c0e1..adc106e705 100644 --- a/projects/code-editor/src/lib/components/po-code-editor/samples/sample-po-code-editor-basic/sample-po-code-editor-basic.component.ts +++ b/projects/code-editor/src/lib/components/po-code-editor/samples/sample-po-code-editor-basic/sample-po-code-editor-basic.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-code-editor-basic', templateUrl: './sample-po-code-editor-basic.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoCodeEditorBasicComponent {} diff --git a/projects/code-editor/src/lib/components/po-code-editor/samples/sample-po-code-editor-diff/sample-po-code-editor-diff.component.ts b/projects/code-editor/src/lib/components/po-code-editor/samples/sample-po-code-editor-diff/sample-po-code-editor-diff.component.ts index 1884a96c6a..befc3a0a55 100644 --- a/projects/code-editor/src/lib/components/po-code-editor/samples/sample-po-code-editor-diff/sample-po-code-editor-diff.component.ts +++ b/projects/code-editor/src/lib/components/po-code-editor/samples/sample-po-code-editor-diff/sample-po-code-editor-diff.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-code-editor-diff', templateUrl: './sample-po-code-editor-diff.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoCodeEditorDiffComponent { diff --git a/projects/code-editor/src/lib/components/po-code-editor/samples/sample-po-code-editor-labs/sample-po-code-editor-labs.component.ts b/projects/code-editor/src/lib/components/po-code-editor/samples/sample-po-code-editor-labs/sample-po-code-editor-labs.component.ts index cc80b5510d..bcef0e9cfb 100644 --- a/projects/code-editor/src/lib/components/po-code-editor/samples/sample-po-code-editor-labs/sample-po-code-editor-labs.component.ts +++ b/projects/code-editor/src/lib/components/po-code-editor/samples/sample-po-code-editor-labs/sample-po-code-editor-labs.component.ts @@ -1,10 +1,11 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { PoCheckboxGroupOption, PoSelectOption } from '@po-ui/ng-components'; @Component({ selector: 'sample-po-code-editor-labs', templateUrl: './sample-po-code-editor-labs.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoCodeEditorLabsComponent implements OnInit { diff --git a/projects/code-editor/src/lib/components/po-code-editor/samples/sample-po-code-editor-suggestion/sample-po-code-editor-suggestion.component.ts b/projects/code-editor/src/lib/components/po-code-editor/samples/sample-po-code-editor-suggestion/sample-po-code-editor-suggestion.component.ts index d21c4f15f6..df2ae7126c 100644 --- a/projects/code-editor/src/lib/components/po-code-editor/samples/sample-po-code-editor-suggestion/sample-po-code-editor-suggestion.component.ts +++ b/projects/code-editor/src/lib/components/po-code-editor/samples/sample-po-code-editor-suggestion/sample-po-code-editor-suggestion.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-code-editor-suggestion', templateUrl: './sample-po-code-editor-suggestion.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoCodeEditorSuggestionComponent { diff --git a/projects/code-editor/src/lib/components/po-code-editor/samples/sample-po-code-editor-terraform/sample-po-code-editor-terraform.component.ts b/projects/code-editor/src/lib/components/po-code-editor/samples/sample-po-code-editor-terraform/sample-po-code-editor-terraform.component.ts index f16e7e57e3..253b93737b 100644 --- a/projects/code-editor/src/lib/components/po-code-editor/samples/sample-po-code-editor-terraform/sample-po-code-editor-terraform.component.ts +++ b/projects/code-editor/src/lib/components/po-code-editor/samples/sample-po-code-editor-terraform/sample-po-code-editor-terraform.component.ts @@ -1,8 +1,9 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'sample-po-code-editor-terraform', templateUrl: './sample-po-code-editor-terraform.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class SamplePoCodeEditorTerraformComponent {} diff --git a/projects/code-editor/src/test.ts b/projects/code-editor/src/test.ts index 8f714a3c85..89c3949e89 100644 --- a/projects/code-editor/src/test.ts +++ b/projects/code-editor/src/test.ts @@ -1,11 +1,15 @@ // This file is required by karma.conf.js and loads recursively all the .spec and framework files -import 'zone.js'; -import 'zone.js/testing'; +import { NgModule, provideZoneChangeDetection } from '@angular/core'; import { getTestBed } from '@angular/core/testing'; import { BrowserTestingModule, platformBrowserTesting } from '@angular/platform-browser/testing'; +@NgModule({ + providers: [provideZoneChangeDetection()] +}) +class AppTestingModule {} + // First, initialize the Angular testing environment. -getTestBed().initTestEnvironment(BrowserTestingModule, platformBrowserTesting(), { +getTestBed().initTestEnvironment([BrowserTestingModule, AppTestingModule], platformBrowserTesting(), { teardown: { destroyAfterEach: false } }); diff --git a/projects/code-editor/tsconfig.lib.json b/projects/code-editor/tsconfig.lib.json index cf6fbcdce5..7033507129 100644 --- a/projects/code-editor/tsconfig.lib.json +++ b/projects/code-editor/tsconfig.lib.json @@ -10,9 +10,9 @@ "angularCompilerOptions": { "skipTemplateCodegen": true, "strictMetadataEmit": true, - "fullTemplateTypeCheck": true, "strictInjectionParameters": true, - "enableResourceInlining": true + "enableResourceInlining": true, + "strictTemplates": false }, "exclude": ["src/test.ts", "**/*.spec.ts"] } diff --git a/projects/code-editor/tsconfig.schematics.json b/projects/code-editor/tsconfig.schematics.json index 08454e09fb..0c5918d4dd 100644 --- a/projects/code-editor/tsconfig.schematics.json +++ b/projects/code-editor/tsconfig.schematics.json @@ -1,11 +1,10 @@ { "extends": "../../tsconfig.json", "compilerOptions": { - "baseUrl": "../../", "lib": ["es2018", "dom"], "declaration": true, - "module": "commonjs", - "moduleResolution": "node", + "module": "node16", + "moduleResolution": "node16", "noEmitOnError": true, "noFallthroughCasesInSwitch": true, "noImplicitAny": false, diff --git a/projects/code-editor/tsconfig.spec.json b/projects/code-editor/tsconfig.spec.json index 519c167a68..92ff656bd5 100644 --- a/projects/code-editor/tsconfig.spec.json +++ b/projects/code-editor/tsconfig.spec.json @@ -6,5 +6,8 @@ "skipLibCheck": true }, "files": ["src/test.ts"], - "include": ["**/*.spec.ts", "**/*.d.ts"] + "include": ["**/*.spec.ts", "**/*.d.ts"], + "angularCompilerOptions": { + "strictTemplates": false + } } diff --git a/projects/mcp/tsconfig.json b/projects/mcp/tsconfig.json index 8fa72b5cb0..a754d1dd25 100644 --- a/projects/mcp/tsconfig.json +++ b/projects/mcp/tsconfig.json @@ -1,10 +1,9 @@ { "compilerOptions": { - "baseUrl": ".", "lib": ["es2022"], "declaration": true, - "module": "commonjs", - "moduleResolution": "node", + "module": "node16", + "moduleResolution": "node16", "noEmitOnError": false, "noFallthroughCasesInSwitch": true, "noImplicitAny": true, diff --git a/projects/portal/docs/processors/helpers/file-writer.js b/projects/portal/docs/processors/helpers/file-writer.js index 7184d75bad..73a442c450 100644 --- a/projects/portal/docs/processors/helpers/file-writer.js +++ b/projects/portal/docs/processors/helpers/file-writer.js @@ -79,11 +79,12 @@ module.exports = { generateApiComponentFile: function (docName, component) { const componentSource = ` -import { Component } from '@angular/core'; +import { ChangeDetectionStrategy, Component } from '@angular/core'; @Component({ selector: 'sample-{{docName}}-doc', templateUrl: './sample-{{docName}}-doc.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class Sample{{component}}DocComponent { } @@ -109,11 +110,12 @@ export class Sample{{component}}DocComponent { } }, generateSampleViewComponentFile: function (docName, name, component) { const componentSource = ` -import { Component } from '@angular/core'; +import { ChangeDetectionStrategy, Component } from '@angular/core'; @Component({ selector: 'sample-{{name}}-view', templateUrl: './sample-{{name}}-view.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class Sample{{component}}ViewComponent { @@ -191,10 +193,11 @@ export class Doc{{component}}RoutingModule { } const componentSource = ` import { ActivatedRoute, Router } from '@angular/router'; -import { Component, OnInit, OnDestroy } from '@angular/core'; +import { ChangeDetectionStrategy, Component, OnInit, OnDestroy } from '@angular/core'; @Component({ templateUrl: './doc-{{docName}}.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class Doc{{component}}Component implements OnInit, OnDestroy { diff --git a/projects/portal/src/app/app.component.ts b/projects/portal/src/app/app.component.ts index c6165948e7..a9ee15f66e 100644 --- a/projects/portal/src/app/app.component.ts +++ b/projects/portal/src/app/app.component.ts @@ -1,9 +1,9 @@ -import { Component, OnDestroy, OnInit } from '@angular/core'; +import { Component, OnDestroy, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { Router } from '@angular/router'; import { PoMenuItem, PoNavbarIconAction, PoNavbarItem, PoThemeA11yEnum } from '@po-ui/ng-components'; -import { PoDensityMode } from 'projects/ui/src/lib/enums/po-density-mode.enum'; +import { PoDensityMode } from '../../../ui/src/lib/enums/po-density-mode.enum'; import { firstValueFrom } from 'rxjs'; import { PoThemeService, PoThemeTypeEnum } from '../../../ui/src/lib'; import { poThemeConstant } from './shared/po-theme.constant'; @@ -12,6 +12,7 @@ import { VersionService } from './shared/version.service'; @Component({ selector: 'app-root', templateUrl: './app.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class AppComponent implements OnInit, OnDestroy { diff --git a/projects/portal/src/app/app.module.ts b/projects/portal/src/app/app.module.ts index 6ccbfee28e..0fe04da1b4 100644 --- a/projects/portal/src/app/app.module.ts +++ b/projects/portal/src/app/app.module.ts @@ -1,5 +1,4 @@ import { BrowserModule } from '@angular/platform-browser'; -import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { NgModule } from '@angular/core'; import { SharedModule } from './shared/shared.module'; @@ -7,13 +6,13 @@ import { SharedModule } from './shared/shared.module'; import { AppComponent } from './app.component'; import { AppRoutingModule } from './app-routing.module'; import { MenuService } from './menu.service'; -import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; @NgModule({ declarations: [AppComponent], exports: [], bootstrap: [AppComponent], - imports: [BrowserModule, BrowserAnimationsModule, SharedModule, AppRoutingModule], - providers: [MenuService, provideHttpClient(withInterceptorsFromDi())] + imports: [BrowserModule, SharedModule, AppRoutingModule], + providers: [MenuService, provideHttpClient(withXhr(), withInterceptorsFromDi())] }) export class AppModule {} diff --git a/projects/portal/src/app/documentation/documentation-list.component.ts b/projects/portal/src/app/documentation/documentation-list.component.ts index 92dedcc380..fc5dd4b56a 100644 --- a/projects/portal/src/app/documentation/documentation-list.component.ts +++ b/projects/portal/src/app/documentation/documentation-list.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { Router } from '@angular/router'; import { PoListViewAction, PoListViewFieldProperties } from '@po-ui/ng-components'; @@ -8,6 +8,7 @@ import { DocumentationService } from '../documentation/documentation.service'; @Component({ templateUrl: './documentation-list.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class DocumentationListComponent implements OnInit { diff --git a/projects/portal/src/app/documentation/documentation.component.ts b/projects/portal/src/app/documentation/documentation.component.ts index 65171eee8b..06f86ec35c 100644 --- a/projects/portal/src/app/documentation/documentation.component.ts +++ b/projects/portal/src/app/documentation/documentation.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { MenuComponentsService } from './menu-components.service'; @@ -6,6 +6,7 @@ import { MenuComponentsService } from './menu-components.service'; @Component({ templateUrl: './documentation.component.html', providers: [MenuComponentsService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class DocumentationComponent implements OnInit { diff --git a/projects/portal/src/app/documentation/ia-tools-llms/ia-tools-llms.component.ts b/projects/portal/src/app/documentation/ia-tools-llms/ia-tools-llms.component.ts index 57e99edacb..1ac78631c5 100644 --- a/projects/portal/src/app/documentation/ia-tools-llms/ia-tools-llms.component.ts +++ b/projects/portal/src/app/documentation/ia-tools-llms/ia-tools-llms.component.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ templateUrl: './ia-tools-llms.component.html', @@ -13,6 +13,7 @@ import { Component } from '@angular/core'; } ` ], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class IaToolsLlmsComponent {} diff --git a/projects/portal/src/app/documentation/ia-tools-mcp/ia-tools-mcp.component.ts b/projects/portal/src/app/documentation/ia-tools-mcp/ia-tools-mcp.component.ts index 4710b5c465..171b3d851e 100644 --- a/projects/portal/src/app/documentation/ia-tools-mcp/ia-tools-mcp.component.ts +++ b/projects/portal/src/app/documentation/ia-tools-mcp/ia-tools-mcp.component.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ templateUrl: './ia-tools-mcp.component.html', @@ -13,6 +13,7 @@ import { Component } from '@angular/core'; } ` ], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class IaToolsMcpComponent {} diff --git a/projects/portal/src/app/guide/guides.components.ts b/projects/portal/src/app/guide/guides.components.ts index 524e5e65af..1193b6915b 100644 --- a/projects/portal/src/app/guide/guides.components.ts +++ b/projects/portal/src/app/guide/guides.components.ts @@ -1,4 +1,4 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { MenuGuidesService } from './menu-guides.service'; @@ -6,6 +6,7 @@ import { MenuGuidesService } from './menu-guides.service'; @Component({ templateUrl: './guides.component.html', providers: [MenuGuidesService], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class GuidesComponent implements OnInit { diff --git a/projects/portal/src/app/home/home-colorful/home-colorful.component.ts b/projects/portal/src/app/home/home-colorful/home-colorful.component.ts index a148baad08..5a4c84f964 100644 --- a/projects/portal/src/app/home/home-colorful/home-colorful.component.ts +++ b/projects/portal/src/app/home/home-colorful/home-colorful.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { pluck } from 'rxjs/operators'; import { HomeColorfulService } from './home-colorful.service'; @@ -6,6 +6,7 @@ import { HomeColorfulService } from './home-colorful.service'; selector: 'app-home-colorful', templateUrl: './home-colorful.component.html', styleUrls: ['./home-colorful.component.css'], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class HomeColorfulComponent implements OnInit { diff --git a/projects/portal/src/app/home/home.component.ts b/projects/portal/src/app/home/home.component.ts index 3f38cfb0f3..40d31f9aa6 100644 --- a/projects/portal/src/app/home/home.component.ts +++ b/projects/portal/src/app/home/home.component.ts @@ -1,10 +1,11 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectionStrategy } from '@angular/core'; import { Router } from '@angular/router'; @Component({ selector: 'app-home', templateUrl: 'home.component.html', styleUrls: ['home.component.css'], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class HomeComponent { diff --git a/projects/portal/src/app/icons/icons.component.ts b/projects/portal/src/app/icons/icons.component.ts index 4714c584cd..0d28932a33 100644 --- a/projects/portal/src/app/icons/icons.component.ts +++ b/projects/portal/src/app/icons/icons.component.ts @@ -1,11 +1,12 @@ import { HttpClient } from '@angular/common/http'; -import { Component, ViewChild } from '@angular/core'; +import { Component, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { PoComboOption, PoNotificationService, PoSearchComponent, PoSearchFilterMode } from '../../../../ui/src/lib'; @Component({ selector: 'app-icons', templateUrl: './icons.component.html', styleUrls: ['icons.component.css'], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class IconsComponent { diff --git a/projects/portal/src/app/theme-builder/theme-builder.component.ts b/projects/portal/src/app/theme-builder/theme-builder.component.ts index d3298602f0..79830f1ed2 100644 --- a/projects/portal/src/app/theme-builder/theme-builder.component.ts +++ b/projects/portal/src/app/theme-builder/theme-builder.component.ts @@ -5,7 +5,8 @@ import { ElementRef, OnInit, ViewChild, - ViewEncapsulation + ViewEncapsulation, + ChangeDetectionStrategy } from '@angular/core'; import { FormBuilder, FormGroup } from '@angular/forms'; @@ -35,6 +36,7 @@ import { templateUrl: './theme-builder.component.html', styleUrls: ['theme-builder.component.css'], encapsulation: ViewEncapsulation.None, + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class ThemeBuilderComponent implements AfterViewInit, OnInit { diff --git a/projects/portal/src/app/tools/tools-dynamic-form/tools-dynamic-form.component.ts b/projects/portal/src/app/tools/tools-dynamic-form/tools-dynamic-form.component.ts index 6a92a29e8f..5ae4dbb34f 100644 --- a/projects/portal/src/app/tools/tools-dynamic-form/tools-dynamic-form.component.ts +++ b/projects/portal/src/app/tools/tools-dynamic-form/tools-dynamic-form.component.ts @@ -1,4 +1,4 @@ -import { Component, ViewChild } from '@angular/core'; +import { Component, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { NgForm } from '@angular/forms'; import { @@ -11,12 +11,13 @@ import { PoTableColumn, PoToasterOrientation } from '@po-ui/ng-components'; -import { PoButtonType } from 'projects/ui/src/lib'; +import { PoButtonType } from '@po-ui/ng-components'; @Component({ selector: 'app-tools-dynamic-form', templateUrl: 'tools-dynamic-form.component.html', styleUrls: ['tools-dynamic-form.component.css'], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class ToolsDynamicFormComponent { diff --git a/projects/portal/src/app/tools/tools-dynamic-view/tools-dynamic-view.component.ts b/projects/portal/src/app/tools/tools-dynamic-view/tools-dynamic-view.component.ts index 94b4ba6c56..067d3716ff 100644 --- a/projects/portal/src/app/tools/tools-dynamic-view/tools-dynamic-view.component.ts +++ b/projects/portal/src/app/tools/tools-dynamic-view/tools-dynamic-view.component.ts @@ -1,6 +1,5 @@ -import { Component, ViewChild } from '@angular/core'; +import { Component, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { NgForm } from '@angular/forms'; -import { trigger, state, style, transition, animate } from '@angular/animations'; import { PoDynamicFormField, @@ -18,6 +17,7 @@ import { selector: 'app-tools-dynamic-view', templateUrl: 'tools-dynamic-view.component.html', styleUrls: ['tools-dynamic-view.component.css'], + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class ToolsDynamicViewComponent { diff --git a/projects/portal/src/main.ts b/projects/portal/src/main.ts index 9a13dc9636..e3e564a866 100644 --- a/projects/portal/src/main.ts +++ b/projects/portal/src/main.ts @@ -1,5 +1,5 @@ import { enableProdMode, provideZoneChangeDetection } from '@angular/core'; -import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; +import { platformBrowser } from '@angular/platform-browser'; import { AppModule } from './app/app.module'; import { environment } from './environments/environment'; @@ -8,4 +8,4 @@ if (environment.production) { enableProdMode(); } -platformBrowserDynamic().bootstrapModule(AppModule, { applicationProviders: [provideZoneChangeDetection()] }); +platformBrowser().bootstrapModule(AppModule, { applicationProviders: [provideZoneChangeDetection()] }); diff --git a/projects/portal/src/test.ts b/projects/portal/src/test.ts index 2005284d1d..1fdf199a87 100644 --- a/projects/portal/src/test.ts +++ b/projects/portal/src/test.ts @@ -8,7 +8,7 @@ import 'zone.js/dist/jasmine-patch'; import 'zone.js/dist/async-test'; import 'zone.js/dist/fake-async-test'; import { getTestBed } from '@angular/core/testing'; -import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing'; +import { BrowserTestingModule, platformBrowserTesting } from '@angular/platform-browser/testing'; // Unfortunately there's no typing for the `__karma__` variable. Just declare it as any. declare const __karma__: any; @@ -18,7 +18,7 @@ declare const require: any; __karma__.loaded = () => {}; // First, initialize the Angular testing environment. -getTestBed().initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting()); +getTestBed().initTestEnvironment(BrowserTestingModule, platformBrowserTesting()); // Then we find all the tests. const context = require.context('./', true, /\.spec\.ts$/); // And load the modules. diff --git a/projects/portal/src/tsconfig.app.json b/projects/portal/src/tsconfig.app.json index d0c26f13be..b58113889c 100644 --- a/projects/portal/src/tsconfig.app.json +++ b/projects/portal/src/tsconfig.app.json @@ -2,7 +2,6 @@ "extends": "../tsconfig.json", "compilerOptions": { "outDir": "../out-tsc/app", - "baseUrl": "", "types": ["node"], "typeRoots": ["node_modules/@types"] }, diff --git a/projects/portal/src/tsconfig.spec.json b/projects/portal/src/tsconfig.spec.json index afb1dac35b..bf4d14b44e 100644 --- a/projects/portal/src/tsconfig.spec.json +++ b/projects/portal/src/tsconfig.spec.json @@ -2,7 +2,6 @@ "extends": "../tsconfig.json", "compilerOptions": { "outDir": "../out-tsc/spec", - "baseUrl": "", "typeRoots": ["node_modules/@types"], "types": ["jasmine", "node"] }, diff --git a/projects/portal/tsconfig.app.json b/projects/portal/tsconfig.app.json index cc10af0398..e1e7730a29 100644 --- a/projects/portal/tsconfig.app.json +++ b/projects/portal/tsconfig.app.json @@ -5,5 +5,8 @@ "types": [] }, "files": ["src/main.ts", "src/polyfills.ts"], - "include": ["src/**/*.d.ts"] + "include": ["src/**/*.d.ts"], + "angularCompilerOptions": { + "strictTemplates": false + } } diff --git a/projects/schematics/package.json b/projects/schematics/package.json index cb6ea550fb..9c1990bd1f 100644 --- a/projects/schematics/package.json +++ b/projects/schematics/package.json @@ -14,9 +14,9 @@ "postbuild": "gulp replaceVersion && cd ../../dist/ng-schematics && npm pack" }, "peerDependencies": { - "@angular-devkit/core": "^21", - "@angular-devkit/schematics": "^21", - "@schematics/angular": "^21" + "@angular-devkit/core": "^22", + "@angular-devkit/schematics": "^22", + "@schematics/angular": "^22" }, "dependencies": { "jsonc-parser": "^3.2.0" diff --git a/projects/schematics/src/build-component/build-component.ts b/projects/schematics/src/build-component/build-component.ts index 3c90879c5f..f4606e48e6 100644 --- a/projects/schematics/src/build-component/build-component.ts +++ b/projects/schematics/src/build-component/build-component.ts @@ -17,12 +17,28 @@ import { parseName } from '@schematics/angular/utility/parse-name'; import { validateHtmlSelector } from '@schematics/angular/utility/validation'; import { supportedCssExtensions } from '../utils/supported-css-extensions'; +import { detectFileNameStyleGuide, FileNameStyleGuide, getFileNameSuffixes } from '../utils/file-name-style-guide'; import { getProjectFromWorkspace, getDefaultPath, getWorkspaceConfigGracefully, getProjectMainFile } from '../project'; import { addModuleImportToModule, addDeclarationComponentToModule, addExportComponentToModule } from '../module'; import { Schema as ComponentOptions } from './schema'; import { WorkspaceSchema } from '@schematics/angular/utility/workspace-models'; import { isStandaloneApp } from '@schematics/angular/utility/ng-ast-utils'; +/** + * Returns the dasherized base file names (without extension) for the generated component, + * module and routing module, honoring the resolved file name style guide. + */ +export function getFileNames(name: string, styleGuide: FileNameStyleGuide) { + const dasherizedName = strings.dasherize(name); + const suffixes = getFileNameSuffixes(styleGuide); + + return { + componentFileName: `${dasherizedName}${suffixes.componentSuffix}`, + moduleFileName: `${dasherizedName}${suffixes.moduleSuffix}`, + routingFileName: `${dasherizedName}${suffixes.routingModuleSuffix}` + }; +} + export function buildComponent(options: ComponentOptions): Rule { return (host: Tree) => { const workspace = getWorkspaceConfigGracefully(host) ?? ({} as WorkspaceSchema); @@ -31,6 +47,10 @@ export function buildComponent(options: ComponentOptions): Rule { const isStandAlone = isStandaloneApp(host, browserEntryPoint); const urlFile = !isStandAlone ? './files' : './files-standalone'; + // Use the explicit option when provided, otherwise auto-detect the style already used by the project. + const styleGuide: FileNameStyleGuide = + options.fileNameStyleGuide ?? detectFileNameStyleGuide(host, browserEntryPoint); + if (options.path === undefined && project) { options.path = getDefaultPath(project); } @@ -51,19 +71,22 @@ export function buildComponent(options: ComponentOptions): Rule { validateName(options.name); validateHtmlSelector((options).selector); + const fileNames = getFileNames(options.name, styleGuide); + const templateSource = apply(url(urlFile), [ - options.routing ? noop() : filter(path => !path.endsWith('-routing.module.ts.template')), - options.createModule ? noop() : filter(path => !path.endsWith('.module.ts.template')), + options.routing ? noop() : filter(path => !path.endsWith('__routingFileName__.ts.template')), + options.createModule ? noop() : filter(path => !path.endsWith('__moduleFileName__.ts.template')), options.skipTests ? filter(path => !path.endsWith('.spec.ts.template')) : noop(), applyTemplates({ ...strings, - ...options + ...options, + ...fileNames }), move(null as any, parsedPath.path) ]); return chain([ - options.createModule ? addImportToModule(options) : addDeclarationToModule(options), + options.createModule ? addImportToModule(options, styleGuide) : addDeclarationToModule(options, styleGuide), mergeWith(templateSource) ]); }; @@ -87,16 +110,15 @@ function buildSelector(options: ComponentOptions, projectPrefix: string) { return selector; } -function addImportToModule(options: ComponentOptions): Rule { +function addImportToModule(options: ComponentOptions, styleGuide: FileNameStyleGuide): Rule { return (tree: Tree) => { if (!options.module || options.routing) { return tree; } const modulePath = options.module; + const { moduleFileName } = getFileNames(options.name, styleGuide); - const componentModulePath = normalize( - `/${options.path}/` + strings.dasherize(options.name) + '/' + strings.dasherize(options.name) + '.module' - ); + const componentModulePath = normalize(`/${options.path}/` + strings.dasherize(options.name) + '/' + moduleFileName); const relativePath = buildRelativePath(modulePath, componentModulePath); const classifiedModuleName = strings.classify(`${options.name}Module`); @@ -105,17 +127,16 @@ function addImportToModule(options: ComponentOptions): Rule { }; } -function addDeclarationToModule(options: ComponentOptions): Rule { +function addDeclarationToModule(options: ComponentOptions, styleGuide: FileNameStyleGuide): Rule { return (tree: Tree) => { if (!options.module) { return tree; } const modulePath = options.module; + const { componentFileName } = getFileNames(options.name, styleGuide); - const componentPath = normalize( - `/${options.path}/` + strings.dasherize(options.name) + '/' + strings.dasherize(options.name) + '.component' - ); + const componentPath = normalize(`/${options.path}/` + strings.dasherize(options.name) + '/' + componentFileName); const relativePath = buildRelativePath(modulePath, componentPath); const classifiedName = strings.classify(`${options.name}Component`); diff --git a/projects/schematics/src/build-component/schema.ts b/projects/schematics/src/build-component/schema.ts index 263d5b868e..cb9a31180b 100644 --- a/projects/schematics/src/build-component/schema.ts +++ b/projects/schematics/src/build-component/schema.ts @@ -40,4 +40,14 @@ export interface Schema { /** When true, create a component module. */ createModule?: boolean; + + /** + * The file naming convention to use for generated files. + * + * - `2016`: classic Angular Style Guide suffixes (e.g. `name.component.ts`, `name.module.ts`). + * - `2025`: current Angular convention without type suffixes (e.g. `name.ts`, `name-module.ts`). + * + * When omitted, the convention already used by the project is auto-detected. + */ + fileNameStyleGuide?: '2016' | '2025'; } diff --git a/projects/schematics/src/standalone/standalone.ts b/projects/schematics/src/standalone/standalone.ts index 3ac6e2764d..59080af1a6 100644 --- a/projects/schematics/src/standalone/standalone.ts +++ b/projects/schematics/src/standalone/standalone.ts @@ -1,6 +1,6 @@ import { Rule, Tree } from '@angular-devkit/schematics'; -import * as ts from '@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript'; +import * as ts from 'typescript'; import { WorkspaceSchema } from '@schematics/angular/utility/workspace-models'; import { addRootProvider } from '@schematics/angular/utility'; import { applyToUpdateRecorder } from '@schematics/angular/utility/change'; @@ -15,7 +15,7 @@ export function importProvidersFrom( moduleName: string, packageName: string, argsImportProvidersFrom: string -) { +): Rule { return (host: Tree) => { const workspace = getWorkspaceConfigGracefully(host) ?? ({} as WorkspaceSchema); const project: any = getProjectFromWorkspace(workspace, options.project); @@ -44,7 +44,7 @@ function addProvider( return addRootProvider( projectName, ({ code, external }) => code`${external('importProvidersFrom', '@angular/core')}(${argsImportProvidersFrom})` - ); + ) as unknown as Rule; } function addImport(host: Tree, filePath: string, symbolName: string, moduleName: string): void { diff --git a/projects/schematics/src/utils/file-name-style-guide.ts b/projects/schematics/src/utils/file-name-style-guide.ts new file mode 100644 index 0000000000..006111b734 --- /dev/null +++ b/projects/schematics/src/utils/file-name-style-guide.ts @@ -0,0 +1,141 @@ +import { Tree } from '@angular-devkit/schematics'; +import * as ts from 'typescript'; + +/** + * Supported Angular file name style guides. + * + * - `2016`: classic Angular Style Guide, file names include the type suffix + * (e.g. `app.component.ts`, `app.module.ts`). + * - `2025`: current Angular convention, file names omit the type suffix + * (e.g. `app.ts`, `app-module.ts`). + */ +export type FileNameStyleGuide = '2016' | '2025'; + +/** + * The file name suffixes applied to generated files for each style guide. + */ +export interface FileNameSuffixes { + componentSuffix: string; + moduleSuffix: string; + routingModuleSuffix: string; +} + +/** + * Returns the file name suffixes to apply to generated files for the given style guide. + */ +export function getFileNameSuffixes(styleGuide: FileNameStyleGuide): FileNameSuffixes { + const isStyleGuide2016 = styleGuide === '2016'; + + return { + componentSuffix: isStyleGuide2016 ? '.component' : '', + moduleSuffix: isStyleGuide2016 ? '.module' : '-module', + routingModuleSuffix: isStyleGuide2016 ? '-routing.module' : '-routing-module' + }; +} + +/** + * Detects the file name style guide already used by the project by inspecting the root + * symbol (component or module) bootstrapped in the given main file. + * + * The import path of the bootstrapped symbol reveals the convention: + * - `./app/app.component` or `./app/app.module` => `2016` + * - `./app/app` or `./app/app-module` => `2025` + * + * When the main file can not be read or parsed, it falls back to `2025` (the current default). + */ +export function detectFileNameStyleGuide(host: Tree, mainPath: string): FileNameStyleGuide { + const bootstrapImportPath = getBootstrapImportPath(host, mainPath); + + if (!bootstrapImportPath) { + return '2025'; + } + + const fileName = bootstrapImportPath.split('/').pop() ?? ''; + + return fileName.endsWith('.component') || fileName.endsWith('.module') ? '2016' : '2025'; +} + +/** + * Reads the main file and returns the module specifier of the imported symbol that is passed + * to `bootstrapApplication(...)` (standalone) or `bootstrapModule(...)` (NgModule). + */ +function getBootstrapImportPath(host: Tree, mainPath: string): string | undefined { + if (!host.exists(mainPath)) { + return undefined; + } + + const content = host.read(mainPath)?.toString('utf-8'); + + if (!content) { + return undefined; + } + + const source = ts.createSourceFile(mainPath, content, ts.ScriptTarget.Latest, true); + const bootstrapSymbol = getBootstrappedSymbolName(source); + + if (!bootstrapSymbol) { + return undefined; + } + + return getImportSpecifierForSymbol(source, bootstrapSymbol); +} + +/** + * Finds the name of the symbol passed as the first argument to a `bootstrapApplication` or + * `bootstrapModule` call. + */ +function getBootstrappedSymbolName(source: ts.SourceFile): string | undefined { + let symbolName: string | undefined; + + const visit = (node: ts.Node): void => { + if (symbolName) { + return; + } + + if ( + ts.isCallExpression(node) && + ts.isIdentifier(node.expression) && + (node.expression.text === 'bootstrapApplication' || node.expression.text === 'bootstrapModule') + ) { + const firstArgument = node.arguments[0]; + + if (firstArgument && ts.isIdentifier(firstArgument)) { + symbolName = firstArgument.text; + return; + } + } + + ts.forEachChild(node, visit); + }; + + ts.forEachChild(source, visit); + + return symbolName; +} + +/** + * Returns the module specifier used to import the given symbol name. + */ +function getImportSpecifierForSymbol(source: ts.SourceFile, symbolName: string): string | undefined { + for (const statement of source.statements) { + if ( + !ts.isImportDeclaration(statement) || + !statement.importClause || + !statement.importClause.namedBindings || + !ts.isNamedImports(statement.importClause.namedBindings) || + !ts.isStringLiteral(statement.moduleSpecifier) + ) { + continue; + } + + const importsSymbol = statement.importClause.namedBindings.elements.some( + element => element.name.text === symbolName + ); + + if (importsSymbol) { + return statement.moduleSpecifier.text; + } + } + + return undefined; +} diff --git a/projects/schematics/src/utils/index.ts b/projects/schematics/src/utils/index.ts index be8239e5d0..67c7f76e53 100644 --- a/projects/schematics/src/utils/index.ts +++ b/projects/schematics/src/utils/index.ts @@ -1 +1,2 @@ export * from './supported-css-extensions'; +export * from './file-name-style-guide'; diff --git a/projects/schematics/tsconfig.json b/projects/schematics/tsconfig.json index b0e38bebab..8d734c7aff 100644 --- a/projects/schematics/tsconfig.json +++ b/projects/schematics/tsconfig.json @@ -1,10 +1,9 @@ { "compilerOptions": { - "baseUrl": ".", "lib": ["es2022", "dom"], "declaration": true, - "module": "commonjs", - "moduleResolution": "node", + "module": "node16", + "moduleResolution": "node16", "noEmitOnError": true, "noFallthroughCasesInSwitch": true, "noImplicitAny": false, diff --git a/projects/storage/karma.conf.js b/projects/storage/karma.conf.js index 87203560d5..ad4103b113 100644 --- a/projects/storage/karma.conf.js +++ b/projects/storage/karma.conf.js @@ -9,8 +9,7 @@ module.exports = function (config) { require('karma-jasmine'), require('karma-chrome-launcher'), require('karma-jasmine-html-reporter'), - require('karma-coverage'), - require('@angular-devkit/build-angular/plugins/karma') + require('karma-coverage') ], client: { clearContext: false // leave Jasmine Spec Runner output visible in browser diff --git a/projects/storage/package.json b/projects/storage/package.json index a36769dd60..aae7c4acb4 100644 --- a/projects/storage/package.json +++ b/projects/storage/package.json @@ -18,7 +18,7 @@ "tslib": "^2.6.2" }, "peerDependencies": { - "@angular/core": "^21", + "@angular/core": "^22", "custom-idle-queue": "3.0.1", "localforage": "1.10.0", "lokijs": "1.5.12", diff --git a/projects/storage/src/lib/drivers/lokijs/po-loki-driver.spec.ts b/projects/storage/src/lib/drivers/lokijs/po-loki-driver.spec.ts index 6fa29925c4..9929230d6b 100644 --- a/projects/storage/src/lib/drivers/lokijs/po-loki-driver.spec.ts +++ b/projects/storage/src/lib/drivers/lokijs/po-loki-driver.spec.ts @@ -170,7 +170,7 @@ describe('PoLokiDriver', () => { it('initStorage: should call `configureLokiStorage` and `databaseInitialize.bind`', () => { spyOn(poLokiDriver, 'configureLokiStorage'); - spyOn(poLokiDriver['databaseInitialize'], 'bind'); + spyOn(poLokiDriver['databaseInitialize'] as any, 'bind'); poLokiDriver['initStorage'](getConfigMock()); diff --git a/projects/storage/src/lib/services/po-storage.service.spec.ts b/projects/storage/src/lib/services/po-storage.service.spec.ts index 6178c3d8e9..99af39bd8e 100644 --- a/projects/storage/src/lib/services/po-storage.service.spec.ts +++ b/projects/storage/src/lib/services/po-storage.service.spec.ts @@ -666,11 +666,10 @@ describe('PoStorageService:', () => { it('getStorageInstance: should return localForage instance', async () => { const localForageMock: LocalForage = createLocalForageInstance(); - spyOn(LocalForage, 'createInstance').and.returnValue(localForageMock); spyOn(PoStorageService, 'getDefaultConfig').and.returnValue({}); - spyOn(poStorageService, 'setDriver').and.returnValue(Promise.resolve()); + spyOn(poStorageService, 'defineLocalForageDriver').and.returnValue(Promise.resolve(localForageMock)); - expect(await poStorageService['getStorageInstance'](getConfigMock())).toEqual(localForageMock); + expect(await poStorageService['getStorageInstance'](getConfigMock())).toBe(localForageMock); }); }); }); diff --git a/projects/storage/tsconfig.lib.json b/projects/storage/tsconfig.lib.json index cf6fbcdce5..7033507129 100644 --- a/projects/storage/tsconfig.lib.json +++ b/projects/storage/tsconfig.lib.json @@ -10,9 +10,9 @@ "angularCompilerOptions": { "skipTemplateCodegen": true, "strictMetadataEmit": true, - "fullTemplateTypeCheck": true, "strictInjectionParameters": true, - "enableResourceInlining": true + "enableResourceInlining": true, + "strictTemplates": false }, "exclude": ["src/test.ts", "**/*.spec.ts"] } diff --git a/projects/storage/tsconfig.schematics.json b/projects/storage/tsconfig.schematics.json index 2ae8422dc0..7684ef6ffa 100644 --- a/projects/storage/tsconfig.schematics.json +++ b/projects/storage/tsconfig.schematics.json @@ -1,11 +1,10 @@ { "extends": "../../tsconfig.json", "compilerOptions": { - "baseUrl": "../../", "lib": ["es2022", "dom"], "declaration": true, - "module": "commonjs", - "moduleResolution": "node", + "module": "node16", + "moduleResolution": "node16", "noEmitOnError": true, "noFallthroughCasesInSwitch": true, "noImplicitAny": false, diff --git a/projects/storage/tsconfig.spec.json b/projects/storage/tsconfig.spec.json index 519c167a68..92ff656bd5 100644 --- a/projects/storage/tsconfig.spec.json +++ b/projects/storage/tsconfig.spec.json @@ -6,5 +6,8 @@ "skipLibCheck": true }, "files": ["src/test.ts"], - "include": ["**/*.spec.ts", "**/*.d.ts"] + "include": ["**/*.spec.ts", "**/*.d.ts"], + "angularCompilerOptions": { + "strictTemplates": false + } } diff --git a/projects/sync/README.md b/projects/sync/README.md index 3dcb95f171..19926b547a 100644 --- a/projects/sync/README.md +++ b/projects/sync/README.md @@ -6,7 +6,7 @@ O **PO Sync** é uma biblioteca para aplicações Angular que possibilita armaze Instalando com schematic(recomendado): ``` -ng add @po-ui/ng-sync +ng add @po-ui/ng-sync@next ``` Instalando com npm: diff --git a/projects/sync/karma.conf.js b/projects/sync/karma.conf.js index b38aa86405..b4e6878935 100644 --- a/projects/sync/karma.conf.js +++ b/projects/sync/karma.conf.js @@ -9,8 +9,7 @@ module.exports = function (config) { require('karma-jasmine'), require('karma-chrome-launcher'), require('karma-jasmine-html-reporter'), - require('karma-coverage'), - require('@angular-devkit/build-angular/plugins/karma') + require('karma-coverage') ], client: { clearContext: false // leave Jasmine Spec Runner output visible in browser diff --git a/projects/sync/package.json b/projects/sync/package.json index 4a66812107..98f9362898 100644 --- a/projects/sync/package.json +++ b/projects/sync/package.json @@ -26,8 +26,8 @@ "tslib": "^2.6.2" }, "peerDependencies": { - "@angular/core": "^21", - "@angular-devkit/schematics": "^21", + "@angular/core": "^22", + "@angular-devkit/schematics": "^22", "@capacitor/core": "^6.2.0", "@capacitor/network": "^6.0.1", "@po-ui/ng-storage": "0.0.0-PLACEHOLDER", diff --git a/projects/sync/schematics/migrations.json b/projects/sync/schematics/migrations.json index fe1bc76e8b..46c618d747 100644 --- a/projects/sync/schematics/migrations.json +++ b/projects/sync/schematics/migrations.json @@ -65,6 +65,11 @@ "version": "0.0.0-PLACEHOLDER", "description": "Atualiza @po-ui/ng-sync para v21", "factory": "./ng-update/v21/index" + }, + "migration-v22": { + "version": "0.0.0-PLACEHOLDER", + "description": "Atualiza @po-ui/ng-sync para v22", + "factory": "./ng-update/v22/index" } } } diff --git a/projects/sync/schematics/ng-add/setup-project.ts b/projects/sync/schematics/ng-add/setup-project.ts index 3c6b371747..d19b550ca0 100644 --- a/projects/sync/schematics/ng-add/setup-project.ts +++ b/projects/sync/schematics/ng-add/setup-project.ts @@ -133,7 +133,7 @@ function addProviderToModuleProvider( ) { const moduleSource = getSourceFile(tree, modulePath); const changes = addProviderToModule( - moduleSource as any, + moduleSource, modulePath, ` ${provider}`, diff --git a/projects/sync/schematics/ng-update/v22/changes.ts b/projects/sync/schematics/ng-update/v22/changes.ts new file mode 100644 index 0000000000..197dbab8a9 --- /dev/null +++ b/projects/sync/schematics/ng-update/v22/changes.ts @@ -0,0 +1,12 @@ +import { UpdateDependencies } from '@po-ui/ng-schematics/package-config'; + +export const updateDepedenciesVersion: UpdateDependencies = { + dependencies: [ + '@po-ui/ng-components', + '@po-ui/ng-code-editor', + '@po-ui/ng-templates', + '@po-ui/ng-storage', + '@po-ui/ng-sync', + '@po-ui/style' + ] +}; diff --git a/projects/sync/schematics/ng-update/v22/index.ts b/projects/sync/schematics/ng-update/v22/index.ts new file mode 100644 index 0000000000..4a806ce232 --- /dev/null +++ b/projects/sync/schematics/ng-update/v22/index.ts @@ -0,0 +1,16 @@ +import { chain, Tree, SchematicContext } from '@angular-devkit/schematics'; +import { NodePackageInstallTask } from '@angular-devkit/schematics/tasks'; + +import { updatePackageJson } from '@po-ui/ng-schematics/package-config'; + +import { updateDepedenciesVersion } from './changes'; + +export default function () { + return chain([updatePackageJson('0.0.0-PLACEHOLDER', updateDepedenciesVersion), postUpdate()]); +} + +function postUpdate() { + return (_: Tree, context: SchematicContext) => { + context.addTask(new NodePackageInstallTask()); + }; +} diff --git a/projects/sync/src/lib/models/po-entity/po-entity.model.spec.ts b/projects/sync/src/lib/models/po-entity/po-entity.model.spec.ts index eab9b589c2..8d5620563a 100644 --- a/projects/sync/src/lib/models/po-entity/po-entity.model.spec.ts +++ b/projects/sync/src/lib/models/po-entity/po-entity.model.spec.ts @@ -133,7 +133,7 @@ describe('PoEntity:', () => { const limitedCallWrapReturn = 'limitedCallWrap return'; spyOn(poEntity['poSchemaService'], 'limitedCallWrap').and.returnValue(limitedCallWrapReturn); - spyOn(poEntity['selectSaveType'], 'bind'); + spyOn(poEntity['selectSaveType'] as any, 'bind'); const result = await poEntity.save(modelMock, customRequestId); diff --git a/projects/sync/src/lib/services/po-event-sourcing/po-event-sourcing.service.spec.ts b/projects/sync/src/lib/services/po-event-sourcing/po-event-sourcing.service.spec.ts index d7ee4636c2..14d6b52607 100644 --- a/projects/sync/src/lib/services/po-event-sourcing/po-event-sourcing.service.spec.ts +++ b/projects/sync/src/lib/services/po-event-sourcing/po-event-sourcing.service.spec.ts @@ -1,5 +1,5 @@ import { provideHttpClientTesting } from '@angular/common/http/testing'; -import { HttpResponse, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { HttpResponse, provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { TestBed } from '@angular/core/testing'; @@ -70,7 +70,7 @@ describe('PoEventSourcingService:', () => { { provide: PoSchemaService, useClass: PoSchemaService }, { provide: PoSchemaDefinitionService, useClass: PoSchemaDefinitionService }, { provide: PoHttpClientService, useClass: PoHttpClientService }, - provideHttpClient(withInterceptorsFromDi()), + provideHttpClient(withXhr(), withInterceptorsFromDi()), provideHttpClientTesting() ] }); diff --git a/projects/sync/src/lib/services/po-http-client/po-http-client.service.spec.ts b/projects/sync/src/lib/services/po-http-client/po-http-client.service.spec.ts index 728a3a301e..96d7d7bcf8 100644 --- a/projects/sync/src/lib/services/po-http-client/po-http-client.service.spec.ts +++ b/projects/sync/src/lib/services/po-http-client/po-http-client.service.spec.ts @@ -1,5 +1,5 @@ import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; -import { HttpResponse, HttpHeaders, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { HttpResponse, HttpHeaders, provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http'; import { TestBed } from '@angular/core/testing'; import { of } from 'rxjs'; @@ -15,7 +15,11 @@ describe('PoHttpClientService', () => { beforeEach(() => { TestBed.configureTestingModule({ imports: [], - providers: [PoHttpClientService, provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting()] + providers: [ + PoHttpClientService, + provideHttpClient(withXhr(), withInterceptorsFromDi()), + provideHttpClientTesting() + ] }); poHttpClientService = TestBed.inject(PoHttpClientService); diff --git a/projects/sync/src/lib/services/po-sync/po-sync.service.spec.ts b/projects/sync/src/lib/services/po-sync/po-sync.service.spec.ts index c6c54e4d69..8801f1e1ab 100644 --- a/projects/sync/src/lib/services/po-sync/po-sync.service.spec.ts +++ b/projects/sync/src/lib/services/po-sync/po-sync.service.spec.ts @@ -1,8 +1,6 @@ -import { HttpResponse } from '@angular/common/http'; import { fakeAsync, tick } from '@angular/core/testing'; -import { of, Subscriber } from 'rxjs'; -import { TestScheduler } from 'rxjs/testing'; -import * as TypeMoq from 'typemoq'; +import { of, Subject, Subscriber } from 'rxjs'; + import { PoNetworkType } from '../../models/po-network-type.enum'; import { PoUtils as utilsFunctions } from '../../utils/utils'; import { PoEventSourcingService } from '../po-event-sourcing/po-event-sourcing.service'; @@ -36,17 +34,13 @@ class CustomDataTransform extends PoDataTransform { } } -xdescribe('PoSyncService:', () => { - const scheduler = new TestScheduler((actual, expected) => { - expect(actual).toEqual(expected); - }); - +describe('PoSyncService:', () => { let poSync: PoSyncService; - let poNetworkServiceMock: TypeMoq.IMock; - let poEventSourcing: TypeMoq.IMock; - let poSchemaDefinition: TypeMoq.IMock; - let poSchemaService: TypeMoq.IMock; - let http: TypeMoq.IMock; + let poEventSourcing: jasmine.SpyObj; + let poSchemaDefinition: jasmine.SpyObj; + let poSchemaService: jasmine.SpyObj; + let poNetworkServiceMock: jasmine.SpyObj; + let http: jasmine.SpyObj; const customerSchema: PoSyncSchema = { idField: 'code', @@ -70,32 +64,39 @@ xdescribe('PoSyncService:', () => { }; beforeEach(() => { - http = TypeMoq.Mock.ofType(PoHttpClientService); - - poEventSourcing = TypeMoq.Mock.ofType(PoEventSourcingService); - - poEventSourcing.setup(e => e.syncGet()).returns(() => Promise.resolve({})); - - poEventSourcing.setup(e => e.syncSend()).returns(() => Promise.resolve({})); - - poEventSourcing.setup(e => e.onSaveData()).returns(() => of(null)); - - poNetworkServiceMock = TypeMoq.Mock.ofType(PoNetworkService); - - poNetworkServiceMock.setup(e => e.onChange()).returns(() => of({ status: undefined, type: undefined })); - - poSchemaDefinition = TypeMoq.Mock.ofType(PoSchemaDefinitionService); - - poSchemaService = TypeMoq.Mock.ofType(PoSchemaService); - - poNetworkServiceMock.setup(e => e.getConnectionStatus()).returns(() => new PoNetworkStatus('wifi')); + http = jasmine.createSpyObj('PoHttpClientService', ['get']); + + poEventSourcing = jasmine.createSpyObj('PoEventSourcingService', [ + 'syncGet', + 'syncSend', + 'onSaveData', + 'responsesSubject', + 'httpCommand', + 'removeEventSourcingItem', + 'destroyEventSourcingQueue' + ]); + poEventSourcing.syncGet.and.returnValue(Promise.resolve({})); + poEventSourcing.syncSend.and.returnValue(Promise.resolve({})); + poEventSourcing.onSaveData.and.returnValue(of(null)); + + poNetworkServiceMock = jasmine.createSpyObj('PoNetworkService', ['getConnectionStatus', 'onChange']); + poNetworkServiceMock.onChange.and.returnValue(of({ status: undefined, type: undefined })); + poNetworkServiceMock.getConnectionStatus.and.returnValue(new PoNetworkStatus('wifi')); + + poSchemaDefinition = jasmine.createSpyObj('PoSchemaDefinitionService', ['getAll', 'saveAll', 'destroy']); + + poSchemaService = jasmine.createSpyObj('PoSchemaService', [ + 'limitedCallWrap', + 'destroySchemasRecords', + 'updateAll' + ]); poSync = new PoSyncService( - poEventSourcing.object, - http.object, - poNetworkServiceMock.object, - poSchemaDefinition.object, - poSchemaService.object + poEventSourcing as any, + http as any, + poNetworkServiceMock as any, + poSchemaDefinition as any, + poSchemaService as any ); }); @@ -112,36 +113,30 @@ xdescribe('PoSyncService:', () => { describe('Methods:', () => { it('destroy: should call poSchemaService.limitedCallWrap and return its value', async () => { const limitedCallWrapReturn = 'limitedCallWrap return'; - - spyOn(poSync['poSchemaService'], 'limitedCallWrap').and.returnValue(limitedCallWrapReturn); + poSchemaService.limitedCallWrap.and.returnValue(limitedCallWrapReturn as any); const result = await poSync.destroy(); - expect(poSync['poSchemaService']['limitedCallWrap']).toHaveBeenCalled(); + expect(poSchemaService.limitedCallWrap).toHaveBeenCalled(); expect(result).toBe(limitedCallWrapReturn); }); it('destroy: should call poSchemaDefinitionService.destroy, destroySchemasRecords, destroyEventSourcingQueue', async () => { - poSync['schemas'] = [customerSchema]; - - spyOn(poSync['poSchemaService'], 'limitedCallWrap').and.callFake(callback => callback()); - - spyOn(poSync['poSchemaDefinitionService'], 'destroy'); - spyOn(poSync['poSchemaService'], 'destroySchemasRecords'); - spyOn(poSync['poEventSourcingService'], 'destroyEventSourcingQueue'); + poSchemaService.limitedCallWrap.and.callFake((callback: any) => callback()); + poSchemaDefinition.destroy.and.returnValue(Promise.resolve()); + poSchemaService.destroySchemasRecords.and.returnValue(Promise.resolve()); + poEventSourcing.destroyEventSourcingQueue.and.returnValue(Promise.resolve()); await poSync.destroy(); - expect(poSync['poSchemaDefinitionService'].destroy).toHaveBeenCalled(); - expect(poSync['poSchemaService'].destroySchemasRecords).toHaveBeenCalled(); - expect(poSync['poEventSourcingService'].destroyEventSourcingQueue).toHaveBeenCalled(); + expect(poSchemaDefinition.destroy).toHaveBeenCalled(); + expect(poSchemaService.destroySchemasRecords).toHaveBeenCalled(); + expect(poEventSourcing.destroyEventSourcingQueue).toHaveBeenCalled(); }); it('disableSync: should set isSyncEnabled with false', () => { poSync['isSyncEnabled'] = true; - poSync.disableSync(); - expect(poSync['isSyncEnabled']).toBeFalsy(); }); @@ -149,37 +144,28 @@ xdescribe('PoSyncService:', () => { const fakeThis = { isSyncEnabled: true, timer: 'mock timer', - subscription: { - unsubscribe: () => {} - } + subscription: { unsubscribe: jasmine.createSpy('unsubscribe') } }; - spyOn(fakeThis.subscription, 'unsubscribe'); - poSync.disableSync.apply(fakeThis); - expect(fakeThis['subscription'].unsubscribe).toHaveBeenCalled(); + expect(fakeThis.subscription.unsubscribe).toHaveBeenCalled(); }); - it('disableSync: should not call subscription.unsubscribe if timer is undefined and subscription is defined', () => { + it('disableSync: should not call subscription.unsubscribe if timer is undefined', () => { const fakeThis = { isSyncEnabled: true, timer: undefined, - subscription: { - unsubscribe: () => {} - } + subscription: { unsubscribe: jasmine.createSpy('unsubscribe') } }; - spyOn(fakeThis.subscription, 'unsubscribe'); - poSync.disableSync.apply(fakeThis); - expect(fakeThis['subscription'].unsubscribe).not.toHaveBeenCalled(); + expect(fakeThis.subscription.unsubscribe).not.toHaveBeenCalled(); }); it('enableSync: should set isSyncEnabled with true and call createSubscribe', () => { poSync['isSyncEnabled'] = false; - spyOn(poSync, 'createSubscribe'); poSync.enableSync(); @@ -189,10 +175,10 @@ xdescribe('PoSyncService:', () => { }); it('getResponses: should call responsesSubject', done => { - spyOn(poSync['poEventSourcingService'], 'responsesSubject').and.returnValue(of({})); + poEventSourcing.responsesSubject.and.returnValue(of({}) as any); poSync.getResponses().subscribe(() => { - expect(poSync['poEventSourcingService']['responsesSubject']).toHaveBeenCalled(); + expect(poEventSourcing.responsesSubject).toHaveBeenCalled(); done(); }); }); @@ -209,30 +195,26 @@ xdescribe('PoSyncService:', () => { expect(result).toThrowError(Error, 'Model not found: Clients'); }); - it(`insertHttpCommand: should call validateParameter with records inside an object and httpCommand with PoHttpRequestData`, async () => { + it('insertHttpCommand: should call validateParameter and httpCommand', async () => { const requestDataMock: PoHttpRequestData = { url: 'http://url-test.com', method: PoHttpRequestType.GET }; - spyOn(utilsFunctions, 'validateParameter'); - spyOn(poSync['poEventSourcingService'], 'httpCommand').and.returnValue(Promise.resolve()); + poEventSourcing.httpCommand.and.returnValue(Promise.resolve(1)); await poSync.insertHttpCommand(requestDataMock); - expect(poSync['poEventSourcingService']['httpCommand']).toHaveBeenCalledWith(requestDataMock, undefined); + expect(poEventSourcing.httpCommand).toHaveBeenCalledWith(requestDataMock, undefined); expect(utilsFunctions.validateParameter).toHaveBeenCalledWith({ requestData: requestDataMock }); }); - it(`insertHttpCommand: should should call validateParameter with records inside an object and httpCommand with - customRequestId`, async () => { + it('insertHttpCommand: should call httpCommand with customRequestId', async () => { const requestDataMock: PoHttpRequestData = { url: 'http://url-test.com', method: PoHttpRequestType.GET }; - const customRequestId: string = '123'; - + const customRequestId = '123'; spyOn(utilsFunctions, 'validateParameter'); - spyOn(poSync['poEventSourcingService'], 'httpCommand').and.returnValue(Promise.resolve()); + poEventSourcing.httpCommand.and.returnValue(Promise.resolve(1)); await poSync.insertHttpCommand(requestDataMock, customRequestId); - expect(poSync['poEventSourcingService']['httpCommand']).toHaveBeenCalledWith(requestDataMock, customRequestId); - expect(utilsFunctions.validateParameter).toHaveBeenCalledWith({ requestData: requestDataMock }); + expect(poEventSourcing.httpCommand).toHaveBeenCalledWith(requestDataMock, customRequestId); }); it('loadData: should load api data', done => { @@ -251,15 +233,10 @@ xdescribe('PoSyncService:', () => { it('onSync: should return the same eventSub observable', done => { poSync['eventSub'] = of({ data: 'value' }); - poSync.onSync().subscribe( - result => { - expect(result).toEqual({ data: 'value' }); - done(); - }, - err => { - fail(err); - } - ); + poSync.onSync().subscribe(result => { + expect(result).toEqual({ data: 'value' }); + done(); + }); }); it('onSync: should emitter to be a Subscriber instance', () => { @@ -268,19 +245,16 @@ xdescribe('PoSyncService:', () => { expect(poSync['emitter'] instanceof Subscriber).toBeTruthy(); }); - it('prepare: should call validateArray with mySchemas inside an object', async () => { + it('prepare: should call validateArray with schemas', async () => { const mySchemas = [customerSchema]; - const validateArrayParam = { schemas: mySchemas }; - spyOn(poSync, 'startTimer'); spyOn(poSync, 'reactiveSync'); spyOn(utilsFunctions, 'validateArray'); - spyOn(poSync['poEventSourcingService'], 'onSaveData').and.returnValue(of()); - spyOn(poSync, 'saveSchemas').and.returnValue({ then: () => {} }); + spyOn(poSync, 'saveSchemas').and.returnValue(Promise.resolve()); await poSync.prepare(mySchemas); - expect(utilsFunctions.validateArray).toHaveBeenCalledWith(validateArrayParam); + expect(utilsFunctions.validateArray).toHaveBeenCalledWith({ schemas: mySchemas }); }); it('prepare: should prepare all configs to sync', async () => { @@ -289,13 +263,11 @@ xdescribe('PoSyncService:', () => { period: 30, dataTransform: new CustomDataTransform() }; - const mySchemas = [customerSchema]; spyOn(poSync, 'startTimer'); spyOn(poSync, 'reactiveSync'); spyOn(utilsFunctions, 'validateArray'); - spyOn(poSync['poEventSourcingService'], 'onSaveData').and.returnValue(of()); spyOn(poSync, 'saveSchemas').and.returnValue(Promise.resolve()); await poSync.prepare(mySchemas, myConfig); @@ -305,282 +277,192 @@ xdescribe('PoSyncService:', () => { expect(poSync['poEventSourcingService']['config']).toEqual(myConfig); expect(poSync['startTimer']).toHaveBeenCalled(); expect(poSync['reactiveSync']).toHaveBeenCalled(); - expect(poSync['poEventSourcingService']['onSaveData']).toHaveBeenCalled(); expect(poSync['saveSchemas']).toHaveBeenCalled(); expect(poSync['models']['Customers'] instanceof PoEntity).toBeTruthy(); - expect(poSync['models']['Customers']['schema']).toEqual(customerSchema); }); - it('prepare: should set default config to sync', async () => { - const defaultConfig: PoSyncConfig = { - type: poSync['poNetworkService']['getConnectionStatus']().type, - period: 60, - dataTransform: new PoDataMessage() - }; - + it('prepare: should set default config when no config is passed', async () => { const mySchemas = [customerSchema]; + spyOn(poSync, 'startTimer'); + spyOn(poSync, 'reactiveSync'); + spyOn(poSync, 'saveSchemas').and.returnValue(Promise.resolve()); await poSync.prepare(mySchemas); - expect(poSync['config']).toEqual(defaultConfig); + expect(poSync['config'].period).toBe(60); + expect(poSync['config'].dataTransform instanceof PoDataMessage).toBeTruthy(); }); - it('prepare: should set config without DataTransform', async () => { + it('prepare: should set dataTransform to PoDataMessage when config has no dataTransform', async () => { const mySchemas = [customerSchema]; - const myConfig: PoSyncConfig = { - type: PoNetworkType.wifi, - period: 60 - }; + const myConfig: PoSyncConfig = { type: PoNetworkType.wifi, period: 60 }; + + spyOn(poSync, 'startTimer'); + spyOn(poSync, 'reactiveSync'); + spyOn(poSync, 'saveSchemas').and.returnValue(Promise.resolve()); await poSync.prepare(mySchemas, myConfig); - expect(poSync['config']['dataTransform']).toEqual(new PoDataMessage()); + expect(poSync['config']['dataTransform'] instanceof PoDataMessage).toBeTruthy(); }); - it('removeItemOfSync: should call poEventSourcingService.removeItemEventSourcing with id', async () => { - const idEventSourcingMock = jasmine.any(Number); - spyOn(poSync['poEventSourcingService'], 'removeEventSourcingItem').and.returnValue(Promise.resolve()); - - await poSync.removeItemOfSync(idEventSourcingMock); - - expect(poSync['poEventSourcingService']['removeEventSourcingItem']).toHaveBeenCalledWith(idEventSourcingMock); + it('removeItemOfSync: should call removeEventSourcingItem with id', async () => { + poEventSourcing.removeEventSourcingItem.and.returnValue(Promise.resolve()); + await poSync.removeItemOfSync(123); + expect(poEventSourcing.removeEventSourcingItem).toHaveBeenCalledWith(123); }); - it('resumeSync: should call sync and finishSyncSubject.asObservable when canSync is false', async () => { - spyOn(poSync, 'canSync').and.returnValue(false); - const spySync = spyOn(poSync, 'sync').and.returnValue(Promise.resolve()); - spyOn(poSync['finishSyncSubject'], 'asObservable').and.callThrough(); + it('resumeSync: should call sync when canSync is true', async () => { + spyOn(poSync, 'canSync').and.returnValue(true); + spyOn(poSync, 'sync').and.returnValue(Promise.resolve()); await poSync.resumeSync(); - poSync['finishSyncSubject']['next'](null); - - expect(poSync['finishSyncSubject']['asObservable']).toHaveBeenCalledBefore(spySync); expect(poSync.sync).toHaveBeenCalled(); }); - it(`resumeSync: should call sync and not call finishSyncSubject.asObservable - when canSync is true`, async () => { - spyOn(poSync, 'canSync').and.returnValue(true); - spyOn(poSync, 'sync'); - spyOn(poSync['finishSyncSubject'], 'asObservable').and.returnValue(of()); + it('resumeSync: should subscribe to finishSyncSubject when canSync is false', async () => { + spyOn(poSync, 'canSync').and.returnValue(false); + const spySync = spyOn(poSync, 'sync').and.returnValue(Promise.resolve()); + spyOn(poSync['finishSyncSubject'], 'asObservable').and.callThrough(); await poSync.resumeSync(); + poSync['finishSyncSubject'].next(null); + + expect(poSync['finishSyncSubject'].asObservable).toHaveBeenCalledBefore(spySync); expect(poSync.sync).toHaveBeenCalled(); - expect(poSync['finishSyncSubject']['asObservable']).not.toHaveBeenCalled(); }); - it('sync: syncError should be called when syncGet error happen', done => { + it('sync: should call startSync and finishSync when canSync returns true', async () => { spyOn(poSync, 'canSync').and.returnValue(true); spyOn(poSync, 'startSync'); - spyOn(poSync['poEventSourcingService'], 'syncGet').and.throwError('Error on sync'); - spyOn(poSync, 'syncError'); + spyOn(poSync, 'finishSync'); - poSync - .sync() - .then(() => { - expect(poSync['startSync']).toHaveBeenCalled(); - expect(poSync['syncError']).toHaveBeenCalled(); - done(); - }) - .catch(err => { - fail(); - }); - }); + await poSync.sync(); - it('sync: should call startSync and finishSync when canSync returns true', done => { - spyOn(poSync, 'canSync').and.returnValue(true); - spyOn(poSync, 'startSync'); - spyOn(poSync, 'finishSync'); - poSync - .sync() - .then(() => { - expect(poSync['startSync']).toHaveBeenCalled(); - expect(poSync['finishSync']).toHaveBeenCalled(); - done(); - }) - .catch(err => { - fail(err); - }); + expect(poSync['startSync']).toHaveBeenCalled(); + expect(poSync['finishSync']).toHaveBeenCalled(); }); - it('sync: should not call startSync and finishSync when canSync returns false', done => { + it('sync: should not call startSync when canSync returns false', async () => { spyOn(poSync, 'canSync').and.returnValue(false); spyOn(poSync, 'startSync'); spyOn(poSync, 'finishSync'); - poSync - .sync() - .then(() => { - expect(poSync['startSync']).not.toHaveBeenCalled(); - expect(poSync['finishSync']).not.toHaveBeenCalled(); - done(); - }) - .catch(err => { - fail(err); - }); + + await poSync.sync(); + + expect(poSync['startSync']).not.toHaveBeenCalled(); + expect(poSync['finishSync']).not.toHaveBeenCalled(); }); it('sync: should call emitter.next() when emitter is defined', async () => { spyOn(poSync, 'canSync').and.returnValue(true); - spyOn(poSync['poEventSourcingService'], 'syncGet').and.returnValue(Promise.resolve()); - spyOn(poSync['poEventSourcingService'], 'syncSend').and.returnValue(Promise.resolve()); - poSync['emitter'] = { - next: () => {} - }; - spyOn(poSync['emitter'], 'next'); + poSync['emitter'] = { next: jasmine.createSpy('next') }; + await poSync.sync(); - expect(poSync['emitter']['next']).toHaveBeenCalled(); - }); - it('sync: should call canSync always', done => { - spyOn(poSync, 'canSync'); - poSync - .sync() - .then(() => { - expect(poSync['canSync']).toHaveBeenCalledTimes(1); - done(); - }) - .catch(err => { - fail(err); - }); + expect(poSync['emitter'].next).toHaveBeenCalled(); }); - it('canSync: should returns false if syncing is true and isSyncEnabled is false', () => { - poSync['syncing'] = true; - poSync['isSyncEnabled'] = false; + it('sync: syncError should be called when syncGet throws error', async () => { + spyOn(poSync, 'canSync').and.returnValue(true); + spyOn(poSync, 'startSync'); + spyOn(poSync, 'syncError'); + poEventSourcing.syncSend.and.returnValue(Promise.resolve()); + poEventSourcing.syncGet.and.returnValue(Promise.reject('Error')); - const canSync = poSync['canSync'](); + await poSync.sync(); - expect(canSync).toBeFalsy(); + expect(poSync['startSync']).toHaveBeenCalled(); + expect(poSync['syncError']).toHaveBeenCalled(); }); - it('canSync: should returns false if syncing is true and isSyncEnabled is true', () => { + it('canSync: should return false if syncing is true', () => { poSync['syncing'] = true; poSync['isSyncEnabled'] = true; - - const canSync = poSync['canSync'](); - - expect(canSync).toBeFalsy(); + expect(poSync['canSync']()).toBeFalsy(); }); - it('canSync: should returns false if syncing is false and isSyncEnabled is false', () => { + it('canSync: should return false if isSyncEnabled is false', () => { poSync['syncing'] = false; poSync['isSyncEnabled'] = false; - - const canSync = poSync['canSync'](); - - expect(canSync).toBeFalsy(); + expect(poSync['canSync']()).toBeFalsy(); }); - it('canSync: should returns false if network status is false and config is undefined', () => { + it('canSync: should return true if network status is true and config is undefined', () => { poSync['syncing'] = false; poSync['isSyncEnabled'] = true; poSync['config'] = undefined; + poNetworkServiceMock.getConnectionStatus.and.returnValue({ status: true, type: undefined } as any); - spyOn(poSync['poNetworkService'], 'getConnectionStatus').and.returnValue({ status: false, type: undefined }); - - const canSync = poSync['canSync'](); - expect(canSync).toBeFalsy(); + expect(poSync['canSync']()).toBeTruthy(); }); - it('canSync: should returns true if network status is true and config is undefined', () => { + it('canSync: should return false if network status is false', () => { poSync['syncing'] = false; poSync['isSyncEnabled'] = true; poSync['config'] = undefined; + poNetworkServiceMock.getConnectionStatus.and.returnValue({ status: false, type: undefined } as any); - spyOn(poSync['poNetworkService'], 'getConnectionStatus').and.returnValue({ status: true, type: undefined }); - - const canSync = poSync['canSync'](); - expect(canSync).toBeTruthy(); + expect(poSync['canSync']()).toBeFalsy(); }); - it('canSync: should returns false if network status is true, network type != ethernet', () => { + it('canSync: should return true if network type matches config type', () => { poSync['syncing'] = false; poSync['isSyncEnabled'] = true; - poSync['config'] = { type: PoNetworkType.ethernet }; - - spyOn(poSync['poNetworkService'], 'getConnectionStatus').and.returnValue({ - status: true, - type: PoNetworkType.wifi - }); - - const canSync = poSync['canSync'](); + poSync['config'] = { type: PoNetworkType.wifi }; + poNetworkServiceMock.getConnectionStatus.and.returnValue({ status: true, type: PoNetworkType.wifi } as any); - expect(canSync).toBeFalsy(); + expect(poSync['canSync']()).toBeTruthy(); }); - it('canSync: should returns true if network status is true, network type == wifi', () => { + it('canSync: should return false if network type does not match config type', () => { poSync['syncing'] = false; poSync['isSyncEnabled'] = true; - poSync['config'] = { type: PoNetworkType.wifi }; - spyOn(poSync['poNetworkService'], 'getConnectionStatus').and.returnValue({ - status: true, - type: PoNetworkType.wifi - }); - - const canSync = poSync['canSync'](); + poSync['config'] = { type: PoNetworkType.ethernet }; + poNetworkServiceMock.getConnectionStatus.and.returnValue({ status: true, type: PoNetworkType.wifi } as any); - expect(canSync).toBeTruthy(); + expect(poSync['canSync']()).toBeFalsy(); }); - it('canSync: should returns true if network status is true and isConfigIncludesType is true', () => { + it('canSync: should return true if config type is an array and includes current type', () => { poSync['syncing'] = false; poSync['isSyncEnabled'] = true; poSync['config'] = { type: [PoNetworkType.wifi, PoNetworkType._2g] }; + poNetworkServiceMock.getConnectionStatus.and.returnValue({ status: true, type: PoNetworkType.wifi } as any); - spyOn(poSync['poNetworkService'], 'getConnectionStatus').and.returnValue({ - status: true, - type: PoNetworkType.wifi - }); - - const canSync = poSync['canSync'](); - - expect(canSync).toBeTruthy(); + expect(poSync['canSync']()).toBeTruthy(); }); - it(`canSync: should returns false if network status is true, isConfiguredConnection and isConfigIncludesType is false`, () => { + it('canSync: should return false if config type is an array and does not include current type', () => { poSync['syncing'] = false; poSync['isSyncEnabled'] = true; poSync['config'] = { type: [PoNetworkType.wifi, PoNetworkType._2g] }; + poNetworkServiceMock.getConnectionStatus.and.returnValue({ status: true, type: PoNetworkType.ethernet } as any); - spyOn(poSync['poNetworkService'], 'getConnectionStatus').and.returnValue({ - status: true, - type: PoNetworkType.ethernet - }); - - const canSync = poSync['canSync'](); - - expect(canSync).toBeFalsy(); + expect(poSync['canSync']()).toBeFalsy(); }); - it('createSubscribe: should call sync and startTimer if timer is undefined', () => { - const fakeThis = { - timer: undefined, - sync: () => {}, - startTimer: () => {} - }; + it('createSubscribe: should not call sync if timer is undefined', () => { + poSync['timer'] = undefined; + spyOn(poSync, 'sync'); - spyOn(fakeThis, 'sync'); - spyOn(fakeThis, 'startTimer'); + poSync['createSubscribe'](); - poSync['createSubscribe'].call(fakeThis); - expect(fakeThis.timer).toBeUndefined(); - expect(fakeThis.sync).not.toHaveBeenCalled(); - expect(fakeThis.startTimer).not.toHaveBeenCalled(); + expect(poSync.sync).not.toHaveBeenCalled(); }); - it('createSubscribe: should call sync and startTimer', fakeAsync(() => { + it('createSubscribe: should call sync and startTimer when timer emits', fakeAsync(() => { spyOn(poSync, 'sync').and.returnValue(Promise.resolve()); spyOn(poSync, 'startTimer'); poSync['timer'] = of(0); - poSync['config'] = { type: poSync['poNetworkService']['getConnectionStatus']().type, period: 10 }; + poSync['config'] = { type: PoNetworkType.wifi, period: 10 }; poSync['createSubscribe'](); - tick(300); - expect(poSync['sync']).toHaveBeenCalled(); + expect(poSync.sync).toHaveBeenCalled(); expect(poSync['timer']).toBeNull(); expect(poSync['subscription']).toBeNull(); expect(poSync['startTimer']).toHaveBeenCalledWith(10); @@ -588,165 +470,92 @@ xdescribe('PoSyncService:', () => { it('finishSync: should set syncing to false and call finishSyncSubject.next', () => { poSync['syncing'] = true; - spyOn(poSync['finishSyncSubject'], 'next'); + spyOn(poSync['finishSyncSubject'], 'next'); poSync['finishSync'](); expect(poSync['syncing']).toBeFalsy(); - expect(poSync['finishSyncSubject']['next']).toHaveBeenCalled(); + expect(poSync['finishSyncSubject'].next).toHaveBeenCalled(); }); - describe('getOnePage: ', () => { - const myItems = [ - { id: 1, name: 'Customer Z' }, - { id: 2, name: 'Customer X' } - ]; - const response = of(new HttpResponse({ body: { hasNext: true, items: myItems }, status: 200 })); - const correctlyUrl = 'http://localhost:8200/api/v1/customers?pageSize=2&page='; - - it('should add sync fields to body.items and call http.get with correctly url', done => { - spyOn(poSync['poHttpClient'], 'get').and.returnValue(response); - poSync['config'] = { - type: PoNetworkType.wifi, - period: 10, - dataTransform: new PoDataMessage() - }; + it('startSync: should set syncing to true', () => { + poSync['syncing'] = false; + poSync['startSync'](); + expect(poSync['syncing']).toBeTruthy(); + }); - spyOn(poSync['poSchemaService'], 'updateAll').and.returnValue(Promise.resolve()); + it('startTimer: should call createSubscribe if period and isSyncEnabled are truthy', () => { + poSync['isSyncEnabled'] = true; + spyOn(poSync, 'createSubscribe'); - poSync['getOnePage'](customerSchema).subscribe(body => { - expect(body.items[0].id).toBe(1); - expect(body.items[0].name).toBe('Customer Z'); - expect(body.items[0].SyncUpdatedDateTime).toBeNull(); - expect(body.items[0].SyncExclusionDateTime).toBeNull(); - expect(body.items[0].SyncDeleted).toBeFalsy(); - expect(body.items[0].SyncStatus).toBe(2); - expect(poSync['poHttpClient']['get']).toHaveBeenCalledWith(`${correctlyUrl}1`); - done(); - }); - }); + poSync['startTimer'](5); - it('should call http.get with correctly url and the page 2', done => { - spyOn(poSync['poSchemaService'], 'updateAll').and.returnValue(Promise.resolve()); - spyOn(poSync['poHttpClient'], 'get').and.returnValue(response); - poSync['config'] = { - type: PoNetworkType.wifi, - period: 10, - dataTransform: new PoDataMessage() - }; - - poSync['getOnePage'](customerSchema, 2).subscribe(body => { - expect(poSync['poHttpClient']['get']).toHaveBeenCalledWith(`${correctlyUrl}2`); - done(); - }); - }); + expect(poSync['createSubscribe']).toHaveBeenCalled(); + expect(poSync['timer']).toBeDefined(); + }); - it('should call poSchemaService.updateAll with schema', done => { - spyOn(poSync['poHttpClient'], 'get').and.returnValue(response); - spyOn(poSync['poSchemaService'], 'updateAll').and.returnValue(Promise.resolve()); + it('startTimer: should not call createSubscribe if period is undefined', () => { + poSync['isSyncEnabled'] = true; + spyOn(poSync, 'createSubscribe'); - poSync['config'] = { - type: PoNetworkType.wifi, - period: 10, - dataTransform: new PoDataMessage() - }; + poSync['startTimer'](undefined); - poSync['getOnePage'](customerSchema).subscribe(body => { - expect(poSync['poSchemaService'].updateAll).toHaveBeenCalled(); - done(); - }); - }); + expect(poSync['createSubscribe']).not.toHaveBeenCalled(); }); - it('loadEntityData: should request data from schema url', done => { - const pageOneData = [ - { id: 1, name: 'Customer 1' }, - { id: 2, name: 'Customer 2' } - ]; - const pageTwoData = [ - { id: 3, name: 'Customer 3' }, - { id: 4, name: 'Customer 4' } - ]; - - poSync['config'] = { - type: PoNetworkType.wifi, - period: 10, - dataTransform: new PoDataMessage() - }; + it('startTimer: should not call createSubscribe if period is zero', () => { + poSync['isSyncEnabled'] = true; + spyOn(poSync, 'createSubscribe'); - spyOn(poSync, 'getOnePage').and.returnValues( - of({ hasNext: true, items: pageOneData }), - of({ hasNext: false, items: pageTwoData }) - ); + poSync['startTimer'](0); - poSync['loadEntityData'](customerSchema).subscribe(entity => { - expect(entity.entity).toBe(customerSchema.name); - expect(entity.data).toEqual([...pageOneData, ...pageTwoData]); - done(); - }); + expect(poSync['createSubscribe']).not.toHaveBeenCalled(); }); - it('reactiveSync: should call unsubscribe when is defined and network status is undefined', () => { - const fakeThis = { - subscription: { unsubscribe: () => {} }, - poNetworkService: { onChange: () => of({ type: undefined }) } - }; + it('startTimer: should not call createSubscribe if isSyncEnabled is false', () => { + poSync['isSyncEnabled'] = false; + spyOn(poSync, 'createSubscribe'); - spyOn(fakeThis.subscription, 'unsubscribe'); + poSync['startTimer'](5); - poSync['reactiveSync'].call(fakeThis); + expect(poSync['createSubscribe']).not.toHaveBeenCalled(); + }); - expect(fakeThis.subscription.unsubscribe).toHaveBeenCalled(); + it('syncError: should call finishSync', () => { + spyOn(poSync, 'finishSync'); + poSync['syncError'](); + expect(poSync['finishSync']).toHaveBeenCalled(); }); - it('reactiveSync: should call start, sync and not unsubscribe', () => { - const periodConfig = jasmine.any(Number); + it('reactiveSync: should call startTimer and sync when network status is true', () => { + const networkSubject = new Subject(); + poNetworkServiceMock.onChange.and.returnValue(networkSubject.asObservable()); - const fakeThis = { - subscription: { unsubscribe: () => {} }, - startTimer: (period: number) => {}, - config: { period: periodConfig }, - sync: () => {}, - poNetworkService: { - onChange: () => of({ status: true }) - } - }; + spyOn(poSync, 'startTimer'); + spyOn(poSync, 'sync'); - spyOn(fakeThis.subscription, 'unsubscribe'); - spyOn(fakeThis, 'startTimer'); - spyOn(fakeThis, 'sync'); + poSync['config'] = { period: 10 } as any; + poSync['reactiveSync'](); - poSync['reactiveSync'].call(fakeThis); + networkSubject.next({ status: true }); - expect(fakeThis.subscription.unsubscribe).not.toHaveBeenCalled(); - expect(fakeThis.startTimer).toHaveBeenCalledWith(periodConfig); - expect(fakeThis.sync).toHaveBeenCalled(); + expect(poSync['startTimer']).toHaveBeenCalledWith(10); + expect(poSync.sync).toHaveBeenCalled(); }); - it(`reactiveSync: should not call unsubscribe, startTimer and sync when subscription and - networkStatus is undefined`, () => { - const fakeThis = { - subscription: '', - unsubscribe: () => {}, - startTimer: () => {}, - sync: () => {}, - poNetworkService: { onChange: () => of({ type: undefined }) } - }; + it('reactiveSync: should call subscription.unsubscribe when network status is falsy and subscription exists', () => { + const networkSubject = new Subject(); + poNetworkServiceMock.onChange.and.returnValue(networkSubject.asObservable()); - spyOn(fakeThis, 'unsubscribe'); - spyOn(fakeThis, 'startTimer'); - spyOn(fakeThis, 'sync'); + poSync['subscription'] = { unsubscribe: jasmine.createSpy('unsubscribe') } as any; + poSync['reactiveSync'](); - poSync['reactiveSync'].call(fakeThis); + networkSubject.next({ status: false }); - expect(fakeThis.unsubscribe).not.toHaveBeenCalled(); - expect(fakeThis.startTimer).not.toHaveBeenCalled(); - expect(fakeThis.sync).not.toHaveBeenCalled(); + expect(poSync['subscription'].unsubscribe).toHaveBeenCalled(); }); it('saveSchemas: should call poSchemaDefinitionService.getAll and saveAll', async () => { - spyOn(PoSchemaUtil, 'getLastSync'); - const schemasStorage: Array = [ { idField: '', @@ -760,136 +569,85 @@ xdescribe('PoSyncService:', () => { ]; poSync['schemas'] = [customerSchema, userSchema]; - spyOn(poSync['poSchemaDefinitionService'], 'getAll').and.returnValue(schemasStorage); - spyOn(poSync['poSchemaDefinitionService'], 'saveAll'); + poSchemaDefinition.getAll.and.returnValue(Promise.resolve(schemasStorage) as any); + poSchemaDefinition.saveAll.and.returnValue(Promise.resolve([]) as any); + spyOn(PoSchemaUtil, 'getLastSync'); await poSync['saveSchemas'](); - expect(poSync['poSchemaDefinitionService']['saveAll']).toHaveBeenCalledWith([customerSchema, userSchema]); - expect(poSync['poSchemaDefinitionService']['getAll']).toHaveBeenCalled(); + expect(poSchemaDefinition.saveAll).toHaveBeenCalledWith([customerSchema, userSchema]); + expect(poSchemaDefinition.getAll).toHaveBeenCalled(); }); - it('saveSchemas: should update lastSync of schemas and call PoSchemaUtil.getLastSync', async () => { - const dateNow = new Date().toISOString(); - - spyOn(PoSchemaUtil, 'getLastSync').and.returnValue(dateNow); - - const schemasStorage: Array = [ - { - idField: '', - name: '', - getUrlApi: '', - diffUrlApi: 'http://localhost:8200/api/v1/customers/diff', - fields: ['code', 'name'], - pageSize: 20, - deletedField: 'deleted', - lastSync: dateNow - }, - { - idField: 'code', - name: 'Users', - getUrlApi: 'http://localhost:8200/api/v1/users', - diffUrlApi: 'http://localhost:8200/api/v1/users/diff', - fields: ['code', 'name'], - pageSize: 20, - deletedField: 'deleted', - lastSync: dateNow - } + describe('getOnePage:', () => { + const myItems = [ + { id: 1, name: 'Customer Z' }, + { id: 2, name: 'Customer X' } ]; - poSync['schemas'] = [customerSchema, userSchema]; - - spyOn(poSync['poSchemaDefinitionService'], 'getAll').and.returnValue(schemasStorage); - spyOn(poSync['poSchemaDefinitionService'], 'saveAll'); - - await poSync['saveSchemas'](); - - expect(PoSchemaUtil.getLastSync).toHaveBeenCalledWith(schemasStorage, poSync['schemas'][0].name); - expect(PoSchemaUtil.getLastSync).toHaveBeenCalledWith(schemasStorage, poSync['schemas'][1].name); - expect(poSync['schemas'][0].lastSync === dateNow); - expect(poSync['schemas'][1].lastSync === dateNow); - }); - - it('startSync: should set syncing to true', () => { - poSync['syncing'] = false; - poSync['startSync'](); - expect(poSync['syncing']).toBeTruthy(); - }); - - it(`startTimer: should call createSubscribe and set timer with observable emitted in 5000ms if period is defined and - isSyncEnabled is true`, () => { - scheduler.run(helpers => { - const { expectObservable } = helpers; - const period = 5; - poSync['isSyncEnabled'] = true; - const expected = '5000ms (a|)'; - - spyOn(poSync, 'createSubscribe'); - - poSync['startTimer'](period); + it('should add sync fields to body items and call http.get with correctly url', done => { + const response = of({ body: { hasNext: true, items: myItems } }); + http.get.and.returnValue(response as any); + poSchemaService.updateAll.and.returnValue(Promise.resolve()); + poSync['config'] = { type: PoNetworkType.wifi, period: 10, dataTransform: new PoDataMessage() }; - expectObservable(poSync['timer']).toBe(expected, { a: 0 }); - expect(poSync['createSubscribe']).toHaveBeenCalled(); + poSync['getOnePage'](customerSchema).subscribe(body => { + expect(body.items[0].SyncUpdatedDateTime).toBeNull(); + expect(body.items[0].SyncExclusionDateTime).toBeNull(); + expect(body.items[0].SyncDeleted).toBeFalsy(); + expect(body.items[0].SyncStatus).toBe(2); + expect(http.get).toHaveBeenCalledWith('http://localhost:8200/api/v1/customers?pageSize=2&page=1'); + done(); + }); }); - }); - it('startTimer: should not call createSubscribe if period of syncronize is undefined and isSyncEnabled is true.', () => { - poSync['isSyncEnabled'] = true; + it('should call http.get with page 2', done => { + const response = of({ body: { hasNext: true, items: myItems } }); + http.get.and.returnValue(response as any); + poSchemaService.updateAll.and.returnValue(Promise.resolve()); + poSync['config'] = { type: PoNetworkType.wifi, period: 10, dataTransform: new PoDataMessage() }; - spyOn(poSync, 'createSubscribe'); - - poSync['startTimer'](undefined); - - expect(poSync['createSubscribe']).not.toHaveBeenCalled(); - }); - - it('startTimer: should not call createSubscribe if period of syncronize is undefined and isSyncEnabled is false.', () => { - poSync['isSyncEnabled'] = false; - - spyOn(poSync, 'createSubscribe'); - - poSync['startTimer'](undefined); - - expect(poSync['createSubscribe']).not.toHaveBeenCalled(); - }); - - it('startTimer: should not call createSubscribe if period of syncronize is defined and isSyncEnabled is false.', () => { - poSync['isSyncEnabled'] = false; - const period = 1; - - spyOn(poSync, 'createSubscribe'); - - poSync['startTimer'](period); - - expect(poSync['createSubscribe']).not.toHaveBeenCalled(); - }); - - it('startTimer: should not call createSubscribe if period of syncronize is zero and isSyncEnabled is true.', () => { - poSync['isSyncEnabled'] = true; - - spyOn(poSync, 'createSubscribe'); + poSync['getOnePage'](customerSchema, 2).subscribe(() => { + expect(http.get).toHaveBeenCalledWith('http://localhost:8200/api/v1/customers?pageSize=2&page=2'); + done(); + }); + }); - poSync['startTimer'](0); + it('should call poSchemaService.updateAll', done => { + const response = of({ body: { hasNext: true, items: myItems } }); + http.get.and.returnValue(response as any); + poSchemaService.updateAll.and.returnValue(Promise.resolve()); + poSync['config'] = { type: PoNetworkType.wifi, period: 10, dataTransform: new PoDataMessage() }; - expect(poSync['createSubscribe']).not.toHaveBeenCalled(); + poSync['getOnePage'](customerSchema).subscribe(() => { + expect(poSchemaService.updateAll).toHaveBeenCalled(); + done(); + }); + }); }); - it('startTimer: should not call createSubscribe if period of syncronize is zero and isSyncEnabled is false.', () => { - poSync['isSyncEnabled'] = false; - - spyOn(poSync, 'createSubscribe'); - - poSync['startTimer'](0); - - expect(poSync['createSubscribe']).not.toHaveBeenCalled(); - }); + it('loadEntityData: should request data from schema url', done => { + const pageOneData = [ + { id: 1, name: 'Customer 1' }, + { id: 2, name: 'Customer 2' } + ]; + const pageTwoData = [ + { id: 3, name: 'Customer 3' }, + { id: 4, name: 'Customer 4' } + ]; - it('syncError: should call finishSync', () => { - spyOn(poSync, 'finishSync'); + poSync['config'] = { type: PoNetworkType.wifi, period: 10, dataTransform: new PoDataMessage() }; - poSync['syncError'](); + spyOn(poSync, 'getOnePage').and.returnValues( + of({ hasNext: true, items: pageOneData }), + of({ hasNext: false, items: pageTwoData }) + ); - expect(poSync['finishSync']).toHaveBeenCalled(); + poSync['loadEntityData'](customerSchema).subscribe(entity => { + expect(entity.entity).toBe(customerSchema.name); + expect(entity.data).toEqual([...pageOneData, ...pageTwoData]); + done(); + }); }); }); }); diff --git a/projects/sync/src/test.ts b/projects/sync/src/test.ts index 8f714a3c85..89c3949e89 100644 --- a/projects/sync/src/test.ts +++ b/projects/sync/src/test.ts @@ -1,11 +1,15 @@ // This file is required by karma.conf.js and loads recursively all the .spec and framework files -import 'zone.js'; -import 'zone.js/testing'; +import { NgModule, provideZoneChangeDetection } from '@angular/core'; import { getTestBed } from '@angular/core/testing'; import { BrowserTestingModule, platformBrowserTesting } from '@angular/platform-browser/testing'; +@NgModule({ + providers: [provideZoneChangeDetection()] +}) +class AppTestingModule {} + // First, initialize the Angular testing environment. -getTestBed().initTestEnvironment(BrowserTestingModule, platformBrowserTesting(), { +getTestBed().initTestEnvironment([BrowserTestingModule, AppTestingModule], platformBrowserTesting(), { teardown: { destroyAfterEach: false } }); diff --git a/projects/sync/tsconfig.lib.json b/projects/sync/tsconfig.lib.json index e1f7191ad3..a422c21d91 100644 --- a/projects/sync/tsconfig.lib.json +++ b/projects/sync/tsconfig.lib.json @@ -12,7 +12,7 @@ "angularCompilerOptions": { "strictMetadataEmit": true, "skipTemplateCodegen": true, - "fullTemplateTypeCheck": true + "strictTemplates": false }, "exclude": ["node_modules", "src/test.ts", "**/*.spec.ts"] } diff --git a/projects/sync/tsconfig.schematics.json b/projects/sync/tsconfig.schematics.json index 529c70bcb4..a4df1c46f9 100644 --- a/projects/sync/tsconfig.schematics.json +++ b/projects/sync/tsconfig.schematics.json @@ -1,11 +1,10 @@ { "extends": "../../tsconfig.json", "compilerOptions": { - "baseUrl": "../..", "lib": ["es2022", "dom"], "declaration": true, - "module": "commonjs", - "moduleResolution": "node", + "module": "node16", + "moduleResolution": "node16", "noEmitOnError": true, "noFallthroughCasesInSwitch": true, "noImplicitAny": false, diff --git a/projects/sync/tsconfig.spec.json b/projects/sync/tsconfig.spec.json index 519c167a68..92ff656bd5 100644 --- a/projects/sync/tsconfig.spec.json +++ b/projects/sync/tsconfig.spec.json @@ -6,5 +6,8 @@ "skipLibCheck": true }, "files": ["src/test.ts"], - "include": ["**/*.spec.ts", "**/*.d.ts"] + "include": ["**/*.spec.ts", "**/*.d.ts"], + "angularCompilerOptions": { + "strictTemplates": false + } } diff --git a/projects/templates/karma.conf.js b/projects/templates/karma.conf.js index d847eb4547..e0d1c4119d 100644 --- a/projects/templates/karma.conf.js +++ b/projects/templates/karma.conf.js @@ -9,8 +9,7 @@ module.exports = function (config) { require('karma-jasmine'), require('karma-chrome-launcher'), require('karma-jasmine-html-reporter'), - require('karma-coverage'), - require('@angular-devkit/build-angular/plugins/karma') + require('karma-coverage') ], client: { clearContext: false // leave Jasmine Spec Runner output visible in browser diff --git a/projects/templates/package.json b/projects/templates/package.json index d80c0725ab..38d0c30d5b 100644 --- a/projects/templates/package.json +++ b/projects/templates/package.json @@ -16,14 +16,12 @@ "tslib": "^2.6.2" }, "peerDependencies": { - "@angular/animations": "^21", - "@angular/common": "^21", - "@angular/compiler": "^21", - "@angular/core": "^21", - "@angular/forms": "^21", - "@angular/platform-browser": "^21", - "@angular/platform-browser-dynamic": "^21", - "@angular/router": "^21", + "@angular/common": "^22", + "@angular/compiler": "^22", + "@angular/core": "^22", + "@angular/forms": "^22", + "@angular/platform-browser": "^22", + "@angular/router": "^22", "@po-ui/ng-components": "0.0.0-PLACEHOLDER", "rxjs": "~7.8.1", "zone.js": "~0.15.0" diff --git a/projects/templates/schematics/ng-generate/po-page-blocked-user/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template b/projects/templates/schematics/ng-generate/po-page-blocked-user/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template index 4e953e6dd2..0c1acf0a36 100644 --- a/projects/templates/schematics/ng-generate/po-page-blocked-user/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +++ b/projects/templates/schematics/ng-generate/po-page-blocked-user/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template @@ -1,5 +1,6 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { provideHttpClient } from '@angular/common/http'; import { PoPageBlockedUserModule } from '@po-ui/ng-templates'; @@ -13,10 +14,10 @@ describe('<%= classify(name) %>Component', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ imports: [ - RouterTestingModule, + RouterModule.forRoot([]), PoPageBlockedUserModule ], - providers: [provideHttpClient()] + providers: [provideLocationMocks(), provideHttpClient()] }) .compileComponents(); })); diff --git a/projects/templates/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template b/projects/templates/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template index b6c5463286..1d1f132494 100644 --- a/projects/templates/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +++ b/projects/templates/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template @@ -1,5 +1,6 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { provideHttpClient } from '@angular/common/http'; import { PoPageBlockedUserModule } from '@po-ui/ng-templates'; @@ -13,10 +14,10 @@ describe('<%= classify(name) %>Component', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ imports: [ - RouterTestingModule, + RouterModule.forRoot([]), PoPageBlockedUserModule ], - providers: [provideHttpClient()], + providers: [provideLocationMocks(), provideHttpClient()], declarations: [ <%= classify(name) %>Component ] }) .compileComponents(); diff --git a/projects/templates/schematics/ng-generate/po-page-change-password/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template b/projects/templates/schematics/ng-generate/po-page-change-password/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template index 56429ded66..e0dfc39a4a 100644 --- a/projects/templates/schematics/ng-generate/po-page-change-password/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +++ b/projects/templates/schematics/ng-generate/po-page-change-password/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template @@ -1,5 +1,6 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { provideHttpClient } from '@angular/common/http'; import { PoPageChangePasswordModule } from '@po-ui/ng-templates'; @@ -13,10 +14,10 @@ describe('<%= classify(name) %>Component', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ imports: [ - RouterTestingModule, + RouterModule.forRoot([]), PoPageChangePasswordModule ], - providers: [provideHttpClient()] + providers: [provideLocationMocks(), provideHttpClient()] }) .compileComponents(); })); diff --git a/projects/templates/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template b/projects/templates/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template index e4ca00dc7d..4aa88e7fc1 100644 --- a/projects/templates/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +++ b/projects/templates/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template @@ -1,5 +1,6 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { provideHttpClient } from '@angular/common/http'; import { PoPageChangePasswordModule } from '@po-ui/ng-templates'; @@ -13,10 +14,10 @@ describe('<%= classify(name) %>Component', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ imports: [ - RouterTestingModule, + RouterModule.forRoot([]), PoPageChangePasswordModule ], - providers: [provideHttpClient()], + providers: [provideLocationMocks(), provideHttpClient()], declarations: [ <%= classify(name) %>Component ] }) .compileComponents(); diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-detail/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template b/projects/templates/schematics/ng-generate/po-page-dynamic-detail/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template index 499addfd9f..ae89f3377d 100644 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-detail/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +++ b/projects/templates/schematics/ng-generate/po-page-dynamic-detail/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template @@ -1,5 +1,6 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { provideHttpClient } from '@angular/common/http'; import { PoPageDynamicDetailModule } from '@po-ui/ng-templates'; @@ -13,10 +14,10 @@ describe('<%= classify(name) %>Component', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ imports: [ - RouterTestingModule, + RouterModule.forRoot([]), PoPageDynamicDetailModule ], - providers: [provideHttpClient()] + providers: [provideLocationMocks(), provideHttpClient()] }) .compileComponents(); })); diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template b/projects/templates/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template index 45f5a0d6a6..9409fd2685 100644 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +++ b/projects/templates/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template @@ -1,5 +1,6 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { provideHttpClient } from '@angular/common/http'; import { PoPageDynamicDetailModule } from '@po-ui/ng-templates'; @@ -13,10 +14,10 @@ describe('<%= classify(name) %>Component', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ imports: [ - RouterTestingModule, + RouterModule.forRoot([]), PoPageDynamicDetailModule ], - providers: [provideHttpClient()], + providers: [provideLocationMocks(), provideHttpClient()], declarations: [ <%= classify(name) %>Component ] }) .compileComponents(); diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template b/projects/templates/schematics/ng-generate/po-page-dynamic-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template index 816e4b789e..c7ade3a64e 100644 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +++ b/projects/templates/schematics/ng-generate/po-page-dynamic-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template @@ -1,5 +1,6 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { provideHttpClient } from '@angular/common/http'; import { PoPageDynamicEditModule } from '@po-ui/ng-templates'; @@ -13,10 +14,10 @@ describe('<%= classify(name) %>Component', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ imports: [ - RouterTestingModule, + RouterModule.forRoot([]), PoPageDynamicEditModule ], - providers: [provideHttpClient()] + providers: [provideLocationMocks(), provideHttpClient()] }) .compileComponents(); })); diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template b/projects/templates/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template index dd4b4e798e..4b02921f39 100644 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +++ b/projects/templates/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template @@ -1,5 +1,6 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { provideHttpClient } from '@angular/common/http'; import { PoPageDynamicEditModule } from '@po-ui/ng-templates'; @@ -13,10 +14,10 @@ describe('<%= classify(name) %>Component', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ imports: [ - RouterTestingModule, + RouterModule.forRoot([]), PoPageDynamicEditModule ], - providers: [provideHttpClient()], + providers: [provideLocationMocks(), provideHttpClient()], declarations: [ <%= classify(name) %>Component ] }) .compileComponents(); diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-search/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template b/projects/templates/schematics/ng-generate/po-page-dynamic-search/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template index 6a1a71ee9f..28dbc42972 100644 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-search/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +++ b/projects/templates/schematics/ng-generate/po-page-dynamic-search/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template @@ -1,5 +1,6 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { provideHttpClient } from '@angular/common/http'; import { PoPageDynamicSearchModule } from '@po-ui/ng-templates'; @@ -13,10 +14,10 @@ describe('<%= classify(name) %>Component', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ imports: [ - RouterTestingModule, + RouterModule.forRoot([]), PoPageDynamicSearchModule ], - providers: [provideHttpClient()] + providers: [provideLocationMocks(), provideHttpClient()] }) .compileComponents(); })); diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template b/projects/templates/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template index 7fb5ca80aa..abbaf7abe1 100644 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +++ b/projects/templates/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template @@ -1,5 +1,6 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { provideHttpClient } from '@angular/common/http'; import { PoPageDynamicSearchModule } from '@po-ui/ng-templates'; @@ -13,10 +14,10 @@ describe('<%= classify(name) %>Component', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ imports: [ - RouterTestingModule, + RouterModule.forRoot([]), PoPageDynamicSearchModule ], - providers: [provideHttpClient()], + providers: [provideLocationMocks(), provideHttpClient()], declarations: [ <%= classify(name) %>Component ] }) .compileComponents(); diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-table/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template b/projects/templates/schematics/ng-generate/po-page-dynamic-table/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template index f89632cc51..0288a958b0 100644 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-table/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +++ b/projects/templates/schematics/ng-generate/po-page-dynamic-table/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template @@ -1,5 +1,6 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { provideHttpClient } from '@angular/common/http'; import { PoPageDynamicTableModule } from '@po-ui/ng-templates'; @@ -13,10 +14,10 @@ describe('<%= classify(name) %>Component', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ imports: [ - RouterTestingModule, + RouterModule.forRoot([]), PoPageDynamicTableModule ], - providers: [provideHttpClient()] + providers: [provideLocationMocks(), provideHttpClient()] }) .compileComponents(); })); diff --git a/projects/templates/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template b/projects/templates/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template index fb2dd2f3c8..2e2983bb18 100644 --- a/projects/templates/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +++ b/projects/templates/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template @@ -1,5 +1,6 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { provideHttpClient } from '@angular/common/http'; import { PoPageDynamicTableModule } from '@po-ui/ng-templates'; @@ -13,10 +14,10 @@ describe('<%= classify(name) %>Component', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ imports: [ - RouterTestingModule, + RouterModule.forRoot([]), PoPageDynamicTableModule ], - providers: [provideHttpClient()], + providers: [provideLocationMocks(), provideHttpClient()], declarations: [ <%= classify(name) %>Component ] }) .compileComponents(); diff --git a/projects/templates/schematics/ng-generate/po-page-job-scheduler/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template b/projects/templates/schematics/ng-generate/po-page-job-scheduler/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template index dabeb530d9..9b1f4cd923 100644 --- a/projects/templates/schematics/ng-generate/po-page-job-scheduler/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +++ b/projects/templates/schematics/ng-generate/po-page-job-scheduler/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template @@ -1,5 +1,6 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { provideHttpClient } from '@angular/common/http'; import { PoPageJobSchedulerModule } from '@po-ui/ng-templates'; @@ -13,10 +14,10 @@ describe('<%= classify(name) %>Component', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ imports: [ - RouterTestingModule, + RouterModule.forRoot([]), PoPageJobSchedulerModule ], - providers: [provideHttpClient()] + providers: [provideLocationMocks(), provideHttpClient()] }) .compileComponents(); })); diff --git a/projects/templates/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template b/projects/templates/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template index 6d5b91b1ad..caebe5c3d7 100644 --- a/projects/templates/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +++ b/projects/templates/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template @@ -1,5 +1,6 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { provideHttpClient } from '@angular/common/http'; import { PoPageJobSchedulerModule } from '@po-ui/ng-templates'; @@ -13,10 +14,10 @@ describe('<%= classify(name) %>Component', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ imports: [ - RouterTestingModule, + RouterModule.forRoot([]), PoPageJobSchedulerModule ], - providers: [provideHttpClient()], + providers: [provideLocationMocks(), provideHttpClient()], declarations: [ <%= classify(name) %>Component ] }) .compileComponents(); diff --git a/projects/templates/schematics/ng-generate/po-page-login/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template b/projects/templates/schematics/ng-generate/po-page-login/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template index 14390f5afc..2295cda502 100644 --- a/projects/templates/schematics/ng-generate/po-page-login/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +++ b/projects/templates/schematics/ng-generate/po-page-login/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template @@ -1,5 +1,6 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { provideHttpClient } from '@angular/common/http'; import { PoPageLoginModule } from '@po-ui/ng-templates'; @@ -13,10 +14,10 @@ describe('<%= classify(name) %>Component', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ imports: [ - RouterTestingModule, + RouterModule.forRoot([]), PoPageLoginModule ], - providers: [provideHttpClient()] + providers: [provideLocationMocks(), provideHttpClient()] }) .compileComponents(); })); diff --git a/projects/templates/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template b/projects/templates/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template index ca22130871..9d35e76d3a 100644 --- a/projects/templates/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +++ b/projects/templates/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template @@ -1,5 +1,6 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; +import { provideLocationMocks } from '@angular/common/testing'; +import { RouterModule } from '@angular/router'; import { provideHttpClient } from '@angular/common/http'; import { PoPageLoginModule } from '@po-ui/ng-templates'; @@ -13,10 +14,10 @@ describe('<%= classify(name) %>Component', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ imports: [ - RouterTestingModule, + RouterModule.forRoot([]), PoPageLoginModule ], - providers: [provideHttpClient()], + providers: [provideLocationMocks(), provideHttpClient()], declarations: [ <%= classify(name) %>Component ] }) .compileComponents(); diff --git a/projects/templates/src/lib/components/po-modal-password-recovery/po-modal-password-recovery-error-message/po-modal-password-recovery-error-message.component.ts b/projects/templates/src/lib/components/po-modal-password-recovery/po-modal-password-recovery-error-message/po-modal-password-recovery-error-message.component.ts index 88896971c0..244ab62e73 100644 --- a/projects/templates/src/lib/components/po-modal-password-recovery/po-modal-password-recovery-error-message/po-modal-password-recovery-error-message.component.ts +++ b/projects/templates/src/lib/components/po-modal-password-recovery/po-modal-password-recovery-error-message/po-modal-password-recovery-error-message.component.ts @@ -1,4 +1,4 @@ -import { Component, Input } from '@angular/core'; +import { Component, Input, ChangeDetectionStrategy } from '@angular/core'; /** * @docsPrivate @@ -10,6 +10,7 @@ import { Component, Input } from '@angular/core'; @Component({ selector: 'po-modal-password-recovery-error-message', templateUrl: './po-modal-password-recovery-error-message.component.html', + changeDetection: ChangeDetectionStrategy.Eager, standalone: false }) export class PoModalPasswordRecoveryErrorMessageComponent { diff --git a/projects/templates/src/lib/components/po-modal-password-recovery/po-modal-password-recovery.component.html b/projects/templates/src/lib/components/po-modal-password-recovery/po-modal-password-recovery.component.html index e1a7175094..0bed89b5cb 100644 --- a/projects/templates/src/lib/components/po-modal-password-recovery/po-modal-password-recovery.component.html +++ b/projects/templates/src/lib/components/po-modal-password-recovery/po-modal-password-recovery.component.html @@ -2,117 +2,134 @@ #recoveryModal p-hide-close p-size="auto" - [ngSwitch]="modalType" [p-components-size]="componentsSize" [p-primary-action]="primaryAction" [p-secondary-action]="secondaryAction" [p-title]="modalTitle" >