pf_app/ui
Paul Trowbridge b4e7604dd1 Keep the selection on its rows when the sort moves them
A highlight is a rectangle of grid coordinates. Post a decrease on a
grid sorted by sales descending and the customer drops down the list,
while the highlight holds the coordinate and comes to rest over whoever
took that position. `slices` is value-based, so the panel goes on
writing to the customer it always meant -- the grid is the only thing
that lies, which is the worst place for the lie to be.

The rectangles are re-derived from the slices now rather than tracked:
after a post or an undo, sweep the grid the way a drag does
(slicesFromRegion, quietly) and keep the cells whose slice is still
selected. That also survives the column axis shifting, which it does on
almost every post -- a new segment column group moves every x by one.

- Bounded at 5,000 displayed rows. The sweep reads what the pivot shows,
  not the grain, so at any ordinary depth it is a handful; fully
  expanded it is the whole traversal and not worth a highlight.
- Past the bound, or on any failure, the highlight is cleared rather
  than left in place: losing it says "I don't know where it went", which
  is true, and leaving it says "it is here", which is not.
- A slice may now land on more cells than it did -- one that never named
  the segment column matches the customer under the old segment and
  under the adjustment's own. That is what the slice covers.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-23 22:18:52 -04:00
..
public Scaffold React/Vite/Tailwind UI with 3-step Setup → Baseline → Forecast flow 2026-04-25 16:28:45 -04:00
src Keep the selection on its rows when the sort moves them 2026-09-23 22:18:52 -04:00
vendor Let a blank tree label take the click as well as draw the caret 2026-09-22 00:19:15 -04:00
.gitignore Scaffold React/Vite/Tailwind UI with 3-step Setup → Baseline → Forecast flow 2026-04-25 16:28:45 -04:00
eslint.config.js Scaffold React/Vite/Tailwind UI with 3-step Setup → Baseline → Forecast flow 2026-04-25 16:28:45 -04:00
index.html Load Perspective from bundle, not CDN; pin all packages at 5.2.0 2026-08-17 21:30:19 -04:00
package-lock.json Let a blank tree label take the click as well as draw the caret 2026-09-22 00:19:15 -04:00
package.json Vendor a Perspective build that applies depth on a config update 2026-09-17 10:47:09 -04:00
README.md Scaffold React/Vite/Tailwind UI with 3-step Setup → Baseline → Forecast flow 2026-04-25 16:28:45 -04:00
vite.config.js Scaffold React/Vite/Tailwind UI with 3-step Setup → Baseline → Forecast flow 2026-04-25 16:28:45 -04:00

React + Vite

This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.

Currently, two official plugins are available:

React Compiler

The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see this documentation.

Expanding the ESLint configuration

If you are developing a production application, we recommend using TypeScript with type-aware lint rules enabled. Check out the TS template for information on how to integrate TypeScript and typescript-eslint in your project.