@times-components/ts-components 1.98.2-alpha.9 → 1.98.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.
Files changed (36) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/components/opta/football/fixtures-ticker/OptaFootballFixturesTicker.d.ts +1 -0
  3. package/dist/components/opta/football/fixtures-ticker/OptaFootballFixturesTicker.js +3 -3
  4. package/dist/components/opta/football/fixtures-ticker/OptaFootballFixturesTicker.stories.js +3 -3
  5. package/dist/components/opta/football/fixtures-ticker/styles.d.ts +1 -0
  6. package/dist/components/opta/football/fixtures-ticker/styles.js +14 -8
  7. package/dist/index.d.ts +0 -1
  8. package/dist/index.js +3 -4
  9. package/package.json +16 -17
  10. package/rnw.js +1 -1
  11. package/src/components/opta/football/fixtures-ticker/OptaFootballFixturesTicker.stories.tsx +2 -1
  12. package/src/components/opta/football/fixtures-ticker/OptaFootballFixturesTicker.tsx +3 -1
  13. package/src/components/opta/football/fixtures-ticker/__tests__/__snapshots__/OptaFootballFixturesTicker.test.tsx.snap +8 -8
  14. package/src/components/opta/football/fixtures-ticker/styles.ts +16 -7
  15. package/src/index.ts +2 -3
  16. package/tsconfig.json +0 -1
  17. package/dist/assets/BreadcrumbIcon.d.ts +0 -2
  18. package/dist/assets/BreadcrumbIcon.js +0 -5
  19. package/dist/assets/index.d.ts +0 -1
  20. package/dist/assets/index.js +0 -2
  21. package/dist/components/breadcrumb/__tests__/index.test.d.ts +0 -1
  22. package/dist/components/breadcrumb/__tests__/index.test.js +0 -40
  23. package/dist/components/breadcrumb/fixtures/breadcrumbs.json +0 -27
  24. package/dist/components/breadcrumb/index.d.ts +0 -9
  25. package/dist/components/breadcrumb/index.js +0 -28
  26. package/dist/components/breadcrumb/styles.d.ts +0 -13
  27. package/dist/components/breadcrumb/styles.js +0 -39
  28. package/src/assets/BreadcrumbIcon.tsx +0 -16
  29. package/src/assets/icons.stories.mdx +0 -1
  30. package/src/assets/index.tsx +0 -1
  31. package/src/components/breadcrumb/__tests__/__snapshots__/index.test.tsx.snap +0 -64
  32. package/src/components/breadcrumb/__tests__/index.test.tsx +0 -51
  33. package/src/components/breadcrumb/breadcrumb.stories.mdx +0 -47
  34. package/src/components/breadcrumb/fixtures/breadcrumbs.json +0 -27
  35. package/src/components/breadcrumb/index.tsx +0 -84
  36. package/src/components/breadcrumb/styles.ts +0 -43
@@ -38,7 +38,7 @@ storiesOf('Typescript Component/In Article/Football/Fixtures', module)
38
38
 
39
39
  storiesOf('Typescript Component/In Article/Football/Fixtures', module)
40
40
  .addDecorator(withKnobs)
41
- .add('Fixtures Ticker dark mode and link', () => {
41
+ .add('Fixtures Ticker buttons and link', () => {
42
42
  const selComp = select('Competition', competitons, '8');
43
43
  return (
44
44
  <OptaFootballFixturesTicker
@@ -50,6 +50,7 @@ storiesOf('Typescript Component/In Article/Football/Fixtures', module)
50
50
  days_before={number('days before (of current day)', 100)}
51
51
  round={text('round(s)', '')}
52
52
  fixturesPageUrl="https://www.thetimes.co.uk/sport/football/euro-2024"
53
+ showButtons
53
54
  />
54
55
  );
55
56
  });
@@ -25,6 +25,7 @@ export const OptaFootballFixturesTicker: React.FC<{
25
25
  days_before?: number;
26
26
  round?: string;
27
27
  isApp?: boolean;
28
+ showButtons?: boolean;
28
29
  fixturesPageUrl?: string;
29
30
  }> = React.memo(
30
31
  ({
@@ -36,6 +37,7 @@ export const OptaFootballFixturesTicker: React.FC<{
36
37
  days_before,
37
38
  round,
38
39
  isApp,
40
+ showButtons,
39
41
  fixturesPageUrl
40
42
  }) => {
41
43
  const ref = React.createRef<HTMLDivElement>();
@@ -93,7 +95,7 @@ export const OptaFootballFixturesTicker: React.FC<{
93
95
 
94
96
  return (
95
97
  <>
96
- <WidgetContainer isApp={isApp} ref={ref} />
98
+ <WidgetContainer isApp={isApp} showButtons={showButtons} ref={ref} />
97
99
 
98
100
  {!isReady && (
99
101
  <PlaceholderContainer height={80}>
@@ -3,7 +3,7 @@
3
3
  exports[`OptaFootballFixturesTicker with flags should render correctly 1`] = `
4
4
  <DocumentFragment>
5
5
  <div
6
- class="sc-htpNat sc-ifAKCX hQSDgw"
6
+ class="sc-htpNat sc-ifAKCX brWdln"
7
7
  />
8
8
  <div
9
9
  class="sc-bwzfXH uxFfR"
@@ -17,7 +17,7 @@ exports[`OptaFootballFixturesTicker with flags should render correctly 1`] = `
17
17
  exports[`OptaFootballFixturesTicker with flags should render correctly 2`] = `
18
18
  <DocumentFragment>
19
19
  <div
20
- class="sc-htpNat sc-ifAKCX hQSDgw"
20
+ class="sc-htpNat sc-ifAKCX brWdln"
21
21
  >
22
22
  <div>
23
23
  Widget
@@ -29,7 +29,7 @@ exports[`OptaFootballFixturesTicker with flags should render correctly 2`] = `
29
29
  exports[`OptaFootballFixturesTicker without flags should render correctly 1`] = `
30
30
  <DocumentFragment>
31
31
  <div
32
- class="sc-htpNat sc-ifAKCX hQSDgw"
32
+ class="sc-htpNat sc-ifAKCX brWdln"
33
33
  />
34
34
  <div
35
35
  class="sc-bwzfXH uxFfR"
@@ -43,7 +43,7 @@ exports[`OptaFootballFixturesTicker without flags should render correctly 1`] =
43
43
  exports[`OptaFootballFixturesTicker without flags should render correctly 2`] = `
44
44
  <DocumentFragment>
45
45
  <div
46
- class="sc-htpNat sc-ifAKCX hQSDgw"
46
+ class="sc-htpNat sc-ifAKCX brWdln"
47
47
  >
48
48
  <div>
49
49
  Widget
@@ -55,7 +55,7 @@ exports[`OptaFootballFixturesTicker without flags should render correctly 2`] =
55
55
  exports[`OptaFootballFixturesTicker without flags should render correctly with fixturesPageUrl 1`] = `
56
56
  <DocumentFragment>
57
57
  <div
58
- class="sc-htpNat sc-ifAKCX hQSDgw"
58
+ class="sc-htpNat sc-ifAKCX brWdln"
59
59
  />
60
60
  <div
61
61
  class="sc-bwzfXH uxFfR"
@@ -69,7 +69,7 @@ exports[`OptaFootballFixturesTicker without flags should render correctly with f
69
69
  exports[`OptaFootballFixturesTicker without flags should render correctly with fixturesPageUrl 2`] = `
70
70
  <DocumentFragment>
71
71
  <div
72
- class="sc-htpNat sc-ifAKCX hQSDgw"
72
+ class="sc-htpNat sc-ifAKCX brWdln"
73
73
  >
74
74
  <div>
75
75
  Widget
@@ -81,7 +81,7 @@ exports[`OptaFootballFixturesTicker without flags should render correctly with f
81
81
  exports[`OptaFootballFixturesTicker without flags should render correctly with isApp property 1`] = `
82
82
  <DocumentFragment>
83
83
  <div
84
- class="sc-htpNat sc-ifAKCX dAhuBS"
84
+ class="sc-htpNat sc-ifAKCX eAWYad"
85
85
  />
86
86
  <div
87
87
  class="sc-bwzfXH uxFfR"
@@ -95,7 +95,7 @@ exports[`OptaFootballFixturesTicker without flags should render correctly with i
95
95
  exports[`OptaFootballFixturesTicker without flags should render correctly with isApp property 2`] = `
96
96
  <DocumentFragment>
97
97
  <div
98
- class="sc-htpNat sc-ifAKCX dAhuBS"
98
+ class="sc-htpNat sc-ifAKCX eAWYad"
99
99
  >
100
100
  <div>
101
101
  Widget
@@ -41,6 +41,7 @@ export const WidgetContainerOverride = styled(WidgetContainerBase)`
41
41
 
42
42
  export const WidgetContainer = styled(WidgetContainerBase)<{
43
43
  isApp?: boolean;
44
+ showButtons?: boolean;
44
45
  }>`
45
46
  .Opta {
46
47
  font-family: Roboto !important;
@@ -52,18 +53,26 @@ export const WidgetContainer = styled(WidgetContainerBase)<{
52
53
  height: 80px !important;
53
54
  }
54
55
 
55
- @media (max-width: ${breakpoints.small}px) {
56
- .Opta-Scroller {
57
- display: none !important;
56
+ ${({ showButtons }) =>
57
+ !showButtons &&
58
+ `
59
+ @media (max-width: ${breakpoints.small}px) {
60
+ .Opta-Scroller {
61
+ display: none !important;
62
+ }
58
63
  }
59
- }
64
+ `}
60
65
 
61
66
  @media (max-width: ${breakpoints.small}px) {
62
67
  .Opta-Window {
63
- left: 0 !important;
68
+ left: ${({ showButtons }) => (showButtons ? '30px' : '0')} !important;
64
69
  right: 0 !important;
65
- overflow-x: auto !important;
66
- position: relative !important;
70
+ ${({ showButtons }) =>
71
+ showButtons
72
+ ? 'width: calc(100% - 60px) !important;'
73
+ : `
74
+ overflow-x: auto !important;
75
+ position: relative !important;`}
67
76
  }
68
77
  }
69
78
 
package/src/index.ts CHANGED
@@ -21,9 +21,8 @@ export {
21
21
  } from './components/article-flag/ArticleFlag';
22
22
  export { Timelines } from './components/in-article-timelines/Timelines';
23
23
  export { SaveStar } from './components/save-star/SaveStar';
24
- export { Breadcrumb } from './components/breadcrumb';
25
24
 
26
- // Newsletter Components.
25
+ // Newsletter Components
27
26
  export {
28
27
  AutoNewsletterPuff
29
28
  } from './components/newsletter-puff/AutoNewsletterPuff';
@@ -34,7 +33,7 @@ export {
34
33
  PreviewNewsletterPuff
35
34
  } from './components/newsletter-puff/preview-newsletter-puff/PreviewNewsletterPuff';
36
35
 
37
- // Sport Components.
36
+ // Sport Components
38
37
  export {
39
38
  OptaCricketScorecard
40
39
  } from './components/opta/cricket/scorecard/OptaCricketScorecard';
package/tsconfig.json CHANGED
@@ -9,7 +9,6 @@
9
9
  "declaration": true,
10
10
  "inlineSourceMap": true,
11
11
  "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */,
12
- "resolveJsonModule": true /* Import JSON files */ ,
13
12
 
14
13
  "strict": true /* Enable all strict type-checking options. */,
15
14
 
@@ -1,2 +0,0 @@
1
- declare const BreadcrumbIcon: (props: any) => JSX.Element;
2
- export default BreadcrumbIcon;
@@ -1,5 +0,0 @@
1
- import * as React from 'react';
2
- const BreadcrumbIcon = (props) => (React.createElement("svg", Object.assign({ xmlns: "http://www.w3.org/2000/svg", width: 16, height: 16, fill: "none" }, props),
3
- React.createElement("path", { fill: props.color, d: "m6.667 4-.94.94L8.78 8l-3.053 3.06.94.94 4-4-4-4Z" })));
4
- export default BreadcrumbIcon;
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnJlYWRjcnVtYkljb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXNzZXRzL0JyZWFkY3J1bWJJY29uLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsQ0FDckMsMkNBQ0UsS0FBSyxFQUFDLDRCQUE0QixFQUNsQyxLQUFLLEVBQUUsRUFBRSxFQUNULE1BQU0sRUFBRSxFQUFFLEVBQ1YsSUFBSSxFQUFDLE1BQU0sSUFDUCxLQUFLO0lBRVQsOEJBQ0UsSUFBSSxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQ2pCLENBQUMsRUFBQyxtREFBbUQsR0FDckQsQ0FDRSxDQUNQLENBQUM7QUFDRixlQUFlLGNBQWMsQ0FBQyJ9
@@ -1 +0,0 @@
1
- export { default as BreadcrumbIcon } from './BreadcrumbIcon';
@@ -1,2 +0,0 @@
1
- export { default as BreadcrumbIcon } from './BreadcrumbIcon';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXNzZXRzL2luZGV4LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxJQUFJLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDIn0=
@@ -1 +0,0 @@
1
- import '@testing-library/jest-dom';
@@ -1,40 +0,0 @@
1
- import React from 'react';
2
- import '@testing-library/jest-dom';
3
- import { render, fireEvent } from '@testing-library/react';
4
- import { Breadcrumb } from '../index';
5
- import { breadcrumbItems } from '../fixtures/breadcrumbs.json';
6
- import { TrackingContextProvider } from '../../../helpers/tracking/TrackingContextProvider';
7
- describe('Render Breadcrumbs', () => {
8
- const renderBreadcrumb = (analyticsStream) => render(React.createElement(TrackingContextProvider, { context: {
9
- component: 'breadcrumb',
10
- attrs: {}
11
- }, analyticsStream: analyticsStream },
12
- React.createElement(Breadcrumb, { data: breadcrumbItems })));
13
- it('should render a snapshot', () => {
14
- const { asFragment } = renderBreadcrumb();
15
- expect(asFragment()).toMatchSnapshot();
16
- });
17
- it('should render the component', () => {
18
- const { getByText } = renderBreadcrumb();
19
- const getBreadcrumb = getByText('Tennis');
20
- expect(getBreadcrumb).toBeInTheDocument();
21
- });
22
- it('items should have link with href', () => {
23
- const { getAllByRole } = renderBreadcrumb();
24
- const title = getAllByRole('link')[0];
25
- expect(title).toHaveAttribute('href', '/sport');
26
- });
27
- it('last breadcrumb should be selected', () => {
28
- const { getAllByRole } = renderBreadcrumb();
29
- const title = getAllByRole('link')[2];
30
- expect(title).toHaveAttribute('aria-current', 'page');
31
- });
32
- it('calls analyticsStream when you click', () => {
33
- const analyticsStream = jest.fn();
34
- const { getByText } = renderBreadcrumb(analyticsStream);
35
- const breadcrumb = getByText('Tennis');
36
- fireEvent.click(breadcrumb);
37
- expect(analyticsStream).toHaveBeenCalledTimes(1);
38
- });
39
- });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2JyZWFkY3J1bWIvX190ZXN0c19fL2luZGV4LnRlc3QudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN0QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFFNUYsUUFBUSxDQUFDLG9CQUFvQixFQUFFLEdBQUcsRUFBRTtJQUNsQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsZUFBc0MsRUFBRSxFQUFFLENBQ2xFLE1BQU0sQ0FDSixvQkFBQyx1QkFBdUIsSUFDdEIsT0FBTyxFQUFFO1lBQ1AsU0FBUyxFQUFFLFlBQVk7WUFDdkIsS0FBSyxFQUFFLEVBQUU7U0FDVixFQUNELGVBQWUsRUFBRSxlQUFlO1FBRWhDLG9CQUFDLFVBQVUsSUFBQyxJQUFJLEVBQUUsZUFBZSxHQUFJLENBQ2IsQ0FDM0IsQ0FBQztJQUNKLEVBQUUsQ0FBQywwQkFBMEIsRUFBRSxHQUFHLEVBQUU7UUFDbEMsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLGdCQUFnQixFQUFFLENBQUM7UUFDMUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekMsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsNkJBQTZCLEVBQUUsR0FBRyxFQUFFO1FBQ3JDLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3pDLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMxQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUM1QyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxrQ0FBa0MsRUFBRSxHQUFHLEVBQUU7UUFDMUMsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLGdCQUFnQixFQUFFLENBQUM7UUFDNUMsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ2xELENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLG9DQUFvQyxFQUFFLEdBQUcsRUFBRTtRQUM1QyxNQUFNLEVBQUUsWUFBWSxFQUFFLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztRQUM1QyxNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGVBQWUsQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDeEQsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsc0NBQXNDLEVBQUUsR0FBRyxFQUFFO1FBQzlDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNsQyxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDeEQsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZDLFNBQVMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDNUIsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25ELENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMifQ==
@@ -1,27 +0,0 @@
1
- {
2
- "breadcrumbItems": [
3
- {
4
- "title": "Sport",
5
- "url": "/sport"
6
- },
7
- {
8
- "title": "Tennis",
9
- "url": "/sport/tennis"
10
- },
11
- {
12
- "title": "Australian Open",
13
- "url": "/australian open"
14
- }
15
- ],
16
- "breadcrumbItemsForTrackingDemo": [
17
- {
18
- "title": "Sport"
19
- },
20
- {
21
- "title": "Tennis"
22
- },
23
- {
24
- "title": "Australian Open"
25
- }
26
- ]
27
- }
@@ -1,9 +0,0 @@
1
- declare type BreadcrumbsItem = {
2
- title: string;
3
- url?: string;
4
- };
5
- declare type BreadcrumbProps = {
6
- data: BreadcrumbsItem[];
7
- };
8
- export declare const Breadcrumb: ({ data }: BreadcrumbProps) => JSX.Element;
9
- export {};
@@ -1,28 +0,0 @@
1
- import React from 'react';
2
- import { Breadcrumbs, BreadcrumbItem, IconContainer, styleMap } from './styles';
3
- import { BreadcrumbIcon } from '../../assets';
4
- import { TrackingContextProvider } from '../../helpers/tracking/TrackingContextProvider';
5
- export const Breadcrumb = ({ data }) => {
6
- const clickEvent = (title) => ({
7
- object: 'Breadcrumb',
8
- action: 'Clicked',
9
- attrs: {
10
- event_navigation_action: 'navigation',
11
- event_navigation_name: 'header:selection',
12
- event_navigation_browsing_method: 'click',
13
- article_parent_name: `breadcrumb : ${title}`
14
- }
15
- });
16
- const handleClick = (fireAnalyticsEvent, title) => {
17
- fireAnalyticsEvent && fireAnalyticsEvent(clickEvent(title));
18
- };
19
- const getBreadcrumbSeparator = (index, arr) => index < arr.length - 1;
20
- return (React.createElement(TrackingContextProvider, null, ({ fireAnalyticsEvent }) => (React.createElement(Breadcrumbs, { "aria-label": "breadcrumbs" }, data.map((breadcrumbItem, breadcrumbIndex, breadcrumbArr) => {
21
- const showSeparator = getBreadcrumbSeparator(breadcrumbIndex, breadcrumbArr);
22
- return showSeparator ? (React.createElement(React.Fragment, null,
23
- React.createElement(BreadcrumbItem, { key: breadcrumbItem.title, "aria-current": "false", href: breadcrumbItem.url, selected: false, onClick: () => handleClick(fireAnalyticsEvent, breadcrumbItem.title) }, breadcrumbItem.title),
24
- React.createElement(IconContainer, null,
25
- React.createElement(BreadcrumbIcon, { color: styleMap.colors.inkNonEssential })))) : (React.createElement(BreadcrumbItem, { "aria-current": "page", key: breadcrumbItem.title, href: breadcrumbItem.url, selected: true, onClick: () => handleClick(fireAnalyticsEvent, breadcrumbItem.title) }, breadcrumbItem.title));
26
- })))));
27
- };
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9icmVhZGNydW1iL2luZGV4LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNoRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlDLE9BQU8sRUFFTCx1QkFBdUIsRUFDeEIsTUFBTSxnREFBZ0QsQ0FBQztBQVd4RCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBbUIsRUFBRSxFQUFFO0lBQ3RELE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sRUFBRSxZQUFZO1FBQ3BCLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLEtBQUssRUFBRTtZQUNMLHVCQUF1QixFQUFFLFlBQVk7WUFDckMscUJBQXFCLEVBQUUsa0JBQWtCO1lBQ3pDLGdDQUFnQyxFQUFFLE9BQU87WUFDekMsbUJBQW1CLEVBQUUsZ0JBQWdCLEtBQUssRUFBRTtTQUM3QztLQUNGLENBQUMsQ0FBQztJQUVILE1BQU0sV0FBVyxHQUFHLENBQ2xCLGtCQUFrRCxFQUNsRCxLQUFhLEVBQ2IsRUFBRTtRQUNGLGtCQUFrQixJQUFJLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUMsQ0FBQztJQUVGLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxLQUFhLEVBQUUsR0FBVSxFQUFFLEVBQUUsQ0FDM0QsS0FBSyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBRXpCLE9BQU8sQ0FDTCxvQkFBQyx1QkFBdUIsUUFDckIsQ0FBQyxFQUFFLGtCQUFrQixFQUFFLEVBQUUsRUFBRSxDQUFDLENBQzNCLG9CQUFDLFdBQVcsa0JBQVksYUFBYSxJQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsRUFBRTtRQUMzRCxNQUFNLGFBQWEsR0FBRyxzQkFBc0IsQ0FDMUMsZUFBZSxFQUNmLGFBQWEsQ0FDZCxDQUFDO1FBQ0YsT0FBTyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQ3JCO1lBQ0Usb0JBQUMsY0FBYyxJQUNiLEdBQUcsRUFBRSxjQUFjLENBQUMsS0FBSyxrQkFDWixPQUFPLEVBQ3BCLElBQUksRUFBRSxjQUFjLENBQUMsR0FBRyxFQUN4QixRQUFRLEVBQUUsS0FBSyxFQUNmLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FDWixXQUFXLENBQUMsa0JBQWtCLEVBQUUsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUd0RCxjQUFjLENBQUMsS0FBSyxDQUNOO1lBQ2pCLG9CQUFDLGFBQWE7Z0JBQ1osb0JBQUMsY0FBYyxJQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLGVBQWUsR0FBSSxDQUM1QyxDQUNmLENBQ0osQ0FBQyxDQUFDLENBQUMsQ0FDRixvQkFBQyxjQUFjLG9CQUNBLE1BQU0sRUFDbkIsR0FBRyxFQUFFLGNBQWMsQ0FBQyxLQUFLLEVBQ3pCLElBQUksRUFBRSxjQUFjLENBQUMsR0FBRyxFQUN4QixRQUFRLEVBQUUsSUFBSSxFQUNkLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FDWixXQUFXLENBQUMsa0JBQWtCLEVBQUUsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUd0RCxjQUFjLENBQUMsS0FBSyxDQUNOLENBQ2xCLENBQUM7SUFDSixDQUFDLENBQUMsQ0FDVSxDQUNmLENBQ3VCLENBQzNCLENBQUM7QUFDSixDQUFDLENBQUMifQ==
@@ -1,13 +0,0 @@
1
- export declare const styleMap: {
2
- colors: {
3
- blue070: string;
4
- inkContrast: string;
5
- inkSubtle: string;
6
- inkNonEssential: string;
7
- };
8
- };
9
- export declare const BreadcrumbItem: import("styled-components").StyledComponent<"a", any, {
10
- selected: boolean;
11
- }, never>;
12
- export declare const Breadcrumbs: import("styled-components").StyledComponent<"nav", any, {}, never>;
13
- export declare const IconContainer: import("styled-components").StyledComponent<"div", any, {}, never>;
@@ -1,39 +0,0 @@
1
- import styled from 'styled-components';
2
- export const styleMap = {
3
- colors: {
4
- blue070: '#006699',
5
- inkContrast: '#01000d',
6
- inkSubtle: '#696969',
7
- inkNonEssential: '#aaaaaa'
8
- }
9
- };
10
- export const BreadcrumbItem = styled.a `
11
- color: inherit;
12
- text-decoration: none;
13
- display: inline-grid;
14
- font-family: Roboto-Regular;
15
- font-size: 12px;
16
- font-weight: 500;
17
- line-height: 1.250;
18
- letter-spacing: 0%;
19
- font-stretch: normal
20
- display: inline-grid;
21
- background-color: transparent;
22
- min-height: 32px;
23
- border: none;
24
- place-content: center;
25
- color: ${({ selected }) => selected ? styleMap.colors.inkContrast : styleMap.colors.inkSubtle};
26
- &:hover {
27
- color: ${styleMap.colors.blue070}
28
- };
29
- `;
30
- export const Breadcrumbs = styled.nav `
31
- display: flex;
32
- `;
33
- export const IconContainer = styled.div `
34
- height: 32px;
35
- display: flex;
36
- align-items: center;
37
- padding-inline: 8px;
38
- `;
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYnJlYWRjcnVtYi9zdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sbUJBQW1CLENBQUM7QUFFdkMsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHO0lBQ3RCLE1BQU0sRUFBRTtRQUNOLE9BQU8sRUFBRSxTQUFTO1FBQ2xCLFdBQVcsRUFBRSxTQUFTO1FBQ3RCLFNBQVMsRUFBRSxTQUFTO1FBQ3BCLGVBQWUsRUFBRSxTQUFTO0tBQzNCO0NBQ0YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUF1Qjs7Ozs7Ozs7Ozs7Ozs7O1NBZXBELENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQ3hCLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUzs7V0FFekQsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPOztDQUVqQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUE7O0NBRXBDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQTs7Ozs7Q0FLdEMsQ0FBQyJ9
@@ -1,16 +0,0 @@
1
- import * as React from 'react';
2
- const BreadcrumbIcon = (props: any) => (
3
- <svg
4
- xmlns="http://www.w3.org/2000/svg"
5
- width={16}
6
- height={16}
7
- fill="none"
8
- {...props}
9
- >
10
- <path
11
- fill={props.color}
12
- d="m6.667 4-.94.94L8.78 8l-3.053 3.06.94.94 4-4-4-4Z"
13
- />
14
- </svg>
15
- );
16
- export default BreadcrumbIcon;
@@ -1 +0,0 @@
1
- overrides={{size: "sizing050"}}
@@ -1 +0,0 @@
1
- export { default as BreadcrumbIcon } from './BreadcrumbIcon';
@@ -1,64 +0,0 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`Render Breadcrumbs should render a snapshot 1`] = `
4
- <DocumentFragment>
5
- <nav
6
- aria-label="breadcrumbs"
7
- class="sc-bwzfXH jIEWCi"
8
- >
9
- <a
10
- aria-current="false"
11
- class="sc-bdVaJa gZsChJ"
12
- href="/sport"
13
- >
14
- Sport
15
- </a>
16
- <div
17
- class="sc-htpNat jVxkgC"
18
- >
19
- <svg
20
- color="#aaaaaa"
21
- fill="none"
22
- height="16"
23
- width="16"
24
- xmlns="http://www.w3.org/2000/svg"
25
- >
26
- <path
27
- d="m6.667 4-.94.94L8.78 8l-3.053 3.06.94.94 4-4-4-4Z"
28
- fill="#aaaaaa"
29
- />
30
- </svg>
31
- </div>
32
- <a
33
- aria-current="false"
34
- class="sc-bdVaJa gZsChJ"
35
- href="/sport/tennis"
36
- >
37
- Tennis
38
- </a>
39
- <div
40
- class="sc-htpNat jVxkgC"
41
- >
42
- <svg
43
- color="#aaaaaa"
44
- fill="none"
45
- height="16"
46
- width="16"
47
- xmlns="http://www.w3.org/2000/svg"
48
- >
49
- <path
50
- d="m6.667 4-.94.94L8.78 8l-3.053 3.06.94.94 4-4-4-4Z"
51
- fill="#aaaaaa"
52
- />
53
- </svg>
54
- </div>
55
- <a
56
- aria-current="page"
57
- class="sc-bdVaJa gItCja"
58
- href="/australian open"
59
- >
60
- Australian Open
61
- </a>
62
- </nav>
63
- </DocumentFragment>
64
- `;
@@ -1,51 +0,0 @@
1
- import React from 'react';
2
- import '@testing-library/jest-dom';
3
- import { render, fireEvent } from '@testing-library/react';
4
- import { Breadcrumb } from '../index';
5
- import { breadcrumbItems } from '../fixtures/breadcrumbs.json';
6
- import { TrackingContextProvider } from '../../../helpers/tracking/TrackingContextProvider';
7
-
8
- describe('Render Breadcrumbs', () => {
9
- const renderBreadcrumb = (analyticsStream?: (event: any) => void) =>
10
- render(
11
- <TrackingContextProvider
12
- context={{
13
- component: 'breadcrumb',
14
- attrs: {}
15
- }}
16
- analyticsStream={analyticsStream}
17
- >
18
- <Breadcrumb data={breadcrumbItems} />
19
- </TrackingContextProvider>
20
- );
21
- it('should render a snapshot', () => {
22
- const { asFragment } = renderBreadcrumb();
23
- expect(asFragment()).toMatchSnapshot();
24
- });
25
-
26
- it('should render the component', () => {
27
- const { getByText } = renderBreadcrumb();
28
- const getBreadcrumb = getByText('Tennis');
29
- expect(getBreadcrumb).toBeInTheDocument();
30
- });
31
-
32
- it('items should have link with href', () => {
33
- const { getAllByRole } = renderBreadcrumb();
34
- const title = getAllByRole('link')[0];
35
- expect(title).toHaveAttribute('href', '/sport');
36
- });
37
-
38
- it('last breadcrumb should be selected', () => {
39
- const { getAllByRole } = renderBreadcrumb();
40
- const title = getAllByRole('link')[2];
41
- expect(title).toHaveAttribute('aria-current', 'page');
42
- });
43
-
44
- it('calls analyticsStream when you click', () => {
45
- const analyticsStream = jest.fn();
46
- const { getByText } = renderBreadcrumb(analyticsStream);
47
- const breadcrumb = getByText('Tennis');
48
- fireEvent.click(breadcrumb);
49
- expect(analyticsStream).toHaveBeenCalledTimes(1);
50
- });
51
- });
@@ -1,47 +0,0 @@
1
- import { Meta, Story, Props } from '@storybook/addon-docs'
2
- import { Breadcrumb } from './index.tsx';
3
- import { breadcrumbItems, breadcrumbItemsForTrackingDemo } from './fixtures/breadcrumbs.json';
4
- import { TrackingContextProvider } from '@times-components/ts-newskit/src';
5
- import analyticsStream from "../../fixtures/analytics-actions/analytics-actions";
6
-
7
- <Meta
8
- title="Components/Navigation/Breadcrumb"
9
- component={Breadcrumb}
10
- />
11
-
12
- # Breadcrumb component
13
- The `Breadcrumb` component displays your hierarchical position on the website.
14
-
15
- This takes in a `data` prop, as below, to display the links in their order within the data object.
16
-
17
- ## Props
18
- <Props of={Breadcrumb} />
19
-
20
- ## Code Example
21
- `<Breadcrumb data={data} />`
22
-
23
- An example of the `data` structure can be found in the 'Controls' section on the 'Canvas' tab, where you can customise the data being fed to the Breadcrumb component.
24
-
25
- ## View Component
26
- Please click the 'Canvas' tab for a better viewing experience, where you can update the props and review at the different breakpoints by clicking the preview icon and selecting from our list of pre-defined breakpoints (XS, SM, MD, LG and XL).
27
-
28
- export const BreadcrumbStory = ({ data }) => (
29
- <TrackingContextProvider
30
- analyticsStream={analyticsStream}
31
- context={{
32
- component: 'breadcrumb',
33
- attrs: {
34
- }
35
- }}
36
- >
37
- <Breadcrumb {...{ data }} />
38
- </TrackingContextProvider>
39
- );
40
-
41
- <Story name="Breadcrumb" args={{ data: breadcrumbItems }}>
42
- {BreadcrumbStory.bind({})}
43
- </Story>
44
-
45
- <Story name="Breadcrumb - tracking demo" args={{ data: breadcrumbItemsForTrackingDemo }}>
46
- {BreadcrumbStory.bind({})}
47
- </Story>
@@ -1,27 +0,0 @@
1
- {
2
- "breadcrumbItems": [
3
- {
4
- "title": "Sport",
5
- "url": "/sport"
6
- },
7
- {
8
- "title": "Tennis",
9
- "url": "/sport/tennis"
10
- },
11
- {
12
- "title": "Australian Open",
13
- "url": "/australian open"
14
- }
15
- ],
16
- "breadcrumbItemsForTrackingDemo" : [
17
- {
18
- "title": "Sport"
19
- },
20
- {
21
- "title": "Tennis"
22
- },
23
- {
24
- "title": "Australian Open"
25
- }
26
- ]
27
- }