@financial-times/cp-content-pipeline-ui 6.6.2 → 6.7.0
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 +32 -0
- package/lib/components/Clip/client/index.d.ts +2 -0
- package/lib/components/Clip/client/index.js +27 -1
- package/lib/components/Clip/client/index.js.map +1 -1
- package/lib/components/Clip/components/Container.js +2 -2
- package/lib/components/Clip/components/Container.js.map +1 -1
- package/lib/components/Clip/components/VideoDescription.js +2 -2
- package/lib/components/Clip/components/VideoDescription.js.map +1 -1
- package/lib/components/Clip/components/VideoInfoBox.js +2 -2
- package/lib/components/Clip/components/VideoInfoBox.js.map +1 -1
- package/lib/components/Clip/template/index.js +0 -1
- package/lib/components/Clip/template/index.js.map +1 -1
- package/lib/components/Clip/test/index.spec.js +30 -0
- package/lib/components/Clip/test/index.spec.js.map +1 -1
- package/lib/components/Expander/client/index.d.ts +49 -0
- package/lib/components/Expander/client/index.js +124 -0
- package/lib/components/Expander/client/index.js.map +1 -0
- package/lib/components/Expander/index.d.ts +15 -0
- package/lib/components/Expander/index.js +27 -0
- package/lib/components/Expander/index.js.map +1 -0
- package/lib/components/Expander/test/client/index.spec.d.ts +1 -0
- package/lib/components/Expander/test/client/index.spec.js +103 -0
- package/lib/components/Expander/test/client/index.spec.js.map +1 -0
- package/lib/components/Expander/test/index.spec.d.ts +1 -0
- package/lib/components/Expander/test/index.spec.js +57 -0
- package/lib/components/Expander/test/index.spec.js.map +1 -0
- package/lib/components/Expander/test/snapshot.spec.d.ts +1 -0
- package/lib/components/Expander/test/snapshot.spec.js +63 -0
- package/lib/components/Expander/test/snapshot.spec.js.map +1 -0
- package/lib/components/ImageSet/index.js +1 -1
- package/lib/components/ImageSet/index.js.map +1 -1
- package/lib/components/LiveBlogPost/client/index.d.ts +5 -0
- package/lib/components/LiveBlogPost/client/index.js +12 -0
- package/lib/components/LiveBlogPost/client/index.js.map +1 -0
- package/lib/components/LiveBlogPost/index.js +9 -21
- 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/Recommended/index.js +1 -1
- package/lib/components/Recommended/index.js.map +1 -1
- package/lib/components/RichText/index.d.ts +1 -1
- package/lib/components/Table/index.js +1 -1
- package/lib/components/Table/index.js.map +1 -1
- package/lib/components/Video/index.js +1 -1
- package/lib/components/Video/index.js.map +1 -1
- package/lib/components/YoutubeVideo/index.js +1 -1
- package/lib/components/YoutubeVideo/index.js.map +1 -1
- package/lib/stories/Clip.stories.d.ts +2 -1
- package/lib/stories/Clip.stories.js +5 -5
- package/lib/stories/Clip.stories.js.map +1 -1
- package/lib/stories/Expander.stories.d.ts +54 -0
- package/lib/stories/Expander.stories.js +142 -0
- package/lib/stories/Expander.stories.js.map +1 -0
- package/package.json +3 -5
- package/src/components/Clip/client/index.ts +39 -1
- package/src/components/Clip/client/main.scss +28 -0
- package/src/components/Clip/components/Container.tsx +10 -3
- package/src/components/Clip/components/VideoDescription.tsx +5 -3
- package/src/components/Clip/components/VideoInfoBox.tsx +3 -3
- package/src/components/Clip/components/_video-info-box.scss +0 -4
- package/src/components/Clip/template/index.ts +0 -1
- package/src/components/Clip/test/__snapshots__/snapshot.spec.tsx.snap +57 -47
- package/src/components/Clip/test/index.spec.ts +45 -0
- package/src/components/Expander/client/index.ts +197 -0
- package/src/components/Expander/client/main.scss +162 -0
- package/src/components/Expander/index.tsx +74 -0
- package/src/components/Expander/test/__snapshots__/snapshot.spec.tsx.snap +225 -0
- package/src/components/Expander/test/client/index.spec.tsx +129 -0
- package/src/components/Expander/test/index.spec.tsx +77 -0
- package/src/components/Expander/test/snapshot.spec.tsx +73 -0
- package/src/components/ImageSet/index.tsx +1 -0
- package/src/components/LiveBlogPost/client/index.ts +9 -0
- package/src/components/LiveBlogPost/index.tsx +29 -42
- package/src/components/LiveBlogWrapper/index.tsx +1 -0
- package/src/components/Recommended/index.tsx +1 -0
- package/src/components/Table/index.tsx +1 -0
- package/src/components/Video/index.tsx +4 -1
- package/src/components/YoutubeVideo/index.tsx +4 -1
- package/src/stories/Clip.stories.tsx +3 -2
- package/src/stories/Expander.stories.scss +3 -0
- package/src/stories/Expander.stories.tsx +159 -0
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
exports[`Clip Snapshot component rendered on server full-grid default render 1`] = `
|
|
4
4
|
"<div class=\\"n-content-layout\\" data-layout-width=\\"full-grid\\">
|
|
5
|
-
<div class=\\"n-content-layout__container\\">
|
|
5
|
+
<div class=\\"n-content-layout__container\\" data-component=\\"clip-set\\">
|
|
6
6
|
<div
|
|
7
7
|
data-cp-clip-layout=\\"full-grid\\"
|
|
8
8
|
data-cp-clip-poster=\\"\\"
|
|
@@ -23,11 +23,11 @@ exports[`Clip Snapshot component rendered on server full-grid default render 1`]
|
|
|
23
23
|
class=\\"o-expander o-expander__info-box\\"
|
|
24
24
|
data-o-expander-shrink-to=\\"hidden\\"
|
|
25
25
|
data-trackable=\\"clip-info-box\\"
|
|
26
|
-
data-o-expander-collapsed-toggle-text=\\"
|
|
27
|
-
data-o-expander-expanded-toggle-text=\\"
|
|
26
|
+
data-o-expander-collapsed-toggle-text=\\"<span class='o-expander__visually-hidden'>Show video info</span>\\"
|
|
27
|
+
data-o-expander-expanded-toggle-text=\\"<span class='o-expander__visually-hidden'>Hide video info</span>\\"
|
|
28
28
|
>
|
|
29
29
|
<button data-trackable=\\"toggle-open-close\\" class=\\"o-expander__toggle\\">
|
|
30
|
-
<span>
|
|
30
|
+
<span class=\\"o-expander__visually-hidden\\">Show video info</span>
|
|
31
31
|
</button>
|
|
32
32
|
<div class=\\"o-expander__content video-info\\"></div>
|
|
33
33
|
</div>
|
|
@@ -64,7 +64,7 @@ exports[`Clip Snapshot component rendered on server full-grid default render 1`]
|
|
|
64
64
|
|
|
65
65
|
exports[`Clip Snapshot component rendered on server full-grid render with attributes 1`] = `
|
|
66
66
|
"<div class=\\"n-content-layout\\" data-layout-width=\\"full-grid\\">
|
|
67
|
-
<div class=\\"n-content-layout__container\\">
|
|
67
|
+
<div class=\\"n-content-layout__container\\" data-component=\\"clip-set\\">
|
|
68
68
|
<div
|
|
69
69
|
data-cp-clip-layout=\\"full-grid\\"
|
|
70
70
|
data-cp-clip-poster=\\"\\"
|
|
@@ -85,11 +85,11 @@ exports[`Clip Snapshot component rendered on server full-grid render with attrib
|
|
|
85
85
|
class=\\"o-expander o-expander__info-box\\"
|
|
86
86
|
data-o-expander-shrink-to=\\"hidden\\"
|
|
87
87
|
data-trackable=\\"clip-info-box\\"
|
|
88
|
-
data-o-expander-collapsed-toggle-text=\\"
|
|
89
|
-
data-o-expander-expanded-toggle-text=\\"
|
|
88
|
+
data-o-expander-collapsed-toggle-text=\\"<span class='o-expander__visually-hidden'>Show video info</span>\\"
|
|
89
|
+
data-o-expander-expanded-toggle-text=\\"<span class='o-expander__visually-hidden'>Hide video info</span>\\"
|
|
90
90
|
>
|
|
91
91
|
<button data-trackable=\\"toggle-open-close\\" class=\\"o-expander__toggle\\">
|
|
92
|
-
<span>
|
|
92
|
+
<span class=\\"o-expander__visually-hidden\\">Show video info</span>
|
|
93
93
|
</button>
|
|
94
94
|
<div class=\\"o-expander__content video-info\\"></div>
|
|
95
95
|
</div>
|
|
@@ -121,11 +121,13 @@ exports[`Clip Snapshot component rendered on server full-grid render with attrib
|
|
|
121
121
|
class=\\"o-expander o-expander__description-box\\"
|
|
122
122
|
data-o-expander-shrink-to=\\"hidden\\"
|
|
123
123
|
data-trackable=\\"description-box\\"
|
|
124
|
-
data-o-expander-collapsed-toggle-text=\\"
|
|
125
|
-
data-o-expander-expanded-toggle-text=\\"
|
|
124
|
+
data-o-expander-collapsed-toggle-text=\\"<span class='o-expander__visually-hidden'>Show video description</span>\\"
|
|
125
|
+
data-o-expander-expanded-toggle-text=\\"<span class='o-expander__visually-hidden'>Hide video description</span>\\"
|
|
126
126
|
>
|
|
127
127
|
<button data-trackable=\\"toggle-open-close\\" class=\\"o-expander__toggle\\">
|
|
128
|
-
<span
|
|
128
|
+
<span class=\\"o-expander__visually-hidden\\"
|
|
129
|
+
>Show video description</span
|
|
130
|
+
>
|
|
129
131
|
</button>
|
|
130
132
|
<div class=\\"o-expander__content\\">
|
|
131
133
|
<div class=\\"video-description\\">
|
|
@@ -149,7 +151,7 @@ exports[`Clip Snapshot component rendered on server full-grid render with attrib
|
|
|
149
151
|
`;
|
|
150
152
|
|
|
151
153
|
exports[`Clip Snapshot component rendered on server in-line render 1`] = `
|
|
152
|
-
"<div class=\\"n-content-layout__container--in-line\\">
|
|
154
|
+
"<div class=\\"n-content-layout__container--in-line\\" data-component=\\"clip-set\\">
|
|
153
155
|
<div
|
|
154
156
|
data-cp-clip-layout=\\"in-line\\"
|
|
155
157
|
data-cp-clip-poster=\\"\\"
|
|
@@ -170,11 +172,11 @@ exports[`Clip Snapshot component rendered on server in-line render 1`] = `
|
|
|
170
172
|
class=\\"o-expander o-expander__info-box\\"
|
|
171
173
|
data-o-expander-shrink-to=\\"hidden\\"
|
|
172
174
|
data-trackable=\\"clip-info-box\\"
|
|
173
|
-
data-o-expander-collapsed-toggle-text=\\"
|
|
174
|
-
data-o-expander-expanded-toggle-text=\\"
|
|
175
|
+
data-o-expander-collapsed-toggle-text=\\"<span class='o-expander__visually-hidden'>Show video info</span>\\"
|
|
176
|
+
data-o-expander-expanded-toggle-text=\\"<span class='o-expander__visually-hidden'>Hide video info</span>\\"
|
|
175
177
|
>
|
|
176
178
|
<button data-trackable=\\"toggle-open-close\\" class=\\"o-expander__toggle\\">
|
|
177
|
-
<span>
|
|
179
|
+
<span class=\\"o-expander__visually-hidden\\">Show video info</span>
|
|
178
180
|
</button>
|
|
179
181
|
<div class=\\"o-expander__content video-info\\"></div>
|
|
180
182
|
</div>
|
|
@@ -209,7 +211,7 @@ exports[`Clip Snapshot component rendered on server in-line render 1`] = `
|
|
|
209
211
|
`;
|
|
210
212
|
|
|
211
213
|
exports[`Clip Snapshot component rendered on server in-line render with attributes 1`] = `
|
|
212
|
-
"<div class=\\"n-content-layout__container--in-line\\">
|
|
214
|
+
"<div class=\\"n-content-layout__container--in-line\\" data-component=\\"clip-set\\">
|
|
213
215
|
<div
|
|
214
216
|
data-cp-clip-layout=\\"in-line\\"
|
|
215
217
|
data-cp-clip-poster=\\"\\"
|
|
@@ -230,11 +232,11 @@ exports[`Clip Snapshot component rendered on server in-line render with attribut
|
|
|
230
232
|
class=\\"o-expander o-expander__info-box\\"
|
|
231
233
|
data-o-expander-shrink-to=\\"hidden\\"
|
|
232
234
|
data-trackable=\\"clip-info-box\\"
|
|
233
|
-
data-o-expander-collapsed-toggle-text=\\"
|
|
234
|
-
data-o-expander-expanded-toggle-text=\\"
|
|
235
|
+
data-o-expander-collapsed-toggle-text=\\"<span class='o-expander__visually-hidden'>Show video info</span>\\"
|
|
236
|
+
data-o-expander-expanded-toggle-text=\\"<span class='o-expander__visually-hidden'>Hide video info</span>\\"
|
|
235
237
|
>
|
|
236
238
|
<button data-trackable=\\"toggle-open-close\\" class=\\"o-expander__toggle\\">
|
|
237
|
-
<span>
|
|
239
|
+
<span class=\\"o-expander__visually-hidden\\">Show video info</span>
|
|
238
240
|
</button>
|
|
239
241
|
<div class=\\"o-expander__content video-info\\"></div>
|
|
240
242
|
</div>
|
|
@@ -266,11 +268,13 @@ exports[`Clip Snapshot component rendered on server in-line render with attribut
|
|
|
266
268
|
class=\\"o-expander o-expander__description-box\\"
|
|
267
269
|
data-o-expander-shrink-to=\\"hidden\\"
|
|
268
270
|
data-trackable=\\"description-box\\"
|
|
269
|
-
data-o-expander-collapsed-toggle-text=\\"
|
|
270
|
-
data-o-expander-expanded-toggle-text=\\"
|
|
271
|
+
data-o-expander-collapsed-toggle-text=\\"<span class='o-expander__visually-hidden'>Show video description</span>\\"
|
|
272
|
+
data-o-expander-expanded-toggle-text=\\"<span class='o-expander__visually-hidden'>Hide video description</span>\\"
|
|
271
273
|
>
|
|
272
274
|
<button data-trackable=\\"toggle-open-close\\" class=\\"o-expander__toggle\\">
|
|
273
|
-
<span
|
|
275
|
+
<span class=\\"o-expander__visually-hidden\\"
|
|
276
|
+
>Show video description</span
|
|
277
|
+
>
|
|
274
278
|
</button>
|
|
275
279
|
<div class=\\"o-expander__content\\">
|
|
276
280
|
<div class=\\"video-description\\">
|
|
@@ -294,7 +298,7 @@ exports[`Clip Snapshot component rendered on server in-line render with attribut
|
|
|
294
298
|
|
|
295
299
|
exports[`Clip Snapshot component rendered on server mid-grid default render 1`] = `
|
|
296
300
|
"<div class=\\"n-content-layout\\" data-layout-width=\\"full-grid\\">
|
|
297
|
-
<div class=\\"n-content-layout__container\\">
|
|
301
|
+
<div class=\\"n-content-layout__container\\" data-component=\\"clip-set\\">
|
|
298
302
|
<div
|
|
299
303
|
data-o-grid-colspan=\\"12 S12 M12 L10 XL10\\"
|
|
300
304
|
class=\\"n-content-layout__container--mid-grid\\"
|
|
@@ -319,11 +323,11 @@ exports[`Clip Snapshot component rendered on server mid-grid default render 1`]
|
|
|
319
323
|
class=\\"o-expander o-expander__info-box\\"
|
|
320
324
|
data-o-expander-shrink-to=\\"hidden\\"
|
|
321
325
|
data-trackable=\\"clip-info-box\\"
|
|
322
|
-
data-o-expander-collapsed-toggle-text=\\"
|
|
323
|
-
data-o-expander-expanded-toggle-text=\\"
|
|
326
|
+
data-o-expander-collapsed-toggle-text=\\"<span class='o-expander__visually-hidden'>Show video info</span>\\"
|
|
327
|
+
data-o-expander-expanded-toggle-text=\\"<span class='o-expander__visually-hidden'>Hide video info</span>\\"
|
|
324
328
|
>
|
|
325
329
|
<button data-trackable=\\"toggle-open-close\\" class=\\"o-expander__toggle\\">
|
|
326
|
-
<span>
|
|
330
|
+
<span class=\\"o-expander__visually-hidden\\">Show video info</span>
|
|
327
331
|
</button>
|
|
328
332
|
<div class=\\"o-expander__content video-info\\"></div>
|
|
329
333
|
</div>
|
|
@@ -361,7 +365,7 @@ exports[`Clip Snapshot component rendered on server mid-grid default render 1`]
|
|
|
361
365
|
|
|
362
366
|
exports[`Clip Snapshot component rendered on server mid-grid render with attributes 1`] = `
|
|
363
367
|
"<div class=\\"n-content-layout\\" data-layout-width=\\"full-grid\\">
|
|
364
|
-
<div class=\\"n-content-layout__container\\">
|
|
368
|
+
<div class=\\"n-content-layout__container\\" data-component=\\"clip-set\\">
|
|
365
369
|
<div
|
|
366
370
|
data-o-grid-colspan=\\"12 S12 M12 L10 XL10\\"
|
|
367
371
|
class=\\"n-content-layout__container--mid-grid\\"
|
|
@@ -386,11 +390,11 @@ exports[`Clip Snapshot component rendered on server mid-grid render with attribu
|
|
|
386
390
|
class=\\"o-expander o-expander__info-box\\"
|
|
387
391
|
data-o-expander-shrink-to=\\"hidden\\"
|
|
388
392
|
data-trackable=\\"clip-info-box\\"
|
|
389
|
-
data-o-expander-collapsed-toggle-text=\\"
|
|
390
|
-
data-o-expander-expanded-toggle-text=\\"
|
|
393
|
+
data-o-expander-collapsed-toggle-text=\\"<span class='o-expander__visually-hidden'>Show video info</span>\\"
|
|
394
|
+
data-o-expander-expanded-toggle-text=\\"<span class='o-expander__visually-hidden'>Hide video info</span>\\"
|
|
391
395
|
>
|
|
392
396
|
<button data-trackable=\\"toggle-open-close\\" class=\\"o-expander__toggle\\">
|
|
393
|
-
<span>
|
|
397
|
+
<span class=\\"o-expander__visually-hidden\\">Show video info</span>
|
|
394
398
|
</button>
|
|
395
399
|
<div class=\\"o-expander__content video-info\\"></div>
|
|
396
400
|
</div>
|
|
@@ -425,14 +429,16 @@ exports[`Clip Snapshot component rendered on server mid-grid render with attribu
|
|
|
425
429
|
class=\\"o-expander o-expander__description-box\\"
|
|
426
430
|
data-o-expander-shrink-to=\\"hidden\\"
|
|
427
431
|
data-trackable=\\"description-box\\"
|
|
428
|
-
data-o-expander-collapsed-toggle-text=\\"
|
|
429
|
-
data-o-expander-expanded-toggle-text=\\"
|
|
432
|
+
data-o-expander-collapsed-toggle-text=\\"<span class='o-expander__visually-hidden'>Show video description</span>\\"
|
|
433
|
+
data-o-expander-expanded-toggle-text=\\"<span class='o-expander__visually-hidden'>Hide video description</span>\\"
|
|
430
434
|
>
|
|
431
435
|
<button
|
|
432
436
|
data-trackable=\\"toggle-open-close\\"
|
|
433
437
|
class=\\"o-expander__toggle\\"
|
|
434
438
|
>
|
|
435
|
-
<span
|
|
439
|
+
<span class=\\"o-expander__visually-hidden\\"
|
|
440
|
+
>Show video description</span
|
|
441
|
+
>
|
|
436
442
|
</button>
|
|
437
443
|
<div class=\\"o-expander__content\\">
|
|
438
444
|
<div class=\\"video-description\\">
|
|
@@ -457,7 +463,7 @@ exports[`Clip Snapshot component rendered on server mid-grid render with attribu
|
|
|
457
463
|
`;
|
|
458
464
|
|
|
459
465
|
exports[`Clip Snapshot component rendered on server renders multiple video sources 1`] = `
|
|
460
|
-
"<div class=\\"n-content-layout__container--in-line\\">
|
|
466
|
+
"<div class=\\"n-content-layout__container--in-line\\" data-component=\\"clip-set\\">
|
|
461
467
|
<div
|
|
462
468
|
data-cp-clip-layout=\\"in-line\\"
|
|
463
469
|
data-cp-clip-poster=\\"https://whatever/1080x1920.jpg\\"
|
|
@@ -478,11 +484,11 @@ exports[`Clip Snapshot component rendered on server renders multiple video sourc
|
|
|
478
484
|
class=\\"o-expander o-expander__info-box\\"
|
|
479
485
|
data-o-expander-shrink-to=\\"hidden\\"
|
|
480
486
|
data-trackable=\\"clip-info-box\\"
|
|
481
|
-
data-o-expander-collapsed-toggle-text=\\"
|
|
482
|
-
data-o-expander-expanded-toggle-text=\\"
|
|
487
|
+
data-o-expander-collapsed-toggle-text=\\"<span class='o-expander__visually-hidden'>Show video info</span>\\"
|
|
488
|
+
data-o-expander-expanded-toggle-text=\\"<span class='o-expander__visually-hidden'>Hide video info</span>\\"
|
|
483
489
|
>
|
|
484
490
|
<button data-trackable=\\"toggle-open-close\\" class=\\"o-expander__toggle\\">
|
|
485
|
-
<span>
|
|
491
|
+
<span class=\\"o-expander__visually-hidden\\">Show video info</span>
|
|
486
492
|
</button>
|
|
487
493
|
<div class=\\"o-expander__content video-info\\"></div>
|
|
488
494
|
</div>
|
|
@@ -525,11 +531,13 @@ exports[`Clip Snapshot component rendered on server renders multiple video sourc
|
|
|
525
531
|
class=\\"o-expander o-expander__description-box\\"
|
|
526
532
|
data-o-expander-shrink-to=\\"hidden\\"
|
|
527
533
|
data-trackable=\\"description-box\\"
|
|
528
|
-
data-o-expander-collapsed-toggle-text=\\"
|
|
529
|
-
data-o-expander-expanded-toggle-text=\\"
|
|
534
|
+
data-o-expander-collapsed-toggle-text=\\"<span class='o-expander__visually-hidden'>Show video description</span>\\"
|
|
535
|
+
data-o-expander-expanded-toggle-text=\\"<span class='o-expander__visually-hidden'>Hide video description</span>\\"
|
|
530
536
|
>
|
|
531
537
|
<button data-trackable=\\"toggle-open-close\\" class=\\"o-expander__toggle\\">
|
|
532
|
-
<span
|
|
538
|
+
<span class=\\"o-expander__visually-hidden\\"
|
|
539
|
+
>Show video description</span
|
|
540
|
+
>
|
|
533
541
|
</button>
|
|
534
542
|
<div class=\\"o-expander__content\\">
|
|
535
543
|
<div class=\\"video-description\\">
|
|
@@ -553,7 +561,7 @@ exports[`Clip Snapshot component rendered on server renders multiple video sourc
|
|
|
553
561
|
|
|
554
562
|
exports[`Clip Snapshot component rendered on server supports new Origami images, fallbacking to the previous implementation 1`] = `
|
|
555
563
|
"<div class=\\"n-content-layout\\" data-layout-width=\\"full-grid\\">
|
|
556
|
-
<div class=\\"n-content-layout__container\\">
|
|
564
|
+
<div class=\\"n-content-layout__container\\" data-component=\\"clip-set\\">
|
|
557
565
|
<div
|
|
558
566
|
data-cp-clip-layout=\\"full-grid\\"
|
|
559
567
|
data-cp-clip-poster=\\"\\"
|
|
@@ -574,11 +582,11 @@ exports[`Clip Snapshot component rendered on server supports new Origami images,
|
|
|
574
582
|
class=\\"o-expander o-expander__info-box\\"
|
|
575
583
|
data-o-expander-shrink-to=\\"hidden\\"
|
|
576
584
|
data-trackable=\\"clip-info-box\\"
|
|
577
|
-
data-o-expander-collapsed-toggle-text=\\"
|
|
578
|
-
data-o-expander-expanded-toggle-text=\\"
|
|
585
|
+
data-o-expander-collapsed-toggle-text=\\"<span class='o-expander__visually-hidden'>Show video info</span>\\"
|
|
586
|
+
data-o-expander-expanded-toggle-text=\\"<span class='o-expander__visually-hidden'>Hide video info</span>\\"
|
|
579
587
|
>
|
|
580
588
|
<button data-trackable=\\"toggle-open-close\\" class=\\"o-expander__toggle\\">
|
|
581
|
-
<span>
|
|
589
|
+
<span class=\\"o-expander__visually-hidden\\">Show video info</span>
|
|
582
590
|
</button>
|
|
583
591
|
<div class=\\"o-expander__content video-info\\"></div>
|
|
584
592
|
</div>
|
|
@@ -610,11 +618,13 @@ exports[`Clip Snapshot component rendered on server supports new Origami images,
|
|
|
610
618
|
class=\\"o-expander o-expander__description-box\\"
|
|
611
619
|
data-o-expander-shrink-to=\\"hidden\\"
|
|
612
620
|
data-trackable=\\"description-box\\"
|
|
613
|
-
data-o-expander-collapsed-toggle-text=\\"
|
|
614
|
-
data-o-expander-expanded-toggle-text=\\"
|
|
621
|
+
data-o-expander-collapsed-toggle-text=\\"<span class='o-expander__visually-hidden'>Show video description</span>\\"
|
|
622
|
+
data-o-expander-expanded-toggle-text=\\"<span class='o-expander__visually-hidden'>Hide video description</span>\\"
|
|
615
623
|
>
|
|
616
624
|
<button data-trackable=\\"toggle-open-close\\" class=\\"o-expander__toggle\\">
|
|
617
|
-
<span
|
|
625
|
+
<span class=\\"o-expander__visually-hidden\\"
|
|
626
|
+
>Show video description</span
|
|
627
|
+
>
|
|
618
628
|
</button>
|
|
619
629
|
<div class=\\"o-expander__content\\">
|
|
620
630
|
<div class=\\"video-description\\">
|
|
@@ -763,6 +763,51 @@ describe('Clip', () => {
|
|
|
763
763
|
clip.videoEl.addEventListener('playing', listener)
|
|
764
764
|
clip.videoEl.play()
|
|
765
765
|
})
|
|
766
|
+
|
|
767
|
+
it('shows loading indicator when waiting event is triggered', (done) => {
|
|
768
|
+
const clip = clips[0]
|
|
769
|
+
const spy = jest.spyOn(clip, 'fadeIn')
|
|
770
|
+
|
|
771
|
+
clip.videoEl.dispatchEvent(new Event('waiting'))
|
|
772
|
+
|
|
773
|
+
setTimeout(() => {
|
|
774
|
+
expect(clip.containerEl.classList.contains('cp-clip--loading')).toBe(
|
|
775
|
+
true
|
|
776
|
+
)
|
|
777
|
+
expect(spy).toHaveBeenCalled()
|
|
778
|
+
done()
|
|
779
|
+
}, 100)
|
|
780
|
+
})
|
|
781
|
+
|
|
782
|
+
it('hides loading indicator when canplay event is triggered', (done) => {
|
|
783
|
+
const clip = clips[0]
|
|
784
|
+
const spy = jest.spyOn(clip, 'fadeOut')
|
|
785
|
+
|
|
786
|
+
clip.videoEl.dispatchEvent(new Event('canplay'))
|
|
787
|
+
|
|
788
|
+
setTimeout(() => {
|
|
789
|
+
expect(clip.containerEl.classList.contains('cp-clip--loading')).toBe(
|
|
790
|
+
false
|
|
791
|
+
)
|
|
792
|
+
expect(spy).toHaveBeenCalledWith(true)
|
|
793
|
+
done()
|
|
794
|
+
}, 100)
|
|
795
|
+
})
|
|
796
|
+
|
|
797
|
+
it('hides loading indicator when canplaythrough event is triggered', (done) => {
|
|
798
|
+
const clip = clips[0]
|
|
799
|
+
const spy = jest.spyOn(clip, 'fadeOut')
|
|
800
|
+
|
|
801
|
+
clip.videoEl.dispatchEvent(new Event('canplaythrough'))
|
|
802
|
+
|
|
803
|
+
setTimeout(() => {
|
|
804
|
+
expect(clip.containerEl.classList.contains('cp-clip--loading')).toBe(
|
|
805
|
+
false
|
|
806
|
+
)
|
|
807
|
+
expect(spy).toHaveBeenCalledWith(true)
|
|
808
|
+
done()
|
|
809
|
+
}, 100)
|
|
810
|
+
})
|
|
766
811
|
})
|
|
767
812
|
|
|
768
813
|
describe('Captions, credits, and descriptions', () => {
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* trackEntireRead
|
|
3
|
+
* @description Track the entire read of a truncated post
|
|
4
|
+
* @param {HTMLElement} post - The post element
|
|
5
|
+
*/
|
|
6
|
+
class TrackEntireRead {
|
|
7
|
+
private observer: IntersectionObserver | null = null
|
|
8
|
+
private readElement: Element | null
|
|
9
|
+
// data can be any key value pair that needs to be tracked
|
|
10
|
+
private data: Record<string, string>
|
|
11
|
+
constructor(readElement: Element, data: Record<string, string>) {
|
|
12
|
+
this.readElement = readElement as Element
|
|
13
|
+
this.data = data
|
|
14
|
+
this.init()
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
private init() {
|
|
18
|
+
//Intersection observer that observes readElement and when in view tracks the entire read
|
|
19
|
+
this.observer = new IntersectionObserver((entries) => {
|
|
20
|
+
entries.forEach((entry) => {
|
|
21
|
+
if (entry.isIntersecting) {
|
|
22
|
+
this.handleEntireRead()
|
|
23
|
+
this.observer?.disconnect()
|
|
24
|
+
}
|
|
25
|
+
})
|
|
26
|
+
})
|
|
27
|
+
this.observer.observe(this.readElement as Element)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
private handleEntireRead = () => {
|
|
31
|
+
const trackingData = {
|
|
32
|
+
action: 'entire_read',
|
|
33
|
+
...this.data,
|
|
34
|
+
}
|
|
35
|
+
const event = new CustomEvent('oTracking.event', {
|
|
36
|
+
detail: trackingData,
|
|
37
|
+
bubbles: true,
|
|
38
|
+
})
|
|
39
|
+
document.body.dispatchEvent(event)
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
destroy(): void {
|
|
43
|
+
this.observer?.disconnect()
|
|
44
|
+
this.observer = null
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
export class ExpanderClient {
|
|
48
|
+
/**
|
|
49
|
+
* The container element for all the elements that should be showned or be hidden.
|
|
50
|
+
*/
|
|
51
|
+
private container: Element | null
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* An optional element to which the expander will dispatch the events to.
|
|
55
|
+
* If not provided, events will not be dispatched.
|
|
56
|
+
*/
|
|
57
|
+
private dispatchBoundary?: Element | Document | null
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Element that will be showned at the end of the content when the expander is expanded.
|
|
61
|
+
* We use this to track when the entire post is read.
|
|
62
|
+
*/
|
|
63
|
+
private endContent: Element | null
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Track the entire read of a truncated post
|
|
67
|
+
*/
|
|
68
|
+
private trackingEntireRead: TrackEntireRead
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* The button that will expand the content
|
|
72
|
+
*/
|
|
73
|
+
private expanderButton: HTMLElement | null
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* The button that will collapse the content
|
|
77
|
+
*/
|
|
78
|
+
private collapserButton: HTMLElement | null
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* The tracking data that will be sent when the entire post is read
|
|
82
|
+
*/
|
|
83
|
+
private trackingData: Record<string, string>
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
*
|
|
87
|
+
* @param el
|
|
88
|
+
* @param dispatchBoundary
|
|
89
|
+
*/
|
|
90
|
+
|
|
91
|
+
constructor(
|
|
92
|
+
el: Element,
|
|
93
|
+
dispatchBoundary?: Element | Document | null,
|
|
94
|
+
trackingData?: Record<string, string>
|
|
95
|
+
) {
|
|
96
|
+
this.container = el
|
|
97
|
+
this.trackingData = trackingData || {}
|
|
98
|
+
this.expanderButton = el.querySelector(
|
|
99
|
+
'.cp-expander__expand [data-action="expand"]'
|
|
100
|
+
) as HTMLElement
|
|
101
|
+
this.collapserButton = el.querySelector(
|
|
102
|
+
'.cp-expander__collapse [data-action="collapse"]'
|
|
103
|
+
) as HTMLElement
|
|
104
|
+
this.endContent = el.querySelector('.cp-expander__collapse')
|
|
105
|
+
|
|
106
|
+
this.expanderButton?.addEventListener('click', this.handleExpand)
|
|
107
|
+
this.collapserButton?.addEventListener('click', this.handleCollapse)
|
|
108
|
+
|
|
109
|
+
this.container.classList.replace(
|
|
110
|
+
'cp-expander--not-initialised',
|
|
111
|
+
'cp-expander--initialised'
|
|
112
|
+
)
|
|
113
|
+
this.dispatchBoundary = dispatchBoundary || this.container
|
|
114
|
+
;(this.trackingData['post_id'] =
|
|
115
|
+
this.container
|
|
116
|
+
.querySelector('[data-trackable-context-truncated-id]')
|
|
117
|
+
?.getAttribute('data-trackable-context-truncated-id') || ''),
|
|
118
|
+
(this.trackingEntireRead = new TrackEntireRead(
|
|
119
|
+
this.endContent as Element,
|
|
120
|
+
this.trackingData
|
|
121
|
+
))
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
expand() {
|
|
125
|
+
this.container?.setAttribute('data-state', 'expanded')
|
|
126
|
+
this.dispatchBoundary?.dispatchEvent(
|
|
127
|
+
new CustomEvent('expander:expanded', {
|
|
128
|
+
bubbles: true,
|
|
129
|
+
detail: {
|
|
130
|
+
component: this.container,
|
|
131
|
+
},
|
|
132
|
+
})
|
|
133
|
+
)
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
collapse() {
|
|
137
|
+
this.container?.setAttribute('data-state', 'collapsed')
|
|
138
|
+
this.container?.scrollIntoView()
|
|
139
|
+
this.dispatchBoundary?.dispatchEvent(
|
|
140
|
+
new CustomEvent('expander:collapsed', {
|
|
141
|
+
bubbles: true,
|
|
142
|
+
detail: {
|
|
143
|
+
component: this.container,
|
|
144
|
+
},
|
|
145
|
+
})
|
|
146
|
+
)
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
private handleExpand = (e: Event) => {
|
|
150
|
+
e.preventDefault()
|
|
151
|
+
this.expand()
|
|
152
|
+
this.expanderButton?.setAttribute('aria-expanded', 'true')
|
|
153
|
+
this.expanderButton?.setAttribute('aria-hidden', 'true')
|
|
154
|
+
this.collapserButton?.setAttribute('aria-expanded', 'true')
|
|
155
|
+
this.collapserButton?.setAttribute('aria-hidden', 'false')
|
|
156
|
+
}
|
|
157
|
+
private handleCollapse = (e: Event) => {
|
|
158
|
+
e.preventDefault()
|
|
159
|
+
this.collapse()
|
|
160
|
+
this.expanderButton?.setAttribute('aria-expanded', 'false')
|
|
161
|
+
this.expanderButton?.setAttribute('aria-hidden', 'false')
|
|
162
|
+
this.collapserButton?.setAttribute('aria-expanded', 'false')
|
|
163
|
+
this.collapserButton?.setAttribute('aria-hidden', 'true')
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
destroy(): void {
|
|
167
|
+
this.container?.setAttribute('data-state', 'collapsed')
|
|
168
|
+
this.container
|
|
169
|
+
?.querySelector('.cp-expander__expand')
|
|
170
|
+
?.removeEventListener('click', this.expand)
|
|
171
|
+
this.container
|
|
172
|
+
?.querySelector('.cp-expander__collapse')
|
|
173
|
+
?.removeEventListener('click', this.collapse)
|
|
174
|
+
this.container?.classList.remove('cp-expander--initialised')
|
|
175
|
+
this.trackingEntireRead.destroy()
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
static init(data?: {
|
|
179
|
+
rootElement?: HTMLElement | null
|
|
180
|
+
dispatchBoundary?: Element | Document | null
|
|
181
|
+
trackingData?: Record<string, string>
|
|
182
|
+
}): ExpanderClient[] {
|
|
183
|
+
const { rootElement, dispatchBoundary, trackingData } = data || {}
|
|
184
|
+
const root = rootElement || document.body
|
|
185
|
+
|
|
186
|
+
return (Array.from(
|
|
187
|
+
root.querySelectorAll(
|
|
188
|
+
':not(.cp-expander--initialised)[data-component="expander"]'
|
|
189
|
+
)
|
|
190
|
+
)?.map((el: Element) => {
|
|
191
|
+
if (!el.classList.contains('expander--initialised')) {
|
|
192
|
+
return new ExpanderClient(el, dispatchBoundary, trackingData)
|
|
193
|
+
}
|
|
194
|
+
}) || []) as ExpanderClient[]
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
export default ExpanderClient
|