@financial-times/cp-content-pipeline-ui 11.2.1 → 11.2.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.
- package/CHANGELOG.md +7 -0
- package/lib/components/LiveBlogPost/index.js +2 -2
- package/lib/components/LiveBlogPost/index.js.map +1 -1
- package/lib/components/LiveBlogPost/test/index.spec.js +37 -0
- package/lib/components/LiveBlogPost/test/index.spec.js.map +1 -1
- package/package.json +1 -1
- package/src/components/LiveBlogPost/index.tsx +8 -6
- package/src/components/LiveBlogPost/test/index.spec.tsx +57 -0
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -574,6 +574,13 @@
|
|
|
574
574
|
* @financial-times/cp-content-pipeline-client bumped from ^3.7.2 to ^3.7.3
|
|
575
575
|
* @financial-times/cp-content-pipeline-schema bumped from ^2.10.1 to ^2.10.2
|
|
576
576
|
|
|
577
|
+
## [11.2.2](https://github.com/Financial-Times/cp-content-pipeline/compare/cp-content-pipeline-ui-v11.2.1...cp-content-pipeline-ui-v11.2.2) (2026-04-29)
|
|
578
|
+
|
|
579
|
+
|
|
580
|
+
### Bug Fixes
|
|
581
|
+
|
|
582
|
+
* ci-3515 hide pub date for pinned posts ([1acb6c4](https://github.com/Financial-Times/cp-content-pipeline/commit/1acb6c477805eb3d9820d800a95f8ce34f2b564c))
|
|
583
|
+
|
|
577
584
|
## [11.2.1](https://github.com/Financial-Times/cp-content-pipeline/compare/cp-content-pipeline-ui-v11.2.0...cp-content-pipeline-ui-v11.2.1) (2026-04-22)
|
|
578
585
|
|
|
579
586
|
|
|
@@ -68,8 +68,8 @@ publishedDate, articleUrl, showShareButtons = false, showShareLinkButton = false
|
|
|
68
68
|
react_1.default.createElement("div", { className: "x-live-blog-post__meta-container" },
|
|
69
69
|
react_1.default.createElement("div", { className: "x-live-blog-post__meta" },
|
|
70
70
|
indicators.isOpinion ? (react_1.default.createElement("span", { className: "x-live-blog-post__label--opinion x-live-blog-post__label o3-type-label" }, "Live Opinion")) : isPinned ? (react_1.default.createElement("span", { className: "x-live-blog-post__label o3-type-label" }, "Editor's pick")) : (''),
|
|
71
|
-
react_1.default.createElement("span", null,
|
|
72
|
-
react_1.default.createElement(Timestamp_1.default, { publishedTimestamp: publishedDate || publishedTimestamp, textCase: "sentence" }))),
|
|
71
|
+
!isPinned && (react_1.default.createElement("span", null,
|
|
72
|
+
react_1.default.createElement(Timestamp_1.default, { publishedTimestamp: publishedDate || publishedTimestamp, textCase: "sentence" })))),
|
|
73
73
|
react_1.default.createElement("div", { className: "x-live-blog-post__byline" },
|
|
74
74
|
react_1.default.createElement(Byline_1.default, { structuredContent: byline, showEditedBy: false }))),
|
|
75
75
|
showShareLinkButton && (react_1.default.createElement(ShareLinkButton_1.default, { postId: id || postId, articleUrl: articleUrl }))),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/LiveBlogPost/index.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/LiveBlogPost/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
const react_1 = __importDefault(require("react"));
|
|
7
7
|
const react_2 = require("@testing-library/react");
|
|
8
8
|
const ShareLinkButton_1 = __importDefault(require("../ShareLinkButton"));
|
|
9
|
+
const index_1 = require("../index");
|
|
9
10
|
const mockClipboardWrite = jest.fn(() => Promise.resolve());
|
|
10
11
|
Object.defineProperty(navigator, 'clipboard', {
|
|
11
12
|
value: { writeText: mockClipboardWrite },
|
|
@@ -66,4 +67,40 @@ describe('Share Link button', () => {
|
|
|
66
67
|
expect(container.querySelector('[data-tooltip="hide"]')).toBeTruthy();
|
|
67
68
|
});
|
|
68
69
|
});
|
|
70
|
+
describe('LiveBlogPost meta container', () => {
|
|
71
|
+
const defaultProps = {
|
|
72
|
+
id: '00000000-0000-0000-0000-000000000000',
|
|
73
|
+
postId: '00000000-0000-0000-0000-000000000000',
|
|
74
|
+
title: 'Sample Live Blog Post',
|
|
75
|
+
content: 'This is a sample live blog post.',
|
|
76
|
+
bodyHTML: '<p>This is a sample live blog post.</p>',
|
|
77
|
+
body: {},
|
|
78
|
+
publishedTimestamp: '2024-06-01T12:00:00Z',
|
|
79
|
+
publishedDate: '2024-06-01T12:00:00Z',
|
|
80
|
+
isPinned: true,
|
|
81
|
+
articleUrl: 'https://ft.com/content/00000000-0000-0000-0000-000000000000',
|
|
82
|
+
showShareButtons: false,
|
|
83
|
+
showShareLinkButton: false,
|
|
84
|
+
byline: { tree: {} },
|
|
85
|
+
ad: null,
|
|
86
|
+
indicators: {},
|
|
87
|
+
authors: [],
|
|
88
|
+
};
|
|
89
|
+
it('should hide the timestamp on pinned posts', () => {
|
|
90
|
+
const { container } = (0, react_2.render)(react_1.default.createElement(index_1.LiveBlogPost, { ...defaultProps, isPinned: true }));
|
|
91
|
+
expect(container.querySelector('.x-live-blog-post__timestamp-container')).toBeFalsy();
|
|
92
|
+
});
|
|
93
|
+
it('should show the timestamp on non-pinned posts', () => {
|
|
94
|
+
const { container } = (0, react_2.render)(react_1.default.createElement(index_1.LiveBlogPost, { ...defaultProps, isPinned: false }));
|
|
95
|
+
expect(container.querySelector('.x-live-blog-post__timestamp-container')).toBeTruthy();
|
|
96
|
+
});
|
|
97
|
+
it("should render the editor's pick label when the post is pinned", () => {
|
|
98
|
+
const { container } = (0, react_2.render)(react_1.default.createElement(index_1.LiveBlogPost, { ...defaultProps, isPinned: true }));
|
|
99
|
+
expect(container.querySelector('.x-live-blog-post__label')?.textContent).toBe("Editor's pick");
|
|
100
|
+
});
|
|
101
|
+
it("should not render the editor's pick label when the post is not pinned", () => {
|
|
102
|
+
const { container } = (0, react_2.render)(react_1.default.createElement(index_1.LiveBlogPost, { ...defaultProps, isPinned: false }));
|
|
103
|
+
expect(container.querySelector('.x-live-blog-post__label')?.textContent).not.toBe("Editor's pick");
|
|
104
|
+
});
|
|
105
|
+
});
|
|
69
106
|
//# sourceMappingURL=index.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../../../../src/components/LiveBlogPost/test/index.spec.tsx"],"names":[],"mappings":";;;;;AAAA,kDAAyB;AACzB,kDAA+D;AAC/D,yEAAgD;
|
|
1
|
+
{"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../../../../src/components/LiveBlogPost/test/index.spec.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -176,12 +176,14 @@ const LiveBlogPost: React.FC<LiveBlogPostProps> = ({
|
|
|
176
176
|
) : (
|
|
177
177
|
''
|
|
178
178
|
)}
|
|
179
|
-
|
|
180
|
-
<
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
179
|
+
{!isPinned && (
|
|
180
|
+
<span>
|
|
181
|
+
<Timestamp
|
|
182
|
+
publishedTimestamp={publishedDate || publishedTimestamp}
|
|
183
|
+
textCase="sentence"
|
|
184
|
+
/>
|
|
185
|
+
</span>
|
|
186
|
+
)}
|
|
185
187
|
</div>
|
|
186
188
|
<div className="x-live-blog-post__byline">
|
|
187
189
|
<Byline structuredContent={byline} showEditedBy={false} />
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from 'react'
|
|
2
2
|
import { render, fireEvent, act } from '@testing-library/react'
|
|
3
3
|
import ShareLinkButton from '../ShareLinkButton'
|
|
4
|
+
import { LiveBlogPost } from '../index'
|
|
4
5
|
|
|
5
6
|
const mockClipboardWrite = jest.fn(() => Promise.resolve())
|
|
6
7
|
Object.defineProperty(navigator, 'clipboard', {
|
|
@@ -87,3 +88,59 @@ describe('Share Link button', () => {
|
|
|
87
88
|
expect(container.querySelector('[data-tooltip="hide"]')).toBeTruthy()
|
|
88
89
|
})
|
|
89
90
|
})
|
|
91
|
+
|
|
92
|
+
describe('LiveBlogPost meta container', () => {
|
|
93
|
+
const defaultProps = {
|
|
94
|
+
id: '00000000-0000-0000-0000-000000000000',
|
|
95
|
+
postId: '00000000-0000-0000-0000-000000000000',
|
|
96
|
+
title: 'Sample Live Blog Post',
|
|
97
|
+
content: 'This is a sample live blog post.',
|
|
98
|
+
bodyHTML: '<p>This is a sample live blog post.</p>',
|
|
99
|
+
body: {},
|
|
100
|
+
publishedTimestamp: '2024-06-01T12:00:00Z',
|
|
101
|
+
publishedDate: '2024-06-01T12:00:00Z',
|
|
102
|
+
isPinned: true,
|
|
103
|
+
articleUrl: 'https://ft.com/content/00000000-0000-0000-0000-000000000000',
|
|
104
|
+
showShareButtons: false,
|
|
105
|
+
showShareLinkButton: false,
|
|
106
|
+
byline: { tree: {} },
|
|
107
|
+
ad: null,
|
|
108
|
+
indicators: {},
|
|
109
|
+
authors: [],
|
|
110
|
+
}
|
|
111
|
+
it('should hide the timestamp on pinned posts', () => {
|
|
112
|
+
const { container } = render(
|
|
113
|
+
<LiveBlogPost {...defaultProps} isPinned={true} />
|
|
114
|
+
)
|
|
115
|
+
expect(
|
|
116
|
+
container.querySelector('.x-live-blog-post__timestamp-container')
|
|
117
|
+
).toBeFalsy()
|
|
118
|
+
})
|
|
119
|
+
|
|
120
|
+
it('should show the timestamp on non-pinned posts', () => {
|
|
121
|
+
const { container } = render(
|
|
122
|
+
<LiveBlogPost {...defaultProps} isPinned={false} />
|
|
123
|
+
)
|
|
124
|
+
expect(
|
|
125
|
+
container.querySelector('.x-live-blog-post__timestamp-container')
|
|
126
|
+
).toBeTruthy()
|
|
127
|
+
})
|
|
128
|
+
|
|
129
|
+
it("should render the editor's pick label when the post is pinned", () => {
|
|
130
|
+
const { container } = render(
|
|
131
|
+
<LiveBlogPost {...defaultProps} isPinned={true} />
|
|
132
|
+
)
|
|
133
|
+
expect(
|
|
134
|
+
container.querySelector('.x-live-blog-post__label')?.textContent
|
|
135
|
+
).toBe("Editor's pick")
|
|
136
|
+
})
|
|
137
|
+
|
|
138
|
+
it("should not render the editor's pick label when the post is not pinned", () => {
|
|
139
|
+
const { container } = render(
|
|
140
|
+
<LiveBlogPost {...defaultProps} isPinned={false} />
|
|
141
|
+
)
|
|
142
|
+
expect(
|
|
143
|
+
container.querySelector('.x-live-blog-post__label')?.textContent
|
|
144
|
+
).not.toBe("Editor's pick")
|
|
145
|
+
})
|
|
146
|
+
})
|