Use core nav_tabs for all six CRM tab strips - #24
Merged
Conversation
Both strips were hand-rolled copies of the border tab pattern with tuple tab_defs. The defs are maps now (a positional tuple cannot grow a :badge or link key without breaking every consumer), kept uuid-free so valid_tabs/3 shares the list; nav_tab_defs/4 adds the patch URLs. tab_path/2 URLs are already prefixed (Paths -> Routes.path), which is exactly why nav_tabs' :patch passes through verbatim as of this wave — running them through Routes.path a second time double-prefixed.
companies/contacts share the five-filter shape plus the conditional Trashed tab (rendered only while the trash is non-empty, keeping its count label); lists and list_members are the smaller versions of the same pattern. All URLs come from the pages' existing path builders, passed to :patch verbatim. list_members' "All" tab is @filter == nil; nav_tabs compares string ids, so the assign maps nil to "all".
ddon
added a commit
that referenced
this pull request
Aug 22, 2026
Lock the six nav_tabs strips and the Catalogue-tab KeyError with tests, normalize supplier uuids at process_supplier_row/4 so a raw Postgrex uuid cannot re-enter company metadata, and always release the catalogue-probe sandbox owner.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two commits: the contact/company show strips (tuple
tab_defsbecome maps, kept uuid-free sovalid_tabs/3shares the list;nav_tab_defs/4adds the patch URLs) and the four list-page filter strips (companies/contacts incl. the conditional Trashed tab with its count label; lists; list_members, whose "All" mapsnilto a string id). All URLs come from the pages' existing Paths-based builders, passed to:patchverbatim — which is the change in core #746 this wave forced: those URLs are already prefixed, and 2.13.5 double-prefixed them.Part of the underline-tab consolidation wave — companion to BeamLabEU/phoenix_kit#746, which this depends on.⚠️ Merge core first and release:
variant={:border}/ verbatim:patchneed the new core, so CI here stays red against Hex 2.13.5 until the release lands (same sequencing as the first wave).mix precommitgreen against local core; deployed to max-dev and verified.