@iamproperty/components 7.7.1--beta15 → 7.7.1--beta17

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 (501) hide show
  1. package/README.md +25 -2
  2. package/assets/css/components/actionbar.component.css +1 -1
  3. package/assets/css/components/actionbar.component.css.map +1 -1
  4. package/assets/css/components/address-lookup.component.css +1 -1
  5. package/assets/css/components/address-lookup.component.css.map +1 -1
  6. package/assets/css/components/advanced-select.component.css +1 -0
  7. package/assets/css/components/advanced-select.component.css.map +1 -0
  8. package/assets/css/components/applied-filters.css +1 -1
  9. package/assets/css/components/applied-filters.css.map +1 -1
  10. package/assets/css/components/barchart.component.css +1 -1
  11. package/assets/css/components/barchart.component.css.map +1 -1
  12. package/assets/css/components/bento-grid.global.css +1 -1
  13. package/assets/css/components/bento-grid.global.css.map +1 -1
  14. package/assets/css/components/calendar.component.css +1 -1
  15. package/assets/css/components/calendar.component.css.map +1 -1
  16. package/assets/css/components/calendar.config.css +1 -1
  17. package/assets/css/components/calendar.config.css.map +1 -1
  18. package/assets/css/components/card.component.css +1 -1
  19. package/assets/css/components/card.component.css.map +1 -1
  20. package/assets/css/components/card.module.css +1 -1
  21. package/assets/css/components/card.module.css.map +1 -1
  22. package/assets/css/components/carousel.component.css +1 -1
  23. package/assets/css/components/carousel.component.css.map +1 -1
  24. package/assets/css/components/carousel.config.css +1 -1
  25. package/assets/css/components/carousel.config.css.map +1 -1
  26. package/assets/css/components/charts.config.css +1 -1
  27. package/assets/css/components/charts.config.css.map +1 -1
  28. package/assets/css/components/collapsible-side.css +1 -1
  29. package/assets/css/components/collapsible-side.css.map +1 -1
  30. package/assets/css/components/config.component.css +1 -1
  31. package/assets/css/components/config.component.css.map +1 -1
  32. package/assets/css/components/content.component.css +1 -1
  33. package/assets/css/components/content.component.css.map +1 -1
  34. package/assets/css/components/doughnutchart.component.css +1 -1
  35. package/assets/css/components/doughnutchart.component.css.map +1 -1
  36. package/assets/css/components/fileupload.css +1 -1
  37. package/assets/css/components/fileupload.css.map +1 -1
  38. package/assets/css/components/filter-card.component.css +1 -1
  39. package/assets/css/components/filter-card.component.css.map +1 -1
  40. package/assets/css/components/header.component.css +1 -1
  41. package/assets/css/components/header.component.css.map +1 -1
  42. package/assets/css/components/input.component.css +1 -1
  43. package/assets/css/components/input.component.css.map +1 -1
  44. package/assets/css/components/menu.component.css +1 -1
  45. package/assets/css/components/menu.component.css.map +1 -1
  46. package/assets/css/components/menu.global.css +1 -1
  47. package/assets/css/components/menu.global.css.map +1 -1
  48. package/assets/css/components/milestone.css +1 -1
  49. package/assets/css/components/milestone.css.map +1 -1
  50. package/assets/css/components/modal.component.css +1 -1
  51. package/assets/css/components/modal.component.css.map +1 -1
  52. package/assets/css/components/multi-step-modal.component.css +1 -1
  53. package/assets/css/components/multi-step-modal.component.css.map +1 -1
  54. package/assets/css/components/multiselect.css +1 -1
  55. package/assets/css/components/multiselect.css.map +1 -1
  56. package/assets/css/components/nav.component.css +1 -1
  57. package/assets/css/components/nav.component.css.map +1 -1
  58. package/assets/css/components/nav.docs.css +1 -1
  59. package/assets/css/components/nav.docs.css.map +1 -1
  60. package/assets/css/components/nav.global.css +1 -1
  61. package/assets/css/components/nav.global.css.map +1 -1
  62. package/assets/css/components/notification.css +1 -1
  63. package/assets/css/components/notification.css.map +1 -1
  64. package/assets/css/components/pagination.css +1 -1
  65. package/assets/css/components/pagination.css.map +1 -1
  66. package/assets/css/components/password.component.css +1 -1
  67. package/assets/css/components/password.component.css.map +1 -1
  68. package/assets/css/components/popover.component.css +1 -1
  69. package/assets/css/components/popover.component.css.map +1 -1
  70. package/assets/css/components/rank.component.css +1 -1
  71. package/assets/css/components/rank.component.css.map +1 -1
  72. package/assets/css/components/rankings.component.css +1 -1
  73. package/assets/css/components/rankings.component.css.map +1 -1
  74. package/assets/css/components/rankings.global.css +1 -1
  75. package/assets/css/components/rankings.global.css.map +1 -1
  76. package/assets/css/components/record-card.component.css +1 -1
  77. package/assets/css/components/record-card.component.css.map +1 -1
  78. package/assets/css/components/search.component.css +1 -0
  79. package/assets/css/components/search.component.css.map +1 -0
  80. package/assets/css/components/slider.css +1 -1
  81. package/assets/css/components/slider.css.map +1 -1
  82. package/assets/css/components/split-button.component.css +1 -1
  83. package/assets/css/components/split-button.component.css.map +1 -1
  84. package/assets/css/components/std-nav-standalone.component.css +1 -0
  85. package/assets/css/components/std-nav-standalone.component.css.map +1 -0
  86. package/assets/css/components/table-basic.global.css +1 -1
  87. package/assets/css/components/table-basic.global.css.map +1 -1
  88. package/assets/css/components/table.global.css +1 -1
  89. package/assets/css/components/table.global.css.map +1 -1
  90. package/assets/css/components/tabs.component.css +1 -1
  91. package/assets/css/components/tabs.component.css.map +1 -1
  92. package/assets/css/components/tag.component.css +1 -1
  93. package/assets/css/components/tag.component.css.map +1 -1
  94. package/assets/css/components/video-card.component.css +1 -1
  95. package/assets/css/components/video-card.component.css.map +1 -1
  96. package/assets/css/components/video-modal.component.css +1 -1
  97. package/assets/css/components/video-modal.component.css.map +1 -1
  98. package/assets/css/components/video.component.css +1 -1
  99. package/assets/css/components/video.component.css.map +1 -1
  100. package/assets/css/core.min.css +1 -1
  101. package/assets/css/core.min.css.map +1 -1
  102. package/assets/css/elements/badge-tag.css +1 -1
  103. package/assets/css/elements/badge-tag.css.map +1 -1
  104. package/assets/css/elements/buttons--global.css +1 -1
  105. package/assets/css/elements/buttons--global.css.map +1 -1
  106. package/assets/css/elements/buttons--special.css +1 -1
  107. package/assets/css/elements/buttons--special.css.map +1 -1
  108. package/assets/css/elements/buttons.css +1 -1
  109. package/assets/css/elements/buttons.css.map +1 -1
  110. package/assets/css/elements/container.css +1 -1
  111. package/assets/css/elements/container.css.map +1 -1
  112. package/assets/css/elements/details.css +1 -1
  113. package/assets/css/elements/details.css.map +1 -1
  114. package/assets/css/elements/dialog.css +1 -1
  115. package/assets/css/elements/dialog.css.map +1 -1
  116. package/assets/css/elements/dropdown.css +1 -1
  117. package/assets/css/elements/dropdown.css.map +1 -1
  118. package/assets/css/elements/forms.css +1 -1
  119. package/assets/css/elements/forms.css.map +1 -1
  120. package/assets/css/elements/input.css +1 -1
  121. package/assets/css/elements/input.css.map +1 -1
  122. package/assets/css/elements/links--collapsible-side.css +1 -1
  123. package/assets/css/elements/links--collapsible-side.css.map +1 -1
  124. package/assets/css/elements/links--global.css +1 -1
  125. package/assets/css/elements/links--global.css.map +1 -1
  126. package/assets/css/elements/links.css +1 -1
  127. package/assets/css/elements/links.css.map +1 -1
  128. package/assets/css/elements/lists--tick-list.css +1 -1
  129. package/assets/css/elements/lists--tick-list.css.map +1 -1
  130. package/assets/css/elements/modal.css +1 -1
  131. package/assets/css/elements/modal.css.map +1 -1
  132. package/assets/css/elements/popover.css +1 -1
  133. package/assets/css/elements/popover.css.map +1 -1
  134. package/assets/css/elements/prefix.css +1 -1
  135. package/assets/css/elements/prefix.css.map +1 -1
  136. package/assets/css/elements/select.css +1 -0
  137. package/assets/css/elements/select.css.map +1 -0
  138. package/assets/css/elements/tooltips.css +1 -1
  139. package/assets/css/elements/tooltips.css.map +1 -1
  140. package/assets/css/elements/type.css +1 -1
  141. package/assets/css/elements/type.css.map +1 -1
  142. package/assets/css/style.min.css +1 -1
  143. package/assets/css/style.min.css.map +1 -1
  144. package/assets/js/components/accordion/accordion.component.min.js +1 -1
  145. package/assets/js/components/actionbar/actionbar.component.js +5 -3
  146. package/assets/js/components/actionbar/actionbar.component.min.js +10 -8
  147. package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
  148. package/assets/js/components/address-lookup/address-lookup.component.js +12 -6
  149. package/assets/js/components/address-lookup/address-lookup.component.min.js +9 -7
  150. package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -1
  151. package/assets/js/components/advanced-select/advanced-select.component.js +8 -17
  152. package/assets/js/components/advanced-select/advanced-select.component.min.js +7 -17
  153. package/assets/js/components/advanced-select/advanced-select.component.min.js.map +1 -1
  154. package/assets/js/components/applied-filters/applied-filters.component.min.js +2 -2
  155. package/assets/js/components/barchart/barchart.component.min.js +5 -5
  156. package/assets/js/components/bento-grid/bento-grid.component.min.js +2 -2
  157. package/assets/js/components/button/button.component.min.js +1 -1
  158. package/assets/js/components/calendar/calendar.component.min.js +5 -5
  159. package/assets/js/components/card/card.component.js +1 -0
  160. package/assets/js/components/card/card.component.min.js +21 -18
  161. package/assets/js/components/card/card.component.min.js.map +1 -1
  162. package/assets/js/components/carousel/carousel.component.js +144 -52
  163. package/assets/js/components/carousel/carousel.component.min.js +15 -21
  164. package/assets/js/components/carousel/carousel.component.min.js.map +1 -1
  165. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +3 -3
  166. package/assets/js/components/config/config.component.min.js +8 -8
  167. package/assets/js/components/content/content.component.js +40 -3
  168. package/assets/js/components/content/content.component.min.js +4 -4
  169. package/assets/js/components/content/content.component.min.js.map +1 -1
  170. package/assets/js/components/darkmode/darkmode.component.min.js +1 -1
  171. package/assets/js/components/doughnutchart/doughnutchart.component.min.js +7 -7
  172. package/assets/js/components/doughnutchart/doughnutchart.component.min.js.map +1 -1
  173. package/assets/js/components/fileupload/fileupload.component.min.js +4 -4
  174. package/assets/js/components/filter-card/filter-card.component.min.js +20 -18
  175. package/assets/js/components/filter-card/filter-card.component.min.js.map +1 -1
  176. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  177. package/assets/js/components/form/form.component.min.js +1 -1
  178. package/assets/js/components/header/header.component.min.js +2 -2
  179. package/assets/js/components/inline-edit/inline-edit.component.min.js +1 -1
  180. package/assets/js/components/input/input.component.min.js +2 -2
  181. package/assets/js/components/input-range/input-range.component.min.js +1 -1
  182. package/assets/js/components/marketing/marketing.component.min.js +1 -1
  183. package/assets/js/components/menu/menu.component.js +1 -0
  184. package/assets/js/components/menu/menu.component.min.js +4 -4
  185. package/assets/js/components/menu/menu.component.min.js.map +1 -1
  186. package/assets/js/components/milestone/milestone.component.min.js +1 -1
  187. package/assets/js/components/milestone-group/milestone-group.component.min.js +1 -1
  188. package/assets/js/components/modal/modal.component.js +3 -3
  189. package/assets/js/components/modal/modal.component.min.js +4 -4
  190. package/assets/js/components/modal/modal.component.min.js.map +1 -1
  191. package/assets/js/components/multi-step/multi-step.component.min.js +1 -1
  192. package/assets/js/components/multi-step-modal/multi-step-modal.component.min.js +4 -4
  193. package/assets/js/components/multiselect/multiselect.component.min.js +4 -4
  194. package/assets/js/components/multiselect/multiselect.component.min.js.map +1 -1
  195. package/assets/js/components/nav/nav.component.js +3 -3
  196. package/assets/js/components/nav/nav.component.min.js +6 -7
  197. package/assets/js/components/nav/nav.component.min.js.map +1 -1
  198. package/assets/js/components/notification/notification.component.min.js +2 -2
  199. package/assets/js/components/pagination/pagination.component.min.js +4 -4
  200. package/assets/js/components/password/password.component.min.js +5 -5
  201. package/assets/js/components/popover/popover.component.min.js +4 -4
  202. package/assets/js/components/rank/rank.component.min.js +1 -1
  203. package/assets/js/components/rankings/rankings.component.min.js +6 -6
  204. package/assets/js/components/rating/rating.component.min.js +1 -1
  205. package/assets/js/components/record-card/record-card.component.min.js +18 -16
  206. package/assets/js/components/record-card/record-card.component.min.js.map +1 -1
  207. package/assets/js/components/search/search.component.js +8 -13
  208. package/assets/js/components/search/search.component.min.js +9 -18
  209. package/assets/js/components/search/search.component.min.js.map +1 -1
  210. package/assets/js/components/slider/slider.component.min.js +3 -3
  211. package/assets/js/components/split-button/split-button.component.js +1 -1
  212. package/assets/js/components/split-button/split-button.component.min.js +6 -6
  213. package/assets/js/components/split-button/split-button.component.min.js.map +1 -1
  214. package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js +11 -9
  215. package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js.map +1 -1
  216. package/assets/js/components/std-nav/std-nav.component.js +36 -88
  217. package/assets/js/components/std-nav/std-nav.component.min.js +15 -18
  218. package/assets/js/components/std-nav/std-nav.component.min.js.map +1 -1
  219. package/assets/js/components/std-nav-standalone/std-nav-standalone.component.js +65 -0
  220. package/assets/js/components/std-nav-standalone/std-nav-standalone.component.min.js +20 -0
  221. package/assets/js/components/std-nav-standalone/std-nav-standalone.component.min.js.map +1 -0
  222. package/assets/js/components/table/table.component.min.js +6 -6
  223. package/assets/js/components/table/table.component.min.js.map +1 -1
  224. package/assets/js/components/table-ajax/table-ajax.component.min.js +7 -7
  225. package/assets/js/components/table-ajax/table-ajax.component.min.js.map +1 -1
  226. package/assets/js/components/table-basic/table-basic.component.min.js +2 -2
  227. package/assets/js/components/table-no-submit/table-no-submit.component.min.js +4 -4
  228. package/assets/js/components/table-no-submit/table-no-submit.component.min.js.map +1 -1
  229. package/assets/js/components/table-submit/table-submit.component.min.js +6 -6
  230. package/assets/js/components/table-submit/table-submit.component.min.js.map +1 -1
  231. package/assets/js/components/tabs/tabs.component.min.js +4 -4
  232. package/assets/js/components/tabs/tabs.component.min.js.map +1 -1
  233. package/assets/js/components/tag/tag.component.min.js +3 -3
  234. package/assets/js/components/tooltip/tooltip.component.min.js +1 -1
  235. package/assets/js/components/video/video.component.min.js +5 -5
  236. package/assets/js/components/video-card/video-card.component.min.js +18 -16
  237. package/assets/js/components/video-card/video-card.component.min.js.map +1 -1
  238. package/assets/js/components/video-modal/video-modal.component.min.js +5 -5
  239. package/assets/js/components/word-count/word-count.component.min.js +1 -1
  240. package/assets/js/modules/advanced-select.js +30 -4
  241. package/assets/js/modules/card.module.js +16 -14
  242. package/assets/js/modules/carousel.js +11 -11
  243. package/assets/js/modules/nav.js +113 -0
  244. package/assets/js/modules/tabs.js +2 -1
  245. package/assets/js/scripts.bundle.js +1 -1
  246. package/assets/js/scripts.bundle.min.js +1 -1
  247. package/assets/sass/_corefiles.scss +1 -0
  248. package/assets/sass/_utilities.scss +1 -0
  249. package/assets/sass/components/actionbar.component.scss +15 -1
  250. package/assets/sass/components/address-lookup.component.scss +134 -2
  251. package/assets/sass/components/advanced-select.component.scss +59 -0
  252. package/assets/sass/components/bento-grid.global.scss +2 -2
  253. package/assets/sass/components/calendar.component.scss +1 -1
  254. package/assets/sass/components/calendar.config.scss +1 -1
  255. package/assets/sass/components/card.component.scss +29 -2
  256. package/assets/sass/components/card.module.scss +11 -5
  257. package/assets/sass/components/carousel.component.scss +535 -518
  258. package/assets/sass/components/carousel.config.scss +5 -45
  259. package/assets/sass/components/charts.config.scss +1 -1
  260. package/assets/sass/components/config.component.scss +1 -1
  261. package/assets/sass/components/filter-card.component.scss +5 -5
  262. package/assets/sass/components/header.component.scss +1 -1
  263. package/assets/sass/components/menu.component.scss +16 -11
  264. package/assets/sass/components/menu.global.scss +0 -11
  265. package/assets/sass/components/milestone.scss +2 -2
  266. package/assets/sass/components/modal.component.scss +1 -0
  267. package/assets/sass/components/multiselect.scss +8 -0
  268. package/assets/sass/components/nav.component.scss +22 -11
  269. package/assets/sass/components/nav.docs.scss +1 -2
  270. package/assets/sass/components/nav.global.scss +223 -47
  271. package/assets/sass/components/pagination.scss +2 -2
  272. package/assets/sass/components/popover.component.scss +37 -2
  273. package/assets/sass/components/search.component.scss +2 -0
  274. package/assets/sass/components/split-button.component.scss +3 -1
  275. package/assets/sass/components/std-nav-standalone.component.scss +228 -0
  276. package/assets/sass/components/table-basic.global.scss +3 -3
  277. package/assets/sass/components/table.global.scss +1 -1
  278. package/assets/sass/components/video.component.scss +1 -1
  279. package/assets/sass/elements/badge-tag.css +2 -2
  280. package/assets/sass/elements/buttons--global.css +4 -4
  281. package/assets/sass/elements/buttons--special.css +1 -52
  282. package/assets/sass/elements/container.scss +1 -1
  283. package/assets/sass/elements/details.css +3 -3
  284. package/assets/sass/elements/dialog.scss +9 -5
  285. package/assets/sass/elements/dropdown.css +188 -44
  286. package/assets/sass/elements/forms.scss +36 -522
  287. package/assets/sass/elements/input.scss +0 -7
  288. package/assets/sass/elements/links--collapsible-side.scss +1 -1
  289. package/assets/sass/elements/links--global.scss +5 -1
  290. package/assets/sass/elements/lists--tick-list.scss +2 -2
  291. package/assets/sass/elements/modal.scss +1 -1
  292. package/assets/sass/elements/popover.scss +1 -1
  293. package/assets/sass/elements/prefix.scss +1 -1
  294. package/assets/sass/elements/select.scss +238 -0
  295. package/assets/sass/elements/tooltips.scss +1 -1
  296. package/assets/sass/elements/type.css +31 -1
  297. package/assets/sass/email.scss +1 -1
  298. package/assets/sass/error.scss +0 -1
  299. package/assets/sass/foundations/debug.scss +6 -0
  300. package/assets/sass/foundations/reboot.scss +81 -1
  301. package/assets/sass/foundations/root.scss +19 -1
  302. package/assets/sass/main.scss +0 -1
  303. package/assets/sass/utilities/colours.scss +4 -1
  304. package/assets/sass/{_grid.scss → utilities/grid.scss} +120 -80
  305. package/assets/ts/components/actionbar/actionbar.component.ts +5 -3
  306. package/assets/ts/components/address-lookup/address-lookup.component.ts +18 -6
  307. package/assets/ts/components/advanced-select/advanced-select.component.ts +12 -17
  308. package/assets/ts/components/card/card.component.ts +1 -0
  309. package/assets/ts/components/carousel/carousel.component.ts +189 -58
  310. package/assets/ts/components/content/content.component.ts +62 -5
  311. package/assets/ts/components/menu/menu.component.ts +4 -0
  312. package/assets/ts/components/modal/modal.component.ts +3 -3
  313. package/assets/ts/components/nav/nav.component.ts +4 -7
  314. package/assets/ts/components/search/search.component.ts +13 -13
  315. package/assets/ts/components/split-button/split-button.component.ts +1 -1
  316. package/assets/ts/components/std-address-lookup/std-address-lookup.component.ts +0 -1
  317. package/assets/ts/components/std-nav/std-nav.component.ts +44 -104
  318. package/assets/ts/components/std-nav-standalone/std-nav-standalone.component.ts +85 -0
  319. package/assets/ts/modules/advanced-select.ts +47 -7
  320. package/assets/ts/modules/card.module.ts +16 -14
  321. package/assets/ts/modules/carousel.ts +11 -11
  322. package/assets/ts/modules/nav.ts +135 -0
  323. package/assets/ts/modules/tabs.ts +1 -1
  324. package/dist/components.es.js +27 -27
  325. package/dist/components.umd.js +291 -290
  326. package/package.json +11 -10
  327. package/src/components/STDNavStandalone/STDNavStandalone.vue +22 -0
  328. package/assets/bootstrap/LICENSE +0 -22
  329. package/assets/bootstrap/README.md +0 -247
  330. package/assets/bootstrap/js/index.esm.js +0 -19
  331. package/assets/bootstrap/js/index.umd.js +0 -34
  332. package/assets/bootstrap/js/src/alert.js +0 -87
  333. package/assets/bootstrap/js/src/base-component.js +0 -85
  334. package/assets/bootstrap/js/src/button.js +0 -72
  335. package/assets/bootstrap/js/src/carousel.js +0 -475
  336. package/assets/bootstrap/js/src/collapse.js +0 -302
  337. package/assets/bootstrap/js/src/dom/data.js +0 -55
  338. package/assets/bootstrap/js/src/dom/event-handler.js +0 -320
  339. package/assets/bootstrap/js/src/dom/manipulator.js +0 -71
  340. package/assets/bootstrap/js/src/dom/selector-engine.js +0 -83
  341. package/assets/bootstrap/js/src/dropdown.js +0 -445
  342. package/assets/bootstrap/js/src/modal.js +0 -373
  343. package/assets/bootstrap/js/src/offcanvas.js +0 -283
  344. package/assets/bootstrap/js/src/popover.js +0 -97
  345. package/assets/bootstrap/js/src/scrollspy.js +0 -290
  346. package/assets/bootstrap/js/src/tab.js +0 -307
  347. package/assets/bootstrap/js/src/toast.js +0 -220
  348. package/assets/bootstrap/js/src/tooltip.js +0 -651
  349. package/assets/bootstrap/js/src/util/backdrop.js +0 -149
  350. package/assets/bootstrap/js/src/util/component-functions.js +0 -34
  351. package/assets/bootstrap/js/src/util/config.js +0 -66
  352. package/assets/bootstrap/js/src/util/focustrap.js +0 -115
  353. package/assets/bootstrap/js/src/util/index.js +0 -336
  354. package/assets/bootstrap/js/src/util/sanitizer.js +0 -118
  355. package/assets/bootstrap/js/src/util/scrollbar.js +0 -114
  356. package/assets/bootstrap/js/src/util/swipe.js +0 -146
  357. package/assets/bootstrap/js/src/util/template-factory.js +0 -160
  358. package/assets/bootstrap/package.json +0 -180
  359. package/assets/bootstrap/scss/_accordion.scss +0 -146
  360. package/assets/bootstrap/scss/_alert.scss +0 -71
  361. package/assets/bootstrap/scss/_badge.scss +0 -38
  362. package/assets/bootstrap/scss/_breadcrumb.scss +0 -40
  363. package/assets/bootstrap/scss/_button-group.scss +0 -142
  364. package/assets/bootstrap/scss/_buttons.scss +0 -186
  365. package/assets/bootstrap/scss/_card.scss +0 -234
  366. package/assets/bootstrap/scss/_carousel.scss +0 -229
  367. package/assets/bootstrap/scss/_close.scss +0 -40
  368. package/assets/bootstrap/scss/_containers.scss +0 -41
  369. package/assets/bootstrap/scss/_dropdown.scss +0 -248
  370. package/assets/bootstrap/scss/_forms.scss +0 -9
  371. package/assets/bootstrap/scss/_functions.scss +0 -302
  372. package/assets/bootstrap/scss/_grid.scss +0 -33
  373. package/assets/bootstrap/scss/_helpers.scss +0 -10
  374. package/assets/bootstrap/scss/_images.scss +0 -42
  375. package/assets/bootstrap/scss/_list-group.scss +0 -191
  376. package/assets/bootstrap/scss/_maps.scss +0 -54
  377. package/assets/bootstrap/scss/_mixins.scss +0 -43
  378. package/assets/bootstrap/scss/_modal.scss +0 -237
  379. package/assets/bootstrap/scss/_nav.scss +0 -172
  380. package/assets/bootstrap/scss/_navbar.scss +0 -276
  381. package/assets/bootstrap/scss/_offcanvas.scss +0 -143
  382. package/assets/bootstrap/scss/_pagination.scss +0 -109
  383. package/assets/bootstrap/scss/_placeholders.scss +0 -51
  384. package/assets/bootstrap/scss/_popover.scss +0 -196
  385. package/assets/bootstrap/scss/_progress.scss +0 -59
  386. package/assets/bootstrap/scss/_reboot.scss +0 -610
  387. package/assets/bootstrap/scss/_root.scss +0 -73
  388. package/assets/bootstrap/scss/_spinners.scss +0 -85
  389. package/assets/bootstrap/scss/_tables.scss +0 -164
  390. package/assets/bootstrap/scss/_toasts.scss +0 -70
  391. package/assets/bootstrap/scss/_tooltip.scss +0 -120
  392. package/assets/bootstrap/scss/_transitions.scss +0 -27
  393. package/assets/bootstrap/scss/_type.scss +0 -106
  394. package/assets/bootstrap/scss/_utilities.scss +0 -647
  395. package/assets/bootstrap/scss/_variables-dark.scss +0 -87
  396. package/assets/bootstrap/scss/_variables.scss +0 -1633
  397. package/assets/bootstrap/scss/bootstrap-grid.scss +0 -64
  398. package/assets/bootstrap/scss/bootstrap-reboot.scss +0 -9
  399. package/assets/bootstrap/scss/bootstrap-utilities.scss +0 -15
  400. package/assets/bootstrap/scss/bootstrap.scss +0 -51
  401. package/assets/bootstrap/scss/forms/_floating-labels.scss +0 -74
  402. package/assets/bootstrap/scss/forms/_form-check.scss +0 -175
  403. package/assets/bootstrap/scss/forms/_form-control.scss +0 -194
  404. package/assets/bootstrap/scss/forms/_form-range.scss +0 -91
  405. package/assets/bootstrap/scss/forms/_form-select.scss +0 -71
  406. package/assets/bootstrap/scss/forms/_form-text.scss +0 -11
  407. package/assets/bootstrap/scss/forms/_input-group.scss +0 -129
  408. package/assets/bootstrap/scss/forms/_labels.scss +0 -36
  409. package/assets/bootstrap/scss/forms/_validation.scss +0 -12
  410. package/assets/bootstrap/scss/helpers/_clearfix.scss +0 -3
  411. package/assets/bootstrap/scss/helpers/_color-bg.scss +0 -10
  412. package/assets/bootstrap/scss/helpers/_colored-links.scss +0 -12
  413. package/assets/bootstrap/scss/helpers/_focus-ring.scss +0 -5
  414. package/assets/bootstrap/scss/helpers/_icon-link.scss +0 -25
  415. package/assets/bootstrap/scss/helpers/_position.scss +0 -36
  416. package/assets/bootstrap/scss/helpers/_ratio.scss +0 -26
  417. package/assets/bootstrap/scss/helpers/_stacks.scss +0 -15
  418. package/assets/bootstrap/scss/helpers/_stretched-link.scss +0 -15
  419. package/assets/bootstrap/scss/helpers/_text-truncation.scss +0 -7
  420. package/assets/bootstrap/scss/helpers/_visually-hidden.scss +0 -8
  421. package/assets/bootstrap/scss/helpers/_vr.scss +0 -8
  422. package/assets/bootstrap/scss/mixins/_alert.scss +0 -15
  423. package/assets/bootstrap/scss/mixins/_backdrop.scss +0 -14
  424. package/assets/bootstrap/scss/mixins/_banner.scss +0 -9
  425. package/assets/bootstrap/scss/mixins/_border-radius.scss +0 -78
  426. package/assets/bootstrap/scss/mixins/_box-shadow.scss +0 -18
  427. package/assets/bootstrap/scss/mixins/_breakpoints.scss +0 -127
  428. package/assets/bootstrap/scss/mixins/_buttons.scss +0 -70
  429. package/assets/bootstrap/scss/mixins/_caret.scss +0 -64
  430. package/assets/bootstrap/scss/mixins/_clearfix.scss +0 -9
  431. package/assets/bootstrap/scss/mixins/_color-mode.scss +0 -21
  432. package/assets/bootstrap/scss/mixins/_color-scheme.scss +0 -7
  433. package/assets/bootstrap/scss/mixins/_container.scss +0 -11
  434. package/assets/bootstrap/scss/mixins/_deprecate.scss +0 -10
  435. package/assets/bootstrap/scss/mixins/_forms.scss +0 -152
  436. package/assets/bootstrap/scss/mixins/_gradients.scss +0 -47
  437. package/assets/bootstrap/scss/mixins/_grid.scss +0 -151
  438. package/assets/bootstrap/scss/mixins/_image.scss +0 -16
  439. package/assets/bootstrap/scss/mixins/_list-group.scss +0 -24
  440. package/assets/bootstrap/scss/mixins/_lists.scss +0 -7
  441. package/assets/bootstrap/scss/mixins/_pagination.scss +0 -10
  442. package/assets/bootstrap/scss/mixins/_reset-text.scss +0 -17
  443. package/assets/bootstrap/scss/mixins/_resize.scss +0 -6
  444. package/assets/bootstrap/scss/mixins/_table-variants.scss +0 -24
  445. package/assets/bootstrap/scss/mixins/_text-truncate.scss +0 -8
  446. package/assets/bootstrap/scss/mixins/_transition.scss +0 -26
  447. package/assets/bootstrap/scss/mixins/_utilities.scss +0 -97
  448. package/assets/bootstrap/scss/mixins/_visually-hidden.scss +0 -29
  449. package/assets/bootstrap/scss/utilities/_api.scss +0 -47
  450. package/assets/bootstrap/scss/vendor/_rfs.scss +0 -354
  451. package/assets/favicons/README.md +0 -21
  452. package/assets/ts/README.md +0 -12
  453. package/assets/ts/components/actionbar/README.md +0 -56
  454. package/assets/ts/components/applied-filters/README.md +0 -20
  455. package/assets/ts/components/bento-grid/README.md +0 -31
  456. package/assets/ts/components/carousel/README.md +0 -38
  457. package/assets/ts/components/chart/README.md +0 -35
  458. package/assets/ts/components/collapsible-side/README.md +0 -38
  459. package/assets/ts/components/filterlist/README.md +0 -32
  460. package/assets/ts/components/header/README.md +0 -38
  461. package/assets/ts/components/inline-edit/README.md +0 -31
  462. package/assets/ts/components/multiselect/README.md +0 -35
  463. package/assets/ts/components/nav/README.md +0 -57
  464. package/assets/ts/components/notification/README.md +0 -47
  465. package/assets/ts/components/pagination/README.md +0 -37
  466. package/assets/ts/components/search/README.md +0 -35
  467. package/assets/ts/components/slider/README.md +0 -26
  468. package/assets/ts/components/table/README.md +0 -40
  469. package/assets/ts/components/table-basic/README.md +0 -40
  470. package/assets/ts/components/tabs/README.md +0 -34
  471. package/src/components/Accordion/README.md +0 -31
  472. package/src/components/Actionbar/README.md +0 -41
  473. package/src/components/AppliedFilters/README.md +0 -5
  474. package/src/components/Banner/README.md +0 -22
  475. package/src/components/Card/README.md +0 -24
  476. package/src/components/Carousel/README.md +0 -20
  477. package/src/components/Chart/README.md +0 -17
  478. package/src/components/CollapsibleSideMenu/README.md +0 -23
  479. package/src/components/FileUpload/README.md +0 -13
  480. package/src/components/Filterlist/README.md +0 -17
  481. package/src/components/Header/README.md +0 -27
  482. package/src/components/InlineEdit/README.md +0 -7
  483. package/src/components/Input/README.md +0 -17
  484. package/src/components/Marketing/README.md +0 -20
  485. package/src/components/Multiselect/README.md +0 -12
  486. package/src/components/Nav/README.md +0 -42
  487. package/src/components/Nav-old/README.md +0 -22
  488. package/src/components/NoteFeed/README.md +0 -16
  489. package/src/components/Notification/README.md +0 -32
  490. package/src/components/Pagination/README.md +0 -22
  491. package/src/components/PropertySearchbar/README.md +0 -25
  492. package/src/components/Search/README.md +0 -11
  493. package/src/components/Slider/README.md +0 -11
  494. package/src/components/Snapshot/README.md +0 -20
  495. package/src/components/SplitButton/README.md +0 -19
  496. package/src/components/Stepper/README.md +0 -32
  497. package/src/components/Table/README.md +0 -49
  498. package/src/components/Tabs/README.md +0 -29
  499. package/src/components/Testimonial/README.md +0 -25
  500. package/src/components/Timeline/README.md +0 -18
  501. package/src/foundations/Logo/README.md +0 -21
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * iamKey v7.7.1--beta15
2
+ * iamKey v7.7.1--beta17
3
3
  * Copyright 2022-2026 iamproperty
4
4
  */const o=i=>{window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:i})};o("iam-word-count");class n extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"}),document.body.hasAttribute("data-assets-location")&&document.body.getAttribute("data-assets-location");const t=document.createElement("template");t.innerHTML=`
5
5
  <style>
@@ -1,6 +1,13 @@
1
1
  function advancedSelect(advancedSelect, displayInputField, datalist, isSearch = false) {
2
+ var _a, _b, _c;
2
3
  let currentFocus = -1;
3
4
  const datalistWrapper = datalist.closest('.datalist__wrapper') ? datalist.closest('.datalist__wrapper') : datalist;
5
+ datalistWrapper.setAttribute('slot', 'datalist');
6
+ if (advancedSelect.querySelector('.suffix')) {
7
+ (_a = advancedSelect.querySelector('.suffix')) === null || _a === void 0 ? void 0 : _a.setAttribute('slot', 'suffix');
8
+ (_b = advancedSelect.shadowRoot.querySelector('.suffix')) === null || _b === void 0 ? void 0 : _b.innerHTML = '<slot name="suffix"></slot>';
9
+ (_c = advancedSelect.shadowRoot.querySelector('.suffix')) === null || _c === void 0 ? void 0 : _c.classList = "";
10
+ }
4
11
  // Hide the default datalist
5
12
  displayInputField.setAttribute('data-list', displayInputField.getAttribute('list'));
6
13
  displayInputField.setAttribute('list', '');
@@ -8,6 +15,17 @@ function advancedSelect(advancedSelect, displayInputField, datalist, isSearch =
8
15
  displayInputField.setAttribute('data-placeholder', displayInputField.getAttribute('placeholder'));
9
16
  if (displayInputField.hasAttribute('placeholder'))
10
17
  displayInputField.setAttribute('data-original-placeholder', displayInputField.getAttribute('placeholder'));
18
+ const checkIfEmpty = () => {
19
+ if (displayInputField.value == "") {
20
+ advancedSelect.classList.add('has-empty-input');
21
+ displayInputField.classList.add('empty');
22
+ }
23
+ else {
24
+ advancedSelect.classList.remove('has-empty-input');
25
+ displayInputField.classList.remove('empty');
26
+ }
27
+ };
28
+ checkIfEmpty();
11
29
  displayInputField.addEventListener('focus', function () {
12
30
  if (displayInputField.value != "") {
13
31
  displayInputField.setAttribute('placeholder', displayInputField.value);
@@ -47,6 +65,7 @@ function advancedSelect(advancedSelect, displayInputField, datalist, isSearch =
47
65
  optionInner.classList.remove('active');
48
66
  }
49
67
  option.classList.add('active');
68
+ checkIfEmpty();
50
69
  setTimeout(() => {
51
70
  advancedSelect.dispatchEvent(new CustomEvent('update-value', {
52
71
  detail: {
@@ -60,6 +79,7 @@ function advancedSelect(advancedSelect, displayInputField, datalist, isSearch =
60
79
  displayInputField.addEventListener('input', function () {
61
80
  displayInputField.removeAttribute('data-value');
62
81
  currentFocus = -1;
82
+ checkIfEmpty();
63
83
  if (advancedSelect.tagName != "IAM-ADDRESS-LOOKUP") {
64
84
  const text = displayInputField.value.toUpperCase();
65
85
  for (const option of datalist.options) {
@@ -111,9 +131,13 @@ function advancedSelect(advancedSelect, displayInputField, datalist, isSearch =
111
131
  }
112
132
  }
113
133
  // Add the empty button
114
- displayInputField
115
- .closest('label')
116
- .insertAdjacentHTML('beforeend', '<button class="empty btn btn-action" type="button"><i class="fa-light fa-times me-0"></i></button>');
134
+ if (displayInputField.closest('.input__wrapper')) {
135
+ displayInputField.closest('.input__wrapper').insertAdjacentHTML('beforeend', '<button class="clear-search btn btn-action" type="button"><i class="fa-light fa-times me-0"></i></button>');
136
+ }
137
+ else if (advancedSelect.shadowRoot.querySelector('.input__wrapper')) {
138
+ console.log(advancedSelect.shadowRoot.querySelector('.input__wrapper'));
139
+ advancedSelect.shadowRoot.querySelector('.input__wrapper').insertAdjacentHTML('beforeend', '<button class="clear-search btn btn-action" type="button"><i class="fa-light fa-times me-0"></i></button>');
140
+ }
117
141
  const emptyField = () => {
118
142
  const originalInput = advancedSelect.querySelector('input[type="hidden"]');
119
143
  if (originalInput) {
@@ -125,6 +149,7 @@ function advancedSelect(advancedSelect, displayInputField, datalist, isSearch =
125
149
  displayInputField.setAttribute('placeholder', displayInputField.getAttribute('data-original-placeholder'));
126
150
  displayInputField.removeAttribute('data-value');
127
151
  displayInputField.value = '';
152
+ displayInputField.classList.add('empty');
128
153
  for (const optionInner of datalist.options) {
129
154
  optionInner.classList.remove('active');
130
155
  optionInner.classList.remove('hide');
@@ -139,8 +164,9 @@ function advancedSelect(advancedSelect, displayInputField, datalist, isSearch =
139
164
  text: '',
140
165
  },
141
166
  }));
167
+ checkIfEmpty();
142
168
  };
143
- const closeBtn = advancedSelect.querySelector('.empty') ? advancedSelect.querySelector('.empty') : advancedSelect.shadowRoot.querySelector('.empty');
169
+ const closeBtn = advancedSelect.querySelector('.clear-search') ? advancedSelect.querySelector('.clear-search') : advancedSelect.shadowRoot.querySelector('.clear-search');
144
170
  closeBtn.addEventListener('click', function (e) {
145
171
  emptyField();
146
172
  });
@@ -1,17 +1,19 @@
1
- export const cardHTML = `<div class="card__head" part="head">
2
- <slot name="head"></slot>
3
- </div>
4
- <div class="card__badges"><slot name="badges"></slot></div>
5
- <slot name="checkbox" class="activate-prevent-hover"></slot>
6
- <div class="card__body" part="body">
7
- <slot></slot>
8
- <slot name="secondary" part="secondary"></slot>
9
- </div>
10
- <div class="card__details" part="details">
11
- <slot name="details"></slot>
12
- </div>
13
- <div class="card__footer" part="footer">
14
- <slot name="footer"></slot>
1
+ export const cardHTML = `<div class="wrapper">
2
+ <div class="card__head" part="head">
3
+ <slot name="head"></slot>
4
+ </div>
5
+ <div class="card__badges"><slot name="badges"></slot></div>
6
+ <slot name="checkbox" class="activate-prevent-hover"></slot>
7
+ <div class="card__body" part="body">
8
+ <slot></slot>
9
+ <slot name="secondary" part="secondary"></slot>
10
+ </div>
11
+ <div class="card__details" part="details">
12
+ <slot name="details"></slot>
13
+ </div>
14
+ <div class="card__footer" part="footer">
15
+ <slot name="footer"></slot>
16
+ </div>
15
17
  </div>`;
16
18
  export const setupCard = (cardComponent) => {
17
19
  var _a;
@@ -1,6 +1,6 @@
1
1
  export const generateThumbnailList = function (carouselComponent) {
2
2
  const thumbnailImages = [];
3
- Array.from(carouselComponent.querySelectorAll(':scope > div')).forEach((slide, index) => {
3
+ Array.from(carouselComponent.querySelectorAll(':scope > :is(div,iam-card)')).forEach((slide, index) => {
4
4
  if (slide.hasAttribute('data-thumbnail')) {
5
5
  thumbnailImages[index] = slide.getAttribute('data-thumbnail');
6
6
  }
@@ -8,7 +8,7 @@ export const generateThumbnailList = function (carouselComponent) {
8
8
  return thumbnailImages;
9
9
  };
10
10
  export const generatePipsHTML = function (carouselComponent, thumbnailImages) {
11
- const itemCount = carouselComponent.querySelectorAll(':scope > div').length;
11
+ const itemCount = carouselComponent.querySelectorAll(':scope > :is(div,iam-card)').length;
12
12
  let pips = '';
13
13
  for (let i = 1; i <= itemCount; i++) {
14
14
  let pipContent = null;
@@ -40,9 +40,9 @@ export const carousel = function (carouselComponent) {
40
40
  const carouselInner = carouselElement.querySelector('.carousel__inner');
41
41
  const carouselControls = carouselElement.querySelector('.carousel__controls');
42
42
  const carouselProgress = carouselElement.querySelector('.carousel__progress [type="range"]');
43
- const itemCount = carouselComponent.querySelectorAll(':scope > div').length;
43
+ const itemCount = carouselComponent.querySelectorAll(':scope > :is(div,iam-card)').length;
44
44
  let scrollArea = carouselInner.clientWidth;
45
- let itemWidth = carouselComponent.querySelector(':scope > div').scrollWidth;
45
+ let itemWidth = carouselComponent.querySelector(':scope > :is(div,iam-card)').scrollWidth;
46
46
  let visibleItems = Math.round(scrollArea / itemWidth);
47
47
  carouselProgress.setAttribute('min', 1);
48
48
  carouselProgress.setAttribute('step', visibleItems);
@@ -64,8 +64,8 @@ export const carousel = function (carouselComponent) {
64
64
  const scrollWidth = carouselInner.scrollWidth;
65
65
  const scrollLeft = carouselInner.scrollLeft;
66
66
  let targetSlide = Math.round((scrollLeft / scrollWidth) * itemCount) + 1;
67
- const itemWidth = carouselComponent.querySelector(':scope > div').scrollWidth;
68
- const lastItemOffset = carouselComponent.querySelector(':scope > div:last-child').offsetLeft;
67
+ const itemWidth = carouselComponent.querySelector(':scope > :is(div,iam-card)').scrollWidth;
68
+ const lastItemOffset = carouselComponent.querySelector(':scope > :is(div,iam-card):last-child').offsetLeft;
69
69
  //+60px here is to account for when the next offscreen slide is visible beneath the next arrow
70
70
  const lastItemInView = carouselInner.scrollLeft + scrollArea + carouselInner.getBoundingClientRect().left >= lastItemOffset + 60;
71
71
  const visibleItems = Math.round(scrollArea / itemWidth);
@@ -125,9 +125,9 @@ export const carousel = function (carouselComponent) {
125
125
  carouselElement.addEventListener('click', function (e) {
126
126
  const scrollArea = carouselInner.clientWidth;
127
127
  //const scrollWidth = carouselInner.scrollWidth;
128
- const itemWidth = carouselComponent.querySelector(':scope > div').scrollWidth;
128
+ const itemWidth = carouselComponent.querySelector(':scope > :is(div,iam-card)').scrollWidth;
129
129
  const visibleItems = Math.round(scrollArea / itemWidth);
130
- const lastItemOffset = carouselComponent.querySelector(':scope > div:last-child').offsetLeft;
130
+ const lastItemOffset = carouselComponent.querySelector(':scope > :is(div,iam-card):last-child').offsetLeft;
131
131
  const lastItemInView = carouselInner.scrollLeft + scrollArea + carouselInner.getBoundingClientRect().left >= lastItemOffset + 60;
132
132
  //Check if theres room for more slides than we have
133
133
  const leftOverSpace = Math.ceil(itemCount / visibleItems) * visibleItems - itemCount;
@@ -164,7 +164,7 @@ export const carousel = function (carouselComponent) {
164
164
  clearInterval(stepperInterval);
165
165
  stepperInterval = setInterval(function () {
166
166
  scrollArea = carouselInner.clientWidth;
167
- itemWidth = carouselComponent.querySelector(':scope > div').scrollWidth;
167
+ itemWidth = carouselComponent.querySelector(':scope > :is(div,iam-card)').scrollWidth;
168
168
  visibleItems = Math.round(scrollArea / itemWidth);
169
169
  carouselProgress.setAttribute('step', visibleItems);
170
170
  progressMax = getProgressMax(itemCount, visibleItems);
@@ -198,9 +198,9 @@ export const updateCarousel = function (carouselComponent) {
198
198
  const carouselInner = carouselElement.querySelector('.carousel__inner');
199
199
  const carouselControls = carouselElement.querySelector('.carousel__controls');
200
200
  const carouselProgress = carouselElement.querySelector('.carousel__progress [type="range"]');
201
- const itemCount = carouselComponent.querySelectorAll(':scope > div').length;
201
+ const itemCount = carouselComponent.querySelectorAll(':scope > :is(div,iam-card)').length;
202
202
  let scrollArea = carouselInner.clientWidth;
203
- let itemWidth = carouselComponent.querySelector(':scope > div').scrollWidth;
203
+ let itemWidth = carouselComponent.querySelector(':scope > :is(div,iam-card)').scrollWidth;
204
204
  let visibleItems = Math.round(scrollArea / itemWidth);
205
205
  carouselProgress.setAttribute('min', 1);
206
206
  carouselProgress.setAttribute('step', visibleItems);
@@ -1,3 +1,12 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
1
10
  const navbar = (element) => {
2
11
  Array.from(element.querySelectorAll('details')).forEach((detail) => {
3
12
  detail.addEventListener('mouseenter', function () {
@@ -16,4 +25,108 @@ const navbar = (element) => {
16
25
  observer.observe(element);
17
26
  }
18
27
  };
28
+ export const populateNav = (data) => {
29
+ let html = ``;
30
+ data.forEach((feature) => {
31
+ if (feature.attributes.sections.length)
32
+ html += `<details name="megamenu"><summary>${feature.attributes.title}</summary><div data-title="${feature.attributes.title}">${populateSections(feature.attributes.sections)}</div></details>`;
33
+ else if (feature.attributes.links)
34
+ html += `<details name="megamenu"><summary>${feature.attributes.title}</summary><div data-title="${feature.attributes.title}">${populateLinks(feature.attributes.links)}</div></details>`;
35
+ else
36
+ html += `<a href="/">${feature.attributes.title}</a>`;
37
+ });
38
+ return html;
39
+ };
40
+ export const populateSections = (data) => {
41
+ let html = ``;
42
+ data.forEach((section) => {
43
+ html += `<span class="section section--${section.layout}">
44
+ ${section.title ? `<span class="lead text-heading section-title" data-product="${section.id}" data-title>${section.title}</span>` : ''}
45
+ ${section.description ? `<span class="lead section-desc" data-product="${section.id}">! ${section.description}</span>` : ''}
46
+ ${populateLinks(section.links)}
47
+ </span>`;
48
+ });
49
+ return html;
50
+ };
51
+ export const populateLinks = (data) => {
52
+ let html = ``;
53
+ data.forEach((link) => {
54
+ html += `<a href="${link.destinations.unlinked}" target="_blank" data-product="${link.productKey}" data-feature="${link.featureKey}" data-enabled="${link.destinations.linkedEnabled}" data-disabled="${link.destinations.linkedDisabled}">${link.title}</a>`;
55
+ });
56
+ return html;
57
+ };
58
+ export const loadNavData = (Cookies) => __awaiter(void 0, void 0, void 0, function* () {
59
+ //const ajaxURL = 'https://dev.hub.iamproperty.group/data/ecosystem-switcher.json';
60
+ const ajaxURL = '/nav.json';
61
+ // Setup controller vars if not already set
62
+ if (!window.controller)
63
+ window.controller = [];
64
+ // Abort if controller already present for this url
65
+ if (window.controller[ajaxURL])
66
+ window.controller[ajaxURL].abort();
67
+ // Create a new controller so it can be aborted if new fetch made
68
+ window.controller[ajaxURL] = new AbortController();
69
+ const { signal } = window.controller[ajaxURL];
70
+ try {
71
+ const response = yield fetch(ajaxURL, {
72
+ signal,
73
+ method: 'GET',
74
+ headers: {
75
+ Accept: 'application/json',
76
+ },
77
+ });
78
+ const json = yield response.json();
79
+ const data = json.data ? json.data : json;
80
+ return data;
81
+ }
82
+ catch (error) {
83
+ if ((error === null || error === void 0 ? void 0 : error.name) === 'AbortError') {
84
+ return true;
85
+ }
86
+ console.log(error);
87
+ return 'There has been a problem. Please try again in a few moments.';
88
+ }
89
+ });
90
+ export const loadUserData = (Cookies) => __awaiter(void 0, void 0, void 0, function* () {
91
+ const ajaxURL = '/user.json';
92
+ // Setup controller vars if not already set
93
+ if (!window.controller)
94
+ window.controller = [];
95
+ // Abort if controller already present for this url
96
+ if (window.controller[ajaxURL])
97
+ window.controller[ajaxURL].abort();
98
+ // Create a new controller so it can be aborted if new fetch made
99
+ window.controller[ajaxURL] = new AbortController();
100
+ const { signal } = window.controller[ajaxURL];
101
+ try {
102
+ const response = yield fetch(ajaxURL, {
103
+ signal,
104
+ method: 'GET',
105
+ headers: {
106
+ Accept: 'application/json',
107
+ },
108
+ });
109
+ const json = yield response.json();
110
+ const data = json.data ? json.data : json;
111
+ return data;
112
+ }
113
+ catch (error) {
114
+ if ((error === null || error === void 0 ? void 0 : error.name) === 'AbortError') {
115
+ return true;
116
+ }
117
+ console.log(error);
118
+ return 'There has been a problem. Please try again in a few moments.';
119
+ }
120
+ });
121
+ export const setEnabledLinks = (component, data) => {
122
+ console.log(data);
123
+ component.querySelectorAll(`[data-product][data-feature]`).forEach((element) => {
124
+ const isEnabled = data.attributes.products[element.getAttribute('data-product')].features[element.getAttribute('data-feature')];
125
+ element.setAttribute('data-is-enabled', isEnabled);
126
+ if (isEnabled && element.getAttribute('data-enabled')) {
127
+ element.setAttribute('href', element.getAttribute('data-enabled'));
128
+ element.removeAttribute('target');
129
+ }
130
+ });
131
+ };
19
132
  export default navbar;
@@ -131,8 +131,9 @@ export const setTabsEventHandlers = function (tabsElement) {
131
131
  });
132
132
  details.forEach((detailsElement, index) => {
133
133
  detailsElement.addEventListener("toggle", function () {
134
+ var _a;
134
135
  if (detailsElement.open)
135
- detailsElement.querySelector('button,input').focus();
136
+ (_a = detailsElement.querySelector('button,input')) === null || _a === void 0 ? void 0 : _a.focus();
136
137
  });
137
138
  });
138
139
  nextButton === null || nextButton === void 0 ? void 0 : nextButton.addEventListener('click', (e) => {
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * iamKey v7.7.1--beta15
2
+ * iamKey v7.7.1--beta17
3
3
  * Copyright 2022-2026 iamproperty
4
4
  */(function(w){typeof define=="function"&&define.amd?define(w):w()})((function(){"use strict";var w=a=>{a.classList.add("js-enabled"),(navigator.userAgent.indexOf("MSIE")!==-1||navigator.appVersion.indexOf("Trident/")>0)&&a.classList.add("ie")},H=a=>{var e=function(n){var r=document.querySelector('label[for="'.concat(n.replace("#",""),'"]')),s=document.querySelector(n+" summary"),u=document.querySelector("dialog".concat(n)),i=document.querySelector("detail".concat(n));r instanceof HTMLElement?r.click():s instanceof HTMLElement?s.click():u instanceof HTMLElement?u.showModal():i instanceof HTMLElement&&i.addAttribute("open")};location.hash&&e(location.hash),window.addEventListener("hashchange",function(){e(location.hash)},!1),addEventListener("popstate",o=>{if(o&&o.state&&o.state.type&&o.state.type=="pagination"){var n=document.querySelector("#".concat(o.state.form)),r=document.querySelector("#".concat(o.state.form," [data-pagination]"));r?r.value=o.state.page:n.innerHTML+='<input name="page" type="hidden" data-pagination="true" value="'.concat(o.state.page,'" />'),n.dispatchEvent(new Event("submit"))}}),Array.from(document.querySelectorAll("form")).forEach(o=>{o?.closest("iam-form")||o.addEventListener("submit",n=>{var r;o.querySelector(":invalid")&&(o.classList.add("was-validated"),(r=o?.querySelector("input:invalid"))===null||r===void 0||r.scrollIntoView(),n.preventDefault())})}),document.addEventListener("click",o=>{var n;if(o&&o.target instanceof HTMLElement&&o.target.matches("form button:not([type=button])")){var r=o.target.closest("form");r?.closest("iam-form")||(Array.from(r.querySelectorAll("[data-password-type]")).forEach(s=>{s.setAttribute("type","password")}),(r.querySelector(":invalid")||r.querySelector('.pwd-checker[data-strength="1"]')||r.querySelector('.pwd-checker[data-strength="2"]'))&&(r.classList.add("was-validated"),(n=r?.querySelector("input:invalid"))===null||n===void 0||n.scrollIntoView(),o.preventDefault()),r.querySelector("iam-multiselect[data-is-required][data-error]")&&(r.classList.add("was-validated"),o.preventDefault()))}}),document.addEventListener("keydown",o=>{o.key==="Escape"&&document.querySelector(".dialog--transactional[open], .dialog--acknowledgement[open]")&&(o.preventDefault(),o.stopPropagation())}),Array.from(document.querySelectorAll("label progress")).forEach(o=>{var n=o.closest("label");n.setAttribute("data-percent",o.getAttribute("value"))})};function N(){window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"Pageview",pageTitle:document.title}),document.addEventListener("click",a=>{var e=a.target.closest("[open] summary");if(e)window.dataLayer.push({event:"closeDetails",detailsTitle:e.textContent||""});else{var o=a.target.closest("summary"),n=a.target.closest("a"),r=a.target.closest("button");o&&window.dataLayer.push({event:"openDetails",detailsTitle:o.textContent||""}),n&&window.dataLayer.push({event:"linkClicked",linkText:n.hasAttribute("title")?n.getAttribute("title")||"":n.textContent||"",class:n.hasAttribute("class")&&n.getAttribute("class")||"",href:n.getAttribute("href")||""}),r&&window.dataLayer.push({event:"buttonClicked",buttonText:r.textContent||"",class:r.hasAttribute("class")&&r.getAttribute("class")||""})}})}window.triggerDynamicEvent=function(a){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"change";console.log("event"),a.hasAttribute("data-change-events")&&e=="change"&&v(a,a.getAttribute("data-change-events")),a.hasAttribute("data-click-events")&&e=="click"&&v(a,a.getAttribute("data-click-events"))};var M=()=>{document.addEventListener("change",a=>{a&&a.target instanceof HTMLElement&&a.target.closest("[data-change-events]")&&v(a.target,a.target.closest("[data-change-events]").getAttribute("data-change-events"))}),document.addEventListener("keyup",a=>{a&&a.target instanceof HTMLElement&&a.target.closest("[data-change-events]")&&v(a.target,a.target.closest("[data-change-events]").getAttribute("data-change-events"))}),document.addEventListener("click",a=>{a&&a.target instanceof HTMLElement&&a.target.closest("[data-click-events]")&&v(a.target,a.target.closest("[data-click-events]").getAttribute("data-click-events"))})},v=(a,e)=>{if(e||(e=a.parentNode.getAttribute("data-change-events")),!e)return!1;Array.from(JSON.parse(e)).forEach(o=>{C(a,o)})},C=(a,e)=>{if("matches"in e)return e.matches=="any"||a.value==e.matches?f(a,e,"if"):f(a,e,"else"),!1;if("in-list"in e){var o=document.querySelector("".concat(e["in-list"],' option[value="').concat(a.value,'"]'));return document.querySelector("".concat(e["in-list"],' option[value="').concat(a.value,'"]'))?f(o,e,"if"):f(o,e,"else"),!1}else"event"in e&&f(a,e,"event")},f=(a,e,o)=>{if(!(o in e))return!1;switch(e[o]){case"hide":if(document.querySelector(e.target)){var n=document.querySelector(e.target);n.classList.add("js-hide"),Array.from(n.querySelectorAll("[data-required]")).forEach(i=>{i.removeAttribute("required")})}break;case"show":if(document.querySelector(e.target)){var r=document.querySelector(e.target);r.classList.remove("js-hide"),Array.from(r.querySelectorAll("[data-required]")).forEach(i=>{i.closest(".js-hide")||i.setAttribute("required","true")})}break;case"populate-form":D(a,e);break;case"dispatchEvent":var s=new Event(e.value);document.querySelector("".concat(e.target)).dispatchEvent(s);break;case"setAttribute":Array.from(document.querySelectorAll("".concat(e.target))).forEach(function(i){i.setAttribute(e.attribute,e.value)});break;case"focus":document.querySelector("".concat(e.target)).focus();break;case"removeAttribute":Array.from(document.querySelectorAll("".concat(e.target))).forEach(function(i){i.removeAttribute(e.attribute)});break;case"updateValue":document.querySelector("".concat(e.target)).value=e.value?e.value:"";var u=new Event("change");document.querySelector("".concat(e.target)).dispatchEvent(u);break;case"submitForm":document.querySelector("".concat(e.target)).submit();break;case"openLink":document.querySelector("".concat(e.target)).value&&(window.location.href=document.querySelector("".concat(e.target)).value);break}},D=function(e,o){var n=JSON.parse(e.getAttribute("data-values")),r=document.querySelector(o.target);if(!n)return!1;Object.keys(n).forEach(s=>{document.getElementById(s)&&document.getElementById(s).tagName=="SPAN"&&(document.getElementById(s).innerHTML=n[s]),r.querySelector('select[name="'.concat(s,'"] [value="').concat(n[s],'"]'))?(r.querySelector('select[name="'.concat(s,'"]')).value=n[s],e.hasAttribute("data-lock-fields")&&(r.querySelector('select[name="'.concat(s,'"]')).disabled=!0)):r.querySelector('input[name="'.concat(s,'"][type="radio"][value="').concat(n[s],'"]'))?(Array.from(r.querySelectorAll('input[name="'.concat(s,'"][type="radio"]'))).forEach(function(u){u.disabled=!0}),r.querySelector('input[name="'.concat(s,'"][type="radio"][value="').concat(n[s],'"]')).checked=!0,r.querySelector('input[name="'.concat(s,'"][type="radio"][value="').concat(n[s],'"]')).disabled=!1):r.querySelector('input[name="'.concat(s,'"]'))&&(r.querySelector('input[name="'.concat(s,'"]')).value=n[s],e.hasAttribute("data-lock-fields")&&r.querySelector('input[name="'.concat(s,'"]')).setAttribute("readonly","true"))})},F=()=>{var a=[],e={},o="These tests run against mark-up and content meant to test how a component or element has been integrated. Making sure that guidance setout in the design system is being followed.";window.integrationTestsIntro=o,console.log("%cVirgin Money Framework Tests","color: #E10A0A; font-size: 24px; font-weight: bold; margin-top: 20px; margin-bottom: 10px;"),console.log("%c"+o,"font-size: 14px; margin-bottom: 20px;"),console.log("%cKey","font-size: 16px;font-weight:bold;"),console.log("%c %cSuccessfully implemented","background-color: green; margin-right: 10px","background-color: transparent"),console.log("%c %cNOT implemented correctly","background-color: red; margin-right: 10px","background-color: transparent"),console.log("%c %cN/A","background-color: grey; margin-right: 10px","background-color: transparent"),console.log("%c %cWarning - No action needed","background-color: orange; margin-right: 10px","background-color: transparent"),console.log("%c ? %cWarning - Action needed","background-color: orange; margin-right: 10px","background-color: transparent"),e={Test:"Each card with in a card deck has a footer with some CTA text via a button link",Total:0,Passes:0,Fails:0},Array.from(document.querySelectorAll(".card-deck .card")).forEach((t,c)=>{if(t.closest(".navbar")==null){var l=t.querySelector(".btn-link");l!=null&&l.textContent.length?e.Passes++:e.Fails++}}),e.Total=e.Passes+e.Fails,a.push(e),e={Test:"Article Decks need to have a background colour applied",Total:0,Passes:0,Fails:0},Array.from(document.querySelectorAll(".article-deck")).forEach((t,c)=>{var l=t.closest(".container");l!=null&&l.matches('[class*="bg-"]')?e.Passes++:e.Fails++}),e.Total=e.Passes+e.Fails,a.push(e),e={Test:"Tabs Carousel has a h2 title with a display-4 class. It should always have a strapline next to it also.",Total:0,Passes:0,Fails:0,Notes:"The site nav contains cards without a footer by design."},Array.from(document.querySelectorAll(".tabs__container--carousel")).forEach((t,c)=>{var l=t.querySelector("h2.display-4:first-child"),d=t.querySelector("h2.display-4:first-child + .strapline");l!=null&&d!=null?e.Passes++:e.Fails++}),e.Total=e.Passes+e.Fails,a.push(e),e={Test:"Split Containers can only have multiple of two columns. So either 2, 4, 6 and so on.",Total:0,Passes:0,Fails:0,Notes:""},Array.from(document.querySelectorAll(".container.container--split")).forEach((t,c)=>{t.querySelectorAll(':scope > .row > [class*="col"]').length%2===0?e.Passes++:e.Fails++}),e.Total=e.Passes+e.Fails,a.push(e),e={Test:"Statement Containers with only one paragraph or text element should have the class of .h6",Total:0,Passes:0,Fails:0,Notes:""},Array.from(document.querySelectorAll(".container.container--statement")).forEach((t,c)=>{t.querySelectorAll(":scope > *").length==1&&t.querySelectorAll(":scope > .h6:first-child").length==1?e.Passes++:t.querySelectorAll(":scope > *").length==1&&e.Fails++}),e.Total=e.Passes+e.Fails,a.push(e),e={Test:"CTA Containers title should always have the class of .h1",Total:0,Passes:0,Fails:0,Notes:""},Array.from(document.querySelectorAll(".container.container--cta")).forEach((t,c)=>{t.querySelectorAll("h2.h1:first-child").length==1?e.Passes++:e.Fails++}),e.Total=e.Passes+e.Fails,a.push(e),console.log("%cImplementation Tests","font-size: 16px;font-weight:bold; margin-top: 20px;"),a.forEach(function(t){var c="green";t.Total===0?c="grey":t.Fails!=0&&(c="red"),t.Type=="warning"&&(c="orange"),console.groupCollapsed("%c %c"+t.Test,"background-color: "+c+"; margin-right: 10px","background-color: transparent"),console.table({Passed:{value:t.Passes},Failed:{value:t.Fails},Total:{value:t.Total}}),t.Notes!=""&&console.log(t.Notes),console.groupEnd()}),window.integrationTests=a;var n=[];e={Test:"There are XX padding classes being used on this page",Type:"warning",Total:0,Passes:0,Fails:0,Notes:""},Array.from(document.querySelectorAll('[class*="p-"],[class*="pt-"],[class*="pb-"],[class*="pl-"],[class*="pr-"],[class*="px-"],[class*="py-"]')).forEach((t,c)=>{e.Total++}),e.Test=e.Test.replace("XX",e.Total),n.push(e),e={Test:"There are XX margin classes being used on this page",Type:"warning",Total:0,Passes:0,Fails:0,Notes:""},Array.from(document.querySelectorAll('[class*="m-"],[class*="mt-"],[class*="mb-"],[class*="ml-"],[class*="mr-"],[class*="mx-"],[class*="my-"]')).forEach((t,c)=>{e.Total++}),e.Test=e.Test.replace("XX",e.Total),n.push(e),e={Test:"There are XX text modifier classes being used on this page",Type:"warning",Total:0,Passes:0,Fails:0,Notes:""},Array.from(document.querySelectorAll('[class*="text-"]')).forEach((t,c)=>{e.Total++}),e.Test=e.Test.replace("XX",e.Total),n.push(e),console.log("%cUtility classes","font-size: 16px;font-weight:bold;"),console.log("The use of certain utility classes is necessary at times but the over use of these classes will lead to design/layout inconsistencies."),n.forEach(function(t){var c="green";t.Total===0?c="grey":t.Fails!=0&&(c="red"),t.Type=="warning"&&(c="orange"),console.groupCollapsed("%c %c"+t.Test,"background-color: "+c+"; margin-right: 10px","background-color: transparent"),console.table({Total:{value:t.Total}}),t.Notes!=""&&console.log(t.Notes),console.groupEnd()}),console.log("%cAccessibility and Best practice Tests","font-size: 16px;font-weight:bold;");var r="green",s=1,u={};Array.from(document.querySelectorAll("h1,h2,h3,h4,h5,h6")).forEach((t,c)=>{var l=1,d=t.textContent;t.matches("h2")?l=2:t.matches("h3")?l=3:t.matches("h4")?l=4:t.matches("h5")?l=5:t.matches("h6")&&(l=6);var h=l-s<=1;c==0&&l!=1&&(h=!1);var p={"Heading Level":l,"In order":h};h?s=l:r="red",u[d]=p}),console.groupCollapsed("%c %cHeadings are in the correct order","background-color: "+r+"; margin-right: 10px","background-color: transparent"),console.table(u),console.groupEnd(),console.groupCollapsed("%c ? %cDo all of the headings make sense out of context and do they introduce the content that follows?","background-color: orange; margin-right: 10px","background-color: transparent"),console.log("You should be able to read the below table and get an understanding of what the page content consists of. The titles should make sense when read in order and child titles should be relevant to the parent title."),console.table(u),console.groupEnd();var i={};Array.from(document.querySelectorAll("a")).forEach((t,c)=>{var l=t.getAttribute("href"),d=t.textContent,h=t.getAttribute("title"),p={Text:d,Title:h};i[l]=p}),console.groupCollapsed("%c ? %cDo all of the links make sense out of context and do they describe the page/section that it links to?","background-color: orange; margin-right: 10px","background-color: transparent"),console.table(i),console.groupEnd();var A={},m={};Array.from(document.querySelectorAll("img[alt]")).forEach((t,c)=>{var l=t.getAttribute("src"),d=t.getAttribute("alt");if(d!=""){var h={Alt:d};A[l]=h}else{var l=t.getAttribute("src"),p={};m[l]=p}}),console.groupCollapsed("%c ? %cDo all of the images with an alt tag make sense out of context and describes the image appropriately?","background-color: orange; margin-right: 10px","background-color: transparent"),console.table(A),console.log("%cImages with an empty alt tag:","font-weight: bold;"),console.table(m),console.groupEnd(),console.groupCollapsed("%c ? %cCan you navigation the page links by tabbing through the page?","background-color: orange; margin-right: 10px","background-color: transparent"),console.log("Are all of the links, input fields and buttons accessible through using the keyboard only?"),console.groupEnd(),console.log("%cLighthouse","font-size: 16px;font-weight:bold;"),console.groupCollapsed("%c ? %cHave you ran a lighthouse report on this page","background-color: orange; margin-right: 10px","background-color: transparent"),console.log("If you are in a modern version of chrome you can a lighthouse report by opening the lighthouse window within the devtools. This should appear as a tab link above."),console.log("This report will give you more detail about the above the tests aswell as extra tests. "),console.groupEnd(),console.log("%cImage sizes","font-size: 16px;font-weight:bold;"),console.log("The below tests work from the current screen size, so if you have your screen at a mobile viewport the scaling and sizes of images will reflect that. It is worth running the image tests in both mobile and desktop views. Simply change the screen size and refresh the page."),Array.from(document.querySelectorAll("img")).forEach((t,c)=>{if(!t.matches("[src*='http']")&&!t.matches("[src$='.svg']")){var l=t.getAttribute("src"),d=new XMLHttpRequest;d.open("HEAD",l,!0),d.onreadystatechange=function(){if(d.readyState==4)if(d.status==200){var h=d.getResponseHeader("Content-Length");if(h>1024){var p=t.naturalWidth,P=t.naturalHeight,S=t.clientWidth,O=t.clientHeight,k=(S/p).toFixed(2)=="0.00"?"Hidden":(S/p).toFixed(2),B=Math.floor(h/1024),E=(h/(p*P)).toFixed(2),b="green",L="green",q="green",x="",T="";E>.5?(b="red",L="red",x="The image has a VERY large 'Bytes per pixel' score, trying optimising the image using https://tinypng.com/."):E>.2&&(b="orange",L="orange",x="The image has a large 'Bytes per pixel' score, trying optimising the image using https://tinypng.com/."),k>1.2?(b="red",q="red",T="The image size is smaller than the size shown on screen this may cause the image to appear blurry and low quality."):k<.5?(b="red",q="red",T="The image size is VERY large compared to the size shown on screen, this means unnecessary kb's are being downloaded. Try resizing the image in photoshop or other image editing software."):k<.8&&(b="orange",q="orange",T="The image size is large compared to the size shown on screen, this means unnecessary kb's are being downloaded. Try resizing the image in photoshop or other image editing software."),console.log("%c %c "+t.src,"background: url("+t.src+"); border: 3px solid "+b+"; line-height: 30px; width: 30px; background-size: cover;","background-color: transparent"),x!=""&&console.log("%c %c"+x,"background-color: "+L+"; margin-right: 10px","background-color: transparent"),T!=""&&console.log("%c %c"+T,"background-color: "+q+"; margin-right: 10px","background-color: transparent"),console.table({Image:{Dimensions:p+"x"+P,"Scaled to":S+"x"+O,Scale:k,Filesize:B+"Kb","Bytes per pixel":E}}),console.groupEnd()}}else console.log("%c %c"+t.src+" not loaded","background-color: red; margin-right: 10px","background-color: transparent")},d.send(null)}});var g=[];if(typeof window.integrationTests<"u"&&window.integrationTests.forEach(function(t){t.Total!=0&&t.Type!="warning"&&g.push(t.Test)}),g.length!=0){var y=document.querySelector("#vmtests-display");if(y!=null){y.innerHTML=`<div class="container">
5
5
  <h2>Integration notes</h2>
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * iamKey v7.7.1--beta15
2
+ * iamKey v7.7.1--beta17
3
3
  * Copyright 2022-2026 iamproperty
4
4
  */
5
5
  !function(e){"function"==typeof define&&define.amd?define(e):e()}(function(){"use strict";window.triggerDynamicEvent=function(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"change";console.log("event"),t.hasAttribute("data-change-events")&&"change"==a&&e(t,t.getAttribute("data-change-events")),t.hasAttribute("data-click-events")&&"click"==a&&e(t,t.getAttribute("data-click-events"))};var e=(e,a)=>{if(a||(a=e.parentNode.getAttribute("data-change-events")),!a)return!1;Array.from(JSON.parse(a)).forEach(a=>{t(e,a)})},t=(e,t)=>{if("matches"in t)return"any"==t.matches||e.value==t.matches?a(e,t,"if"):a(e,t,"else"),!1;if("in-list"in t){var o=document.querySelector("".concat(t["in-list"],' option[value="').concat(e.value,'"]'));return document.querySelector("".concat(t["in-list"],' option[value="').concat(e.value,'"]'))?a(o,t,"if"):a(o,t,"else"),!1}"event"in t&&a(e,t,"event")},a=(e,t,a)=>{if(!(a in t))return!1;switch(t[a]){case"hide":if(document.querySelector(t.target)){var n=document.querySelector(t.target);n.classList.add("js-hide"),Array.from(n.querySelectorAll("[data-required]")).forEach(e=>{e.removeAttribute("required")})}break;case"show":if(document.querySelector(t.target)){var r=document.querySelector(t.target);r.classList.remove("js-hide"),Array.from(r.querySelectorAll("[data-required]")).forEach(e=>{e.closest(".js-hide")||e.setAttribute("required","true")})}break;case"populate-form":o(e,t);break;case"dispatchEvent":var s=new Event(t.value);document.querySelector("".concat(t.target)).dispatchEvent(s);break;case"setAttribute":Array.from(document.querySelectorAll("".concat(t.target))).forEach(function(e){e.setAttribute(t.attribute,t.value)});break;case"focus":document.querySelector("".concat(t.target)).focus();break;case"removeAttribute":Array.from(document.querySelectorAll("".concat(t.target))).forEach(function(e){e.removeAttribute(t.attribute)});break;case"updateValue":document.querySelector("".concat(t.target)).value=t.value?t.value:"";var l=new Event("change");document.querySelector("".concat(t.target)).dispatchEvent(l);break;case"submitForm":document.querySelector("".concat(t.target)).submit();break;case"openLink":document.querySelector("".concat(t.target)).value&&(window.location.href=document.querySelector("".concat(t.target)).value)}},o=function(e,t){var a=JSON.parse(e.getAttribute("data-values")),o=document.querySelector(t.target);if(!a)return!1;Object.keys(a).forEach(t=>{document.getElementById(t)&&"SPAN"==document.getElementById(t).tagName&&(document.getElementById(t).innerHTML=a[t]),o.querySelector('select[name="'.concat(t,'"] [value="').concat(a[t],'"]'))?(o.querySelector('select[name="'.concat(t,'"]')).value=a[t],e.hasAttribute("data-lock-fields")&&(o.querySelector('select[name="'.concat(t,'"]')).disabled=!0)):o.querySelector('input[name="'.concat(t,'"][type="radio"][value="').concat(a[t],'"]'))?(Array.from(o.querySelectorAll('input[name="'.concat(t,'"][type="radio"]'))).forEach(function(e){e.disabled=!0}),o.querySelector('input[name="'.concat(t,'"][type="radio"][value="').concat(a[t],'"]')).checked=!0,o.querySelector('input[name="'.concat(t,'"][type="radio"][value="').concat(a[t],'"]')).disabled=!1):o.querySelector('input[name="'.concat(t,'"]'))&&(o.querySelector('input[name="'.concat(t,'"]')).value=a[t],e.hasAttribute("data-lock-fields")&&o.querySelector('input[name="'.concat(t,'"]')).setAttribute("readonly","true"))})},n=()=>{var e=[],t={},a="These tests run against mark-up and content meant to test how a component or element has been integrated. Making sure that guidance setout in the design system is being followed.";window.integrationTestsIntro=a,console.log("%cVirgin Money Framework Tests","color: #E10A0A; font-size: 24px; font-weight: bold; margin-top: 20px; margin-bottom: 10px;"),console.log("%c"+a,"font-size: 14px; margin-bottom: 20px;"),console.log("%cKey","font-size: 16px;font-weight:bold;"),console.log("%c %cSuccessfully implemented","background-color: green; margin-right: 10px","background-color: transparent"),console.log("%c %cNOT implemented correctly","background-color: red; margin-right: 10px","background-color: transparent"),console.log("%c %cN/A","background-color: grey; margin-right: 10px","background-color: transparent"),console.log("%c %cWarning - No action needed","background-color: orange; margin-right: 10px","background-color: transparent"),console.log("%c ? %cWarning - Action needed","background-color: orange; margin-right: 10px","background-color: transparent"),t={Test:"Each card with in a card deck has a footer with some CTA text via a button link",Total:0,Passes:0,Fails:0},Array.from(document.querySelectorAll(".card-deck .card")).forEach((e,a)=>{if(null==e.closest(".navbar")){var o=e.querySelector(".btn-link");null!=o&&o.textContent.length?t.Passes++:t.Fails++}}),t.Total=t.Passes+t.Fails,e.push(t),t={Test:"Article Decks need to have a background colour applied",Total:0,Passes:0,Fails:0},Array.from(document.querySelectorAll(".article-deck")).forEach((e,a)=>{var o=e.closest(".container");null!=o&&o.matches('[class*="bg-"]')?t.Passes++:t.Fails++}),t.Total=t.Passes+t.Fails,e.push(t),t={Test:"Tabs Carousel has a h2 title with a display-4 class. It should always have a strapline next to it also.",Total:0,Passes:0,Fails:0,Notes:"The site nav contains cards without a footer by design."},Array.from(document.querySelectorAll(".tabs__container--carousel")).forEach((e,a)=>{var o=e.querySelector("h2.display-4:first-child"),n=e.querySelector("h2.display-4:first-child + .strapline");null!=o&&null!=n?t.Passes++:t.Fails++}),t.Total=t.Passes+t.Fails,e.push(t),t={Test:"Split Containers can only have multiple of two columns. So either 2, 4, 6 and so on.",Total:0,Passes:0,Fails:0,Notes:""},Array.from(document.querySelectorAll(".container.container--split")).forEach((e,a)=>{e.querySelectorAll(':scope > .row > [class*="col"]').length%2==0?t.Passes++:t.Fails++}),t.Total=t.Passes+t.Fails,e.push(t),t={Test:"Statement Containers with only one paragraph or text element should have the class of .h6",Total:0,Passes:0,Fails:0,Notes:""},Array.from(document.querySelectorAll(".container.container--statement")).forEach((e,a)=>{1==e.querySelectorAll(":scope > *").length&&1==e.querySelectorAll(":scope > .h6:first-child").length?t.Passes++:1==e.querySelectorAll(":scope > *").length&&t.Fails++}),t.Total=t.Passes+t.Fails,e.push(t),t={Test:"CTA Containers title should always have the class of .h1",Total:0,Passes:0,Fails:0,Notes:""},Array.from(document.querySelectorAll(".container.container--cta")).forEach((e,a)=>{1==e.querySelectorAll("h2.h1:first-child").length?t.Passes++:t.Fails++}),t.Total=t.Passes+t.Fails,e.push(t),console.log("%cImplementation Tests","font-size: 16px;font-weight:bold; margin-top: 20px;"),e.forEach(function(e){var t="green";0===e.Total?t="grey":0!=e.Fails&&(t="red"),"warning"==e.Type&&(t="orange"),console.groupCollapsed("%c %c"+e.Test,"background-color: "+t+"; margin-right: 10px","background-color: transparent"),console.table({Passed:{value:e.Passes},Failed:{value:e.Fails},Total:{value:e.Total}}),""!=e.Notes&&console.log(e.Notes),console.groupEnd()}),window.integrationTests=e;var o=[];t={Test:"There are XX padding classes being used on this page",Type:"warning",Total:0,Passes:0,Fails:0,Notes:""},Array.from(document.querySelectorAll('[class*="p-"],[class*="pt-"],[class*="pb-"],[class*="pl-"],[class*="pr-"],[class*="px-"],[class*="py-"]')).forEach((e,a)=>{t.Total++}),t.Test=t.Test.replace("XX",t.Total),o.push(t),t={Test:"There are XX margin classes being used on this page",Type:"warning",Total:0,Passes:0,Fails:0,Notes:""},Array.from(document.querySelectorAll('[class*="m-"],[class*="mt-"],[class*="mb-"],[class*="ml-"],[class*="mr-"],[class*="mx-"],[class*="my-"]')).forEach((e,a)=>{t.Total++}),t.Test=t.Test.replace("XX",t.Total),o.push(t),t={Test:"There are XX text modifier classes being used on this page",Type:"warning",Total:0,Passes:0,Fails:0,Notes:""},Array.from(document.querySelectorAll('[class*="text-"]')).forEach((e,a)=>{t.Total++}),t.Test=t.Test.replace("XX",t.Total),o.push(t),console.log("%cUtility classes","font-size: 16px;font-weight:bold;"),console.log("The use of certain utility classes is necessary at times but the over use of these classes will lead to design/layout inconsistencies."),o.forEach(function(e){var t="green";0===e.Total?t="grey":0!=e.Fails&&(t="red"),"warning"==e.Type&&(t="orange"),console.groupCollapsed("%c %c"+e.Test,"background-color: "+t+"; margin-right: 10px","background-color: transparent"),console.table({Total:{value:e.Total}}),""!=e.Notes&&console.log(e.Notes),console.groupEnd()}),console.log("%cAccessibility and Best practice Tests","font-size: 16px;font-weight:bold;");var n="green",r=1,s={};Array.from(document.querySelectorAll("h1,h2,h3,h4,h5,h6")).forEach((e,t)=>{var a=1,o=e.textContent;e.matches("h2")?a=2:e.matches("h3")?a=3:e.matches("h4")?a=4:e.matches("h5")?a=5:e.matches("h6")&&(a=6);var l=a-r<=1;0==t&&1!=a&&(l=!1);var c={"Heading Level":a,"In order":l};l?r=a:n="red",s[o]=c}),console.groupCollapsed("%c %cHeadings are in the correct order","background-color: "+n+"; margin-right: 10px","background-color: transparent"),console.table(s),console.groupEnd(),console.groupCollapsed("%c ? %cDo all of the headings make sense out of context and do they introduce the content that follows?","background-color: orange; margin-right: 10px","background-color: transparent"),console.log("You should be able to read the below table and get an understanding of what the page content consists of. The titles should make sense when read in order and child titles should be relevant to the parent title."),console.table(s),console.groupEnd();var l={};Array.from(document.querySelectorAll("a")).forEach((e,t)=>{var a=e.getAttribute("href"),o={Text:e.textContent,Title:e.getAttribute("title")};l[a]=o}),console.groupCollapsed("%c ? %cDo all of the links make sense out of context and do they describe the page/section that it links to?","background-color: orange; margin-right: 10px","background-color: transparent"),console.table(l),console.groupEnd();var c={},i={};Array.from(document.querySelectorAll("img[alt]")).forEach((e,t)=>{var a=e.getAttribute("src"),o=e.getAttribute("alt");if(""!=o){var n={Alt:o};c[a]=n}else a=e.getAttribute("src"),i[a]={}}),console.groupCollapsed("%c ? %cDo all of the images with an alt tag make sense out of context and describes the image appropriately?","background-color: orange; margin-right: 10px","background-color: transparent"),console.table(c),console.log("%cImages with an empty alt tag:","font-weight: bold;"),console.table(i),console.groupEnd(),console.groupCollapsed("%c ? %cCan you navigation the page links by tabbing through the page?","background-color: orange; margin-right: 10px","background-color: transparent"),console.log("Are all of the links, input fields and buttons accessible through using the keyboard only?"),console.groupEnd(),console.log("%cLighthouse","font-size: 16px;font-weight:bold;"),console.groupCollapsed("%c ? %cHave you ran a lighthouse report on this page","background-color: orange; margin-right: 10px","background-color: transparent"),console.log("If you are in a modern version of chrome you can a lighthouse report by opening the lighthouse window within the devtools. This should appear as a tab link above."),console.log("This report will give you more detail about the above the tests aswell as extra tests. "),console.groupEnd(),console.log("%cImage sizes","font-size: 16px;font-weight:bold;"),console.log("The below tests work from the current screen size, so if you have your screen at a mobile viewport the scaling and sizes of images will reflect that. It is worth running the image tests in both mobile and desktop views. Simply change the screen size and refresh the page."),Array.from(document.querySelectorAll("img")).forEach((e,t)=>{if(!e.matches("[src*='http']")&&!e.matches("[src$='.svg']")){var a=e.getAttribute("src"),o=new XMLHttpRequest;o.open("HEAD",a,!0),o.onreadystatechange=function(){if(4==o.readyState)if(200==o.status){var t=o.getResponseHeader("Content-Length");if(t>1024){var a=e.naturalWidth,n=e.naturalHeight,r=e.clientWidth,s=e.clientHeight,l="0.00"==(r/a).toFixed(2)?"Hidden":(r/a).toFixed(2),c=Math.floor(t/1024),i=(t/(a*n)).toFixed(2),u="green",d="green",g="green",h="",p="";i>.5?(u="red",d="red",h="The image has a VERY large 'Bytes per pixel' score, trying optimising the image using https://tinypng.com/."):i>.2&&(u="orange",d="orange",h="The image has a large 'Bytes per pixel' score, trying optimising the image using https://tinypng.com/."),l>1.2?(u="red",g="red",p="The image size is smaller than the size shown on screen this may cause the image to appear blurry and low quality."):l<.5?(u="red",g="red",p="The image size is VERY large compared to the size shown on screen, this means unnecessary kb's are being downloaded. Try resizing the image in photoshop or other image editing software."):l<.8&&(u="orange",g="orange",p="The image size is large compared to the size shown on screen, this means unnecessary kb's are being downloaded. Try resizing the image in photoshop or other image editing software."),console.log("%c %c "+e.src,"background: url("+e.src+"); border: 3px solid "+u+"; line-height: 30px; width: 30px; background-size: cover;","background-color: transparent"),""!=h&&console.log("%c %c"+h,"background-color: "+d+"; margin-right: 10px","background-color: transparent"),""!=p&&console.log("%c %c"+p,"background-color: "+g+"; margin-right: 10px","background-color: transparent"),console.table({Image:{Dimensions:a+"x"+n,"Scaled to":r+"x"+s,Scale:l,Filesize:c+"Kb","Bytes per pixel":i}}),console.groupEnd()}}else console.log("%c %c"+e.src+" not loaded","background-color: red; margin-right: 10px","background-color: transparent")},o.send(null)}});var u=[];if(typeof window.integrationTests<"u"&&window.integrationTests.forEach(function(e){0!=e.Total&&"warning"!=e.Type&&u.push(e.Test)}),0!=u.length){var d=document.querySelector("#vmtests-display");if(null!=d){d.innerHTML='<div class="container">\n <h2>Integration notes</h2>\n <ul id="integrationTests"></ul>\n </div>';var g=document.getElementById("integrationTests");null!=g&&u.forEach(function(e){g.innerHTML+="<li>"+e+"</li>"})}}return null},r=Object.freeze({__proto__:null,default:n});["localhost"].includes(window.location.hostname)&&Promise.resolve().then(function(){return r}).then(e=>{window.iamTest=()=>{n()}}).catch(e=>{console.log(e.message)}),document.addEventListener("DOMContentLoaded",()=>{return t=void 0,a=void 0,n=function*(){var t,a;window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"Pageview",pageTitle:document.title}),document.addEventListener("click",e=>{var t=e.target.closest("[open] summary");if(t)window.dataLayer.push({event:"closeDetails",detailsTitle:t.textContent||""});else{var a=e.target.closest("summary"),o=e.target.closest("a"),n=e.target.closest("button");a&&window.dataLayer.push({event:"openDetails",detailsTitle:a.textContent||""}),o&&window.dataLayer.push({event:"linkClicked",linkText:o.hasAttribute("title")?o.getAttribute("title")||"":o.textContent||"",class:o.hasAttribute("class")&&o.getAttribute("class")||"",href:o.getAttribute("href")||""}),n&&window.dataLayer.push({event:"buttonClicked",buttonText:n.textContent||"",class:n.hasAttribute("class")&&n.getAttribute("class")||""})}}),document.addEventListener("change",t=>{t&&t.target instanceof HTMLElement&&t.target.closest("[data-change-events]")&&e(t.target,t.target.closest("[data-change-events]").getAttribute("data-change-events"))}),document.addEventListener("keyup",t=>{t&&t.target instanceof HTMLElement&&t.target.closest("[data-change-events]")&&e(t.target,t.target.closest("[data-change-events]").getAttribute("data-change-events"))}),document.addEventListener("click",t=>{t&&t.target instanceof HTMLElement&&t.target.closest("[data-click-events]")&&e(t.target,t.target.closest("[data-click-events]").getAttribute("data-click-events"))}),(a=document.body).classList.add("js-enabled"),(-1!==navigator.userAgent.indexOf("MSIE")||navigator.appVersion.indexOf("Trident/")>0)&&a.classList.add("ie"),t=function(e){var t=document.querySelector('label[for="'.concat(e.replace("#",""),'"]')),a=document.querySelector(e+" summary"),o=document.querySelector("dialog".concat(e)),n=document.querySelector("detail".concat(e));t instanceof HTMLElement?t.click():a instanceof HTMLElement?a.click():o instanceof HTMLElement?o.showModal():n instanceof HTMLElement&&n.addAttribute("open")},location.hash&&t(location.hash),window.addEventListener("hashchange",function(){t(location.hash)},!1),addEventListener("popstate",e=>{if(e&&e.state&&e.state.type&&"pagination"==e.state.type){var t=document.querySelector("#".concat(e.state.form)),a=document.querySelector("#".concat(e.state.form," [data-pagination]"));a?a.value=e.state.page:t.innerHTML+='<input name="page" type="hidden" data-pagination="true" value="'.concat(e.state.page,'" />'),t.dispatchEvent(new Event("submit"))}}),Array.from(document.querySelectorAll("form")).forEach(e=>{e?.closest("iam-form")||e.addEventListener("submit",t=>{var a;e.querySelector(":invalid")&&(e.classList.add("was-validated"),null===(a=e?.querySelector("input:invalid"))||void 0===a||a.scrollIntoView(),t.preventDefault())})}),document.addEventListener("click",e=>{var t;if(e&&e.target instanceof HTMLElement&&e.target.matches("form button:not([type=button])")){var a=e.target.closest("form");a?.closest("iam-form")||(Array.from(a.querySelectorAll("[data-password-type]")).forEach(e=>{e.setAttribute("type","password")}),(a.querySelector(":invalid")||a.querySelector('.pwd-checker[data-strength="1"]')||a.querySelector('.pwd-checker[data-strength="2"]'))&&(a.classList.add("was-validated"),null===(t=a?.querySelector("input:invalid"))||void 0===t||t.scrollIntoView(),e.preventDefault()),a.querySelector("iam-multiselect[data-is-required][data-error]")&&(a.classList.add("was-validated"),e.preventDefault()))}}),document.addEventListener("keydown",e=>{"Escape"===e.key&&document.querySelector(".dialog--transactional[open], .dialog--acknowledgement[open]")&&(e.preventDefault(),e.stopPropagation())}),Array.from(document.querySelectorAll("label progress")).forEach(e=>{e.closest("label").setAttribute("data-percent",e.getAttribute("value"))})},new((o=void 0)||(o=Promise))(function(e,r){function s(e){try{c(n.next(e))}catch(e){r(e)}}function l(e){try{c(n.throw(e))}catch(e){r(e)}}function c(t){t.done?e(t.value):function(e){return e instanceof o?e:new o(function(t){t(e)})}(t.value).then(s,l)}c((n=n.apply(t,a||[])).next())});var t,a,o,n})});
@@ -8,6 +8,7 @@
8
8
  @use 'foundations/colours';
9
9
 
10
10
  @use 'foundations/reboot';
11
+ @use 'foundations/debug';
11
12
 
12
13
  /* Elements */
13
14
  @use '_elements';
@@ -33,3 +33,4 @@
33
33
  @use './utilities/visible';
34
34
  @use './utilities/columns';
35
35
  @use './utilities/shadow';
36
+ @use './utilities/grid';
@@ -11,6 +11,12 @@
11
11
  @use '../utilities/visually-hidden' as *;
12
12
  @use '../utilities/display' as *;
13
13
 
14
+ *,
15
+ *::before,
16
+ *::after {
17
+ box-sizing: border-box;
18
+ }
19
+
14
20
  :host {
15
21
  background-color: #fcfcfc;
16
22
  }
@@ -264,7 +270,7 @@ slot[name='selectall'] {
264
270
  /* #endregion */
265
271
 
266
272
  /* #region Search bar */
267
- .actionbar--search .btn {
273
+ .actionbar--search > .btn {
268
274
  margin: 0;
269
275
  margin-left: -0.75rem !important;
270
276
  margin-right: auto !important;
@@ -274,17 +280,25 @@ slot[name='selectall'] {
274
280
  width: calc(100% - 3.25rem); /* 44 + 8 */
275
281
  max-width: 21.875rem!important; /* (350) */
276
282
  margin: 0 !important;
283
+ display: flex;
277
284
 
278
285
  @media screen and (min-width: 62em) {
279
286
  max-width: 28.125rem!important; /* (450) */
280
287
  }
281
288
 
289
+ .input__wrapper {
290
+ flex-grow: 1;
291
+ }
282
292
  input {
283
293
  padding-top: 0.5rem;
284
294
  padding-bottom: 0.5rem;
285
295
 
286
296
  min-height: 2.5rem !important;
287
297
  max-height: 2.5rem !important;
298
+
299
+ border-start-end-radius: 0 !important;
300
+ border-end-end-radius: 0 !important;
301
+ margin-top: 0!important;
288
302
  }
289
303
 
290
304
  :is(.prefix, .suffix) {