• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Financial-Times / cm-react-components / 80223841-8c6a-431a-aa6a-22eab4aabe15

12 Nov 2025 09:19AM UTC coverage: 74.23% (-0.4%) from 74.624%
80223841-8c6a-431a-aa6a-22eab4aabe15

push

circleci

web-flow
Merge pull request #23 from Financial-Times/UPPSF-6552

Uppsf 6552

310 of 395 branches covered (78.48%)

Branch coverage included in aggregate %.

9 of 14 new or added lines in 3 files covered. (64.29%)

485 of 676 relevant lines covered (71.75%)

8.29 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/components/Header/Header.js
1
import React, { useEffect } from 'react';
2
import PropTypes from 'prop-types';
3
import oHeaderServices from '@financial-times/o-header-services/main';
4

5
import { SecondaryNavigation } from './SecondaryNavigation';
6
import { MainNavigation } from './MainNavigation';
7

8
const Header = ({
×
9
  title,
10
  name,
11
  id,
12
  mainMenuData,
13
  secondaryMenuData,
14
  clientMenuData,
15
  renderProp
16
}) => {
NEW
17
  useEffect(() => {
×
NEW
18
    oHeaderServices.init();
×
19
  }, []);
20

NEW
21
  return (
×
22
    <div className="o-layout__header">
23
      <header className="o-header-services " data-o-component="o-header-services" data-testid="header-component">
24
        <div className="o-header-services__top">
25
          <div className="o-header-services__hamburger">
26
            <a className="o-header-services__hamburger-icon" href="/" role="button">
27
              <span className="o-header-services__visually-hidden">Open primary navigation</span>
28
            </a>
29
          </div>
30
          <a href="/">
31
            <div className="o-header-services__logo" />
32
          </a>
33
          <div className="o-header-services__title">
34
            <a className="o-header-services__product-name" href="/">{title}</a>
35
          </div>
36
        </div>
37
        <MainNavigation
38
          menuData={mainMenuData}
39
          renderProp={renderProp}
40
        />
41
        {secondaryMenuData && secondaryMenuData.length > 0 && (
×
42
          <SecondaryNavigation
43
            name={name}
44
            id={id}
45
            menuData={secondaryMenuData}
46
            clientMenuData={clientMenuData}
47
            renderProp={renderProp}
48
          />
49
        )}
50
      </header>
51
    </div>
52
  );
53
};
54

55
Header.propTypes = {
×
56
  title: PropTypes.string,
57
  name: PropTypes.string,
58
  id: PropTypes.string,
59
  mainMenuData: MainNavigation.propTypes.menuData,
60
  secondaryMenuData: SecondaryNavigation.propTypes.menuData,
61
  clientMenuData: SecondaryNavigation.propTypes.clientMenuData,
62
  renderProp: SecondaryNavigation.propTypes.renderProp
63
};
64

65
export default Header;
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc