This is a base layout of an NCI branded webpage with configurable header and footer components.
To replace the NCI logo with another logo:
- Replace src/assets/header/Portal_Logo.svg with the desktop version
- Replace src/assets/header/Portal_Logo_Small.svg with the tablet/mobile version of the logo you want to use.
Why
To change the desktop navigation bar
- Head to src/config/globalHeaderData.tsx
- To add an item to the navbar, add an element to navMobileList
- Name is what will appear on the navbar
- If className is set to 'navMobileItem', this is a link element, and clicking on this navbar element will navigate the page to the link set in the link field.
- If className is set to 'navMobileItem clickable', this is a dropdown. Cicking on this navbar element will expand a dropdown to display elements set in navbarSublists. The link field for element is ignored.
- Please set the id field to the ID this element should have for QA purposes.
Examples:
{
name: 'Home',
link: '',
id: 'navbar-link-home',
className: 'navMobileItem'
}
This navbar element titled home links to home, with an id of navbar-link-home.
{
name: 'About',
link: '',
id: 'navbar-dropdown-about',
className: 'navMobileItem clickable',
}
This navbar element titled about will be a dropdown, with an id of navbar-dropdown-about.
{
name: 'Other Navbar Item',
link: '',
id: 'navbar-dropdown-test-other-navbar-item',
className: 'navMobileItem clickable',
},
This navbar element titled Other Navbar Item is a dropdown. The ID styling is shown as well.
- To configure the dropdowns inside the navbar. Add a new mapping to navbarSublists
- Sublists only contain links.
- Name is what will appear on the navbar
- Text is optional, and appears below the name
- ID has the format 'navbar-dropdown-item-{name}'
- Link is what clicking on the sublist link will navigate to
- Classname is either navMobileSubItem or navMobileSubTitle, this will be explained later when configuring the tablet/mobile menu.
Examples:
export const navbarSublists = {
"Other Navbar Item": [
{
name: 'Navbar subitem # 1',
link: '/subitemlink1',
text: 'testText for subitem #1',
id: 'navbar-dropdown-item-navbar-subitem-1',
className: 'navMobileSubItem',
},
{
name: 'Navbar subitem #2',
link: '/subitemlink2',
id: 'navbar-dropdown-item-navbar-subitem-2',
className: 'navMobileSubItem',
},
],
About: [
{
name: 'Other Resources',
link: '/or',
id: 'navbar-dropdown-item-other-resources',
className: 'navMobileSubTitle',
},
{
name: 'Cancer Genomics Cloud',
link: '/cgc',
id: 'navbar-dropdown-item-cancer-genomics-cloud',
className: 'navMobileSubItem',
},
{
name: 'Database of Genotypes and Phenotypes',
link: '/dbgap',
id: 'navbar-dropdown-item-database-of-genotypes-and-phenotypes',
className: 'navMobileSubItem',
}],
};
This shows how to configure the navbarSublists. Map from a title set in navMobileList either by string, or constant to a list of sublist items.
The title from navMobileList must match the key in this map.
AKA, if you set name = "Example Name" in navMobileList, the mapping in navMobileSublists must have a key of "Example Name": [...]
This is the About subList from the above example.
Other Resources has a className of navMobileSubTitle as opposed to navMobileSubItem like the rest. That is the difference.
Head to src/config/globalFooterData.tsx
The datastructures and what everything does is pretty straight forward.
In the project directory, you can run:
Runs the app in the development mode.
Open http://localhost:3000 to view it in the browser.