@iamproperty/components 7.8.2--beta2 → 7.8.2--beta4

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 (206) hide show
  1. package/assets/css/components/actionbar.component.css +1 -1
  2. package/assets/css/components/actionbar.component.css.map +1 -1
  3. package/assets/css/components/address-lookup.component.css +1 -1
  4. package/assets/css/components/address-lookup.component.css.map +1 -1
  5. package/assets/css/components/advanced-select.component.css +1 -1
  6. package/assets/css/components/advanced-select.component.css.map +1 -1
  7. package/assets/css/components/applied-filters.css +1 -1
  8. package/assets/css/components/applied-filters.css.map +1 -1
  9. package/assets/css/components/banner.preload.css +1 -0
  10. package/assets/css/components/banner.preload.css.map +1 -0
  11. package/assets/css/components/calendar.component.css +1 -1
  12. package/assets/css/components/calendar.component.css.map +1 -1
  13. package/assets/css/components/card.component.css +1 -1
  14. package/assets/css/components/card.component.css.map +1 -1
  15. package/assets/css/components/card.module.css +1 -1
  16. package/assets/css/components/card.module.css.map +1 -1
  17. package/assets/css/components/card.preload.css +1 -0
  18. package/assets/css/components/card.preload.css.map +1 -0
  19. package/assets/css/components/carousel.component.css +1 -1
  20. package/assets/css/components/carousel.component.css.map +1 -1
  21. package/assets/css/components/carousel.config.css +1 -1
  22. package/assets/css/components/carousel.config.css.map +1 -1
  23. package/assets/css/components/config.component.css +1 -1
  24. package/assets/css/components/config.component.css.map +1 -1
  25. package/assets/css/components/content.component.css +1 -1
  26. package/assets/css/components/content.component.css.map +1 -1
  27. package/assets/css/components/fileupload.css +1 -1
  28. package/assets/css/components/fileupload.css.map +1 -1
  29. package/assets/css/components/filter-card.component.css +1 -1
  30. package/assets/css/components/filter-card.component.css.map +1 -1
  31. package/assets/css/components/multiselect.css +1 -1
  32. package/assets/css/components/multiselect.css.map +1 -1
  33. package/assets/css/components/nav.component.css +1 -1
  34. package/assets/css/components/nav.component.css.map +1 -1
  35. package/assets/css/components/pagination.css +1 -1
  36. package/assets/css/components/pagination.css.map +1 -1
  37. package/assets/css/components/record-card.component.css +1 -1
  38. package/assets/css/components/record-card.component.css.map +1 -1
  39. package/assets/css/components/search.component.css +1 -1
  40. package/assets/css/components/search.component.css.map +1 -1
  41. package/assets/css/components/skeleton.global.css +1 -1
  42. package/assets/css/components/skeleton.global.css.map +1 -1
  43. package/assets/css/components/slider.css +1 -1
  44. package/assets/css/components/slider.css.map +1 -1
  45. package/assets/css/components/split-button.component.css +1 -1
  46. package/assets/css/components/split-button.component.css.map +1 -1
  47. package/assets/css/components/std-nav-standalone.component.css +1 -1
  48. package/assets/css/components/std-nav-standalone.component.css.map +1 -1
  49. package/assets/css/components/tabs.component.css +1 -1
  50. package/assets/css/components/tabs.component.css.map +1 -1
  51. package/assets/css/components/tag.component.css +1 -1
  52. package/assets/css/components/tag.component.css.map +1 -1
  53. package/assets/css/components/video-card.component.css +1 -1
  54. package/assets/css/components/video-card.component.css.map +1 -1
  55. package/assets/css/core.min.css +1 -1
  56. package/assets/css/core.min.css.map +1 -1
  57. package/assets/css/elements/badge-tag.css +1 -1
  58. package/assets/css/elements/badge-tag.css.map +1 -1
  59. package/assets/css/elements/dropdown.css +1 -1
  60. package/assets/css/elements/dropdown.css.map +1 -1
  61. package/assets/css/elements/forms.css +1 -1
  62. package/assets/css/elements/forms.css.map +1 -1
  63. package/assets/css/elements/links--global.css +1 -1
  64. package/assets/css/elements/links--global.css.map +1 -1
  65. package/assets/css/elements/links.css +1 -1
  66. package/assets/css/elements/links.css.map +1 -1
  67. package/assets/css/style.min.css +1 -1
  68. package/assets/css/style.min.css.map +1 -1
  69. package/assets/js/components/accordion/accordion.component.min.js +1 -1
  70. package/assets/js/components/actionbar/actionbar.component.min.js +2 -2
  71. package/assets/js/components/address-lookup/address-lookup.component.min.js +4 -4
  72. package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -1
  73. package/assets/js/components/advanced-select/advanced-select.component.min.js +2 -2
  74. package/assets/js/components/applied-filters/applied-filters.component.min.js +2 -2
  75. package/assets/js/components/banner/banner.component.min.js +1 -1
  76. package/assets/js/components/barchart/barchart.component.min.js +1 -1
  77. package/assets/js/components/bento-grid/bento-grid.component.min.js +1 -1
  78. package/assets/js/components/bone/bone.component.min.js +1 -1
  79. package/assets/js/components/button/button.component.min.js +1 -1
  80. package/assets/js/components/calendar/calendar.component.min.js +2 -2
  81. package/assets/js/components/card/card.component.js +114 -125
  82. package/assets/js/components/card/card.component.min.js +7 -7
  83. package/assets/js/components/card/card.component.min.js.map +1 -1
  84. package/assets/js/components/carousel/carousel.component.js +83 -29
  85. package/assets/js/components/carousel/carousel.component.min.js +16 -11
  86. package/assets/js/components/carousel/carousel.component.min.js.map +1 -1
  87. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +1 -1
  88. package/assets/js/components/config/config.component.min.js +7 -7
  89. package/assets/js/components/config/config.component.min.js.map +1 -1
  90. package/assets/js/components/content/content.component.js +28 -69
  91. package/assets/js/components/content/content.component.min.js +4 -4
  92. package/assets/js/components/content/content.component.min.js.map +1 -1
  93. package/assets/js/components/darkmode/darkmode.component.min.js +1 -1
  94. package/assets/js/components/doughnutchart/doughnutchart.component.min.js +1 -1
  95. package/assets/js/components/fileupload/fileupload.component.min.js +2 -2
  96. package/assets/js/components/filter-card/filter-card.component.min.js +5 -5
  97. package/assets/js/components/filter-card/filter-card.component.min.js.map +1 -1
  98. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  99. package/assets/js/components/form/form.component.min.js +1 -1
  100. package/assets/js/components/header/header.component.min.js +1 -1
  101. package/assets/js/components/inline-edit/inline-edit.component.min.js +1 -1
  102. package/assets/js/components/input/input.component.min.js +1 -1
  103. package/assets/js/components/input-range/input-range.component.min.js +1 -1
  104. package/assets/js/components/marketing/marketing.component.min.js +1 -1
  105. package/assets/js/components/menu/menu.component.min.js +1 -1
  106. package/assets/js/components/milestone/milestone.component.min.js +1 -1
  107. package/assets/js/components/milestone-group/milestone-group.component.min.js +1 -1
  108. package/assets/js/components/modal/modal.component.min.js +1 -1
  109. package/assets/js/components/multi-step/multi-step.component.min.js +1 -1
  110. package/assets/js/components/multi-step-modal/multi-step-modal.component.min.js +1 -1
  111. package/assets/js/components/multiselect/multiselect.component.min.js +4 -4
  112. package/assets/js/components/multiselect/multiselect.component.min.js.map +1 -1
  113. package/assets/js/components/nav/nav.component.min.js +2 -2
  114. package/assets/js/components/notification/notification.component.min.js +1 -1
  115. package/assets/js/components/pagination/pagination.component.min.js +5 -5
  116. package/assets/js/components/password/password.component.min.js +1 -1
  117. package/assets/js/components/popover/popover.component.min.js +1 -1
  118. package/assets/js/components/rank/rank.component.min.js +1 -1
  119. package/assets/js/components/rankings/rankings.component.min.js +1 -1
  120. package/assets/js/components/rating/rating.component.min.js +1 -1
  121. package/assets/js/components/record-card/record-card.component.min.js +6 -6
  122. package/assets/js/components/record-card/record-card.component.min.js.map +1 -1
  123. package/assets/js/components/search/search.component.js +234 -186
  124. package/assets/js/components/search/search.component.min.js +12 -7
  125. package/assets/js/components/search/search.component.min.js.map +1 -1
  126. package/assets/js/components/skeleton/skeleton.component.min.js +1 -1
  127. package/assets/js/components/slider/slider.component.min.js +2 -2
  128. package/assets/js/components/split-button/split-button.component.min.js +2 -2
  129. package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js +5 -5
  130. package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js.map +1 -1
  131. package/assets/js/components/std-nav/std-nav.component.js +10 -9
  132. package/assets/js/components/std-nav/std-nav.component.min.js +9 -12
  133. package/assets/js/components/std-nav/std-nav.component.min.js.map +1 -1
  134. package/assets/js/components/std-nav-standalone/std-nav-standalone.component.min.js +5 -5
  135. package/assets/js/components/std-nav-standalone/std-nav-standalone.component.min.js.map +1 -1
  136. package/assets/js/components/table/table.component.min.js +1 -1
  137. package/assets/js/components/table-ajax/table-ajax.component.min.js +1 -1
  138. package/assets/js/components/table-basic/table-basic.component.min.js +1 -1
  139. package/assets/js/components/table-no-submit/table-no-submit.component.min.js +1 -1
  140. package/assets/js/components/table-submit/table-submit.component.min.js +1 -1
  141. package/assets/js/components/tabs/tabs.component.min.js +4 -4
  142. package/assets/js/components/tag/tag.component.min.js +3 -3
  143. package/assets/js/components/tag/tag.component.min.js.map +1 -1
  144. package/assets/js/components/tooltip/tooltip.component.min.js +1 -1
  145. package/assets/js/components/video/video.component.min.js +1 -1
  146. package/assets/js/components/video-card/video-card.component.min.js +9 -9
  147. package/assets/js/components/video-card/video-card.component.min.js.map +1 -1
  148. package/assets/js/components/video-modal/video-modal.component.min.js +1 -1
  149. package/assets/js/components/word-count/word-count.component.min.js +1 -1
  150. package/assets/js/modules/card.module.js +12 -11
  151. package/assets/js/modules/content.js +40 -8
  152. package/assets/js/modules/content.test.js +62 -12
  153. package/assets/js/modules/data-layer.js +7 -6
  154. package/assets/js/modules/dropdown.js +0 -1
  155. package/assets/js/modules/nav.js +10 -3
  156. package/assets/js/modules/search.js +153 -0
  157. package/assets/js/modules/search.test.js +125 -0
  158. package/assets/js/modules/tabs.test.js +64 -12
  159. package/assets/js/modules/testimonial.test.js +44 -6
  160. package/assets/js/modules/videos.test.js +61 -13
  161. package/assets/js/scripts.bundle.js +3 -3
  162. package/assets/js/scripts.bundle.js.map +1 -1
  163. package/assets/js/scripts.bundle.min.js +2 -2
  164. package/assets/js/scripts.bundle.min.js.map +1 -1
  165. package/assets/sass/_components.scss +2 -63
  166. package/assets/sass/components/banner.preload.scss +26 -0
  167. package/assets/sass/components/card.component.scss +1 -7
  168. package/assets/sass/components/card.module.scss +6 -6
  169. package/assets/sass/components/card.preload.scss +80 -0
  170. package/assets/sass/components/carousel.component.scss +165 -0
  171. package/assets/sass/components/carousel.config.scss +85 -249
  172. package/assets/sass/components/content.component.scss +0 -7
  173. package/assets/sass/components/nav.component.scss +2 -1
  174. package/assets/sass/components/search.component.scss +89 -7
  175. package/assets/sass/components/skeleton.global.scss +4 -0
  176. package/assets/sass/elements/badge-tag.css +1 -1
  177. package/assets/sass/elements/dropdown.css +2 -0
  178. package/assets/sass/elements/forms.scss +0 -27
  179. package/assets/sass/elements/links--global.scss +40 -2
  180. package/assets/sass/foundations/root.scss +0 -1
  181. package/assets/sass/utilities/border.css +1 -1
  182. package/assets/sass/utilities/js-display.css +2 -3
  183. package/assets/ts/components/card/card.component.ts +72 -62
  184. package/assets/ts/components/carousel/carousel.component.ts +84 -19
  185. package/assets/ts/components/content/content.component.ts +36 -100
  186. package/assets/ts/components/search/search.component.ts +257 -185
  187. package/assets/ts/components/std-nav/std-nav.component.ts +17 -16
  188. package/assets/ts/html.d.ts +6 -0
  189. package/assets/ts/modules/card.module.ts +20 -12
  190. package/assets/ts/modules/content.test.ts +84 -12
  191. package/assets/ts/modules/content.ts +56 -9
  192. package/assets/ts/modules/data-layer.ts +7 -11
  193. package/assets/ts/modules/dropdown.ts +0 -2
  194. package/assets/ts/modules/nav.ts +12 -3
  195. package/assets/ts/modules/search.test.ts +142 -0
  196. package/assets/ts/modules/search.ts +206 -0
  197. package/assets/ts/modules/tabs.test.ts +79 -12
  198. package/assets/ts/modules/testimonial.test.ts +45 -6
  199. package/assets/ts/modules/videos.test.ts +74 -14
  200. package/dist/components.es.js +25 -25
  201. package/dist/components.umd.js +164 -157
  202. package/package.json +1 -1
  203. package/assets/js/modules/carousel.js +0 -214
  204. package/assets/js/modules/carousel.test.js +0 -18
  205. package/assets/ts/modules/carousel.test.ts +0 -27
  206. package/assets/ts/modules/carousel.ts +0 -301
@@ -1,27 +1,94 @@
1
1
  import { describe, expect, it } from './test.ts';
2
2
  import { createElement, installTestDom } from './test-dom.ts';
3
3
  import { append } from './test-utils.ts';
4
- import { openFirstTab, toggleTab } from './tabs.ts';
4
+ import { createTabsLinks, openFirstTab, setTabsEventHandlers, toggleTab } from './tabs.ts';
5
5
 
6
- installTestDom();
6
+ const { window } = installTestDom();
7
+
8
+ const createDetail = (id, title, isOpen = false) => {
9
+ const detail = createElement('details', { id });
10
+ const summary = createElement('summary', {}, title);
11
+
12
+ if (isOpen) detail.setAttribute('open', 'true');
13
+
14
+ append(detail, summary, createElement('p', {}, `${title} content`));
15
+
16
+ return detail;
17
+ };
7
18
 
8
19
  describe('Tabs module', () => {
9
- it('toggles tabs and opens the first tab by default', () => {
20
+ it('creates tab buttons and dropdown options from direct details', () => {
21
+ const tabs = createElement('iam-tabs', { class: 'tabs--toggle-tags' });
22
+ const first = createDetail('first', 'First tab', true);
23
+ const second = createDetail('second', 'Second tab');
24
+ append(tabs, first, second);
25
+
26
+ createTabsLinks(tabs);
27
+
28
+ const buttons = tabs.querySelectorAll('.tabs__links > button');
29
+ const options = tabs.querySelectorAll('.tabs__dropdown > option');
30
+
31
+ expect(buttons.length === 2);
32
+ expect(buttons[0].textContent === 'First tab');
33
+ expect(buttons[0].getAttribute('aria-pressed') === 'true');
34
+ expect(buttons[0].classList.contains('tag'));
35
+ expect(buttons[0].getAttribute('data-id') === 'first');
36
+ expect(first.getAttribute('tabindex') === '-1');
37
+ expect(first.querySelector('summary').classList.contains('visually-hidden'));
38
+ expect(options[0].value === 'first-tab');
39
+ });
40
+
41
+ it('toggles matching detail panels and records tab open events', () => {
42
+ window.dataLayer = [];
43
+ const tabs = createElement('iam-tabs');
44
+ const first = createDetail('first', 'First tab', true);
45
+ const second = createDetail('second', 'Second tab');
46
+ const linksWrapper = createElement('div');
47
+ const links = createElement('div', { class: 'tabs__links' });
48
+ const dropdownWrapper = createElement('div');
49
+ const dropdown = createElement('select', { class: 'tabs__dropdown' });
50
+ append(links, createElement('button', { ariaPressed: 'true', dataIndex: '0' }, 'First tab'));
51
+ append(links, createElement('button', { dataIndex: '1' }, 'Second tab'));
52
+ append(linksWrapper, links);
53
+ append(dropdownWrapper, dropdown);
54
+ append(tabs, linksWrapper, dropdownWrapper, first, second);
55
+
56
+ setTabsEventHandlers(tabs);
57
+
58
+ const buttons = tabs.querySelectorAll('.tabs__links > button');
59
+ buttons[1].click();
60
+
61
+ expect(!first.hasAttribute('open'));
62
+ expect(second.getAttribute('open') === 'true');
63
+ expect(buttons[1].getAttribute('aria-pressed') === 'true');
64
+ expect(window.dataLayer[0].event === 'openTab');
65
+ expect(window.dataLayer[0].tabTitle === 'Second tab');
66
+ });
67
+
68
+ it('opens the tab matching the current location hash', () => {
10
69
  const tabs = createElement('iam-tabs');
11
- const first = createElement('details');
12
- const second = createElement('details');
13
- const buttonOne = createElement('button', { dataIndex: '0' });
14
- const buttonTwo = createElement('button', { dataIndex: '1' });
15
70
  tabs.shadowRoot = createElement('shadow-root');
16
71
  const links = createElement('div', { class: 'tabs__links' });
17
- append(links, buttonOne, buttonTwo);
72
+ append(links, createElement('button', { dataId: 'first' }), createElement('button', { dataId: 'second' }));
18
73
  append(tabs.shadowRoot, links);
19
- append(tabs, first, second);
74
+ append(tabs, createDetail('first', 'First tab'), createDetail('second', 'Second tab'));
75
+ window.location.hash = '#second';
20
76
 
21
- toggleTab([first, second], buttonTwo);
22
77
  openFirstTab(tabs);
23
78
 
24
- expect(!first.hasAttribute('open'));
25
- expect(second.hasAttribute('open'));
79
+ expect(tabs.querySelector('details[id="second"]').getAttribute('open') === 'true');
80
+ expect(tabs.shadowRoot.querySelector('[data-id="second"]').getAttribute('aria-pressed') === 'true');
81
+
82
+ window.location.hash = '';
83
+ });
84
+
85
+ it('toggles detail panels directly from a selected tab button', () => {
86
+ const details = [createDetail('first', 'First tab'), createDetail('second', 'Second tab')];
87
+ const button = createElement('button', { dataIndex: '1' });
88
+
89
+ toggleTab(details, button);
90
+
91
+ expect(!details[0].hasAttribute('open'));
92
+ expect(details[1].getAttribute('open') === 'true');
26
93
  });
27
94
  });
@@ -5,13 +5,52 @@ import testimonial from './testimonial.ts';
5
5
 
6
6
  installTestDom();
7
7
 
8
+ const createTestimonial = (imageCount) => {
9
+ const component = createElement('section');
10
+ const images = createElement('div', { class: 'testimonial__images' });
11
+ const previousButton = createElement('button', { class: 'btn-prev' });
12
+ const nextButton = createElement('button', { class: 'btn-next' });
13
+
14
+ for (let index = 0; index < imageCount; index++) {
15
+ append(images, createElement('img', { alt: `Person ${index + 1}` }));
16
+ }
17
+
18
+ append(component, images, previousButton, nextButton);
19
+
20
+ return { component, images, nextButton, previousButton };
21
+ };
22
+
23
+ const dispatchClickFrom = (component, target) => {
24
+ const event = new Event('click', { bubbles: true, cancelable: true });
25
+ Object.defineProperty(event, 'target', { value: target });
26
+ component.dispatchEvent(event);
27
+ };
28
+
8
29
  describe('Testimonial module', () => {
9
- it('does not wire testimonial controls for a single image', () => {
10
- const testimonialElement = createElement('div');
11
- const images = createElement('div', { class: 'testimonial__images' });
12
- append(images, createElement('img'));
13
- append(testimonialElement, images);
30
+ it('does not enable carousel behaviour for a single testimonial', () => {
31
+ const { component } = createTestimonial(1);
32
+
33
+ const result = testimonial(component);
34
+
35
+ expect(result === false);
36
+ expect(!component.classList.contains('testimonial--multi'));
37
+ });
38
+
39
+ it('enables multi-testimonial controls and updates state after scrolling', async () => {
40
+ const { component, images, nextButton, previousButton } = createTestimonial(2);
41
+ images.scrollWidth = 400;
42
+ images.scrollHeight = 100;
43
+ nextButton.setAttribute('data-go', '2');
44
+
45
+ testimonial(component);
46
+ dispatchClickFrom(component, nextButton);
47
+
48
+ await new Promise((resolve) => setTimeout(resolve, 350));
14
49
 
15
- expect(testimonial(testimonialElement) === false);
50
+ expect(component.classList.contains('testimonial--multi'));
51
+ expect(images.scrollLeft === 200);
52
+ expect(component.getAttribute('data-show') === '2');
53
+ expect(previousButton.getAttribute('data-go') === '1');
54
+ expect(nextButton.hasAttribute('disabled'));
16
55
  });
17
56
  });
@@ -1,33 +1,93 @@
1
- /* eslint-disable */
2
-
3
1
  import { describe, expect, it } from './test.ts';
4
2
  import { createElement, installTestDom } from './test-dom.ts';
5
- import { append } from './test-utils.ts';
6
- import { createYoutTubeVideo, openVimeoVideo } from './videos.ts';
3
+ import { append, silenceConsole } from './test-utils.ts';
4
+ import { createYoutTubeVideo, loadYouTubeScripts, openVimeoVideo, videoHTML } from './videos.ts';
5
+
6
+ const { document, window } = installTestDom();
7
+
8
+ if (typeof globalThis.CustomEvent === 'undefined') {
9
+ globalThis.CustomEvent = class extends Event {
10
+ detail;
7
11
 
8
- const { window } = installTestDom();
12
+ constructor(type, options = {}) {
13
+ super(type, options);
14
+ this.detail = options.detail;
15
+ }
16
+ };
17
+ }
9
18
 
10
19
  describe('Videos module', () => {
11
- it('reuses existing YouTube players and renders Vimeo embeds', async () => {
20
+ it('provides the expected base video markup', () => {
21
+ expect(videoHTML.includes('<slot name="video"></slot>'));
22
+ expect(videoHTML.includes('fa-play'));
23
+ });
24
+
25
+ it('loads the YouTube iframe script once the favicon probe succeeds', async () => {
26
+ append(document.body, createElement('script'));
27
+
28
+ await loadYouTubeScripts();
29
+
30
+ expect(document.body.classList.contains('youtubeLoaded'));
31
+ expect(document.getElementsByTagName('script').length === 2);
32
+ });
33
+
34
+ it('reuses an existing YouTube player instead of creating another one', async () => {
12
35
  let played = false;
13
36
  window.player = {
14
- abc123: {
37
+ existing: {
15
38
  pauseVideo: () => {},
16
39
  playVideo: () => {
17
40
  played = true;
18
41
  },
19
42
  },
20
43
  };
44
+
45
+ const result = await createYoutTubeVideo(createElement('div'), 'existing');
46
+
47
+ expect(result === false);
48
+ expect(played);
49
+ });
50
+
51
+ it('creates a YouTube player and marks the embed ready when playback starts', async () => {
52
+ const embed = createElement('div', { id: 'youtube-alpha' });
53
+ append(document.body, embed);
54
+ window.player = undefined;
55
+ globalThis.YT = {
56
+ PlayerState: { PLAYING: 1 },
57
+ Player: class {
58
+ constructor(id, config) {
59
+ this.id = id;
60
+ this.config = config;
61
+ setTimeout(() => {
62
+ config.events.onReady({ target: { playVideo: () => {} } });
63
+ config.events.onStateChange({ data: 1 });
64
+ }, 0);
65
+ }
66
+ },
67
+ };
68
+
69
+ await silenceConsole(() => createYoutTubeVideo(embed, 'youtube-alpha'));
70
+ await new Promise((resolve) => setTimeout(resolve, 10));
71
+
72
+ expect(window.player['youtube-alpha']);
73
+ expect(embed.classList.contains('player-ready'));
74
+ });
75
+
76
+ it('opens a Vimeo iframe and dispatches video analytics details', async () => {
21
77
  window.dataLayer = [];
22
- const embed = createElement('div', { id: 'abc123' });
23
- const youtubeResult = await createYoutTubeVideo(embed, 'abc123');
78
+ const component = createElement('iam-video', { dataVimeo: '12345' });
79
+ const embed = createElement('div', { class: 'embed' });
80
+ let selectedDetail;
81
+ component.addEventListener('play-video', (event) => {
82
+ selectedDetail = event.detail;
83
+ });
84
+ append(component, embed);
24
85
 
25
- const component = createElement('iam-video', { dataVimeo: '98765' });
26
- append(component, createElement('div', { class: 'embed' }));
27
86
  await openVimeoVideo(component);
28
87
 
29
- expect(youtubeResult === false);
30
- expect(played);
31
- expect(component.querySelector('.embed').innerHTML.includes('player.vimeo.com/video/98765'));
88
+ expect(embed.innerHTML.includes('https://player.vimeo.com/video/12345?autoplay=1'));
89
+ expect(selectedDetail['Video Type'] === 'Vimeo');
90
+ expect(selectedDetail.ID === '12345');
91
+ expect(window.dataLayer[0].ID === '12345');
32
92
  });
33
93
  });