@iamproperty/components 7.2.2--beta3 → 7.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (247) 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/actionbar.global.css +1 -1
  4. package/assets/css/components/actionbar.global.css.map +1 -1
  5. package/assets/css/components/barchart.component.css +1 -1
  6. package/assets/css/components/barchart.component.css.map +1 -1
  7. package/assets/css/components/bento-grid.global.css.map +1 -1
  8. package/assets/css/components/calendar.component.css +1 -0
  9. package/assets/css/components/calendar.component.css.map +1 -0
  10. package/assets/css/components/calendar.config.css +1 -0
  11. package/assets/css/components/calendar.config.css.map +1 -0
  12. package/assets/css/components/card.component.css +1 -1
  13. package/assets/css/components/card.component.css.map +1 -1
  14. package/assets/css/components/carousel.component.css +1 -1
  15. package/assets/css/components/carousel.component.css.map +1 -1
  16. package/assets/css/components/charts.module.css.map +1 -1
  17. package/assets/css/components/collapsible-side.css +1 -1
  18. package/assets/css/components/collapsible-side.css.map +1 -1
  19. package/assets/css/components/content.component.css +1 -0
  20. package/assets/css/components/content.component.css.map +1 -0
  21. package/assets/css/components/doughnutchart.component.css +1 -1
  22. package/assets/css/components/doughnutchart.component.css.map +1 -1
  23. package/assets/css/components/fileupload.css.map +1 -1
  24. package/assets/css/components/inline-edit.css +1 -1
  25. package/assets/css/components/inline-edit.css.map +1 -1
  26. package/assets/css/components/marketing.component.css +1 -0
  27. package/assets/css/components/marketing.component.css.map +1 -0
  28. package/assets/css/components/menu.component.css +1 -1
  29. package/assets/css/components/menu.component.css.map +1 -1
  30. package/assets/css/components/menu.css +1 -1
  31. package/assets/css/components/menu.css.map +1 -1
  32. package/assets/css/components/milestone.css +1 -0
  33. package/assets/css/components/milestone.css.map +1 -0
  34. package/assets/css/components/multiselect.css +1 -1
  35. package/assets/css/components/multiselect.css.map +1 -1
  36. package/assets/css/components/nav.component.css +1 -1
  37. package/assets/css/components/nav.component.css.map +1 -1
  38. package/assets/css/components/nav.global.css +1 -1
  39. package/assets/css/components/nav.global.css.map +1 -1
  40. package/assets/css/components/pagination.css.map +1 -1
  41. package/assets/css/components/rank.component.css +1 -1
  42. package/assets/css/components/rank.component.css.map +1 -1
  43. package/assets/css/components/rankings.component.css +1 -1
  44. package/assets/css/components/rankings.component.css.map +1 -1
  45. package/assets/css/components/rankings.global.css +1 -1
  46. package/assets/css/components/rankings.global.css.map +1 -1
  47. package/assets/css/components/slider.css.map +1 -1
  48. package/assets/css/components/split-button.component.css +1 -0
  49. package/assets/css/components/split-button.component.css.map +1 -0
  50. package/assets/css/components/table-basic.global.css.map +1 -1
  51. package/assets/css/components/table.global.css.map +1 -1
  52. package/assets/css/core.min.css +1 -1
  53. package/assets/css/core.min.css.map +1 -1
  54. package/assets/css/mobile-core.min.css +1 -1
  55. package/assets/css/mobile-core.min.css.map +1 -1
  56. package/assets/css/mobile.min.css +1 -1
  57. package/assets/css/mobile.min.css.map +1 -1
  58. package/assets/css/style.min.css +1 -1
  59. package/assets/css/style.min.css.map +1 -1
  60. package/assets/js/components/accordion/accordion.component.min.js +1 -1
  61. package/assets/js/components/actionbar/actionbar.component.js +51 -31
  62. package/assets/js/components/actionbar/actionbar.component.min.js +17 -17
  63. package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
  64. package/assets/js/components/address-lookup/address-lookup.component.min.js +1 -1
  65. package/assets/js/components/advanced-select/advanced-select.component.js +63 -0
  66. package/assets/js/components/advanced-select/advanced-select.component.min.js +23 -0
  67. package/assets/js/components/advanced-select/advanced-select.component.min.js.map +1 -0
  68. package/assets/js/components/applied-filters/applied-filters.component.min.js +1 -1
  69. package/assets/js/components/barchart/barchart.component.min.js +2 -2
  70. package/assets/js/components/bento-grid/bento-grid.component.min.js +1 -1
  71. package/assets/js/components/calendar/calendar.component.js +1083 -0
  72. package/assets/js/components/calendar/calendar.component.min.js +170 -0
  73. package/assets/js/components/calendar/calendar.component.min.js.map +1 -0
  74. package/assets/js/components/card/card.component.js +20 -8
  75. package/assets/js/components/card/card.component.min.js +10 -10
  76. package/assets/js/components/card/card.component.min.js.map +1 -1
  77. package/assets/js/components/carousel/carousel.component.min.js +2 -2
  78. package/assets/js/components/collapsible-side/collapsible-side.component.js +47 -12
  79. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +6 -5
  80. package/assets/js/components/collapsible-side/collapsible-side.component.min.js.map +1 -1
  81. package/assets/js/components/content/content.component.js +66 -0
  82. package/assets/js/components/content/content.component.min.js +15 -0
  83. package/assets/js/components/content/content.component.min.js.map +1 -0
  84. package/assets/js/components/doughnutchart/doughnutchart.component.min.js +2 -2
  85. package/assets/js/components/fileupload/fileupload.component.min.js +1 -1
  86. package/assets/js/components/filter-card/filter-card.component.min.js +1 -1
  87. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  88. package/assets/js/components/header/header.component.min.js +1 -1
  89. package/assets/js/components/inline-edit/inline-edit.component.min.js +5 -5
  90. package/assets/js/components/marketing/marketing.component.js +1 -1
  91. package/assets/js/components/marketing/marketing.component.min.js +2 -2
  92. package/assets/js/components/marketing/marketing.component.min.js.map +1 -1
  93. package/assets/js/components/menu/menu.component.js +148 -161
  94. package/assets/js/components/menu/menu.component.min.js +4 -69
  95. package/assets/js/components/menu/menu.component.min.js.map +1 -1
  96. package/assets/js/components/milestone/milestone.component.js +38 -0
  97. package/assets/js/components/milestone/milestone.component.min.js +15 -0
  98. package/assets/js/components/milestone/milestone.component.min.js.map +1 -0
  99. package/assets/js/components/milestone-group/milestone-group.component.js +35 -0
  100. package/assets/js/components/milestone-group/milestone-group.component.min.js +13 -0
  101. package/assets/js/components/milestone-group/milestone-group.component.min.js.map +1 -0
  102. package/assets/js/components/multi-step/multi-step.component.min.js +1 -1
  103. package/assets/js/components/multiselect/multiselect.component.js +54 -2
  104. package/assets/js/components/multiselect/multiselect.component.min.js +5 -5
  105. package/assets/js/components/multiselect/multiselect.component.min.js.map +1 -1
  106. package/assets/js/components/nav/nav.component.js +19 -0
  107. package/assets/js/components/nav/nav.component.min.js +6 -6
  108. package/assets/js/components/nav/nav.component.min.js.map +1 -1
  109. package/assets/js/components/notification/notification.component.js +17 -11
  110. package/assets/js/components/notification/notification.component.min.js +4 -4
  111. package/assets/js/components/notification/notification.component.min.js.map +1 -1
  112. package/assets/js/components/pagination/pagination.component.min.js +1 -1
  113. package/assets/js/components/rank/rank.component.js +346 -210
  114. package/assets/js/components/rank/rank.component.min.js +346 -211
  115. package/assets/js/components/rank/rank.component.min.js.map +1 -1
  116. package/assets/js/components/rankings/rankings.component.js +17 -8
  117. package/assets/js/components/rankings/rankings.component.min.js +14 -8
  118. package/assets/js/components/rankings/rankings.component.min.js.map +1 -1
  119. package/assets/js/components/record-card/record-card.component.min.js +1 -1
  120. package/assets/js/components/search/search.component.js +5 -3
  121. package/assets/js/components/search/search.component.min.js +6 -6
  122. package/assets/js/components/search/search.component.min.js.map +1 -1
  123. package/assets/js/components/slider/slider.component.min.js +1 -1
  124. package/assets/js/components/split-button/split-button.component.js +60 -0
  125. package/assets/js/components/split-button/split-button.component.min.js +34 -0
  126. package/assets/js/components/split-button/split-button.component.min.js.map +1 -0
  127. package/assets/js/components/table/table.component.js +12 -0
  128. package/assets/js/components/table/table.component.min.js +3 -3
  129. package/assets/js/components/table/table.component.min.js.map +1 -1
  130. package/assets/js/components/table-ajax/table-ajax.component.js +12 -0
  131. package/assets/js/components/table-ajax/table-ajax.component.min.js +3 -3
  132. package/assets/js/components/table-ajax/table-ajax.component.min.js.map +1 -1
  133. package/assets/js/components/table-basic/table-basic.component.min.js +1 -1
  134. package/assets/js/components/table-basic/table-basic.component.min.js.map +1 -1
  135. package/assets/js/components/table-no-submit/table-no-submit.component.js +12 -0
  136. package/assets/js/components/table-no-submit/table-no-submit.component.min.js +3 -3
  137. package/assets/js/components/table-no-submit/table-no-submit.component.min.js.map +1 -1
  138. package/assets/js/components/table-submit/table-submit.component.js +12 -0
  139. package/assets/js/components/table-submit/table-submit.component.min.js +3 -3
  140. package/assets/js/components/table-submit/table-submit.component.min.js.map +1 -1
  141. package/assets/js/components/tabs/tabs.component.min.js +1 -1
  142. package/assets/js/components/video-card/video-card.component.min.js +1 -1
  143. package/assets/js/components/video-card/video-card.component.min.js.map +1 -1
  144. package/assets/js/components.js +58 -0
  145. package/assets/js/modules/advanced-select.js +106 -0
  146. package/assets/js/modules/dialogs.js +53 -51
  147. package/assets/js/modules/dynamicEvents.js +7 -0
  148. package/assets/js/modules/milestone-group.js +30 -0
  149. package/assets/js/modules/milestone.js +89 -0
  150. package/assets/js/modules/table.js +11 -1
  151. package/assets/js/modules/videos.js +1 -1
  152. package/assets/js/scripts.bundle.js +3 -3
  153. package/assets/js/scripts.bundle.js.map +1 -1
  154. package/assets/js/scripts.bundle.min.js +2 -2
  155. package/assets/js/scripts.bundle.min.js.map +1 -1
  156. package/assets/js/scripts.js +4 -0
  157. package/assets/sass/_components.scss +11 -0
  158. package/assets/sass/_functions/utility-mixins.scss +41 -0
  159. package/assets/sass/_functions/variables.scss +11 -8
  160. package/assets/sass/components/actionbar.component.scss +3 -4
  161. package/assets/sass/components/actionbar.global.scss +4 -4
  162. package/assets/sass/components/bento-grid.global.scss +0 -1
  163. package/assets/sass/components/calendar.component.scss +1380 -0
  164. package/assets/sass/components/calendar.config.scss +476 -0
  165. package/assets/sass/components/card.component.scss +4 -34
  166. package/assets/sass/components/carousel.component.scss +5 -0
  167. package/assets/sass/components/charts.module.scss +0 -2
  168. package/assets/sass/components/collapsible-side.scss +91 -95
  169. package/assets/sass/components/content.component.scss +18 -0
  170. package/assets/sass/components/inline-edit.scss +2 -0
  171. package/assets/sass/components/{marketing.scss → marketing.component.scss} +2 -6
  172. package/assets/sass/components/menu.component.scss +118 -31
  173. package/assets/sass/components/menu.scss +68 -7
  174. package/assets/sass/components/milestone.scss +207 -0
  175. package/assets/sass/components/multiselect.scss +3 -0
  176. package/assets/sass/components/nav.component.scss +1 -0
  177. package/assets/sass/components/nav.global.scss +30 -0
  178. package/assets/sass/components/rank.component.scss +197 -33
  179. package/assets/sass/components/rankings.component.scss +39 -35
  180. package/assets/sass/components/rankings.global.scss +66 -10
  181. package/assets/sass/components/split-button.component.scss +77 -0
  182. package/assets/sass/components/table-basic.global.scss +2 -4
  183. package/assets/sass/components/table.global.scss +4 -4
  184. package/assets/sass/elements/badge-tag.scss +5 -1
  185. package/assets/sass/elements/buttons--compact.scss +4 -0
  186. package/assets/sass/elements/buttons--global.scss +1 -1
  187. package/assets/sass/elements/details.scss +0 -1
  188. package/assets/sass/elements/dialog.scss +1 -3
  189. package/assets/sass/elements/forms.scss +148 -22
  190. package/assets/sass/elements/links.scss +132 -4
  191. package/assets/sass/elements/lists.scss +61 -0
  192. package/assets/sass/elements/popover.scss +64 -10
  193. package/assets/sass/elements/toggle-button.scss +7 -8
  194. package/assets/sass/elements/type.scss +7 -10
  195. package/assets/sass/foundations/reboot.scss +3 -3
  196. package/assets/sass/templates/form.scss +0 -2
  197. package/assets/ts/components/actionbar/actionbar.component.ts +49 -23
  198. package/assets/ts/components/advanced-select/advanced-select.component.ts +74 -0
  199. package/assets/ts/components/calendar/calendar.component.ts +1460 -0
  200. package/assets/ts/components/card/card.component.ts +22 -14
  201. package/assets/ts/components/collapsible-side/collapsible-side.component.ts +53 -12
  202. package/assets/ts/components/content/content.component.ts +78 -0
  203. package/assets/ts/components/marketing/marketing.component.ts +1 -1
  204. package/assets/ts/components/menu/menu.component.ts +162 -173
  205. package/assets/ts/components/milestone/milestone.component.ts +45 -0
  206. package/assets/ts/components/milestone-group/milestone-group.component.ts +41 -0
  207. package/assets/ts/components/multiselect/multiselect.component.ts +69 -3
  208. package/assets/ts/components/nav/nav.component.ts +25 -0
  209. package/assets/ts/components/notification/notification.component.ts +34 -11
  210. package/assets/ts/components/rank/rank.component.ts +345 -214
  211. package/assets/ts/components/rankings/rankings.component.ts +28 -15
  212. package/assets/ts/components/search/search.component.ts +6 -4
  213. package/assets/ts/components/split-button/split-button.component.ts +69 -0
  214. package/assets/ts/components/table/table.component.ts +14 -0
  215. package/assets/ts/components/table-ajax/table-ajax.component.ts +14 -0
  216. package/assets/ts/components/table-no-submit/table-no-submit.component.ts +14 -0
  217. package/assets/ts/components/table-submit/table-submit.component.ts +14 -0
  218. package/assets/ts/components/video-card/video-card.component.ts +2 -3
  219. package/assets/ts/components.ts +63 -0
  220. package/assets/ts/modules/advanced-select.ts +125 -0
  221. package/assets/ts/modules/dialogs.ts +64 -61
  222. package/assets/ts/modules/dynamicEvents.ts +12 -1
  223. package/assets/ts/modules/milestone-group.ts +42 -0
  224. package/assets/ts/modules/milestone.ts +122 -0
  225. package/assets/ts/modules/table.ts +15 -1
  226. package/assets/ts/modules/videos.ts +19 -37
  227. package/assets/ts/scripts.ts +5 -3
  228. package/dist/components.es.js +41 -1923
  229. package/dist/components.umd.js +127 -171
  230. package/package.json +1 -1
  231. package/src/components/AdvancedSelect/AdvancedSelect.vue +23 -0
  232. package/src/components/Calendar/Calendar.vue +26 -0
  233. package/src/components/Card/Card.vue +1 -1
  234. package/src/components/CollapsibleSideMenu/CollapsibleSideMenu.vue +7 -13
  235. package/src/components/Content/Content.vue +23 -0
  236. package/src/components/Milestones/Milestone.vue +27 -0
  237. package/src/components/Milestones/MilestoneGroup.vue +27 -0
  238. package/src/components/Rank/Rank.vue +1 -2
  239. package/src/components/Rankings/Rankings.vue +9 -10
  240. package/src/components/SplitButton/README.md +19 -0
  241. package/src/components/SplitButton/SplitButton.vue +26 -0
  242. package/src/index.js +44 -41
  243. package/assets/css/components/marketing.css +0 -1
  244. package/assets/css/components/marketing.css.map +0 -1
  245. package/assets/css/components/nav.old.css +0 -1
  246. package/assets/css/components/nav.old.css.map +0 -1
  247. package/assets/sass/components/nav.old.scss +0 -891
@@ -19,9 +19,15 @@ class iamRankings extends HTMLElement {
19
19
  ${loadCSS}
20
20
  </style>
21
21
  <div class="podium">
22
- <div><iam-rank>1st</iam-rank><span class="first-position"></span></div>
23
- <div><iam-rank>2nd</iam-rank><span class="second-position"></span></div>
24
- <div><iam-rank>3rd</iam-rank><span class="third-position"></span></div>
22
+ <div>
23
+ <iam-rank class="rank--trophy first-position">1st</iam-rank>
24
+ </div>
25
+ <div>
26
+ <iam-rank class="second-position">2nd</iam-rank>
27
+ </div>
28
+ <div>
29
+ <iam-rank class="third-position">3rd</iam-rank>
30
+ </div>
25
31
  </div>
26
32
  <div class="mh-md" part="leaderboard"><slot></slot></div>
27
33
  `;
@@ -33,30 +39,37 @@ class iamRankings extends HTMLElement {
33
39
  }
34
40
 
35
41
  connectedCallback(): void {
36
-
37
-
38
42
  const firstText = this.shadowRoot?.querySelector('.first-position');
39
43
  const secondText = this.shadowRoot?.querySelector('.second-position');
40
44
  const thirdText = this.shadowRoot?.querySelector('.third-position');
41
- const max = this.hasAttribute('data-max') ? this.getAttribute('data-max') : 100;
42
-
43
- firstText?.innerHTML = this.querySelector('tbody tr:nth-child(1) :is(td,th):nth-child(1)')?.textContent;
44
- secondText?.innerHTML = this.querySelector('tbody tr:nth-child(2) :is(td,th):nth-child(1)')?.textContent;
45
- thirdText?.innerHTML = this.querySelector('tbody tr:nth-child(3) :is(td,th):nth-child(1)')?.textContent;
46
45
 
46
+ firstText?.setAttribute(
47
+ 'data-title',
48
+ this.querySelector('tbody tr:nth-child(1) :is(td,th):nth-child(1)')?.textContent
49
+ );
50
+ secondText?.setAttribute(
51
+ 'data-title',
52
+ this.querySelector('tbody tr:nth-child(2) :is(td,th):nth-child(1)')?.textContent
53
+ );
54
+ thirdText?.setAttribute(
55
+ 'data-title',
56
+ this.querySelector('tbody tr:nth-child(3) :is(td,th):nth-child(1)')?.textContent
57
+ );
47
58
 
48
-
59
+ const max = this.hasAttribute('data-max') ? this.getAttribute('data-max') : 100;
49
60
  this.querySelectorAll('tbody tr').forEach((element) => {
50
-
51
61
  const value = element.querySelector('td:last-child')?.textContent?.trim();
52
62
 
53
- if(!element.querySelector(':first-child progress'))
63
+ if (!element.querySelector(':first-child progress'))
54
64
  element.querySelector(':first-child')?.innerHTML += `<progress max="${max}" value="${value}"></progress>`;
55
65
  });
56
66
 
57
- trackComponent(this, 'iam-rank', ['select-card']);
58
- }
67
+ if (!this.classList.contains('hide-gold')) {
68
+ const firstRow = this.querySelector('tbody tr th');
59
69
 
70
+ firstRow?.insertAdjacentHTML('afterbegin', `<iam-rank class="rank--medal first-position">1st</iam-rank>`);
71
+ }
72
+ }
60
73
  }
61
74
 
62
75
  export default iamRankings;
@@ -1,5 +1,6 @@
1
1
  import Cookies from 'js-cookie';
2
2
  import { safeID, resolvePath, isTraversable } from '../../modules/helpers';
3
+ import advancedSelect from '../../modules/advanced-select';
3
4
 
4
5
  // Data layer Web component created
5
6
  window.dataLayer = window.dataLayer || [];
@@ -75,6 +76,8 @@ class iamSearch extends HTMLElement {
75
76
  displayInputField.setAttribute('list', listID);
76
77
  }
77
78
 
79
+ advancedSelect(this, displayInputField, datalist, true);
80
+
78
81
  // Search the endpoint when 3 characters has been added
79
82
  if (searchWrapper.hasAttribute('data-url')) {
80
83
  displayInputField.addEventListener('input', () => {
@@ -91,6 +94,7 @@ class iamSearch extends HTMLElement {
91
94
 
92
95
  if (match) {
93
96
  inputField.value = match.getAttribute('data-value');
97
+ displayInputField.value = match.getAttribute('data-value');
94
98
  } else if (displayInputField.value.length > 0 && !subMatch) {
95
99
  displayInputField.classList.add('is-invalid');
96
100
  displayInputField.closest('label').setAttribute('data-error', 'No results returned');
@@ -141,10 +145,8 @@ class iamSearch extends HTMLElement {
141
145
  const actualValue = resolvePath(item, valueSchema, '');
142
146
  const displayValue = resolvePath(item, displaySchema, '').replace('\n', ', ');
143
147
 
144
- console.log(displayValue);
145
-
146
148
  if (!datalist.querySelector(`option[data-value="${actualValue}"]`))
147
- listString += `<option value="${displayValue}" data-value="${actualValue}"></option>`;
149
+ listString += `<option value="${displayValue}" data-value="${actualValue}">${displayValue}</option>`;
148
150
  });
149
151
  } else if (typeof loopValues == 'object') {
150
152
  for (const [key, value] of Object.entries(loopValues)) {
@@ -154,7 +156,7 @@ class iamSearch extends HTMLElement {
154
156
  const displayValue = resolvePath(item, displaySchema, '').replace('\n', ', ');
155
157
 
156
158
  if (!datalist.querySelector(`option[data-value="${actualValue}"]`))
157
- listString += `<option value="${key}: ${displayValue}" data-value='${actualValue}'></option>`;
159
+ listString += `<option value="${key}: ${displayValue}" data-value='${actualValue}'>${key}: ${displayValue}</option>`;
158
160
  });
159
161
  }
160
162
  }
@@ -0,0 +1,69 @@
1
+ import iamMenu from '../menu/menu.component';
2
+
3
+ // Data layer Web component created
4
+ window.dataLayer = window.dataLayer || [];
5
+ window.dataLayer.push({
6
+ event: 'customElementRegistered',
7
+ element: 'split-button',
8
+ });
9
+
10
+ class iamSplitButton extends HTMLElement {
11
+ constructor() {
12
+ super();
13
+ this.attachShadow({ mode: 'open' });
14
+
15
+ const assetLocation = document.body.hasAttribute('data-assets-location')
16
+ ? document.body.getAttribute('data-assets-location')
17
+ : '/assets';
18
+ const coreCSS = document.body.hasAttribute('data-core-css')
19
+ ? document.body.getAttribute('data-core-css')
20
+ : `${assetLocation}/css/core.min.css`;
21
+ const loadCSS = `@import "${assetLocation}/css/components/split-button.component.css";`;
22
+
23
+ const template = document.createElement('template');
24
+ template.innerHTML = `
25
+ <style>
26
+ @import "${coreCSS}";
27
+ ${loadCSS}
28
+ ${this.hasAttribute('css') ? `@import "${this.getAttribute('css')}";` : ``}
29
+ </style>
30
+ <div class="split-button">
31
+ <slot></slot>
32
+ <div class="dropdown">
33
+ <button class="btn btn-split" part="dropdown" popovertarget="actions" style="anchor-name: --anchor-el;" title="Further actions">
34
+ <i class="fa fa-angle-down fa-light"></i>
35
+ </button>
36
+
37
+ <iam-menu id="actions" style="position-anchor: --anchor-el;" popover>
38
+ <slot name="menu-item">
39
+
40
+ </slot>
41
+ </iam-menu>
42
+
43
+ </div>
44
+ </div>
45
+ `;
46
+ this.shadowRoot.appendChild(template.content.cloneNode(true));
47
+ }
48
+
49
+ connectedCallback(): void {
50
+ const dropdown = this.shadowRoot.querySelector('.split-menu');
51
+ const splitBtn = this.shadowRoot.querySelector('.btn-split');
52
+ const html = document.querySelector('html');
53
+ const mainButton = this.querySelector('.btn');
54
+
55
+ if (!window.customElements.get(`iam-menu`)) window.customElements.define(`iam-menu`, iamMenu);
56
+
57
+ splitBtn.className = `${mainButton.className} btn-split`;
58
+
59
+ if (mainButton.disabled) {
60
+ splitBtn.disabled = true;
61
+ }
62
+
63
+ if (mainButton.classList.contains('btn-sm')) {
64
+ splitBtn.classList.add('btn-sm');
65
+ }
66
+ }
67
+ }
68
+
69
+ export default iamSplitButton;
@@ -55,6 +55,20 @@ class iamTableBasic extends HTMLElement {
55
55
 
56
56
  const savedTableBody = table.querySelector('tbody').cloneNode(true);
57
57
 
58
+ const assetLocation = document.body.hasAttribute('data-assets-location')
59
+ ? document.body.getAttribute('data-assets-location')
60
+ : '/assets';
61
+
62
+ if (!window.customElements.get(`iam-menu`)) {
63
+ import(/* @vite-ignore */ `${assetLocation}/js/components/menu/menu.component.js`)
64
+ .then((module) => {
65
+ window.customElements.define(`iam-menu`, module.default);
66
+ })
67
+ .catch((err) => {
68
+ console.log(err.message);
69
+ });
70
+ }
71
+
58
72
  moveAttributesToComponents(this);
59
73
 
60
74
  setupBasicTable(this, table, form, pagination);
@@ -49,6 +49,20 @@ class iamTableAjax extends HTMLElement {
49
49
 
50
50
  const form = findForm(this, table);
51
51
 
52
+ const assetLocation = document.body.hasAttribute('data-assets-location')
53
+ ? document.body.getAttribute('data-assets-location')
54
+ : '/assets';
55
+
56
+ if (!window.customElements.get(`iam-menu`)) {
57
+ import(/* @vite-ignore */ `${assetLocation}/js/components/menu/menu.component.js`)
58
+ .then((module) => {
59
+ window.customElements.define(`iam-menu`, module.default);
60
+ })
61
+ .catch((err) => {
62
+ console.log(err.message);
63
+ });
64
+ }
65
+
52
66
  setupBasicTable(this, table, form, pagination);
53
67
 
54
68
  setupAdvancedTable(this, table, form, pagination);
@@ -51,6 +51,20 @@ class iamTableNoSubmit extends HTMLElement {
51
51
 
52
52
  const form = findForm(this, table);
53
53
 
54
+ const assetLocation = document.body.hasAttribute('data-assets-location')
55
+ ? document.body.getAttribute('data-assets-location')
56
+ : '/assets';
57
+
58
+ if (!window.customElements.get(`iam-menu`)) {
59
+ import(/* @vite-ignore */ `${assetLocation}/js/components/menu/menu.component.js`)
60
+ .then((module) => {
61
+ window.customElements.define(`iam-menu`, module.default);
62
+ })
63
+ .catch((err) => {
64
+ console.log(err.message);
65
+ });
66
+ }
67
+
54
68
  setupBasicTable(this, table, form, pagination);
55
69
 
56
70
  setupAdvancedTable(this, table);
@@ -49,6 +49,20 @@ class iamTableSubmit extends HTMLElement {
49
49
  if (params.has('page')) pagination.setAttribute('data-page', params.get('page'));
50
50
  if (params.has('show')) pagination.setAttribute('data-show', params.get('show'));
51
51
 
52
+ const assetLocation = document.body.hasAttribute('data-assets-location')
53
+ ? document.body.getAttribute('data-assets-location')
54
+ : '/assets';
55
+
56
+ if (!window.customElements.get(`iam-menu`)) {
57
+ import(/* @vite-ignore */ `${assetLocation}/js/components/menu/menu.component.js`)
58
+ .then((module) => {
59
+ window.customElements.define(`iam-menu`, module.default);
60
+ })
61
+ .catch((err) => {
62
+ console.log(err.message);
63
+ });
64
+ }
65
+
52
66
  setupBasicTable(this, table, form, pagination);
53
67
 
54
68
  setupAdvancedTable(this, table, form, pagination);
@@ -1,7 +1,6 @@
1
1
  import { trackComponent, trackComponentRegistered } from '../_global';
2
2
  import { cardHTML, setupCard } from '../../modules/card.module';
3
- import {loadYouTubeScripts,createYoutTubeVideo} from '../../modules/videos';
4
-
3
+ import { loadYouTubeScripts, createYoutTubeVideo } from '../../modules/videos';
5
4
 
6
5
  trackComponentRegistered('iam-video-card');
7
6
 
@@ -83,7 +82,7 @@ class iamVideoCard extends HTMLElement {
83
82
  });
84
83
  cardComponent.dispatchEvent(customEvent);
85
84
 
86
- createYoutTubeVideo(embed,this.getAttribute('[data-youtbue]'));
85
+ createYoutTubeVideo(embed, this.getAttribute('[data-youtbue]'));
87
86
  dialog.showModal();
88
87
  });
89
88
 
@@ -0,0 +1,63 @@
1
+ // @ts-nocheck
2
+ const components = [
3
+ 'accordion',
4
+ 'header',
5
+ 'table',
6
+ 'tabs',
7
+ 'card',
8
+ 'filter-card',
9
+ 'video-card',
10
+ 'record-card',
11
+ 'filterlist',
12
+ 'applied-filters',
13
+ 'pagination',
14
+ 'notification',
15
+ 'actionbar',
16
+ 'nav',
17
+ 'collapsible-side',
18
+ 'address-lookup',
19
+ 'fileupload',
20
+ 'search',
21
+ 'inline-edit',
22
+ 'multiselect',
23
+ 'multi-step',
24
+ 'slider',
25
+ 'carousel',
26
+ 'marketing',
27
+ 'barchart',
28
+ 'splitbutton',
29
+ ];
30
+
31
+ const prefix = 'iam';
32
+ const options = {
33
+ rootMargin: '50px',
34
+ threshold: 0.1,
35
+ };
36
+ const componentExt = '.component.min.js';
37
+
38
+ // Load components - Each component will load once the first of its type has been loaded
39
+ components.forEach((component) => {
40
+ if (document.getElementsByTagName(`${prefix}-${component}`).length === 0) return;
41
+
42
+ const callback = (entries: any) => {
43
+ entries.forEach((entry: any) => {
44
+ if (entry.intersectionRatio > 0) {
45
+ console.log(component);
46
+
47
+ import(`./components/${component}/${component}${componentExt}`)
48
+ .then((module) => {
49
+ if (!window.customElements.get(`${prefix}-${component}`))
50
+ window.customElements.define(`${prefix}-${component}`, module.default);
51
+ })
52
+ .catch((err) => {
53
+ console.log(err.message);
54
+ });
55
+
56
+ intObserver.unobserve(entry.target);
57
+ }
58
+ });
59
+ };
60
+
61
+ const intObserver = new IntersectionObserver(callback, options);
62
+ intObserver.observe(document.getElementsByTagName(`${prefix}-${component}`)[0]);
63
+ });
@@ -0,0 +1,125 @@
1
+ function advancedSelect(advancedSelect, displayInputField, datalist, isSearch = false): boolean | void {
2
+ let currentFocus = -1;
3
+
4
+ if(!isSearch){
5
+ displayInputField.addEventListener('focus', function () {
6
+ displayInputField.setAttribute('placeholder', displayInputField.value);
7
+ displayInputField.setAttribute('data-value', displayInputField.value);
8
+ displayInputField.value = '';
9
+
10
+ displayInputField.setAttribute('data-list', displayInputField.getAttribute('list'));
11
+ displayInputField.setAttribute('list', '');
12
+
13
+ datalist.style.display = 'block';
14
+ });
15
+ }
16
+ else {
17
+ displayInputField.addEventListener('focus', function () {
18
+
19
+ displayInputField.setAttribute('data-list', displayInputField.getAttribute('list'));
20
+ displayInputField.setAttribute('list', '');
21
+
22
+ datalist.style.display = 'block';
23
+ });
24
+ }
25
+
26
+ displayInputField.addEventListener('blur', function () {
27
+ if (displayInputField.hasAttribute('data-value')) {
28
+ displayInputField.value = displayInputField.getAttribute('data-value');
29
+ }
30
+
31
+ setTimeout(() => {
32
+ datalist.style.display = 'none';
33
+ }, 500);
34
+ });
35
+
36
+ for (const option of datalist.options) {
37
+ if (option.innerHTML == '') option.innerHTML = option.value;
38
+ }
39
+
40
+
41
+ advancedSelect.addEventListener('click', function () {
42
+
43
+ if (event && event.target instanceof HTMLElement && event.target.closest('datalist option')) {
44
+ const option = event.target.closest('datalist option');
45
+
46
+ displayInputField.value = option.value;
47
+
48
+ if(typeof window.triggerDynamicEvent == "function")
49
+ window.triggerDynamicEvent(displayInputField);
50
+
51
+ datalist.style.display = 'none';
52
+
53
+ for (const optionInner of datalist.options) {
54
+ optionInner.classList.remove('active')
55
+ }
56
+
57
+ option.classList.add('active');
58
+ }
59
+
60
+ });
61
+
62
+
63
+ displayInputField.addEventListener('input', function () {
64
+ displayInputField.removeAttribute('data-value');
65
+ currentFocus = -1;
66
+ const text = displayInputField.value.toUpperCase();
67
+ for (const option of datalist.options) {
68
+ if (option.value.toUpperCase().indexOf(text) > -1) {
69
+ option.style.display = 'block';
70
+ } else {
71
+ option.style.display = 'none';
72
+ }
73
+ }
74
+ });
75
+
76
+ displayInputField.addEventListener('keydown', function (e) {
77
+ if (e.keyCode == 40) {
78
+ currentFocus++;
79
+ addActive(datalist.options);
80
+ } else if (e.keyCode == 38) {
81
+ currentFocus--;
82
+ addActive(datalist.options);
83
+ } else if (e.keyCode == 13) {
84
+ e.preventDefault();
85
+ if (currentFocus > -1) {
86
+ /*and simulate a click on the "active" item:*/
87
+ if (datalist.options) datalist.options[currentFocus].click();
88
+ }
89
+ }
90
+ });
91
+
92
+ function addActive(x): void {
93
+ if (!x) return false;
94
+ removeActive(x);
95
+ if (currentFocus >= x.length) currentFocus = 0;
96
+ if (currentFocus < 0) currentFocus = x.length - 1;
97
+ x[currentFocus].classList.add('active');
98
+ }
99
+
100
+ function removeActive(x): void {
101
+ for (let i = 0; i < x.length; i++) {
102
+ x[i].classList.remove('active');
103
+ }
104
+ }
105
+
106
+
107
+ // Add the empty button
108
+ displayInputField
109
+ .closest('label')
110
+ .insertAdjacentHTML('beforeend', '<button class="empty btn btn-action"><i class="fa-light fa-times me-0"></i></button>');
111
+ const closeBtn = advancedSelect.querySelector('.empty');
112
+
113
+ closeBtn.addEventListener('click', function (e) {
114
+ displayInputField.removeAttribute('placeholder');
115
+ displayInputField.removeAttribute('data-value');
116
+ displayInputField.value = '';
117
+
118
+ for (const optionInner of datalist.options) {
119
+ optionInner.classList.remove('active')
120
+ optionInner.removeAttribute('style');
121
+ }
122
+ });
123
+ }
124
+
125
+ export default advancedSelect;
@@ -132,80 +132,83 @@ const extendDialogs = (body): void => {
132
132
 
133
133
  // Popover
134
134
  if (event && event.target instanceof HTMLElement && event.target.closest('.dialog__wrapper > button')) {
135
- event.stopPropagation();
136
-
137
135
  const btn = event.target.closest('.dialog__wrapper > button');
138
136
  const parent = btn.parentNode;
139
- let dataEvent = 'openPopover';
140
- const popover = parent.querySelector(':scope > dialog');
141
-
142
- // close open dialogs
143
- if (
144
- document.querySelector('*:not([data-keep-open]) > dialog[open]') &&
145
- document.querySelector('*:not([data-keep-open]) > dialog[open]') != popover
146
- ) {
147
- // Check that the ope dialog isn't a parent of the dialog being opened
148
- if (btn.closest('dialog[open]') != document.querySelector('*:not([data-keep-open]) > dialog[open]')) {
149
- document.querySelector('*:not([data-keep-open]) > dialog[open]').close();
150
- }
151
- }
152
-
153
- // Remove active class from exiting active buttons
154
- Array.from(document.querySelectorAll('.dialog__wrapper > button')).forEach((btnElement) => {
155
- btnElement.removeAttribute('aria-expanded');
156
- });
157
137
 
158
- if (popover.hasAttribute('open')) {
159
- popover.close();
160
- dataEvent = 'closePopover';
138
+ if (parent.querySelector('dialog')) {
139
+ event.stopPropagation();
161
140
 
162
- popover.removeAttribute('style');
163
- btn.removeAttribute('aria-expanded');
164
- } else {
165
- popover.show();
166
- btn.setAttribute('aria-expanded', true);
141
+ let dataEvent = 'openPopover';
142
+ const popover = parent.querySelector(':scope > dialog');
167
143
 
168
- const position = btn.getBoundingClientRect();
169
- let topOffset = position.top;
170
- let leftOffset = position.left;
171
-
172
- if (btn.closest('iam-table')) {
173
- const container = btn.closest('iam-table').parentNode.getBoundingClientRect();
174
-
175
- topOffset -= container.top;
176
- leftOffset -= container.left;
144
+ // close open dialogs
145
+ if (
146
+ document.querySelector('*:not([data-keep-open]) > dialog[open]') &&
147
+ document.querySelector('*:not([data-keep-open]) > dialog[open]') != popover
148
+ ) {
149
+ // Check that the ope dialog isn't a parent of the dialog being opened
150
+ if (btn.closest('dialog[open]') != document.querySelector('*:not([data-keep-open]) > dialog[open]')) {
151
+ document.querySelector('*:not([data-keep-open]) > dialog[open]').close();
152
+ }
177
153
  }
178
154
 
179
- if (popover.classList.contains('dialog--fix')) {
180
- popover.setAttribute(
181
- 'style',
182
- `position:fixed;top: ${topOffset}px; left: ${leftOffset}px; margin: 3rem 0 0 0;`
183
- );
155
+ // Remove active class from exiting active buttons
156
+ Array.from(document.querySelectorAll('.dialog__wrapper > button')).forEach((btnElement) => {
157
+ btnElement.removeAttribute('aria-expanded');
158
+ });
159
+
160
+ if (popover.hasAttribute('open')) {
161
+ popover.close();
162
+ dataEvent = 'closePopover';
163
+
164
+ popover.removeAttribute('style');
165
+ btn.removeAttribute('aria-expanded');
166
+ } else {
167
+ popover.show();
168
+ btn.setAttribute('aria-expanded', true);
169
+
170
+ const position = btn.getBoundingClientRect();
171
+ let topOffset = position.top;
172
+ let leftOffset = position.left;
173
+
174
+ if (btn.closest('iam-table')) {
175
+ const container = btn.closest('iam-table').parentNode.getBoundingClientRect();
176
+
177
+ topOffset -= container.top;
178
+ leftOffset -= container.left;
179
+ }
180
+
181
+ if (popover.classList.contains('dialog--fix')) {
182
+ popover.setAttribute(
183
+ 'style',
184
+ `position:fixed;top: ${topOffset}px; left: ${leftOffset}px; margin: 3rem 0 0 0;`
185
+ );
186
+ }
184
187
  }
185
- }
186
188
 
187
- // When the dialog is fixed it could dip under the viewport
188
- // Lets check the dimensions and transform it to appear above
189
- let boundingRec = popover.getBoundingClientRect();
190
- const popoverBottom = boundingRec.bottom - window.scrollY;
191
- const windowPos = window.innerHeight - window.scrollY;
192
- if (popoverBottom > windowPos) {
193
- const currentStyle = popover.hasAttribute('style') ? popover.getAttribute('style') + ' ' : '';
194
- popover.setAttribute('style', currentStyle + `transform: translate(0, calc(-100% - 4rem))`);
189
+ // When the dialog is fixed it could dip under the viewport
190
+ // Lets check the dimensions and transform it to appear above
191
+ let boundingRec = popover.getBoundingClientRect();
192
+ const popoverBottom = boundingRec.bottom - window.scrollY;
193
+ const windowPos = window.innerHeight - window.scrollY;
194
+ if (popoverBottom > windowPos) {
195
+ const currentStyle = popover.hasAttribute('style') ? popover.getAttribute('style') + ' ' : '';
196
+ popover.setAttribute('style', currentStyle + `transform: translate(0, calc(-100% - 4rem))`);
195
197
 
196
- // Check that the dialog doesn't go over the top of the page
197
- boundingRec = popover.getBoundingClientRect();
198
- const popoverTop = boundingRec.top - window.scrollY;
198
+ // Check that the dialog doesn't go over the top of the page
199
+ boundingRec = popover.getBoundingClientRect();
200
+ const popoverTop = boundingRec.top - window.scrollY;
199
201
 
200
- if (popoverTop < 100) popover.removeAttribute('style');
201
- }
202
+ if (popoverTop < 100) popover.removeAttribute('style');
203
+ }
202
204
 
203
- window.dataLayer = window.dataLayer || [];
205
+ window.dataLayer = window.dataLayer || [];
204
206
 
205
- window.dataLayer.push({
206
- event: dataEvent,
207
- id: btn.textContent,
208
- });
207
+ window.dataLayer.push({
208
+ event: dataEvent,
209
+ id: btn.textContent,
210
+ });
211
+ }
209
212
  }
210
213
 
211
214
  // Close popovers when clicked away
@@ -1,4 +1,14 @@
1
1
  // Create the event listeners
2
+ window.triggerDynamicEvent = (element, event = "change"): void => {
3
+ console.log('event');
4
+
5
+ if(element.hasAttribute('data-change-events') && event == "change")
6
+ splitEvents(element, element.getAttribute('data-change-events'));
7
+
8
+ if(element.hasAttribute('data-click-events') && event == "click")
9
+ splitEvents(element, element.getAttribute('data-click-events'));
10
+ }
11
+
2
12
  const createDynamicEvents = (): void => {
3
13
  // Change event
4
14
  document.addEventListener('change', (event) => {
@@ -46,7 +56,8 @@ const checkConditions = (element, event): void | boolean => {
46
56
 
47
57
  if (document.querySelector(`${event['in-list']} option[value="${element.value}"]`)) {
48
58
  runEvent(match, event, 'if');
49
- } else runEvent(match, event, 'else');
59
+ }
60
+ else runEvent(match, event, 'else');
50
61
 
51
62
  return false;
52
63
  } else if ('event' in event) {