mirror of
https://github.com/we-promise/sure.git
synced 2026-05-30 07:49:01 +00:00
fix(savings_goals): projection chart redraws when container resizes (Turbo navigation)
After submitting a new contribution, Turbo's redirect-replace stream swaps the page; the chart's data-controller reconnects but the container's clientWidth can momentarily be 0 (parent grid hasn't laid out yet). The early-bail in _draw left the SVG empty and nothing triggered another draw, so the chart stayed blank. Add a ResizeObserver to the controller. The observer fires once the container settles into a real size and re-runs _draw, which now paints the chart correctly after the post-submit navigation.
This commit is contained in:
@@ -17,10 +17,18 @@ export default class extends Controller {
|
||||
this._draw();
|
||||
this._resize = this._draw.bind(this);
|
||||
window.addEventListener("resize", this._resize);
|
||||
// Container may have 0 width on initial connect (Turbo restoration,
|
||||
// hidden parent, etc). Re-draw whenever the box settles into a real
|
||||
// size.
|
||||
if (typeof ResizeObserver !== "undefined") {
|
||||
this._observer = new ResizeObserver(() => this._draw());
|
||||
this._observer.observe(this.element);
|
||||
}
|
||||
}
|
||||
|
||||
disconnect() {
|
||||
window.removeEventListener("resize", this._resize);
|
||||
this._observer?.disconnect();
|
||||
}
|
||||
|
||||
_draw() {
|
||||
|
||||
Reference in New Issue
Block a user