slovnicki / beamer

A routing package built on top of Router and Navigator's pages API, supporting arbitrary nested navigation, guards and more.
MIT License
591 stars 129 forks source link

Notifiers feature #679

Open busslina opened 2 months ago

busslina commented 2 months ago

This changes introduces two new related features:

Pinnacle page: The top level page on a beam stack.

Motivation:

In order to understand this changes I will explain my use case: I have a top level router which handles all the routes and I have three child sibling routers:

Why having those routers? Because I need to stack some floating layers on top of each (header, screen and footer), and these floating layers must survive (live more than) the routes & beams stacks. This is the reason to have the first feature. It's an optional object passed in the page creation (notified on pinnacle page change) that, in my case, can help to customize those floating layers based on the current visible page (pinnacle page).

The second feature is more obvious: To be able to optionally notify every page on every stack state change (E.G. page position in the stack) in a push way instead of the more trickier way of listening router changes and compare url path. This is done by passing an optional notifier in the page creation.

busslina commented 2 months ago

Output demo: imagen imagen imagen

slovnicki commented 2 months ago

Hey @busslina thank for the PR :pray:

it seems interesting, but it will take me some time to inpect it.

busslina commented 2 months ago

Yeah, works great but also could be a mess as is not easy for me to integrate others code that I don't know very well. BTW I just started my own routing library. If I achieve something I let you know :)