fix(managers): address the E4 S3 code-review round 3 findings
- The tag menu's "trigger is gone" test now measures against the SCROLLER, not the window. The page scroller starts ~230px down (measured), so a row that slid under the fixed toolbar was still "on screen" by window coords and the menu floated over the chrome, anchored to something invisible. - Scroll-repositioning keeps whichever side the menu is anchored to instead of resetting it to "below" every frame — that reset made the layout effect flip it back, costing two renders and two forced layouts per frame near the bottom edge. - One placement rule (`coordsFrom`) now serves the initial open, the layout correction and every reposition, so those can no longer drift apart. - Card page: reset on the filter/sort INPUTS only, and separately COMMIT the clamp when the page falls out of range. Keying the reset on the row count (round 2) was too blunt — a background refetch that merely added a channel threw the reader off page 7 for something they didn't do. - Pager derives `pageCount()` once and `hasPagerContent` reuses it, instead of the same expression twice in one file. - Re-indent the pagerNode JSX left dangling by round 2's ternary edit.
This commit is contained in:
@@ -287,19 +287,19 @@ export default function DataTable<T>({
|
||||
// -truthy element would leave an empty `my-3` band (and an empty in-band PageToolbar) on a table
|
||||
// with nothing to page. The emptiness rule itself lives in Pager, so the two can't drift apart.
|
||||
const pagerNode = hasPagerContent(sorted.length, size) ? (
|
||||
<Pager
|
||||
page={safePage}
|
||||
size={size}
|
||||
total={sorted.length}
|
||||
pageSizeOptions={pageSizeOptions}
|
||||
onPageChange={setPage}
|
||||
onSizeChange={(s) => {
|
||||
setSize(s);
|
||||
setPage(0);
|
||||
}}
|
||||
sizeLabel={t("datatable.rowsPerPage")}
|
||||
/>
|
||||
) : null;
|
||||
<Pager
|
||||
page={safePage}
|
||||
size={size}
|
||||
total={sorted.length}
|
||||
pageSizeOptions={pageSizeOptions}
|
||||
onPageChange={setPage}
|
||||
onSizeChange={(s) => {
|
||||
setSize(s);
|
||||
setPage(0);
|
||||
}}
|
||||
sizeLabel={t("datatable.rowsPerPage")}
|
||||
/>
|
||||
) : null;
|
||||
|
||||
const controls =
|
||||
controlsLeading != null || pagerNode ? (
|
||||
|
||||
Reference in New Issue
Block a user