@financial-times/cp-content-pipeline-ui 6.2.5 → 6.3.1
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.
- package/CHANGELOG.md +20 -0
- package/lib/components/BackToTopButton/client/index.d.ts +15 -0
- package/lib/components/BackToTopButton/client/index.js +118 -0
- package/lib/components/BackToTopButton/client/index.js.map +1 -0
- package/lib/components/BackToTopButton/test/client/index.spec.d.ts +1 -0
- package/lib/components/BackToTopButton/test/client/index.spec.js +184 -0
- package/lib/components/BackToTopButton/test/client/index.spec.js.map +1 -0
- package/lib/components/Body/index.d.ts +1 -2
- package/lib/components/Body/index.js +2 -2
- package/lib/components/Body/index.js.map +1 -1
- package/lib/components/LiveBlogBody/index.d.ts +1 -1
- package/lib/components/LiveBlogBody/index.js +2 -2
- package/lib/components/LiveBlogBody/index.js.map +1 -1
- package/lib/components/LiveBlogPost/index.d.ts +1 -2
- package/lib/components/LiveBlogPost/index.js +2 -14
- package/lib/components/LiveBlogPost/index.js.map +1 -1
- package/lib/components/LiveBlogWrapper/index.js +1 -1
- package/lib/components/LiveBlogWrapper/index.js.map +1 -1
- package/lib/components/RichText/index.js +1 -1
- package/lib/components/RichText/index.js.map +1 -1
- package/lib/components/Topper/Tags.d.ts +2 -1
- package/lib/components/Topper/Tags.js +2 -2
- package/lib/components/Topper/Tags.js.map +1 -1
- package/lib/components/Topper/index.js +9 -3
- package/lib/components/Topper/index.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +3 -1
- package/lib/index.js.map +1 -1
- package/lib/stories/BackToTop.stories.d.ts +24 -0
- package/lib/stories/BackToTop.stories.js +109 -0
- package/lib/stories/BackToTop.stories.js.map +1 -0
- package/lib/stories/LiveBlogPost.stories.d.ts +1 -1
- package/lib/stories/LiveBlogPost.stories.js +0 -1
- package/lib/stories/LiveBlogPost.stories.js.map +1 -1
- package/package.json +7 -2
- package/src/components/BackToTopButton/client/index.tsx +120 -0
- package/src/components/BackToTopButton/client/main.scss +47 -0
- package/src/components/BackToTopButton/test/client/index.spec.tsx +235 -0
- package/src/components/Body/index.tsx +0 -3
- package/src/components/LiveBlogBody/index.tsx +0 -2
- package/src/components/LiveBlogPost/index.tsx +0 -26
- package/src/components/LiveBlogWrapper/index.tsx +0 -2
- package/src/components/RichText/index.tsx +1 -1
- package/src/components/Topper/Tags.tsx +4 -1
- package/src/components/Topper/index.tsx +14 -2
- package/src/index.ts +1 -1
- package/src/stories/BackToTop.stories.scss +3 -0
- package/src/stories/BackToTop.stories.tsx +456 -0
- package/src/stories/LiveBlogPost.stories.tsx +0 -1
- package/src/types/o-types.d.ts +1 -0
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -547,6 +547,26 @@
|
|
|
547
547
|
* @financial-times/cp-content-pipeline-client bumped from ^3.6.1 to ^3.6.2
|
|
548
548
|
* @financial-times/cp-content-pipeline-schema bumped from ^2.9.0 to ^2.9.1
|
|
549
549
|
|
|
550
|
+
## [6.3.1](https://github.com/Financial-Times/cp-content-pipeline/compare/cp-content-pipeline-ui-v6.3.0...cp-content-pipeline-ui-v6.3.1) (2024-05-16)
|
|
551
|
+
|
|
552
|
+
|
|
553
|
+
### Bug Fixes
|
|
554
|
+
|
|
555
|
+
* take most recent live blogs publish date instead of first one ([84cf37b](https://github.com/Financial-Times/cp-content-pipeline/commit/84cf37b8885cd425074351bcb51159ad9b2f617b))
|
|
556
|
+
|
|
557
|
+
## [6.3.0](https://github.com/Financial-Times/cp-content-pipeline/compare/cp-content-pipeline-ui-v6.2.5...cp-content-pipeline-ui-v6.3.0) (2024-05-15)
|
|
558
|
+
|
|
559
|
+
|
|
560
|
+
### Features
|
|
561
|
+
|
|
562
|
+
* add BackToTop component ([3e79fc1](https://github.com/Financial-Times/cp-content-pipeline/commit/3e79fc10050ff9f96723fcc086110403593bfcd2))
|
|
563
|
+
* remove old back-to-top link on posts ([aa8c1c2](https://github.com/Financial-Times/cp-content-pipeline/commit/aa8c1c24c678176f2b24f93d6149b73622f722c6))
|
|
564
|
+
|
|
565
|
+
|
|
566
|
+
### Bug Fixes
|
|
567
|
+
|
|
568
|
+
* duplicate add to myft button in topper ([dd328af](https://github.com/Financial-Times/cp-content-pipeline/commit/dd328af143ff2998d7f7032fcffacc88b535c7a9))
|
|
569
|
+
|
|
550
570
|
## [6.2.5](https://github.com/Financial-Times/cp-content-pipeline/compare/cp-content-pipeline-ui-v6.2.4...cp-content-pipeline-ui-v6.2.5) (2024-05-10)
|
|
551
571
|
|
|
552
572
|
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* BackToTopButton component
|
|
4
|
+
* @param {string} startSelector - user need to scroll over this element to make the button visible
|
|
5
|
+
* @param {Record<string, string>} attributes - attributes to be added to the button
|
|
6
|
+
* @param {Window | HTMLElement} scrollableElement - element that will be listened to scroll events
|
|
7
|
+
* @returns {JSX.Element}
|
|
8
|
+
* @description Component that renders a button that scrolls users to the top of the page when clicked
|
|
9
|
+
* and is only visible when the user has scrolled down at least to the startSelector element and then scrolls up
|
|
10
|
+
*/
|
|
11
|
+
export default function BackToTop({ startSelector, attributes, scrollableElement, }: {
|
|
12
|
+
startSelector?: string;
|
|
13
|
+
attributes?: Record<string, string>;
|
|
14
|
+
scrollableElement?: Window | HTMLElement;
|
|
15
|
+
}): React.JSX.Element;
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
const react_1 = __importStar(require("react"));
|
|
27
|
+
const o_utils_1 = require("@financial-times/o-utils");
|
|
28
|
+
/**
|
|
29
|
+
* BackToTopButton component
|
|
30
|
+
* @param {string} startSelector - user need to scroll over this element to make the button visible
|
|
31
|
+
* @param {Record<string, string>} attributes - attributes to be added to the button
|
|
32
|
+
* @param {Window | HTMLElement} scrollableElement - element that will be listened to scroll events
|
|
33
|
+
* @returns {JSX.Element}
|
|
34
|
+
* @description Component that renders a button that scrolls users to the top of the page when clicked
|
|
35
|
+
* and is only visible when the user has scrolled down at least to the startSelector element and then scrolls up
|
|
36
|
+
*/
|
|
37
|
+
function BackToTop({ startSelector, attributes = {}, scrollableElement = window, }) {
|
|
38
|
+
const [visible, setVisible] = (0, react_1.useState)(false);
|
|
39
|
+
const [scrolledDownFirstTime, setScrolledDownFirstTime] = (0, react_1.useState)(false);
|
|
40
|
+
const lastScroll = (0, react_1.useRef)(0);
|
|
41
|
+
const element = (0, react_1.useRef)(null);
|
|
42
|
+
// receives e as parameter that is a scroll event
|
|
43
|
+
const scrollMargin = 10;
|
|
44
|
+
const handleScroll = () => {
|
|
45
|
+
setScrolledDownFirstTime((scrolledDownFirstTime) => {
|
|
46
|
+
if (!scrolledDownFirstTime && getScrollY() > lastScroll.current) {
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
return scrolledDownFirstTime;
|
|
50
|
+
});
|
|
51
|
+
setVisible((visible) => {
|
|
52
|
+
let result = visible;
|
|
53
|
+
if (
|
|
54
|
+
// Scrolling direction is up
|
|
55
|
+
getScrollY() < lastScroll.current &&
|
|
56
|
+
// Button is not visible
|
|
57
|
+
!visible &&
|
|
58
|
+
// The user scrolled down at least once
|
|
59
|
+
scrolledDownFirstTime) {
|
|
60
|
+
const startElement = startSelector
|
|
61
|
+
? document.querySelector(startSelector)
|
|
62
|
+
: null;
|
|
63
|
+
// has passed the element that selector selects or the top of the parent container
|
|
64
|
+
const hasPassedTriggerPosition = startElement
|
|
65
|
+
? startElement?.getBoundingClientRect()?.bottom <= 0
|
|
66
|
+
: (element?.current?.getBoundingClientRect()?.top ?? 0) <= 0; // Add a fallback value of 0 if element is undefined
|
|
67
|
+
if (hasPassedTriggerPosition) {
|
|
68
|
+
result = true;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//if scroll to top and component is visible, it will be hidden
|
|
72
|
+
else if (getScrollY() < scrollMargin && visible) {
|
|
73
|
+
result = false;
|
|
74
|
+
}
|
|
75
|
+
// if scroll down and component is visible, it will be hidden
|
|
76
|
+
else if (getScrollY() > lastScroll.current && visible) {
|
|
77
|
+
result = false;
|
|
78
|
+
}
|
|
79
|
+
// update last scroll position
|
|
80
|
+
lastScroll.current = getScrollY();
|
|
81
|
+
return result;
|
|
82
|
+
});
|
|
83
|
+
};
|
|
84
|
+
(0, react_1.useEffect)(() => {
|
|
85
|
+
const handler = (0, o_utils_1.throttle)(handleScroll, 250);
|
|
86
|
+
if (element.current && scrollableElement) {
|
|
87
|
+
lastScroll.current = getScrollY();
|
|
88
|
+
// Add a throttle to the scroll event to prevent performance issues
|
|
89
|
+
scrollableElement.addEventListener('scroll', handler);
|
|
90
|
+
}
|
|
91
|
+
return () => scrollableElement &&
|
|
92
|
+
scrollableElement.removeEventListener('scroll', handler);
|
|
93
|
+
}, [element, scrollableElement, scrolledDownFirstTime]);
|
|
94
|
+
const handleClick = () => {
|
|
95
|
+
scrollableElement?.scrollTo({
|
|
96
|
+
top: 0,
|
|
97
|
+
left: 0,
|
|
98
|
+
behavior: 'smooth',
|
|
99
|
+
});
|
|
100
|
+
setVisible(false);
|
|
101
|
+
};
|
|
102
|
+
const getScrollY = () => {
|
|
103
|
+
if (scrollableElement && scrollableElement instanceof Window) {
|
|
104
|
+
return scrollableElement?.scrollY;
|
|
105
|
+
}
|
|
106
|
+
else if (scrollableElement && scrollableElement instanceof HTMLElement) {
|
|
107
|
+
return scrollableElement?.scrollTop;
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
//fallback in case scrollableElement is null or undefined
|
|
111
|
+
return window.scrollY;
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
return (react_1.default.createElement("div", { className: "back-to-top__container", style: { display: visible ? 'block' : 'none' } },
|
|
115
|
+
react_1.default.createElement("button", { ref: element, type: "button", onClick: handleClick, className: "back-to-top__button o-buttons o-visual-effects-shadow-high o-buttons--big o-buttons--primary o-buttons--mono o-buttons-icon o-buttons-icon--arrow-up", "aria-live": "polite", ...attributes }, "Back to top")));
|
|
116
|
+
}
|
|
117
|
+
exports.default = BackToTop;
|
|
118
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/BackToTopButton/client/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
7
|
+
// @ts-nocheck
|
|
8
|
+
const react_1 = __importDefault(require("react"));
|
|
9
|
+
const react_2 = require("@testing-library/react");
|
|
10
|
+
const client_1 = __importDefault(require("../../client"));
|
|
11
|
+
//mock lodash throttle to don't do anything
|
|
12
|
+
jest.mock('@financial-times/o-utils', () => ({ throttle: (fn) => fn }));
|
|
13
|
+
describe('Back To Top', () => {
|
|
14
|
+
describe('when client-side', () => {
|
|
15
|
+
it('renders hidden by default', () => {
|
|
16
|
+
const tree = (0, react_2.render)(react_1.default.createElement(client_1.default, null));
|
|
17
|
+
expect(react_2.screen.findByText('Back to top')).toBeTruthy(); // Assuming the button is directly rendered
|
|
18
|
+
expect(tree.container.children[0].style.display).toBe('none');
|
|
19
|
+
});
|
|
20
|
+
it('renders a button with attributes', () => {
|
|
21
|
+
(0, react_2.render)(react_1.default.createElement(client_1.default, { attributes: { 'data-tracking': 'backtotop' } }));
|
|
22
|
+
const button = react_2.screen.getByRole('button', { hidden: true });
|
|
23
|
+
expect(button.getAttribute('data-tracking')).toBe('backtotop');
|
|
24
|
+
});
|
|
25
|
+
it('becomes visible on scroll up', async () => {
|
|
26
|
+
const tree = (0, react_2.render)(react_1.default.createElement(client_1.default, null));
|
|
27
|
+
// Simulate scrolldown event and scrollup to test the display block
|
|
28
|
+
await react_2.fireEvent.scroll(window, { target: { scrollY: 300 } });
|
|
29
|
+
await react_2.fireEvent.scroll(window, { target: { scrollY: 100 } });
|
|
30
|
+
expect(tree.container.children[0].style.display).toBe('block');
|
|
31
|
+
});
|
|
32
|
+
it('renders the button and hides it again when user scrolls down', async () => {
|
|
33
|
+
const tree = (0, react_2.render)(react_1.default.createElement(client_1.default, null));
|
|
34
|
+
// Simulate scrolldown event and scrollup to test the display block
|
|
35
|
+
await react_2.fireEvent.scroll(window, { target: { scrollY: 300 } });
|
|
36
|
+
await react_2.fireEvent.scroll(window, { target: { scrollY: 100 } });
|
|
37
|
+
expect(tree.container.children[0].style.display).toBe('block');
|
|
38
|
+
// Simulate scrolldown after the last scrollup which should hide the button
|
|
39
|
+
await react_2.fireEvent.scroll(window, { target: { scrollY: 200 } });
|
|
40
|
+
expect(tree.container.children[0].style.display).toBe('none');
|
|
41
|
+
});
|
|
42
|
+
it('scrolls to the top when clicked on the button', async () => {
|
|
43
|
+
(0, react_2.render)(react_1.default.createElement(client_1.default, null));
|
|
44
|
+
// Simulate scrolldown event and scrollup to test the display block
|
|
45
|
+
await react_2.fireEvent.scroll(window, { target: { scrollY: 300 } });
|
|
46
|
+
await react_2.fireEvent.scroll(window, { target: { scrollY: 100 } });
|
|
47
|
+
const button = react_2.screen.getByRole('button');
|
|
48
|
+
window.scrollTo = jest.fn();
|
|
49
|
+
// Simulate scrolldown after the last scrollup which should hide the button
|
|
50
|
+
await react_2.fireEvent.click(button);
|
|
51
|
+
// Check is scrollTo is called with the correct arguments
|
|
52
|
+
expect(window.scrollTo).toHaveBeenCalledWith({
|
|
53
|
+
top: 0,
|
|
54
|
+
left: 0,
|
|
55
|
+
behavior: 'smooth',
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
it('the button hides if we scroll up to the top', async () => {
|
|
59
|
+
(0, react_2.render)(react_1.default.createElement(client_1.default, null));
|
|
60
|
+
// Simulate scrolldown and scrollup event to test the display block
|
|
61
|
+
await react_2.fireEvent.scroll(window, { target: { scrollY: 300 } });
|
|
62
|
+
await react_2.fireEvent.scroll(window, { target: { scrollY: 100 } });
|
|
63
|
+
const button = react_2.screen.getByRole('button');
|
|
64
|
+
// Check the button is visible
|
|
65
|
+
expect(button).toBeTruthy();
|
|
66
|
+
await react_2.fireEvent.scroll(window, { target: { scrollY: 0 } });
|
|
67
|
+
// Check the button is hidden , so getByRole should throw an error
|
|
68
|
+
expect(() => {
|
|
69
|
+
react_2.screen.getByRole('button');
|
|
70
|
+
}).toThrow();
|
|
71
|
+
});
|
|
72
|
+
it('renders the button after pass the element selected with startSelector', async () => {
|
|
73
|
+
const tree = (0, react_2.render)(react_1.default.createElement("div", null,
|
|
74
|
+
react_1.default.createElement("section", { id: "head", width: '100vw', height: 500, style: { width: '100vw', height: 500 } },
|
|
75
|
+
react_1.default.createElement("h1", null, "Head")),
|
|
76
|
+
react_1.default.createElement("section", { id: "body", width: '100vw', height: 500, style: { width: '100vw', height: 500 } },
|
|
77
|
+
react_1.default.createElement("p", null, " Here goes the content")),
|
|
78
|
+
react_1.default.createElement(client_1.default, { startSelector: "#head" })));
|
|
79
|
+
const head = tree.container.querySelector('#head');
|
|
80
|
+
// Mock that the head element is visible and we haven't passed it
|
|
81
|
+
jest.spyOn(head, 'getBoundingClientRect').mockReturnValue({
|
|
82
|
+
width: 500,
|
|
83
|
+
height: 500,
|
|
84
|
+
top: 0,
|
|
85
|
+
left: 0,
|
|
86
|
+
right: 500,
|
|
87
|
+
bottom: 500,
|
|
88
|
+
});
|
|
89
|
+
// Shouldn't be visible as we haven't passed the head element
|
|
90
|
+
await react_2.fireEvent.scroll(window, { target: { scrollY: 300 } });
|
|
91
|
+
await react_2.fireEvent.scroll(window, { target: { scrollY: 100 } });
|
|
92
|
+
expect(() => {
|
|
93
|
+
react_2.screen.getByRole('button');
|
|
94
|
+
}).toThrow();
|
|
95
|
+
//Mock that the head element is up on the scroll and not visible on the page which means we have passed it
|
|
96
|
+
jest.spyOn(head, 'getBoundingClientRect').mockReturnValue({
|
|
97
|
+
width: 500,
|
|
98
|
+
height: 500,
|
|
99
|
+
top: 0,
|
|
100
|
+
left: 0,
|
|
101
|
+
right: 500,
|
|
102
|
+
bottom: -200,
|
|
103
|
+
});
|
|
104
|
+
await react_2.fireEvent.scroll(window, { target: { scrollY: 700 } });
|
|
105
|
+
expect(() => {
|
|
106
|
+
react_2.screen.getByRole('button');
|
|
107
|
+
}).toThrow();
|
|
108
|
+
//Scrolled up and had passed the element that startSelector selects so it should be visible
|
|
109
|
+
await react_2.fireEvent.scroll(window, { target: { scrollY: 650 } });
|
|
110
|
+
expect(react_2.screen.getByRole('button')).toBeTruthy();
|
|
111
|
+
// The button should be visible if we scroll up and the head is visible after having shown it before
|
|
112
|
+
jest.spyOn(head, 'getBoundingClientRect').mockReturnValue({
|
|
113
|
+
width: 500,
|
|
114
|
+
height: 500,
|
|
115
|
+
top: 0,
|
|
116
|
+
left: 0,
|
|
117
|
+
right: 500,
|
|
118
|
+
bottom: 400,
|
|
119
|
+
});
|
|
120
|
+
await react_2.fireEvent.scroll(window, { target: { scrollY: 100 } });
|
|
121
|
+
expect(react_2.screen.getByRole('button')).toBeTruthy();
|
|
122
|
+
});
|
|
123
|
+
describe('If a `scrollableElement` is passed', () => {
|
|
124
|
+
it('renders the button after pass the element selected with startSelector', async () => {
|
|
125
|
+
const container = document.createElement('div');
|
|
126
|
+
container.id = 'scrollable-element';
|
|
127
|
+
container.style.display = 'block';
|
|
128
|
+
container.style.overflowY = 'scroll';
|
|
129
|
+
container.style.height = '500px';
|
|
130
|
+
document.body.appendChild(container);
|
|
131
|
+
const tree = (0, react_2.render)(react_1.default.createElement("div", null,
|
|
132
|
+
react_1.default.createElement("section", { id: "head", width: '100vw', height: 500, style: { width: '100vw', height: 500 } },
|
|
133
|
+
react_1.default.createElement("h1", null, "Head")),
|
|
134
|
+
react_1.default.createElement("section", { id: "body", width: '100vw', height: 500, style: { width: '100vw', height: 500, overflowY: 'scroll' } },
|
|
135
|
+
react_1.default.createElement("p", null, " Here goes the content")),
|
|
136
|
+
react_1.default.createElement(client_1.default, { startSelector: "#head", scrollableElement: container })), { container });
|
|
137
|
+
const head = tree.container.querySelector('#head');
|
|
138
|
+
// Mock that the head element is visible and we haven't passed it
|
|
139
|
+
jest.spyOn(head, 'getBoundingClientRect').mockReturnValue({
|
|
140
|
+
width: 500,
|
|
141
|
+
height: 500,
|
|
142
|
+
top: 0,
|
|
143
|
+
left: 0,
|
|
144
|
+
right: 500,
|
|
145
|
+
bottom: 500,
|
|
146
|
+
});
|
|
147
|
+
// Shouldn't be visible as we haven't passed the head element
|
|
148
|
+
await react_2.fireEvent.scroll(container, { target: { scrollTop: 300 } });
|
|
149
|
+
await react_2.fireEvent.scroll(container, { target: { scrollTop: 100 } });
|
|
150
|
+
expect(() => {
|
|
151
|
+
react_2.screen.getByRole('button');
|
|
152
|
+
}).toThrow();
|
|
153
|
+
//Mock that the head element is up on the scroll and not visible on the page which means we have passed it
|
|
154
|
+
jest.spyOn(head, 'getBoundingClientRect').mockReturnValue({
|
|
155
|
+
width: 500,
|
|
156
|
+
height: 500,
|
|
157
|
+
top: 0,
|
|
158
|
+
left: 0,
|
|
159
|
+
right: 500,
|
|
160
|
+
bottom: -200,
|
|
161
|
+
});
|
|
162
|
+
await react_2.fireEvent.scroll(container, { target: { scrollTop: 700 } });
|
|
163
|
+
expect(() => {
|
|
164
|
+
react_2.screen.getByRole('button');
|
|
165
|
+
}).toThrow();
|
|
166
|
+
//Scrolled up and had passed the element that startSelector selects so it should be visible
|
|
167
|
+
await react_2.fireEvent.scroll(container, { target: { scrollTop: 650 } });
|
|
168
|
+
expect(react_2.screen.getByRole('button')).toBeTruthy();
|
|
169
|
+
// The button should be visible if we scroll up and the head is visible after having shown it before
|
|
170
|
+
jest.spyOn(head, 'getBoundingClientRect').mockReturnValue({
|
|
171
|
+
width: 500,
|
|
172
|
+
height: 500,
|
|
173
|
+
top: 0,
|
|
174
|
+
left: 0,
|
|
175
|
+
right: 500,
|
|
176
|
+
bottom: 400,
|
|
177
|
+
});
|
|
178
|
+
await react_2.fireEvent.scroll(container, { target: { scrollTop: 100 } });
|
|
179
|
+
expect(react_2.screen.getByRole('button')).toBeTruthy();
|
|
180
|
+
});
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
//# sourceMappingURL=index.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../../../../../src/components/BackToTopButton/test/client/index.spec.tsx"],"names":[],"mappings":"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"}
|
|
@@ -14,10 +14,9 @@ export type BodyProps = {
|
|
|
14
14
|
richTextComponents?: RichTextComponentMapRecord;
|
|
15
15
|
bodyComponents?: BodyComponentMapRecord;
|
|
16
16
|
showShareButtons?: boolean;
|
|
17
|
-
showBackToTop?: boolean;
|
|
18
17
|
xInteractionSerialiser?: Serialiser;
|
|
19
18
|
postTrackerConfig?: PostTrackerConfig;
|
|
20
19
|
AdSlot?: React.FC;
|
|
21
20
|
};
|
|
22
|
-
export default function Body({ content, richTextComponents, bodyComponents,
|
|
21
|
+
export default function Body({ content, richTextComponents, bodyComponents, showShareButtons, xInteractionSerialiser, postTrackerConfig, AdSlot, }: BodyProps): React.JSX.Element | null;
|
|
23
22
|
export {};
|
|
@@ -8,7 +8,7 @@ const ArticleBody_1 = __importDefault(require("../ArticleBody"));
|
|
|
8
8
|
const LiveBlogBody_1 = __importDefault(require("../LiveBlogBody"));
|
|
9
9
|
const PodcastBody_1 = __importDefault(require("../PodcastBody"));
|
|
10
10
|
const ContentPackageBody_1 = __importDefault(require("../ContentPackageBody"));
|
|
11
|
-
function Body({ content, richTextComponents, bodyComponents,
|
|
11
|
+
function Body({ content, richTextComponents, bodyComponents, showShareButtons, xInteractionSerialiser, postTrackerConfig, AdSlot, }) {
|
|
12
12
|
if (!content?.body?.structured) {
|
|
13
13
|
return null;
|
|
14
14
|
}
|
|
@@ -17,7 +17,7 @@ function Body({ content, richTextComponents, bodyComponents, showBackToTop, show
|
|
|
17
17
|
const Podcast = bodyComponents?.['podcast-body'] ?? PodcastBody_1.default;
|
|
18
18
|
const ContentPackage = bodyComponents?.['content-package-body'] ?? ContentPackageBody_1.default;
|
|
19
19
|
if (content.__typename === 'LiveBlogPackage') {
|
|
20
|
-
return (react_1.default.createElement(LiveBlog, { content: content, richTextComponents: richTextComponents, showShareButtons: showShareButtons,
|
|
20
|
+
return (react_1.default.createElement(LiveBlog, { content: content, richTextComponents: richTextComponents, showShareButtons: showShareButtons, xInteractionSerialiser: xInteractionSerialiser, postTrackerConfig: postTrackerConfig }));
|
|
21
21
|
}
|
|
22
22
|
else if (content.__typename === 'Audio') {
|
|
23
23
|
return react_1.default.createElement(Podcast, { content: content, richTextComponents: richTextComponents });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Body/index.tsx"],"names":[],"mappings":";;;;;AAAA,kDAAoD;AACpD,iEAAwC;AACxC,mEAA0C;AAC1C,iEAAwC;AACxC,+EAAsD;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Body/index.tsx"],"names":[],"mappings":";;;;;AAAA,kDAAoD;AACpD,iEAAwC;AACxC,mEAA0C;AAC1C,iEAAwC;AACxC,+EAAsD;AA+BtD,SAAwB,IAAI,CAAC,EAC3B,OAAO,EACP,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,EACjB,MAAM,GACI;IACV,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE;QAC9B,OAAO,IAAI,CAAA;KACZ;IAED,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAC,gBAAgB,CAAC,IAAI,sBAAY,CAAA;IACnE,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC,cAAc,CAAC,IAAI,qBAAW,CAAA;IAC/D,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC,cAAc,CAAC,IAAI,qBAAW,CAAA;IAC/D,MAAM,cAAc,GAClB,cAAc,EAAE,CAAC,sBAAsB,CAAC,IAAI,4BAAkB,CAAA;IAEhE,IAAI,OAAO,CAAC,UAAU,KAAK,iBAAiB,EAAE;QAC5C,OAAO,CACL,8BAAC,QAAQ,IACP,OAAO,EAAE,OAAO,EAChB,kBAAkB,EAAE,kBAAkB,EACtC,gBAAgB,EAAE,gBAAgB,EAClC,sBAAsB,EAAE,sBAAsB,EAC9C,iBAAiB,EAAE,iBAAiB,GACpC,CACH,CAAA;KACF;SAAM,IAAI,OAAO,CAAC,UAAU,KAAK,OAAO,EAAE;QACzC,OAAO,8BAAC,OAAO,IAAC,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,GAAI,CAAA;KAC7E;SAAM,IAAI,OAAO,CAAC,UAAU,KAAK,gBAAgB,EAAE;QAClD,OAAO,CACL,8BAAC,cAAc,IACb,OAAO,EAAE,OAAO,EAChB,kBAAkB,EAAE,kBAAkB,EACtC,MAAM,EAAE,MAAM,GACd,CACH,CAAA;KACF;IAED,OAAO,8BAAC,OAAO,IAAC,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,GAAI,CAAA;AAC9E,CAAC;AA1CD,uBA0CC"}
|
|
@@ -3,5 +3,5 @@ import type { BodyProps } from '../Body';
|
|
|
3
3
|
type LiveBlogBodyProps = BodyProps & {
|
|
4
4
|
xInteractionSerialiser?: any;
|
|
5
5
|
};
|
|
6
|
-
export default function LiveBlogBody({ content, richTextComponents, xInteractionSerialiser, showShareButtons,
|
|
6
|
+
export default function LiveBlogBody({ content, richTextComponents, xInteractionSerialiser, showShareButtons, postTrackerConfig, }: LiveBlogBodyProps): React.JSX.Element | null;
|
|
7
7
|
export {};
|
|
@@ -6,13 +6,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
const react_1 = __importDefault(require("react"));
|
|
7
7
|
const RichText_1 = require("../RichText");
|
|
8
8
|
const LiveBlogWrapper_1 = require("../LiveBlogWrapper");
|
|
9
|
-
function LiveBlogBody({ content, richTextComponents, xInteractionSerialiser, showShareButtons,
|
|
9
|
+
function LiveBlogBody({ content, richTextComponents, xInteractionSerialiser, showShareButtons, postTrackerConfig, }) {
|
|
10
10
|
if (content.__typename !== 'LiveBlogPackage')
|
|
11
11
|
return null;
|
|
12
12
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
13
13
|
const posts = content.liveBlogPosts || [];
|
|
14
14
|
return (react_1.default.createElement(RichText_1.ComponentsContext.Provider, { value: richTextComponents },
|
|
15
|
-
react_1.default.createElement(LiveBlogWrapper_1.LiveBlogWrapper, { articleUrl: `https://www.ft.com/content/${content.id}`, id: "live-blog-wrapper", posts: posts, serialiser: xInteractionSerialiser, showShareButtons: showShareButtons ?? true,
|
|
15
|
+
react_1.default.createElement(LiveBlogWrapper_1.LiveBlogWrapper, { articleUrl: `https://www.ft.com/content/${content.id}`, id: "live-blog-wrapper", posts: posts, serialiser: xInteractionSerialiser, showShareButtons: showShareButtons ?? true, postTrackerConfig: postTrackerConfig })));
|
|
16
16
|
}
|
|
17
17
|
exports.default = LiveBlogBody;
|
|
18
18
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/LiveBlogBody/index.tsx"],"names":[],"mappings":";;;;;AAAA,kDAAyB;AAEzB,0CAA+C;AAC/C,wDAAoD;AASpD,SAAwB,YAAY,CAAC,EACnC,OAAO,EACP,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,EAChB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/LiveBlogBody/index.tsx"],"names":[],"mappings":";;;;;AAAA,kDAAyB;AAEzB,0CAA+C;AAC/C,wDAAoD;AASpD,SAAwB,YAAY,CAAC,EACnC,OAAO,EACP,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,GACC;IAClB,IAAI,OAAO,CAAC,UAAU,KAAK,iBAAiB;QAAE,OAAO,IAAI,CAAA;IAEzD,8DAA8D;IAC9D,MAAM,KAAK,GAAG,OAAO,CAAC,aAAa,IAAI,EAAE,CAAA;IAEzC,OAAO,CACL,8BAAC,4BAAiB,CAAC,QAAQ,IAAC,KAAK,EAAE,kBAAkB;QACnD,8BAAC,iCAAe,IACd,UAAU,EAAE,8BAA8B,OAAO,CAAC,EAAE,EAAE,EACtD,EAAE,EAAC,mBAAmB,EACtB,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,sBAAsB,EAClC,gBAAgB,EAAE,gBAAgB,IAAI,IAAI,EAC1C,iBAAiB,EAAE,iBAAiB,GACpC,CACyB,CAC9B,CAAA;AACH,CAAC;AAxBD,+BAwBC"}
|
|
@@ -24,9 +24,8 @@ export type LiveBlogPostProps = {
|
|
|
24
24
|
showShareButtons: boolean;
|
|
25
25
|
byline: StructuredTreeFragment;
|
|
26
26
|
ad: unknown;
|
|
27
|
-
backToTop: string | undefined | ((arg: any) => any);
|
|
28
27
|
indicators?: indicators;
|
|
29
28
|
authors: Array<any>;
|
|
30
29
|
};
|
|
31
|
-
declare const LiveBlogPost: ({ id, postId, title, content, bodyHTML, body, publishedTimestamp, publishedDate, isBreakingNews, standout, articleUrl, showShareButtons, byline, ad,
|
|
30
|
+
declare const LiveBlogPost: ({ id, postId, title, content, bodyHTML, body, publishedTimestamp, publishedDate, isBreakingNews, standout, articleUrl, showShareButtons, byline, ad, isPinned, indicators, authors, }: LiveBlogPostProps) => React.JSX.Element;
|
|
32
31
|
export { LiveBlogPost };
|
|
@@ -33,10 +33,9 @@ bodyHTML, //ElasticSearch
|
|
|
33
33
|
body, // cp-content-pipeline
|
|
34
34
|
publishedTimestamp, // Remove once wordpress is no longer in use
|
|
35
35
|
publishedDate, isBreakingNews, // Remove once wordpress is no longer in use
|
|
36
|
-
standout = {}, articleUrl, showShareButtons = false, byline, ad,
|
|
36
|
+
standout = {}, articleUrl, showShareButtons = false, byline, ad, isPinned, indicators = {}, authors, }) => {
|
|
37
37
|
const showBreakingNewsLabel = standout.breakingNews || isBreakingNews;
|
|
38
38
|
let postBody;
|
|
39
|
-
let backToTopElem;
|
|
40
39
|
if (body && 'structured' in body) {
|
|
41
40
|
// Content comes from cp-content-pipeline-api
|
|
42
41
|
postBody = (react_1.default.createElement("div", { className: "x-live-blog-post__body n-content-body article--body" },
|
|
@@ -46,15 +45,6 @@ standout = {}, articleUrl, showShareButtons = false, byline, ad, backToTop, isPi
|
|
|
46
45
|
// Content comes from next-es or wordpress
|
|
47
46
|
postBody = (react_1.default.createElement("div", { className: "x-live-blog-post__body n-content-body article--body", dangerouslySetInnerHTML: { __html: bodyHTML || content } }));
|
|
48
47
|
}
|
|
49
|
-
if (typeof backToTop === 'string') {
|
|
50
|
-
backToTopElem = (react_1.default.createElement("a", { href: backToTop.includes('#') ? backToTop : `#${backToTop}`, className: "x-live-blog-post-controls__back-to-top-link" }, "Back to top"));
|
|
51
|
-
}
|
|
52
|
-
else if (typeof backToTop === 'function') {
|
|
53
|
-
backToTopElem = (react_1.default.createElement("button", { onClick: backToTop, className: "x-live-blog-post-controls__back-to-top-button" }, "Back to top"));
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
backToTopElem = null;
|
|
57
|
-
}
|
|
58
48
|
const author = authors?.[0] ?? null;
|
|
59
49
|
return (react_1.default.createElement("article", { className: (0, classnames_1.default)('x-live-blog-post', {
|
|
60
50
|
'x-live-blog-post--opinion': indicators.isOpinion,
|
|
@@ -79,9 +69,7 @@ standout = {}, articleUrl, showShareButtons = false, byline, ad, backToTop, isPi
|
|
|
79
69
|
react_1.default.createElement("div", { className: "o-expander__content" }, postBody),
|
|
80
70
|
react_1.default.createElement("a", { className: "o-expander__toggle o-expander__text--custom" },
|
|
81
71
|
react_1.default.createElement("span", { className: "o-expander__visually-hidden" }, "\u00A0")))) : (postBody),
|
|
82
|
-
react_1.default.createElement("div", { className: "x-live-blog-post__controls" },
|
|
83
|
-
showShareButtons && (react_1.default.createElement(ShareButtons_1.default, { postId: id || postId, articleUrl: articleUrl, title: title })),
|
|
84
|
-
backToTopElem),
|
|
72
|
+
react_1.default.createElement("div", { className: "x-live-blog-post__controls" }, showShareButtons && (react_1.default.createElement(ShareButtons_1.default, { postId: id || postId, articleUrl: articleUrl, title: title }))),
|
|
85
73
|
ad));
|
|
86
74
|
};
|
|
87
75
|
exports.LiveBlogPost = LiveBlogPost;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/LiveBlogPost/index.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAAyB;AACzB,kEAAyC;AACzC,4DAAmC;AACnC,2DAAkC;AAClC,4DAAmC;AACnC,2DAAkC;AAClC,uDAA8B;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/LiveBlogPost/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -138,7 +138,7 @@ class BaseLiveBlogWrapper extends react_1.Component {
|
|
|
138
138
|
}
|
|
139
139
|
return 0;
|
|
140
140
|
});
|
|
141
|
-
const postElements = posts.map((post, index) => (react_1.default.createElement(LiveBlogPost_1.LiveBlogPost, { key: `live-blog-post-${post.id}`, ...post, articleUrl: articleUrl, showShareButtons: showShareButtons, ad: ads[index]
|
|
141
|
+
const postElements = posts.map((post, index) => (react_1.default.createElement(LiveBlogPost_1.LiveBlogPost, { key: `live-blog-post-${post.id}`, ...post, articleUrl: articleUrl, showShareButtons: showShareButtons, ad: ads[index] })));
|
|
142
142
|
return (react_1.default.createElement("div", { className: "x-live-blog-wrapper", "data-live-blog-wrapper-id": id, ref: liveBlogWrapperElementRef }, postElements));
|
|
143
143
|
}
|
|
144
144
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/LiveBlogWrapper/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAwC;AACxC,kEAA+E;AAC/E,mDAA+C;AAC/C,mDAA+C;AAC/C,iDAA4C;AAC5C,kDAA8C;AAE9C,uDAAuD;AACvD,kCAAkC;AAClC,kHAAkH;AAElH,4FAA4F;AAC5F,MAAM,0BAA0B,GAAG,IAAA,2BAAW,EAAC;IAC7C,UAAU,CAAC,OAAY,EAAE,OAAY;QACnC,OAAO,CAAC,KAAU,EAAE,EAAE;YACpB,MAAM,iBAAiB,GAAG,IAAA,6BAAa,EAAC,OAAO,CAAC,CAAA;YAChD,MAAM,oBAAoB,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAC3C,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,iBAAiB,CAAC,EAAE,CAChD,CAAA;YACD,IAAI,CAAC,oBAAoB,EAAE;gBACzB,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAA;gBACtC,IAAA,6BAAa,EAAC,OAAO,EAAE,6BAA6B,EAAE;oBACpD,IAAI,EAAE,iBAAiB;iBACxB,CAAC,CAAA;aACH;YAED,OAAO,KAAK,CAAA;QACd,CAAC,CAAA;IACH,CAAC;CACF,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/LiveBlogWrapper/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -121,7 +121,7 @@ function RichText({ structuredContent, components, }) {
|
|
|
121
121
|
...components,
|
|
122
122
|
};
|
|
123
123
|
const tree = structuredContent.tree;
|
|
124
|
-
return (react_1.default.createElement(react_1.default.Fragment, null, tree
|
|
124
|
+
return (react_1.default.createElement(react_1.default.Fragment, null, tree?.children?.map((node, index) => (react_1.default.createElement(RichTextChild, { node: node, parentIndex: index, key: index, components: componentsWithOverrides, references: structuredContent.references ?? [] })))));
|
|
125
125
|
}
|
|
126
126
|
exports.default = RichText;
|
|
127
127
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/RichText/index.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/RichText/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -7,9 +7,10 @@ type TagsProps = {
|
|
|
7
7
|
displayConcept?: ConceptFragment;
|
|
8
8
|
genreConcept?: ConceptFragment;
|
|
9
9
|
brandConcept?: ConceptFragment;
|
|
10
|
+
hasColumnist?: boolean;
|
|
10
11
|
followButtonVariant?: TopperFragment['followButtonVariant'];
|
|
11
12
|
FollowButtonSlot?: FollowButtonSlot;
|
|
12
13
|
headshot?: string;
|
|
13
14
|
};
|
|
14
|
-
export default function Tags({ __typename, isPackage, displayConcept, genreConcept, brandConcept, followButtonVariant, headshot, FollowButtonSlot, }: TagsProps): React.JSX.Element;
|
|
15
|
+
export default function Tags({ __typename, isPackage, displayConcept, genreConcept, brandConcept, hasColumnist, followButtonVariant, headshot, FollowButtonSlot, }: TagsProps): React.JSX.Element;
|
|
15
16
|
export {};
|
|
@@ -4,11 +4,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const react_1 = __importDefault(require("react"));
|
|
7
|
-
function Tags({ __typename, isPackage, displayConcept, genreConcept, brandConcept, followButtonVariant, headshot, FollowButtonSlot, }) {
|
|
7
|
+
function Tags({ __typename, isPackage, displayConcept, genreConcept, brandConcept, hasColumnist, followButtonVariant, headshot, FollowButtonSlot, }) {
|
|
8
8
|
const isOpinion = __typename === 'OpinionTopper';
|
|
9
9
|
const concept = getConcept(displayConcept, genreConcept);
|
|
10
10
|
const baseFollowButtonCondition = FollowButtonSlot && concept?.id;
|
|
11
|
-
const additionalFollowButtonCondition = (isOpinion && !headshot) || !isOpinion;
|
|
11
|
+
const additionalFollowButtonCondition = (isOpinion && !headshot && !hasColumnist) || !isOpinion;
|
|
12
12
|
const followButtonCondition = baseFollowButtonCondition && additionalFollowButtonCondition;
|
|
13
13
|
return (react_1.default.createElement("div", { className: "o-topper__tags" }, isPackage && brandConcept?.id ? (react_1.default.createElement(ConceptLabel, { ...brandConcept })) : (!isPackage && (react_1.default.createElement("div", { className: "topper__primary-theme" },
|
|
14
14
|
isOpinion && (react_1.default.createElement("span", { className: "o-topper__opinion-genre", "aria-label": "opinion article" }, `Opinion `)),
|