@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,182 +19,169 @@ class iamMenu extends HTMLElement {
19
19
  connectedCallback() {
20
20
  const menuID = this.hasAttribute('id') ? this.getAttribute('id') : false;
21
21
  const menuButton = document.querySelector(`[popovertarget="${menuID}"]`);
22
- const menuInner = this.shadowRoot.querySelector('.menu--inner');
23
- const topLevelmenuItems = this.querySelectorAll(':scope > a, :scope > button, :scope > details > summary');
24
- const menuItems = this.querySelectorAll('a, button');
22
+ let topLevelmenuItems = this.querySelectorAll(':scope > a, :scope > button, :scope > details > summary');
23
+ let menuItems = this.querySelectorAll('a, button');
24
+ if (this.closest('.menu__wrapper')) {
25
+ menuItems = this.shadowRoot.querySelector('slot').assignedElements({ flatten: true });
26
+ topLevelmenuItems = menuItems;
27
+ }
25
28
  const subMenus = this.querySelectorAll('details');
26
29
  let subNextIndex;
27
30
  let subPrevIndex;
28
31
  // Set the needed CSS styles to connect the ID attribute to the anchor name
29
32
  if (menuID && menuButton) {
30
- menuInner === null || menuInner === void 0 ? void 0 : menuInner.setAttribute('role', 'menu');
33
+ this.setAttribute('role', 'menu');
31
34
  this.style['position-anchor'] = `--${menuID}`;
32
35
  menuButton === null || menuButton === void 0 ? void 0 : menuButton.setAttribute('aria-haspopup', 'true');
33
36
  menuButton === null || menuButton === void 0 ? void 0 : menuButton.style['anchor-name'] = `--${menuID}`;
34
37
  menuButton === null || menuButton === void 0 ? void 0 : menuButton.setAttribute('aria-controls', menuID);
35
- subMenus.forEach((item, index) => {
36
- item.setAttribute('role', 'menu');
37
- });
38
- menuItems.forEach((item, index) => {
39
- item.setAttribute('role', 'menuitem');
40
- item.setAttribute('tabindex', '0');
41
- if (index == 0) {
42
- item.setAttribute('autofocus', true);
43
- }
44
- });
45
- this.addEventListener('keydown', (event) => {
46
- if (event && event.target instanceof HTMLElement && event.target.closest('a, button, summary')) {
47
- const activeItem = document.activeElement;
48
- const prevIndex = Array.from(topLevelmenuItems).indexOf(activeItem) - 1;
49
- const nextIndex = Array.from(topLevelmenuItems).indexOf(activeItem) + 1;
50
- switch (event.keyCode // change to event.key to key to use the above variable
51
- ) {
52
- case 27: // Esc
53
- if (activeItem.closest('details')) {
54
- event.stopPropagation();
55
- event.preventDefault();
56
- activeItem.closest('details').removeAttribute('open');
57
- activeItem.closest('details').querySelector(':scope summary').focus();
58
- }
59
- else {
60
- event.stopPropagation();
61
- menuButton.focus();
62
- }
63
- break;
64
- case 32: // Space
65
- case 13: // Enter
66
- if (activeItem.matches('summary') && !activeItem.parentElement.matches('details[open]')) {
67
- activeItem.parentElement.setAttribute('open', true);
68
- const subMenuItems = activeItem
69
- .closest('details')
70
- .querySelectorAll('a, button, :scope details > summary');
71
- Array.from(subMenuItems)[0].focus();
72
- }
73
- break;
74
- case 35: // end
75
- event.stopPropagation();
76
- event.preventDefault();
77
- this.querySelector('details[open]').removeAttribute('open');
78
- Array.from(menuItems)[menuItems.length - 1].focus();
79
- break;
80
- case 36: // home
81
- event.stopPropagation();
82
- event.preventDefault();
83
- this.querySelector('details[open]').removeAttribute('open');
84
- Array.from(menuItems)[0].focus();
85
- break;
86
- case 38: // up
38
+ }
39
+ menuItems.forEach((item, index) => {
40
+ item.setAttribute('role', 'menuitem');
41
+ item.setAttribute('tabindex', '0');
42
+ if (index == 0) {
43
+ item.setAttribute('autofocus', true);
44
+ }
45
+ });
46
+ this.addEventListener('keydown', (event) => {
47
+ if (event && event.target instanceof HTMLElement && event.target.closest('a, button, summary')) {
48
+ const activeItem = document.activeElement;
49
+ const prevIndex = Array.from(topLevelmenuItems).indexOf(activeItem) - 1;
50
+ const nextIndex = Array.from(topLevelmenuItems).indexOf(activeItem) + 1;
51
+ switch (event.keyCode // change to event.key to key to use the above variable
52
+ ) {
53
+ case 27: // Esc
54
+ if (activeItem.closest('details')) {
87
55
  event.stopPropagation();
88
56
  event.preventDefault();
89
- if (Array.from(topLevelmenuItems).indexOf(activeItem) > -1) {
90
- if (Array.from(topLevelmenuItems)[prevIndex] != undefined)
91
- Array.from(topLevelmenuItems)[prevIndex].focus();
92
- else
93
- Array.from(topLevelmenuItems)[topLevelmenuItems.length - 1].focus();
94
- }
95
- else if (activeItem.closest('details')) {
96
- const subMenuItems = activeItem
97
- .closest('details')
98
- .querySelectorAll('a, button, :scope details > summary');
99
- subPrevIndex = Array.from(subMenuItems).indexOf(activeItem) - 1;
100
- if (Array.from(subMenuItems)[subPrevIndex] != undefined)
101
- Array.from(subMenuItems)[subPrevIndex].focus();
102
- else
103
- Array.from(subMenuItems)[subMenuItems.length - 1].focus();
104
- }
105
- break;
106
- case 40: // down
57
+ activeItem.closest('details').removeAttribute('open');
58
+ activeItem.closest('details').querySelector(':scope summary').focus();
59
+ }
60
+ else {
107
61
  event.stopPropagation();
108
- event.preventDefault();
109
- if (Array.from(topLevelmenuItems).indexOf(activeItem) > -1) {
110
- if (Array.from(topLevelmenuItems)[nextIndex] != undefined)
111
- Array.from(topLevelmenuItems)[nextIndex].focus();
112
- else
113
- Array.from(topLevelmenuItems)[0].focus();
114
- }
115
- else if (activeItem.closest('details')) {
116
- const subMenuItems = activeItem
117
- .closest('details')
118
- .querySelectorAll('a, button, :scope details > summary');
119
- subNextIndex = Array.from(subMenuItems).indexOf(activeItem) + 1;
120
- if (Array.from(subMenuItems)[subNextIndex] != undefined)
121
- Array.from(subMenuItems)[subNextIndex].focus();
122
- else
123
- Array.from(subMenuItems)[0].focus();
124
- }
125
- break;
126
- }
62
+ menuButton.focus();
63
+ }
64
+ break;
65
+ case 32: // Space
66
+ case 13: // Enter
67
+ break;
68
+ case 35: // end
69
+ event.stopPropagation();
70
+ event.preventDefault();
71
+ this.querySelector('details[open]').removeAttribute('open');
72
+ Array.from(menuItems)[menuItems.length - 1].focus();
73
+ break;
74
+ case 36: // home
75
+ event.stopPropagation();
76
+ event.preventDefault();
77
+ this.querySelector('details[open]').removeAttribute('open');
78
+ Array.from(menuItems)[0].focus();
79
+ break;
80
+ case 38: // up
81
+ event.stopPropagation();
82
+ event.preventDefault();
83
+ if (Array.from(topLevelmenuItems).indexOf(activeItem) > -1) {
84
+ if (Array.from(topLevelmenuItems)[prevIndex] != undefined)
85
+ Array.from(topLevelmenuItems)[prevIndex].focus();
86
+ else
87
+ Array.from(topLevelmenuItems)[topLevelmenuItems.length - 1].focus();
88
+ }
89
+ else if (activeItem.closest('details')) {
90
+ const subMenuItems = activeItem
91
+ .closest('details')
92
+ .querySelectorAll('a, button, :scope details > summary');
93
+ subPrevIndex = Array.from(subMenuItems).indexOf(activeItem) - 1;
94
+ if (Array.from(subMenuItems)[subPrevIndex] != undefined)
95
+ Array.from(subMenuItems)[subPrevIndex].focus();
96
+ else
97
+ Array.from(subMenuItems)[subMenuItems.length - 1].focus();
98
+ }
99
+ break;
100
+ case 40: // down
101
+ event.stopPropagation();
102
+ event.preventDefault();
103
+ if (Array.from(topLevelmenuItems).indexOf(activeItem) > -1) {
104
+ if (Array.from(topLevelmenuItems)[nextIndex] != undefined)
105
+ Array.from(topLevelmenuItems)[nextIndex].focus();
106
+ else
107
+ Array.from(topLevelmenuItems)[0].focus();
108
+ }
109
+ else if (activeItem.closest('details')) {
110
+ const subMenuItems = activeItem
111
+ .closest('details')
112
+ .querySelectorAll('a, button, :scope details > summary');
113
+ subNextIndex = Array.from(subMenuItems).indexOf(activeItem) + 1;
114
+ if (Array.from(subMenuItems)[subNextIndex] != undefined)
115
+ Array.from(subMenuItems)[subNextIndex].focus();
116
+ else
117
+ Array.from(subMenuItems)[0].focus();
118
+ }
119
+ break;
120
+ }
121
+ }
122
+ });
123
+ this.addEventListener('toggle', (e) => {
124
+ var _a, _b, _c, _d;
125
+ const updateEvent = new CustomEvent(e.newState, { detail: { id: this.getAttribute('id'), target: e.target } });
126
+ this.dispatchEvent(updateEvent);
127
+ // Fix the focus
128
+ if (this.closest('.menu__wrapper')) {
129
+ menuItems[0].focus();
130
+ }
131
+ if (this.hasAttribute('popover-open')) {
132
+ e.preventDefault();
133
+ this.removeAttribute('popover-open');
134
+ this.hidePopover();
135
+ }
136
+ if (this.matches(':popover-open') && document.querySelector(`[popovertarget="${this.getAttribute('id')}"]`)) {
137
+ (_a = document.querySelector(`[popovertarget="${this.getAttribute('id')}"]`)) === null || _a === void 0 ? void 0 : _a.setAttribute('aria-pressed', 'true');
138
+ (_b = document.querySelector(`[popovertarget="${this.getAttribute('id')}"]`)) === null || _b === void 0 ? void 0 : _b.classList.add('active');
139
+ }
140
+ else {
141
+ (_c = document.querySelector(`[popovertarget="${this.getAttribute('id')}"]`)) === null || _c === void 0 ? void 0 : _c.removeAttribute('aria-pressed');
142
+ (_d = document.querySelector(`[popovertarget="${this.getAttribute('id')}"]`)) === null || _d === void 0 ? void 0 : _d.classList.remove('active');
143
+ }
144
+ });
145
+ this.addEventListener('click', (event) => {
146
+ if (event &&
147
+ event.target instanceof HTMLElement &&
148
+ event.target.closest('button:has(+ iam-menu:not([popover]))')) {
149
+ const button = event.target.closest('button:has(+ iam-menu)');
150
+ button === null || button === void 0 ? void 0 : button.classList.toggle('open');
151
+ }
152
+ else if (event && event.target instanceof HTMLElement && event.target.closest('button.selectable')) {
153
+ const button = event.target.closest('button.selectable');
154
+ if (this.hasAttribute('multiple')) {
155
+ button.classList.toggle('selected');
156
+ }
157
+ else if (button === null || button === void 0 ? void 0 : button.classList.contains('selected')) {
158
+ this.querySelectorAll('.selected').forEach((item) => {
159
+ item.classList.remove('selected');
160
+ });
161
+ }
162
+ else {
163
+ this.querySelectorAll('.selected').forEach((item) => {
164
+ item.classList.remove('selected');
165
+ });
166
+ button.classList.add('selected');
167
+ }
168
+ }
169
+ });
170
+ // safari and firefox anchor fix for cards
171
+ if (!CSS.supports('top', 'anchor(top)')) {
172
+ document.addEventListener('click', (event) => {
173
+ if (event.originalTarget && event.originalTarget.matches('[popovertarget]')) {
174
+ const button = event.originalTarget;
175
+ const popoverID = button.getAttribute('popovertarget');
176
+ const popover = document.getElementById(popoverID);
177
+ const viewportOffset = button.getBoundingClientRect();
178
+ const top = viewportOffset.top;
179
+ const left = viewportOffset.left;
180
+ popover.style.setProperty('top', top + 'px');
181
+ popover.style.setProperty('left', left + button.clientWidth + 'px');
127
182
  }
128
183
  });
129
184
  }
130
- // insert extra CSS to help style inline details and summary items to allow collapsible sub menus
131
- if (this.querySelector('details') && !document.getElementById('menuGlobalStyles'))
132
- document.head.insertAdjacentHTML('beforeend', `<style id="menuGlobalStyles">
133
- iam-menu details > * {
134
- background: unset !important;
135
- border: unset !important;
136
- color: inherit!important;
137
- font-weight: inherit!important;
138
- font-family: inherit!important;
139
- font-size: 1rem!important;
140
- display: block!important;
141
- margin: var(--menu-item-margin, 0 0 0.25rem 0)!important;
142
- padding: var(--menu-item-padding, 0)!important;
143
- width: var(--menu-item-width, 100%)!important;
144
- text-align: var(--menu-item-text-align, left)!important;
145
- cursor: var(--menu-item-cursor, pointer)!important;
146
- }
147
- iam-menu details > *:after,
148
- iam-menu details > *:not(summary):before {
149
- display: none!important;
150
- }
151
- iam-menu details :is(button,a) {
152
- padding-inline-start: var(--menu-dialog-offset,1rem)!important;
153
- }
154
- iam-menu details :is(button,a):last-child {
155
- margin-block-end: var(--menu-dialog-offset,1rem)!important;
156
- }
157
- iam-menu details summary {
158
- padding: 0 !important;
159
- margin: var(--menu-item-margin, 0 0 0.25rem 0)!important;
160
- }
161
- iam-menu details summary:before {
162
- text-align: center;
163
- display: inline-block!important;
164
- vertical-align: bottom;
165
- float: right;
166
- color: inherit;
167
- height: 1em;
168
- width: 1em;
169
- }
170
-
171
- iam-menu details summary[class*="fa-"]:before {
172
- font-family: var(--fa-font-family, "Font Awesome 6 Pro");
173
- }
174
-
175
- iam-menu details summary:not([class*="fa-"]:before {
176
- --icon-arrow: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 22 22'%3e%3cpath d='M6.5,2l9,9-9,9' style='fill:none;stroke:%23000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:3px'/%3e%3c/svg%3e");
177
-
178
- content: ""!important;
179
- height: 1.2rem;
180
- width: 1.2rem;
181
- background: var(--colour-primary-theme);
182
- mask-image: var(--icon, var(--icon-arrow));
183
- mask-size: 50%;
184
- mask-repeat: no-repeat;
185
- mask-position: 50% 50%;
186
- -webkit-mask-image: var(--icon, var(--icon-arrow));
187
- -webkit-mask-size: 50%;
188
- -webkit-mask-repeat: no-repeat;
189
- -webkit-mask-position: 50% 50%;
190
- z-index: 2;
191
- display: inline-block;
192
- vertical-align: bottom;
193
- float: right;
194
- rotate: 90deg;
195
- color: inherit;
196
- }
197
- </style>`);
198
185
  }
199
186
  }
200
187
  export default iamMenu;
@@ -1,77 +1,12 @@
1
1
  /*!
2
- * iamKey v7.2.2--beta3
2
+ * iamKey v7.4.0
3
3
  * Copyright 2022-2025 iamproperty
4
- */class p extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"}),document.body.hasAttribute("data-assets-location")&&document.body.getAttribute("data-assets-location");const i=document.createElement("template");i.innerHTML=`
4
+ */class d extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"}),document.body.hasAttribute("data-assets-location")&&document.body.getAttribute("data-assets-location");const n=document.createElement("template");n.innerHTML=`
5
5
  <style>
6
- @layer components{iam-menu:defined{--menu-padding: 1rem;--border-color: var(--colour-border);--menu-item-margin: 0 0 0.5rem 0;border:none;border-radius:1rem;box-shadow:0px 2px 9px rgba(0, 0, 0, 0.1)}}/*# sourceMappingURL=assets/css/components/menu.css.map */
6
+ @layer components{iam-menu:defined{--menu-padding: 0.5rem;--border-color: var(--colour-border);--menu-item-margin: 0 0 0.5rem 0}iam-menu i{width:1.25rem}iam-menu>button:has(+iam-menu){position:relative}iam-menu>button:has(+iam-menu):after{content:"";height:var(--btn-line-height);width:1rem;height:1rem;display:inline-block;background:currentColor;mask-image:var(--icon-arrow);mask-size:100%;mask-repeat:no-repeat;mask-position:50% 50%;-webkit-mask-image:var(--icon-arrow);-webkit-mask-size:100%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%;vertical-align:bottom;position:absolute;top:calc(50% - .5rem);right:.5rem}iam-menu>button:has(+iam-menu:not([popover])):after{rotate:90deg}iam-menu>button.open:has(+iam-menu:not([popover])){position:relative}iam-menu>button.open:has(+iam-menu:not([popover])):after{top:calc(50% - .5rem);right:.5rem;rotate:270deg}iam-menu>button:has(+iam-menu:popover-open){position:relative}iam-menu>button:has(+iam-menu:popover-open):after{top:calc(50% - .5rem);right:.5rem;rotate:180deg}iam-menu>button:not(.open)+iam-menu:not([popover]){display:none}iam-menu>button+iam-menu:not([popover])>*:is(button,a,label){padding-left:2rem}}/*# sourceMappingURL=assets/css/components/menu.css.map */
7
7
 
8
8
  </style>
9
9
  <div class="menu--inner" part="inner">
10
10
  <slot></slot>
11
- </div>`,this.shadowRoot.appendChild(i.content.cloneNode(!0))}connectedCallback(){const i=this.hasAttribute("id")?this.getAttribute("id"):!1,o=document.querySelector(`[popovertarget="${i}"]`),n=this.shadowRoot.querySelector(".menu--inner"),a=this.querySelectorAll(":scope > a, :scope > button, :scope > details > summary"),s=this.querySelectorAll("a, button"),d=this.querySelectorAll("details");let m,l;i&&o&&(n?.setAttribute("role","menu"),this.style["position-anchor"]=`--${i}`,o?.setAttribute("aria-haspopup","true"),o==null||(o.style["anchor-name"]=`--${i}`),o?.setAttribute("aria-controls",i),d.forEach((e,t)=>{e.setAttribute("role","menu")}),s.forEach((e,t)=>{e.setAttribute("role","menuitem"),e.setAttribute("tabindex","0"),t==0&&e.setAttribute("autofocus",!0)}),this.addEventListener("keydown",e=>{if(e&&e.target instanceof HTMLElement&&e.target.closest("a, button, summary")){const t=document.activeElement,u=Array.from(a).indexOf(t)-1,c=Array.from(a).indexOf(t)+1;switch(e.keyCode){case 27:t.closest("details")?(e.stopPropagation(),e.preventDefault(),t.closest("details").removeAttribute("open"),t.closest("details").querySelector(":scope summary").focus()):(e.stopPropagation(),o.focus());break;case 32:case 13:if(t.matches("summary")&&!t.parentElement.matches("details[open]")){t.parentElement.setAttribute("open",!0);const r=t.closest("details").querySelectorAll("a, button, :scope details > summary");Array.from(r)[0].focus()}break;case 35:e.stopPropagation(),e.preventDefault(),this.querySelector("details[open]").removeAttribute("open"),Array.from(s)[s.length-1].focus();break;case 36:e.stopPropagation(),e.preventDefault(),this.querySelector("details[open]").removeAttribute("open"),Array.from(s)[0].focus();break;case 38:if(e.stopPropagation(),e.preventDefault(),Array.from(a).indexOf(t)>-1)Array.from(a)[u]!=null?Array.from(a)[u].focus():Array.from(a)[a.length-1].focus();else if(t.closest("details")){const r=t.closest("details").querySelectorAll("a, button, :scope details > summary");l=Array.from(r).indexOf(t)-1,Array.from(r)[l]!=null?Array.from(r)[l].focus():Array.from(r)[r.length-1].focus()}break;case 40:if(e.stopPropagation(),e.preventDefault(),Array.from(a).indexOf(t)>-1)Array.from(a)[c]!=null?Array.from(a)[c].focus():Array.from(a)[0].focus();else if(t.closest("details")){const r=t.closest("details").querySelectorAll("a, button, :scope details > summary");m=Array.from(r).indexOf(t)+1,Array.from(r)[m]!=null?Array.from(r)[m].focus():Array.from(r)[0].focus()}break}}})),this.querySelector("details")&&!document.getElementById("menuGlobalStyles")&&document.head.insertAdjacentHTML("beforeend",`<style id="menuGlobalStyles">
12
- iam-menu details > * {
13
- background: unset !important;
14
- border: unset !important;
15
- color: inherit!important;
16
- font-weight: inherit!important;
17
- font-family: inherit!important;
18
- font-size: 1rem!important;
19
- display: block!important;
20
- margin: var(--menu-item-margin, 0 0 0.25rem 0)!important;
21
- padding: var(--menu-item-padding, 0)!important;
22
- width: var(--menu-item-width, 100%)!important;
23
- text-align: var(--menu-item-text-align, left)!important;
24
- cursor: var(--menu-item-cursor, pointer)!important;
25
- }
26
- iam-menu details > *:after,
27
- iam-menu details > *:not(summary):before {
28
- display: none!important;
29
- }
30
- iam-menu details :is(button,a) {
31
- padding-inline-start: var(--menu-dialog-offset,1rem)!important;
32
- }
33
- iam-menu details :is(button,a):last-child {
34
- margin-block-end: var(--menu-dialog-offset,1rem)!important;
35
- }
36
- iam-menu details summary {
37
- padding: 0 !important;
38
- margin: var(--menu-item-margin, 0 0 0.25rem 0)!important;
39
- }
40
- iam-menu details summary:before {
41
- text-align: center;
42
- display: inline-block!important;
43
- vertical-align: bottom;
44
- float: right;
45
- color: inherit;
46
- height: 1em;
47
- width: 1em;
48
- }
49
-
50
- iam-menu details summary[class*="fa-"]:before {
51
- font-family: var(--fa-font-family, "Font Awesome 6 Pro");
52
- }
53
-
54
- iam-menu details summary:not([class*="fa-"]:before {
55
- --icon-arrow: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 22 22'%3e%3cpath d='M6.5,2l9,9-9,9' style='fill:none;stroke:%23000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:3px'/%3e%3c/svg%3e");
56
-
57
- content: ""!important;
58
- height: 1.2rem;
59
- width: 1.2rem;
60
- background: var(--colour-primary-theme);
61
- mask-image: var(--icon, var(--icon-arrow));
62
- mask-size: 50%;
63
- mask-repeat: no-repeat;
64
- mask-position: 50% 50%;
65
- -webkit-mask-image: var(--icon, var(--icon-arrow));
66
- -webkit-mask-size: 50%;
67
- -webkit-mask-repeat: no-repeat;
68
- -webkit-mask-position: 50% 50%;
69
- z-index: 2;
70
- display: inline-block;
71
- vertical-align: bottom;
72
- float: right;
73
- rotate: 90deg;
74
- color: inherit;
75
- }
76
- </style>`)}}export{p as default};
11
+ </div>`,this.shadowRoot.appendChild(n.content.cloneNode(!0))}connectedCallback(){const n=this.hasAttribute("id")?this.getAttribute("id"):!1,a=document.querySelector(`[popovertarget="${n}"]`);let r=this.querySelectorAll(":scope > a, :scope > button, :scope > details > summary"),l=this.querySelectorAll("a, button");this.closest(".menu__wrapper")&&(l=this.shadowRoot.querySelector("slot").assignedElements({flatten:!0}),r=l),this.querySelectorAll("details");let u,c;n&&a&&(this.setAttribute("role","menu"),this.style["position-anchor"]=`--${n}`,a?.setAttribute("aria-haspopup","true"),a==null||(a.style["anchor-name"]=`--${n}`),a?.setAttribute("aria-controls",n)),l.forEach((e,t)=>{e.setAttribute("role","menuitem"),e.setAttribute("tabindex","0"),t==0&&e.setAttribute("autofocus",!0)}),this.addEventListener("keydown",e=>{if(e&&e.target instanceof HTMLElement&&e.target.closest("a, button, summary")){const t=document.activeElement,s=Array.from(r).indexOf(t)-1,i=Array.from(r).indexOf(t)+1;switch(e.keyCode){case 27:t.closest("details")?(e.stopPropagation(),e.preventDefault(),t.closest("details").removeAttribute("open"),t.closest("details").querySelector(":scope summary").focus()):(e.stopPropagation(),a.focus());break;case 32:case 13:break;case 35:e.stopPropagation(),e.preventDefault(),this.querySelector("details[open]").removeAttribute("open"),Array.from(l)[l.length-1].focus();break;case 36:e.stopPropagation(),e.preventDefault(),this.querySelector("details[open]").removeAttribute("open"),Array.from(l)[0].focus();break;case 38:if(e.stopPropagation(),e.preventDefault(),Array.from(r).indexOf(t)>-1)Array.from(r)[s]!=null?Array.from(r)[s].focus():Array.from(r)[r.length-1].focus();else if(t.closest("details")){const o=t.closest("details").querySelectorAll("a, button, :scope details > summary");c=Array.from(o).indexOf(t)-1,Array.from(o)[c]!=null?Array.from(o)[c].focus():Array.from(o)[o.length-1].focus()}break;case 40:if(e.stopPropagation(),e.preventDefault(),Array.from(r).indexOf(t)>-1)Array.from(r)[i]!=null?Array.from(r)[i].focus():Array.from(r)[0].focus();else if(t.closest("details")){const o=t.closest("details").querySelectorAll("a, button, :scope details > summary");u=Array.from(o).indexOf(t)+1,Array.from(o)[u]!=null?Array.from(o)[u].focus():Array.from(o)[0].focus()}break}}}),this.addEventListener("toggle",e=>{var t,s,i,o;const m=new CustomEvent(e.newState,{detail:{id:this.getAttribute("id"),target:e.target}});this.dispatchEvent(m),this.closest(".menu__wrapper")&&l[0].focus(),this.hasAttribute("popover-open")&&(e.preventDefault(),this.removeAttribute("popover-open"),this.hidePopover()),this.matches(":popover-open")&&document.querySelector(`[popovertarget="${this.getAttribute("id")}"]`)?((t=document.querySelector(`[popovertarget="${this.getAttribute("id")}"]`))===null||t===void 0||t.setAttribute("aria-pressed","true"),(s=document.querySelector(`[popovertarget="${this.getAttribute("id")}"]`))===null||s===void 0||s.classList.add("active")):((i=document.querySelector(`[popovertarget="${this.getAttribute("id")}"]`))===null||i===void 0||i.removeAttribute("aria-pressed"),(o=document.querySelector(`[popovertarget="${this.getAttribute("id")}"]`))===null||o===void 0||o.classList.remove("active"))}),this.addEventListener("click",e=>{if(e&&e.target instanceof HTMLElement&&e.target.closest("button:has(+ iam-menu:not([popover]))")){const t=e.target.closest("button:has(+ iam-menu)");t?.classList.toggle("open")}else if(e&&e.target instanceof HTMLElement&&e.target.closest("button.selectable")){const t=e.target.closest("button.selectable");this.hasAttribute("multiple")?t.classList.toggle("selected"):t?.classList.contains("selected")?this.querySelectorAll(".selected").forEach(s=>{s.classList.remove("selected")}):(this.querySelectorAll(".selected").forEach(s=>{s.classList.remove("selected")}),t.classList.add("selected"))}}),CSS.supports("top","anchor(top)")||document.addEventListener("click",e=>{if(e.originalTarget&&e.originalTarget.matches("[popovertarget]")){const t=e.originalTarget,s=t.getAttribute("popovertarget"),i=document.getElementById(s),o=t.getBoundingClientRect(),m=o.top,p=o.left;i.style.setProperty("top",m+"px"),i.style.setProperty("left",p+t.clientWidth+"px")}})}}export{d as default};
77
12
  //# sourceMappingURL=menu.component.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"menu.component.min.js","sources":["menu.component.js"],"sourcesContent":["class iamMenu extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n const assetLocation = document.body.hasAttribute('data-assets-location')\n ? document.body.getAttribute('data-assets-location')\n : '/assets';\n const loadCSS = `@import \"${assetLocation}/css/components/menu.component.css\";`;\n const template = document.createElement('template');\n template.innerHTML = `\n <style>\n ${loadCSS}\n </style>\n <div class=\"menu--inner\" part=\"inner\">\n <slot></slot>\n </div>`;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n }\n connectedCallback() {\n const menuID = this.hasAttribute('id') ? this.getAttribute('id') : false;\n const menuButton = document.querySelector(`[popovertarget=\"${menuID}\"]`);\n const menuInner = this.shadowRoot.querySelector('.menu--inner');\n const topLevelmenuItems = this.querySelectorAll(':scope > a, :scope > button, :scope > details > summary');\n const menuItems = this.querySelectorAll('a, button');\n const subMenus = this.querySelectorAll('details');\n let subNextIndex;\n let subPrevIndex;\n // Set the needed CSS styles to connect the ID attribute to the anchor name\n if (menuID && menuButton) {\n menuInner === null || menuInner === void 0 ? void 0 : menuInner.setAttribute('role', 'menu');\n this.style['position-anchor'] = `--${menuID}`;\n menuButton === null || menuButton === void 0 ? void 0 : menuButton.setAttribute('aria-haspopup', 'true');\n menuButton === null || menuButton === void 0 ? void 0 : menuButton.style['anchor-name'] = `--${menuID}`;\n menuButton === null || menuButton === void 0 ? void 0 : menuButton.setAttribute('aria-controls', menuID);\n subMenus.forEach((item, index) => {\n item.setAttribute('role', 'menu');\n });\n menuItems.forEach((item, index) => {\n item.setAttribute('role', 'menuitem');\n item.setAttribute('tabindex', '0');\n if (index == 0) {\n item.setAttribute('autofocus', true);\n }\n });\n this.addEventListener('keydown', (event) => {\n if (event && event.target instanceof HTMLElement && event.target.closest('a, button, summary')) {\n const activeItem = document.activeElement;\n const prevIndex = Array.from(topLevelmenuItems).indexOf(activeItem) - 1;\n const nextIndex = Array.from(topLevelmenuItems).indexOf(activeItem) + 1;\n switch (event.keyCode // change to event.key to key to use the above variable\n ) {\n case 27: // Esc\n if (activeItem.closest('details')) {\n event.stopPropagation();\n event.preventDefault();\n activeItem.closest('details').removeAttribute('open');\n activeItem.closest('details').querySelector(':scope summary').focus();\n }\n else {\n event.stopPropagation();\n menuButton.focus();\n }\n break;\n case 32: // Space\n case 13: // Enter\n if (activeItem.matches('summary') && !activeItem.parentElement.matches('details[open]')) {\n activeItem.parentElement.setAttribute('open', true);\n const subMenuItems = activeItem\n .closest('details')\n .querySelectorAll('a, button, :scope details > summary');\n Array.from(subMenuItems)[0].focus();\n }\n break;\n case 35: // end\n event.stopPropagation();\n event.preventDefault();\n this.querySelector('details[open]').removeAttribute('open');\n Array.from(menuItems)[menuItems.length - 1].focus();\n break;\n case 36: // home\n event.stopPropagation();\n event.preventDefault();\n this.querySelector('details[open]').removeAttribute('open');\n Array.from(menuItems)[0].focus();\n break;\n case 38: // up\n event.stopPropagation();\n event.preventDefault();\n if (Array.from(topLevelmenuItems).indexOf(activeItem) > -1) {\n if (Array.from(topLevelmenuItems)[prevIndex] != undefined)\n Array.from(topLevelmenuItems)[prevIndex].focus();\n else\n Array.from(topLevelmenuItems)[topLevelmenuItems.length - 1].focus();\n }\n else if (activeItem.closest('details')) {\n const subMenuItems = activeItem\n .closest('details')\n .querySelectorAll('a, button, :scope details > summary');\n subPrevIndex = Array.from(subMenuItems).indexOf(activeItem) - 1;\n if (Array.from(subMenuItems)[subPrevIndex] != undefined)\n Array.from(subMenuItems)[subPrevIndex].focus();\n else\n Array.from(subMenuItems)[subMenuItems.length - 1].focus();\n }\n break;\n case 40: // down\n event.stopPropagation();\n event.preventDefault();\n if (Array.from(topLevelmenuItems).indexOf(activeItem) > -1) {\n if (Array.from(topLevelmenuItems)[nextIndex] != undefined)\n Array.from(topLevelmenuItems)[nextIndex].focus();\n else\n Array.from(topLevelmenuItems)[0].focus();\n }\n else if (activeItem.closest('details')) {\n const subMenuItems = activeItem\n .closest('details')\n .querySelectorAll('a, button, :scope details > summary');\n subNextIndex = Array.from(subMenuItems).indexOf(activeItem) + 1;\n if (Array.from(subMenuItems)[subNextIndex] != undefined)\n Array.from(subMenuItems)[subNextIndex].focus();\n else\n Array.from(subMenuItems)[0].focus();\n }\n break;\n }\n }\n });\n }\n // insert extra CSS to help style inline details and summary items to allow collapsible sub menus\n if (this.querySelector('details') && !document.getElementById('menuGlobalStyles'))\n document.head.insertAdjacentHTML('beforeend', `<style id=\"menuGlobalStyles\">\niam-menu details > * {\n background: unset !important;\n border: unset !important;\n color: inherit!important;\n font-weight: inherit!important;\n font-family: inherit!important;\n font-size: 1rem!important;\n display: block!important;\n margin: var(--menu-item-margin, 0 0 0.25rem 0)!important;\n padding: var(--menu-item-padding, 0)!important;\n width: var(--menu-item-width, 100%)!important;\n text-align: var(--menu-item-text-align, left)!important;\n cursor: var(--menu-item-cursor, pointer)!important;\n}\niam-menu details > *:after,\niam-menu details > *:not(summary):before {\n display: none!important;\n}\niam-menu details :is(button,a) {\n padding-inline-start: var(--menu-dialog-offset,1rem)!important;\n}\niam-menu details :is(button,a):last-child {\n margin-block-end: var(--menu-dialog-offset,1rem)!important;\n}\niam-menu details summary {\n padding: 0 !important;\n margin: var(--menu-item-margin, 0 0 0.25rem 0)!important;\n}\niam-menu details summary:before {\n text-align: center;\n display: inline-block!important;\n vertical-align: bottom;\n float: right;\n color: inherit;\n height: 1em;\n width: 1em;\n}\n\niam-menu details summary[class*=\"fa-\"]:before {\n font-family: var(--fa-font-family, \"Font Awesome 6 Pro\");\n}\n\niam-menu details summary:not([class*=\"fa-\"]:before {\n --icon-arrow: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 22 22'%3e%3cpath d='M6.5,2l9,9-9,9' style='fill:none;stroke:%23000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:3px'/%3e%3c/svg%3e\"); \n \n content: \"\"!important;\n height: 1.2rem;\n width: 1.2rem;\n background: var(--colour-primary-theme);\n mask-image: var(--icon, var(--icon-arrow));\n mask-size: 50%;\n mask-repeat: no-repeat;\n mask-position: 50% 50%;\n -webkit-mask-image: var(--icon, var(--icon-arrow));\n -webkit-mask-size: 50%;\n -webkit-mask-repeat: no-repeat;\n -webkit-mask-position: 50% 50%;\n z-index: 2;\n display: inline-block;\n vertical-align: bottom;\n float: right;\n rotate: 90deg;\n color: inherit;\n}\n</style>`);\n }\n}\nexport default iamMenu;\n"],"names":["iamMenu","template","menuID","menuButton","menuInner","topLevelmenuItems","menuItems","subMenus","subNextIndex","subPrevIndex","item","index","event","activeItem","prevIndex","nextIndex","subMenuItems"],"mappings":"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"}
1
+ {"version":3,"file":"menu.component.min.js","sources":["menu.component.js"],"sourcesContent":["class iamMenu extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n const assetLocation = document.body.hasAttribute('data-assets-location')\n ? document.body.getAttribute('data-assets-location')\n : '/assets';\n const loadCSS = `@import \"${assetLocation}/css/components/menu.component.css\";`;\n const template = document.createElement('template');\n template.innerHTML = `\n <style>\n ${loadCSS}\n </style>\n <div class=\"menu--inner\" part=\"inner\">\n <slot></slot>\n </div>`;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n }\n connectedCallback() {\n const menuID = this.hasAttribute('id') ? this.getAttribute('id') : false;\n const menuButton = document.querySelector(`[popovertarget=\"${menuID}\"]`);\n let topLevelmenuItems = this.querySelectorAll(':scope > a, :scope > button, :scope > details > summary');\n let menuItems = this.querySelectorAll('a, button');\n if (this.closest('.menu__wrapper')) {\n menuItems = this.shadowRoot.querySelector('slot').assignedElements({ flatten: true });\n topLevelmenuItems = menuItems;\n }\n const subMenus = this.querySelectorAll('details');\n let subNextIndex;\n let subPrevIndex;\n // Set the needed CSS styles to connect the ID attribute to the anchor name\n if (menuID && menuButton) {\n this.setAttribute('role', 'menu');\n this.style['position-anchor'] = `--${menuID}`;\n menuButton === null || menuButton === void 0 ? void 0 : menuButton.setAttribute('aria-haspopup', 'true');\n menuButton === null || menuButton === void 0 ? void 0 : menuButton.style['anchor-name'] = `--${menuID}`;\n menuButton === null || menuButton === void 0 ? void 0 : menuButton.setAttribute('aria-controls', menuID);\n }\n menuItems.forEach((item, index) => {\n item.setAttribute('role', 'menuitem');\n item.setAttribute('tabindex', '0');\n if (index == 0) {\n item.setAttribute('autofocus', true);\n }\n });\n this.addEventListener('keydown', (event) => {\n if (event && event.target instanceof HTMLElement && event.target.closest('a, button, summary')) {\n const activeItem = document.activeElement;\n const prevIndex = Array.from(topLevelmenuItems).indexOf(activeItem) - 1;\n const nextIndex = Array.from(topLevelmenuItems).indexOf(activeItem) + 1;\n switch (event.keyCode // change to event.key to key to use the above variable\n ) {\n case 27: // Esc\n if (activeItem.closest('details')) {\n event.stopPropagation();\n event.preventDefault();\n activeItem.closest('details').removeAttribute('open');\n activeItem.closest('details').querySelector(':scope summary').focus();\n }\n else {\n event.stopPropagation();\n menuButton.focus();\n }\n break;\n case 32: // Space\n case 13: // Enter\n break;\n case 35: // end\n event.stopPropagation();\n event.preventDefault();\n this.querySelector('details[open]').removeAttribute('open');\n Array.from(menuItems)[menuItems.length - 1].focus();\n break;\n case 36: // home\n event.stopPropagation();\n event.preventDefault();\n this.querySelector('details[open]').removeAttribute('open');\n Array.from(menuItems)[0].focus();\n break;\n case 38: // up\n event.stopPropagation();\n event.preventDefault();\n if (Array.from(topLevelmenuItems).indexOf(activeItem) > -1) {\n if (Array.from(topLevelmenuItems)[prevIndex] != undefined)\n Array.from(topLevelmenuItems)[prevIndex].focus();\n else\n Array.from(topLevelmenuItems)[topLevelmenuItems.length - 1].focus();\n }\n else if (activeItem.closest('details')) {\n const subMenuItems = activeItem\n .closest('details')\n .querySelectorAll('a, button, :scope details > summary');\n subPrevIndex = Array.from(subMenuItems).indexOf(activeItem) - 1;\n if (Array.from(subMenuItems)[subPrevIndex] != undefined)\n Array.from(subMenuItems)[subPrevIndex].focus();\n else\n Array.from(subMenuItems)[subMenuItems.length - 1].focus();\n }\n break;\n case 40: // down\n event.stopPropagation();\n event.preventDefault();\n if (Array.from(topLevelmenuItems).indexOf(activeItem) > -1) {\n if (Array.from(topLevelmenuItems)[nextIndex] != undefined)\n Array.from(topLevelmenuItems)[nextIndex].focus();\n else\n Array.from(topLevelmenuItems)[0].focus();\n }\n else if (activeItem.closest('details')) {\n const subMenuItems = activeItem\n .closest('details')\n .querySelectorAll('a, button, :scope details > summary');\n subNextIndex = Array.from(subMenuItems).indexOf(activeItem) + 1;\n if (Array.from(subMenuItems)[subNextIndex] != undefined)\n Array.from(subMenuItems)[subNextIndex].focus();\n else\n Array.from(subMenuItems)[0].focus();\n }\n break;\n }\n }\n });\n this.addEventListener('toggle', (e) => {\n var _a, _b, _c, _d;\n const updateEvent = new CustomEvent(e.newState, { detail: { id: this.getAttribute('id'), target: e.target } });\n this.dispatchEvent(updateEvent);\n // Fix the focus\n if (this.closest('.menu__wrapper')) {\n menuItems[0].focus();\n }\n if (this.hasAttribute('popover-open')) {\n e.preventDefault();\n this.removeAttribute('popover-open');\n this.hidePopover();\n }\n if (this.matches(':popover-open') && document.querySelector(`[popovertarget=\"${this.getAttribute('id')}\"]`)) {\n (_a = document.querySelector(`[popovertarget=\"${this.getAttribute('id')}\"]`)) === null || _a === void 0 ? void 0 : _a.setAttribute('aria-pressed', 'true');\n (_b = document.querySelector(`[popovertarget=\"${this.getAttribute('id')}\"]`)) === null || _b === void 0 ? void 0 : _b.classList.add('active');\n }\n else {\n (_c = document.querySelector(`[popovertarget=\"${this.getAttribute('id')}\"]`)) === null || _c === void 0 ? void 0 : _c.removeAttribute('aria-pressed');\n (_d = document.querySelector(`[popovertarget=\"${this.getAttribute('id')}\"]`)) === null || _d === void 0 ? void 0 : _d.classList.remove('active');\n }\n });\n this.addEventListener('click', (event) => {\n if (event &&\n event.target instanceof HTMLElement &&\n event.target.closest('button:has(+ iam-menu:not([popover]))')) {\n const button = event.target.closest('button:has(+ iam-menu)');\n button === null || button === void 0 ? void 0 : button.classList.toggle('open');\n }\n else if (event && event.target instanceof HTMLElement && event.target.closest('button.selectable')) {\n const button = event.target.closest('button.selectable');\n if (this.hasAttribute('multiple')) {\n button.classList.toggle('selected');\n }\n else if (button === null || button === void 0 ? void 0 : button.classList.contains('selected')) {\n this.querySelectorAll('.selected').forEach((item) => {\n item.classList.remove('selected');\n });\n }\n else {\n this.querySelectorAll('.selected').forEach((item) => {\n item.classList.remove('selected');\n });\n button.classList.add('selected');\n }\n }\n });\n // safari and firefox anchor fix for cards\n if (!CSS.supports('top', 'anchor(top)')) {\n document.addEventListener('click', (event) => {\n if (event.originalTarget && event.originalTarget.matches('[popovertarget]')) {\n const button = event.originalTarget;\n const popoverID = button.getAttribute('popovertarget');\n const popover = document.getElementById(popoverID);\n const viewportOffset = button.getBoundingClientRect();\n const top = viewportOffset.top;\n const left = viewportOffset.left;\n popover.style.setProperty('top', top + 'px');\n popover.style.setProperty('left', left + button.clientWidth + 'px');\n }\n });\n }\n }\n}\nexport default iamMenu;\n"],"names":["iamMenu","template","menuID","menuButton","topLevelmenuItems","menuItems","subNextIndex","subPrevIndex","item","index","event","activeItem","prevIndex","nextIndex","subMenuItems","_a","_b","_c","_d","updateEvent","button","popoverID","popover","viewportOffset","top","left"],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { trackComponent, trackComponentRegistered } from '../_global.js';
2
+ import milestone from '../../modules/milestone.js';
3
+ trackComponentRegistered('iam-milestone');
4
+ class iamMilestone extends HTMLElement {
5
+ constructor() {
6
+ var _a;
7
+ super();
8
+ this.attachShadow({ mode: 'open' });
9
+ const assetLocation = document.body.hasAttribute('data-assets-location')
10
+ ? document.body.getAttribute('data-assets-location')
11
+ : '/assets';
12
+ const coreCSS = document.body.hasAttribute('data-core-css')
13
+ ? document.body.getAttribute('data-core-css')
14
+ : `${assetLocation}/css/core.min.css`;
15
+ const template = document.createElement('template');
16
+ template.innerHTML = `
17
+ <style>
18
+ @import "${coreCSS}";
19
+ </style>
20
+ <div class="milestone-wrap" part="milestone-wrap">
21
+ <slot name="milestone-intro" class="milestone-intro" part="milestone-intro"></slot>
22
+ <slot>
23
+ <div class="task-wrap" part="milestone-task-wrap"></div>
24
+ </slot>
25
+ </div>
26
+ `;
27
+ (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.appendChild(template.content.cloneNode(true));
28
+ }
29
+ connectedCallback() {
30
+ const milestoneComponent = this;
31
+ trackComponent(milestoneComponent, 'iam-milestone', [
32
+ 'milestone-item-closed',
33
+ 'milestone-item-opened',
34
+ ]);
35
+ milestone(this);
36
+ }
37
+ }
38
+ export default iamMilestone;
@@ -0,0 +1,15 @@
1
+ /*!
2
+ * iamKey v7.4.0
3
+ * Copyright 2022-2025 iamproperty
4
+ */const l=t=>{window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:t})},m=(t,n,a)=>(window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementAdded",element:n}),a.forEach(e=>{t.addEventListener(e,function(s){const d={event:e,element:n,target:s.target};Object.keys(s.detail).forEach(o=>{const i=s.detail[o];d[o]=i}),window.dataLayer.push(d)})}),!0),p=function(t){const n=t.dataset.status;if(!n)return;const a=t.shadowRoot.querySelector(".milestone-wrap"),e=document.createElement("span");e.setAttribute("part","status"),e.classList.add("milestone-status"),e.innerHTML=`${n} Step`,n==="Current"&&t.classList.add("current"),a.insertAdjacentElement("afterbegin",e)},u=function(t){const n=t.shadowRoot.querySelector(".task-wrap"),a=t.dataset.items?JSON.parse(t.dataset.items):[];a.length&&(a.forEach(e=>{const s=document.createElement("details"),d=document.createElement("summary"),o=document.createElement("div"),i=document.createElement("p");o.classList.add("task-details"),d.innerHTML=e.name,e.date_completed&&d.classList.add("complete"),s.appendChild(d),e.description&&(i.innerHTML=e.description,o.appendChild(i)),e.actions.length&&o.appendChild(h(e.actions,d)),s.appendChild(o),n.insertAdjacentElement("beforeend",s),s.addEventListener("click",()=>{s?.hasAttribute("open")?r("milestone-item-closed",e.name,t):r("milestone-item-opened",e.name,t)})}),t.appendChild(n))},r=function(t,n,a){const e=new CustomEvent(t,{detail:{title:n}});a.dispatchEvent(e)},h=function(t,n){const a=document.createElement("ul"),e=t.length,d=t.filter(o=>o.date_completed).length||0;if(!(e<1))return n.innerHTML+=` (${d}/${e})`,t.forEach(o=>{const i=document.createElement("li"),c=document.createElement("span");o.date_completed&&(i.classList.add("complete"),c.classList.add("action-date"),c.innerHTML=o.date_completed),i.innerHTML=o.action,i.appendChild(c),a.appendChild(i)}),a},w=function(t){p(t),u(t)};l("iam-milestone");class L extends HTMLElement{constructor(){var n;super(),this.attachShadow({mode:"open"});const a=document.body.hasAttribute("data-assets-location")?document.body.getAttribute("data-assets-location"):"/assets",e=document.body.hasAttribute("data-core-css")?document.body.getAttribute("data-core-css"):`${a}/css/core.min.css`,s=document.createElement("template");s.innerHTML=`
5
+ <style>
6
+ @import "${e}";
7
+ </style>
8
+ <div class="milestone-wrap" part="milestone-wrap">
9
+ <slot name="milestone-intro" class="milestone-intro" part="milestone-intro"></slot>
10
+ <slot>
11
+ <div class="task-wrap" part="milestone-task-wrap"></div>
12
+ </slot>
13
+ </div>
14
+ `,(n=this.shadowRoot)===null||n===void 0||n.appendChild(s.content.cloneNode(!0))}connectedCallback(){m(this,"iam-milestone",["milestone-item-closed","milestone-item-opened"]),w(this)}}export{L as default};
15
+ //# sourceMappingURL=milestone.component.min.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"milestone.component.min.js","sources":["../_global.js","../../modules/milestone.js","milestone.component.js"],"sourcesContent":["export const trackComponentRegistered = (componentName) => {\n // Data layer Web component created\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n event: 'customElementRegistered',\n element: componentName,\n });\n};\nexport const trackComponent = (component, componentName, trackEvents) => {\n // Data layer Web component created\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n event: 'customElementAdded',\n element: componentName,\n });\n trackEvents.forEach((eventName) => {\n component.addEventListener(eventName, function (event) {\n const eventDetails = {\n event: eventName,\n element: componentName,\n target: event.target,\n };\n Object.keys(event.detail).forEach((eventKey) => {\n const eventDetail = event.detail[eventKey];\n eventDetails[eventKey] = eventDetail;\n });\n window.dataLayer.push(eventDetails);\n });\n });\n return true;\n};\n","export const setStatus = function (milestoneElement) {\n const status = milestoneElement.dataset.status;\n if (!status) {\n return;\n }\n const milestoneWrap = milestoneElement.shadowRoot.querySelector('.milestone-wrap');\n const statusTag = document.createElement('span');\n statusTag.setAttribute('part', 'status');\n statusTag.classList.add('milestone-status');\n statusTag.innerHTML = `${status} Step`;\n if (status === 'Current') {\n milestoneElement.classList.add('current');\n }\n milestoneWrap.insertAdjacentElement('afterbegin', statusTag);\n};\nexport const getMilestoneTasks = function (milestoneElement) {\n const taskWrap = milestoneElement.shadowRoot.querySelector('.task-wrap');\n const tasks = milestoneElement.dataset.items ? JSON.parse(milestoneElement.dataset.items) : [];\n if (!tasks.length) {\n return;\n }\n tasks.forEach(task => {\n const taskItem = document.createElement('details');\n const taskName = document.createElement('summary');\n const detailsWrap = document.createElement('div');\n const taskDescription = document.createElement('p');\n detailsWrap.classList.add('task-details');\n taskName.innerHTML = task.name;\n if (task.date_completed) {\n taskName.classList.add('complete');\n }\n taskItem.appendChild(taskName);\n if (task.description) {\n taskDescription.innerHTML = task.description;\n detailsWrap.appendChild(taskDescription);\n }\n if (task.actions.length) {\n detailsWrap.appendChild(getSubtasks(task.actions, taskName));\n }\n taskItem.appendChild(detailsWrap);\n taskWrap.insertAdjacentElement('beforeend', taskItem);\n // Fire tracking events\n taskItem.addEventListener('click', () => {\n if (taskItem === null || taskItem === void 0 ? void 0 : taskItem.hasAttribute('open')) {\n itemInteractionEvent('milestone-item-closed', task.name, milestoneElement);\n }\n else {\n itemInteractionEvent('milestone-item-opened', task.name, milestoneElement);\n }\n });\n });\n milestoneElement.appendChild(taskWrap);\n};\nconst itemInteractionEvent = function (eventName, taskName, element) {\n const customEvent = new CustomEvent(eventName, {\n detail: {\n title: taskName,\n },\n });\n element.dispatchEvent(customEvent);\n};\nconst getSubtasks = function (actions, taskName) {\n const actionsWrap = document.createElement('ul');\n const totalCount = actions.length;\n const completed = actions.filter((action) => action.date_completed);\n const completedCount = completed.length || 0;\n if (totalCount < 1) {\n return;\n }\n taskName.innerHTML += ` (${completedCount}/${totalCount})`;\n actions.forEach(action => {\n const actionItem = document.createElement('li');\n const actionCompletedDate = document.createElement('span');\n if (action.date_completed) {\n actionItem.classList.add('complete');\n actionCompletedDate.classList.add('action-date');\n actionCompletedDate.innerHTML = action.date_completed;\n }\n actionItem.innerHTML = action.action;\n actionItem.appendChild(actionCompletedDate);\n actionsWrap.appendChild(actionItem);\n });\n return actionsWrap;\n};\nconst milestone = function (milestoneElement) {\n setStatus(milestoneElement);\n getMilestoneTasks(milestoneElement);\n};\nexport default milestone;\n","import { trackComponent, trackComponentRegistered } from '../_global.js';\nimport milestone from '../../modules/milestone.js';\ntrackComponentRegistered('iam-milestone');\nclass iamMilestone extends HTMLElement {\n constructor() {\n var _a;\n super();\n this.attachShadow({ mode: 'open' });\n const assetLocation = document.body.hasAttribute('data-assets-location')\n ? document.body.getAttribute('data-assets-location')\n : '/assets';\n const coreCSS = document.body.hasAttribute('data-core-css')\n ? document.body.getAttribute('data-core-css')\n : `${assetLocation}/css/core.min.css`;\n const template = document.createElement('template');\n template.innerHTML = `\r\n <style>\r\n @import \"${coreCSS}\";\r\n </style>\r\n <div class=\"milestone-wrap\" part=\"milestone-wrap\">\r\n <slot name=\"milestone-intro\" class=\"milestone-intro\" part=\"milestone-intro\"></slot>\r\n <slot>\r\n <div class=\"task-wrap\" part=\"milestone-task-wrap\"></div>\r\n </slot>\r\n </div>\r\n `;\n (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.appendChild(template.content.cloneNode(true));\n }\n connectedCallback() {\n const milestoneComponent = this;\n trackComponent(milestoneComponent, 'iam-milestone', [\n 'milestone-item-closed',\n 'milestone-item-opened',\n ]);\n milestone(this);\n }\n}\nexport default iamMilestone;\n"],"names":["trackComponentRegistered","componentName","trackComponent","component","trackEvents","eventName","event","eventDetails","eventKey","eventDetail","setStatus","milestoneElement","status","milestoneWrap","statusTag","getMilestoneTasks","taskWrap","tasks","task","taskItem","taskName","detailsWrap","taskDescription","getSubtasks","itemInteractionEvent","element","customEvent","actions","actionsWrap","totalCount","completedCount","action","actionItem","actionCompletedDate","milestone","iamMilestone","_a","assetLocation","coreCSS","template"],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import { trackComponent, trackComponentRegistered } from '../_global.js';
2
+ import milestoneGroup from '../../modules/milestone-group.js';
3
+ trackComponentRegistered('iam-milestone-group');
4
+ class iamMilestoneGroup extends HTMLElement {
5
+ constructor() {
6
+ var _a;
7
+ super();
8
+ const assetLocation = document.body.hasAttribute('data-assets-location')
9
+ ? document.body.getAttribute('data-assets-location')
10
+ : '/assets';
11
+ const coreCSS = document.body.hasAttribute('data-core-css')
12
+ ? document.body.getAttribute('data-core-css')
13
+ : `${assetLocation}/css/core.min.css`;
14
+ const template = document.createElement('template');
15
+ template.innerHTML = `
16
+ <style>
17
+ @import "${coreCSS}";
18
+ </style>
19
+ <div class="milestone-group" part="milestone-group">
20
+ <slot>
21
+ </slot>
22
+ </div>
23
+ `;
24
+ (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.appendChild(template.content.cloneNode(true));
25
+ }
26
+ connectedCallback() {
27
+ const milestoneGroupComponent = this;
28
+ trackComponent(milestoneGroupComponent, 'iam-milestone-group', [
29
+ 'hide-future-items',
30
+ 'show-future-items'
31
+ ]);
32
+ milestoneGroup(this);
33
+ }
34
+ }
35
+ export default iamMilestoneGroup;