Skip to content

chore: upgrade @databiosphere/findable-ui to v58.0.0 (#5008) - #5009

Merged
frano-m merged 1 commit into
mainfrom
frano-m/5008-findable-ui-v58
Oct 28, 2026
Merged

frano-m merged 1 commit into
mainfrom
frano-m/5008-findable-ui-v58

Conversation

@frano-m

@frano-m frano-m commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

Closes #5008

What changed

  • @databiosphere/findable-ui is upgraded from ^57.2.0 to ^58.0.0 (lockfile: 58.0.0).
  • pages/_app.tsx: removed the LayoutDimensionsProvider wrapper, which v58 removes. Header and Footer now measure themselves and set --header-height / --footer-height.
  • Removed the per-page Main override:
    • IndexPage.Main = DXMain in pages/[entityListType]/index.tsx. Its main.styles import no longer exists in v58, because Main was renamed to StyledMain.
    • Page.Main = Main on the 12 content pages: apis, beta-announcement, data-dictionary, ga-announcement, the five guides pages, metadata, privacy and terms-of-service.
    • The Main? page prop: NextPageWithComponent and AppPropsWithComponent are gone, and _app renders the default Main directly.
  • e2e/testFunctions.ts: testSortAzul now finds the sort label with getByRole("columnheader", { exact: true, name }) instead of a page-wide .MuiTableSortLabel-root filtered by substring.

Why

Assumptions I made

  • yet-another-react-lightbox, v58's new optional peer dependency, is not installed. Only findable-ui's FigureLightbox uses it, and this repo does not.
  • The content pages render the same with the default Main, because both resolve to the same StyledMain. I checked /guides and the AnVIL data dictionary on the dev server.
  • LungMAP is checked only by its build passing. Its Azul catalogs could not be browsed when last checked.
  • Nothing else in the repo used the removed API: useLayoutSpacing, useLayoutDimensions or the header offsets.

How to verify

Definition of done from #5008, mapped to steps:

  • @databiosphere/findable-ui is at ^58.0.0 in package.json and 58.0.0 in package-lock.json: step 1.
  • LayoutDimensionsProvider and the IndexPage.Main = DXMain override are removed, and npx tsc --noEmit passes: step 1.
  • testSortAzul scopes its sort-label locator to getByRole("columnheader"), and anvil-sort.spec.ts passes in chromium, firefox and webkit: step 4.
  • Builds pass for every site config (HCA DCP, AnVIL, AnVIL catalog, LungMAP): step 2.
  • Unit tests (npm test) and e2e tests (npx playwright test) pass: steps 3 and 4.
  • The header, index table scrolling and pinned table head look and behave correctly on HCA DCP and AnVIL: step 5.
  1. Run npm ci, then npx tsc --noEmit. It should finish with no errors. grep findable-ui package.json should show ^58.0.0.
  2. Run npm run build-cc-dev:anvil-cmg, npm run build-dev:anvil-catalog, npm run build-ma-dev:hca-dcp and npm run build-dev:lungmap. Each should succeed.
  3. Run npm test. All 258 tests should pass.
  4. Run npm run test:anvil-cmg and npm run test:anvil-catalog. anvil-sort.spec.ts should pass on every tab in all three browsers with no strict-mode violations. Locally: anvil-cmg 132 passed, and anvil-catalog 48 passed with 9 skipped.
  5. Run npm run dev:anvil-cmg, then npm run dev:hca-dcp. In each, open an index page (the AnVIL Files tab has enough rows) and scroll:
    • The header should sit at the top of the page and stay put.
    • The table head should stay pinned while the rows scroll.
    • Clicking a sort label in the pinned head should sort the table.
    • Repeat at a phone width (390px).
    • Then open /guides and a data dictionary page. They should look the same as on main.

Screenshots

data-browser-5008-files-index-scroll-desktop.webm
data-browser-5008-files-index-scroll-mobile.webm

🤖 Generated with Claude Code
🐦 Built with cc-claude-tools

- remove the layoutdimensionsprovider wrapper from _app (removed in v58, findable-ui #998)
- remove the per-page main overrides (index and 12 content pages) and the
  main page prop; every page now renders the default main
- scope the azul sort test locator to the exact column header name, so it
  skips the aria-hidden pinned table head copy added in v58 (findable-ui #1122)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: cc-claude-tools <cc-claude-tools@clevercanary.com>
@frano-m
frano-m requested a balanced review from Copilot October 28, 2026 04:11
@frano-m
frano-m marked this pull request as ready for review October 28, 2026 04:13

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

No active review issues block the findable-ui v58 upgrade and related layout and sorting-test changes.

No open issues 🎉

What changed in this PR

Upgrades the data browser to @databiosphere/findable-ui v58 and adapts its shared layout and sorting tests to the library’s changes, addressing #5008.

Changes:

  • Updates the dependency to ^58.0.0, with 58.0.0 resolved in the lockfile.
  • Removes the retired layout provider and per-page Main overrides in favor of the default layout.
  • Uses exact, accessible column-header matching in Azul sorting tests to avoid duplicate pinned headers.
File Description
pages/​terms-of-service/​index.tsx Removes the content-page Main override.
pages/​privacy/​index.tsx Removes the content-page Main override.
pages/​metadata/​index.tsx Removes the content-page Main override.
pages/​guides/​tsv-file-manifest-download.tsx Removes the guide’s Main override.
pages/​guides/​individual-file-download.tsx Removes the guide’s Main override.
pages/​guides/​index.tsx Removes the guides index’s Main override.
pages/​guides/​data-download-via-curl.tsx Removes the guide’s Main override.
pages/​guides/​data-download-options.tsx Removes the guide’s Main override.
pages/​ga-announcement/​index.tsx Removes the announcement’s Main override.
pages/​data-dictionary/​[dictionary]/​index.tsx Removes the dictionary page’s Main override.
pages/​beta-announcement/​index.tsx Removes the announcement’s Main override.
pages/​apis/​index.tsx Removes the API page’s Main override.
pages/​[entityListType]/​index.tsx Removes the obsolete styled Main import and override.
pages/​_app.tsx Removes LayoutDimensionsProvider and standardizes on the default Main.
package.json Updates findable-ui to ^58.0.0.
package-lock.json Locks findable-ui to 58.0.0.
e2e/​testFunctions.ts Scopes Azul sort controls to exact accessible column headers.

Review effort: Balanced

@NoopDog NoopDog left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks Fran, nice cleanup of the Main overrides! Could you attach the two recordings or drop the Screenshots section?

@frano-m

frano-m commented Oct 28, 2026

Copy link
Copy Markdown
Contributor Author

Screenshots attached.

@frano-m
frano-m merged commit 4c2cb7a into main Oct 28, 2026
5 checks passed
@frano-m
frano-m deleted the frano-m/5008-findable-ui-v58 branch October 28, 2026 04:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Upgrade @databiosphere/findable-ui to v58.0.0

3 participants