@iamproperty/components 6.0.0 → 6.1.0--beta

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 (207) hide show
  1. package/assets/bootstrap/README.md +8 -7
  2. package/assets/bootstrap/js/index.esm.js +19 -0
  3. package/assets/bootstrap/js/index.umd.js +34 -0
  4. package/assets/bootstrap/js/src/alert.js +1 -1
  5. package/assets/bootstrap/js/src/base-component.js +2 -2
  6. package/assets/bootstrap/js/src/button.js +1 -1
  7. package/assets/bootstrap/js/src/carousel.js +1 -1
  8. package/assets/bootstrap/js/src/collapse.js +1 -1
  9. package/assets/bootstrap/js/src/dom/data.js +1 -1
  10. package/assets/bootstrap/js/src/dom/event-handler.js +1 -1
  11. package/assets/bootstrap/js/src/dom/manipulator.js +1 -1
  12. package/assets/bootstrap/js/src/dom/selector-engine.js +1 -1
  13. package/assets/bootstrap/js/src/dropdown.js +3 -12
  14. package/assets/bootstrap/js/src/modal.js +13 -17
  15. package/assets/bootstrap/js/src/offcanvas.js +1 -1
  16. package/assets/bootstrap/js/src/popover.js +1 -1
  17. package/assets/bootstrap/js/src/scrollspy.js +10 -14
  18. package/assets/bootstrap/js/src/tab.js +4 -2
  19. package/assets/bootstrap/js/src/toast.js +4 -9
  20. package/assets/bootstrap/js/src/tooltip.js +50 -32
  21. package/assets/bootstrap/js/src/util/backdrop.js +1 -1
  22. package/assets/bootstrap/js/src/util/component-functions.js +1 -1
  23. package/assets/bootstrap/js/src/util/config.js +1 -1
  24. package/assets/bootstrap/js/src/util/focustrap.js +1 -1
  25. package/assets/bootstrap/js/src/util/index.js +1 -1
  26. package/assets/bootstrap/js/src/util/sanitizer.js +1 -1
  27. package/assets/bootstrap/js/src/util/scrollbar.js +1 -1
  28. package/assets/bootstrap/js/src/util/swipe.js +1 -1
  29. package/assets/bootstrap/js/src/util/template-factory.js +1 -1
  30. package/assets/bootstrap/package.json +27 -28
  31. package/assets/bootstrap/scss/_accordion.scss +4 -7
  32. package/assets/bootstrap/scss/_button-group.scss +1 -1
  33. package/assets/bootstrap/scss/_buttons.scss +7 -28
  34. package/assets/bootstrap/scss/_carousel.scss +3 -0
  35. package/assets/bootstrap/scss/_dropdown.scss +1 -2
  36. package/assets/bootstrap/scss/_functions.scss +2 -2
  37. package/assets/bootstrap/scss/_list-group.scss +5 -6
  38. package/assets/bootstrap/scss/_modal.scss +1 -1
  39. package/assets/bootstrap/scss/_nav.scss +2 -2
  40. package/assets/bootstrap/scss/_navbar.scss +0 -2
  41. package/assets/bootstrap/scss/_offcanvas.scss +4 -5
  42. package/assets/bootstrap/scss/_pagination.scss +1 -1
  43. package/assets/bootstrap/scss/_popover.scss +5 -5
  44. package/assets/bootstrap/scss/_toasts.scss +2 -5
  45. package/assets/bootstrap/scss/_variables-dark.scss +87 -0
  46. package/assets/bootstrap/scss/_variables.scss +17 -18
  47. package/assets/bootstrap/scss/bootstrap-utilities.scss +0 -3
  48. package/assets/bootstrap/scss/forms/_floating-labels.scss +0 -1
  49. package/assets/bootstrap/scss/forms/_input-group.scss +4 -7
  50. package/assets/bootstrap/scss/helpers/_focus-ring.scss +5 -0
  51. package/assets/bootstrap/scss/helpers/_icon-link.scss +25 -0
  52. package/assets/bootstrap/scss/mixins/_banner.scss +2 -2
  53. package/assets/bootstrap/scss/mixins/_color-mode.scss +21 -0
  54. package/assets/bootstrap/scss/mixins/_forms.scss +10 -10
  55. package/assets/bootstrap/scss/mixins/_table-variants.scss +2 -2
  56. package/assets/bootstrap/scss/mixins/_utilities.scss +1 -1
  57. package/assets/css/components/barchart.component.css +1 -1
  58. package/assets/css/components/barchart.component.css.map +1 -1
  59. package/assets/css/components/card.component.css +1 -0
  60. package/assets/css/components/card.component.css.map +1 -0
  61. package/assets/css/components/card.module.css +1 -0
  62. package/assets/css/components/card.module.css.map +1 -0
  63. package/assets/css/components/charts.config.css +1 -1
  64. package/assets/css/components/charts.config.css.map +1 -1
  65. package/assets/css/components/charts.css +1 -1
  66. package/assets/css/components/charts.css.map +1 -1
  67. package/assets/css/components/charts.module.css +1 -1
  68. package/assets/css/components/charts.module.css.map +1 -1
  69. package/assets/css/components/filter-card.component.css +1 -0
  70. package/assets/css/components/filter-card.component.css.map +1 -0
  71. package/assets/css/components/multiselect.preload.css +1 -1
  72. package/assets/css/components/multiselect.preload.css.map +1 -1
  73. package/assets/css/components/record-card.component.css +1 -0
  74. package/assets/css/components/record-card.component.css.map +1 -0
  75. package/assets/css/components/timeline.css +1 -1
  76. package/assets/css/components/timeline.css.map +1 -1
  77. package/assets/css/components/video-card.component.css +1 -0
  78. package/assets/css/components/video-card.component.css.map +1 -0
  79. package/assets/css/core.min.css +1 -1
  80. package/assets/css/core.min.css.map +1 -1
  81. package/assets/css/style.min.css +1 -1
  82. package/assets/css/style.min.css.map +1 -1
  83. package/assets/js/components/accordion/accordion.component.min.js +1 -1
  84. package/assets/js/components/actionbar/actionbar.component.min.js +5 -5
  85. package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
  86. package/assets/js/components/address-lookup/address-lookup.component.min.js +1 -1
  87. package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -1
  88. package/assets/js/components/applied-filters/applied-filters.component.min.js +1 -1
  89. package/assets/js/components/applied-filters/applied-filters.component.min.js.map +1 -1
  90. package/assets/js/components/barchart/barchart.component.js +2 -0
  91. package/assets/js/components/barchart/barchart.component.min.js +4 -2
  92. package/assets/js/components/barchart/barchart.component.min.js.map +1 -1
  93. package/assets/js/components/card/card.component.js +92 -154
  94. package/assets/js/components/card/card.component.min.js +26 -31
  95. package/assets/js/components/card/card.component.min.js.map +1 -1
  96. package/assets/js/components/carousel/carousel.component.min.js +1 -1
  97. package/assets/js/components/carousel/carousel.component.min.js.map +1 -1
  98. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +1 -1
  99. package/assets/js/components/collapsible-side/collapsible-side.component.min.js.map +1 -1
  100. package/assets/js/components/fileupload/fileupload.component.min.js +1 -1
  101. package/assets/js/components/fileupload/fileupload.component.min.js.map +1 -1
  102. package/assets/js/components/filter-card/filter-card.component.js +71 -0
  103. package/assets/js/components/filter-card/filter-card.component.min.js +27 -0
  104. package/assets/js/components/filter-card/filter-card.component.min.js.map +1 -0
  105. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  106. package/assets/js/components/header/header.component.min.js +1 -1
  107. package/assets/js/components/header/header.component.min.js.map +1 -1
  108. package/assets/js/components/inline-edit/inline-edit.component.min.js +1 -1
  109. package/assets/js/components/inline-edit/inline-edit.component.min.js.map +1 -1
  110. package/assets/js/components/marketing/marketing.component.min.js +1 -1
  111. package/assets/js/components/marketing/marketing.component.min.js.map +1 -1
  112. package/assets/js/components/multiselect/multiselect.component.min.js +1 -1
  113. package/assets/js/components/multiselect/multiselect.component.min.js.map +1 -1
  114. package/assets/js/components/nav/nav.component.min.js +1 -1
  115. package/assets/js/components/nav/nav.component.min.js.map +1 -1
  116. package/assets/js/components/notification/notification.component.min.js +1 -1
  117. package/assets/js/components/notification/notification.component.min.js.map +1 -1
  118. package/assets/js/components/pagination/pagination.component.min.js +1 -1
  119. package/assets/js/components/pagination/pagination.component.min.js.map +1 -1
  120. package/assets/js/components/record-card/record-card.component.js +69 -0
  121. package/assets/js/components/record-card/record-card.component.min.js +27 -0
  122. package/assets/js/components/record-card/record-card.component.min.js.map +1 -0
  123. package/assets/js/components/search/search.component.min.js +1 -1
  124. package/assets/js/components/slider/slider.component.min.js +1 -1
  125. package/assets/js/components/slider/slider.component.min.js.map +1 -1
  126. package/assets/js/components/table/table.component.min.js +2 -2
  127. package/assets/js/components/table/table.component.min.js.map +1 -1
  128. package/assets/js/components/tabs/tabs.component.min.js +1 -1
  129. package/assets/js/components/tabs/tabs.component.min.js.map +1 -1
  130. package/assets/js/components/video-card/video-card.component.js +176 -0
  131. package/assets/js/components/video-card/video-card.component.min.js +30 -0
  132. package/assets/js/components/video-card/video-card.component.min.js.map +1 -0
  133. package/assets/js/components.bundle.js +5 -0
  134. package/assets/js/components.bundle.js.map +1 -0
  135. package/assets/js/components.js +30 -0
  136. package/assets/js/modules/card.module.js +33 -0
  137. package/assets/js/modules/chart.js +2 -2
  138. package/assets/js/modules/dialogs.js +0 -6
  139. package/assets/js/modules/table.js +1 -1
  140. package/assets/js/scripts.bundle.js +3 -194
  141. package/assets/js/scripts.bundle.js.map +1 -1
  142. package/assets/js/scripts.bundle.min.js +2 -2
  143. package/assets/js/scripts.bundle.min.js.map +1 -1
  144. package/assets/js/scripts.js +17 -0
  145. package/assets/js/tests/filterlist.spec.js +1 -1
  146. package/assets/sass/_components.scss +81 -1
  147. package/assets/sass/_corefiles.scss +4 -10
  148. package/assets/sass/_elements.scss +2 -0
  149. package/assets/sass/components/card.component.scss +229 -0
  150. package/assets/sass/components/card.module.scss +154 -0
  151. package/assets/sass/components/charts.config.scss +3 -0
  152. package/assets/sass/components/charts.module.scss +5 -3
  153. package/assets/sass/components/filter-card.component.scss +106 -0
  154. package/assets/sass/components/multiselect.preload.scss +7 -0
  155. package/assets/sass/components/record-card.component.scss +204 -0
  156. package/assets/sass/components/video-card.component.scss +80 -0
  157. package/assets/sass/components.reset.scss +5 -43
  158. package/assets/sass/elements/badge-tag.scss +5 -1
  159. package/assets/sass/elements/buttons.scss +3 -0
  160. package/assets/sass/elements/dialog.scss +2 -744
  161. package/assets/sass/elements/forms.scss +5 -0
  162. package/assets/sass/elements/media.scss +0 -38
  163. package/assets/sass/elements/modal.scss +553 -0
  164. package/assets/sass/elements/popover.scss +207 -0
  165. package/assets/sass/foundations/reboot.scss +2 -2
  166. package/assets/sass/foundations/root.scss +0 -1
  167. package/assets/ts/components/barchart/barchart.component.ts +2 -0
  168. package/assets/ts/components/card/card.component.ts +94 -192
  169. package/assets/ts/components/filter-card/filter-card.component.ts +81 -0
  170. package/assets/ts/components/record-card/record-card.component.ts +82 -0
  171. package/assets/ts/components/video-card/video-card.component.ts +227 -0
  172. package/assets/ts/components.ts +38 -0
  173. package/assets/ts/modules/card.module.ts +43 -0
  174. package/assets/ts/modules/dialogs.ts +0 -8
  175. package/assets/ts/modules/table.ts +1 -1
  176. package/assets/ts/scripts.ts +22 -0
  177. package/assets/ts/tests/filterlist.spec.ts +1 -1
  178. package/dist/components.es.js +201 -201
  179. package/dist/components.umd.js +76 -81
  180. package/package.json +8 -7
  181. package/src/components/BarChart/BarChart.vue +2 -2
  182. package/src/components/FilterCard/FilterCard.vue +25 -0
  183. package/src/components/RecordCard/RecordCard.vue +25 -0
  184. package/src/components/VideoCard/VideoCard.vue +25 -0
  185. package/assets/css/components/card.css +0 -1
  186. package/assets/css/components/card.css.map +0 -1
  187. package/assets/css/components/card.global.css +0 -1
  188. package/assets/css/components/card.global.css.map +0 -1
  189. package/assets/css/components/card.preload.css +0 -1
  190. package/assets/css/components/card.preload.css.map +0 -1
  191. package/assets/js/bundle.js +0 -74
  192. package/assets/js/dynamic.js +0 -80
  193. package/assets/js/dynamic.min.js +0 -18
  194. package/assets/js/dynamic.min.js.map +0 -1
  195. package/assets/js/flat-components.js +0 -84
  196. package/assets/js/modules/youtubevideo.js +0 -106
  197. package/assets/sass/components/card.global.scss +0 -102
  198. package/assets/sass/components/card.preload.scss +0 -8
  199. package/assets/sass/components/card.scss +0 -606
  200. package/assets/ts/bundle.ts +0 -94
  201. package/assets/ts/components/barchart/README.md +0 -37
  202. package/assets/ts/components/card/README.md +0 -39
  203. package/assets/ts/dynamic.ts +0 -107
  204. package/assets/ts/flat-components.ts +0 -106
  205. package/assets/ts/modules/youtubevideo.ts +0 -141
  206. package/src/foundations/YoutubeVideo/README.md +0 -11
  207. package/src/foundations/YoutubeVideo/YoutubeVideo.vue +0 -24
@@ -0,0 +1,82 @@
1
+ // @ts-nocheck
2
+ import {trackComponent, trackComponentRegistered} from "../_global";
3
+ import {cardHTML,setupCard} from "../../modules/card.module";
4
+
5
+ trackComponentRegistered("iam-record-card");
6
+
7
+ class iamRecordCard extends HTMLElement {
8
+
9
+ constructor(){
10
+ super();
11
+ this.attachShadow({ mode: 'open'});
12
+
13
+ const assetLocation = document.body.hasAttribute('data-assets-location') ? document.body.getAttribute('data-assets-location') : '/assets';
14
+ const loadCSS = `@import "${assetLocation}/css/components/record-card.component.css";`;
15
+
16
+ const template = document.createElement('template');
17
+ template.innerHTML = `
18
+ <style>
19
+ ${this.hasAttribute('css') ? `@import "${this.getAttribute('css')}";` : ``}
20
+
21
+ ${loadCSS}
22
+ </style>
23
+ ${cardHTML}
24
+ `;
25
+
26
+ this.shadowRoot.appendChild(template.content.cloneNode(true));
27
+ }
28
+
29
+ async connectedCallback() {
30
+
31
+ const cardComponent = this;
32
+ const cardHead = cardComponent.shadowRoot.querySelector('.card__head');
33
+ setupCard(cardComponent);
34
+
35
+ Array.from(cardComponent.querySelectorAll(':scope > *:not([slot])')).forEach((element,index)=>{
36
+
37
+ element.setAttribute('slot','details');
38
+ });
39
+
40
+ if(cardComponent.hasAttribute('data-avatar')){
41
+
42
+ cardHead.innerHTML += `<img src="${cardComponent.getAttribute('data-avatar')}" alt="" loading="lazy" class="card__avatar" part="avatar" />`;
43
+ }
44
+
45
+
46
+ trackComponent(cardComponent,"iam-record-card",[]);
47
+ }
48
+
49
+ static get observedAttributes() {
50
+ return ["data-image"];
51
+ }
52
+
53
+ attributeChangedCallback(attrName, oldVal, newVal) {
54
+ switch (attrName) {
55
+ case "data-image": {
56
+
57
+ if(oldVal != newVal){
58
+
59
+ const cardHeadImg = this.shadowRoot.querySelector('.card__head img');
60
+
61
+ if(cardHeadImg)
62
+ cardHeadImg.setAttribute('src',newVal);
63
+ }
64
+ break;
65
+ }
66
+ case "data-avatar": {
67
+
68
+ if(oldVal != newVal){
69
+
70
+ const cardHeadImg = this.shadowRoot.querySelector('.card__avatar');
71
+
72
+ if(cardHeadImg)
73
+ cardHeadImg.setAttribute('src',newVal);
74
+ }
75
+ break;
76
+ }
77
+ }
78
+
79
+ }
80
+ }
81
+
82
+ export default iamRecordCard;
@@ -0,0 +1,227 @@
1
+ // @ts-nocheck
2
+ import {trackComponent, trackComponentRegistered} from "../_global";
3
+ import {cardHTML,setupCard} from "../../modules/card.module";
4
+
5
+ trackComponentRegistered("iam-video-card");
6
+
7
+ class iamVideoCard extends HTMLElement {
8
+
9
+ constructor(){
10
+ super();
11
+ this.attachShadow({ mode: 'open'});
12
+
13
+ const assetLocation = document.body.hasAttribute('data-assets-location') ? document.body.getAttribute('data-assets-location') : '/assets';
14
+ const loadCSS = `@import "${assetLocation}/css/components/video-card.component.css";`;
15
+
16
+ const template = document.createElement('template');
17
+ template.innerHTML = `
18
+ <style>
19
+ ${this.hasAttribute('css') ? `@import "${this.getAttribute('css')}";` : ``}
20
+
21
+ ${loadCSS}
22
+ </style>
23
+ ${cardHTML}
24
+ <dialog>
25
+ <div class="embed"></div>
26
+ </dialog>
27
+ `;
28
+
29
+ this.shadowRoot.appendChild(template.content.cloneNode(true));
30
+ }
31
+
32
+ async connectedCallback() {
33
+
34
+ const cardComponent = this;
35
+ const cardHead = cardComponent.shadowRoot.querySelector('.card__head');
36
+
37
+ const randLetter = String.fromCharCode(65 + Math.floor(Math.random() * 26));
38
+ const link_id = randLetter + Date.now();
39
+
40
+ let dialog;
41
+ let embed;
42
+
43
+ setupCard(cardComponent);
44
+
45
+ // Check if youtube or vimeo video link is present
46
+ if(cardComponent.querySelector('[data-youtube]'))
47
+ cardComponent.setAttribute('data-youtube',cardComponent.querySelector('[data-youtube]').getAttribute('data-youtube'));
48
+
49
+ if(cardComponent.querySelector('[data-vimeo]'))
50
+ cardComponent.setAttribute('data-vimeo',cardComponent.querySelector('[data-vimeo]').getAttribute('data-vimeo'));
51
+
52
+ // General dialog stuff
53
+ if(cardComponent.hasAttribute('data-youtube') || cardComponent.hasAttribute('data-vimeo')){
54
+
55
+ cardHead.setAttribute('tabindex','0');
56
+
57
+ // Add dialog to page
58
+ if(!document.getElementById(`${link_id}-dialog`)){
59
+ document.body.insertAdjacentHTML('beforeend', `<dialog id="${link_id}-dialog"><div class="embed" id="${link_id}"></div></dialog>`);
60
+ }
61
+
62
+ dialog = document.getElementById(`${link_id}-dialog`);
63
+ embed = document.getElementById(link_id);
64
+ }
65
+
66
+ // Youtube
67
+ if(cardComponent.hasAttribute('data-youtube')){
68
+
69
+ // Load the scripts only once
70
+ if(!document.body.classList.contains('youtubeLoaded')){
71
+ let loaded = await this.loadYouTubeScripts();
72
+ }
73
+ cardHead.addEventListener('click',function(){
74
+
75
+ const customEvent = new CustomEvent("play-video", { detail: { 'Video Type': 'YoutTube', 'ID': cardComponent.getAttribute('data-youtube') } });
76
+ cardComponent.dispatchEvent(customEvent);
77
+
78
+ cardComponent.createYoutTubeVideo(embed);
79
+ dialog.showModal();
80
+ });
81
+
82
+ dialog.addEventListener("close", (event) => {
83
+
84
+ if(window.player[embed.getAttribute('id')] && typeof window.player[embed.getAttribute('id')].pauseVideo == "function"){
85
+
86
+ window.player[embed.getAttribute('id')].pauseVideo();
87
+ }
88
+
89
+
90
+ const customEvent = new CustomEvent("close-video", { detail: { 'Video Type': 'YoutTube', 'ID': cardComponent.getAttribute('data-youtube') } });
91
+ cardComponent.dispatchEvent(customEvent);
92
+ });
93
+
94
+ }
95
+ else if(cardComponent.hasAttribute('data-vimeo')){ // Vimeo
96
+
97
+ cardHead.addEventListener('click',function(){
98
+
99
+ const videoId = cardComponent.getAttribute('data-vimeo');
100
+
101
+ const customEvent = new CustomEvent("play-video", { detail: { 'Video Type': 'Vimeo', 'ID': videoId } });
102
+ cardComponent.dispatchEvent(customEvent);
103
+
104
+ if(!embed.querySelector('iframe'))
105
+ embed.innerHTML = `<iframe src="https://player.vimeo.com/video/${videoId}?autoplay=1" width="100%" height="100%" frameborder="0" allow="autoplay; encrypted-media" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>`
106
+
107
+ dialog.showModal();
108
+ });
109
+
110
+ dialog.addEventListener("close", (event) => {
111
+
112
+ embed.innerHTML = ``; // Remove the video since we cant pause it
113
+
114
+ const customEvent = new CustomEvent("close-video", { detail: { 'Video Type': 'Vimeo', 'ID': cardComponent.getAttribute('data-vimeo') } });
115
+ cardComponent.dispatchEvent(customEvent);
116
+ });
117
+ }
118
+
119
+ trackComponent(cardComponent,"iam-video-card",['play-video','close-video']);
120
+ }
121
+
122
+ loadYouTubeScripts(){
123
+
124
+ return new Promise((resolve, reject) => {
125
+
126
+ const image = new Image();
127
+ image.onload = function(){
128
+
129
+ // This code loads the IFrame Player API code asynchronously.
130
+ var tag = document.createElement('script');
131
+ tag.src = "https://www.youtube.com/iframe_api";
132
+ var firstScriptTag = document.getElementsByTagName('script')[0];
133
+ firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
134
+ document.body.classList.add('youtubeLoaded');
135
+ resolve(true);
136
+ };
137
+ image.onerror = function(){
138
+ reject(false);
139
+ };
140
+ image.src = "https://youtube.com/favicon.ico";
141
+ });
142
+
143
+ }
144
+
145
+ createYoutTubeVideo(target){
146
+
147
+ if(typeof window.player == "undefined"){
148
+ window.player = [];
149
+ }
150
+
151
+ var link_id = target.getAttribute('id');
152
+ var video_id = this.getAttribute('data-youtube');
153
+
154
+ console.log(window.player)
155
+
156
+ if(typeof window.player[link_id] != 'undefined' && typeof window.player[link_id].pauseVideo == "function"){
157
+
158
+ window.player[link_id].playVideo();
159
+
160
+ return false;
161
+ }
162
+
163
+ // This function creates an <iframe> (and YouTube player) after the API code downloads.
164
+ //function onYouTubeIframeAPIReady() {
165
+
166
+ window.player[link_id] = new YT.Player(link_id, {
167
+ height: '100%',
168
+ width: '100%',
169
+ videoId: video_id,
170
+ playerVars: {
171
+ 'modestbranding': 1,
172
+ 'playsinline': 1,
173
+ 'rel': 0,
174
+ 'showinfo': 0
175
+ },
176
+ events: {
177
+ 'onReady': onPlayerReady,
178
+ 'onStateChange': onPlayerStateChange
179
+ }
180
+ });
181
+ //}
182
+ //onYouTubeIframeAPIReady();
183
+
184
+ // The API will call this function when the video player is ready.
185
+ function onPlayerReady(event) {
186
+ // Play the video straight away
187
+ event.target.playVideo();
188
+ }
189
+
190
+ // The API calls this function when the player's state changes.
191
+ // The function indicates that when playing a video (state=1)
192
+ var done = false;
193
+ function onPlayerStateChange(event) {
194
+
195
+ if (event.data == YT.PlayerState.PLAYING && !done) {
196
+
197
+ var link = document.getElementById(link_id);
198
+ link.classList.add('player-ready');
199
+
200
+ done = true;
201
+ }
202
+ }
203
+ }
204
+
205
+ static get observedAttributes() {
206
+ return ["data-image"];
207
+ }
208
+
209
+ attributeChangedCallback(attrName, oldVal, newVal) {
210
+ switch (attrName) {
211
+ case "data-image": {
212
+
213
+ if(oldVal != newVal){
214
+
215
+ const cardHeadImg = this.shadowRoot.querySelector('.card__head img');
216
+
217
+ if(cardHeadImg)
218
+ cardHeadImg.setAttribute('src',newVal);
219
+ }
220
+ break;
221
+ }
222
+ }
223
+
224
+ }
225
+ }
226
+
227
+ export default iamVideoCard;
@@ -0,0 +1,38 @@
1
+ // @ts-nocheck
2
+ const components = ["accordion","header","table","tabs",'card','filter-card','video-card','record-card',"filterlist",'applied-filters','pagination','notification','actionbar','nav','collapsible-side','address-lookup','fileupload','search','inline-edit','multiselect','slider','carousel','marketing','barchart'];
3
+
4
+ const prefix = "iam"
5
+ const options = {
6
+ rootMargin: '50px',
7
+ threshold: 0.1
8
+ }
9
+ const componentExt = ".component.min.js";
10
+
11
+ // Load components - Each component will load once the first of its type has been loaded
12
+ components.forEach((component) => {
13
+
14
+ if(document.getElementsByTagName(`${prefix}-${component}`).length === 0)
15
+ return;
16
+
17
+ let callback = (entries:any) => {
18
+ entries.forEach((entry:any) => {
19
+
20
+ if(entry.intersectionRatio > 0){
21
+
22
+ console.log(component)
23
+
24
+ import(`./components/${component}/${component}${componentExt}`).then(module => {
25
+ if (!window.customElements.get(`${prefix}-${component}`))
26
+ window.customElements.define(`${prefix}-${component}`, module.default);
27
+ }).catch((err) => {
28
+ console.log(err.message);
29
+ });
30
+
31
+ intObserver.unobserve(entry.target);
32
+ }
33
+ });
34
+ };
35
+
36
+ const intObserver = new IntersectionObserver(callback, options);
37
+ intObserver.observe(document.getElementsByTagName(`${prefix}-${component}`)[0]);
38
+ });
@@ -0,0 +1,43 @@
1
+ export const cardHTML = `<div class="card__head" part="head">
2
+ <slot name="head"></slot>
3
+ </div>
4
+ <div class="card__badges"><slot name="badges"></slot></div>
5
+ <slot name="checkbox" class="activate-prevent-hover"></slot>
6
+ <div class="card__body" part="body">
7
+ <slot></slot>
8
+ <slot name="secondary" part="secondary"></slot>
9
+ </div>
10
+ <div class="card__details" part="details">
11
+ <slot name="details"></slot>
12
+ </div>
13
+ <div class="card__footer" part="footer">
14
+ <slot name="footer"></slot>
15
+ </div>`;
16
+
17
+
18
+ export const setupCard = (cardComponent:any) => {
19
+
20
+ cardComponent.classList.add('card');
21
+ const cardHead = cardComponent.shadowRoot.querySelector('.card__head');
22
+ const cardBody = cardComponent.shadowRoot.querySelector('.card__body');
23
+
24
+ if(cardComponent.hasAttribute('data-image')){
25
+
26
+ cardHead.innerHTML += `<img src="${cardComponent.getAttribute('data-image')}" alt="" loading="lazy" part="image" />`;
27
+ }
28
+
29
+
30
+ // Inset the HTML for the data total or icon fallback
31
+ if(cardComponent.hasAttribute('data-total')){
32
+
33
+ cardBody.insertAdjacentHTML('beforeend', `<div class="card__total">${cardComponent.getAttribute('data-total')}</div>`);
34
+ }
35
+ else if(cardComponent.querySelector('[slot="total-icon"]')){
36
+
37
+ cardBody.insertAdjacentHTML('beforeend', `<div class="card__total"><slot name="total-icon"></slot></div>`);
38
+ }
39
+
40
+ if(!cardComponent.querySelector('[slot="badges"]')){
41
+ cardComponent.shadowRoot.querySelector('.card__badges').remove();
42
+ }
43
+ }
@@ -1,6 +1,4 @@
1
1
  // @ts-nocheck
2
- import { createEmbed } from "./youtubevideo";
3
-
4
2
  const extendDialogs = (body) => {
5
3
 
6
4
  Array.from(body.querySelectorAll('dialog[open]')).forEach((dialog, index) => {
@@ -231,12 +229,6 @@ const extendDialogs = (body) => {
231
229
 
232
230
  export const createDialog = (dialog) => {
233
231
 
234
- // Create the video embed
235
- let videoButton = dialog.querySelector('.youtube-embed a');
236
- if (videoButton){
237
- createEmbed(videoButton)
238
- }
239
-
240
232
  // Multi dialog
241
233
  if(dialog.classList.contains('dialog--multi') && !dialog.querySelector(':scope > .steps')) {
242
234
  createMultiFormDialog(dialog);
@@ -758,7 +758,7 @@ export const filterTable = (table, form, wrapper) => {
758
758
  });
759
759
 
760
760
  // Work out what to display after pagination
761
- Array.from(table.querySelectorAll('tbody tr:not(.filtered')).forEach((row, index) => {
761
+ Array.from(table.querySelectorAll('tbody tr:not(.filtered)')).forEach((row, index) => {
762
762
 
763
763
  matched++;
764
764
 
@@ -0,0 +1,22 @@
1
+ // @ts-nocheck
2
+ // Modules
3
+ import * as helpers from '../js/modules/helpers'
4
+ import extendDialogs from '../js/modules/dialogs'
5
+ import createDataLayer from '../js/modules/data-layer'
6
+ import extendInputs from '../js/modules/inputs';
7
+ import createDynamicEvents from '../js/modules/dynamicEvents'
8
+
9
+ // Attach classes to dom elements
10
+ document.addEventListener("DOMContentLoaded", function() {
11
+
12
+ createDataLayer();
13
+ createDynamicEvents();
14
+
15
+ // Global stuff
16
+ helpers.addBodyClasses(document.body);
17
+ helpers.addGlobalEvents(document.body);
18
+
19
+ extendDialogs(document.body);
20
+ extendInputs(document.body);
21
+
22
+ });
@@ -24,6 +24,6 @@ describe('addDataAttributes', () => {
24
24
  test('should add a class of d-none to each item except the one containing Lucas Myers', () => {
25
25
 
26
26
  expect(list.querySelectorAll('li:not(.d-none)').length).toEqual(1);
27
- expect(list.querySelector('li:not(.d-none').textContent).toEqual('Lucas Myers');
27
+ expect(list.querySelector('li:not(.d-none)').textContent).toEqual('Lucas Myers');
28
28
  });
29
29
  });