@iamproperty/components 7.4.0 → 7.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (260) hide show
  1. package/README.md +1 -1
  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/actionbar.global.css +1 -1
  5. package/assets/css/components/actionbar.global.css.map +1 -1
  6. package/assets/css/components/address-lookup.component.css +1 -0
  7. package/assets/css/components/address-lookup.component.css.map +1 -0
  8. package/assets/css/components/barchart.component.css +1 -1
  9. package/assets/css/components/barchart.component.css.map +1 -1
  10. package/assets/css/components/calendar.component.css +1 -1
  11. package/assets/css/components/calendar.component.css.map +1 -1
  12. package/assets/css/components/calendar.config.css.map +1 -1
  13. package/assets/css/components/card.component.css +1 -1
  14. package/assets/css/components/card.component.css.map +1 -1
  15. package/assets/css/components/carousel.component.css +1 -1
  16. package/assets/css/components/carousel.component.css.map +1 -1
  17. package/assets/css/components/charts.css +1 -1
  18. package/assets/css/components/charts.css.map +1 -1
  19. package/assets/css/components/collapsible-side.css +1 -1
  20. package/assets/css/components/collapsible-side.css.map +1 -1
  21. package/assets/css/components/content.component.css +1 -1
  22. package/assets/css/components/content.component.css.map +1 -1
  23. package/assets/css/components/darkmode.component.css +1 -0
  24. package/assets/css/components/darkmode.component.css.map +1 -0
  25. package/assets/css/components/doughnutchart.component.css +1 -1
  26. package/assets/css/components/doughnutchart.component.css.map +1 -1
  27. package/assets/css/components/inline-edit.css.map +1 -1
  28. package/assets/css/components/{menu.css → menu.global.css} +1 -1
  29. package/assets/css/components/menu.global.css.map +1 -0
  30. package/assets/css/components/milestone.css +1 -1
  31. package/assets/css/components/milestone.css.map +1 -1
  32. package/assets/css/components/multi-step.component.css +1 -1
  33. package/assets/css/components/multi-step.component.css.map +1 -1
  34. package/assets/css/components/multiselect.css.map +1 -1
  35. package/assets/css/components/multiselect.preload.css +1 -1
  36. package/assets/css/components/multiselect.preload.css.map +1 -1
  37. package/assets/css/components/nav.component.css +1 -1
  38. package/assets/css/components/nav.component.css.map +1 -1
  39. package/assets/css/components/nav.global.css +1 -1
  40. package/assets/css/components/nav.global.css.map +1 -1
  41. package/assets/css/components/notification.css +1 -1
  42. package/assets/css/components/notification.css.map +1 -1
  43. package/assets/css/components/pagination.css.map +1 -1
  44. package/assets/css/components/property-searchbar.css +1 -1
  45. package/assets/css/components/property-searchbar.css.map +1 -1
  46. package/assets/css/components/split-button.component.css +1 -1
  47. package/assets/css/components/split-button.component.css.map +1 -1
  48. package/assets/css/components/word-count.component.css +1 -0
  49. package/assets/css/components/word-count.component.css.map +1 -0
  50. package/assets/css/core.min.css +1 -1
  51. package/assets/css/core.min.css.map +1 -1
  52. package/assets/css/mobile-core.min.css +1 -1
  53. package/assets/css/mobile-core.min.css.map +1 -1
  54. package/assets/css/mobile.min.css +1 -1
  55. package/assets/css/mobile.min.css.map +1 -1
  56. package/assets/css/style.min.css +1 -1
  57. package/assets/css/style.min.css.map +1 -1
  58. package/assets/js/components/accordion/accordion.component.js +40 -19
  59. package/assets/js/components/accordion/accordion.component.min.js +15 -15
  60. package/assets/js/components/accordion/accordion.component.min.js.map +1 -1
  61. package/assets/js/components/actionbar/actionbar.component.js +8 -0
  62. package/assets/js/components/actionbar/actionbar.component.min.js +6 -5
  63. package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
  64. package/assets/js/components/address-lookup/address-lookup.component.js +6 -8
  65. package/assets/js/components/address-lookup/address-lookup.component.min.js +10 -12
  66. package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -1
  67. package/assets/js/components/advanced-select/advanced-select.component.min.js +1 -1
  68. package/assets/js/components/advanced-select/advanced-select.component.min.js.map +1 -1
  69. package/assets/js/components/applied-filters/applied-filters.component.min.js +1 -1
  70. package/assets/js/components/applied-filters/applied-filters.component.min.js.map +1 -1
  71. package/assets/js/components/barchart/barchart.component.min.js +2 -2
  72. package/assets/js/components/barchart/barchart.component.min.js.map +1 -1
  73. package/assets/js/components/bento-grid/bento-grid.component.min.js +1 -1
  74. package/assets/js/components/bento-grid/bento-grid.component.min.js.map +1 -1
  75. package/assets/js/components/calendar/calendar.component.js +153 -136
  76. package/assets/js/components/calendar/calendar.component.min.js +3 -3
  77. package/assets/js/components/calendar/calendar.component.min.js.map +1 -1
  78. package/assets/js/components/card/card.component.js +3 -9
  79. package/assets/js/components/card/card.component.min.js +13 -7
  80. package/assets/js/components/card/card.component.min.js.map +1 -1
  81. package/assets/js/components/carousel/carousel.component.js +17 -19
  82. package/assets/js/components/carousel/carousel.component.min.js +17 -19
  83. package/assets/js/components/carousel/carousel.component.min.js.map +1 -1
  84. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +2 -2
  85. package/assets/js/components/collapsible-side/collapsible-side.component.min.js.map +1 -1
  86. package/assets/js/components/content/content.component.min.js +2 -2
  87. package/assets/js/components/content/content.component.min.js.map +1 -1
  88. package/assets/js/components/darkmode/darkmode.component.js +70 -0
  89. package/assets/js/components/darkmode/darkmode.component.min.js +10 -0
  90. package/assets/js/components/darkmode/darkmode.component.min.js.map +1 -0
  91. package/assets/js/components/doughnutchart/doughnutchart.component.min.js +2 -2
  92. package/assets/js/components/doughnutchart/doughnutchart.component.min.js.map +1 -1
  93. package/assets/js/components/fileupload/fileupload.component.min.js +1 -1
  94. package/assets/js/components/fileupload/fileupload.component.min.js.map +1 -1
  95. package/assets/js/components/filter-card/filter-card.component.min.js +1 -1
  96. package/assets/js/components/filter-card/filter-card.component.min.js.map +1 -1
  97. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  98. package/assets/js/components/filterlist/filterlist.component.min.js.map +1 -1
  99. package/assets/js/components/header/header.component.min.js +1 -1
  100. package/assets/js/components/header/header.component.min.js.map +1 -1
  101. package/assets/js/components/inline-edit/inline-edit.component.min.js +1 -1
  102. package/assets/js/components/inline-edit/inline-edit.component.min.js.map +1 -1
  103. package/assets/js/components/marketing/marketing.component.min.js +1 -1
  104. package/assets/js/components/marketing/marketing.component.min.js.map +1 -1
  105. package/assets/js/components/menu/menu.component.js +2 -2
  106. package/assets/js/components/menu/menu.component.min.js +4 -5
  107. package/assets/js/components/menu/menu.component.min.js.map +1 -1
  108. package/assets/js/components/milestone/milestone.component.js +12 -14
  109. package/assets/js/components/milestone/milestone.component.min.js +1 -1
  110. package/assets/js/components/milestone/milestone.component.min.js.map +1 -1
  111. package/assets/js/components/milestone-group/milestone-group.component.js +10 -12
  112. package/assets/js/components/milestone-group/milestone-group.component.min.js +1 -1
  113. package/assets/js/components/milestone-group/milestone-group.component.min.js.map +1 -1
  114. package/assets/js/components/multi-step/multi-step.component.min.js +3 -3
  115. package/assets/js/components/multi-step/multi-step.component.min.js.map +1 -1
  116. package/assets/js/components/multiselect/multiselect.component.js +2 -2
  117. package/assets/js/components/multiselect/multiselect.component.min.js +1 -1
  118. package/assets/js/components/multiselect/multiselect.component.min.js.map +1 -1
  119. package/assets/js/components/nav/nav.component.js +2 -3
  120. package/assets/js/components/nav/nav.component.min.js +5 -5
  121. package/assets/js/components/nav/nav.component.min.js.map +1 -1
  122. package/assets/js/components/notification/notification.component.js +1 -3
  123. package/assets/js/components/notification/notification.component.min.js +5 -5
  124. package/assets/js/components/notification/notification.component.min.js.map +1 -1
  125. package/assets/js/components/pagination/pagination.component.min.js +1 -1
  126. package/assets/js/components/pagination/pagination.component.min.js.map +1 -1
  127. package/assets/js/components/rank/rank.component.min.js +1 -1
  128. package/assets/js/components/rank/rank.component.min.js.map +1 -1
  129. package/assets/js/components/rankings/rankings.component.min.js +1 -1
  130. package/assets/js/components/rankings/rankings.component.min.js.map +1 -1
  131. package/assets/js/components/record-card/record-card.component.min.js +1 -1
  132. package/assets/js/components/record-card/record-card.component.min.js.map +1 -1
  133. package/assets/js/components/search/search.component.min.js +1 -1
  134. package/assets/js/components/search/search.component.min.js.map +1 -1
  135. package/assets/js/components/slider/slider.component.min.js +1 -1
  136. package/assets/js/components/slider/slider.component.min.js.map +1 -1
  137. package/assets/js/components/split-button/split-button.component.js +1 -3
  138. package/assets/js/components/split-button/split-button.component.min.js +8 -11
  139. package/assets/js/components/split-button/split-button.component.min.js.map +1 -1
  140. package/assets/js/components/table/table.component.min.js +1 -1
  141. package/assets/js/components/table/table.component.min.js.map +1 -1
  142. package/assets/js/components/table-ajax/table-ajax.component.min.js +1 -1
  143. package/assets/js/components/table-ajax/table-ajax.component.min.js.map +1 -1
  144. package/assets/js/components/table-basic/table-basic.component.min.js +1 -1
  145. package/assets/js/components/table-basic/table-basic.component.min.js.map +1 -1
  146. package/assets/js/components/table-no-submit/table-no-submit.component.min.js +1 -1
  147. package/assets/js/components/table-no-submit/table-no-submit.component.min.js.map +1 -1
  148. package/assets/js/components/table-submit/table-submit.component.min.js +1 -1
  149. package/assets/js/components/table-submit/table-submit.component.min.js.map +1 -1
  150. package/assets/js/components/tabs/tabs.component.min.js +1 -1
  151. package/assets/js/components/tabs/tabs.component.min.js.map +1 -1
  152. package/assets/js/components/video-card/video-card.component.min.js +1 -1
  153. package/assets/js/components/video-card/video-card.component.min.js.map +1 -1
  154. package/assets/js/components/word-count/word-count.component.js +81 -0
  155. package/assets/js/components/word-count/word-count.component.min.js +12 -0
  156. package/assets/js/components/word-count/word-count.component.min.js.map +1 -0
  157. package/assets/js/components.js +1 -0
  158. package/assets/js/modules/advanced-select.js +1 -1
  159. package/assets/js/modules/dynamicEvents.js +3 -3
  160. package/assets/js/modules/inputs.js +0 -18
  161. package/assets/js/modules/milestone.js +2 -2
  162. package/assets/js/scripts.bundle.js +3 -3
  163. package/assets/js/scripts.bundle.js.map +1 -1
  164. package/assets/js/scripts.bundle.min.js +2 -2
  165. package/assets/js/scripts.bundle.min.js.map +1 -1
  166. package/assets/js/scripts.js +2 -1
  167. package/assets/sass/_components.scss +4 -4
  168. package/assets/sass/_example.scss +1 -1
  169. package/assets/sass/_functions/utility-mixins.scss +0 -1
  170. package/assets/sass/components/actionbar.component.scss +22 -0
  171. package/assets/sass/components/actionbar.global.scss +1 -1
  172. package/assets/sass/components/{address-lookup.scss → address-lookup.component.scss} +10 -0
  173. package/assets/sass/components/calendar.component.scss +163 -271
  174. package/assets/sass/components/calendar.config.scss +69 -122
  175. package/assets/sass/components/darkmode.component.scss +22 -0
  176. package/assets/sass/components/milestone.scss +69 -60
  177. package/assets/sass/components/multi-step.component.scss +1 -1
  178. package/assets/sass/components/multiselect.preload.scss +1 -1
  179. package/assets/sass/components/multiselect.scss +1 -2
  180. package/assets/sass/components/nav.component.scss +16 -6
  181. package/assets/sass/components/nav.global.scss +8 -12
  182. package/assets/sass/components/notification.scss +32 -13
  183. package/assets/sass/components/split-button.component.scss +3 -1
  184. package/assets/sass/components/table-basic.global.scss +32 -32
  185. package/assets/sass/components/word-count.component.scss +26 -0
  186. package/assets/sass/elements/admin-panel.scss +1 -1
  187. package/assets/sass/elements/buttons--compact.scss +1 -1
  188. package/assets/sass/elements/details.scss +33 -6
  189. package/assets/sass/elements/forms.scss +18 -33
  190. package/assets/sass/elements/lists.scss +1 -1
  191. package/assets/sass/elements/toggle-button.scss +1 -0
  192. package/assets/sass/foundations/colours.scss +0 -0
  193. package/assets/sass/foundations/reboot.scss +8 -1
  194. package/assets/sass/foundations/root.scss +41 -51
  195. package/assets/ts/components/accordion/accordion.component.ts +47 -26
  196. package/assets/ts/components/actionbar/actionbar.component.ts +10 -0
  197. package/assets/ts/components/address-lookup/address-lookup.component.ts +6 -8
  198. package/assets/ts/components/calendar/calendar.component.ts +368 -498
  199. package/assets/ts/components/card/card.component.ts +2 -9
  200. package/assets/ts/components/carousel/carousel.component.ts +17 -19
  201. package/assets/ts/components/darkmode/darkmode.component.ts +85 -0
  202. package/assets/ts/components/menu/menu.component.ts +2 -2
  203. package/assets/ts/components/milestone/milestone.component.ts +43 -45
  204. package/assets/ts/components/milestone-group/milestone-group.component.ts +39 -41
  205. package/assets/ts/components/multiselect/multiselect.component.ts +6 -15
  206. package/assets/ts/components/nav/nav.component.ts +8 -15
  207. package/assets/ts/components/notification/notification.component.ts +1 -5
  208. package/assets/ts/components/split-button/split-button.component.ts +1 -3
  209. package/assets/ts/components/word-count/word-count.component.ts +91 -0
  210. package/assets/ts/components.ts +1 -0
  211. package/assets/ts/modules/advanced-select.ts +11 -16
  212. package/assets/ts/modules/data-layer.md +0 -5
  213. package/assets/ts/modules/dynamicEvents.ts +6 -7
  214. package/assets/ts/modules/inputs.ts +0 -25
  215. package/assets/ts/modules/milestone-group.ts +39 -42
  216. package/assets/ts/modules/milestone.ts +119 -122
  217. package/assets/ts/scripts.ts +2 -1
  218. package/dist/components.es.js +1693 -41
  219. package/dist/components.umd.js +1032 -221
  220. package/package.json +6 -6
  221. package/src/components/Accordion/Accordion.vue +14 -23
  222. package/src/components/Accordion/AccordionItem.vue +27 -43
  223. package/src/components/Actionbar/Actionbar.vue +17 -19
  224. package/src/components/AddressLookup/AddressLookup.vue +17 -18
  225. package/src/components/AdvancedSelect/AdvancedSelect.vue +17 -18
  226. package/src/components/AppliedFilters/AppliedFilters.vue +16 -18
  227. package/src/components/Banner/Banner.vue +18 -21
  228. package/src/components/BarChart/BarChart.vue +17 -18
  229. package/src/components/Calendar/Calendar.vue +14 -20
  230. package/src/components/Card/Card.vue +17 -17
  231. package/src/components/Carousel/Carousel.vue +17 -20
  232. package/src/components/Content/Content.vue +17 -18
  233. package/src/components/DarkMode/DarkMode.vue +19 -0
  234. package/src/components/DoughnutChart/DoughnutChart.vue +17 -18
  235. package/src/components/FileUpload/FileUpload.vue +22 -28
  236. package/src/components/FilterCard/FilterCard.vue +17 -18
  237. package/src/components/Filterlist/Filterlist.vue +17 -0
  238. package/src/components/Header/Header.vue +28 -29
  239. package/src/components/InlineEdit/InlineEdit.vue +11 -19
  240. package/src/components/Menu/Menu.vue +17 -17
  241. package/src/components/Milestones/Milestone.vue +22 -27
  242. package/src/components/Milestones/MilestoneGroup.vue +24 -27
  243. package/src/components/Multiselect/Multiselect.vue +17 -18
  244. package/src/components/Nav/Nav.vue +17 -19
  245. package/src/components/Notification/Notification.vue +17 -15
  246. package/src/components/Pagination/Pagination.vue +16 -16
  247. package/src/components/Rank/Rank.vue +17 -18
  248. package/src/components/Rankings/Rankings.vue +17 -27
  249. package/src/components/RecordCard/RecordCard.vue +17 -18
  250. package/src/components/Search/Search.vue +17 -17
  251. package/src/components/Slider/Slider.vue +17 -17
  252. package/src/components/SplitButton/SplitButton.vue +17 -20
  253. package/src/components/Tabs/Tabs.vue +17 -17
  254. package/src/components/VideoCard/VideoCard.vue +17 -18
  255. package/src/components/WordCount/WordCount.vue +22 -0
  256. package/src/index.js +43 -44
  257. package/assets/css/components/address-lookup.css +0 -1
  258. package/assets/css/components/address-lookup.css.map +0 -1
  259. package/assets/css/components/menu.css.map +0 -1
  260. /package/assets/sass/components/{menu.scss → menu.global.scss} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"actionbar.component.min.js","sources":["../../modules/helpers.js","actionbar.component.js"],"sourcesContent":["/**\n * Global helper functions to help maintain and enhance framework elements.\n * @module Helpers\n */\n/**\n * Add global classes used by the CSS and later JavaScript.\n * @param {HTMLElement} body Dom element, this doesn't have to be the body but it is recommended.\n */\nexport const addBodyClasses = (body) => {\n body.classList.add('js-enabled');\n if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) {\n body.classList.add('ie');\n }\n};\n/**\n * Add global events.\n * @param {HTMLElement} body Dom element, this doesn't have to be the body but it is recommended.\n */\nexport const addGlobalEvents = (body) => {\n const checkElements = function (hash) {\n const label = document.querySelector(`label[for=\"${hash.replace('#', '')}\"]`);\n const summary = document.querySelector(hash + ' summary');\n const dialog = document.querySelector(`dialog${hash}`);\n const detail = document.querySelector(`detail${hash}`);\n if (label instanceof HTMLElement)\n label.click();\n else if (summary instanceof HTMLElement)\n summary.click();\n else if (dialog instanceof HTMLElement)\n dialog.showModal();\n else if (detail instanceof HTMLElement)\n detail.addAttribute('open');\n };\n if (location.hash)\n checkElements(location.hash);\n window.addEventListener('hashchange', function () {\n checkElements(location.hash);\n }, false);\n addEventListener('popstate', (event) => {\n if (event && event.state && event.state.type && event.state.type == 'pagination') {\n const form = document.querySelector(`#${event.state.form}`);\n const pageInput = document.querySelector(`#${event.state.form} [data-pagination]`);\n if (pageInput)\n pageInput.value = event.state.page;\n else\n form.innerHTML += `<input name=\"page\" type=\"hidden\" data-pagination=\"true\" value=\"${event.state.page}\" />`;\n form.dispatchEvent(new Event('submit'));\n }\n });\n document.addEventListener('submit', (event) => {\n if (event && event.target instanceof HTMLElement && event.target.matches('form')) {\n const form = event.target;\n // Reset password types\n Array.from(form.querySelectorAll('[data-password-type]')).forEach((input) => {\n input.setAttribute('type', 'password');\n });\n if (form.querySelector(':invalid') ||\n form.querySelector('.pwd-checker[data-strength=\"1\"]') ||\n form.querySelector('.pwd-checker[data-strength=\"2\"]')) {\n form.classList.add('was-validated');\n event.preventDefault();\n }\n if (form.querySelector('iam-multiselect[data-is-required][data-error]')) {\n form.classList.add('was-validated');\n event.preventDefault();\n }\n }\n });\n document.addEventListener('keydown', (e) => {\n if (e.key === 'Escape') {\n if (document.querySelector('.dialog--transactional[open], .dialog--acknowledgement[open]')) {\n e.preventDefault();\n e.stopPropagation();\n }\n }\n });\n Array.from(document.querySelectorAll('label progress')).forEach((progress) => {\n const label = progress.closest('label');\n label.setAttribute('data-percent', progress.getAttribute('value'));\n });\n};\nexport const isNumeric = function (str) {\n if (typeof str != 'string')\n return false; // we only process strings!\n return (!isNaN(str) && // use type coercion to parse the _entirety_ of the string (`parseFloat` alone does not do this)...\n !isNaN(parseFloat(str))); // ...and ensure strings of whitespace fail\n};\nexport const zeroPad = (num, places) => String(num).padStart(places, '0');\nexport const ucfirst = (str) => str.charAt(0).toUpperCase() + str.slice(1);\nexport const ucwords = (str) => str\n .split(' ')\n .map((s) => ucfirst(s))\n .join(' ');\nexport const unsnake = (str) => str.replace(/_/g, ' ');\nexport const snake = (str) => str.replace(/ /g, '_');\nexport const safeID = function (str) {\n str = str.toLowerCase();\n str = snake(str);\n str = str.replace(/\\W/g, '');\n return str;\n};\nexport const numberOfDays = function (startDateString, endDateString) {\n const convertStart = startDateString.split('/');\n const convertEnd = endDateString.split('/');\n const dateStart = new Date(convertStart[1] + '/' + convertStart[0] + '/' + convertStart[2]);\n const dateEnd = new Date(convertEnd[1] + '/' + convertEnd[0] + '/' + convertEnd[2]);\n if (dateStart == 'Invalid Date')\n throw 'Start date is not a valid date';\n if (dateEnd == 'Invalid Date')\n throw 'End date is not a valid date';\n // To calculate the time difference of two dates\n const diffTime = dateEnd.getTime() - dateStart.getTime();\n const numberOfDays = diffTime / (1000 * 3600 * 24) + 1;\n if (numberOfDays < 0)\n throw 'The start date should be before the end date';\n return numberOfDays;\n};\n// Used to get values from nested json objects\nexport const resolvePath = (object, path, defaultValue) => path\n // eslint-disable-next-line no-useless-escape\n .split(/[\\.\\[\\]\\'\\\"]/)\n .filter((p) => p)\n .reduce((o, p) => (o ? o[p] : defaultValue), object);\nexport const isTraversable = (o) => Array.isArray(o) || (o !== null && ['function', 'object'].includes(typeof o));\nexport const getSwipeDirection = (touchstartX, touchstartY, touchendX, touchendY) => {\n const limit = Math.tan(((45 * 1.5) / 180) * Math.PI);\n const pageWidth = window.innerWidth || document.body.clientWidth;\n const treshold = Math.max(1, Math.floor(0.01 * pageWidth));\n const x = touchendX - touchstartX;\n const y = touchendY - touchstartY;\n const xy = Math.abs(x / y);\n const yx = Math.abs(y / x);\n if (Math.abs(x) > treshold || Math.abs(y) > treshold) {\n if (yx <= limit) {\n if (x < 0) {\n return 'left';\n }\n else {\n return 'right';\n }\n }\n if (xy <= limit) {\n if (y < 0) {\n return 'top';\n }\n else {\n return 'bottom';\n }\n }\n }\n else {\n return 'tap';\n }\n};\nexport const uniqueID = (index = 1) => {\n const ID = Math.floor(Math.random() * Date.now() * (index + 1));\n return ID;\n};\n","import { uniqueID } from '../../modules/helpers.js';\nwindow.dataLayer = window.dataLayer || [];\nwindow.dataLayer.push({\n event: 'customElementRegistered',\n element: 'action bar',\n});\nfunction setSelectAllInput(element, value) {\n if (element && value == 'all') {\n element.querySelector('input').indeterminate = false;\n element.querySelector('input').checked = true;\n element.querySelector('label').textContent = `Select all`;\n }\n else if (element && value == 0) {\n element.querySelector('input').indeterminate = false;\n element.querySelector('input').checked = false;\n element.querySelector('label').textContent = `Select all`;\n }\n else if (element && value) {\n element.querySelector('input').indeterminate = true;\n element.querySelector('input').checked = false;\n element.querySelector('label').textContent = `${value} item${value > 1 ? 's' : ''} selected`;\n }\n else if (element) {\n element.querySelector('input').checked = false;\n element.querySelector('input').indeterminate = false;\n element.querySelector('label').textContent = `Select all`;\n }\n}\nclass iamActionbar extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n const assetLocation = document.body.hasAttribute('data-assets-location')\n ? document.body.getAttribute('data-assets-location')\n : '/assets';\n const loadCSS = `@import \"${assetLocation}/css/components/actionbar.component.css\";`;\n const loadExtraCSS = `@import \"${assetLocation}/css/components/actionbar.global.css\";`;\n const template = document.createElement('template');\n template.innerHTML = `\n <style>\n ${loadCSS}\n ${this.hasAttribute('css') ? `@import \"${this.getAttribute('css')}\";` : ``}\n </style>\n <link rel=\"stylesheet\" href=\"https://kit.fontawesome.com/26fdbf0179.css\" crossorigin=\"anonymous\">\n <div class=\"actionbar__wrapper\">\n \n <div class=\"actionbar\" part=\"actionbar\">\n <slot name=\"selectall\"></slot>\n <div class=\"safe-area\">\n <slot></slot>\n <div class=\"body\">\n <div class=\"menu__wrapper menu__wrapper --right dialog-overflow d-none show\">\n <button class=\"btn btn-secondary btn-compact btn-sm fa-ellipsis-vertical m-0\" popovertarget=\"overflow\" style=\"anchor-name: --anchor-overflow;\">More actions</button>\n <iam-menu class=\"dialog--list\" part=\"overflow\" id=\"overflow\" style=\"position-anchor: --anchor-overflow;\" popover>\n <slot name=\"overflow\"></slot>\n <slot name=\"menu\"></slot>\n </iam-menu>\n </div>\n\n\n <div class=\"menu__wrapper menu__wrapper --right filter-columns\">\n <button class=\"btn btn-secondary btn-compact btn-sm mb-0 me-0 fa-regular fa-table-columns\" title=\"Select colums\" popovertarget=\"filter\" style=\"anchor-name: --anchor-filter;\">Filter</button>\n <iam-menu class=\"dialog--list\" id=\"filter\" style=\"position-anchor: --anchor-filter;\" popover>\n <div class=\"pb-0 mb-0 checklists\">\n \n </div>\n <div class=\"text-right checklist-btns\"><button id=\"cancelColumns\" class=\"btn btn-action\">Cancel</button><button id=\"saveColumns\" class=\"btn btn-action btn-secondary\">Save</button></div>\n </iam-menu>\n </div>\n\n <button class=\"btn btn-secondary btn-compact btn-sm fa-search\" data-search=\"\" part=\"search-btn\">Search</button>\n </div>\n </div>\n </div>\n <div class=\"actionbar--selected\">\n <div class=\"safe-area\">\n <slot name=\"selected\"></slot>\n <div class=\"body\">\n <div class=\"menu__wrapper menu__wrapper --right dialog-overflow d-none show\">\n <button class=\"btn btn-secondary btn-compact btn-sm fa-ellipsis-vertical m-0\" popovertarget=\"selected-overflow\" style=\"anchor-name: --anchor-selected-overflow;\">More actions</button>\n <iam-menu class=\"dialog--list\" part=\"selected-overflow\" id=\"selected-overflow\" style=\"position-anchor: --anchor-selected-overflow;\" popover>\n <slot name=\"selected-overflow\"></slot>\n </iam-menu>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"actionbar--search\">\n <button data-search class=\"btn btn-compact fa-xmark-large btn-secondary m-0\" >Close</button>\n\n <div class=\"search-wrapper\" part=\"search\">\n <label for=\"search\" class=\"visually-hidden\">Input field label</label>\n <button class=\"suffix\" part=\"search-btn\"><i class=\"fa-regular fa-search\"></i></button>\n <input type=\"text\" id=\"search\" name=\"search\" required=\"\" part=\"search-input\">\n </div>\n\n </div>\n </div>\n <div class=\"no-columns\">\n <span class=\"d-block\">No columns selected</span>\n </div>\n `;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n // insert extra CSS\n if (!document.getElementById('actionbarGlobal'))\n document.head.insertAdjacentHTML('beforeend', `<style id=\"actionbarGlobal\">${loadExtraCSS}</style>`);\n }\n connectedCallback() {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\n const actionbarWrapper = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.actionbar__wrapper');\n const checklistHolder = (_b = this.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.checklists');\n const assetLocation = document.body.hasAttribute('data-assets-location')\n ? document.body.getAttribute('data-assets-location')\n : '/assets';\n if (!window.customElements.get(`iam-menu`)) {\n import(/* @vite-ignore */ `${assetLocation}/js/components/menu/menu.component.js`)\n .then((module) => {\n window.customElements.define(`iam-menu`, module.default);\n })\n .catch((err) => {\n console.log(err.message);\n });\n }\n const dialog = this.querySelector('.dialog__wrapper dialog');\n // Transform dialog into a menu custom element\n if (dialog) {\n const btn = dialog.parentElement.querySelector('.btn');\n const id = `menu${uniqueID(1)}`;\n dialog.setAttribute('id', id);\n dialog.setAttribute('popover', 'auto');\n btn.setAttribute('popovertarget', id);\n dialog.outerHTML = dialog.outerHTML.replace(/<dialog/g, '<iam-menu').replace(/<\\/dialog>/g, '</iam-menu>');\n (_c = dialog.parentElement) === null || _c === void 0 ? void 0 : _c.classList.add('menu__wrapper');\n (_d = dialog.parentElement) === null || _d === void 0 ? void 0 : _d.classList.remove('dialog__wrapper');\n }\n // #region select all\n if (this.hasAttribute('data-selectall')) {\n actionbarWrapper === null || actionbarWrapper === void 0 ? void 0 : actionbarWrapper.insertAdjacentHTML('afterbegin', `<div class=\"selectall pb-0\"><input type=\"checkbox\" name=\"selectall\" id=\"selectall\"><label for=\"selectall\" class=\"m-0\">Select all</label></div>`);\n const selectAll = (_e = this.shadowRoot) === null || _e === void 0 ? void 0 : _e.querySelector('.selectall');\n if (this.hasAttribute('data-selected')) {\n setSelectAllInput(selectAll, this.getAttribute('data-selected'));\n }\n selectAll === null || selectAll === void 0 ? void 0 : selectAll.addEventListener('change', (event) => {\n var _a;\n if (event && event.target instanceof HTMLElement && event.target.closest('input')) {\n if ((_a = event.target.closest('input')) === null || _a === void 0 ? void 0 : _a.checked)\n this.setAttribute('data-selected', 'all');\n else\n this.setAttribute('data-selected', '0');\n }\n });\n const cancelButton = this.querySelector('button[data-cancel]');\n if (cancelButton) {\n cancelButton.addEventListener('click', () => {\n this.setAttribute('data-selected', '0');\n });\n }\n }\n // Wtach div for the select inputs\n if (this.hasAttribute('data-select-watch')) {\n const element = document.getElementById(this.getAttribute('data-select-watch'));\n element === null || element === void 0 ? void 0 : element.setAttribute('data-select-container', 'true');\n Array.from(element.querySelectorAll('input[type=\"checkbox\"]')).forEach((input) => {\n var _a;\n (_a = input.parentElement) === null || _a === void 0 ? void 0 : _a.setAttribute('slot', 'checkbox');\n });\n element === null || element === void 0 ? void 0 : element.addEventListener('change', (event) => {\n if (event && event.target instanceof HTMLElement && event.target.closest('[type=\"checkbox\"]')) {\n const count = element.querySelectorAll('input[type=\"checkbox\"]').length;\n const countChecked = element.querySelectorAll('input[type=\"checkbox\"]:checked').length;\n this.setAttribute('data-selected', count == countChecked ? 'all' : String(countChecked));\n if (countChecked) {\n Array.from(element.querySelectorAll('input[type=\"checkbox\"]')).forEach((input) => {\n var _a;\n if (input.closest('iam-card'))\n (_a = input.closest('iam-card')) === null || _a === void 0 ? void 0 : _a.setAttribute('data-selected', 'true');\n });\n }\n else {\n Array.from(element.querySelectorAll('input[type=\"checkbox\"]')).forEach((input) => {\n var _a;\n if (input.closest('iam-card'))\n (_a = input.closest('iam-card')) === null || _a === void 0 ? void 0 : _a.removeAttribute('data-selected');\n });\n }\n }\n });\n }\n // #endregion\n // #region switchviews\n if (this.hasAttribute('data-switchviews')) {\n let btns = '';\n const viewList = (_f = this.getAttribute('data-switchviews')) === null || _f === void 0 ? void 0 : _f.split(',');\n viewList === null || viewList === void 0 ? void 0 : viewList.forEach((view) => {\n let icon = 'fa-grid-2';\n if (view == 'list')\n icon = 'fa-grip-lines';\n else if (view == 'small')\n icon = 'fa-bars';\n btns += `<button class=\"btn btn-action btn-compact btn-sm mb-0 fa-regular ${icon}\">${view}</button>`;\n });\n actionbarWrapper === null || actionbarWrapper === void 0 ? void 0 : actionbarWrapper.insertAdjacentHTML('afterbegin', `<div class=\"views m-0\">${btns}</div>`);\n const views = (_g = this.shadowRoot) === null || _g === void 0 ? void 0 : _g.querySelector('.views');\n views === null || views === void 0 ? void 0 : views.addEventListener('click', (event) => {\n if (event && event.target instanceof HTMLElement && event.target.closest('.btn-action')) {\n const btn = event.target.closest('.btn-action');\n this.setAttribute('data-view', btn.textContent);\n const switchEvent = new CustomEvent('switch-view', { detail: { view: btn.textContent } });\n this.dispatchEvent(switchEvent);\n }\n });\n }\n // #endregion\n // #region search\n const searchBar = (_h = this.shadowRoot) === null || _h === void 0 ? void 0 : _h.querySelector('.actionbar--search');\n if (this.hasAttribute('data-search-value')) {\n ((_j = this.shadowRoot) === null || _j === void 0 ? void 0 : _j.querySelector('#search')).value = String(this.getAttribute('data-search-value'));\n }\n if (this.hasAttribute('data-search') && this.getAttribute('data-search') == 'show')\n searchBar === null || searchBar === void 0 ? void 0 : searchBar.classList.add('show');\n const searchBtn = this.shadowRoot.querySelector('button[data-search]');\n this.shadowRoot.addEventListener('click', (event) => {\n if (event && event.target instanceof HTMLElement && event.target.closest('button[data-search]')) {\n searchBar.classList.toggle('show');\n searchBtn.toggleAttribute('aria-expanded');\n }\n });\n searchBar.addEventListener('keyup', () => {\n const keyupEvent = new CustomEvent('search-keyup', {\n detail: { search: searchBar.querySelector('input').value },\n });\n this.dispatchEvent(keyupEvent);\n });\n searchBar.addEventListener('change', () => {\n const changeEvent = new CustomEvent('search-change', {\n detail: { search: searchBar.querySelector('input').value },\n });\n this.dispatchEvent(changeEvent);\n });\n searchBar.addEventListener('click', (event) => {\n if (event && event.target instanceof HTMLElement && event.target.closest('button.suffix')) {\n const submitEvent = new CustomEvent('search-submit', {\n detail: { search: searchBar.querySelector('input').value },\n });\n this.dispatchEvent(submitEvent);\n }\n });\n // #endregion\n // #region Reponsive safe area\n const hideButtons = () => {\n const wrapperWidth = actionbarWrapper.scrollWidth;\n const screenWidth = document.documentElement.scrollWidth;\n let safeAreaWidth = 750;\n let elementMargin = 16;\n let tabletSafeWidth = 450;\n let mobileSafeWidth = (this === null || this === void 0 ? void 0 : this.hasAttribute('data-switchviews')) ? 144 : 210;\n if (this.hasAttribute('data-large-safe-area')) {\n safeAreaWidth = 1048;\n tabletSafeWidth = 620;\n mobileSafeWidth = 260;\n }\n // We need to modify the widths to mimic the CSS's scaling functionality\n let modifier = 1;\n if (screenWidth >= 992 && screenWidth <= 1280) {\n modifier = screenWidth / 1280;\n }\n else if (screenWidth >= 576 && screenWidth < 992) {\n modifier = screenWidth / 768;\n }\n else if (screenWidth < 576) {\n modifier = screenWidth / 375;\n }\n // Work out the safe sapce width depending upon the wrappers width and modifier comp\n if (wrapperWidth >= 992 && wrapperWidth <= 1280) {\n safeAreaWidth = safeAreaWidth * modifier;\n }\n else if (wrapperWidth >= 576 && wrapperWidth < 992) {\n safeAreaWidth = tabletSafeWidth * modifier;\n }\n else if (wrapperWidth < 576) {\n safeAreaWidth = mobileSafeWidth * modifier;\n }\n // Margin in between elements\n elementMargin = elementMargin * modifier;\n // If the wrapper width is small we want to reduce the btn sizes by adding or removing btn-compact classes\n if (wrapperWidth < 576) {\n Array.from(this.querySelectorAll(':scope > .btn:not(.js-updated), :scope > .menu__wrapper > .btn[class*=\"fa-\"]:first-child:not(.js-updated)')).forEach((element) => {\n element.className = element.className.replace(' btn-compact', ' _btn-compact');\n element.classList.add('btn-compact');\n element.classList.add('js-updated');\n });\n }\n else {\n Array.from(this.querySelectorAll(':scope > .btn.js-updated, :scope > .menu__wrapper > .btn.js-updated:first-child')).forEach((element) => {\n element.classList.remove('btn-compact');\n element.classList.remove('js-updated');\n element.className = element.className.replace(' _btn-compact', ' btn-compact');\n });\n }\n // Reset the elements before we decide what elements become slotted into the overflow\n Array.from(this.querySelectorAll('[slot]')).forEach((element) => {\n if (element.getAttribute('slot') == 'overflow')\n element.removeAttribute('slot');\n if (element.getAttribute('slot') == 'selected-overflow')\n element.setAttribute('slot', 'selected');\n });\n Array.from(this.querySelectorAll('.show')).forEach((element) => {\n element.classList.remove('show');\n });\n // Foreach safe area lets check what elements are slotted in them and if they need an overflow\n Array.from(this.shadowRoot.querySelectorAll('.safe-area')).forEach((element) => {\n var _a, _b, _c;\n // Decide on which overflow slot to use\n let overflowSlot = 'overflow';\n if (((_a = element.querySelector('slot')) === null || _a === void 0 ? void 0 : _a.hasAttribute('name')) &&\n ((_b = element.querySelector('slot')) === null || _b === void 0 ? void 0 : _b.getAttribute('name')) == 'selected')\n overflowSlot = 'selected-overflow';\n // Get the slotted elements, remember they aren't children of the safe area\n const elements = (_c = element.querySelector('slot')) === null || _c === void 0 ? void 0 : _c.assignedElements();\n let tempWidth = 44 * modifier; // Allow space for the overflow button\n // If search then allow for the search button width\n if (this.hasAttribute('data-search'))\n tempWidth += 44 * modifier;\n // Foreach element this isn't an action button or dialog wrapper add to the width, these will not be moved into the overflow slot\n for (let i = 0; i < elements.length; i++) {\n if (!elements[i].classList.contains('btn-action') && !elements[i].classList.contains('menu__wrapper ')) {\n tempWidth += elements[i].offsetWidth;\n tempWidth += elementMargin;\n }\n }\n // Foreach dialog wrapper decide if safe in safe area or move into the overflow slot, dialog wrappers have priority over the action buttons\n for (let i = 0; i < elements.length; i++) {\n if (elements[i].classList.contains('menu__wrapper ')) {\n elements[i].classList.add('show');\n tempWidth += elements[i].offsetWidth;\n tempWidth += elementMargin / 2;\n // If we have exceeded the safe area then lets break the loop\n if (tempWidth - elementMargin / 2 > safeAreaWidth) {\n elements[i].classList.remove('show');\n break;\n }\n }\n }\n // Foreach action button\n for (let i = 0; i < elements.length; i++) {\n if (elements[i].classList.contains('btn-action')) {\n elements[i].classList.add('show');\n tempWidth += elements[i].offsetWidth;\n tempWidth += elementMargin / 2;\n // If we have exceeded the safe area then lets break the loop\n if (tempWidth - elementMargin / 2 > safeAreaWidth) {\n elements[i].classList.remove('show');\n break;\n }\n }\n }\n const overflowDialog = element.querySelector('.dialog-overflow');\n if (overflowDialog)\n overflowDialog.classList.add('d-none');\n // Decide which elements go into the overflow slot\n for (let i = 0; i < elements.length; i++) {\n if (elements[i].classList.contains('btn-action') || elements[i].classList.contains('menu__wrapper ')) {\n if (!elements[i].classList.contains('show')) {\n // Move to the slot by changing the attribute\n elements[i].setAttribute('slot', overflowSlot);\n // if an element has been added to overflow slot then make sure we show the overflow menu button\n if (overflowDialog)\n overflowDialog.classList.remove('d-none');\n }\n }\n }\n });\n };\n // Check buttons on load and when the wrapper element gets resized.\n hideButtons();\n new ResizeObserver(hideButtons).observe(actionbarWrapper);\n // #endregion\n // #region cloumn filters\n const setColumnFilters = () => {\n let columnsHidden = '';\n Array.from(checklistHolder === null || checklistHolder === void 0 ? void 0 : checklistHolder.querySelectorAll('label input')).forEach((element, index) => {\n columnsHidden += this.hasAttribute(`data-hide-col${index + 1}`) ? `${index + 1},` : '';\n });\n this.setAttribute('data-columns-shown', checklistHolder.querySelectorAll('input:checked').length);\n const dispatchedEvent = new CustomEvent('columm-filters-set', {\n detail: {\n columnsHidden: columnsHidden.slice(0, -1),\n },\n });\n this.dispatchEvent(dispatchedEvent);\n };\n if (this.hasAttribute('data-filter-columns') || this.hasAttribute('data-filter-columns-save')) {\n const columns = this.closest('iam-table').querySelectorAll('thead th');\n Array.from(columns).forEach((element, index) => {\n if (element.textContent) {\n checklistHolder === null || checklistHolder === void 0 ? void 0 : checklistHolder.insertAdjacentHTML('beforeend', `<label class=\"m-0\" title=\"Change the display of \"><input name=\"hideCol${index + 1}\" value=\"${index + 1}\" type=\"checkbox\" ${this.hasAttribute('data-hide-col' + (index + 1)) ? '' : 'checked'} /> ${element.textContent}</label>`);\n }\n });\n }\n this.setAttribute('data-columns-shown', checklistHolder.querySelectorAll('input:checked').length);\n if (this.hasAttribute('data-filter-columns') && !this.hasAttribute('data-filter-columns-save')) {\n checklistHolder === null || checklistHolder === void 0 ? void 0 : checklistHolder.addEventListener('change', (event) => {\n if (event && event.target instanceof HTMLElement && event.target.closest('input')) {\n const checkbox = event.target.closest('input');\n if ((checkbox === null || checkbox === void 0 ? void 0 : checkbox.checked) == false) {\n this.setAttribute('data-hide-col' + (checkbox === null || checkbox === void 0 ? void 0 : checkbox.value), 'true');\n }\n else {\n this.removeAttribute('data-hide-col' + (checkbox === null || checkbox === void 0 ? void 0 : checkbox.value));\n }\n setColumnFilters();\n }\n });\n }\n if (this.hasAttribute('data-filter-columns-save')) {\n const checklistHolder = (_k = this.shadowRoot) === null || _k === void 0 ? void 0 : _k.querySelector('.checklists');\n const checklistSave = (_l = this.shadowRoot) === null || _l === void 0 ? void 0 : _l.querySelector('#saveColumns');\n const checklistCancel = (_m = this.shadowRoot) === null || _m === void 0 ? void 0 : _m.querySelector('#cancelColumns');\n checklistSave === null || checklistSave === void 0 ? void 0 : checklistSave.addEventListener('click', (event) => {\n var _a;\n Array.from(checklistHolder === null || checklistHolder === void 0 ? void 0 : checklistHolder.querySelectorAll('label input')).forEach((checkbox) => {\n if ((checkbox === null || checkbox === void 0 ? void 0 : checkbox.checked) == false) {\n this.setAttribute('data-hide-col' + (checkbox === null || checkbox === void 0 ? void 0 : checkbox.value), 'true');\n }\n else {\n this.removeAttribute('data-hide-col' + (checkbox === null || checkbox === void 0 ? void 0 : checkbox.value));\n }\n });\n setColumnFilters();\n (_a = checklistSave.closest('dialog')) === null || _a === void 0 ? void 0 : _a.close();\n });\n // Revert back to what was previously saved\n checklistCancel === null || checklistCancel === void 0 ? void 0 : checklistCancel.addEventListener('click', (event) => {\n var _a, _b;\n const checklistHolder = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.checklists');\n Array.from(checklistHolder === null || checklistHolder === void 0 ? void 0 : checklistHolder.querySelectorAll('label input')).forEach((element, index) => {\n element.checked = this.hasAttribute(`data-hide-col${index + 1}`) ? false : true;\n });\n setColumnFilters();\n (_b = checklistSave.closest('dialog')) === null || _b === void 0 ? void 0 : _b.close();\n });\n }\n // #endregion\n }\n static get observedAttributes() {\n return ['data-selected'];\n }\n attributeChangedCallback(attrName, oldVal, newVal) {\n switch (attrName) {\n case 'data-selected': {\n const selectAll = this.shadowRoot.querySelector('.selectall');\n if (selectAll)\n setSelectAllInput(selectAll, newVal);\n const event = new CustomEvent('selected', { detail: { selected: newVal } });\n this.dispatchEvent(event);\n if (newVal == 'all' && this.hasAttribute('data-select-watch')) {\n const element = document.getElementById(String(this.getAttribute('data-select-watch')));\n Array.from(element.querySelectorAll('input[type=\"checkbox\"]')).forEach((input) => {\n var _a;\n input.checked = true;\n if (input.closest('iam-card'))\n (_a = input.closest('iam-card')) === null || _a === void 0 ? void 0 : _a.setAttribute('data-selected', 'true');\n });\n }\n if (newVal == '0' && this.hasAttribute('data-select-watch')) {\n const element = document.getElementById(String(this.getAttribute('data-select-watch')));\n Array.from(element.querySelectorAll('input[type=\"checkbox\"]')).forEach((input) => {\n var _a;\n input.checked = false;\n if (input.closest('iam-card'))\n (_a = input.closest('iam-card')) === null || _a === void 0 ? void 0 : _a.removeAttribute('data-selected');\n });\n }\n break;\n }\n }\n }\n}\nexport default iamActionbar;\n"],"names":["uniqueID","index","setSelectAllInput","element","value","iamActionbar","template","_a","_b","_c","_d","_e","_f","_g","_h","_j","_k","_l","_m","actionbarWrapper","checklistHolder","assetLocation","module","err","dialog","btn","id","selectAll","event","cancelButton","input","count","countChecked","btns","viewList","view","icon","views","switchEvent","searchBar","searchBtn","keyupEvent","changeEvent","submitEvent","hideButtons","wrapperWidth","screenWidth","safeAreaWidth","elementMargin","tabletSafeWidth","mobileSafeWidth","modifier","overflowSlot","elements","tempWidth","i","overflowDialog","setColumnFilters","columnsHidden","dispatchedEvent","columns","checkbox","checklistSave","checklistCancel","attrName","oldVal","newVal"],"mappings":"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"}
1
+ {"version":3,"file":"actionbar.component.min.js","sources":["../../modules/helpers.js","actionbar.component.js"],"sourcesContent":["/**\n * Global helper functions to help maintain and enhance framework elements.\n * @module Helpers\n */\n/**\n * Add global classes used by the CSS and later JavaScript.\n * @param {HTMLElement} body Dom element, this doesn't have to be the body but it is recommended.\n */\nexport const addBodyClasses = (body) => {\n body.classList.add('js-enabled');\n if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) {\n body.classList.add('ie');\n }\n};\n/**\n * Add global events.\n * @param {HTMLElement} body Dom element, this doesn't have to be the body but it is recommended.\n */\nexport const addGlobalEvents = (body) => {\n const checkElements = function (hash) {\n const label = document.querySelector(`label[for=\"${hash.replace('#', '')}\"]`);\n const summary = document.querySelector(hash + ' summary');\n const dialog = document.querySelector(`dialog${hash}`);\n const detail = document.querySelector(`detail${hash}`);\n if (label instanceof HTMLElement)\n label.click();\n else if (summary instanceof HTMLElement)\n summary.click();\n else if (dialog instanceof HTMLElement)\n dialog.showModal();\n else if (detail instanceof HTMLElement)\n detail.addAttribute('open');\n };\n if (location.hash)\n checkElements(location.hash);\n window.addEventListener('hashchange', function () {\n checkElements(location.hash);\n }, false);\n addEventListener('popstate', (event) => {\n if (event && event.state && event.state.type && event.state.type == 'pagination') {\n const form = document.querySelector(`#${event.state.form}`);\n const pageInput = document.querySelector(`#${event.state.form} [data-pagination]`);\n if (pageInput)\n pageInput.value = event.state.page;\n else\n form.innerHTML += `<input name=\"page\" type=\"hidden\" data-pagination=\"true\" value=\"${event.state.page}\" />`;\n form.dispatchEvent(new Event('submit'));\n }\n });\n document.addEventListener('submit', (event) => {\n if (event && event.target instanceof HTMLElement && event.target.matches('form')) {\n const form = event.target;\n // Reset password types\n Array.from(form.querySelectorAll('[data-password-type]')).forEach((input) => {\n input.setAttribute('type', 'password');\n });\n if (form.querySelector(':invalid') ||\n form.querySelector('.pwd-checker[data-strength=\"1\"]') ||\n form.querySelector('.pwd-checker[data-strength=\"2\"]')) {\n form.classList.add('was-validated');\n event.preventDefault();\n }\n if (form.querySelector('iam-multiselect[data-is-required][data-error]')) {\n form.classList.add('was-validated');\n event.preventDefault();\n }\n }\n });\n document.addEventListener('keydown', (e) => {\n if (e.key === 'Escape') {\n if (document.querySelector('.dialog--transactional[open], .dialog--acknowledgement[open]')) {\n e.preventDefault();\n e.stopPropagation();\n }\n }\n });\n Array.from(document.querySelectorAll('label progress')).forEach((progress) => {\n const label = progress.closest('label');\n label.setAttribute('data-percent', progress.getAttribute('value'));\n });\n};\nexport const isNumeric = function (str) {\n if (typeof str != 'string')\n return false; // we only process strings!\n return (!isNaN(str) && // use type coercion to parse the _entirety_ of the string (`parseFloat` alone does not do this)...\n !isNaN(parseFloat(str))); // ...and ensure strings of whitespace fail\n};\nexport const zeroPad = (num, places) => String(num).padStart(places, '0');\nexport const ucfirst = (str) => str.charAt(0).toUpperCase() + str.slice(1);\nexport const ucwords = (str) => str\n .split(' ')\n .map((s) => ucfirst(s))\n .join(' ');\nexport const unsnake = (str) => str.replace(/_/g, ' ');\nexport const snake = (str) => str.replace(/ /g, '_');\nexport const safeID = function (str) {\n str = str.toLowerCase();\n str = snake(str);\n str = str.replace(/\\W/g, '');\n return str;\n};\nexport const numberOfDays = function (startDateString, endDateString) {\n const convertStart = startDateString.split('/');\n const convertEnd = endDateString.split('/');\n const dateStart = new Date(convertStart[1] + '/' + convertStart[0] + '/' + convertStart[2]);\n const dateEnd = new Date(convertEnd[1] + '/' + convertEnd[0] + '/' + convertEnd[2]);\n if (dateStart == 'Invalid Date')\n throw 'Start date is not a valid date';\n if (dateEnd == 'Invalid Date')\n throw 'End date is not a valid date';\n // To calculate the time difference of two dates\n const diffTime = dateEnd.getTime() - dateStart.getTime();\n const numberOfDays = diffTime / (1000 * 3600 * 24) + 1;\n if (numberOfDays < 0)\n throw 'The start date should be before the end date';\n return numberOfDays;\n};\n// Used to get values from nested json objects\nexport const resolvePath = (object, path, defaultValue) => path\n // eslint-disable-next-line no-useless-escape\n .split(/[\\.\\[\\]\\'\\\"]/)\n .filter((p) => p)\n .reduce((o, p) => (o ? o[p] : defaultValue), object);\nexport const isTraversable = (o) => Array.isArray(o) || (o !== null && ['function', 'object'].includes(typeof o));\nexport const getSwipeDirection = (touchstartX, touchstartY, touchendX, touchendY) => {\n const limit = Math.tan(((45 * 1.5) / 180) * Math.PI);\n const pageWidth = window.innerWidth || document.body.clientWidth;\n const treshold = Math.max(1, Math.floor(0.01 * pageWidth));\n const x = touchendX - touchstartX;\n const y = touchendY - touchstartY;\n const xy = Math.abs(x / y);\n const yx = Math.abs(y / x);\n if (Math.abs(x) > treshold || Math.abs(y) > treshold) {\n if (yx <= limit) {\n if (x < 0) {\n return 'left';\n }\n else {\n return 'right';\n }\n }\n if (xy <= limit) {\n if (y < 0) {\n return 'top';\n }\n else {\n return 'bottom';\n }\n }\n }\n else {\n return 'tap';\n }\n};\nexport const uniqueID = (index = 1) => {\n const ID = Math.floor(Math.random() * Date.now() * (index + 1));\n return ID;\n};\n","import { uniqueID } from '../../modules/helpers.js';\nwindow.dataLayer = window.dataLayer || [];\nwindow.dataLayer.push({\n event: 'customElementRegistered',\n element: 'action bar',\n});\nfunction setSelectAllInput(element, value) {\n if (element && value == 'all') {\n element.querySelector('input').indeterminate = false;\n element.querySelector('input').checked = true;\n element.querySelector('label').textContent = `Select all`;\n }\n else if (element && value == 0) {\n element.querySelector('input').indeterminate = false;\n element.querySelector('input').checked = false;\n element.querySelector('label').textContent = `Select all`;\n }\n else if (element && value) {\n element.querySelector('input').indeterminate = true;\n element.querySelector('input').checked = false;\n element.querySelector('label').textContent = `${value} item${value > 1 ? 's' : ''} selected`;\n }\n else if (element) {\n element.querySelector('input').checked = false;\n element.querySelector('input').indeterminate = false;\n element.querySelector('label').textContent = `Select all`;\n }\n}\nclass iamActionbar extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n const assetLocation = document.body.hasAttribute('data-assets-location')\n ? document.body.getAttribute('data-assets-location')\n : '/assets';\n const loadCSS = `@import \"${assetLocation}/css/components/actionbar.component.css\";`;\n const loadExtraCSS = `@import \"${assetLocation}/css/components/actionbar.global.css\";`;\n const template = document.createElement('template');\n template.innerHTML = `\n <style>\n ${loadCSS}\n ${this.hasAttribute('css') ? `@import \"${this.getAttribute('css')}\";` : ``}\n </style>\n <link rel=\"stylesheet\" href=\"https://kit.fontawesome.com/26fdbf0179.css\" crossorigin=\"anonymous\">\n <div class=\"actionbar__wrapper\">\n \n <div class=\"actionbar\" part=\"actionbar\">\n <slot name=\"selectall\"></slot>\n <div class=\"safe-area\">\n <slot></slot>\n <div class=\"body\">\n <div class=\"menu__wrapper menu__wrapper --right dialog-overflow d-none show\">\n <button class=\"btn btn-secondary btn-compact btn-sm fa-ellipsis-vertical m-0\" popovertarget=\"overflow\" style=\"anchor-name: --anchor-overflow;\">More actions</button>\n <iam-menu class=\"dialog--list\" part=\"overflow\" id=\"overflow\" style=\"position-anchor: --anchor-overflow;\" popover>\n <slot name=\"overflow\"></slot>\n <slot name=\"menu\"></slot>\n </iam-menu>\n </div>\n\n\n <div class=\"menu__wrapper menu__wrapper --right filter-columns\">\n <button class=\"btn btn-secondary btn-compact btn-sm mb-0 me-0 fa-regular fa-table-columns\" title=\"Select colums\" popovertarget=\"filter\" style=\"anchor-name: --anchor-filter;\">Filter</button>\n <iam-menu class=\"dialog--list\" id=\"filter\" style=\"position-anchor: --anchor-filter;\" popover>\n <div class=\"pb-0 mb-0 checklists\">\n \n </div>\n <div class=\"text-right checklist-btns\"><button id=\"cancelColumns\" class=\"btn btn-action\">Cancel</button><button id=\"saveColumns\" class=\"btn btn-action btn-secondary\">Save</button></div>\n </iam-menu>\n </div>\n\n <button class=\"btn btn-secondary btn-compact btn-sm fa-search\" data-search=\"\" part=\"search-btn\">Search</button>\n </div>\n </div>\n </div>\n <div class=\"actionbar--selected\">\n <div class=\"safe-area\">\n <slot name=\"selected\"></slot>\n <div class=\"body\">\n <div class=\"menu__wrapper menu__wrapper --right dialog-overflow d-none show\">\n <button class=\"btn btn-secondary btn-compact btn-sm fa-ellipsis-vertical m-0\" popovertarget=\"selected-overflow\" style=\"anchor-name: --anchor-selected-overflow;\">More actions</button>\n <iam-menu class=\"dialog--list\" part=\"selected-overflow\" id=\"selected-overflow\" style=\"position-anchor: --anchor-selected-overflow;\" popover>\n <slot name=\"selected-overflow\"></slot>\n </iam-menu>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"actionbar--search\">\n <button data-search class=\"btn btn-compact fa-xmark-large btn-secondary m-0\" >Close</button>\n\n <div class=\"search-wrapper\" part=\"search\">\n <label for=\"search\" class=\"visually-hidden\">Input field label</label>\n <button class=\"suffix\" part=\"search-btn\"><i class=\"fa-regular fa-search\"></i></button>\n <input type=\"text\" id=\"search\" name=\"search\" required=\"\" part=\"search-input\">\n <button class=\"empty btn btn-action\"><i class=\"fa-light fa-times me-0\" aria-hidden=\"true\"></i></button>\n </div>\n\n </div>\n </div>\n <div class=\"no-columns\">\n <span class=\"d-block\">No columns selected</span>\n </div>\n `;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n // insert extra CSS\n if (!document.getElementById('actionbarGlobal'))\n document.head.insertAdjacentHTML('beforeend', `<style id=\"actionbarGlobal\">${loadExtraCSS}</style>`);\n }\n connectedCallback() {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\n const actionbarWrapper = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.actionbar__wrapper');\n const checklistHolder = (_b = this.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.checklists');\n const assetLocation = document.body.hasAttribute('data-assets-location')\n ? document.body.getAttribute('data-assets-location')\n : '/assets';\n if (!window.customElements.get(`iam-menu`)) {\n import(/* @vite-ignore */ `${assetLocation}/js/components/menu/menu.component.js`)\n .then((module) => {\n window.customElements.define(`iam-menu`, module.default);\n })\n .catch((err) => {\n console.log(err.message);\n });\n }\n const dialog = this.querySelector('.dialog__wrapper dialog');\n // Transform dialog into a menu custom element\n if (dialog) {\n const btn = dialog.parentElement.querySelector('.btn');\n const id = `menu${uniqueID(1)}`;\n dialog.setAttribute('id', id);\n dialog.setAttribute('popover', 'auto');\n btn.setAttribute('popovertarget', id);\n dialog.outerHTML = dialog.outerHTML.replace(/<dialog/g, '<iam-menu').replace(/<\\/dialog>/g, '</iam-menu>');\n (_c = dialog.parentElement) === null || _c === void 0 ? void 0 : _c.classList.add('menu__wrapper');\n (_d = dialog.parentElement) === null || _d === void 0 ? void 0 : _d.classList.remove('dialog__wrapper');\n }\n // #region select all\n if (this.hasAttribute('data-selectall')) {\n actionbarWrapper === null || actionbarWrapper === void 0 ? void 0 : actionbarWrapper.insertAdjacentHTML('afterbegin', `<div class=\"selectall pb-0\"><input type=\"checkbox\" name=\"selectall\" id=\"selectall\"><label for=\"selectall\" class=\"m-0\">Select all</label></div>`);\n const selectAll = (_e = this.shadowRoot) === null || _e === void 0 ? void 0 : _e.querySelector('.selectall');\n if (this.hasAttribute('data-selected')) {\n setSelectAllInput(selectAll, this.getAttribute('data-selected'));\n }\n selectAll === null || selectAll === void 0 ? void 0 : selectAll.addEventListener('change', (event) => {\n var _a;\n if (event && event.target instanceof HTMLElement && event.target.closest('input')) {\n if ((_a = event.target.closest('input')) === null || _a === void 0 ? void 0 : _a.checked)\n this.setAttribute('data-selected', 'all');\n else\n this.setAttribute('data-selected', '0');\n }\n });\n const cancelButton = this.querySelector('button[data-cancel]');\n if (cancelButton) {\n cancelButton.addEventListener('click', () => {\n this.setAttribute('data-selected', '0');\n });\n }\n }\n // Wtach div for the select inputs\n if (this.hasAttribute('data-select-watch')) {\n const element = document.getElementById(this.getAttribute('data-select-watch'));\n element === null || element === void 0 ? void 0 : element.setAttribute('data-select-container', 'true');\n Array.from(element.querySelectorAll('input[type=\"checkbox\"]')).forEach((input) => {\n var _a;\n (_a = input.parentElement) === null || _a === void 0 ? void 0 : _a.setAttribute('slot', 'checkbox');\n });\n element === null || element === void 0 ? void 0 : element.addEventListener('change', (event) => {\n if (event && event.target instanceof HTMLElement && event.target.closest('[type=\"checkbox\"]')) {\n const count = element.querySelectorAll('input[type=\"checkbox\"]').length;\n const countChecked = element.querySelectorAll('input[type=\"checkbox\"]:checked').length;\n this.setAttribute('data-selected', count == countChecked ? 'all' : String(countChecked));\n if (countChecked) {\n Array.from(element.querySelectorAll('input[type=\"checkbox\"]')).forEach((input) => {\n var _a;\n if (input.closest('iam-card'))\n (_a = input.closest('iam-card')) === null || _a === void 0 ? void 0 : _a.setAttribute('data-selected', 'true');\n });\n }\n else {\n Array.from(element.querySelectorAll('input[type=\"checkbox\"]')).forEach((input) => {\n var _a;\n if (input.closest('iam-card'))\n (_a = input.closest('iam-card')) === null || _a === void 0 ? void 0 : _a.removeAttribute('data-selected');\n });\n }\n }\n });\n }\n // #endregion\n // #region switchviews\n if (this.hasAttribute('data-switchviews')) {\n let btns = '';\n const viewList = (_f = this.getAttribute('data-switchviews')) === null || _f === void 0 ? void 0 : _f.split(',');\n viewList === null || viewList === void 0 ? void 0 : viewList.forEach((view) => {\n let icon = 'fa-grid-2';\n if (view == 'list')\n icon = 'fa-grip-lines';\n else if (view == 'small')\n icon = 'fa-bars';\n btns += `<button class=\"btn btn-action btn-compact btn-sm mb-0 fa-regular ${icon}\">${view}</button>`;\n });\n actionbarWrapper === null || actionbarWrapper === void 0 ? void 0 : actionbarWrapper.insertAdjacentHTML('afterbegin', `<div class=\"views m-0\">${btns}</div>`);\n const views = (_g = this.shadowRoot) === null || _g === void 0 ? void 0 : _g.querySelector('.views');\n views === null || views === void 0 ? void 0 : views.addEventListener('click', (event) => {\n if (event && event.target instanceof HTMLElement && event.target.closest('.btn-action')) {\n const btn = event.target.closest('.btn-action');\n this.setAttribute('data-view', btn.textContent);\n const switchEvent = new CustomEvent('switch-view', { detail: { view: btn.textContent } });\n this.dispatchEvent(switchEvent);\n }\n });\n }\n // #endregion\n // #region search\n const searchBar = (_h = this.shadowRoot) === null || _h === void 0 ? void 0 : _h.querySelector('.actionbar--search');\n if (this.hasAttribute('data-search-value')) {\n ((_j = this.shadowRoot) === null || _j === void 0 ? void 0 : _j.querySelector('#search')).value = String(this.getAttribute('data-search-value'));\n }\n if (this.hasAttribute('data-search') && this.getAttribute('data-search') == 'show')\n searchBar === null || searchBar === void 0 ? void 0 : searchBar.classList.add('show');\n const searchBtn = this.shadowRoot.querySelector('button[data-search]');\n this.shadowRoot.addEventListener('click', (event) => {\n if (event && event.target instanceof HTMLElement && event.target.closest('button[data-search]')) {\n searchBar.classList.toggle('show');\n searchBtn.toggleAttribute('aria-expanded');\n }\n });\n searchBar.addEventListener('keyup', () => {\n const keyupEvent = new CustomEvent('search-keyup', {\n detail: { search: searchBar.querySelector('input').value },\n });\n this.dispatchEvent(keyupEvent);\n });\n searchBar.addEventListener('change', () => {\n const changeEvent = new CustomEvent('search-change', {\n detail: { search: searchBar.querySelector('input').value },\n });\n this.dispatchEvent(changeEvent);\n });\n searchBar.addEventListener('click', (event) => {\n if (event && event.target instanceof HTMLElement && event.target.closest('button.suffix')) {\n const submitEvent = new CustomEvent('search-submit', {\n detail: { search: searchBar.querySelector('input').value },\n });\n this.dispatchEvent(submitEvent);\n }\n });\n const clearBtn = searchBar.querySelector('.empty');\n const searchInput = searchBar.querySelector('#search');\n clearBtn.addEventListener('click', function (e) {\n searchInput.removeAttribute('placeholder');\n searchInput.removeAttribute('data-value');\n searchInput.value = '';\n });\n // #endregion\n // #region Reponsive safe area\n const hideButtons = () => {\n const wrapperWidth = actionbarWrapper.scrollWidth;\n const screenWidth = document.documentElement.scrollWidth;\n let safeAreaWidth = 750;\n let elementMargin = 16;\n let tabletSafeWidth = 450;\n let mobileSafeWidth = (this === null || this === void 0 ? void 0 : this.hasAttribute('data-switchviews')) ? 144 : 210;\n if (this.hasAttribute('data-large-safe-area')) {\n safeAreaWidth = 1048;\n tabletSafeWidth = 620;\n mobileSafeWidth = 260;\n }\n // We need to modify the widths to mimic the CSS's scaling functionality\n let modifier = 1;\n if (screenWidth >= 992 && screenWidth <= 1280) {\n modifier = screenWidth / 1280;\n }\n else if (screenWidth >= 576 && screenWidth < 992) {\n modifier = screenWidth / 768;\n }\n else if (screenWidth < 576) {\n modifier = screenWidth / 375;\n }\n // Work out the safe sapce width depending upon the wrappers width and modifier comp\n if (wrapperWidth >= 992 && wrapperWidth <= 1280) {\n safeAreaWidth = safeAreaWidth * modifier;\n }\n else if (wrapperWidth >= 576 && wrapperWidth < 992) {\n safeAreaWidth = tabletSafeWidth * modifier;\n }\n else if (wrapperWidth < 576) {\n safeAreaWidth = mobileSafeWidth * modifier;\n }\n // Margin in between elements\n elementMargin = elementMargin * modifier;\n // If the wrapper width is small we want to reduce the btn sizes by adding or removing btn-compact classes\n if (wrapperWidth < 576) {\n Array.from(this.querySelectorAll(':scope > .btn:not(.js-updated), :scope > .menu__wrapper > .btn[class*=\"fa-\"]:first-child:not(.js-updated)')).forEach((element) => {\n element.className = element.className.replace(' btn-compact', ' _btn-compact');\n element.classList.add('btn-compact');\n element.classList.add('js-updated');\n });\n }\n else {\n Array.from(this.querySelectorAll(':scope > .btn.js-updated, :scope > .menu__wrapper > .btn.js-updated:first-child')).forEach((element) => {\n element.classList.remove('btn-compact');\n element.classList.remove('js-updated');\n element.className = element.className.replace(' _btn-compact', ' btn-compact');\n });\n }\n // Reset the elements before we decide what elements become slotted into the overflow\n Array.from(this.querySelectorAll('[slot]')).forEach((element) => {\n if (element.getAttribute('slot') == 'overflow')\n element.removeAttribute('slot');\n if (element.getAttribute('slot') == 'selected-overflow')\n element.setAttribute('slot', 'selected');\n });\n Array.from(this.querySelectorAll('.show')).forEach((element) => {\n element.classList.remove('show');\n });\n // Foreach safe area lets check what elements are slotted in them and if they need an overflow\n Array.from(this.shadowRoot.querySelectorAll('.safe-area')).forEach((element) => {\n var _a, _b, _c;\n // Decide on which overflow slot to use\n let overflowSlot = 'overflow';\n if (((_a = element.querySelector('slot')) === null || _a === void 0 ? void 0 : _a.hasAttribute('name')) &&\n ((_b = element.querySelector('slot')) === null || _b === void 0 ? void 0 : _b.getAttribute('name')) == 'selected')\n overflowSlot = 'selected-overflow';\n // Get the slotted elements, remember they aren't children of the safe area\n const elements = (_c = element.querySelector('slot')) === null || _c === void 0 ? void 0 : _c.assignedElements();\n let tempWidth = 44 * modifier; // Allow space for the overflow button\n // If search then allow for the search button width\n if (this.hasAttribute('data-search'))\n tempWidth += 44 * modifier;\n // Foreach element this isn't an action button or dialog wrapper add to the width, these will not be moved into the overflow slot\n for (let i = 0; i < elements.length; i++) {\n if (!elements[i].classList.contains('btn-action') && !elements[i].classList.contains('menu__wrapper ')) {\n tempWidth += elements[i].offsetWidth;\n tempWidth += elementMargin;\n }\n }\n // Foreach dialog wrapper decide if safe in safe area or move into the overflow slot, dialog wrappers have priority over the action buttons\n for (let i = 0; i < elements.length; i++) {\n if (elements[i].classList.contains('menu__wrapper ')) {\n elements[i].classList.add('show');\n tempWidth += elements[i].offsetWidth;\n tempWidth += elementMargin / 2;\n // If we have exceeded the safe area then lets break the loop\n if (tempWidth - elementMargin / 2 > safeAreaWidth) {\n elements[i].classList.remove('show');\n break;\n }\n }\n }\n // Foreach action button\n for (let i = 0; i < elements.length; i++) {\n if (elements[i].classList.contains('btn-action')) {\n elements[i].classList.add('show');\n tempWidth += elements[i].offsetWidth;\n tempWidth += elementMargin / 2;\n // If we have exceeded the safe area then lets break the loop\n if (tempWidth - elementMargin / 2 > safeAreaWidth) {\n elements[i].classList.remove('show');\n break;\n }\n }\n }\n const overflowDialog = element.querySelector('.dialog-overflow');\n if (overflowDialog)\n overflowDialog.classList.add('d-none');\n // Decide which elements go into the overflow slot\n for (let i = 0; i < elements.length; i++) {\n if (elements[i].classList.contains('btn-action') || elements[i].classList.contains('menu__wrapper ')) {\n if (!elements[i].classList.contains('show')) {\n // Move to the slot by changing the attribute\n elements[i].setAttribute('slot', overflowSlot);\n // if an element has been added to overflow slot then make sure we show the overflow menu button\n if (overflowDialog)\n overflowDialog.classList.remove('d-none');\n }\n }\n }\n });\n };\n // Check buttons on load and when the wrapper element gets resized.\n hideButtons();\n new ResizeObserver(hideButtons).observe(actionbarWrapper);\n // #endregion\n // #region cloumn filters\n const setColumnFilters = () => {\n let columnsHidden = '';\n Array.from(checklistHolder === null || checklistHolder === void 0 ? void 0 : checklistHolder.querySelectorAll('label input')).forEach((element, index) => {\n columnsHidden += this.hasAttribute(`data-hide-col${index + 1}`) ? `${index + 1},` : '';\n });\n this.setAttribute('data-columns-shown', checklistHolder.querySelectorAll('input:checked').length);\n const dispatchedEvent = new CustomEvent('columm-filters-set', {\n detail: {\n columnsHidden: columnsHidden.slice(0, -1),\n },\n });\n this.dispatchEvent(dispatchedEvent);\n };\n if (this.hasAttribute('data-filter-columns') || this.hasAttribute('data-filter-columns-save')) {\n const columns = this.closest('iam-table').querySelectorAll('thead th');\n Array.from(columns).forEach((element, index) => {\n if (element.textContent) {\n checklistHolder === null || checklistHolder === void 0 ? void 0 : checklistHolder.insertAdjacentHTML('beforeend', `<label class=\"m-0\" title=\"Change the display of \"><input name=\"hideCol${index + 1}\" value=\"${index + 1}\" type=\"checkbox\" ${this.hasAttribute('data-hide-col' + (index + 1)) ? '' : 'checked'} /> ${element.textContent}</label>`);\n }\n });\n }\n this.setAttribute('data-columns-shown', checklistHolder.querySelectorAll('input:checked').length);\n if (this.hasAttribute('data-filter-columns') && !this.hasAttribute('data-filter-columns-save')) {\n checklistHolder === null || checklistHolder === void 0 ? void 0 : checklistHolder.addEventListener('change', (event) => {\n if (event && event.target instanceof HTMLElement && event.target.closest('input')) {\n const checkbox = event.target.closest('input');\n if ((checkbox === null || checkbox === void 0 ? void 0 : checkbox.checked) == false) {\n this.setAttribute('data-hide-col' + (checkbox === null || checkbox === void 0 ? void 0 : checkbox.value), 'true');\n }\n else {\n this.removeAttribute('data-hide-col' + (checkbox === null || checkbox === void 0 ? void 0 : checkbox.value));\n }\n setColumnFilters();\n }\n });\n }\n if (this.hasAttribute('data-filter-columns-save')) {\n const checklistHolder = (_k = this.shadowRoot) === null || _k === void 0 ? void 0 : _k.querySelector('.checklists');\n const checklistSave = (_l = this.shadowRoot) === null || _l === void 0 ? void 0 : _l.querySelector('#saveColumns');\n const checklistCancel = (_m = this.shadowRoot) === null || _m === void 0 ? void 0 : _m.querySelector('#cancelColumns');\n checklistSave === null || checklistSave === void 0 ? void 0 : checklistSave.addEventListener('click', (event) => {\n var _a;\n Array.from(checklistHolder === null || checklistHolder === void 0 ? void 0 : checklistHolder.querySelectorAll('label input')).forEach((checkbox) => {\n if ((checkbox === null || checkbox === void 0 ? void 0 : checkbox.checked) == false) {\n this.setAttribute('data-hide-col' + (checkbox === null || checkbox === void 0 ? void 0 : checkbox.value), 'true');\n }\n else {\n this.removeAttribute('data-hide-col' + (checkbox === null || checkbox === void 0 ? void 0 : checkbox.value));\n }\n });\n setColumnFilters();\n (_a = checklistSave.closest('dialog')) === null || _a === void 0 ? void 0 : _a.close();\n });\n // Revert back to what was previously saved\n checklistCancel === null || checklistCancel === void 0 ? void 0 : checklistCancel.addEventListener('click', (event) => {\n var _a, _b;\n const checklistHolder = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.checklists');\n Array.from(checklistHolder === null || checklistHolder === void 0 ? void 0 : checklistHolder.querySelectorAll('label input')).forEach((element, index) => {\n element.checked = this.hasAttribute(`data-hide-col${index + 1}`) ? false : true;\n });\n setColumnFilters();\n (_b = checklistSave.closest('dialog')) === null || _b === void 0 ? void 0 : _b.close();\n });\n }\n // #endregion\n }\n static get observedAttributes() {\n return ['data-selected'];\n }\n attributeChangedCallback(attrName, oldVal, newVal) {\n switch (attrName) {\n case 'data-selected': {\n const selectAll = this.shadowRoot.querySelector('.selectall');\n if (selectAll)\n setSelectAllInput(selectAll, newVal);\n const event = new CustomEvent('selected', { detail: { selected: newVal } });\n this.dispatchEvent(event);\n if (newVal == 'all' && this.hasAttribute('data-select-watch')) {\n const element = document.getElementById(String(this.getAttribute('data-select-watch')));\n Array.from(element.querySelectorAll('input[type=\"checkbox\"]')).forEach((input) => {\n var _a;\n input.checked = true;\n if (input.closest('iam-card'))\n (_a = input.closest('iam-card')) === null || _a === void 0 ? void 0 : _a.setAttribute('data-selected', 'true');\n });\n }\n if (newVal == '0' && this.hasAttribute('data-select-watch')) {\n const element = document.getElementById(String(this.getAttribute('data-select-watch')));\n Array.from(element.querySelectorAll('input[type=\"checkbox\"]')).forEach((input) => {\n var _a;\n input.checked = false;\n if (input.closest('iam-card'))\n (_a = input.closest('iam-card')) === null || _a === void 0 ? void 0 : _a.removeAttribute('data-selected');\n });\n }\n break;\n }\n }\n }\n}\nexport default iamActionbar;\n"],"names":["uniqueID","index","setSelectAllInput","element","value","iamActionbar","template","_a","_b","_c","_d","_e","_f","_g","_h","_j","_k","_l","_m","actionbarWrapper","checklistHolder","assetLocation","module","err","dialog","btn","id","selectAll","event","cancelButton","input","count","countChecked","btns","viewList","view","icon","views","switchEvent","searchBar","searchBtn","keyupEvent","changeEvent","submitEvent","clearBtn","searchInput","e","hideButtons","wrapperWidth","screenWidth","safeAreaWidth","elementMargin","tabletSafeWidth","mobileSafeWidth","modifier","overflowSlot","elements","tempWidth","i","overflowDialog","setColumnFilters","columnsHidden","dispatchedEvent","columns","checkbox","checklistSave","checklistCancel","attrName","oldVal","newVal"],"mappings":"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"}
@@ -28,10 +28,8 @@ class iamAddressLookup extends HTMLElement {
28
28
  const template = document.createElement('template');
29
29
  template.innerHTML = `
30
30
  <style>
31
- @import "${coreCSS}";
32
31
  ${loadCSS}
33
32
 
34
- ${this.hasAttribute('css') ? `@import "${this.getAttribute('css')}";` : ``}
35
33
  </style>
36
34
  <link rel="stylesheet" href="https://kit.fontawesome.com/26fdbf0179.css" crossorigin="anonymous" />
37
35
  <div class="wrapper">
@@ -40,25 +38,25 @@ class iamAddressLookup extends HTMLElement {
40
38
  <div>
41
39
  <label class="mb-2">Search <span class="title text-lowercase"></span> <span class="optional">(Optional)</span>
42
40
  <span>
43
- <input type="text" name="postcode" list="address-lookup__addressess" autocomplete="off" aria-autocomplete="none" placeholder="Postcode" />
44
- <span class="suffix fa-regular fa-search"></span>
41
+ <input type="text" name="postcode" list="address-lookup__addressess" autocomplete="off" aria-autocomplete="none" placeholder="Postcode" part="input" />
42
+ <span class="suffix fa-regular fa-search" part="suffix"></span>
45
43
  </span>
46
44
  <span class="invalid-feedback">Required Adddress fields missing</span>
47
45
  </label>
48
46
 
49
47
  </div>
50
- <button class="btn btn-tertiary switch-to-manual-btn" type="button">Or enter address manually</button>
48
+ <button class="btn btn-tertiary switch-to-manual-btn" type="button" part="button">Or enter address manually</button>
51
49
  </div>
52
50
  <datalist id="address-lookup__addressess"></datalist>
53
51
 
54
52
  <div class="manual-address pb-2 js-hide">
55
- <slot></slot>
56
- <button class="btn btn-tertiary switch-to-lookup-btn" type="button">Use postcode lookup</button>
53
+ <slot part="contents"></slot>
54
+ <button class="btn btn-tertiary switch-to-lookup-btn" type="button" part="button">Use postcode lookup</button>
57
55
  <slot name="after"></slot>
58
56
  </div>
59
57
  <div class="pre-filled pb-2 js-hide">
60
58
  <strong class="title text-primary d-block"></strong>
61
- <p><span class="pre-filled-address"></span><button class="text-primary text-decoration-none ms-1 cursor-pointer" type="button"><i class="fa-regular fa-pen-to-square"></i><span class="visually-hidden">Edit</span></button><slot name="prefilled"></slot></p>
59
+ <p><span class="pre-filled-address"></span><button class="text-primary text-decoration-none ms-1 cursor-pointer" type="button" part="edit-button"><i class="fa-regular fa-pen-to-square"></i> <span class="visually-hidden">Edit</span></button><slot name="prefilled"></slot></p>
62
60
  </div>
63
61
  </div>
64
62
  `;
@@ -1,13 +1,11 @@
1
1
  /*!
2
- * iamKey v7.4.0
2
+ * iamKey v7.5.0
3
3
  * Copyright 2022-2025 iamproperty
4
- */import g from"js-cookie";var $=function(L,o,r,a){function u(d){return d instanceof r?d:new r(function(h){h(d)})}return new(r||(r=Promise))(function(d,h){function b(n){try{m(a.next(n))}catch(f){h(f)}}function v(n){try{m(a.throw(n))}catch(f){h(f)}}function m(n){n.done?d(n.value):u(n.value).then(b,v)}m((a=a.apply(L,o||[])).next())})};window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:"Address Lookup"});class j extends HTMLElement{constructor(){var o;super(),this.attachShadow({mode:"open"});const r=document.body.hasAttribute("data-assets-location")?document.body.getAttribute("data-assets-location"):"/assets",a=document.body.hasAttribute("data-core-css")?document.body.getAttribute("data-core-css"):`${r}/css/core.min.css`,u=document.createElement("template");u.innerHTML=`
4
+ */import A from"js-cookie";var L=function(w,a,r,t){function u(c){return c instanceof r?c:new r(function(m){m(c)})}return new(r||(r=Promise))(function(c,m){function g(l){try{h(t.next(l))}catch(b){m(b)}}function v(l){try{h(t.throw(l))}catch(b){m(b)}}function h(l){l.done?c(l.value):u(l.value).then(g,v)}h((t=t.apply(w,a||[])).next())})};window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:"Address Lookup"});class q extends HTMLElement{constructor(){var a;super(),this.attachShadow({mode:"open"});const r=document.body.hasAttribute("data-assets-location")?document.body.getAttribute("data-assets-location"):"/assets";document.body.hasAttribute("data-core-css")?document.body.getAttribute("data-core-css"):`${r}`;const t=document.createElement("template");t.innerHTML=`
5
5
  <style>
6
- @import "${a}";
7
- .js-hide{display:none !important}:host{margin-bottom:1rem;display:block}input[name=postcode]{border-color:var(--error-border, var(--colour-primary)) !important}:is([name=postcode]):is(:focus,.focus):not(:disabled){border-color:var(--colour-info) !important}div:has(input[name=postcode]) .suffix{border-color:var(--error-border, var(--colour-primary)) !important}.invalid-feedback{display:var(--error-display, none) !important}.optional{display:var(--req-display, inline-block) !important}.pre-filled p{padding-bottom:1rem}.pre-filled button{border:none;background:none;cursor:pointer}/*# sourceMappingURL=assets/css/components/address-lookup.css.map */
6
+ @layer elements{label{display:inline-block}input,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}select{text-transform:none}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none !important}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}:is(label:not(.tag),.label){font-size:1.125rem;line-height:1.3125rem;margin-bottom:0.5rem;font-weight:normal;color:var(--colour-heading);display:block}:is(label:not(.tag),.label):has(+input:not(:disabled):not([readonly]):not(:required):not([type=radio]):not([type=checkbox]):not([type=file])):after{content:" (Optional)"}:is(label:not(.tag),.label):has(input:not(:disabled):not([readonly]):not(:required):not([type=radio]):not([type=checkbox]):not([type=file])) .optional-text:before{content:" (Optional)"}:is(input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=range]),textarea,output,select:not(.select--minimal,.btn)){display:block;width:100%;display:block;width:100%;padding:var(--input-padding-block, 0.75rem) var(--input-padding-inline, 1rem);font-size:var(--input-fs, 1rem);line-height:var(--input-lh, 1.25rem);color:var(--colour-heading);background-color:var(--colour-canvas-2);background-clip:padding-box;border:2px solid var(--colour-primary);appearance:none;border-radius:0.5rem;margin-bottom:1.5rem;min-height:calc(var(--input-padding-block, 0.75rem) + var(--input-padding-block, 0.75rem) + var(--input-lh, 1.25rem) + 4px);max-height:calc(var(--input-padding-block, 0.75rem) + var(--input-padding-block, 0.75rem) + var(--input-lh, 1.25rem) + 4px)}:is(input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=range]),textarea,output,select:not(.select--minimal,.btn)):is(textarea){max-height:100%}:is(input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=range]),textarea,output,select:not(.select--minimal,.btn)):is(:focus,.focus):not(:disabled){border-color:var(--colour-info);outline:0}:is(input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=range]),textarea,output,select:not(.select--minimal,.btn)):is(:focus,.focus):not(:disabled):not(:invalid){box-shadow:0 0 0 .1rem rgba(30,190,230,.25)}:is(input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=range]),textarea,output,select:not(.select--minimal,.btn))::-webkit-date-and-time-value{height:1.5em}:is(input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=range]),textarea,output,select:not(.select--minimal,.btn)):disabled{background-color:#ccd6d8;opacity:.4;cursor:not-allowed}:is(input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=range])){max-width:var(--input-max-width, 50rem)}textarea{--textarea-height-scale: 3;min-height:calc(var(--input-padding-block, 0.75rem) + var(--input-padding-block, 0.75rem) + var(--input-lh, 1.25rem)*var(--textarea-height-scale) + 4px) !important}fieldset{width:100%}legend{font-family:var(--font-heading);font-style:normal;font-weight:var(--heading-weight);line-height:2rem;color:var(--colour-heading);margin:0;clear:both;display:block;float:none;font-size:round(var(--body-fs, 1rem)*pow(var(--type-scale),2),.25rem);line-height:round(up,1em*var(--type-scale),.25rem);padding-bottom:.5rem;max-width:var(--content-max-width);min-width:100%}div:has(>label:first-child):has(>input){position:relative;max-width:var(--input-max-width, 50rem);margin-bottom:1.5rem}div:has(>label:first-child):has(>input) input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=range]),div:has(>label:first-child):has(>input) output,div:has(>label:first-child):has(>input) .prefix,div:has(>label:first-child):has(>input) .suffix{margin-bottom:0 !important}div:has(>label:first-child):has(>input){display:flex;flex-wrap:wrap;align-items:center}div:has(>label:first-child):has(>input)>*:not(input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=range])):not(output):not(.prefix):not(.suffix){flex-shrink:0;width:100%}div:has(>label:first-child):has(>input) :is(input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=range]),textarea,output){flex-shrink:1;flex-grow:1;width:0}div:has(>label:first-child):has(>input) input~*:not(output){order:5;margin-top:0.5rem}input[type=color]{width:3rem !important;flex-shrink:0 !important;flex-grow:0 !important;border-start-end-radius:0 !important;border-end-end-radius:0 !important;padding:0 !important;overflow:hidden;cursor:pointer !important}input[type=color]::-moz-color-swatch{border-radius:0;border:none}input[type=color]::-webkit-color-swatch{border-radius:0;border:none}label :is(div,span,fieldset):has(input[type=color]+output){display:flex}input[type=color]+output{border-left:none !important;border-end-start-radius:0 !important;border-start-start-radius:0 !important;margin:0 !important}output{margin-top:.5rem !important;margin-bottom:0 !important}div:has(>:is(.form-control-sm,.input--sm)){--input-fs: 0.875rem;--input-lh: 1rem;--input-padding-block: 0.625rem;--input-padding-inline: 0.875rem}div:has(>:is(.form-control-lg,.input--sm)){--input-fs: 1.5rem;--input-lh: 1.8125rem;--input-padding-block: 1.25rem;--input-padding-inline: 1.375rem}div:has(>label:first-child):has(>input):has(>:is(.form-control-inline,.input--inline)) label{flex-shrink:0;white-space:nowrap;width:fit-content !important;margin:0;margin-inline-end:1rem}*:has(>input[readonly]){position:relative;max-width:var(--input-max-width, 50rem)}*:has(>input[readonly]):after{font-family:"Font Awesome 6 Pro";font-weight:300;content:"\uF023";position:absolute;font-size:var(--input-lh, 1.25rem);height:var(--input-lh, 1.25rem);width:var(--input-lh, 1.25rem);bottom:calc(var(--input-padding-block, 0.75rem) + 2px);right:calc(var(--input-padding-block, 1rem) + 2px);text-align:center}:is(.prefix,.suffix){display:none;pointer-events:none}@supports selector(:has(*)){:is(.prefix,.suffix){display:inline-block;width:auto;padding:var(--input-padding-block, 0.75rem) var(--input-padding-block, 1rem);font-size:var(--input-fs, 1rem);line-height:var(--input-lh, 1.25rem);color:var(--colour-body);background-color:var(--colour-primary-theme);border:2px solid var(--colour-primary);color:var(--colour-white);margin-top:0 !important;margin-bottom:1rem;border-end-start-radius:0.5rem;border-start-start-radius:0.5rem;min-width:calc(2.75rem + 4px);overflow:hidden;white-space:nowrap;text-align:center;text-overflow:ellipsis;position:relative;min-height:calc(var(--input-padding-block, 0.75rem) + var(--input-padding-block, 0.75rem) + var(--input-lh, 1.25rem) + 4px);max-height:calc(var(--input-padding-block, 0.75rem) + var(--input-padding-block, 0.75rem) + var(--input-lh, 1.25rem) + 4px);flex-shrink:0}:is(.prefix,.suffix):after{display:inline-block;max-width:1.25rem}:is(.prefix,.suffix)[class*=fa-]{width:calc(2.75rem + 4px);padding-inline:0}:is(.prefix,.suffix) select{position:absolute;inset:0;opacity:0;cursor:pointer}:is(.prefix,.suffix) span{display:none}:is(.prefix,.suffix) select:has(option:nth-child(1):checked)~span:nth-of-type(1),:is(.prefix,.suffix) select:has(option:nth-child(2):checked)~span:nth-of-type(2),:is(.prefix,.suffix) select:has(option:nth-child(3):checked)~span:nth-of-type(3),:is(.prefix,.suffix) select:has(option:nth-child(4):checked)~span:nth-of-type(4),:is(.prefix,.suffix) select:has(option:nth-child(5):checked)~span:nth-of-type(5),:is(.prefix,.suffix) select:has(option:nth-child(6):checked)~span:nth-of-type(6),:is(.prefix,.suffix) select:has(option:nth-child(7):checked)~span:nth-of-type(7),:is(.prefix,.suffix) select:has(option:nth-child(8):checked)~span:nth-of-type(8),:is(.prefix,.suffix) select:has(option:nth-child(9):checked)~span:nth-of-type(9),:is(.prefix,.suffix) select:has(option:nth-child(10):checked)~span:nth-of-type(10){display:block}:is(.prefix,.suffix) select~span:after{content:" \uF078";font-family:"Font Awesome 6 Pro";font-size:.8em;display:inline-block;padding-left:1em}:is(.prefix,.suffix) select:focus-visible~span:after{content:"\uF077"}.prefix{border-right:none}.suffix{border-left:none;border-end-start-radius:0;border-start-start-radius:0;border-start-end-radius:0.5rem !important;border-end-end-radius:0.5rem !important;order:2}.prefix span{display:none}.prefix span small{font-size:.8em}.prefix~:is(input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=range]),textarea,output){border-end-start-radius:0 !important;border-start-start-radius:0 !important}.suffix~:is(input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=range]):not([type=date]):not([type=time]),textarea,output),:is(input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=range]):not([type=date]):not([type=time]),textarea,output):has(~.suffix){order:1;border-start-end-radius:0 !important;border-end-end-radius:0 !important}}.was-validated *:not(button):is(:invalid,.is-invalid,[aria-invalid]):not(.is-valid)+label,.was-validated label:has(*:not(button):is(:invalid,.is-invalid,[aria-invalid]):not(.is-valid)){--colour-check-border: var(--colour-danger);--colour-check-bg: #fcebec;border-color:var(--colour-danger)}.was-validated *:not(button):is(:invalid,.is-invalid,[aria-invalid],:-internal-autofill-selected){border-color:var(--colour-danger) !important}.was-validated select:not(.btn):is(:invalid,.is-invalid,[aria-invalid],:-internal-autofill-selected){background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m2 5 6 6 6-6'/%3e%3c/svg%3e") right var(--input-padding-block, 0.75rem) top var(--input-padding-block, 0.75rem)/var(--input-lh, 1.25rem) var(--input-lh, 1.25rem) no-repeat,linear-gradient(to left, var(--colour-primary-theme), var(--colour-primary-theme) 100%) right top/calc(var(--input-padding-block, 0.75rem) + var(--input-padding-block, 0.75rem) + var(--input-lh, 1.25rem)) calc(var(--input-padding-block, 0.75rem) + var(--input-padding-block, 0.8rem) + var(--input-lh, 1.25rem)) no-repeat,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3e%3c!--! Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license %28Commercial License%29 Copyright 2023 Fonticons, Inc. --%3e%3cpath d='M256 32a224 224 0 1 1 0 448 224 224 0 1 1 0-448zm0 480A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-384c-8.8 0-16 7.2-16 16V272c0 8.8 7.2 16 16 16s16-7.2 16-16V144c0-8.8-7.2-16-16-16zm24 224a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z' fill='%23dc3545'/%3e%3c/svg%3e") right var(--input-padding-block, 3.5rem) top var(--input-padding-block, 0.75rem)/var(--input-lh, 1.25rem) var(--input-lh, 1.25rem) no-repeat;padding-right:6rem !important}.was-validated input:is(:invalid,.is-invalid,[aria-invalid],:-internal-autofill-selected){background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3e%3c!--! Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license %28Commercial License%29 Copyright 2023 Fonticons, Inc. --%3e%3cpath d='M256 32a224 224 0 1 1 0 448 224 224 0 1 1 0-448zm0 480A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-384c-8.8 0-16 7.2-16 16V272c0 8.8 7.2 16 16 16s16-7.2 16-16V144c0-8.8-7.2-16-16-16zm24 224a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z' fill='%23dc3545'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right var(--input-padding-inline, 1rem) center;background-size:var(--input-lh, 1.25rem) var(--input-lh, 1.25rem);padding-right:calc(var(--input-lh, 1.25rem) + var(--input-padding-inline, 1rem) + var(--input-padding-inline, 1rem)) !important}.was-validated *:not(button):is(:valid,.is-valid):not(.is-invalid){border-color:var(--colour-complete)}.was-validated input:is(:valid,.is-valid):not(:is(:invalid,.is-invalid)){background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3e%3c!--! Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license %28Commercial License%29 Copyright 2023 Fonticons, Inc. --%3e%3cpath d='M441 103c9.4 9.4 9.4 24.6 0 33.9L177 401c-9.4 9.4-24.6 9.4-33.9 0L7 265c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l119 119L407 103c9.4-9.4 24.6-9.4 33.9 0z' fill='%230f9d58' /%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right var(--input-padding-inline, 1rem) center;background-size:var(--input-lh, 1.25rem) var(--input-lh, 1.25rem);padding-right:calc(var(--input-lh, 1.25rem) + var(--input-padding-inline, 1rem) + var(--input-padding-inline, 1rem)) !important}.invalid-feedback{color:var(--colour-danger);margin-top:0.5rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3e%3c!--! Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license %28Commercial License%29 Copyright 2023 Fonticons, Inc. --%3e%3cpath d='M256 32a224 224 0 1 1 0 448 224 224 0 1 1 0-448zm0 480A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-384c-8.8 0-16 7.2-16 16V272c0 8.8 7.2 16 16 16s16-7.2 16-16V144c0-8.8-7.2-16-16-16zm24 224a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z' fill='%23dc3545'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:left top 1px;background-size:var(--input-fs, 1rem) var(--input-fs, 1rem);padding-left:calc(var(--input-fs, 1rem) + 0.5rem);display:none}iam-address-lookup:has([required]){--req-display: none}.was-validated :is(:invalid,.is-invalid)~.invalid-feedback{display:block}.was-validated iam-address-lookup:has([required]:invalid){--error-border: var(--colour-danger);--error-display: block}.pwd-checker{display:block;background-repeat:no-repeat !important;background-position:left center;background-size:1em 1em;padding-left:1.5rem !important}.pwd-checker.invalid-feedback{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3e%3c!--! Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license %28Commercial License%29 Copyright 2023 Fonticons, Inc. --%3e%3cpath d='M256 32a224 224 0 1 1 0 448 224 224 0 1 1 0-448zm0 480A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-384c-8.8 0-16 7.2-16 16V272c0 8.8 7.2 16 16 16s16-7.2 16-16V144c0-8.8-7.2-16-16-16zm24 224a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z' fill='%23dc3545'/%3e%3c/svg%3e")}.pwd-checker:not(.invalid-feedback){background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3e%3c!--! Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license %28Commercial License%29 Copyright 2023 Fonticons, Inc. --%3e%3cpath d='M441 103c9.4 9.4 9.4 24.6 0 33.9L177 401c-9.4 9.4-24.6 9.4-33.9 0L7 265c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l119 119L407 103c9.4-9.4 24.6-9.4 33.9 0z' fill='%230f9d58' /%3e%3c/svg%3e") !important}label:has(.pwd-checker.invalid-feedback):after{display:none !important}@supports selector(:has(*)){input:is([type=radio],[type=checkbox]){position:absolute;top:0;left:0;opacity:0;height:0;width:0;margin:0;pointer-events:none}:is(div,fieldset,label:not(.tag)):has(>input:is([type=radio],[type=checkbox])):not(:has(label input)){position:relative;margin-bottom:1.5rem}:is(div,fieldset,label:not(.tag)):has(>input[type=radio]){--border-radius: 50%;--outline-width: 0.5rem}:is(div,fieldset,label:not(.tag)):has(>input[type=checkbox]){--border-radius: 0.25rem;--outline-width: 0.25rem}input:is([type=radio],[type=checkbox])+label:not(:has(>iam-card)),label:not(.tag):has(input:is([type=radio],[type=checkbox])):not(:has(>iam-card)){--tick-colour: transparent;color:var(--colour-heading);position:relative;font-size:1rem;line-height:1.25rem;padding-left:2.5rem;padding-top:0.625rem;padding-bottom:0.625rem;margin-bottom:1.5rem;margin-right:1.5rem;cursor:pointer}input:is([type=radio],[type=checkbox])+label:not(:has(>iam-card)):has(+span),label:not(.tag):has(input:is([type=radio],[type=checkbox])):not(:has(>iam-card)):has(+span){margin-bottom:0}input:is([type=radio],[type=checkbox])+label:not(:has(>iam-card)):has(+input),label:not(.tag):has(input:is([type=radio],[type=checkbox])):not(:has(>iam-card)):has(+input){margin-bottom:0}input:is([type=radio],[type=checkbox])+label:not(:has(>iam-card)):last-child,label:not(.tag):has(input:is([type=radio],[type=checkbox])):not(:has(>iam-card)):last-child{margin-bottom:0}input:is([type=radio],[type=checkbox])+label:not(:has(>iam-card)):before,label:not(.tag):has(input:is([type=radio],[type=checkbox])):not(:has(>iam-card)):before{content:"";border:2px solid var(--colour-check-border, var(--colour-primary));background:var(--colour-check-bg, transparent);border-radius:var(--border-radius);height:var(--radio-size, 1.5rem);width:var(--radio-size, 1.5rem);display:inline-block;position:absolute;top:0.5rem;left:var(--outline-width)}input:is([type=radio],[type=checkbox])+label:not(:has(>iam-card)).btn:before,label:not(.tag):has(input:is([type=radio],[type=checkbox])):not(:has(>iam-card)).btn:before{opacity:0}input[type=radio]+label:not(:has(>iam-card)):after,label:not(.tag):has(input[type=radio]):not(:has(>iam-card)):after{content:"" !important;background:var(--colour-info);border-radius:var(--border-radius);height:0.875rem;width:0.875rem;height:var(--radio-inner-size, 0.875rem);width:var(--radio-inner-size, 0.875rem);display:none;position:absolute;top:var(--radio-inner-top, 0.8125rem);left:var(--radio-inner-left, calc(0.3125rem + var(--outline-width)))}input[type=radio]+label:not(:has(>iam-card)).radio--tick:before,label:not(.tag):has(input[type=radio]):not(:has(>iam-card)).radio--tick:before{content:"\uF00C";position:absolute;font-size:1.5em;line-height:1;color:var(--tick-colour);font-family:"Font Awesome 6 Pro";background:none !important;border:none !important;outline:none !important;left:.25rem}input[type=radio]+label:not(:has(>iam-card)).radio--tick:after,label:not(.tag):has(input[type=radio]):not(:has(>iam-card)).radio--tick:after{display:none}@media(forced-colors: active){input:is([type=radio],[type=checkbox]):not(:checked)+label.radio--tick:not(:has(>iam-card)):before,label:has(input:is([type=radio],[type=checkbox]):not(:checked)).radio--tick:not(:has(>iam-card)):before{display:none}}:is(div,fieldset):has(>:is(input[type=radio],input[type=checkbox]):nth-of-type(2)) label:not(.tag):not(:has(>iam-card)){margin-bottom:0rem}input:is([type=radio],[type=checkbox]):checked+label,label:not(.tag):has(input:is([type=radio],[type=checkbox]):checked){--tick-colour: var(--colour-info)}input:is([type=radio],[type=checkbox]):checked+label:before,label:not(.tag):has(input:is([type=radio],[type=checkbox]):checked):before{border-color:var(--colour-info)}input:is([type=radio],[type=checkbox]):checked+label:after,label:not(.tag):has(input:is([type=radio],[type=checkbox]):checked):after{display:inline-block}input:is([type=radio],[type=checkbox]):checked+label iam-card,label:not(.tag):has(input:is([type=radio],[type=checkbox]):checked) iam-card{--colour: var(--colour, var(--colour-info))}input[type=checkbox]:not([disabled]):checked+label:before,label:not(.tag):has(input[type=checkbox]:not([disabled]):checked):before{background:var(--colour-info) !important}input[type=checkbox]:checked+label:not(:has(>iam-card)):after,label:not(.tag):has(input[type=checkbox]:checked):after{content:"\uF00C";position:absolute;font-size:var(--checkbox-tick-size, 1em);line-height:1;color:var(--colour-primary-theme);font-family:"Font Awesome 6 Pro";font-weight:bold;height:var(--checkbox-inner-size, 1.5rem);width:var(--checkbox-inner-size, 1.5rem);line-height:1.625rem;background:none !important;border:none !important;outline:none !important;top:var(--checkbox-inner-top, 0.5rem);left:var(--checkbox-inner-left, var(--outline-width));text-align:center}input[type=checkbox]:indeterminate+label:before,label:not(.tag):has(input[type=checkbox]:indeterminate):before{background:var(--colour-info) !important;border-color:var(--colour-info) !important}input[type=checkbox]:indeterminate+label:after,label:not(.tag):has(input[type=checkbox]:indeterminate):after{content:"\uF068";position:absolute;font-size:var(--checkbox-tick-size, 1em);line-height:1;color:var(--colour-primary-theme);font-family:"Font Awesome 6 Pro";font-weight:bold;height:var(--checkbox-inner-size, 1.5rem);width:var(--checkbox-inner-size, 1.5rem);line-height:1.625rem;background:none !important;border:none !important;outline:none !important;top:var(--checkbox-inner-top, 0.5rem);left:var(--checkbox-inner-left, var(--outline-width));text-align:center}input:is([type=radio],[type=checkbox]):checked:is(:focus,:hover,.focus)+label,label:not(.tag):has(input:is([type=radio],[type=checkbox]):checked:is(:focus,:hover,.focus)){--tick-colour: var(--colour-info)}input:is([type=radio],[type=checkbox]):is(:focus,:hover,.focus)+label,input:is([type=radio],[type=checkbox])+label.hover,label:not(.tag):has(input:is([type=radio],[type=checkbox]):is(:focus,:hover,.focus)){--tick-colour: var(--colour-muted)}input:is([type=radio],[type=checkbox]):is(:focus,:hover,.focus)+label:before,input:is([type=radio],[type=checkbox])+label.hover:before,label:not(.tag):has(input:is([type=radio],[type=checkbox]):is(:focus,:hover,.focus)):before{background:var(--colour-check-bg, var(--colour-light));outline:var(--outline-width) solid var(--colour-light)}input:is([type=radio],[type=checkbox]):is(:active,.active)+label,input:is([type=radio],[type=checkbox])+label.active,label:not(.tag):has(input:is([type=radio],[type=checkbox]):is(:active,.active)){--tick-colour: var(--colour-light)}input:is([type=radio],[type=checkbox]):is(:active,.active)+label:before,input:is([type=radio],[type=checkbox])+label.active:before,label:not(.tag):has(input:is([type=radio],[type=checkbox]):is(:active,.active)):before{background:var(--colour-check-bg, #e0e0e0);outline:var(--outline-width) solid #e0e0e0}input:is([type=radio],[type=checkbox]):disabled+label,label:not(.tag):has(input:is([type=radio],[type=checkbox]):disabled){opacity:.4;cursor:not-allowed}input:is([type=radio],[type=checkbox]):disabled+label>iam-card,label:not(.tag):has(input:is([type=radio],[type=checkbox]):disabled)>iam-card{pointer-events:none}input:is([type=radio],[type=checkbox]):disabled+label:before,label:not(.tag):has(input:is([type=radio],[type=checkbox]):disabled):before{background-color:none !important;outline:none !important;border-color:var(--colour-primary) !important}input[type=radio][disabled]:checked+label:after,label:not(.tag):has(input[type=radio][disabled]:checked):after{background-color:var(--colour-primary) !important}input[type=checkbox][disabled]:checked+label:before,label:not(.tag):has(input[type=checkbox][disabled]:checked):before{background:#e0e0e0 !important;border-color:#e0e0e0 !important}}.conditional{display:none}input:checked+.conditional,input:checked+label+.conditional,label:has(:checked)+.conditional{display:block;clear:both}input:not([class*=conditional-input-]):nth-of-type(1):checked~.conditional-1,input:not([class*=conditional-input-]):nth-of-type(2):checked~.conditional-2,input:not([class*=conditional-input-]):nth-of-type(3):checked~.conditional-3,input:not([class*=conditional-input-]):nth-of-type(4):checked~.conditional-4,input:not([class*=conditional-input-]):nth-of-type(5):checked~.conditional-5,input.conditional-input-1:checked~.conditional-1,input.conditional-input-2:checked~.conditional-2,input.conditional-input-3:checked~.conditional-3,input.conditional-input-4:checked~.conditional-4,input.conditional-input-5:checked~.conditional-5,label:has(input.conditional-input-1:checked)~.conditional-1,label:has(input.conditional-input-2:checked)~.conditional-2,label:has(input.conditional-input-3:checked)~.conditional-3,label:has(input.conditional-input-4:checked)~.conditional-4,label:has(input.conditional-input-5:checked)~.conditional-5{display:block;clear:both}select[multiple]{border-radius:.35rem}select[multiple]::-webkit-scrollbar{width:.7rem}select[multiple]::-webkit-scrollbar *{background-color:rgba(0,0,0,0)}select[multiple]::-webkit-scrollbar-thumb{background-color:rgba(0,0,0,.2);border-radius:.35rem}select:not(.select--minimal,.btn){background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m2 5 6 6 6-6'/%3e%3c/svg%3e") right var(--input-padding-block, 0.75rem) top var(--input-padding-block, 0.75rem)/var(--input-lh, 1.25rem) var(--input-lh, 1.25rem) no-repeat,linear-gradient(to left, var(--colour-primary-theme), var(--colour-primary-theme) 100%) right top/calc(var(--input-padding-block, 0.75rem) + var(--input-padding-block, 0.75rem) + var(--input-lh, 1.25rem)) calc(var(--input-padding-block, 0.75rem) + var(--input-padding-block, 0.8rem) + var(--input-lh, 1.25rem)) no-repeat;padding-right:calc(var(--input-padding-inline, 1rem) + var(--input-padding-inline, 1rem) + var(--input-lh, 1.25rem)) !important}select:not(.select--minimal,.btn) option{font-size:1.2em}select:not(.select--minimal,.btn){box-shadow:inset -2px 0px 0px var(--colour-primary-theme);max-width:var(--select-max-width, 50rem)}select:not(.select--minimal,.btn)[multiple],select:not(.select--minimal,.btn)[size]:not([size="1"]){background:none;max-height:none !important}select:not(.select--minimal,.btn):disabled{background-color:gray;border-color:#000}select:not(.select--minimal,.btn):-moz-focusring{color:rgba(0,0,0,0);text-shadow:0 0 0 inherit}div:has(>select){margin-bottom:1.5rem}div:has(>select) select{margin-bottom:0 !important}.select--minimal{all:unset;font-size:inherit;line-height:inherit;background:none;border:2px solid rgba(0,0,0,0);display:inline-block;padding:.4em calc(1em + .8ch) .4rem var(--select-padding-left, 0.4em) !important;font-weight:normal !important;margin:-0.4em 0 !important;border-radius:.25em;color:var(--colour-body);height:auto;cursor:pointer;font-family:var(--font-body) !important}.select--minimal option{background-color:var(--colour-canvas);padding-left:1em;font-size:inherit;line-height:inherit}.select--minimal:hover{background:var(--colour-light)}.select--minimal:is(:focus,.focus):not(:disabled){border-color:var(--colour-info);outline:0;box-shadow:0 0 0 .1rem rgba(30,190,230,.25)}*:has(>.select--minimal){position:relative;display:inline-block !important;width:auto !important;font-size:inherit !important;line-height:1 !important;padding:0 !important;margin:0 !important;font-family:var(--font-body) !important}*:has(>.select--minimal):after{font-size:.8em;line-height:1em;content:"\uF078";font-family:"Font Awesome 6 Pro";position:absolute;top:40%;transform:translate(0, -50%);right:.8ch;pointer-events:none;color:var(--colour-body)}iam-fileupload input{display:none}:is(label:not(.tag),.label):has(:is(input,select)){display:block;margin-bottom:1.5rem;max-width:var(--input-max-width, 50rem)}:is(label:not(.tag),.label):has(:is(input,select)) :is(input:not([type=range]),select,textarea){margin-top:0.5rem;margin-bottom:0 !important}:is(label:not(.tag),.label):has(:is(input,select)) :is(input,select)~span:not(:is(.suffix,.prefix,.invalid-feedback)),:is(label:not(.tag),.label):has(:is(input,select)) span:has(>:is(input,select))~span:not(:is(.suffix,.prefix,.invalid-feedback)){all:initial;font-family:var(--font-body);color:var(--colour-body);margin-top:0.5rem;display:block;line-height:1.2}:is(label:not(.tag),.label):has(:is(input,select)) .invalid-feedback{font-size:1rem;font-weight:normal;line-height:1.2}:is(label:not(.tag),.label):has(:is(input,select)) span:has(:is(input,select)){display:flex;width:100%}:is(label:not(.tag),.label):has(:is(input,select)) :is(.suffix,.prefix):not(.mt-0){margin:0.5rem 0 0 0 !important}.was-validated label:has(:is(input:not([type=radio]):not([type=checkbox]),select)),.was-validated fieldset:has(label input:is([type=radio],[type=checkbox]):invalid){margin-bottom:1.5rem}.was-validated label:has(:is(input:not([type=radio]):not([type=checkbox]),select)):has(:is(:invalid,.is-invalid)):after,.was-validated fieldset:has(label input:is([type=radio],[type=checkbox]):invalid):has(:is(:invalid,.is-invalid)):after{content:"This field is required";color:var(--colour-danger);margin-top:0.5rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3e%3c!--! Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license %28Commercial License%29 Copyright 2023 Fonticons, Inc. --%3e%3cpath d='M256 32a224 224 0 1 1 0 448 224 224 0 1 1 0-448zm0 480A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-384c-8.8 0-16 7.2-16 16V272c0 8.8 7.2 16 16 16s16-7.2 16-16V144c0-8.8-7.2-16-16-16zm24 224a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z' fill='%23dc3545'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:left top 1px;background-size:var(--input-fs, 1rem) var(--input-fs, 1rem);padding-left:calc(var(--input-fs, 1rem) + 0.5rem);display:block;width:100%;font-size:1rem;line-height:1.2}.was-validated label:has(:is(input:not([type=radio]):not([type=checkbox]),select))[data-error]:has(:is(:invalid,.is-invalid)):after,.was-validated fieldset:has(label input:is([type=radio],[type=checkbox]):invalid)[data-error]:has(:is(:invalid,.is-invalid)):after{content:attr(data-error) !important}.was-validated label:has(:is(input:not([type=radio]):not([type=checkbox]),select)).error-nowrap:after,.was-validated fieldset:has(label input:is([type=radio],[type=checkbox]):invalid).error-nowrap:after{white-space:nowrap}input[type=range]{--track-size: 0.5rem;--track-colour: var(--colour-light);--thumb-colour: var(--colour-info);--thumb-size: 1.5rem;width:100%;background:rgba(0,0,0,0);cursor:pointer;margin-top:2rem;margin-bottom:2rem;height:2rem;border-radius:50%;accent-color:var(--thumb-colour);-webkit-appearance:none;appearance:none}*:has(>input[type=range]){position:relative;padding-bottom:6rem;max-width:var(--input-max-width, 50rem)}label input[type=range]{position:absolute;top:1.5rem;left:0}input[type=range]::-webkit-slider-runnable-track{background:var(--track-colour);height:var(--track-size);border-radius:.5rem}input[type=range]::-moz-range-track{background:var(--track-colour);height:var(--track-size);border-radius:.5rem}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;margin-top:-0.5rem;background-color:var(--thumb-colour);height:var(--thumb-size);width:var(--thumb-size);border-radius:50%;position:relative;z-index:99;pointer-events:all}input[type=range]::-moz-range-thumb{border:none;background-color:var(--thumb-colour);height:var(--thumb-size);width:var(--thumb-size);border-radius:50%;position:relative;z-index:99;pointer-events:all}input[type=range]:focus{outline:none}input[type=range]:hover::-webkit-slider-thumb,input[type=range]:focus::-webkit-slider-thumb{outline:.5rem solid rgba(30,190,231,.2)}input[type=range]:active::-webkit-slider-thumb{outline:.5rem solid rgba(30,190,231,.4)}input[type=range]:hover::-moz-range-thumb,input[type=range]:focus::-moz-range-thumb{outline:.5rem solid rgba(30,190,231,.2)}input[type=range]:focus::-moz-range-thumb{outline:.5rem solid rgba(30,190,231,.4)}iam-slider input::-webkit-outer-spin-button,iam-slider input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}:is(input[type=date],input[type=time]){position:relative;margin-right:-3rem;padding-right:3rem !important;background-position:right 4rem center;border-radius:.5rem !important}:is(input[type=date],input[type=time])::-webkit-calendar-picker-indicator{background:rgba(0,0,0,0);bottom:0;color:rgba(0,0,0,0);cursor:pointer;height:auto;left:4em;position:absolute;right:0;top:0;width:auto;order:3}}:is(iam-advanced-select,iam-search){position:relative;display:block}:is(iam-advanced-select,iam-search) label{position:relative}:is(iam-advanced-select,iam-search) input{padding-right:3rem}:is(iam-advanced-select,iam-search) .empty{position:absolute;bottom:.5rem;right:3.5rem;margin:0;aspect-ratio:1/1;width:2rem;height:2rem;text-align:center;line-height:1}:is(iam-advanced-select,iam-search) .empty:not(:hover,:focus){border-color:rgba(0,0,0,0);background-color:rgba(0,0,0,0)}:is(iam-advanced-select,iam-search) .empty i{font-size:1.5rem}:is(iam-advanced-select,iam-search) label:after,:is(iam-advanced-select,iam-search) .hint-text{position:absolute;top:100%}.was-validated :is(iam-advanced-select,iam-search) label:has(:is(input:not([type=radio]):not([type=checkbox]),select)){margin-bottom:2.5rem}.was-validated :is(iam-advanced-select,iam-search) label:has(:is(input:not([type=radio]):not([type=checkbox]),select)) input{background:none !important}.was-validated :is(iam-advanced-select,iam-search) label:has(:is(input:not([type=radio]):not([type=checkbox]),select)):has(:invalid,.is-invalid) .hint-text{display:none}:is(iam-advanced-select,iam-search) datalist:empty{display:none !important}:is(iam-advanced-select,iam-search) datalist{z-index:99;top:100%;position:absolute;background-color:#fff;border-top:none;padding:.5rem;max-height:10rem;overflow-y:auto;width:100%;max-width:var(--input-max-width, 50rem);border:none !important;border-radius:.5rem;box-shadow:0px 2px 9px rgba(0,0,0,.1)}:is(iam-advanced-select,iam-search) datalist option{background-color:#fff;padding:.5rem;color:blue !important;cursor:pointer;background:unset !important;border:unset !important;color:var(--colour-primary) !important;font-weight:inherit !important;font-family:inherit !important;font-size:1rem !important;line-height:1.1875rem !important;margin:var(--menu-item-margin, 0 0 0.25rem 0) !important;padding-block:var(--menu-item-padding, 0.5rem) !important;width:var(--menu-item-width, 100%) !important;max-width:var(--menu-item-width, 100%) !important;text-align:var(--menu-item-text-align, left) !important}:is(iam-advanced-select,iam-search) datalist option:is(:hover,:focus){background:var(--colour-light) !important;border-radius:.25rem !important}:is(iam-advanced-select,iam-search) datalist option:active{background:#e0e0e0 !important;border-radius:.25rem !important}iam-advanced-select datalist option.active{border-left:4px solid var(--colour-info) !important;border-radius:.25rem !important;background:hsl(from var(--colour-info) h s l/10%) !important}@layer elements{*,*::before,*::after{box-sizing:border-box}button{border-radius:0;text-transform:none;margin:0;font-family:inherit;font-size:inherit;line-height:inherit}[role=button]{cursor:pointer}button:focus:not(:focus-visible){outline:0}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}.btn{--btn-margin: 1rem;--btn-padding-block: 0.75rem;--btn-padding-inline: 2.5rem;--btn-border-width: 0.125rem;--btn-font-size: 1.125rem;--btn-line-height: 1.25rem;display:inline-block;font-weight:bold;text-align:left;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;color:var(--colour-btn);font-size:var(--btn-font-size);line-height:var(--btn-line-height);padding:var(--btn-padding-block) var(--btn-padding-inline);border-radius:1.5rem;margin-bottom:var(--btn-margin);background:none;transition:border .5s,background .5s,color .5s;height:auto;max-width:fit-content;appearance:none;white-space:nowrap}@media screen and (min-width: 36em){.btn{--btn-margin: 1.5rem}}.btn:not(.btn-secondary)[class*=colour-]{--colour-btn-bg: var(--colour);--colour-btn-border: var(--colour)}.btn:is(.colour-primary,.colour-dark,.colour-danger,.colour-black){--colour-btn: #fcfcfc}.btn:not(.border-0){background:var(--colour-btn-bg);border:var(--btn-border-width) solid var(--colour-btn-border)}.btn:not(:last-child){margin-right:var(--btn-margin)}a:is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active) .btn,.btn:is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active){outline:0;text-decoration:none;background:var(--colour-btn-bg-hover);color:var(--colour-btn-hover);border-radius:1.5rem}a:is(:active,.active):not([disabled]) .btn,.btn:is(:active,.active):not([disabled]){filter:brightness(85%);transition:background .1s,color .1s;color:var(--colour-btn);border-radius:1.5rem}a:disabled .btn,.btn:disabled,[disabled] .btn,.btn[disabled]{opacity:.4;cursor:not-allowed}.btn.colour-success{--colour-btn-bg-hover: var(--colour);--colour-btn-border-hover: var(--colour);--colour-btn-hover: var(--colour-primary-theme);position:relative;padding-left:3.5rem;padding-right:3.5rem}a:is(:hover,:focus,.hover):not([disabled],:active,.active) .btn.colour-success,.btn.colour-success:is(:hover,:focus,.hover):not([disabled],:active,.active){padding-left:2.5rem;padding-right:2.5rem}a:is(:hover,:focus,.hover):not([disabled],:active,.active) .btn.colour-success:before,.btn.colour-success:is(:hover,:focus,.hover):not([disabled],:active,.active):before{content:"\uF00C";font-family:"Font Awesome 6 Pro";margin-right:1rem;font-style:inherit;width:1rem;display:inline-block;height:var(--btn-line-height);vertical-align:bottom}.btn.btn-sm{--btn-padding-block: 0.5rem;--btn-padding-inline: 2rem;--btn-margin: 0.5rem;--btn-font-size: 1rem}.btn[class*=fa-]:before{content:var(--fa);font-family:"Font Awesome 6 Pro";line-height:1em}.btn.btn[class*=fa-after]{padding-right:4rem}.btn.btn[class*=fa-after]:before{margin-right:0;margin-right:0.375rem;position:absolute;right:1.5rem;top:50%;transform:translate(0, -50%)}.btn:not(.btn-compact):before{margin-right:1rem}.btn i[class*=fa-]{font-family:"Font Awesome 6 Pro";margin-right:1rem;line-height:1em;font-style:inherit}.btn i[class*=fa-]:not(:first-child){margin-left:1rem;margin-right:0}.btn.btn--prompt:after{content:"";height:var(--btn-line-height);width:1rem;display:inline-block;background:currentColor;mask-image:var(--icon-arrow);mask-size:100%;mask-repeat:no-repeat;mask-position:50% 50%;-webkit-mask-image:var(--icon-arrow);-webkit-mask-size:100%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%;vertical-align:bottom;margin-left:1rem}a:is(:hover,:focus,.hover):not([disabled],:active,.active) .btn.btn--prompt:after,.btn.btn--prompt:is(:hover,:focus,.hover):not([disabled],:active,.active):after{margin-left:1.5rem;margin-right:-0.5rem}.btn:has(select){position:relative;padding-right:3.5rem}.btn:has(select):not(.mw-100){max-width:13rem}.btn:has(select) select{all:unset !important;margin:calc(-0.75rem) calc(-2.5rem) !important;padding:var(--btn-padding-block) var(--btn-padding-inline) !important;padding-right:3.5rem !important;margin-right:-3.5rem !important;border-radius:1.5rem !important;appearance:none !important;background:none !important;border:none !important;color:currentColor !important;display:block;max-width:100% !important;outline:none;font-weight:bold;font-size:var(--btn-font-size) !important;line-height:var(--btn-line-height) !important}.btn:has(select) select option{padding:0;text-align:left;color:var(--colour-primary)}.btn:has(select):after{position:absolute;top:0.625rem;right:2rem;content:"";height:1.5rem;width:1rem;display:inline-block;background:currentColor;mask-image:var(--icon-arrow);mask-size:100%;mask-repeat:no-repeat;mask-position:50% 50%;-webkit-mask-image:var(--icon-arrow);-webkit-mask-size:100%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%;vertical-align:bottom;margin-left:1rem;transform:rotate(90deg);pointer-events:none}.btn:has(select).active:after{transform:rotate(-90deg)}.btn:has(select:focus):after{transform:rotate(-90deg)}.btn-filter:after{content:"\uF1DE";display:inline-block;margin-left:1em;margin-bottom:-0.15em;height:1em;width:1em;z-index:var(--index-focus);color:currentColor;font-weight:300;font-family:"Font Awesome 6 Pro"}}@layer elements{.btn-secondary{color:var(--colour-btn-secondary)}.btn-secondary:not(.border-0){background:var(--colour-btn-secondary-bg);border:2px solid var(--colour-btn-secondary-border)}a:is(:hover,:focus,.hover,:active,.active):not([disabled]) .btn-secondary,.btn-secondary:is(:hover,:focus,.hover,:focus-within,:active,.active):not([disabled]){background:var(--colour-btn-secondary-bg-hover);color:var(--colour-btn-secondary-hover)}}@layer elements{.btn.btn-tertiary{background-color:rgba(0,0,0,0);border:none;color:var(--colour-link);margin:0 var(--btn-margin) var(--btn-margin) 0;padding:0;font-size:1.125rem;font-weight:normal;line-height:1.5rem;min-height:1.5rem;position:relative}.btn.btn-tertiary:after{position:absolute;content:"";top:100%;left:50%;height:2px;width:100%;transform:translate(-50%, 0);background:var(--colour-underline);transition:width .5s}.btn.btn-tertiary.text-decoration-none:after{width:0%}.btn.btn-tertiary [class*=fa-]{margin-left:0;margin-right:.5rem}.btn.btn-tertiary [class*=fa-]:not(:first-child){margin-left:.5rem;margin-right:0}.btn.btn-tertiary:is(:hover,:focus,.hover,:focus-within):not([disabled],:disabled,:active,.active):after{width:60% !important}.btn.btn-tertiary:is(:active,.active):not([disabled],:disabled){color:var(--colour-active)}}@layer elements{.btn-action{--btn-border-width: 0.0625rem;--btn-padding-block: 0.3125rem;--btn-padding-inline: 0.3125rem;--btn-margin: 0.5rem}.btn-action:not(.btn-primary){color:var(--colour-heading)}.btn-action:not(.btn-primary):not(.border-0){background-color:var(--colour-canvas-2);border:var(--btn-border-width) solid var(--colour-muted)}.btn-action{border-radius:0.25rem !important;font-weight:400 !important;font-size:1rem;line-height:1.25rem}.btn-action.btn[class*=fa-]:before{content:var(--fa);margin-right:0.375rem}a:not(.btn-primary):is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active) .btn-action,.btn-action:not(.btn-primary):is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active){background:var(--colour-btn-action-hover-bg)}.btn-primary:is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active) .btn-action,.btn-action.btn-primary:is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active){filter:brightness(90%);background:var(--colour-btn-bg);border:var(--btn-border-width) solid var(--colour-btn-border);color:var(--colour-btn)}a:is(:active,.active):not([disabled]):not(.btn-primary) .btn-action,.btn-action:is(:active,.active):not([disabled]):not(.btn-primary){filter:brightness(85%);transition:all .1s;color:var(--colour-heading)}}@layer elements{.btn-compact{--compact-size: 3rem;padding:0 !important;margin-bottom:0.5rem}.btn-compact:not(:last-child){margin-right:0.5rem}.btn-compact{text-align:center;width:var(--compact-size);min-width:var(--compact-size);max-width:var(--compact-size);height:var(--compact-size) !important;min-height:var(--compact-size) !important;max-height:var(--compact-size) !important;line-height:var(--compact-size) !important;text-indent:-500px;overflow:hidden;position:relative;font-size:1rem}.btn-compact:before{content:var(--fa);position:absolute;top:0;left:0;width:100%;height:100%;text-indent:0;line-height:calc(var(--compact-size) - 0.25rem);font-weight:900}.btn-compact[class*=fa-]:before{line-height:calc(var(--compact-size) - 0.25rem)}@container style(--theme: dark){.btn-compact[class*=fa-]:before{color:#fff}}.btn-compact.btn-sm{--compact-size: 2.5rem;font-size:1rem;padding:0 !important}.btn-compact.btn-action{--compact-size: 2rem;font-size:1rem}.btn-compact.btn-action:before{font-size:1em;font-weight:400}.btn-compact.btn-secondary{--colour-btn-bg: transparent;--colour-btn-border: transparent;border-color:rgba(0,0,0,0)}.btn-compact.btn-secondary:not([class*=colour-]){--colour: var(--colour-light)}.btn-compact.btn-secondary:is(:hover,:focus,.hover,:active,.active,[aria-expanded],:focus-within):not([disabled]):not(.btn-collapse){background-color:var(--colour);color:var(--colour-primary-theme);border-color:var(--colour)}.btn-compact.btn-secondary:is(:hover,:focus,.hover,:active,.active,[aria-expanded],:focus-within):not([disabled]):not(.btn-collapse):is(.colour-primary,.colour-dark,.colour-danger,.colour-black){color:var(--colour-inverted)}.btn-compact[data-number]{position:relative}.btn-compact[data-number]:after{content:attr(data-number);position:absolute;top:.5em;z-index:99;background:var(--colour-danger);height:1.5em;width:1.5em;border-radius:50%;text-indent:0;left:50%;font-size:.5em;line-height:1.5em;text-align:center;color:#fff;letter-spacing:-0.1em;font-family:arial,sans-serif}[class*=bg-]:not(.bg-info):not(.bg-success):not(.bg-light):not(.bg-warning):not(.bg-white):not(.bg-admin):not(.bg-canvas):not(.bg-canvas-2):not(.prevent-invert) .btn-compact.btn-secondary:not(:hover,:focus,.hover,:focus-within):not(.btn-collapse),.invert-colours .btn-compact.btn-secondary:not(:hover,:focus,.hover,:focus-within):not(.btn-collapse){background-color:var(--colour-inverted) !important;border-color:var(--colour-inverted) !important;color:var(--colour-primary-theme)}[class*=bg-]:not(.bg-info):not(.bg-success):not(.bg-light):not(.bg-warning):not(.bg-white):not(.bg-admin):not(.bg-canvas):not(.bg-canvas-2):not(.prevent-invert) .btn-compact.btn-secondary:is(:hover,:focus,.hover,:focus-within):not([disabled]):not(.btn-collapse),.invert-colours .btn-compact.btn-secondary:is(:hover,:focus,.hover,:focus-within):not([disabled]):not(.btn-collapse){background-color:rgba(0,0,0,0);border-color:var(--colour-inverted) !important;color:var(--colour-inverted)}[class*=bg-]:not(.bg-info):not(.bg-success):not(.bg-light):not(.bg-warning):not(.bg-white):not(.bg-admin):not(.bg-canvas):not(.bg-canvas-2):not(.prevent-invert) .btn-compact.btn-secondary[disabled],.invert-colours .btn-compact.btn-secondary[disabled]{background-color:var(--colour-inverted) !important;border-color:var(--colour-inverted) !important;color:var(--colour-primary-theme) !important}}.js-hide{display:none !important}.ms-1{margin-inline-start:.5rem !important}.pb-2{padding-bottom:1rem !important}:host{margin-bottom:1rem;display:block}input[name=postcode]{border-color:var(--error-border, var(--colour-primary)) !important}:is([name=postcode]):is(:focus,.focus):not(:disabled){border-color:var(--colour-info) !important}div:has(input[name=postcode]) .suffix{border-color:var(--error-border, var(--colour-primary)) !important}.invalid-feedback{display:var(--error-display, none) !important}.optional{display:var(--req-display, inline-block) !important}.pre-filled p{padding-bottom:1rem}.pre-filled button{border:none;background:none;cursor:pointer}/*# sourceMappingURL=assets/css/components/address-lookup.component.css.map */
8
7
 
9
8
 
10
- ${this.hasAttribute("css")?`@import "${this.getAttribute("css")}";`:""}
11
9
  </style>
12
10
  <link rel="stylesheet" href="https://kit.fontawesome.com/26fdbf0179.css" crossorigin="anonymous" />
13
11
  <div class="wrapper">
@@ -16,26 +14,26 @@
16
14
  <div>
17
15
  <label class="mb-2">Search <span class="title text-lowercase"></span> <span class="optional">(Optional)</span>
18
16
  <span>
19
- <input type="text" name="postcode" list="address-lookup__addressess" autocomplete="off" aria-autocomplete="none" placeholder="Postcode" />
20
- <span class="suffix fa-regular fa-search"></span>
17
+ <input type="text" name="postcode" list="address-lookup__addressess" autocomplete="off" aria-autocomplete="none" placeholder="Postcode" part="input" />
18
+ <span class="suffix fa-regular fa-search" part="suffix"></span>
21
19
  </span>
22
20
  <span class="invalid-feedback">Required Adddress fields missing</span>
23
21
  </label>
24
22
 
25
23
  </div>
26
- <button class="btn btn-tertiary switch-to-manual-btn" type="button">Or enter address manually</button>
24
+ <button class="btn btn-tertiary switch-to-manual-btn" type="button" part="button">Or enter address manually</button>
27
25
  </div>
28
26
  <datalist id="address-lookup__addressess"></datalist>
29
27
 
30
28
  <div class="manual-address pb-2 js-hide">
31
- <slot></slot>
32
- <button class="btn btn-tertiary switch-to-lookup-btn" type="button">Use postcode lookup</button>
29
+ <slot part="contents"></slot>
30
+ <button class="btn btn-tertiary switch-to-lookup-btn" type="button" part="button">Use postcode lookup</button>
33
31
  <slot name="after"></slot>
34
32
  </div>
35
33
  <div class="pre-filled pb-2 js-hide">
36
34
  <strong class="title text-primary d-block"></strong>
37
- <p><span class="pre-filled-address"></span><button class="text-primary text-decoration-none ms-1 cursor-pointer" type="button"><i class="fa-regular fa-pen-to-square"></i><span class="visually-hidden">Edit</span></button><slot name="prefilled"></slot></p>
35
+ <p><span class="pre-filled-address"></span><button class="text-primary text-decoration-none ms-1 cursor-pointer" type="button" part="edit-button"><i class="fa-regular fa-pen-to-square"></i> <span class="visually-hidden">Edit</span></button><slot name="prefilled"></slot></p>
38
36
  </div>
39
37
  </div>
40
- `,(o=this.shadowRoot)===null||o===void 0||o.appendChild(u.content.cloneNode(!0))}connectedCallback(){return $(this,void 0,void 0,function*(){const o=this.shadowRoot.querySelector('[name="postcode"]'),r=this.shadowRoot.querySelector(".postcode-lookup"),a=this.shadowRoot.querySelector(".manual-address"),u=this.shadowRoot.querySelector(".pre-filled"),d=this.shadowRoot.querySelector("datalist"),h=this.shadowRoot.querySelector(".switch-to-manual-btn"),b=this.shadowRoot.querySelector(".switch-to-lookup-btn"),v=this.hasAttribute("data-title")?this.getAttribute("data-title"):"Property address",m=this.shadowRoot.querySelector(".pre-filled-address + button"),n=this.hasAttribute("data-display-text");Array.from(this.shadowRoot.querySelectorAll(".title")).forEach(t=>{t.innerHTML=v});function f(t){const e=t.shadowRoot.querySelector(".pre-filled-address");let s=!0;e.innerHTML="",Array.from(t.querySelectorAll("input[required],input[data-required],select[required],select[data-required]")).forEach(c=>{const l=c.value;l?e.innerHTML+=l+(/^-?\d+$/.test(l)?" ":", "):s=!1}),e.innerHTML=e.innerHTML.slice(0,-2),s&&(u.classList.remove("js-hide"),r.classList.add("js-hide"),a.classList.add("js-hide"))}if(f(this),this.addEventListener("filled",()=>{f(this)}),this.hasAttribute("data-use")){const e=`<div><input type="checkbox" name="use" id="use" value="yes"><label for="use">${this.hasAttribute("data-use-label")?this.getAttribute("data-use-label"):"Use saved address"}</label></div>`;r.insertAdjacentHTML("afterbegin",e),this.shadowRoot.addEventListener("change",s=>{if(s&&s.target instanceof HTMLElement&&s.target.closest('[name="use"]')&&s.target.closest('[name="use"]').checked){r.classList.add("js-hide"),a.classList.remove("js-hide");const l=JSON.parse(this.getAttribute("data-use"));Object.keys(l).forEach(i=>{const p=l[i];this.querySelector(`[data-name="${i}"]`)?this.querySelector(`[data-name="${i}"]`).value=p:this.querySelector(`[name="${i}"]`)&&(this.querySelector(`[name="${i}"]`).value=p)})}})}this.hasAttribute("data-manual")&&(r.classList.add("js-hide"),a.classList.remove("js-hide"),Array.from(a.querySelectorAll("[data-required]")).forEach(t=>{t.setAttribute("required","true")}));function S(){r.classList.add("js-hide"),a.classList.remove("js-hide"),Array.from(a.querySelectorAll("[data-required]")).forEach(t=>{t.setAttribute("required","true")}),a.scrollIntoView()}m.addEventListener("click",()=>{u.classList.add("js-hide"),S()}),h.addEventListener("click",()=>{S()}),b.addEventListener("click",()=>{r.classList.remove("js-hide"),a.classList.add("js-hide"),r.scrollIntoView()}),o.addEventListener("keyup",()=>{o.value.length>=3&&A(o.value)}),o.addEventListener("change",()=>{if(o.value.length>=3&&(A(o.value),d.querySelector(`[value="${o.value}"]`))){r.classList.add("js-hide"),a.classList.remove("js-hide");const t=JSON.parse(d.querySelector(`[value="${o.value}"]`).getAttribute("data-values"));Object.keys(t).forEach(e=>{const s=t[e];this.querySelector(`[data-name="${e}"]`)&&s!=""?this.querySelector(`[data-name="${e}"]`).value=s:this.querySelector(`[data-name-alt="${e}"]`)&&s!=""?this.querySelector(`[data-name-alt="${e}"]`).value=s:this.querySelector(`[name="${e}"]`)&&s!=""&&(this.querySelector(`[name="${e}"]`).value=s),this.querySelector(`[data-name-2="${e}"]`)&&(this.querySelector(`[data-name-2="${e}"]`).value+=" "+s)}),this.querySelector("[name]").focus(),Array.from(this.querySelectorAll("[data-required]")).forEach(e=>{e.setAttribute("required","true")}),o.removeAttribute("required"),this.shadowRoot.querySelector('[name="use"]')&&(this.shadowRoot.querySelector('[name="use"]').checked=!1)}});const A=t=>$(this,void 0,void 0,function*(){let e=this.getAttribute("data-url");e+=`${encodeURI(t)}`,window.controller||(window.controller=[]),window.controller[e]&&window.controller[e].abort(),window.controller[e]=new AbortController;const{signal:s}=controller[e];try{yield fetch(e,{signal:s,method:"get",credentials:"same-origin",headers:new Headers({"Content-Type":"application/json",Accept:"application/json","X-Requested-With":"XMLHttpRequest","X-XSRF-TOKEN":g.get("XSRF-TOKEN")})}).then(c=>c.json()).then(c=>{let l="";return c.forEach(i=>{if(typeof i.value=="object"){const p=JSON.stringify(i.value);l+=`<option value="${i.label}, ${t}" data-values='${p}'></option>`}else{const p=JSON.stringify(i);if(n)l+=`<option value="${i[n]}, ${t}" data-values='${p}'></option>`;else{let y="";for(const[w,q]of Object.entries(i))w=="address_number_name"?y+=`${q} `:w!="postcode"&&w!="address_title"&&(y+=`${q}${/^-?\d+$/.test(q)?"":","} `);l+=`<option value="${y}${t}" data-values='${p}'></option>`}}}),d.innerHTML=l,c})}catch(c){console.log(c)}})})}}export{j as default};
38
+ `,(a=this.shadowRoot)===null||a===void 0||a.appendChild(t.content.cloneNode(!0))}connectedCallback(){return L(this,void 0,void 0,function*(){const a=this.shadowRoot.querySelector('[name="postcode"]'),r=this.shadowRoot.querySelector(".postcode-lookup"),t=this.shadowRoot.querySelector(".manual-address"),u=this.shadowRoot.querySelector(".pre-filled"),c=this.shadowRoot.querySelector("datalist"),m=this.shadowRoot.querySelector(".switch-to-manual-btn"),g=this.shadowRoot.querySelector(".switch-to-lookup-btn"),v=this.hasAttribute("data-title")?this.getAttribute("data-title"):"Property address",h=this.shadowRoot.querySelector(".pre-filled-address + button"),l=this.hasAttribute("data-display-text");Array.from(this.shadowRoot.querySelectorAll(".title")).forEach(i=>{i.innerHTML=v});function b(i){const e=i.shadowRoot.querySelector(".pre-filled-address");let o=!0;e.innerHTML="",Array.from(i.querySelectorAll("input[required],input[data-required],select[required],select[data-required]")).forEach(d=>{const s=d.value;s?e.innerHTML+=s+(/^-?\d+$/.test(s)?" ":", "):o=!1}),e.innerHTML=e.innerHTML.slice(0,-2),o&&(u.classList.remove("js-hide"),r.classList.add("js-hide"),t.classList.add("js-hide"))}if(b(this),this.addEventListener("filled",()=>{b(this)}),this.hasAttribute("data-use")){const e=`<div><input type="checkbox" name="use" id="use" value="yes"><label for="use">${this.hasAttribute("data-use-label")?this.getAttribute("data-use-label"):"Use saved address"}</label></div>`;r.insertAdjacentHTML("afterbegin",e),this.shadowRoot.addEventListener("change",o=>{if(o&&o.target instanceof HTMLElement&&o.target.closest('[name="use"]')&&o.target.closest('[name="use"]').checked){r.classList.add("js-hide"),t.classList.remove("js-hide");const s=JSON.parse(this.getAttribute("data-use"));Object.keys(s).forEach(n=>{const p=s[n];this.querySelector(`[data-name="${n}"]`)?this.querySelector(`[data-name="${n}"]`).value=p:this.querySelector(`[name="${n}"]`)&&(this.querySelector(`[name="${n}"]`).value=p)})}})}this.hasAttribute("data-manual")&&(r.classList.add("js-hide"),t.classList.remove("js-hide"),Array.from(t.querySelectorAll("[data-required]")).forEach(i=>{i.setAttribute("required","true")}));function x(){r.classList.add("js-hide"),t.classList.remove("js-hide"),Array.from(t.querySelectorAll("[data-required]")).forEach(i=>{i.setAttribute("required","true")}),t.scrollIntoView()}h.addEventListener("click",()=>{u.classList.add("js-hide"),x()}),m.addEventListener("click",()=>{x()}),g.addEventListener("click",()=>{r.classList.remove("js-hide"),t.classList.add("js-hide"),r.scrollIntoView()}),a.addEventListener("keyup",()=>{a.value.length>=3&&z(a.value)}),a.addEventListener("change",()=>{if(a.value.length>=3&&(z(a.value),c.querySelector(`[value="${a.value}"]`))){r.classList.add("js-hide"),t.classList.remove("js-hide");const i=JSON.parse(c.querySelector(`[value="${a.value}"]`).getAttribute("data-values"));Object.keys(i).forEach(e=>{const o=i[e];this.querySelector(`[data-name="${e}"]`)&&o!=""?this.querySelector(`[data-name="${e}"]`).value=o:this.querySelector(`[data-name-alt="${e}"]`)&&o!=""?this.querySelector(`[data-name-alt="${e}"]`).value=o:this.querySelector(`[name="${e}"]`)&&o!=""&&(this.querySelector(`[name="${e}"]`).value=o),this.querySelector(`[data-name-2="${e}"]`)&&(this.querySelector(`[data-name-2="${e}"]`).value+=" "+o)}),this.querySelector("[name]").focus(),Array.from(this.querySelectorAll("[data-required]")).forEach(e=>{e.setAttribute("required","true")}),a.removeAttribute("required"),this.shadowRoot.querySelector('[name="use"]')&&(this.shadowRoot.querySelector('[name="use"]').checked=!1)}});const z=i=>L(this,void 0,void 0,function*(){let e=this.getAttribute("data-url");e+=`${encodeURI(i)}`,window.controller||(window.controller=[]),window.controller[e]&&window.controller[e].abort(),window.controller[e]=new AbortController;const{signal:o}=controller[e];try{yield fetch(e,{signal:o,method:"get",credentials:"same-origin",headers:new Headers({"Content-Type":"application/json",Accept:"application/json","X-Requested-With":"XMLHttpRequest","X-XSRF-TOKEN":A.get("XSRF-TOKEN")})}).then(d=>d.json()).then(d=>{let s="";return d.forEach(n=>{if(typeof n.value=="object"){const p=JSON.stringify(n.value);s+=`<option value="${n.label}, ${i}" data-values='${p}'></option>`}else{const p=JSON.stringify(n);if(l)s+=`<option value="${n[l]}, ${i}" data-values='${p}'></option>`;else{let f="";for(const[y,k]of Object.entries(n))y=="address_number_name"?f+=`${k} `:y!="postcode"&&y!="address_title"&&(f+=`${k}${/^-?\d+$/.test(k)?"":","} `);s+=`<option value="${f}${i}" data-values='${p}'></option>`}}}),c.innerHTML=s,d})}catch(d){console.log(d)}})})}}export{q as default};
41
39
  //# sourceMappingURL=address-lookup.component.min.js.map