@financial-times/dotcom-ui-header 2.5.1 → 2.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,13 +6,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.EditionsSwitcher = exports.DrawerSpecialItem = exports.DrawerSingleItem = exports.DrawerParentItem = void 0;
7
7
  const react_1 = __importDefault(require("react"));
8
8
  const utils_1 = require("../../utils");
9
- exports.DrawerParentItem = ({ item, index }) => {
9
+ exports.DrawerParentItem = ({ item, idSuffix }) => {
10
10
  const selected = item.selected ? 'selected' : 'unselected';
11
11
  return (react_1.default.createElement(react_1.default.Fragment, null,
12
12
  react_1.default.createElement("div", { key: item.url, className: "o-header__drawer-menu-toggle-wrapper" },
13
13
  react_1.default.createElement("a", Object.assign({ className: `o-header__drawer-menu-link o-header__drawer-menu-link--${selected} o-header__drawer-menu-link--parent`, href: item.url }, utils_1.ariaSelected(item), { "data-trackable": item.label }), item.label),
14
- react_1.default.createElement("button", { className: `o-header__drawer-menu-toggle o-header__drawer-menu-toggle--${selected}`, "aria-controls": `o-header-drawer-child-${index}`, "data-trackable": `sub-level-toggle | ${item.label}` }, `Show more ${item.label}`)),
15
- react_1.default.createElement("ul", { className: "o-header__drawer-menu-list o-header__drawer-menu-list--child", id: `o-header-drawer-child-${index}`, "data-trackable": "sub-level" }, item.submenu.items.map((item) => {
14
+ react_1.default.createElement("button", { className: `o-header__drawer-menu-toggle o-header__drawer-menu-toggle--${selected}`, "aria-controls": `o-header-drawer-child-${idSuffix}`, "data-trackable": `sub-level-toggle | ${item.label}` }, `Show more ${item.label}`)),
15
+ react_1.default.createElement("ul", { className: "o-header__drawer-menu-list o-header__drawer-menu-list--child", id: `o-header-drawer-child-${idSuffix}`, "data-trackable": "sub-level" }, item.submenu.items.map((item) => {
16
16
  const selected = item.selected ? 'selected' : 'unselected';
17
17
  return (react_1.default.createElement("li", { key: item.url, className: "o-header__drawer-menu-item" },
18
18
  react_1.default.createElement("a", Object.assign({ className: `o-header__drawer-menu-link o-header__drawer-menu-link--${selected} o-header__drawer-menu-link--child`, href: item.url, "data-trackable": item.label }, utils_1.ariaSelected(item)), item.label)));
@@ -41,12 +41,11 @@ const Search = () => (react_1.default.createElement("div", { className: "o-heade
41
41
  const SectionPrimary = (props) => {
42
42
  return (react_1.default.createElement(react_1.default.Fragment, null,
43
43
  react_1.default.createElement("li", { className: "o-header__drawer-menu-item o-header__drawer-menu-item--heading" }, props.label),
44
- props.submenu.items.map((item, index) => (react_1.default.createElement("li", { key: item.url, className: "o-header__drawer-menu-item" }, item.submenu ? react_1.default.createElement(additionalPartials_1.DrawerParentItem, { item: item, index: index }) : react_1.default.createElement(additionalPartials_1.DrawerSingleItem, Object.assign({}, item)))))));
44
+ props.submenu.items.map((item, index) => (react_1.default.createElement("li", { key: item.url, className: "o-header__drawer-menu-item" }, item.submenu ? (react_1.default.createElement(additionalPartials_1.DrawerParentItem, { item: item, idSuffix: `${index}` })) : (react_1.default.createElement(additionalPartials_1.DrawerSingleItem, Object.assign({}, item))))))));
45
45
  };
46
46
  const SectionSecondary = (props) => (react_1.default.createElement(react_1.default.Fragment, null,
47
47
  react_1.default.createElement("li", { className: "o-header__drawer-menu-item o-header__drawer-menu-item--heading" }, props.label),
48
- props.submenu.items.map((item) => (react_1.default.createElement("li", { key: item.url, className: "o-header__drawer-menu-item" },
49
- react_1.default.createElement(additionalPartials_1.DrawerSingleItem, Object.assign({}, item)))))));
48
+ props.submenu.items.map((item, index) => (react_1.default.createElement("li", { key: item.url, className: "o-header__drawer-menu-item" }, item.submenu ? (react_1.default.createElement(additionalPartials_1.DrawerParentItem, { item: item, idSuffix: 'inner' + index })) : (react_1.default.createElement(additionalPartials_1.DrawerSingleItem, Object.assign({}, item))))))));
50
49
  const SectionTertiary = (props) => (react_1.default.createElement(react_1.default.Fragment, null, props.submenu.items.map((item, index) => {
51
50
  const divideItem = index === 0 ? 'o-header__drawer-menu-item--divide' : '';
52
51
  return (react_1.default.createElement("li", { key: item.url, className: `o-header__drawer-menu-item ${divideItem}` },
@@ -12,7 +12,7 @@ const DrawerIcon = () => (react_1.default.createElement("a", { href: "#o-header-
12
12
  react_1.default.createElement("span", { className: "o-header__top-link-label" }, "Open side navigation menu")));
13
13
  const SearchIcon = () => (react_1.default.createElement("a", { href: `#o-header-search-primary`, className: "o-header__top-link o-header__top-link--search", "aria-controls": `o-header-search-primary`, title: "Open search bar", "data-trackable": "search-toggle" },
14
14
  react_1.default.createElement("span", { className: "o-header__top-link-label" }, "Open search bar")));
15
- const MyFt = () => (react_1.default.createElement("a", { className: "o-header__top-link o-header__top-link--myft", href: "/myft", "data-trackable": "my-ft", "data-tour-stage": "myFt", "aria-label": "My F T" },
15
+ const MyFt = () => (react_1.default.createElement("a", { className: "o-header__top-link o-header__top-link--myft", id: "o-header-top-link-myft", href: "/myft", "data-trackable": "my-ft", "data-tour-stage": "myFt", "aria-label": "My F T" },
16
16
  react_1.default.createElement("span", { className: "o-header__visually-hidden" }, "myFT")));
17
17
  const TopWrapper = (props) => (react_1.default.createElement("div", { className: "o-header__row o-header__top", "data-trackable": "header-top" },
18
18
  react_1.default.createElement("div", { className: "o-header__container" },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@financial-times/dotcom-ui-header",
3
- "version": "2.5.1",
3
+ "version": "2.6.2",
4
4
  "description": "",
5
5
  "browser": "browser.js",
6
6
  "main": "component.js",
@@ -22,7 +22,7 @@
22
22
  "author": "",
23
23
  "license": "MIT",
24
24
  "dependencies": {
25
- "@financial-times/dotcom-types-navigation": "^2.5.1"
25
+ "@financial-times/dotcom-types-navigation": "^2.6.2"
26
26
  },
27
27
  "devDependencies": {
28
28
  "@financial-times/logo-images": "^1.10.1",
@@ -4,10 +4,10 @@ import { TNavMenuItem, TNavEditions } from '@financial-times/dotcom-types-naviga
4
4
 
5
5
  export type TDrawerParentItemProps = {
6
6
  item: TNavMenuItem
7
- index: number
7
+ idSuffix: string
8
8
  }
9
9
 
10
- export const DrawerParentItem = ({ item, index }: TDrawerParentItemProps) => {
10
+ export const DrawerParentItem = ({ item, idSuffix }: TDrawerParentItemProps) => {
11
11
  const selected = item.selected ? 'selected' : 'unselected'
12
12
  return (
13
13
  <React.Fragment>
@@ -16,20 +16,23 @@ export const DrawerParentItem = ({ item, index }: TDrawerParentItemProps) => {
16
16
  className={`o-header__drawer-menu-link o-header__drawer-menu-link--${selected} o-header__drawer-menu-link--parent`}
17
17
  href={item.url}
18
18
  {...ariaSelected(item)}
19
- data-trackable={item.label}>
19
+ data-trackable={item.label}
20
+ >
20
21
  {item.label}
21
22
  </a>
22
23
  <button
23
24
  className={`o-header__drawer-menu-toggle o-header__drawer-menu-toggle--${selected}`}
24
- aria-controls={`o-header-drawer-child-${index}`}
25
- data-trackable={`sub-level-toggle | ${item.label}`}>
25
+ aria-controls={`o-header-drawer-child-${idSuffix}`}
26
+ data-trackable={`sub-level-toggle | ${item.label}`}
27
+ >
26
28
  {`Show more ${item.label}`}
27
29
  </button>
28
30
  </div>
29
31
  <ul
30
32
  className="o-header__drawer-menu-list o-header__drawer-menu-list--child"
31
- id={`o-header-drawer-child-${index}`}
32
- data-trackable="sub-level">
33
+ id={`o-header-drawer-child-${idSuffix}`}
34
+ data-trackable="sub-level"
35
+ >
33
36
  {(item.submenu.items as TNavMenuItem[]).map((item) => {
34
37
  const selected = item.selected ? 'selected' : 'unselected'
35
38
  return (
@@ -38,7 +41,8 @@ export const DrawerParentItem = ({ item, index }: TDrawerParentItemProps) => {
38
41
  className={`o-header__drawer-menu-link o-header__drawer-menu-link--${selected} o-header__drawer-menu-link--child`}
39
42
  href={item.url}
40
43
  data-trackable={item.label}
41
- {...ariaSelected(item)}>
44
+ {...ariaSelected(item)}
45
+ >
42
46
  {item.label}
43
47
  </a>
44
48
  </li>
@@ -56,7 +60,8 @@ export const DrawerSingleItem = (item: TNavMenuItem) => {
56
60
  className={`o-header__drawer-menu-link o-header__drawer-menu-link--${selected}`}
57
61
  href={item.url}
58
62
  data-trackable={item.label}
59
- {...ariaSelected(item)}>
63
+ {...ariaSelected(item)}
64
+ >
60
65
  {item.label}
61
66
  </a>
62
67
  )
@@ -69,7 +74,8 @@ export const DrawerSpecialItem = (item: TNavMenuItem) => {
69
74
  className={`o-header__drawer-menu-link o-header__drawer-menu-link--${selected} o-header__drawer-menu-link--secondary`}
70
75
  href={item.url}
71
76
  data-trackable={item.label}
72
- {...ariaSelected(item)}>
77
+ {...ariaSelected(item)}
78
+ >
73
79
  {item.label}
74
80
  </a>
75
81
  )
@@ -19,7 +19,8 @@ const Drawer = (props: THeaderProps) => {
19
19
  data-o-header-drawer
20
20
  data-o-header-drawer--no-js
21
21
  data-trackable="drawer"
22
- data-trackable-terminate>
22
+ data-trackable-terminate
23
+ >
23
24
  <div className="o-header__drawer-inner">
24
25
  <DrawerTools {...editions} />
25
26
  <Search />
@@ -44,7 +45,8 @@ const DrawerTools = (props: TNavEditions) => (
44
45
  className="o-header__drawer-tools-close"
45
46
  title="Close drawer menu"
46
47
  aria-controls="o-header-drawer"
47
- data-trackable="close">
48
+ data-trackable="close"
49
+ >
48
50
  <span className="o-header__visually-hidden">Close drawer menu</span>
49
51
  </button>
50
52
  <a className="o-header__drawer-tools-logo" href="/" data-trackable="logo">
@@ -63,7 +65,8 @@ const Search = () => (
63
65
  aria-label="Site search"
64
66
  data-n-topic-search
65
67
  data-n-topic-search-categories="concepts,equities"
66
- data-n-topic-search-view-all>
68
+ data-n-topic-search-view-all
69
+ >
67
70
  <label className="o-header__visually-hidden" htmlFor="o-header-drawer-search-term">
68
71
  Search the <abbr title="Financial Times">FT</abbr>
69
72
  </label>
@@ -93,7 +96,11 @@ const SectionPrimary = (props: TNavMenuItem) => {
93
96
  <li className="o-header__drawer-menu-item o-header__drawer-menu-item--heading">{props.label}</li>
94
97
  {(props.submenu.items as TNavMenuItem[]).map((item, index) => (
95
98
  <li key={item.url} className="o-header__drawer-menu-item">
96
- {item.submenu ? <DrawerParentItem item={item} index={index} /> : <DrawerSingleItem {...item} />}
99
+ {item.submenu ? (
100
+ <DrawerParentItem item={item} idSuffix={`${index}`} />
101
+ ) : (
102
+ <DrawerSingleItem {...item} />
103
+ )}
97
104
  </li>
98
105
  ))}
99
106
  </React.Fragment>
@@ -103,9 +110,13 @@ const SectionPrimary = (props: TNavMenuItem) => {
103
110
  const SectionSecondary = (props: TNavMenuItem) => (
104
111
  <React.Fragment>
105
112
  <li className="o-header__drawer-menu-item o-header__drawer-menu-item--heading">{props.label}</li>
106
- {(props.submenu.items as TNavMenuItem[]).map((item) => (
113
+ {(props.submenu.items as TNavMenuItem[]).map((item, index) => (
107
114
  <li key={item.url} className="o-header__drawer-menu-item">
108
- <DrawerSingleItem {...item} />
115
+ {item.submenu ? (
116
+ <DrawerParentItem item={item} idSuffix={'inner' + index} />
117
+ ) : (
118
+ <DrawerSingleItem {...item} />
119
+ )}
109
120
  </li>
110
121
  ))}
111
122
  </React.Fragment>
@@ -7,7 +7,8 @@ const HeaderWrapper = (props) => (
7
7
  className={`o-header o-header--${props.variant || 'simple'}`}
8
8
  data-o-component="o-header"
9
9
  data-o-header--no-js={true}
10
- tabIndex={-1}>
10
+ tabIndex={-1}
11
+ >
11
12
  {props.children}
12
13
  </header>
13
14
  )
@@ -18,7 +19,8 @@ const DrawerIcon = () => (
18
19
  className="o-header__top-link o-header__top-link--menu"
19
20
  aria-controls="o-header-drawer"
20
21
  title="Open side navigation menu"
21
- data-trackable="drawer-toggle">
22
+ data-trackable="drawer-toggle"
23
+ >
22
24
  <span className="o-header__top-link-label">Open side navigation menu</span>
23
25
  </a>
24
26
  )
@@ -29,7 +31,8 @@ const SearchIcon = () => (
29
31
  className="o-header__top-link o-header__top-link--search"
30
32
  aria-controls={`o-header-search-primary`}
31
33
  title="Open search bar"
32
- data-trackable="search-toggle">
34
+ data-trackable="search-toggle"
35
+ >
33
36
  <span className="o-header__top-link-label">Open search bar</span>
34
37
  </a>
35
38
  )
@@ -37,10 +40,12 @@ const SearchIcon = () => (
37
40
  const MyFt = () => (
38
41
  <a
39
42
  className="o-header__top-link o-header__top-link--myft"
43
+ id="o-header-top-link-myft"
40
44
  href="/myft"
41
45
  data-trackable="my-ft"
42
46
  data-tour-stage="myFt"
43
- aria-label="My F T">
47
+ aria-label="My F T"
48
+ >
44
49
  <span className="o-header__visually-hidden">myFT</span>
45
50
  </a>
46
51
  )
@@ -67,7 +72,8 @@ const TopColumnCenter = () => (
67
72
  style={{ backgroundImage: 'none' }}
68
73
  data-trackable="logo"
69
74
  href="/"
70
- title="Go to Financial Times homepage">
75
+ title="Go to Financial Times homepage"
76
+ >
71
77
  <BrandFtMastheadSvg title="Financial Times" />
72
78
  </a>
73
79
  </div>