Sitelet https://github.com/limitless-angular/limitless-angular/pull/84
Skip to content

refactor(sanity): modernize Angular rendering and dynamic bindings - #84

Open
osnoser1 wants to merge 9 commits into
mainfrom
osnoser1/angular-18-20-modernization
Open

osnoser1 wants to merge 9 commits into
mainfrom
osnoser1/angular-18-20-modernization

Conversation

@osnoser1

@osnoser1 osnoser1 commented Sep 24, 2026 •

Copy link
Copy Markdown
Member

PR Checklist

Portable Text recreated embedded child views on updates. Visual editing set dynamic component inputs and subscribed to outputs manually, and live preview had two initialization paths. Image URLs with a height could override an explicit fit choice.

No linked issue.

What is the new behavior?

  • Render Portable Text children declaratively with NgTemplateOutlet, preserving custom descendant component instances across parent updates.
  • Use Angular 20 inputBinding and outputBinding for dynamic visual editing components, reflect input metadata for aliases, and schedule overlay DOM reads and writes with afterRenderEffect.
  • Keep overlay menu state tied to its hovered source with linkedSignal, reuse template signal values with @let, and derive router navigation state with toSignal.
  • Consolidate live preview initialization, enable stricter Angular template diagnostics, preserve explicitly requested image fit, and defer noncritical example content.
  • Add focused package tests and packed-consumer runtime coverage for these behaviors. Isolate the visual editing navigation spec from lazy editor setup so Vitest can tear down cleanly.

Does this PR introduce a breaking change?

  • Yes
  • No

No public entry point or Angular peer-version range changes.

Other information

Validated after rebasing onto origin/main:

  • pnpm test — passed (94 library tests, 55 release-tools tests, 27 compatibility tests).

  • pnpm lint — passed.

  • pnpm build — passed.

  • pnpm compat:assert, pnpm compat:release-parity, and pnpm compat:pack — passed.

  • PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH=/Users/alfonso-andres/Library/Caches/ms-playwright/chromium-1169/chrome-mac/Chromium.app/Contents/MacOS/Chromium pnpm compat:test --set angular-20-floor — passed the Angular 20.0.7 consumer build and Chromium runtime smoke. The installed browser was used because Playwright 1.44.1's browser download stalled locally.

  • SANITY_E2E_BROWSER_CHANNEL=chrome pnpm --filter sanity-presentation-e2e e2e — 3 passed, 2 real Studio tests skipped by configuration.

  • SANITY_E2E_BROWSER_CHANNEL=chrome pnpm --filter sanity-presentation-e2e e2e-studio — 1 hermetic Studio test passed, 1 real Sanity mutation test skipped by configuration.

  • TURBO_SCM_BASE=origin/main pnpm turbo run build test --affected --force — passed after isolating the navigation spec (6 tasks, no cache).

  • pnpm --filter @limitless-angular/sanity lint and git diff --check — passed.

  • git diff --check origin/main...HEAD — passed.

  • node apps/sanity-presentation-e2e/scripts/sanity-seed-post.mjs — passed; ensured the real smoke document exists.

  • SANITY_E2E_BROWSER_CHANNEL=chrome pnpm --filter sanity-presentation-e2e e2e-real-studio — 2 passed against the real Sanity project, including a live document mutation, preview update without iframe reload, and restoration of the original title.

The reverted component-inlining experiment is absent from this PR.

[Optional] What gif best describes this PR or how it makes you feel?

N/A

@netlify

netlify Bot commented Sep 24, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for limitless-angular-sanity-example canceled.

Name Link
🔨 Latest commit e03644d
🔍 Latest deploy log https://app.netlify.com/projects/limitless-angular-sanity-example/deploys/6ab4bfd3aa6aa30008287170

@pkg-pr-new

pkg-pr-new Bot commented Sep 24, 2026 •

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/@limitless-angular/sanity@84

commit: e03644d

@github-actions

github-actions Bot commented Sep 24, 2026 •

Copy link
Copy Markdown

Angular canary compatibility warning

The advisory Angular canary compatibility check failed. This does not block the PR because canary targets are outside the currently required support matrix.

Supported peer range: ^20.0.0 || ^21.0.0 || ^22.0.0
Workflow run: CI #438

Canary set Target Tested versions First failure
angular-next Angular next Angular 22.2.0-rc.0, CLI 22.2.0-rc.0, TypeScript 6.0.3 ✘ [ERROR] Unsupported syntax, expected an object literal. [plugin angular-compiler]

Stable Angular compatibility rows remain required and will still fail CI if the declared peer range is broken.

This branch has not been deployed

No deployments
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.

1 participant