Skip to content

Release 8.1.0#40

Open
JeraldJF wants to merge 96 commits intomainfrom
release-8.1.0
Open

Release 8.1.0#40
JeraldJF wants to merge 96 commits intomainfrom
release-8.1.0

Conversation

@JeraldJF
Copy link
Collaborator

@JeraldJF JeraldJF commented Dec 22, 2025

Summary by CodeRabbit

Release Notes

  • New Features

    • Redesigned notification card UI with Material Design components for improved visual consistency
  • Documentation

    • Updated README with comprehensive setup and usage guides for Sunbird package
  • Chores

    • Upgraded framework to Angular 16 with updated ecosystem packages
    • Migrated publishing workflow to GitHub Actions (triggers on repository tags)
    • Set minimum Node.js (v16.13.0) and npm (v8.19.3) version requirements

✏️ Tip: You can customize this high-level summary in your review settings.

Rajesh Kumaravel and others added 30 commits November 21, 2022 14:27
Update an Angular CLI project to version 8.
Angular Workspace migration. Update an Angular CLI workspace to version 9.
Replace deprecated 'styleext' and 'spec' Angular schematic options.
…ease-5.1.0_v9

Issue #SB-0000 fix: Upgrade library from Angular 8 to Angular 9
Update tslint to version 6 and adjust rules to maintain existing behavior.
Update library projects to use tslib version 2 as a direct dependency. Read more about this here: https://v10.angular.io/guide/migration-update-libraries-tslib
Update workspace dependencies to match a new v10 project.
Issue #SB-0000 fix: Upgrade library from Angular 9 to Angular 10
Issue #SB-0000 fix: Upgrade library from Angular 9 to Angular 10
Replace deprecated library builder '@angular-devkit/build-ng-packagr'.
Add 'declarationMap' compiler options for non production library builds.
Update workspace dependencies to match a new v11 project.
Issue #SB-0000 fix: Upgrade library from Angular 10 to Angular 11
Remove 'emitDecoratorMetadata' TypeScript compiler option. Decorator metadata is no longer needed by Angular. Read more about this here: https://www.typescriptlang.org/docs/handbook/decorators.html#metadata
Optional migration to update Angular CLI workspace configurations to 'production' mode by default.
mithun30052001 and others added 26 commits March 11, 2024 14:18
…tion

Issue #ED-3735 Angular migration from 15 to 16
…tion

 Angular migration 16  without legacy peers
SBCOSS-I251: Display description for notifications
SBCOSS-I299: Changes to suporrt angular material v14
@coderabbitai
Copy link

coderabbitai bot commented Dec 22, 2025

Walkthrough

Major version upgrade from Angular 8 to Angular 16, including dependency updates, component refactoring to integrate Material Design, configuration updates for the new build system, CI/CD pipeline migration from CircleCI to GitHub Actions, and TypeScript compiler option changes for Ivy and partial compilation mode.

Changes

Cohort / File(s) Summary
CI/CD Pipeline
.circleci/config.yml, .github/workflows/publish-npm.yaml
Removed CircleCI Node.js build and npm publish workflow; added GitHub Actions workflow that publishes on tag pushes with Node.js v18.20.8, Yarn cache restoration, and npm authentication.
Package Dependencies
package.json, projects/notification/package.json
Updated Angular 8 dependencies to 16.x across @angular/* packages; added @angular/cdk, @angular/material; updated devDependencies to Angular 16 tooling; bumped module version to 8.0.1-v16.1; added Node/npm engine constraints; converted peerDependencies to dependencies with tslib 2.6.2.
Build & TypeScript Configuration
angular.json, tsconfig.json, projects/notification/tsconfig.lib.json, projects/notification/tsconfig.lib.prod.json
Updated build builder from ng-packagr to build-angular:ng-packagr, added production/development configurations; changed TypeScript target to es2015, module to es2020, added downlevelIteration; enabled Ivy and partial compilation mode in Angular compiler options; removed emitDecoratorMetadata.
Component Templates & Styles
projects/notification/src/lib/notification-card/notification-card.component.html, projects/notification/src/lib/notification-card/notification-card.component.scss, projects/notification/src/lib/notification.component.html, projects/notification/src/lib/notification.component.scss
Refactored notification-card to use Material mat-card component with subtitle, title, description, and delete action; simplified SCSS with material styling; updated notification component header layout with h4 title, inline clear action link, and Material button for show more/less actions; migrated SCSS to @use module syntax.
Module & API Configuration
projects/notification/src/lib/notification.module.ts, projects/notification/src/public-api.ts
Added MatButtonModule, MatCardModule, MatIconModule to module imports; updated forRoot() return type to ModuleWithProviders<any>; exported notification-card.component in public API.
Test Configuration
projects/notification/src/test.ts
Updated zone.js import paths from zone.js/dist/* to zone.js and zone.js/testing; added teardown configuration { teardown: { destroyAfterEach: false } } to test platform bootstrap.
Tooling & Linting
tslint.json
Removed no-use-before-declare rule; replaced decorator rules (use-input-property-decorator, use-output-property-decorator, use-host-property-decorator) with metadata equivalents; renamed use-life-cycle-interface to use-lifecycle-interface.
Documentation & Repository
README.md, projects/notification/README.md, .gitignore
Rebranded documentation from sb--notification to @project-sunbird/sb-notification with Sunbird branding; added Getting Started, installation, usage examples, and Options sections; added .angular/cache to .gitignore.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45–60 minutes

  • Angular 16 migration compatibility: Verify all breaking changes from Angular 8→16 are correctly addressed (e.g., RxJS operators, API changes, module imports)
  • Material Design integration: Validate Material component implementations in notification-card and notification components, including accessibility attributes and event handling
  • Build system changes: Confirm angular.json builder and configuration changes, including production/development profiles and new tsConfig paths
  • CI/CD pipeline: Test GitHub Actions workflow correctness, Node/Yarn setup, and npm authentication for publishing on tags
  • Dependency alignment: Ensure all transitive dependencies and peer dependencies are compatible with Angular 16
  • TypeScript compiler options: Verify Ivy enablement, partial compilation mode, and target/module changes don't introduce runtime issues

🐰 Angular's upgraded high, from eight to sixteen we climb,
Material cards now grace our views, compiled partial-time,
CircleCI steps away so neat, GitHub Actions take the stage,
A modern, snappy bundle shipped—dependency's new age!

Pre-merge checks and finishing touches

❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Title check ❓ Inconclusive The title 'Release 8.1.0' is vague and does not meaningfully describe the substantive changes in the pull request, which include upgrading from Angular 8 to Angular 16, migrating CI/CD from CircleCI to GitHub Actions, updating Material Design components, and comprehensive modernization of the build tooling. Consider using a more descriptive title like 'Upgrade Angular 8 to 16 and modernize build tooling' to better convey the primary changes in the changeset.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch release-8.1.0

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@JeraldJF JeraldJF marked this pull request as ready for review December 22, 2025 11:51
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
projects/notification/src/lib/notification-card/notification-card.component.html (1)

14-34: Remove commented-out code before merging.

The old implementation should be removed. If reference is needed, it remains available in git history.

🔎 Proposed fix
 </mat-card>
-
-<!-- <div class="sb-notification-list p-8" (click)="notificationClickHandler($event)" tabindex="0">
-  <div class="sb-notification-list-header d-flex flex-ai-center flex-jc-space-between">
-    <div class="notification-info d-flex flex-ai-center mb-8">
-      <div class="status" *ngIf="(notification?.status === NotificationStatus.UNREAD)"></div>
-      <div class="date ml-8">{{notification?.createdOn | date:'E, d MMMM h:mm'}}</div>
-    </div>
-    <div class="delete-icon" *ngIf="!hideDeleteOption" (click)="notificationDeleteHandler($event);$event.stopPropagation()" tabindex="0">
-      <img class="Delete-gray" src="assets/common-consumption/images/Delete-gray.svg" alt="" alt="delete" width="14px">
-      <img class="Delete-red" src="assets/common-consumption/images/Delete-red.svg" alt="" alt="delete" width="14px">
-    </div>
-  </div>
-  <div class="sb-notification-data d-flex flex-ai-center">
-    <div class="logo" *ngIf="notification?.data?.actionData?.thumbnail">
-      <img [src]="notification?.data?.actionData?.thumbnail" width="20px">
-    </div>
-    <div class="ml-12 notification-content">
-      <div class="title" *ngIf="notification?.action?.template?.data?.title" [ngClass]="{'active': notification?.status === NotificationStatus.UNREAD}">{{notification?.action?.template?.data?.title}}</div>
-      <div class="sub-title py-8" *ngIf="notification?.data?.actionData?.description">{{notification?.data?.actionData?.description}}</div>
-    </div>
-  </div>
-</div> -->
🧹 Nitpick comments (13)
projects/notification/src/lib/notification.component.html (1)

17-18: Remove redundant accessibility attributes.

Both show more/less buttons have redundant attributes:

  • aria-hidden="false" - elements are visible by default
  • tabindex="0" - Material buttons are already in the tab order
🔎 Proposed cleanup
-    <a mat-button color="accent" aria-hidden="false" class="text-center" *ngIf="displayItemCount < this.notificationList?.length" tabindex="0" (click)="onShowMore()">{{inAppNotificationConfig?.moreText}}</a>
-    <a mat-button color="accent" aria-hidden="false" class="text-center" *ngIf="displayItemCount === this.notificationList?.length" tabindex="0" (click)="onShowLess()">{{inAppNotificationConfig?.lessText}}</a>
+    <a mat-button color="accent" class="text-center" *ngIf="displayItemCount < this.notificationList?.length" (click)="onShowMore()">{{inAppNotificationConfig?.moreText}}</a>
+    <a mat-button color="accent" class="text-center" *ngIf="displayItemCount === this.notificationList?.length" (click)="onShowLess()">{{inAppNotificationConfig?.lessText}}</a>
projects/notification/src/test.ts (1)

16-18: Consider enabling destroyAfterEach: true for better test isolation.

The current configuration destroyAfterEach: false preserves Angular 8's behavior where test modules are not destroyed between tests. While this helps during migration, Angular 16 recommends destroyAfterEach: true for better test isolation and to prevent state leakage between tests.

🔎 Recommended configuration for Angular 16
 getTestBed().initTestEnvironment(
   BrowserDynamicTestingModule,
   platformBrowserDynamicTesting(), {
-    teardown: { destroyAfterEach: false }
+    teardown: { destroyAfterEach: true }
 }
 );
projects/notification/src/lib/notification-card/notification-card.component.scss (1)

1-1: Consider removing the commented import.

The old @import statement is commented out but can be safely removed now that the migration to @use is complete.

🔎 Proposed cleanup
-// @import "../../../../../node_modules/@project-sunbird/sb-styles/assets/mixins/mixins";
 @use "@project-sunbird/sb-styles/assets/mixins/mixins" as *;
projects/notification/tsconfig.lib.prod.json (1)

6-9: Remove redundant angularCompilerOptions.

The compilationMode and enableIvy settings are already inherited from tsconfig.lib.json, making this block unnecessary.

🔎 Proposed simplification
 {
   "extends": "./tsconfig.lib.json",
   "compilerOptions": {
     "declarationMap": false
-  },
-  "angularCompilerOptions": {
-    "compilationMode": "partial",
-    "enableIvy": true
   }
 }
projects/notification/README.md (2)

40-42: Add language specifier to code block.

The installation code block should specify bash or shell for proper syntax highlighting.

🔎 Proposed fix
-```
+```bash
 $ npm i @project-sunbird/sb-notification

</details>

---

`89-101`: **Replace hard tabs with spaces in version table.**

The version table uses hard tabs which violates markdown best practices. Replace with spaces for consistent rendering across editors.



<details>
<summary>🔎 Proposed fix</summary>

```diff
-|   release branch  	| npm package version 	| Angular Version 	|
-|:-----------------:	|:-------------------:	|:---------------:	|
-|  release-5.1.0_v9 	|        5.0.2        	|      NG V9      	|
+|   release branch   | npm package version | Angular Version |
+|:-----------------:|:-------------------:|:---------------:|
+|  release-5.1.0_v9 |        5.0.2        |      NG V9      |

Apply similar changes to all remaining rows in the table.

projects/notification/package.json (1)

16-18: Consider adding peerDependencies for Angular compatibility.

Removing peerDependencies for Angular libraries is atypical. Libraries should declare peer dependencies on @angular/core and @angular/common to ensure consumers use compatible Angular versions and receive warnings when there's a mismatch.

🔎 Suggested addition
  "dependencies": {
    "tslib": "2.6.2"
  },
+ "peerDependencies": {
+   "@angular/common": "^16.0.0",
+   "@angular/core": "^16.0.0"
+ },
  "homepage": "https://github.com/Sunbird-Ed/sb-notification.git#readme"
README.md (3)

40-42: Add language specifier to code block.

The installation code block should specify a language for proper syntax highlighting.

🔎 Proposed fix
-```
+```bash
 $ npm i @project-sunbird/sb-notification
</details>

---

`46-65`: **Use correct language identifier for TypeScript code.**

The code block uses `console` as the language identifier, but the content is TypeScript. This affects syntax highlighting.


<details>
<summary>🔎 Proposed fix</summary>

```diff
-```console
+```typescript
 import { BrowserModule } from '@angular/platform-browser';

89-101: Update versions table and fix formatting.

  1. The table uses hard tabs instead of spaces, which can cause rendering issues in some Markdown viewers.
  2. The current release 8.1.0 (per PR title) is missing from the versions table.

Consider adding the new version row and replacing tabs with spaces for consistency.

package.json (3)

37-37: Consider migrating from deprecated linting tools.

codelyzer and tslint are deprecated since Angular 12. The Angular team recommends migrating to @angular-eslint. This isn't blocking for this release, but should be addressed in a future update.

Also applies to: 48-48


46-46: Protractor is deprecated.

Protractor is no longer maintained and Angular has removed it from new projects. Consider migrating to Cypress, Playwright, or WebdriverIO for e2e testing in a future update.


25-25: Consider updating core-js.

core-js version 2.5.4 is from 2018. If polyfills are still needed for your target browsers, consider updating to core-js@3.x. However, with Angular 16 targeting modern browsers, you may be able to remove this dependency entirely.

📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 18fb639 and e6b1c52.

⛔ Files ignored due to path filters (2)
  • package-lock.json is excluded by !**/package-lock.json
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (19)
  • .circleci/config.yml
  • .github/workflows/publish-npm.yaml
  • .gitignore
  • README.md
  • angular.json
  • package.json
  • projects/notification/README.md
  • projects/notification/package.json
  • projects/notification/src/lib/notification-card/notification-card.component.html
  • projects/notification/src/lib/notification-card/notification-card.component.scss
  • projects/notification/src/lib/notification.component.html
  • projects/notification/src/lib/notification.component.scss
  • projects/notification/src/lib/notification.module.ts
  • projects/notification/src/public-api.ts
  • projects/notification/src/test.ts
  • projects/notification/tsconfig.lib.json
  • projects/notification/tsconfig.lib.prod.json
  • tsconfig.json
  • tslint.json
💤 Files with no reviewable changes (1)
  • .circleci/config.yml
🧰 Additional context used
🪛 markdownlint-cli2 (0.18.1)
projects/notification/README.md

5-5: Heading style
Expected: atx; Actual: setext

(MD003, heading-style)


40-40: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


41-41: Dollar signs used before commands without showing output

(MD014, commands-show-output)


73-73: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


74-74: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


84-84: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


85-85: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


89-89: Hard tabs
Column: 21

(MD010, no-hard-tabs)


89-89: Hard tabs
Column: 44

(MD010, no-hard-tabs)


89-89: Hard tabs
Column: 63

(MD010, no-hard-tabs)


90-90: Hard tabs
Column: 21

(MD010, no-hard-tabs)


90-90: Hard tabs
Column: 44

(MD010, no-hard-tabs)


90-90: Hard tabs
Column: 63

(MD010, no-hard-tabs)


91-91: Hard tabs
Column: 21

(MD010, no-hard-tabs)


91-91: Hard tabs
Column: 44

(MD010, no-hard-tabs)


91-91: Hard tabs
Column: 63

(MD010, no-hard-tabs)


92-92: Hard tabs
Column: 22

(MD010, no-hard-tabs)


92-92: Hard tabs
Column: 45

(MD010, no-hard-tabs)


92-92: Hard tabs
Column: 64

(MD010, no-hard-tabs)


93-93: Hard tabs
Column: 22

(MD010, no-hard-tabs)


93-93: Hard tabs
Column: 45

(MD010, no-hard-tabs)


93-93: Hard tabs
Column: 64

(MD010, no-hard-tabs)


94-94: Hard tabs
Column: 22

(MD010, no-hard-tabs)


94-94: Hard tabs
Column: 45

(MD010, no-hard-tabs)


94-94: Hard tabs
Column: 64

(MD010, no-hard-tabs)


95-95: Hard tabs
Column: 22

(MD010, no-hard-tabs)


95-95: Hard tabs
Column: 45

(MD010, no-hard-tabs)


95-95: Hard tabs
Column: 64

(MD010, no-hard-tabs)


96-96: Hard tabs
Column: 22

(MD010, no-hard-tabs)


96-96: Hard tabs
Column: 45

(MD010, no-hard-tabs)


96-96: Hard tabs
Column: 64

(MD010, no-hard-tabs)


97-97: Hard tabs
Column: 22

(MD010, no-hard-tabs)


97-97: Hard tabs
Column: 45

(MD010, no-hard-tabs)


97-97: Hard tabs
Column: 64

(MD010, no-hard-tabs)


98-98: Hard tabs
Column: 22

(MD010, no-hard-tabs)


98-98: Hard tabs
Column: 45

(MD010, no-hard-tabs)


98-98: Hard tabs
Column: 63

(MD010, no-hard-tabs)


99-99: Hard tabs
Column: 22

(MD010, no-hard-tabs)


99-99: Hard tabs
Column: 45

(MD010, no-hard-tabs)


99-99: Hard tabs
Column: 63

(MD010, no-hard-tabs)

README.md

5-5: Heading style
Expected: atx; Actual: setext

(MD003, heading-style)


40-40: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


41-41: Dollar signs used before commands without showing output

(MD014, commands-show-output)


73-73: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


74-74: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


84-84: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


85-85: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


89-89: Hard tabs
Column: 21

(MD010, no-hard-tabs)


89-89: Hard tabs
Column: 44

(MD010, no-hard-tabs)


89-89: Hard tabs
Column: 63

(MD010, no-hard-tabs)


90-90: Hard tabs
Column: 21

(MD010, no-hard-tabs)


90-90: Hard tabs
Column: 44

(MD010, no-hard-tabs)


90-90: Hard tabs
Column: 63

(MD010, no-hard-tabs)


91-91: Hard tabs
Column: 21

(MD010, no-hard-tabs)


91-91: Hard tabs
Column: 44

(MD010, no-hard-tabs)


91-91: Hard tabs
Column: 63

(MD010, no-hard-tabs)


92-92: Hard tabs
Column: 22

(MD010, no-hard-tabs)


92-92: Hard tabs
Column: 45

(MD010, no-hard-tabs)


92-92: Hard tabs
Column: 64

(MD010, no-hard-tabs)


93-93: Hard tabs
Column: 22

(MD010, no-hard-tabs)


93-93: Hard tabs
Column: 45

(MD010, no-hard-tabs)


93-93: Hard tabs
Column: 64

(MD010, no-hard-tabs)


94-94: Hard tabs
Column: 22

(MD010, no-hard-tabs)


94-94: Hard tabs
Column: 45

(MD010, no-hard-tabs)


94-94: Hard tabs
Column: 64

(MD010, no-hard-tabs)


95-95: Hard tabs
Column: 22

(MD010, no-hard-tabs)


95-95: Hard tabs
Column: 45

(MD010, no-hard-tabs)


95-95: Hard tabs
Column: 64

(MD010, no-hard-tabs)


96-96: Hard tabs
Column: 22

(MD010, no-hard-tabs)


96-96: Hard tabs
Column: 45

(MD010, no-hard-tabs)


96-96: Hard tabs
Column: 64

(MD010, no-hard-tabs)


97-97: Hard tabs
Column: 22

(MD010, no-hard-tabs)


97-97: Hard tabs
Column: 45

(MD010, no-hard-tabs)


97-97: Hard tabs
Column: 64

(MD010, no-hard-tabs)


98-98: Hard tabs
Column: 22

(MD010, no-hard-tabs)


98-98: Hard tabs
Column: 45

(MD010, no-hard-tabs)


98-98: Hard tabs
Column: 63

(MD010, no-hard-tabs)


99-99: Hard tabs
Column: 22

(MD010, no-hard-tabs)


99-99: Hard tabs
Column: 45

(MD010, no-hard-tabs)


99-99: Hard tabs
Column: 63

(MD010, no-hard-tabs)

🔇 Additional comments (19)
projects/notification/src/lib/notification.component.html (1)

9-14: LGTM!

The notification list structure correctly uses Angular's *ngFor with the slice pipe for pagination, properly binds data to the sb-notification-card component, and includes appropriate event handlers. The tabindex="0" ensures keyboard accessibility for each notification card.

projects/notification/src/test.ts (2)

23-23: Summary inconsistency detected.

The AI-generated summary states that this line was "added," but the code annotations show it was already present (no ~ marker). This line appears to have existed in the previous version of the file.


3-4: Zone.js import paths are correct for Angular 16.

The import statements have been properly updated to remove the /dist/ prefix, aligning with the modern zone.js package structure. However, verify that the zone.js version in package.json is 0.14.0 or later (not 0.13.0), as Angular v16 supports Zone.js > version 0.14.x or later.

projects/notification/src/lib/notification-card/notification-card.component.scss (1)

2-7: Modern Sass migration looks good — package dependency verified.

The migration from @import to @use aligns with modern Sass best practices (introduced in 2019) and reduces compiled CSS output. The @project-sunbird/sb-styles v0.0.16 dependency is properly configured in package.json. The simplified styling approach leverages Material Design defaults effectively.

Note: The repository does not currently have visual regression test infrastructure configured. Manual testing or verification through existing component tests is recommended to ensure the simplified styling maintains expected UI appearance across different themes and screen sizes.

.gitignore (1)

35-35: LGTM! Standard Angular 16+ cache directory.

This addition appropriately excludes the Angular CLI build cache from version control.

projects/notification/tsconfig.lib.json (2)

5-5: LGTM! Enables source map navigation for published library.

The declarationMap: true option helps consumers navigate to the original TypeScript source when debugging.


26-27: LGTM! Appropriate Angular 16+ library configuration.

Enabling Ivy with partial compilation mode is the standard approach for Angular 16+ libraries, allowing the library to be compatible with different Angular applications.

tsconfig.json (2)

4-5: LGTM! Correct Ivy configuration for Angular 16.

Setting enableIvy: "partial" with compilationMode: "partial" is the standard configuration for Angular 16+ projects with publishable libraries.


9-9: LGTM! Modern JavaScript target configuration.

The upgraded module (es2020), target (es2015), and downlevelIteration settings are appropriate for Angular 16+ and modern browser support.

Also applies to: 13-13, 17-17

projects/notification/src/lib/notification.module.ts (1)

5-7: LGTM! Angular Material integration.

The Material module imports (Button, Card, Icon) are correctly added to support the updated UI components.

Also applies to: 16-18

tslint.json (1)

120-125: LGTM! Updated linting rules for Angular 16.

The rule name updates align with the latest codelyzer conventions for Angular 16+, maintaining the same enforcement semantics with modernized rule names.

.github/workflows/publish-npm.yaml (1)

1-39: Workflow configuration verified and correct.

The ng build command via ng-packagr outputs to dist/notification with a complete npm package (including package.json) ready for publishing. The npm pack and npm publish commands targeting ./dist/notification are appropriately configured. Ensure the NPM_TOKEN secret is configured in your repository settings with appropriate npm registry permissions.

projects/notification/package.json (1)

3-3: Version mismatch with PR title.

The package version is 8.0.1-v16.1 but the PR title indicates "Release 8.1.0". Please verify the intended version.

angular.json (2)

42-44: Verify the analytics setting is intentional.

The CLI analytics is enabled with a specific UUID. Ensure this is intentional for the project. If you prefer to disable telemetry, you can set "analytics": false.


12-25: LGTM!

The builder migration from @angular-devkit/build-ng-packagr:build to @angular-devkit/build-angular:ng-packagr is the correct approach for Angular 16+. The production/development configurations with separate tsconfig files follow Angular best practices.

projects/notification/src/public-api.ts (1)

8-8: LGTM!

The new export correctly expands the public API to include the notification-card component, following the existing export pattern. The component is properly implemented and ready for use.

projects/notification/src/lib/notification-card/notification-card.component.html (3)

7-11: LGTM!

The actions section correctly implements event propagation control, includes proper accessibility attributes (aria-label), and appropriately uses Angular Material components.


1-12: Remove verification request—thumbnail removal is part of intentional design refactoring.

The old implementation (lines 14-34, commented out) displays notification thumbnails using notification?.data?.actionData?.thumbnail. The new mat-card implementation intentionally removes this feature as part of a broader redesign that also shifts the data model from notification.data.actionData to notification.action.template.data. The simplified mat-card design no longer includes thumbnail/logo display. This is a deliberate design change, not a regression.


4-6: The data structure refactoring appears complete. The new path notification?.action?.template?.data?.description is correctly implemented with JSON parsing in notification.component.ts, and the old notification.data.actionData structure is no longer used in active code.

The old structure exists only in commented code and legacy test data (notification-data.ts), not in any active implementation. The JSON transformation at lines 37-38 of notification.component.ts properly converts action.template.data from a JSON string to a parsed object, enabling the current template bindings to work correctly. No consumers are using the deprecated path.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants