entity-aside

Implements Angular record create-and-edit panels as routed aside components with shared base classes.

1|Updated Jan 14, 2024
One-click install
npx skills add https://github.com/Eyhenij/rt-tools --skill entity-aside-eyhenij
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: entity-aside
Source: https://github.com/Eyhenij/rt-tools/tree/main/.claude/skills/entity-aside
Command: npx skills add https://github.com/Eyhenij/rt-tools --skill entity-aside-eyhenij

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Building consistent record create-and-edit panels in an Angular admin application requires coordinating routing, saving, unsaved-changes guards, and layout conventions; this Skill encodes the full pattern so panels behave uniformly and survive reloads. ## Core Features & Use Cases - Route-declared panels: Declares each panel as a route in the ro outlet so it survives reloads, is linkable, and lands in browser history, with navigation relative to the current route. - Shared base and mutation flow: Inherits RtRouteAsideComponent<T> for entity state and saving mechanics, and runs writes through runMutation with success toasts, error handling, and close-on-success. - Guards and layout conventions: Sets up the unsaved-edits guard on all four closing paths, fixed header/footer button captions, and read-only detail panels built from rt-aside-section, rt-detail-list, and rt-detail-row. - Use Case: When adding a booking edit panel to an admin app, follow this pattern to wire the route, inherit the base, guard unsaved edits, and render the footer buttons correctly. ## Quick Start Ask the AI to create a new record edit panel for an entity following the entity-aside pattern with a routed ro outlet, the shared aside base, runMutation saving, and the unsaved-changes guard.

Frequently Asked Questions about entity-aside

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I open an Angular aside panel via a named router outlet?

Declare the panel as a route in the ro outlet and navigate with router.navigate using the outlets syntax relative to the current route. Navigating from the application root silently fails to open the panel without throwing an error.

How to guard unsaved changes in an Angular edit panel?

Call guardUnsavedChanges from the shared base with a pristine signal built from viewChild(NgForm) and a save callback. The guard covers all four closing paths: header button, footer button, outside click, and Escape.

Why does my Angular aside panel not close after saving?

A panel opened from the application root instead of the current route cannot close because the base closes against the parent of the current route. Also ensure the mutation stream emits a value or error, since an empty stream freezes the panel.

Why does a footer button disappear inside an Angular @if block?

Footer buttons reach their zones by attribute projection, and a node inside a conditional @if block never reaches the slot. Disable the button with [disabled] instead of hiding it conditionally.

When should I not use routerLink for navigation in an edit panel?

Avoid routerLink when leaving for a related record, because the directive navigates on its own, preventDefault does not stop it, and it bypasses the unsaved-edits guard. Use the base's openRelated method with a click handler instead.