@iamproperty/components 7.7.1--beta14 → 7.7.1--beta16

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 (507) 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/button.component.css +1 -0
  15. package/assets/css/components/button.component.css.map +1 -0
  16. package/assets/css/components/calendar.component.css +1 -1
  17. package/assets/css/components/calendar.component.css.map +1 -1
  18. package/assets/css/components/calendar.config.css +1 -1
  19. package/assets/css/components/calendar.config.css.map +1 -1
  20. package/assets/css/components/card.component.css +1 -1
  21. package/assets/css/components/card.component.css.map +1 -1
  22. package/assets/css/components/card.module.css +1 -1
  23. package/assets/css/components/card.module.css.map +1 -1
  24. package/assets/css/components/carousel.component.css +1 -1
  25. package/assets/css/components/carousel.component.css.map +1 -1
  26. package/assets/css/components/carousel.config.css +1 -1
  27. package/assets/css/components/carousel.config.css.map +1 -1
  28. package/assets/css/components/charts.config.css +1 -1
  29. package/assets/css/components/charts.config.css.map +1 -1
  30. package/assets/css/components/collapsible-side.css +1 -1
  31. package/assets/css/components/collapsible-side.css.map +1 -1
  32. package/assets/css/components/config.component.css +1 -1
  33. package/assets/css/components/config.component.css.map +1 -1
  34. package/assets/css/components/content.component.css +1 -1
  35. package/assets/css/components/content.component.css.map +1 -1
  36. package/assets/css/components/doughnutchart.component.css +1 -1
  37. package/assets/css/components/doughnutchart.component.css.map +1 -1
  38. package/assets/css/components/fileupload.css +1 -1
  39. package/assets/css/components/fileupload.css.map +1 -1
  40. package/assets/css/components/filter-card.component.css +1 -1
  41. package/assets/css/components/filter-card.component.css.map +1 -1
  42. package/assets/css/components/header.component.css +1 -1
  43. package/assets/css/components/header.component.css.map +1 -1
  44. package/assets/css/components/input.component.css +1 -1
  45. package/assets/css/components/input.component.css.map +1 -1
  46. package/assets/css/components/menu.component.css +1 -1
  47. package/assets/css/components/menu.component.css.map +1 -1
  48. package/assets/css/components/menu.global.css +1 -1
  49. package/assets/css/components/menu.global.css.map +1 -1
  50. package/assets/css/components/milestone.css +1 -1
  51. package/assets/css/components/milestone.css.map +1 -1
  52. package/assets/css/components/modal.component.css +1 -1
  53. package/assets/css/components/modal.component.css.map +1 -1
  54. package/assets/css/components/multi-step-modal.component.css +1 -1
  55. package/assets/css/components/multi-step-modal.component.css.map +1 -1
  56. package/assets/css/components/multiselect.css +1 -1
  57. package/assets/css/components/multiselect.css.map +1 -1
  58. package/assets/css/components/nav.component.css +1 -1
  59. package/assets/css/components/nav.component.css.map +1 -1
  60. package/assets/css/components/nav.docs.css +1 -1
  61. package/assets/css/components/nav.docs.css.map +1 -1
  62. package/assets/css/components/nav.global.css +1 -1
  63. package/assets/css/components/nav.global.css.map +1 -1
  64. package/assets/css/components/notification.css +1 -1
  65. package/assets/css/components/notification.css.map +1 -1
  66. package/assets/css/components/pagination.css +1 -1
  67. package/assets/css/components/pagination.css.map +1 -1
  68. package/assets/css/components/password.component.css +1 -1
  69. package/assets/css/components/password.component.css.map +1 -1
  70. package/assets/css/components/popover.component.css +1 -1
  71. package/assets/css/components/popover.component.css.map +1 -1
  72. package/assets/css/components/rank.component.css +1 -1
  73. package/assets/css/components/rank.component.css.map +1 -1
  74. package/assets/css/components/rankings.component.css +1 -1
  75. package/assets/css/components/rankings.component.css.map +1 -1
  76. package/assets/css/components/rankings.global.css +1 -1
  77. package/assets/css/components/rankings.global.css.map +1 -1
  78. package/assets/css/components/record-card.component.css +1 -1
  79. package/assets/css/components/record-card.component.css.map +1 -1
  80. package/assets/css/components/search.component.css +1 -0
  81. package/assets/css/components/search.component.css.map +1 -0
  82. package/assets/css/components/slider.css +1 -1
  83. package/assets/css/components/slider.css.map +1 -1
  84. package/assets/css/components/split-button.component.css +1 -1
  85. package/assets/css/components/split-button.component.css.map +1 -1
  86. package/assets/css/components/std-nav-standalone.component.css +1 -0
  87. package/assets/css/components/std-nav-standalone.component.css.map +1 -0
  88. package/assets/css/components/table-basic.global.css +1 -1
  89. package/assets/css/components/table-basic.global.css.map +1 -1
  90. package/assets/css/components/table.global.css +1 -1
  91. package/assets/css/components/table.global.css.map +1 -1
  92. package/assets/css/components/tabs.component.css +1 -1
  93. package/assets/css/components/tabs.component.css.map +1 -1
  94. package/assets/css/components/tabs.config.css +1 -1
  95. package/assets/css/components/tabs.config.css.map +1 -1
  96. package/assets/css/components/tag.component.css +1 -1
  97. package/assets/css/components/tag.component.css.map +1 -1
  98. package/assets/css/components/video-card.component.css +1 -1
  99. package/assets/css/components/video-card.component.css.map +1 -1
  100. package/assets/css/components/video-modal.component.css +1 -1
  101. package/assets/css/components/video-modal.component.css.map +1 -1
  102. package/assets/css/components/video.component.css +1 -1
  103. package/assets/css/components/video.component.css.map +1 -1
  104. package/assets/css/core.min.css +1 -1
  105. package/assets/css/core.min.css.map +1 -1
  106. package/assets/css/elements/badge-tag.css +1 -1
  107. package/assets/css/elements/badge-tag.css.map +1 -1
  108. package/assets/css/elements/buttons--global.css +1 -1
  109. package/assets/css/elements/buttons--global.css.map +1 -1
  110. package/assets/css/elements/buttons--special.css +1 -1
  111. package/assets/css/elements/buttons--special.css.map +1 -1
  112. package/assets/css/elements/buttons.css +1 -1
  113. package/assets/css/elements/buttons.css.map +1 -1
  114. package/assets/css/elements/container.css +1 -1
  115. package/assets/css/elements/container.css.map +1 -1
  116. package/assets/css/elements/details.css +1 -1
  117. package/assets/css/elements/details.css.map +1 -1
  118. package/assets/css/elements/dialog.css +1 -1
  119. package/assets/css/elements/dialog.css.map +1 -1
  120. package/assets/css/elements/dropdown.css +1 -1
  121. package/assets/css/elements/dropdown.css.map +1 -1
  122. package/assets/css/elements/forms.css +1 -1
  123. package/assets/css/elements/forms.css.map +1 -1
  124. package/assets/css/elements/input.css +1 -1
  125. package/assets/css/elements/input.css.map +1 -1
  126. package/assets/css/elements/links--collapsible-side.css +1 -1
  127. package/assets/css/elements/links--collapsible-side.css.map +1 -1
  128. package/assets/css/elements/links--global.css +1 -1
  129. package/assets/css/elements/links--global.css.map +1 -1
  130. package/assets/css/elements/links.css +1 -1
  131. package/assets/css/elements/links.css.map +1 -1
  132. package/assets/css/elements/lists--tick-list.css +1 -1
  133. package/assets/css/elements/lists--tick-list.css.map +1 -1
  134. package/assets/css/elements/modal.css +1 -1
  135. package/assets/css/elements/modal.css.map +1 -1
  136. package/assets/css/elements/popover.css +1 -1
  137. package/assets/css/elements/popover.css.map +1 -1
  138. package/assets/css/elements/prefix.css +1 -1
  139. package/assets/css/elements/prefix.css.map +1 -1
  140. package/assets/css/elements/select.css +1 -0
  141. package/assets/css/elements/select.css.map +1 -0
  142. package/assets/css/elements/tooltips.css +1 -1
  143. package/assets/css/elements/tooltips.css.map +1 -1
  144. package/assets/css/elements/type.css +1 -1
  145. package/assets/css/elements/type.css.map +1 -1
  146. package/assets/css/style.min.css +1 -1
  147. package/assets/css/style.min.css.map +1 -1
  148. package/assets/js/components/accordion/accordion.component.min.js +1 -1
  149. package/assets/js/components/actionbar/actionbar.component.js +5 -3
  150. package/assets/js/components/actionbar/actionbar.component.min.js +10 -8
  151. package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
  152. package/assets/js/components/address-lookup/address-lookup.component.js +12 -6
  153. package/assets/js/components/address-lookup/address-lookup.component.min.js +9 -7
  154. package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -1
  155. package/assets/js/components/advanced-select/advanced-select.component.js +8 -17
  156. package/assets/js/components/advanced-select/advanced-select.component.min.js +7 -17
  157. package/assets/js/components/advanced-select/advanced-select.component.min.js.map +1 -1
  158. package/assets/js/components/applied-filters/applied-filters.component.min.js +3 -3
  159. package/assets/js/components/barchart/barchart.component.min.js +5 -5
  160. package/assets/js/components/bento-grid/bento-grid.component.min.js +2 -2
  161. package/assets/js/components/button/button.component.js +49 -0
  162. package/assets/js/components/button/button.component.min.js +13 -0
  163. package/assets/js/components/button/button.component.min.js.map +1 -0
  164. package/assets/js/components/calendar/calendar.component.min.js +5 -5
  165. package/assets/js/components/card/card.component.min.js +21 -19
  166. package/assets/js/components/card/card.component.min.js.map +1 -1
  167. package/assets/js/components/carousel/carousel.component.js +144 -52
  168. package/assets/js/components/carousel/carousel.component.min.js +15 -21
  169. package/assets/js/components/carousel/carousel.component.min.js.map +1 -1
  170. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +3 -3
  171. package/assets/js/components/config/config.component.min.js +8 -8
  172. package/assets/js/components/content/content.component.js +21 -5
  173. package/assets/js/components/content/content.component.min.js +5 -7
  174. package/assets/js/components/content/content.component.min.js.map +1 -1
  175. package/assets/js/components/darkmode/darkmode.component.min.js +1 -1
  176. package/assets/js/components/doughnutchart/doughnutchart.component.min.js +7 -7
  177. package/assets/js/components/doughnutchart/doughnutchart.component.min.js.map +1 -1
  178. package/assets/js/components/fileupload/fileupload.component.min.js +4 -4
  179. package/assets/js/components/filter-card/filter-card.component.min.js +20 -18
  180. package/assets/js/components/filter-card/filter-card.component.min.js.map +1 -1
  181. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  182. package/assets/js/components/form/form.component.min.js +1 -1
  183. package/assets/js/components/header/header.component.min.js +2 -2
  184. package/assets/js/components/inline-edit/inline-edit.component.min.js +1 -1
  185. package/assets/js/components/input/input.component.min.js +2 -2
  186. package/assets/js/components/input-range/input-range.component.min.js +1 -1
  187. package/assets/js/components/marketing/marketing.component.min.js +1 -1
  188. package/assets/js/components/menu/menu.component.js +1 -0
  189. package/assets/js/components/menu/menu.component.min.js +3 -3
  190. package/assets/js/components/menu/menu.component.min.js.map +1 -1
  191. package/assets/js/components/milestone/milestone.component.min.js +1 -1
  192. package/assets/js/components/milestone-group/milestone-group.component.min.js +1 -1
  193. package/assets/js/components/modal/modal.component.min.js +4 -4
  194. package/assets/js/components/multi-step/multi-step.component.min.js +1 -1
  195. package/assets/js/components/multi-step-modal/multi-step-modal.component.min.js +4 -4
  196. package/assets/js/components/multiselect/multiselect.component.min.js +4 -4
  197. package/assets/js/components/multiselect/multiselect.component.min.js.map +1 -1
  198. package/assets/js/components/nav/nav.component.js +4 -3
  199. package/assets/js/components/nav/nav.component.min.js +6 -6
  200. package/assets/js/components/nav/nav.component.min.js.map +1 -1
  201. package/assets/js/components/notification/notification.component.min.js +2 -2
  202. package/assets/js/components/pagination/pagination.component.min.js +4 -4
  203. package/assets/js/components/password/password.component.min.js +5 -5
  204. package/assets/js/components/popover/popover.component.min.js +4 -4
  205. package/assets/js/components/rank/rank.component.min.js +1 -1
  206. package/assets/js/components/rankings/rankings.component.min.js +3 -3
  207. package/assets/js/components/rating/rating.component.min.js +1 -1
  208. package/assets/js/components/record-card/record-card.component.min.js +18 -16
  209. package/assets/js/components/record-card/record-card.component.min.js.map +1 -1
  210. package/assets/js/components/search/search.component.js +9 -13
  211. package/assets/js/components/search/search.component.min.js +9 -18
  212. package/assets/js/components/search/search.component.min.js.map +1 -1
  213. package/assets/js/components/slider/slider.component.min.js +3 -3
  214. package/assets/js/components/split-button/split-button.component.js +1 -1
  215. package/assets/js/components/split-button/split-button.component.min.js +6 -6
  216. package/assets/js/components/split-button/split-button.component.min.js.map +1 -1
  217. package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js +11 -9
  218. package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js.map +1 -1
  219. package/assets/js/components/std-nav/std-nav.component.js +179 -0
  220. package/assets/js/components/std-nav/std-nav.component.min.js +66 -0
  221. package/assets/js/components/std-nav/std-nav.component.min.js.map +1 -0
  222. package/assets/js/components/std-nav-standalone/std-nav-standalone.component.js +60 -0
  223. package/assets/js/components/std-nav-standalone/std-nav-standalone.component.min.js +20 -0
  224. package/assets/js/components/std-nav-standalone/std-nav-standalone.component.min.js.map +1 -0
  225. package/assets/js/components/table/table.component.min.js +6 -6
  226. package/assets/js/components/table/table.component.min.js.map +1 -1
  227. package/assets/js/components/table-ajax/table-ajax.component.min.js +7 -7
  228. package/assets/js/components/table-ajax/table-ajax.component.min.js.map +1 -1
  229. package/assets/js/components/table-basic/table-basic.component.min.js +2 -2
  230. package/assets/js/components/table-no-submit/table-no-submit.component.min.js +4 -4
  231. package/assets/js/components/table-no-submit/table-no-submit.component.min.js.map +1 -1
  232. package/assets/js/components/table-submit/table-submit.component.min.js +6 -6
  233. package/assets/js/components/table-submit/table-submit.component.min.js.map +1 -1
  234. package/assets/js/components/tabs/tabs.component.min.js +4 -4
  235. package/assets/js/components/tabs/tabs.component.min.js.map +1 -1
  236. package/assets/js/components/tag/tag.component.min.js +3 -3
  237. package/assets/js/components/tooltip/tooltip.component.min.js +1 -1
  238. package/assets/js/components/video/video.component.min.js +5 -5
  239. package/assets/js/components/video-card/video-card.component.min.js +18 -16
  240. package/assets/js/components/video-card/video-card.component.min.js.map +1 -1
  241. package/assets/js/components/video-modal/video-modal.component.min.js +2 -2
  242. package/assets/js/components/word-count/word-count.component.min.js +1 -1
  243. package/assets/js/modules/advanced-select.js +30 -4
  244. package/assets/js/modules/card.module.js +16 -14
  245. package/assets/js/modules/carousel.js +11 -11
  246. package/assets/js/modules/nav.js +78 -0
  247. package/assets/js/modules/tabs.js +9 -1
  248. package/assets/js/scripts.bundle.js +1 -1
  249. package/assets/js/scripts.bundle.min.js +1 -1
  250. package/assets/sass/_corefiles.scss +1 -0
  251. package/assets/sass/_utilities.scss +1 -0
  252. package/assets/sass/components/actionbar.component.scss +15 -1
  253. package/assets/sass/components/address-lookup.component.scss +134 -2
  254. package/assets/sass/components/advanced-select.component.scss +59 -0
  255. package/assets/sass/components/bento-grid.global.scss +2 -2
  256. package/assets/sass/components/button.component.scss +5 -0
  257. package/assets/sass/components/calendar.component.scss +1 -1
  258. package/assets/sass/components/calendar.config.scss +1 -1
  259. package/assets/sass/components/card.component.scss +2 -2
  260. package/assets/sass/components/card.module.scss +8 -3
  261. package/assets/sass/components/carousel.component.scss +522 -519
  262. package/assets/sass/components/carousel.config.scss +4 -44
  263. package/assets/sass/components/charts.config.scss +1 -1
  264. package/assets/sass/components/config.component.scss +1 -1
  265. package/assets/sass/components/filter-card.component.scss +5 -5
  266. package/assets/sass/components/header.component.scss +1 -1
  267. package/assets/sass/components/menu.component.scss +21 -16
  268. package/assets/sass/components/menu.global.scss +7 -11
  269. package/assets/sass/components/milestone.scss +2 -2
  270. package/assets/sass/components/modal.component.scss +1 -0
  271. package/assets/sass/components/multiselect.scss +8 -0
  272. package/assets/sass/components/nav.component.scss +21 -10
  273. package/assets/sass/components/nav.docs.scss +1 -2
  274. package/assets/sass/components/nav.global.scss +174 -45
  275. package/assets/sass/components/pagination.scss +2 -2
  276. package/assets/sass/components/popover.component.scss +37 -2
  277. package/assets/sass/components/search.component.scss +2 -0
  278. package/assets/sass/components/split-button.component.scss +3 -1
  279. package/assets/sass/components/std-nav-standalone.component.scss +228 -0
  280. package/assets/sass/components/table-basic.global.scss +3 -3
  281. package/assets/sass/components/table.global.scss +1 -1
  282. package/assets/sass/components/tabs.config.scss +2 -2
  283. package/assets/sass/components/video.component.scss +1 -1
  284. package/assets/sass/elements/badge-tag.css +6 -2
  285. package/assets/sass/elements/buttons--global.css +4 -4
  286. package/assets/sass/elements/buttons--special.css +2 -53
  287. package/assets/sass/elements/container.scss +1 -1
  288. package/assets/sass/elements/details.css +3 -3
  289. package/assets/sass/elements/dialog.scss +9 -5
  290. package/assets/sass/elements/dropdown.css +188 -44
  291. package/assets/sass/elements/forms.scss +36 -522
  292. package/assets/sass/elements/input.scss +0 -7
  293. package/assets/sass/elements/links--collapsible-side.scss +1 -1
  294. package/assets/sass/elements/links--global.scss +5 -1
  295. package/assets/sass/elements/lists--tick-list.scss +2 -2
  296. package/assets/sass/elements/modal.scss +1 -1
  297. package/assets/sass/elements/popover.scss +1 -1
  298. package/assets/sass/elements/prefix.scss +1 -1
  299. package/assets/sass/elements/select.scss +238 -0
  300. package/assets/sass/elements/tooltips.scss +1 -1
  301. package/assets/sass/elements/type.css +10 -0
  302. package/assets/sass/email.scss +1 -1
  303. package/assets/sass/error.scss +0 -1
  304. package/assets/sass/foundations/colours.scss +0 -1
  305. package/assets/sass/foundations/debug.scss +6 -0
  306. package/assets/sass/foundations/reboot.scss +81 -1
  307. package/assets/sass/foundations/root.scss +20 -2
  308. package/assets/sass/main.scss +0 -1
  309. package/assets/sass/{_grid.scss → utilities/grid.scss} +120 -80
  310. package/assets/ts/components/actionbar/actionbar.component.ts +5 -3
  311. package/assets/ts/components/address-lookup/address-lookup.component.ts +18 -6
  312. package/assets/ts/components/advanced-select/advanced-select.component.ts +12 -17
  313. package/assets/ts/components/button/button.component.ts +66 -0
  314. package/assets/ts/components/carousel/carousel.component.ts +189 -58
  315. package/assets/ts/components/content/content.component.ts +33 -5
  316. package/assets/ts/components/menu/menu.component.ts +4 -0
  317. package/assets/ts/components/nav/nav.component.ts +5 -7
  318. package/assets/ts/components/search/search.component.ts +14 -13
  319. package/assets/ts/components/split-button/split-button.component.ts +1 -1
  320. package/assets/ts/components/std-address-lookup/std-address-lookup.component.ts +0 -1
  321. package/assets/ts/components/std-nav/std-nav.component.ts +235 -0
  322. package/assets/ts/components/std-nav-standalone/std-nav-standalone.component.ts +76 -0
  323. package/assets/ts/modules/advanced-select.ts +47 -7
  324. package/assets/ts/modules/card.module.ts +16 -14
  325. package/assets/ts/modules/carousel.ts +11 -11
  326. package/assets/ts/modules/nav.ts +91 -0
  327. package/assets/ts/modules/tabs.ts +10 -1
  328. package/dist/components.es.js +27 -27
  329. package/dist/components.umd.js +343 -272
  330. package/package.json +11 -10
  331. package/src/components/Button/Button.vue +20 -0
  332. package/src/components/STDNav/STDNav.vue +22 -0
  333. package/src/components/STDNavStandalone/STDNavStandalone.vue +22 -0
  334. package/assets/bootstrap/LICENSE +0 -22
  335. package/assets/bootstrap/README.md +0 -247
  336. package/assets/bootstrap/js/index.esm.js +0 -19
  337. package/assets/bootstrap/js/index.umd.js +0 -34
  338. package/assets/bootstrap/js/src/alert.js +0 -87
  339. package/assets/bootstrap/js/src/base-component.js +0 -85
  340. package/assets/bootstrap/js/src/button.js +0 -72
  341. package/assets/bootstrap/js/src/carousel.js +0 -475
  342. package/assets/bootstrap/js/src/collapse.js +0 -302
  343. package/assets/bootstrap/js/src/dom/data.js +0 -55
  344. package/assets/bootstrap/js/src/dom/event-handler.js +0 -320
  345. package/assets/bootstrap/js/src/dom/manipulator.js +0 -71
  346. package/assets/bootstrap/js/src/dom/selector-engine.js +0 -83
  347. package/assets/bootstrap/js/src/dropdown.js +0 -445
  348. package/assets/bootstrap/js/src/modal.js +0 -373
  349. package/assets/bootstrap/js/src/offcanvas.js +0 -283
  350. package/assets/bootstrap/js/src/popover.js +0 -97
  351. package/assets/bootstrap/js/src/scrollspy.js +0 -290
  352. package/assets/bootstrap/js/src/tab.js +0 -307
  353. package/assets/bootstrap/js/src/toast.js +0 -220
  354. package/assets/bootstrap/js/src/tooltip.js +0 -651
  355. package/assets/bootstrap/js/src/util/backdrop.js +0 -149
  356. package/assets/bootstrap/js/src/util/component-functions.js +0 -34
  357. package/assets/bootstrap/js/src/util/config.js +0 -66
  358. package/assets/bootstrap/js/src/util/focustrap.js +0 -115
  359. package/assets/bootstrap/js/src/util/index.js +0 -336
  360. package/assets/bootstrap/js/src/util/sanitizer.js +0 -118
  361. package/assets/bootstrap/js/src/util/scrollbar.js +0 -114
  362. package/assets/bootstrap/js/src/util/swipe.js +0 -146
  363. package/assets/bootstrap/js/src/util/template-factory.js +0 -160
  364. package/assets/bootstrap/package.json +0 -180
  365. package/assets/bootstrap/scss/_accordion.scss +0 -146
  366. package/assets/bootstrap/scss/_alert.scss +0 -71
  367. package/assets/bootstrap/scss/_badge.scss +0 -38
  368. package/assets/bootstrap/scss/_breadcrumb.scss +0 -40
  369. package/assets/bootstrap/scss/_button-group.scss +0 -142
  370. package/assets/bootstrap/scss/_buttons.scss +0 -186
  371. package/assets/bootstrap/scss/_card.scss +0 -234
  372. package/assets/bootstrap/scss/_carousel.scss +0 -229
  373. package/assets/bootstrap/scss/_close.scss +0 -40
  374. package/assets/bootstrap/scss/_containers.scss +0 -41
  375. package/assets/bootstrap/scss/_dropdown.scss +0 -248
  376. package/assets/bootstrap/scss/_forms.scss +0 -9
  377. package/assets/bootstrap/scss/_functions.scss +0 -302
  378. package/assets/bootstrap/scss/_grid.scss +0 -33
  379. package/assets/bootstrap/scss/_helpers.scss +0 -10
  380. package/assets/bootstrap/scss/_images.scss +0 -42
  381. package/assets/bootstrap/scss/_list-group.scss +0 -191
  382. package/assets/bootstrap/scss/_maps.scss +0 -54
  383. package/assets/bootstrap/scss/_mixins.scss +0 -43
  384. package/assets/bootstrap/scss/_modal.scss +0 -237
  385. package/assets/bootstrap/scss/_nav.scss +0 -172
  386. package/assets/bootstrap/scss/_navbar.scss +0 -276
  387. package/assets/bootstrap/scss/_offcanvas.scss +0 -143
  388. package/assets/bootstrap/scss/_pagination.scss +0 -109
  389. package/assets/bootstrap/scss/_placeholders.scss +0 -51
  390. package/assets/bootstrap/scss/_popover.scss +0 -196
  391. package/assets/bootstrap/scss/_progress.scss +0 -59
  392. package/assets/bootstrap/scss/_reboot.scss +0 -610
  393. package/assets/bootstrap/scss/_root.scss +0 -73
  394. package/assets/bootstrap/scss/_spinners.scss +0 -85
  395. package/assets/bootstrap/scss/_tables.scss +0 -164
  396. package/assets/bootstrap/scss/_toasts.scss +0 -70
  397. package/assets/bootstrap/scss/_tooltip.scss +0 -120
  398. package/assets/bootstrap/scss/_transitions.scss +0 -27
  399. package/assets/bootstrap/scss/_type.scss +0 -106
  400. package/assets/bootstrap/scss/_utilities.scss +0 -647
  401. package/assets/bootstrap/scss/_variables-dark.scss +0 -87
  402. package/assets/bootstrap/scss/_variables.scss +0 -1633
  403. package/assets/bootstrap/scss/bootstrap-grid.scss +0 -64
  404. package/assets/bootstrap/scss/bootstrap-reboot.scss +0 -9
  405. package/assets/bootstrap/scss/bootstrap-utilities.scss +0 -15
  406. package/assets/bootstrap/scss/bootstrap.scss +0 -51
  407. package/assets/bootstrap/scss/forms/_floating-labels.scss +0 -74
  408. package/assets/bootstrap/scss/forms/_form-check.scss +0 -175
  409. package/assets/bootstrap/scss/forms/_form-control.scss +0 -194
  410. package/assets/bootstrap/scss/forms/_form-range.scss +0 -91
  411. package/assets/bootstrap/scss/forms/_form-select.scss +0 -71
  412. package/assets/bootstrap/scss/forms/_form-text.scss +0 -11
  413. package/assets/bootstrap/scss/forms/_input-group.scss +0 -129
  414. package/assets/bootstrap/scss/forms/_labels.scss +0 -36
  415. package/assets/bootstrap/scss/forms/_validation.scss +0 -12
  416. package/assets/bootstrap/scss/helpers/_clearfix.scss +0 -3
  417. package/assets/bootstrap/scss/helpers/_color-bg.scss +0 -10
  418. package/assets/bootstrap/scss/helpers/_colored-links.scss +0 -12
  419. package/assets/bootstrap/scss/helpers/_focus-ring.scss +0 -5
  420. package/assets/bootstrap/scss/helpers/_icon-link.scss +0 -25
  421. package/assets/bootstrap/scss/helpers/_position.scss +0 -36
  422. package/assets/bootstrap/scss/helpers/_ratio.scss +0 -26
  423. package/assets/bootstrap/scss/helpers/_stacks.scss +0 -15
  424. package/assets/bootstrap/scss/helpers/_stretched-link.scss +0 -15
  425. package/assets/bootstrap/scss/helpers/_text-truncation.scss +0 -7
  426. package/assets/bootstrap/scss/helpers/_visually-hidden.scss +0 -8
  427. package/assets/bootstrap/scss/helpers/_vr.scss +0 -8
  428. package/assets/bootstrap/scss/mixins/_alert.scss +0 -15
  429. package/assets/bootstrap/scss/mixins/_backdrop.scss +0 -14
  430. package/assets/bootstrap/scss/mixins/_banner.scss +0 -9
  431. package/assets/bootstrap/scss/mixins/_border-radius.scss +0 -78
  432. package/assets/bootstrap/scss/mixins/_box-shadow.scss +0 -18
  433. package/assets/bootstrap/scss/mixins/_breakpoints.scss +0 -127
  434. package/assets/bootstrap/scss/mixins/_buttons.scss +0 -70
  435. package/assets/bootstrap/scss/mixins/_caret.scss +0 -64
  436. package/assets/bootstrap/scss/mixins/_clearfix.scss +0 -9
  437. package/assets/bootstrap/scss/mixins/_color-mode.scss +0 -21
  438. package/assets/bootstrap/scss/mixins/_color-scheme.scss +0 -7
  439. package/assets/bootstrap/scss/mixins/_container.scss +0 -11
  440. package/assets/bootstrap/scss/mixins/_deprecate.scss +0 -10
  441. package/assets/bootstrap/scss/mixins/_forms.scss +0 -152
  442. package/assets/bootstrap/scss/mixins/_gradients.scss +0 -47
  443. package/assets/bootstrap/scss/mixins/_grid.scss +0 -151
  444. package/assets/bootstrap/scss/mixins/_image.scss +0 -16
  445. package/assets/bootstrap/scss/mixins/_list-group.scss +0 -24
  446. package/assets/bootstrap/scss/mixins/_lists.scss +0 -7
  447. package/assets/bootstrap/scss/mixins/_pagination.scss +0 -10
  448. package/assets/bootstrap/scss/mixins/_reset-text.scss +0 -17
  449. package/assets/bootstrap/scss/mixins/_resize.scss +0 -6
  450. package/assets/bootstrap/scss/mixins/_table-variants.scss +0 -24
  451. package/assets/bootstrap/scss/mixins/_text-truncate.scss +0 -8
  452. package/assets/bootstrap/scss/mixins/_transition.scss +0 -26
  453. package/assets/bootstrap/scss/mixins/_utilities.scss +0 -97
  454. package/assets/bootstrap/scss/mixins/_visually-hidden.scss +0 -29
  455. package/assets/bootstrap/scss/utilities/_api.scss +0 -47
  456. package/assets/bootstrap/scss/vendor/_rfs.scss +0 -354
  457. package/assets/favicons/README.md +0 -21
  458. package/assets/ts/README.md +0 -12
  459. package/assets/ts/components/actionbar/README.md +0 -56
  460. package/assets/ts/components/applied-filters/README.md +0 -20
  461. package/assets/ts/components/bento-grid/README.md +0 -31
  462. package/assets/ts/components/carousel/README.md +0 -38
  463. package/assets/ts/components/chart/README.md +0 -35
  464. package/assets/ts/components/collapsible-side/README.md +0 -38
  465. package/assets/ts/components/filterlist/README.md +0 -32
  466. package/assets/ts/components/header/README.md +0 -38
  467. package/assets/ts/components/inline-edit/README.md +0 -31
  468. package/assets/ts/components/multiselect/README.md +0 -35
  469. package/assets/ts/components/nav/README.md +0 -57
  470. package/assets/ts/components/notification/README.md +0 -47
  471. package/assets/ts/components/pagination/README.md +0 -37
  472. package/assets/ts/components/search/README.md +0 -35
  473. package/assets/ts/components/slider/README.md +0 -26
  474. package/assets/ts/components/table/README.md +0 -40
  475. package/assets/ts/components/table-basic/README.md +0 -40
  476. package/assets/ts/components/tabs/README.md +0 -34
  477. package/src/components/Accordion/README.md +0 -31
  478. package/src/components/Actionbar/README.md +0 -41
  479. package/src/components/AppliedFilters/README.md +0 -5
  480. package/src/components/Banner/README.md +0 -22
  481. package/src/components/Card/README.md +0 -24
  482. package/src/components/Carousel/README.md +0 -20
  483. package/src/components/Chart/README.md +0 -17
  484. package/src/components/CollapsibleSideMenu/README.md +0 -23
  485. package/src/components/FileUpload/README.md +0 -13
  486. package/src/components/Filterlist/README.md +0 -17
  487. package/src/components/Header/README.md +0 -27
  488. package/src/components/InlineEdit/README.md +0 -7
  489. package/src/components/Input/README.md +0 -17
  490. package/src/components/Marketing/README.md +0 -20
  491. package/src/components/Multiselect/README.md +0 -12
  492. package/src/components/Nav/README.md +0 -42
  493. package/src/components/Nav-old/README.md +0 -22
  494. package/src/components/NoteFeed/README.md +0 -16
  495. package/src/components/Notification/README.md +0 -32
  496. package/src/components/Pagination/README.md +0 -22
  497. package/src/components/PropertySearchbar/README.md +0 -25
  498. package/src/components/Search/README.md +0 -11
  499. package/src/components/Slider/README.md +0 -11
  500. package/src/components/Snapshot/README.md +0 -20
  501. package/src/components/SplitButton/README.md +0 -19
  502. package/src/components/Stepper/README.md +0 -32
  503. package/src/components/Table/README.md +0 -49
  504. package/src/components/Tabs/README.md +0 -29
  505. package/src/components/Testimonial/README.md +0 -25
  506. package/src/components/Timeline/README.md +0 -18
  507. package/src/foundations/Logo/README.md +0 -21
@@ -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,73 @@ 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)
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.class}">
44
+ <span class="lead text-heading d-block">${section.enabled == "false" && section.marketing ? section.marketing : section.title}</span>
45
+ ${populateLinks(section.links)}
46
+ </span>`;
47
+ });
48
+ return html;
49
+ };
50
+ export const populateLinks = (data) => {
51
+ let html = ``;
52
+ data.forEach((link) => {
53
+ html += `
54
+ <a href="${link.url}">${link.title}</a>`;
55
+ });
56
+ return html;
57
+ };
58
+ export const loadNavData = (Cookies) => __awaiter(void 0, void 0, void 0, function* () {
59
+ const ajaxURL = '/nav.json';
60
+ // Setup controller vars if not already set
61
+ if (!window.controller)
62
+ window.controller = [];
63
+ // Abort if controller already present for this url
64
+ if (window.controller[ajaxURL])
65
+ window.controller[ajaxURL].abort();
66
+ // Create a new controller so it can be aborted if new fetch made
67
+ window.controller[ajaxURL] = new AbortController();
68
+ const { signal } = window.controller[ajaxURL];
69
+ try {
70
+ return yield fetch(ajaxURL, {
71
+ signal: signal,
72
+ method: 'get',
73
+ credentials: 'same-origin',
74
+ headers: new Headers({
75
+ 'Content-Type': 'application/json',
76
+ Accept: 'application/json',
77
+ 'X-Requested-With': 'XMLHttpRequest',
78
+ 'X-XSRF-TOKEN': Cookies.get('XSRF-TOKEN'),
79
+ }),
80
+ })
81
+ .then((response) => response.json())
82
+ .then((response) => {
83
+ // populate datalist
84
+ let listString = '';
85
+ const data = response['data'] ? response['data'] : response;
86
+ return data;
87
+ });
88
+ }
89
+ catch (error) {
90
+ if ((error === null || error === void 0 ? void 0 : error.name) === 'AbortError') {
91
+ return true;
92
+ }
93
+ console.log(error);
94
+ return 'There has been a problem. Please try again in a few moments.';
95
+ }
96
+ });
19
97
  export default navbar;
@@ -129,6 +129,13 @@ export const setTabsEventHandlers = function (tabsElement) {
129
129
  buttons[index].click();
130
130
  });
131
131
  });
132
+ details.forEach((detailsElement, index) => {
133
+ detailsElement.addEventListener("toggle", function () {
134
+ var _a;
135
+ if (detailsElement.open)
136
+ (_a = detailsElement.querySelector('button,input')) === null || _a === void 0 ? void 0 : _a.focus();
137
+ });
138
+ });
132
139
  nextButton === null || nextButton === void 0 ? void 0 : nextButton.addEventListener('click', (e) => {
133
140
  e.preventDefault();
134
141
  const currentTab = buttonWrapper.querySelector('[aria-pressed="true"]');
@@ -172,8 +179,9 @@ export const setTabsEventHandlers = function (tabsElement) {
172
179
  export const toggleTab = function (details, button) {
173
180
  details.forEach((detail, detailsIndex) => {
174
181
  const detailsOpen = button.getAttribute('data-index') == detailsIndex ? true : false;
175
- if (detailsOpen)
182
+ if (detailsOpen) {
176
183
  detail.setAttribute('open', detailsOpen);
184
+ }
177
185
  else
178
186
  detail.removeAttribute('open');
179
187
  });
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * iamKey v7.7.1--beta14
2
+ * iamKey v7.7.1--beta16
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--beta14
2
+ * iamKey v7.7.1--beta16
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) {
@@ -1,6 +1,7 @@
1
1
  @use '../_func' as *;
2
2
 
3
3
  @use '../elements/forms' as *;
4
+ @use '../elements/dropdown' as *;
4
5
  @use '../elements/prefix' as *;
5
6
  @use '../elements/buttons' as *;
6
7
  @use '../elements/links' as *;
@@ -105,6 +106,110 @@ input[name='postcode'] {
105
106
 
106
107
  /* change the datalist */
107
108
 
109
+ .dropdown {
110
+
111
+
112
+ top: 100%;
113
+ position: absolute;
114
+ //border-radius: 0.5rem;
115
+ //box-shadow: 0px 2px 9px rgba(0, 0, 0, 0.1);
116
+ //width: 100% !important;
117
+ /* max-width: var(--menu-item-width, 50rem) !important; */
118
+ //z-index: 100;
119
+ display: none;
120
+ //max-height: 25rem;
121
+ //overflow-y: auto;
122
+
123
+ //max-width: var(--input-max-width) !important;
124
+ padding: 0;
125
+
126
+ & > datalist {
127
+ border: none!important;
128
+ box-shadow: none!important;
129
+ position: static!important;
130
+ display: block!important;
131
+ border-radius: 0!important;
132
+ max-height: 100%!important;
133
+ margin: 0!important;
134
+ }
135
+
136
+ &:focus {
137
+ outline: none!important;
138
+ }
139
+ }
140
+
141
+ .postcode-lookup:is(:focus-within,:has(*:active)) .dropdown:has(datalist:not(:empty)),
142
+ .postcode-lookup:is(:focus-within,:has(*:active)) .dropdown:has(datalist.loading),
143
+ .postcode-lookup:is(:focus-within,:has(*:active)) .dropdown:has(datalist.noresults),
144
+ .postcode-lookup .dropdown:hover {
145
+
146
+ display: block;
147
+ }
148
+
149
+ .postcode-lookup .dropdown:has(datalist.noresults){
150
+ datalist {
151
+
152
+ display: block;
153
+
154
+ &:before {
155
+ content: "No addresses found";
156
+ background-color: white;
157
+ padding: 0.5rem;
158
+ color: var(--colour-primary) !important;
159
+ font-weight: inherit !important;
160
+ font-family: inherit !important;
161
+ font-size: 1rem !important;
162
+ line-height: 1.1875rem !important;
163
+ padding-block: var(--menu-item-padding, 0.5rem) !important;
164
+ display: block;
165
+ }
166
+ }
167
+ }
168
+
169
+ .postcode-lookup:is(:focus-within,:has(option:active)) .dropdown:has(datalist.loading) {
170
+
171
+ datalist {
172
+
173
+ height: 5rem;
174
+
175
+ &:before {
176
+ content: "\f021";
177
+ font-family: "Font Awesome 7 Pro";
178
+ font-size: 1.75rem;
179
+ font-weight: 300;
180
+ display: block;
181
+ position: absolute;
182
+ top: calc(50% - 1rem);
183
+ left: calc(50% - 1rem);
184
+ /*transform: translate(-50%,-50%);*/
185
+
186
+ animation-name: spin;
187
+ animation-duration: 4000ms;
188
+ animation-iteration-count: infinite;
189
+ animation-timing-function: linear;
190
+ }
191
+ }
192
+ }
193
+
194
+
195
+
196
+ /* #region welsh banner */
197
+ [name="beforeList"] {
198
+ display: none;
199
+ }
200
+
201
+ [name="beforeList"]:has(+ .show-welsh-banner) {
202
+ //display: block;
203
+ }
204
+ .dropdown.show-welsh-banner [name="beforeList"] {
205
+ display: block;
206
+ }
207
+
208
+ /* #endregion*/
209
+
210
+
211
+
212
+
108
213
  .postcode-lookup > div {
109
214
  position: relative;
110
215
  }
@@ -119,14 +224,41 @@ input[name='postcode'] {
119
224
  }
120
225
 
121
226
 
227
+ .postcode-lookup label:has(.clear-search) {
228
+ position: relative;
229
+ }
230
+
231
+ /*
122
232
  .postcode-lookup .empty {
123
233
  display: var(--error-hide, block);
124
- }
125
234
 
235
+ position: absolute;
236
+ bottom: 0.5rem;
237
+ right: 3.5rem;
238
+ margin: 0;
239
+ aspect-ratio: 1 / 1;
240
+
241
+ width: 2rem;
242
+ height: 2rem;
243
+
244
+ text-align: center;
245
+ line-height: 1;
246
+
247
+ &:not(:hover, :focus) {
248
+ border-color: transparent;
249
+ background-color: transparent;
250
+ }
251
+
252
+ i {
253
+ font-size: 1.2rem;
254
+ }
255
+
256
+ }
257
+ */
126
258
 
127
259
  .postcode-lookup:has(input.is-invalid) .datalist__wrapper,
128
260
  .postcode-lookup:has(input.is-invalid) label:after,
129
- .postcode-lookup:has(input.is-invalid) .empty,
261
+ .postcode-lookup:has(input.is-invalid) .clear-search,
130
262
  .postcode-lookup:has(input.is-invalid) [slot="hint"] {
131
263
  display: none!important;
132
264
  }