@iamproperty/components 6.0.0 → 6.1.0--beta2

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 (277) 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/actionbar.css.map +1 -1
  58. package/assets/css/components/actionbar.global.css.map +1 -1
  59. package/assets/css/components/barchart.component.css +1 -1
  60. package/assets/css/components/barchart.component.css.map +1 -1
  61. package/assets/css/components/card.component.css +1 -0
  62. package/assets/css/components/card.component.css.map +1 -0
  63. package/assets/css/components/card.module.css +1 -0
  64. package/assets/css/components/card.module.css.map +1 -0
  65. package/assets/css/components/carousel.component.css +1 -0
  66. package/assets/css/components/carousel.component.css.map +1 -0
  67. package/assets/css/components/carousel.config.css +1 -0
  68. package/assets/css/components/carousel.config.css.map +1 -0
  69. package/assets/css/components/charts.config.css +1 -1
  70. package/assets/css/components/charts.config.css.map +1 -1
  71. package/assets/css/components/charts.css +1 -1
  72. package/assets/css/components/charts.css.map +1 -1
  73. package/assets/css/components/charts.module.css +1 -1
  74. package/assets/css/components/charts.module.css.map +1 -1
  75. package/assets/css/components/collapsible-side.css.map +1 -1
  76. package/assets/css/components/fileupload.css.map +1 -1
  77. package/assets/css/components/filter-card.component.css +1 -0
  78. package/assets/css/components/filter-card.component.css.map +1 -0
  79. package/assets/css/components/header.css +1 -1
  80. package/assets/css/components/header.css.map +1 -1
  81. package/assets/css/components/marketing.css.map +1 -1
  82. package/assets/css/components/multi-step.component.css +1 -0
  83. package/assets/css/components/multi-step.component.css.map +1 -0
  84. package/assets/css/components/multiselect.preload.css +1 -1
  85. package/assets/css/components/multiselect.preload.css.map +1 -1
  86. package/assets/css/components/nav.css.map +1 -1
  87. package/assets/css/components/nav.docs.css.map +1 -1
  88. package/assets/css/components/nav.global.css.map +1 -1
  89. package/assets/css/components/nav.old.css.map +1 -1
  90. package/assets/css/components/nav.preload.css +1 -1
  91. package/assets/css/components/nav.preload.css.map +1 -1
  92. package/assets/css/components/notification.css.map +1 -1
  93. package/assets/css/components/pagination.css.map +1 -1
  94. package/assets/css/components/property-searchbar.css.map +1 -1
  95. package/assets/css/components/record-card.component.css +1 -0
  96. package/assets/css/components/record-card.component.css.map +1 -0
  97. package/assets/css/components/slider.css.map +1 -1
  98. package/assets/css/components/snapshot.css.map +1 -1
  99. package/assets/css/components/stepper.css.map +1 -1
  100. package/assets/css/components/table.global.css.map +1 -1
  101. package/assets/css/components/tabs.css +1 -1
  102. package/assets/css/components/tabs.css.map +1 -1
  103. package/assets/css/components/testimonial.css.map +1 -1
  104. package/assets/css/components/timeline.css +1 -1
  105. package/assets/css/components/timeline.css.map +1 -1
  106. package/assets/css/components/video-card.component.css +1 -0
  107. package/assets/css/components/video-card.component.css.map +1 -0
  108. package/assets/css/core.min.css +1 -1
  109. package/assets/css/core.min.css.map +1 -1
  110. package/assets/css/style.min.css +1 -1
  111. package/assets/css/style.min.css.map +1 -1
  112. package/assets/img/illustrations/not-found.png +0 -0
  113. package/assets/js/components/accordion/accordion.component.min.js +2 -2
  114. package/assets/js/components/actionbar/actionbar.component.min.js +6 -6
  115. package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
  116. package/assets/js/components/address-lookup/address-lookup.component.min.js +2 -2
  117. package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -1
  118. package/assets/js/components/applied-filters/applied-filters.component.min.js +2 -2
  119. package/assets/js/components/applied-filters/applied-filters.component.min.js.map +1 -1
  120. package/assets/js/components/barchart/barchart.component.js +2 -0
  121. package/assets/js/components/barchart/barchart.component.min.js +5 -3
  122. package/assets/js/components/barchart/barchart.component.min.js.map +1 -1
  123. package/assets/js/components/card/card.component.js +92 -154
  124. package/assets/js/components/card/card.component.min.js +27 -32
  125. package/assets/js/components/card/card.component.min.js.map +1 -1
  126. package/assets/js/components/carousel/carousel.component.js +36 -41
  127. package/assets/js/components/carousel/carousel.component.min.js +18 -12
  128. package/assets/js/components/carousel/carousel.component.min.js.map +1 -1
  129. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +2 -2
  130. package/assets/js/components/collapsible-side/collapsible-side.component.min.js.map +1 -1
  131. package/assets/js/components/fileupload/fileupload.component.min.js +2 -2
  132. package/assets/js/components/fileupload/fileupload.component.min.js.map +1 -1
  133. package/assets/js/components/filter-card/filter-card.component.js +71 -0
  134. package/assets/js/components/filter-card/filter-card.component.min.js +27 -0
  135. package/assets/js/components/filter-card/filter-card.component.min.js.map +1 -0
  136. package/assets/js/components/filterlist/filterlist.component.min.js +2 -2
  137. package/assets/js/components/header/header.component.min.js +3 -3
  138. package/assets/js/components/header/header.component.min.js.map +1 -1
  139. package/assets/js/components/inline-edit/inline-edit.component.min.js +2 -2
  140. package/assets/js/components/inline-edit/inline-edit.component.min.js.map +1 -1
  141. package/assets/js/components/marketing/marketing.component.min.js +2 -2
  142. package/assets/js/components/marketing/marketing.component.min.js.map +1 -1
  143. package/assets/js/components/multi-step/multi-step.component.js +162 -0
  144. package/assets/js/components/multiselect/multiselect.component.min.js +2 -2
  145. package/assets/js/components/multiselect/multiselect.component.min.js.map +1 -1
  146. package/assets/js/components/nav/nav.component.min.js +2 -2
  147. package/assets/js/components/nav/nav.component.min.js.map +1 -1
  148. package/assets/js/components/notification/notification.component.min.js +2 -2
  149. package/assets/js/components/notification/notification.component.min.js.map +1 -1
  150. package/assets/js/components/pagination/pagination.component.min.js +2 -2
  151. package/assets/js/components/pagination/pagination.component.min.js.map +1 -1
  152. package/assets/js/components/record-card/record-card.component.js +69 -0
  153. package/assets/js/components/record-card/record-card.component.min.js +27 -0
  154. package/assets/js/components/record-card/record-card.component.min.js.map +1 -0
  155. package/assets/js/components/search/search.component.min.js +2 -2
  156. package/assets/js/components/slider/slider.component.min.js +2 -2
  157. package/assets/js/components/slider/slider.component.min.js.map +1 -1
  158. package/assets/js/components/table/table.component.js +1 -1
  159. package/assets/js/components/table/table.component.min.js +4 -4
  160. package/assets/js/components/table/table.component.min.js.map +1 -1
  161. package/assets/js/components/tabs/tabs.component.min.js +3 -3
  162. package/assets/js/components/tabs/tabs.component.min.js.map +1 -1
  163. package/assets/js/components/video-card/video-card.component.js +176 -0
  164. package/assets/js/components/video-card/video-card.component.min.js +30 -0
  165. package/assets/js/components/video-card/video-card.component.min.js.map +1 -0
  166. package/assets/js/components.bundle.js +5 -0
  167. package/assets/js/components.bundle.js.map +1 -0
  168. package/assets/js/components.js +30 -0
  169. package/assets/js/modules/card.module.js +33 -0
  170. package/assets/js/modules/carousel.js +110 -8
  171. package/assets/js/modules/chart.js +2 -2
  172. package/assets/js/modules/dialogs.js +5 -129
  173. package/assets/js/modules/table.js +1 -1
  174. package/assets/js/scripts.bundle.js +4 -195
  175. package/assets/js/scripts.bundle.js.map +1 -1
  176. package/assets/js/scripts.bundle.min.js +3 -3
  177. package/assets/js/scripts.bundle.min.js.map +1 -1
  178. package/assets/js/scripts.js +17 -0
  179. package/assets/js/tests/filterlist.spec.js +1 -1
  180. package/assets/sass/_components.scss +76 -12
  181. package/assets/sass/_corefiles.scss +19 -10
  182. package/assets/sass/_elements.scss +2 -0
  183. package/assets/sass/_func.scss +3 -0
  184. package/assets/sass/_functions/functions.scss +304 -1
  185. package/assets/sass/_functions/mixins.scss +458 -2
  186. package/assets/sass/_functions/utilities.scss +647 -2
  187. package/assets/sass/_functions/variables.scss +1724 -2
  188. package/assets/sass/_utilities.scss +126 -7
  189. package/assets/sass/components/card.component.scss +229 -0
  190. package/assets/sass/components/card.module.scss +154 -0
  191. package/assets/sass/components/carousel.component.scss +605 -0
  192. package/assets/sass/components/carousel.config.scss +84 -0
  193. package/assets/sass/components/charts.config.scss +3 -0
  194. package/assets/sass/components/charts.module.scss +5 -3
  195. package/assets/sass/components/filter-card.component.scss +106 -0
  196. package/assets/sass/components/header.scss +1 -0
  197. package/assets/sass/components/multi-step.component.scss +148 -0
  198. package/assets/sass/components/multiselect.preload.scss +7 -0
  199. package/assets/sass/components/nav.preload.scss +5 -0
  200. package/assets/sass/components/record-card.component.scss +204 -0
  201. package/assets/sass/components/tabs.scss +1 -1
  202. package/assets/sass/components/video-card.component.scss +80 -0
  203. package/assets/sass/components.reset.scss +5 -43
  204. package/assets/sass/elements/admin-panel.scss +2 -1
  205. package/assets/sass/elements/badge-tag.scss +5 -1
  206. package/assets/sass/elements/buttons.scss +36 -0
  207. package/assets/sass/elements/container.scss +16 -6
  208. package/assets/sass/elements/details.scss +2 -0
  209. package/assets/sass/elements/dialog.scss +2 -744
  210. package/assets/sass/elements/forms.scss +241 -24
  211. package/assets/sass/elements/links.scss +27 -4
  212. package/assets/sass/elements/lists.scss +46 -0
  213. package/assets/sass/elements/media.scss +10 -38
  214. package/assets/sass/elements/modal.scss +453 -0
  215. package/assets/sass/elements/popover.scss +207 -0
  216. package/assets/sass/elements/table.element.scss +35 -0
  217. package/assets/sass/elements/type.scss +38 -2
  218. package/assets/sass/error.scss +32 -1
  219. package/assets/sass/foundations/bs_grid.scss +33 -0
  220. package/assets/sass/foundations/grid.scss +270 -0
  221. package/assets/sass/foundations/reboot.scss +71 -49
  222. package/assets/sass/foundations/root.scss +16 -3
  223. package/assets/ts/components/barchart/barchart.component.ts +2 -0
  224. package/assets/ts/components/card/card.component.ts +94 -192
  225. package/assets/ts/components/carousel/carousel.component.ts +51 -44
  226. package/assets/ts/components/filter-card/filter-card.component.ts +81 -0
  227. package/assets/ts/components/multi-step/multi-step.component.ts +262 -0
  228. package/assets/ts/components/record-card/record-card.component.ts +82 -0
  229. package/assets/ts/components/table/table.component.ts +2 -1
  230. package/assets/ts/components/video-card/video-card.component.ts +227 -0
  231. package/assets/ts/components.ts +38 -0
  232. package/assets/ts/modules/card.module.ts +43 -0
  233. package/assets/ts/modules/carousel.ts +161 -7
  234. package/assets/ts/modules/dialogs.ts +6 -182
  235. package/assets/ts/modules/table.ts +1 -1
  236. package/assets/ts/scripts.ts +22 -0
  237. package/assets/ts/tests/filterlist.spec.ts +1 -1
  238. package/dist/components.es.js +227 -243
  239. package/dist/components.umd.js +105 -104
  240. package/dist/style.css +1 -1
  241. package/package.json +9 -7
  242. package/src/components/BarChart/BarChart.vue +2 -2
  243. package/src/components/Carousel/Carousel.vue +1 -15
  244. package/src/components/FilterCard/FilterCard.vue +25 -0
  245. package/src/components/MultiStep/MultiStep.vue +25 -0
  246. package/src/components/RecordCard/RecordCard.vue +25 -0
  247. package/src/components/VideoCard/VideoCard.vue +25 -0
  248. package/assets/css/components/card.css +0 -1
  249. package/assets/css/components/card.css.map +0 -1
  250. package/assets/css/components/card.global.css +0 -1
  251. package/assets/css/components/card.global.css.map +0 -1
  252. package/assets/css/components/card.preload.css +0 -1
  253. package/assets/css/components/card.preload.css.map +0 -1
  254. package/assets/css/components/carousel.css +0 -1
  255. package/assets/css/components/carousel.css.map +0 -1
  256. package/assets/css/components/carousel.preload.css +0 -1
  257. package/assets/css/components/carousel.preload.css.map +0 -1
  258. package/assets/js/bundle.js +0 -74
  259. package/assets/js/dynamic.js +0 -80
  260. package/assets/js/dynamic.min.js +0 -18
  261. package/assets/js/dynamic.min.js.map +0 -1
  262. package/assets/js/flat-components.js +0 -84
  263. package/assets/js/modules/youtubevideo.js +0 -106
  264. package/assets/sass/components/card.global.scss +0 -102
  265. package/assets/sass/components/card.preload.scss +0 -8
  266. package/assets/sass/components/card.scss +0 -606
  267. package/assets/sass/components/carousel.preload.scss +0 -82
  268. package/assets/sass/components/carousel.scss +0 -258
  269. package/assets/ts/bundle.ts +0 -94
  270. package/assets/ts/components/barchart/README.md +0 -37
  271. package/assets/ts/components/card/README.md +0 -39
  272. package/assets/ts/dynamic.ts +0 -107
  273. package/assets/ts/flat-components.ts +0 -106
  274. package/assets/ts/modules/youtubevideo.ts +0 -141
  275. package/assets/ts/tests/dialogs.spec.js +0 -50
  276. package/src/foundations/YoutubeVideo/README.md +0 -11
  277. package/src/foundations/YoutubeVideo/YoutubeVideo.vue +0 -24
@@ -0,0 +1,262 @@
1
+ // @ts-nocheck
2
+ import {trackComponent, trackComponentRegistered} from "../_global";
3
+
4
+ trackComponentRegistered("iam-multi-step");
5
+
6
+ class iamMultiStep extends HTMLElement {
7
+
8
+ constructor(){
9
+ super();
10
+ this.attachShadow({ mode: 'open'});
11
+
12
+ const assetLocation = document.body.hasAttribute('data-assets-location') ? document.body.getAttribute('data-assets-location') : '/assets';
13
+ const loadCSS = `@import "${assetLocation}/css/components/multi-step.component.css";`;
14
+
15
+ const template = document.createElement('template');
16
+ template.innerHTML = `
17
+ <style>
18
+ ${loadCSS}
19
+ </style>
20
+ <div class="steps" parts="steps">
21
+ </div>
22
+ <slot></slot>
23
+ `;
24
+
25
+ this.shadowRoot.appendChild(template.content.cloneNode(true));
26
+ }
27
+
28
+
29
+ connectedCallback() {
30
+
31
+ const MultiStepComponent = this;
32
+ const steps = this.shadowRoot.querySelector('.steps');
33
+ const form = this.querySelector('form');
34
+
35
+ let fieldsets = Array.from(MultiStepComponent.querySelectorAll('fieldset[data-title]'));
36
+
37
+ fieldsets.forEach((fieldset,index) => {
38
+
39
+ steps.insertAdjacentHTML('beforeend',`<button data-title="${fieldset.getAttribute('data-title')}" type="button" class="${index == 0 ? "active":""}" tabindex="-1">${fieldset.getAttribute('data-title')}</button>`);
40
+
41
+ if(index === 0)
42
+ fieldset.classList.add('active');
43
+
44
+ const btnWrapper = document.createElement("div");
45
+ btnWrapper.classList.add('btn--wrapper');
46
+ fieldset.appendChild(btnWrapper);
47
+
48
+ if(index != 0)
49
+ btnWrapper.innerHTML += `<button data-title="${fieldsets[index-1].getAttribute('data-title')}" class="btn btn-secondary mb-0" data-previous type="button">Previous</button>`;
50
+
51
+ if(index != fieldsets.length - 1)
52
+ btnWrapper.innerHTML += `<button data-title="${fieldsets[index+1].getAttribute('data-title')}" class="btn btn-primary mb-0" data-next type="button">Next</button>`;
53
+
54
+ // Last fieldset
55
+ if(index == fieldsets.length - 1){
56
+ if(form && form.querySelector(':scope > button[type="submit"]')){
57
+
58
+ let existingButton = form.querySelector(':scope > button[type="submit"]');
59
+ existingButton.classList.add('mb-0')
60
+
61
+ btnWrapper.insertAdjacentElement('beforeend',existingButton);
62
+ }
63
+ else
64
+ btnWrapper.innerHTML += `<button data-title="${fieldsets[index].getAttribute('data-title')}" class="btn btn-primary mb-0" data-next type="submit">Submit</button>`;
65
+ }
66
+ });
67
+
68
+
69
+
70
+ // Open the fieldset with an error inside
71
+ let validatedFieldsets = Array.from(MultiStepComponent.querySelectorAll('fieldset.was-validated'));
72
+ for (let i = 0; i < validatedFieldsets.length; i++) {
73
+
74
+ let fieldset = validatedFieldsets[i];
75
+ let fieldsetID = fieldset.getAttribute('data-title');
76
+
77
+ if(fieldset.querySelector('.is-invalid')){
78
+
79
+ Array.from(MultiStepComponent.querySelectorAll(`[data-title="${fieldsetID}"]`)).forEach((element, index) => {
80
+
81
+ element.classList.add('active');
82
+ });
83
+
84
+ break;
85
+ }
86
+ else {
87
+
88
+ Array.from(MultiStepComponent.querySelectorAll(`[data-title="${fieldsetID}"]`)).forEach((element, index) => {
89
+
90
+ element.classList.add('valid');
91
+ });
92
+ }
93
+ }
94
+
95
+ // Prevent the bubble messages
96
+ MultiStepComponent.addEventListener('invalid', (function () {
97
+ return function (e) {
98
+ e.preventDefault();
99
+ };
100
+ })(), true);
101
+
102
+
103
+
104
+
105
+ function validateFieldset(button){
106
+
107
+ const currentFieldset = MultiStepComponent.querySelector(`fieldset.active`) ? MultiStepComponent.querySelector(`fieldset.active`) : MultiStepComponent.querySelector(`fieldset[data-title]`);
108
+ const currentFieldsetID = currentFieldset.getAttribute('data-title');
109
+ let isFieldsetValid = true;
110
+
111
+ currentFieldset.classList.add('was-validated');
112
+
113
+ Array.from(currentFieldset.querySelectorAll('input')).forEach((input, index) => {
114
+
115
+ if (!input.checkValidity())
116
+ isFieldsetValid = false;
117
+ });
118
+
119
+ // If valid mode to next field set
120
+ if(!isFieldsetValid){
121
+
122
+ Array.from(MultiStepComponent.querySelectorAll(`[data-title="${currentFieldsetID}"]`)).forEach((element, index) => {
123
+
124
+ element.classList.remove('valid');
125
+ });
126
+
127
+ Array.from(MultiStepComponent.shadowRoot.querySelectorAll(`[data-title="${currentFieldsetID}"]`)).forEach((element, index) => {
128
+
129
+ element.classList.remove('valid');
130
+ });
131
+ }
132
+ else {
133
+
134
+ Array.from(MultiStepComponent.querySelectorAll(`[data-title="${currentFieldsetID}"]`)).forEach((element, index) => {
135
+
136
+ element.classList.add('valid');
137
+ });
138
+
139
+ Array.from(MultiStepComponent.shadowRoot.querySelectorAll(`[data-title="${currentFieldsetID}"]`)).forEach((element, index) => {
140
+
141
+ element.classList.add('valid');
142
+ });
143
+ }
144
+
145
+ // Allow the previous button to navigate
146
+ if(isFieldsetValid || !button.hasAttribute('data-next')){
147
+
148
+ const fieldset = MultiStepComponent.querySelector(`fieldset[data-title="${button.getAttribute('data-title')}"]`);
149
+ const step = MultiStepComponent.shadowRoot.querySelector(`.steps button[data-title="${button.getAttribute('data-title')}"]`);
150
+
151
+ Array.from(MultiStepComponent.querySelectorAll('button')).forEach((button, index) => {
152
+ button.classList.remove('active');
153
+ });
154
+ Array.from(MultiStepComponent.querySelectorAll('fieldset')).forEach((button, index) => {
155
+ button.classList.remove('active');
156
+ });
157
+
158
+ step.classList.add('active');
159
+ fieldset.classList.add('active');
160
+ }
161
+
162
+
163
+ let fieldsetCount = Array.from(MultiStepComponent.querySelectorAll(`fieldset`)).length;
164
+ let validFieldsetCount = Array.from(MultiStepComponent.querySelectorAll(`fieldset.valid`)).length;
165
+
166
+ // update the progress bar
167
+ MultiStepComponent.style.setProperty('--progress', `${(validFieldsetCount/(fieldsetCount - 1) * 100)}%`);
168
+ }
169
+
170
+ // remove error messages from server
171
+ MultiStepComponent.addEventListener('keydown', (event) => {
172
+ if (event && event.target instanceof HTMLElement && event.target.closest('button')){
173
+
174
+ const button = event.target.closest('button');
175
+
176
+ if(event.keyCode == 13 && button.getAttribute('type') != "submit"){
177
+
178
+ event.preventDefault();
179
+ validateFieldset(button);
180
+ }
181
+
182
+ }
183
+
184
+ if (event && event.target instanceof HTMLElement && event.target.closest('input')){
185
+ const input = event.target.closest('input');
186
+
187
+ input.classList.remove('is-invalid');
188
+
189
+ if(event.keyCode == 13){
190
+
191
+ event.preventDefault();
192
+ }
193
+ }
194
+ });
195
+
196
+
197
+ MultiStepComponent.addEventListener('click', (event) => {
198
+ if (event && event.target instanceof HTMLElement && event.target.closest('button[type="submit"]')){
199
+
200
+ const form = event.target.closest('form');
201
+ form.classList.add('was-validated');
202
+ }
203
+ return null
204
+ });
205
+
206
+
207
+ MultiStepComponent.shadowRoot.addEventListener('click', (event) => {
208
+ if (event && event.target instanceof HTMLElement && event.target.closest('button[data-title]')){
209
+
210
+ const button = event.target.closest('button[data-title]');
211
+
212
+ validateFieldset(button);
213
+ };
214
+ return null
215
+ });
216
+
217
+
218
+
219
+
220
+
221
+
222
+
223
+
224
+
225
+
226
+
227
+
228
+
229
+
230
+
231
+
232
+
233
+
234
+
235
+
236
+
237
+
238
+
239
+
240
+
241
+
242
+
243
+ trackComponent(MultiStepComponent,"iam-multi-step",[]);
244
+ }
245
+
246
+ static get observedAttributes() {
247
+ return ["data-image"];
248
+ }
249
+
250
+ attributeChangedCallback(attrName, oldVal, newVal) {
251
+ switch (attrName) {
252
+ case "data-total": {
253
+ if(this.shadowRoot.querySelector('.card__total'))
254
+ this.shadowRoot.querySelector('.card__total').innerHTML = newVal;
255
+ break;
256
+ }
257
+ }
258
+
259
+ }
260
+ }
261
+
262
+ export default iamMultiStep;
@@ -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;
@@ -171,10 +171,11 @@ class iamTable extends HTMLElement {
171
171
 
172
172
  Array.from(this.table.querySelectorAll('tbody tr')).forEach((row,index) => {
173
173
 
174
+
174
175
  let rowID = `row${uniqueID(index)}`;
175
176
  row.insertAdjacentHTML(
176
177
  'afterbegin',
177
- `<td class="td--fixed selectrow"><input type="checkbox" name="row" id="${rowID}"/><label for="${rowID}"><span class="visually-hidden">Select row</span></label></td>`
178
+ `<td class="td--fixed selectrow selected"><input type="checkbox" name="row" id="${rowID}" ${row.hasAttribute('data-selected') ? `checked="true"` : ''}/><label for="${rowID}"><span class="visually-hidden">Select row</span></label></td>`
178
179
  );
179
180
  });
180
181
 
@@ -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','multi-step','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
+ }