@iamproperty/components 6.0.0 → 6.1.0--beta2

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 (277) hide show
  1. package/assets/bootstrap/README.md +8 -7
  2. package/assets/bootstrap/js/index.esm.js +19 -0
  3. package/assets/bootstrap/js/index.umd.js +34 -0
  4. package/assets/bootstrap/js/src/alert.js +1 -1
  5. package/assets/bootstrap/js/src/base-component.js +2 -2
  6. package/assets/bootstrap/js/src/button.js +1 -1
  7. package/assets/bootstrap/js/src/carousel.js +1 -1
  8. package/assets/bootstrap/js/src/collapse.js +1 -1
  9. package/assets/bootstrap/js/src/dom/data.js +1 -1
  10. package/assets/bootstrap/js/src/dom/event-handler.js +1 -1
  11. package/assets/bootstrap/js/src/dom/manipulator.js +1 -1
  12. package/assets/bootstrap/js/src/dom/selector-engine.js +1 -1
  13. package/assets/bootstrap/js/src/dropdown.js +3 -12
  14. package/assets/bootstrap/js/src/modal.js +13 -17
  15. package/assets/bootstrap/js/src/offcanvas.js +1 -1
  16. package/assets/bootstrap/js/src/popover.js +1 -1
  17. package/assets/bootstrap/js/src/scrollspy.js +10 -14
  18. package/assets/bootstrap/js/src/tab.js +4 -2
  19. package/assets/bootstrap/js/src/toast.js +4 -9
  20. package/assets/bootstrap/js/src/tooltip.js +50 -32
  21. package/assets/bootstrap/js/src/util/backdrop.js +1 -1
  22. package/assets/bootstrap/js/src/util/component-functions.js +1 -1
  23. package/assets/bootstrap/js/src/util/config.js +1 -1
  24. package/assets/bootstrap/js/src/util/focustrap.js +1 -1
  25. package/assets/bootstrap/js/src/util/index.js +1 -1
  26. package/assets/bootstrap/js/src/util/sanitizer.js +1 -1
  27. package/assets/bootstrap/js/src/util/scrollbar.js +1 -1
  28. package/assets/bootstrap/js/src/util/swipe.js +1 -1
  29. package/assets/bootstrap/js/src/util/template-factory.js +1 -1
  30. package/assets/bootstrap/package.json +27 -28
  31. package/assets/bootstrap/scss/_accordion.scss +4 -7
  32. package/assets/bootstrap/scss/_button-group.scss +1 -1
  33. package/assets/bootstrap/scss/_buttons.scss +7 -28
  34. package/assets/bootstrap/scss/_carousel.scss +3 -0
  35. package/assets/bootstrap/scss/_dropdown.scss +1 -2
  36. package/assets/bootstrap/scss/_functions.scss +2 -2
  37. package/assets/bootstrap/scss/_list-group.scss +5 -6
  38. package/assets/bootstrap/scss/_modal.scss +1 -1
  39. package/assets/bootstrap/scss/_nav.scss +2 -2
  40. package/assets/bootstrap/scss/_navbar.scss +0 -2
  41. package/assets/bootstrap/scss/_offcanvas.scss +4 -5
  42. package/assets/bootstrap/scss/_pagination.scss +1 -1
  43. package/assets/bootstrap/scss/_popover.scss +5 -5
  44. package/assets/bootstrap/scss/_toasts.scss +2 -5
  45. package/assets/bootstrap/scss/_variables-dark.scss +87 -0
  46. package/assets/bootstrap/scss/_variables.scss +17 -18
  47. package/assets/bootstrap/scss/bootstrap-utilities.scss +0 -3
  48. package/assets/bootstrap/scss/forms/_floating-labels.scss +0 -1
  49. package/assets/bootstrap/scss/forms/_input-group.scss +4 -7
  50. package/assets/bootstrap/scss/helpers/_focus-ring.scss +5 -0
  51. package/assets/bootstrap/scss/helpers/_icon-link.scss +25 -0
  52. package/assets/bootstrap/scss/mixins/_banner.scss +2 -2
  53. package/assets/bootstrap/scss/mixins/_color-mode.scss +21 -0
  54. package/assets/bootstrap/scss/mixins/_forms.scss +10 -10
  55. package/assets/bootstrap/scss/mixins/_table-variants.scss +2 -2
  56. package/assets/bootstrap/scss/mixins/_utilities.scss +1 -1
  57. package/assets/css/components/actionbar.css.map +1 -1
  58. package/assets/css/components/actionbar.global.css.map +1 -1
  59. package/assets/css/components/barchart.component.css +1 -1
  60. package/assets/css/components/barchart.component.css.map +1 -1
  61. package/assets/css/components/card.component.css +1 -0
  62. package/assets/css/components/card.component.css.map +1 -0
  63. package/assets/css/components/card.module.css +1 -0
  64. package/assets/css/components/card.module.css.map +1 -0
  65. package/assets/css/components/carousel.component.css +1 -0
  66. package/assets/css/components/carousel.component.css.map +1 -0
  67. package/assets/css/components/carousel.config.css +1 -0
  68. package/assets/css/components/carousel.config.css.map +1 -0
  69. package/assets/css/components/charts.config.css +1 -1
  70. package/assets/css/components/charts.config.css.map +1 -1
  71. package/assets/css/components/charts.css +1 -1
  72. package/assets/css/components/charts.css.map +1 -1
  73. package/assets/css/components/charts.module.css +1 -1
  74. package/assets/css/components/charts.module.css.map +1 -1
  75. package/assets/css/components/collapsible-side.css.map +1 -1
  76. package/assets/css/components/fileupload.css.map +1 -1
  77. package/assets/css/components/filter-card.component.css +1 -0
  78. package/assets/css/components/filter-card.component.css.map +1 -0
  79. package/assets/css/components/header.css +1 -1
  80. package/assets/css/components/header.css.map +1 -1
  81. package/assets/css/components/marketing.css.map +1 -1
  82. package/assets/css/components/multi-step.component.css +1 -0
  83. package/assets/css/components/multi-step.component.css.map +1 -0
  84. package/assets/css/components/multiselect.preload.css +1 -1
  85. package/assets/css/components/multiselect.preload.css.map +1 -1
  86. package/assets/css/components/nav.css.map +1 -1
  87. package/assets/css/components/nav.docs.css.map +1 -1
  88. package/assets/css/components/nav.global.css.map +1 -1
  89. package/assets/css/components/nav.old.css.map +1 -1
  90. package/assets/css/components/nav.preload.css +1 -1
  91. package/assets/css/components/nav.preload.css.map +1 -1
  92. package/assets/css/components/notification.css.map +1 -1
  93. package/assets/css/components/pagination.css.map +1 -1
  94. package/assets/css/components/property-searchbar.css.map +1 -1
  95. package/assets/css/components/record-card.component.css +1 -0
  96. package/assets/css/components/record-card.component.css.map +1 -0
  97. package/assets/css/components/slider.css.map +1 -1
  98. package/assets/css/components/snapshot.css.map +1 -1
  99. package/assets/css/components/stepper.css.map +1 -1
  100. package/assets/css/components/table.global.css.map +1 -1
  101. package/assets/css/components/tabs.css +1 -1
  102. package/assets/css/components/tabs.css.map +1 -1
  103. package/assets/css/components/testimonial.css.map +1 -1
  104. package/assets/css/components/timeline.css +1 -1
  105. package/assets/css/components/timeline.css.map +1 -1
  106. package/assets/css/components/video-card.component.css +1 -0
  107. package/assets/css/components/video-card.component.css.map +1 -0
  108. package/assets/css/core.min.css +1 -1
  109. package/assets/css/core.min.css.map +1 -1
  110. package/assets/css/style.min.css +1 -1
  111. package/assets/css/style.min.css.map +1 -1
  112. package/assets/img/illustrations/not-found.png +0 -0
  113. package/assets/js/components/accordion/accordion.component.min.js +2 -2
  114. package/assets/js/components/actionbar/actionbar.component.min.js +6 -6
  115. package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
  116. package/assets/js/components/address-lookup/address-lookup.component.min.js +2 -2
  117. package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -1
  118. package/assets/js/components/applied-filters/applied-filters.component.min.js +2 -2
  119. package/assets/js/components/applied-filters/applied-filters.component.min.js.map +1 -1
  120. package/assets/js/components/barchart/barchart.component.js +2 -0
  121. package/assets/js/components/barchart/barchart.component.min.js +5 -3
  122. package/assets/js/components/barchart/barchart.component.min.js.map +1 -1
  123. package/assets/js/components/card/card.component.js +92 -154
  124. package/assets/js/components/card/card.component.min.js +27 -32
  125. package/assets/js/components/card/card.component.min.js.map +1 -1
  126. package/assets/js/components/carousel/carousel.component.js +36 -41
  127. package/assets/js/components/carousel/carousel.component.min.js +18 -12
  128. package/assets/js/components/carousel/carousel.component.min.js.map +1 -1
  129. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +2 -2
  130. package/assets/js/components/collapsible-side/collapsible-side.component.min.js.map +1 -1
  131. package/assets/js/components/fileupload/fileupload.component.min.js +2 -2
  132. package/assets/js/components/fileupload/fileupload.component.min.js.map +1 -1
  133. package/assets/js/components/filter-card/filter-card.component.js +71 -0
  134. package/assets/js/components/filter-card/filter-card.component.min.js +27 -0
  135. package/assets/js/components/filter-card/filter-card.component.min.js.map +1 -0
  136. package/assets/js/components/filterlist/filterlist.component.min.js +2 -2
  137. package/assets/js/components/header/header.component.min.js +3 -3
  138. package/assets/js/components/header/header.component.min.js.map +1 -1
  139. package/assets/js/components/inline-edit/inline-edit.component.min.js +2 -2
  140. package/assets/js/components/inline-edit/inline-edit.component.min.js.map +1 -1
  141. package/assets/js/components/marketing/marketing.component.min.js +2 -2
  142. package/assets/js/components/marketing/marketing.component.min.js.map +1 -1
  143. package/assets/js/components/multi-step/multi-step.component.js +162 -0
  144. package/assets/js/components/multiselect/multiselect.component.min.js +2 -2
  145. package/assets/js/components/multiselect/multiselect.component.min.js.map +1 -1
  146. package/assets/js/components/nav/nav.component.min.js +2 -2
  147. package/assets/js/components/nav/nav.component.min.js.map +1 -1
  148. package/assets/js/components/notification/notification.component.min.js +2 -2
  149. package/assets/js/components/notification/notification.component.min.js.map +1 -1
  150. package/assets/js/components/pagination/pagination.component.min.js +2 -2
  151. package/assets/js/components/pagination/pagination.component.min.js.map +1 -1
  152. package/assets/js/components/record-card/record-card.component.js +69 -0
  153. package/assets/js/components/record-card/record-card.component.min.js +27 -0
  154. package/assets/js/components/record-card/record-card.component.min.js.map +1 -0
  155. package/assets/js/components/search/search.component.min.js +2 -2
  156. package/assets/js/components/slider/slider.component.min.js +2 -2
  157. package/assets/js/components/slider/slider.component.min.js.map +1 -1
  158. package/assets/js/components/table/table.component.js +1 -1
  159. package/assets/js/components/table/table.component.min.js +4 -4
  160. package/assets/js/components/table/table.component.min.js.map +1 -1
  161. package/assets/js/components/tabs/tabs.component.min.js +3 -3
  162. package/assets/js/components/tabs/tabs.component.min.js.map +1 -1
  163. package/assets/js/components/video-card/video-card.component.js +176 -0
  164. package/assets/js/components/video-card/video-card.component.min.js +30 -0
  165. package/assets/js/components/video-card/video-card.component.min.js.map +1 -0
  166. package/assets/js/components.bundle.js +5 -0
  167. package/assets/js/components.bundle.js.map +1 -0
  168. package/assets/js/components.js +30 -0
  169. package/assets/js/modules/card.module.js +33 -0
  170. package/assets/js/modules/carousel.js +110 -8
  171. package/assets/js/modules/chart.js +2 -2
  172. package/assets/js/modules/dialogs.js +5 -129
  173. package/assets/js/modules/table.js +1 -1
  174. package/assets/js/scripts.bundle.js +4 -195
  175. package/assets/js/scripts.bundle.js.map +1 -1
  176. package/assets/js/scripts.bundle.min.js +3 -3
  177. package/assets/js/scripts.bundle.min.js.map +1 -1
  178. package/assets/js/scripts.js +17 -0
  179. package/assets/js/tests/filterlist.spec.js +1 -1
  180. package/assets/sass/_components.scss +76 -12
  181. package/assets/sass/_corefiles.scss +19 -10
  182. package/assets/sass/_elements.scss +2 -0
  183. package/assets/sass/_func.scss +3 -0
  184. package/assets/sass/_functions/functions.scss +304 -1
  185. package/assets/sass/_functions/mixins.scss +458 -2
  186. package/assets/sass/_functions/utilities.scss +647 -2
  187. package/assets/sass/_functions/variables.scss +1724 -2
  188. package/assets/sass/_utilities.scss +126 -7
  189. package/assets/sass/components/card.component.scss +229 -0
  190. package/assets/sass/components/card.module.scss +154 -0
  191. package/assets/sass/components/carousel.component.scss +605 -0
  192. package/assets/sass/components/carousel.config.scss +84 -0
  193. package/assets/sass/components/charts.config.scss +3 -0
  194. package/assets/sass/components/charts.module.scss +5 -3
  195. package/assets/sass/components/filter-card.component.scss +106 -0
  196. package/assets/sass/components/header.scss +1 -0
  197. package/assets/sass/components/multi-step.component.scss +148 -0
  198. package/assets/sass/components/multiselect.preload.scss +7 -0
  199. package/assets/sass/components/nav.preload.scss +5 -0
  200. package/assets/sass/components/record-card.component.scss +204 -0
  201. package/assets/sass/components/tabs.scss +1 -1
  202. package/assets/sass/components/video-card.component.scss +80 -0
  203. package/assets/sass/components.reset.scss +5 -43
  204. package/assets/sass/elements/admin-panel.scss +2 -1
  205. package/assets/sass/elements/badge-tag.scss +5 -1
  206. package/assets/sass/elements/buttons.scss +36 -0
  207. package/assets/sass/elements/container.scss +16 -6
  208. package/assets/sass/elements/details.scss +2 -0
  209. package/assets/sass/elements/dialog.scss +2 -744
  210. package/assets/sass/elements/forms.scss +241 -24
  211. package/assets/sass/elements/links.scss +27 -4
  212. package/assets/sass/elements/lists.scss +46 -0
  213. package/assets/sass/elements/media.scss +10 -38
  214. package/assets/sass/elements/modal.scss +453 -0
  215. package/assets/sass/elements/popover.scss +207 -0
  216. package/assets/sass/elements/table.element.scss +35 -0
  217. package/assets/sass/elements/type.scss +38 -2
  218. package/assets/sass/error.scss +32 -1
  219. package/assets/sass/foundations/bs_grid.scss +33 -0
  220. package/assets/sass/foundations/grid.scss +270 -0
  221. package/assets/sass/foundations/reboot.scss +71 -49
  222. package/assets/sass/foundations/root.scss +16 -3
  223. package/assets/ts/components/barchart/barchart.component.ts +2 -0
  224. package/assets/ts/components/card/card.component.ts +94 -192
  225. package/assets/ts/components/carousel/carousel.component.ts +51 -44
  226. package/assets/ts/components/filter-card/filter-card.component.ts +81 -0
  227. package/assets/ts/components/multi-step/multi-step.component.ts +262 -0
  228. package/assets/ts/components/record-card/record-card.component.ts +82 -0
  229. package/assets/ts/components/table/table.component.ts +2 -1
  230. package/assets/ts/components/video-card/video-card.component.ts +227 -0
  231. package/assets/ts/components.ts +38 -0
  232. package/assets/ts/modules/card.module.ts +43 -0
  233. package/assets/ts/modules/carousel.ts +161 -7
  234. package/assets/ts/modules/dialogs.ts +6 -182
  235. package/assets/ts/modules/table.ts +1 -1
  236. package/assets/ts/scripts.ts +22 -0
  237. package/assets/ts/tests/filterlist.spec.ts +1 -1
  238. package/dist/components.es.js +227 -243
  239. package/dist/components.umd.js +105 -104
  240. package/dist/style.css +1 -1
  241. package/package.json +9 -7
  242. package/src/components/BarChart/BarChart.vue +2 -2
  243. package/src/components/Carousel/Carousel.vue +1 -15
  244. package/src/components/FilterCard/FilterCard.vue +25 -0
  245. package/src/components/MultiStep/MultiStep.vue +25 -0
  246. package/src/components/RecordCard/RecordCard.vue +25 -0
  247. package/src/components/VideoCard/VideoCard.vue +25 -0
  248. package/assets/css/components/card.css +0 -1
  249. package/assets/css/components/card.css.map +0 -1
  250. package/assets/css/components/card.global.css +0 -1
  251. package/assets/css/components/card.global.css.map +0 -1
  252. package/assets/css/components/card.preload.css +0 -1
  253. package/assets/css/components/card.preload.css.map +0 -1
  254. package/assets/css/components/carousel.css +0 -1
  255. package/assets/css/components/carousel.css.map +0 -1
  256. package/assets/css/components/carousel.preload.css +0 -1
  257. package/assets/css/components/carousel.preload.css.map +0 -1
  258. package/assets/js/bundle.js +0 -74
  259. package/assets/js/dynamic.js +0 -80
  260. package/assets/js/dynamic.min.js +0 -18
  261. package/assets/js/dynamic.min.js.map +0 -1
  262. package/assets/js/flat-components.js +0 -84
  263. package/assets/js/modules/youtubevideo.js +0 -106
  264. package/assets/sass/components/card.global.scss +0 -102
  265. package/assets/sass/components/card.preload.scss +0 -8
  266. package/assets/sass/components/card.scss +0 -606
  267. package/assets/sass/components/carousel.preload.scss +0 -82
  268. package/assets/sass/components/carousel.scss +0 -258
  269. package/assets/ts/bundle.ts +0 -94
  270. package/assets/ts/components/barchart/README.md +0 -37
  271. package/assets/ts/components/card/README.md +0 -39
  272. package/assets/ts/dynamic.ts +0 -107
  273. package/assets/ts/flat-components.ts +0 -106
  274. package/assets/ts/modules/youtubevideo.ts +0 -141
  275. package/assets/ts/tests/dialogs.spec.js +0 -50
  276. package/src/foundations/YoutubeVideo/README.md +0 -11
  277. package/src/foundations/YoutubeVideo/YoutubeVideo.vue +0 -24
@@ -1,173 +1,119 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
1
10
  // @ts-nocheck
2
- // Data layer Web component created
3
- window.dataLayer = window.dataLayer || [];
4
- window.dataLayer.push({
5
- "event": "customElementRegistered",
6
- "element": "Card"
7
- });
11
+ import { trackComponent, trackComponentRegistered } from "../_global.js";
12
+ import { cardHTML, setupCard } from "../../modules/card.module.js";
13
+ trackComponentRegistered("iam-card");
8
14
  class iamCard extends HTMLElement {
9
15
  constructor() {
10
16
  super();
11
17
  this.attachShadow({ mode: 'open' });
12
- if (this.querySelector('*:not(.badge):not(small):not(.btn):not(button) > [class*="fa-"]:not(.btn)'))
13
- this.classList.add('card--has-icon');
14
- let classList = this.classList.toString();
15
18
  const assetLocation = document.body.hasAttribute('data-assets-location') ? document.body.getAttribute('data-assets-location') : '/assets';
16
- const coreCSS = document.body.hasAttribute('data-core-css') ? document.body.getAttribute('data-core-css') : `${assetLocation}/css/core.min.css`;
17
- const loadCSS = `@import "${assetLocation}/css/components/card.css";`;
18
- const loadExtraCSS = `@import "${assetLocation}/css/components/card.global.css";`;
19
+ const loadCSS = `@import "${assetLocation}/css/components/card.component.css";`;
19
20
  const template = document.createElement('template');
20
21
  template.innerHTML = `
21
22
  <style>
22
- @import "${coreCSS}";
23
- ${loadCSS}
24
23
  ${this.hasAttribute('css') ? `@import "${this.getAttribute('css')}";` : ``}
24
+
25
+ ${loadCSS}
25
26
  </style>
26
- <link rel="stylesheet" href="https://kit.fontawesome.com/26fdbf0179.css" crossorigin="anonymous">
27
- <div class="card ${classList}" tabindex="0" part="card">
28
- ${this.createCardConent()}
29
- </div>
27
+ ${cardHTML}
28
+ <slot name="primary-action"></slot>
30
29
  `;
31
30
  this.shadowRoot.appendChild(template.content.cloneNode(true));
32
- // insert extra CSS
33
- if (!document.getElementById('cardGlobal'))
34
- document.head.insertAdjacentHTML('beforeend', `<style id="cardGlobal">${loadExtraCSS}</style>`);
35
- }
36
- createCardConent() {
37
- // TODO split this out a bit
38
- return `${this.hasAttribute('data-image') || this.hasAttribute('data-record') ? `<div class="card__head" part="head">${this.hasAttribute('data-image') ? `<img src="${this.getAttribute('data-image')}" alt="" loading="lazy" />` : ``} <div class="card__badges"><slot name="badges"></slot></div></div>` : ''}
39
- <div class="card__body" part="body">
40
- ${!this.hasAttribute('data-image') && this.querySelector('[slot="badges"]') && this.querySelector('[slot="checkbox"]') ? `<div class="card__badges card__badges--inline"><slot name="badges"></slot></div>` : ''}
41
- ${!this.hasAttribute('data-image') && !this.hasAttribute('data-record') && this.querySelector('[slot="badges"]') ? `<div class="card__badges"><slot name="badges"></slot></div>` : ''}
42
- ${this.hasAttribute('data-illustration') ? `<div class="card__illustration"><img src="${this.getAttribute('data-illustration')}" alt="" loading="lazy" /></div>` : ''}
43
- <slot></slot>
44
- ${this.hasAttribute('data-total') ? `<div class="card__total">${this.getAttribute('data-total')}</div>` : ''}
45
- </div>
46
- ${this.hasAttribute('data-add-link') ? `<button class="btn btn-compact btn-secondary fa-plus">Add property</button>` : ''}
47
- <slot name="checkbox"></slot>
48
- <slot name="primary-action"></slot>
49
- <div class="dialog__wrapper d-none">
50
- <button class="btn btn-secondary btn-compact fa-ellipsis-vertical" popovertarget="actions" title="${this.hasAttribute('data-menu-title') ? this.getAttribute('data-menu-title') : 'Further actions'}">Lorum ipsum</button>
51
- <dialog class="dialog--fix dialog--list" id="actions" popover>
52
- <slot name="actions"></slot>
53
- </dialog>
54
- </div>
55
- <div class="card__footer" part="footer">
56
- <slot name="footer"></slot>
57
- <slot name="btns"></slot>
58
- ${this.hasAttribute('data-cta') ? `<span class="link d-inline-block pt-0 mb-0">${this.getAttribute('data-cta')}</span>` : ''}
59
- </div>`;
60
31
  }
61
32
  connectedCallback() {
62
- this.classList.add('loaded');
63
- // Mimic clicking the parent node so the focus and target events can be on the card
64
- const component = this;
65
- const parentNode = component.parentNode.closest('a, button, label, router-link');
66
- const card = this.shadowRoot.querySelector('.card');
67
- const btnCompact = this.shadowRoot.querySelector('.btn-compact');
68
- const recordType = this.hasAttribute('data-record') ? this.getAttribute('data-record') : '';
69
- // Add the actions slot to the buttons and links to move them into a dialog warpper
70
- const actionsWrapper = this.shadowRoot.querySelector('.dialog__wrapper');
71
- let buttons = component.querySelectorAll('button[slot="actions"],a[slot="actions"]');
72
- if (buttons.length) {
73
- const actionsWrapper = this.shadowRoot.querySelector('.dialog__wrapper');
74
- const actionsDialog = this.shadowRoot.querySelector('.dialog__wrapper dialog');
75
- const actionsBtn = actionsWrapper.querySelector('button');
76
- actionsWrapper.classList.remove('d-none');
77
- Array.from(buttons).forEach((button, index) => {
33
+ return __awaiter(this, void 0, void 0, function* () {
34
+ const cardComponent = this;
35
+ const cardHead = cardComponent.shadowRoot.querySelector('.card__head');
36
+ const cardBody = cardComponent.shadowRoot.querySelector('.card__body');
37
+ const cardMenu = cardComponent.shadowRoot.querySelector('.dialog__wrapper');
38
+ const btn = cardComponent.shadowRoot.querySelector('.dialog__wrapper button');
39
+ setupCard(cardComponent);
40
+ // Add Illustration HTML
41
+ if (cardComponent.hasAttribute('data-illustration')) {
42
+ cardBody.insertAdjacentHTML('afterbegin', `<div class="card__illustration"><img src="${this.getAttribute('data-illustration')}" alt="" loading="lazy" /></div>`);
43
+ }
44
+ // Add class that shows the right arrow icon
45
+ if (!cardComponent.querySelector('[slot="btns"]') && !cardComponent.querySelector('[slot="secondary"]')) {
46
+ cardComponent.classList.add('show-icon');
47
+ }
48
+ // Secondary buttons and actions
49
+ // Add the dialog wrapper HTML
50
+ if (cardComponent.querySelector('[slot="btns"]')) {
51
+ cardComponent.shadowRoot.innerHTML += `<div class="dialog__wrapper">
52
+ <button class="btn btn-secondary btn-compact fa-ellipsis-vertical" popovertarget="actions" title="Further actions" type="button">Open further actions</button>
53
+ <div class="dialog--fix dialog--list" id="actions" popover>
54
+ <slot name="btns"></slot>
55
+ </div>
56
+ </div>`;
57
+ }
58
+ // Make sure slotted buttons and links have correct button classes
59
+ Array.from(cardComponent.querySelectorAll('[slot="btns"]')).forEach((button, index) => {
78
60
  button.classList.add('btn');
79
61
  button.classList.add('btn-action');
80
62
  });
81
- }
82
- else {
83
- actionsWrapper.remove();
84
- }
85
- /*
86
- If the parentNode is actually just a div,
87
- we don't want to look for anything or add events
88
- */
89
- if (!parentNode) {
90
- return false;
91
- }
92
- if (parentNode)
93
- parentNode.setAttribute('tabindex', '-1');
94
- if (parentNode.matches('label[for]')) {
95
- let isChecked = document.getElementById(parentNode.getAttribute('for')).checked;
96
- if (isChecked)
97
- card.classList.add('checked');
98
- else
99
- card.classList.remove('checked');
100
- }
101
- // Click event down
102
- this.addEventListener('click', (event) => {
103
- let clickEvent = new Event('click');
104
- card.dispatchEvent(clickEvent);
105
- });
106
- card.addEventListener('click', (event) => {
107
- if (parentNode.matches('label[for]')) {
108
- event.stopPropagation();
109
- event.preventDefault();
110
- const input = document.getElementById(parentNode.getAttribute('for'));
111
- const inputName = input.getAttribute('name');
112
- const inputID = input.getAttribute('id');
113
- // Mimic radio button functionality
114
- const inputs = Array.from(document.querySelectorAll(`[name="${inputName}"][type="radio"]:not([id="${inputID}"])`));
115
- inputs.forEach((input, index) => {
116
- const otherCard = document.querySelector(`[for="${input.getAttribute('id')}"] iam-card`);
117
- otherCard.dispatchEvent(new Event('inactive'));
63
+ // Hide the default hover and focus states when interacting with the checkbox, dialog wrapper or secondary button
64
+ if (cardComponent.querySelector('[slot="checkbox"],[slot="secondary"]')) {
65
+ const element = cardComponent.querySelector('[slot="checkbox"],[slot="secondary"]');
66
+ element.addEventListener('mouseenter', (event) => {
67
+ cardComponent.classList.add('prevent-hover');
68
+ });
69
+ element.addEventListener('mouseleave', (event) => {
70
+ cardComponent.classList.remove('prevent-hover');
118
71
  });
119
- parentNode.click();
120
- let isChecked = input.checked;
121
- if (isChecked)
122
- card.classList.add('checked');
123
- else
124
- card.classList.remove('checked');
125
72
  }
126
- });
127
- this.addEventListener('inactive', (event) => {
128
- card.classList.remove('checked');
129
- });
130
- card.addEventListener('keydown', (event) => {
131
- switch (event.keyCode) {
132
- case 32:
133
- case 13:
134
- if (parentNode.matches('label[for]')) {
135
- event.stopPropagation();
136
- event.preventDefault();
137
- const input = document.getElementById(parentNode.getAttribute('for'));
138
- const inputName = input.getAttribute('name');
139
- const inputID = input.getAttribute('id');
140
- const inputs = Array.from(document.querySelectorAll(`[name="${inputName}"]:not([id="${inputID}"])`));
141
- inputs.forEach((input, index) => {
142
- const otherCard = document.querySelector(`[for="${input.getAttribute('id')}"] iam-card`);
143
- otherCard.dispatchEvent(new Event('inactive'));
144
- });
145
- parentNode.click();
146
- let isChecked = input.checked;
147
- if (isChecked)
148
- card.classList.add('checked');
149
- else
150
- card.classList.remove('checked');
73
+ if (cardComponent.shadowRoot.querySelector('.dialog__wrapper')) {
74
+ const element = cardComponent.shadowRoot.querySelector('.dialog__wrapper');
75
+ element.addEventListener('mouseenter', (event) => {
76
+ cardComponent.classList.add('prevent-hover');
77
+ });
78
+ element.addEventListener('mouseleave', (event) => {
79
+ cardComponent.classList.remove('prevent-hover');
80
+ });
81
+ }
82
+ // Dispatch events of selecting checkboxes
83
+ const checkbox = cardComponent.querySelector('input[type="checkbox"]');
84
+ if (checkbox) {
85
+ checkbox.addEventListener('change', (event) => {
86
+ if (checkbox.checked) {
87
+ const customEvent = new CustomEvent("select-card", { detail: { 'Card value': checkbox.value, 'input name': checkbox.getAttribute('name') } });
88
+ cardComponent.dispatchEvent(customEvent);
151
89
  }
152
90
  else {
153
- parentNode.click();
91
+ const customEvent = new CustomEvent("unselect-card", { detail: { 'Card value': checkbox.value, 'input name': checkbox.getAttribute('name') } });
92
+ cardComponent.dispatchEvent(customEvent);
154
93
  }
155
- break;
156
- default:
157
- break;
94
+ });
158
95
  }
159
- });
160
- if (btnCompact) {
161
- let addLocation = this.getAttribute('data-add-link');
162
- btnCompact.addEventListener('click', (event) => {
163
- event.stopPropagation();
164
- event.preventDefault();
165
- window.location = addLocation;
96
+ // Dispatch events of click onto secondary buttons
97
+ const secondaryBtn = cardComponent.querySelector('[slot="secondary"]');
98
+ if (secondaryBtn) {
99
+ secondaryBtn.addEventListener('click', (event) => {
100
+ const customEvent = new CustomEvent("secondary-button-clicked", { detail: { 'Title': secondaryBtn.getAttribute('title') } });
101
+ cardComponent.dispatchEvent(customEvent);
102
+ });
103
+ }
104
+ // Dispatch events of click onto action buttons
105
+ const actionBtns = cardComponent.querySelectorAll('[slot="btns"]');
106
+ Array.from(actionBtns).forEach((button, index) => {
107
+ button.addEventListener('click', (event) => {
108
+ const customEvent = new CustomEvent("action-button-clicked", { detail: { 'Title': button.getAttribute('title') } });
109
+ cardComponent.dispatchEvent(customEvent);
110
+ });
166
111
  });
167
- }
112
+ trackComponent(cardComponent, "iam-card", ['select-card', 'unselect-card', 'secondary-button-clicked', 'action-button-clicked']);
113
+ });
168
114
  }
169
115
  static get observedAttributes() {
170
- return ["data-total", "class", "data-image"];
116
+ return ["data-image"];
171
117
  }
172
118
  attributeChangedCallback(attrName, oldVal, newVal) {
173
119
  switch (attrName) {
@@ -176,19 +122,11 @@ class iamCard extends HTMLElement {
176
122
  this.shadowRoot.querySelector('.card__total').innerHTML = newVal;
177
123
  break;
178
124
  }
179
- case "class": {
180
- if (oldVal != newVal) {
181
- let classList = this.classList.toString();
182
- if (this.querySelector('*:not(.badge):not(small):not(.btn):not(button) > [class*="fa-"]:not(.btn)'))
183
- classList += ' card--has-icon';
184
- this.shadowRoot.querySelector('.card').setAttribute('class', `card ${classList}`);
185
- this.shadowRoot.querySelector('.card').innerHTML = this.createCardConent();
186
- }
187
- break;
188
- }
189
125
  case "data-image": {
190
126
  if (oldVal != newVal) {
191
- this.shadowRoot.querySelector('.card').innerHTML = this.createCardConent();
127
+ const cardHeadImg = this.shadowRoot.querySelector('.card__head img');
128
+ if (cardHeadImg)
129
+ cardHeadImg.setAttribute('src', newVal);
192
130
  }
193
131
  break;
194
132
  }
@@ -1,38 +1,33 @@
1
1
  /*!
2
- * iamKey v6.0.0
3
- * Copyright 2022-2024 iamproperty
4
- */window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:"Card"});class g extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"}),this.querySelector('*:not(.badge):not(small):not(.btn):not(button) > [class*="fa-"]:not(.btn)')&&this.classList.add("card--has-icon");let i=this.classList.toString();const t=document.body.hasAttribute("data-assets-location")?document.body.getAttribute("data-assets-location"):"/assets",r=document.body.hasAttribute("data-core-css")?document.body.getAttribute("data-core-css"):`${t}/css/core.min.css`,a=document.createElement("template");a.innerHTML=`
2
+ * iamKey v6.1.0--beta2
3
+ * Copyright 2022-2025 iamproperty
4
+ */const m=r=>{window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:r})},g=(r,t,i)=>(window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementAdded",element:t}),i.forEach(e=>{r.addEventListener(e,function(n){let d={event:e,element:t,target:n.target};Object.keys(n.detail).forEach(o=>{const a=n.detail[o];d[o]=a}),window.dataLayer.push(d)})}),!0),b=`<div class="card__head" part="head">
5
+ <slot name="head"></slot>
6
+ </div>
7
+ <div class="card__badges"><slot name="badges"></slot></div>
8
+ <slot name="checkbox" class="activate-prevent-hover"></slot>
9
+ <div class="card__body" part="body">
10
+ <slot></slot>
11
+ <slot name="secondary" part="secondary"></slot>
12
+ </div>
13
+ <div class="card__details" part="details">
14
+ <slot name="details"></slot>
15
+ </div>
16
+ <div class="card__footer" part="footer">
17
+ <slot name="footer"></slot>
18
+ </div>`,h=r=>{r.classList.add("card");const t=r.shadowRoot.querySelector(".card__head"),i=r.shadowRoot.querySelector(".card__body");r.hasAttribute("data-image")&&(t.innerHTML+=`<img src="${r.getAttribute("data-image")}" alt="" loading="lazy" part="image" />`),r.hasAttribute("data-total")?i.insertAdjacentHTML("beforeend",`<div class="card__total">${r.getAttribute("data-total")}</div>`):r.querySelector('[slot="total-icon"]')&&i.insertAdjacentHTML("beforeend",'<div class="card__total"><slot name="total-icon"></slot></div>'),r.querySelector('[slot="badges"]')||r.shadowRoot.querySelector(".card__badges").remove()};var v=function(r,t,i,e){function n(d){return d instanceof i?d:new i(function(o){o(d)})}return new(i||(i=Promise))(function(d,o){function a(l){try{c(e.next(l))}catch(s){o(s)}}function p(l){try{c(e.throw(l))}catch(s){o(s)}}function c(l){l.done?d(l.value):n(l.value).then(a,p)}c((e=e.apply(r,t||[])).next())})};m("iam-card");class u extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"}),document.body.hasAttribute("data-assets-location")&&document.body.getAttribute("data-assets-location");const t=document.createElement("template");t.innerHTML=`
5
19
  <style>
6
- @import "${r}";
7
- .card{--card-icon-right: 1rem;box-shadow:var(--card-box-shadow);border-radius:var(--card-border-radius);position:relative;font-weight:bold;font-size:1.125rem;line-height:1.5rem;color:var(--colour-primary);min-height:100%;width:100%;text-align:left;display:flex;flex-direction:column;overflow:hidden;z-index:0;background:var(--colour-canvas-2);outline:2px solid var(--outline-colour, --colour-canvas-2);outline-offset:-2px}.card>*:not(.btn-compact){min-width:100%}.card.border-0{box-shadow:none;--card-left-padding: 0rem;outline-offset:1px !important}.card__body{position:relative;padding:var(--card-top-padding) var(--card-right-padding) 0 var(--card-left-padding);z-index:-1}.card__footer{margin-top:auto;padding:0 var(--card-right-padding) var(--card-bottom-padding) var(--card-left-padding)}.card:is(:hover,:focus) .link:after{width:50%}.card:has(.card__footer .link):before,.card:has(.card__footer .link):after{display:none}.card:not(:has(.dialog__wrapper)):before,.card:not(:has(.dialog__wrapper)):after{content:"";position:absolute;right:var(--card-icon-right);bottom:var(--card-bottom-padding);height:1.5rem;width:1.5rem;background:var(--colour-warning);border-radius:50%}.card:not(:has(.dialog__wrapper)):after{background:var(--colour-primary-theme);mask-image:var(--icon, var(--icon-arrow));mask-size:50%;mask-repeat:no-repeat;mask-position:50% 50%;-webkit-mask-image:var(--icon, var(--icon-arrow));-webkit-mask-size:50%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%;z-index:2}.card:not(:has(.dialog__wrapper)):is(:hover,:focus,.hover){--hover-outline-colour-default: var(--colour, var(--colour-primary));outline:2px solid var(--hover-outline-colour, var(--hover-outline-colour-default));outline-offset:-2px}.card:not(:has(.dialog__wrapper)):not([class*=colour-]):is(:hover,:focus,.hover,:active,.active):before{background:var(--hover-icon-bg, var(--colour-primary-theme))}.card:not(:has(.dialog__wrapper)):not([class*=colour-]):is(:hover,:focus,.hover,:active,.active):after{background:var(--hover-icon-colour, #ffffff)}.card:not(:has(.dialog__wrapper)):is(:active,.active){--card-icon-right: var(--card-icon-right-overide,0.5rem);outline:none}.card:not(:has(.dialog__wrapper)):is(:active){background:#fcfcfc}.card span{display:block;font-weight:bold;padding-top:1.5rem;font-size:1rem}.card:has(.card__illustration) .card__body{align-items:center;display:flex}.card:has(.card__illustration) .card__body .card__illustration{height:4rem;width:4rem;margin-right:1.5rem;margin-top:-1.25rem;margin-bottom:-1.25rem;position:relative}.card:has(.card__illustration) .card__body .card__illustration img{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:contain}.card .card__total{font-size:3rem;line-height:3rem;padding-right:1rem;margin-top:.5rem}.card.card--has-icon:not(.card--secondary):not(.card--filter){display:flex;align-items:center}.card.card--has-icon:not(.card--secondary):not(.card--filter):before,.card.card--has-icon:not(.card--secondary):not(.card--filter):after{top:calc(50% - .75rem);bottom:auto}.card.card--has-icon:not(.card--secondary):not(.card--filter) .card__body{padding-left:4rem;margin-block:auto;padding-bottom:var(--card-bottom-padding)}.card.card--has-icon:not(.card--secondary):not(.card--filter) .card__footer{padding:0;display:none}::slotted(i){font-size:1.5rem !important;margin:-3px var(--card-icon-right) 0 0 !important;vertical-align:middle !important}::slotted(i:not(.fa-light):not(.fa-bold)){font-weight:400 !important}::slotted(span:not(.badge)){display:block !important;font-weight:normal !important;font-size:1rem !important}::slotted(small){padding-top:1rem !important;display:block !important;font-weight:normal !important;padding-bottom:0 !important;color:var(--colour-body)}::slotted(span:not(.badge):not([class*=pt-])){padding-top:1.5rem !important}.card__head .card__badges{position:absolute;top:1rem;text-align:left;left:1rem;z-index:9}.card__body .card__badges.card__badges--inline{margin-top:-1rem;min-height:1rem}.card__body .card__badges:not(.card__badges--inline){position:absolute;top:.5rem;text-align:left;right:.75rem;z-index:9}.card[class*=colour-],.card--filter{border-left:0.75rem solid var(--colour, var(--colour-primary))}.card--filter{--top-padding: 1.5rem;--right-padding: 1rem;--bottom-padding: 1.5rem;--left-padding: 1rem}.card--filter:has(.card__total) .card__body{align-items:center;display:flex}.card--filter:before,.card--filter:after{display:none}.card--filter:is(:hover,:focus,.hover){outline:none}.card--filter:is(:hover,:focus,.hover) :is(.card__body,.card__footer){background:#eee}.card--filter:is(:checked,.checked,:active,.active){outline:2px solid var(--colour, var(--colour-primary));outline-offset:-2px}.card--filter:is(:checked,.checked,:active,.active) .card__body{background:none}.card--filter:is(:checked,.checked,:active,.active) .card__footer{background:none}.card--filter.card--has-icon{--bottom-padding: 1rem;border:none}.card--filter .icon{font-size:1.125rem !important;height:1.125rem !important;margin:0 0 .5rem 0 !important;font-weight:400 !important;display:block !important}.card--filter .card__total{margin-top:0;order:-1}@media screen and (prefers-color-scheme: dark){.card--filter .card__body{background:none !important}.card--filter:is(:hover,:focus,.hover,:active,.active):not(:checked,.checked){outline:2px solid var(--colour, var(--colour-primary)) !important;outline-offset:-2px}}.card--filter ::slotted(i){display:block !important;font-size:1.125rem !important;margin:0 0 .5rem 0 !important}.card:has(.card__head) .card__head{padding-bottom:0;padding-top:var(--img-height, 27%);position:relative;overflow:hidden;background:rgba(0,0,0,.1);z-index:-1}.card:has(.card__head) .card__head>img{position:absolute;top:0;left:0;width:102%;height:102%;object-fit:cover}.card.card--lg-image:has(.card__head) .card__head{padding-top:55%}:host([data-selected]) .card:before,:host([data-selected]) .card:after{display:none !important}:host(.card--flag){position:relative}:host(.card--flag):after{content:"\uF024";font-family:"Font Awesome 6 Pro";position:absolute;top:1rem;right:1rem;font-size:1rem;line-height:1;height:1rem;width:1rem;display:inline-block;font-weight:normal;color:var(--colour, var(--colour-primary))}.card--secondary{--card-top-padding: 1rem;--card-bottom-padding: 1.5rem}.card--secondary:before,.card--secondary:after{display:none}.card--secondary .btn-compact{position:absolute;top:0;right:0;margin:.5rem .5rem 0 0;z-index:99}.card--secondary.secondary-hover{outline:2px solid var(--colour, var(--colour-primary));outline-offset:-2px}.card--secondary.secondary-hover .btn-compact{background-color:var(--colour);color:var(--colour-primary-theme);border-color:rgba(0,0,0,0) !important}.card--secondary:has(.btn-compact:is(:hover,:focus,:active)) .btn-compact{pointer-events:all}.card--secondary ::slotted(i){display:block !important;font-size:2.5rem !important;margin:.5rem 0 .5rem 0 !important;line-height:2.5rem}.card--record:has(.card__head){--img-height: 40%}.card--record:has(.card__head):before,.card--record:has(.card__head):after{display:none}.card--record:has(.card__head) .card__head{background:rgba(0,0,0,0);position:relative}:host([data-record=business]){--record-icon: "\uF54F";--record-colour: var(--wider-colour-2)}:host([data-record=page]){--record-icon: "\uF15C";--record-colour: var(--wider-colour-3)}:host([data-record=contact]){--record-icon: "\uF2B9";--record-colour: var(--wider-colour-4)}:host([data-record=lettings]){--record-icon: "\uE003";--record-icon-font: Font Awesome Kit;--record-colour: var(--wider-colour-5)}:host([data-record=sales]){--record-icon: "\uE004";--record-icon-font: Font Awesome Kit;--record-colour: var(--wider-colour-7)}:host([data-record=landlord]){--record-icon: "\uE001";--record-icon-font: Font Awesome Kit;--record-colour: var(--wider-colour-8)}:host([data-record=contractor]){--record-icon: "\uF82C";--record-colour: var(--wider-colour-9)}:host([data-record=vendor]){--record-icon: "\uE002";--record-icon-font: Font Awesome Kit;--record-colour: var(--wider-colour-13)}:host([data-record=tenant]){--record-icon: "\uE1B0";--record-colour: var(--wider-colour-6)}:host([data-record=sales-applicant]){--record-icon: "\uE006";--record-icon-font: Font Awesome Kit;--record-colour: var(--wider-colour-10)}:host([data-record]) .card--record:has(.card__head) .card__head{background:rgba(0,0,0,0);position:relative}:host([data-record]) .card--record:has(.card__head) .card__head:before{font-family:var(--record-icon-font, "Font Awesome 6 Pro");font-weight:normal;font-size:1.5rem;content:var(--record-icon);display:block;position:absolute;top:auto;left:50%;bottom:0;background-color:var(--record-colour);border-radius:50%;height:4rem;line-height:4rem;width:4rem;text-align:center;transform:translate(-50%, 0)}slot[name=btns]{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:flex-end;margin-right:calc(var(--card-right-padding)*-1);margin-bottom:calc(var(--card-bottom-padding)*-1);padding-right:1rem;padding-bottom:1rem;pointer-events:none}::slotted([slot=btns]){pointer-events:all;margin:0 !important}.dialog__wrapper{position:absolute;right:1rem;bottom:2rem;min-width:3rem !important;left:auto;z-index:999}.dialog__wrapper>dialog{display:var(--menu-display, none);position:fixed;top:anchor(top);position-anchor:--anchor-el;left:anchor(right);right:auto;margin:0 0 0 0.25rem;padding:1rem}.dialog__wrapper>dialog::backdrop{display:none}.dialog__wrapper>dialog:popover-open{display:block !important}.dialog__wrapper:has(dialog:popover-open)>button{background-color:var(--colour)}.dialog__wrapper>button{margin:0;anchor-name:--anchor-el}.dialog__wrapper>button:not(:hover,:focus,:focus-within,:active){background:var(--ellipsis-bg)}::slotted([slot=actions]){border:none !important;margin:0 !important;display:block !important;width:fit-content}::slotted([slot=primary-action]){overflow:hidden;background-color:rgba(0,0,0,0);text-indent:-300%;position:absolute !important;inset:0;margin:0 !important;z-index:99;border:none}::slotted([slot=primary-action]:is(:hover,:focus,.hover)){--hover-outline-colour-default: var(--colour, var(--colour-primary));outline:2px solid var(--hover-outline-colour, var(--hover-outline-colour-default));outline-offset:-2px;border-radius:var(--card-border-radius) !important}/*# sourceMappingURL=assets/css/components/card.css.map */
8
-
9
20
  ${this.hasAttribute("css")?`@import "${this.getAttribute("css")}";`:""}
21
+
22
+ :host{--card-icon-right: 1rem;--card-head-top-padding: 2rem;--card-head-bottom-padding: 2rem;--card-footer-bottom-padding: 1.5rem;--card-head-height: 6rem;box-shadow:var(--card-box-shadow);border-radius:var(--card-border-radius);position:relative;font-weight:bold;font-size:1.125rem;line-height:1.5rem;color:var(--colour-primary);width:100%;text-align:left;display:flex;flex-direction:column;overflow:hidden;z-index:0;background:var(--colour-canvas-2);outline:2px solid var(--outline-colour, --colour-canvas-2);outline-offset:-2px;margin-bottom:2rem}:host>*{width:100%;box-sizing:border-box}:host-context(:is(a,label,button)){margin-bottom:0 !important}:host(.border-0){box-shadow:none;--card-left-padding: 0rem;outline-offset:1px !important}.card__head:has(img){min-height:var(--card-head-height);position:relative;overflow:hidden;background:rgba(0,0,0,.1);z-index:-1}.card__head:has(img)>img{position:absolute;top:0;left:0;margin:-2px;width:calc(100% + 4px);height:calc(100% + 4px);object-fit:cover}.card__body{padding:var(--card-head-top-padding) var(--card-right-padding) var(--card-head-bottom-padding) var(--card-left-padding)}.card__footer{margin-top:0;padding:0 var(--card-right-padding) 0 var(--card-left-padding)}::slotted(i){font-size:1.5rem !important;margin:-3px var(--card-icon-right) 0 0 !important;vertical-align:middle !important}::slotted(i:not(.fa-light):not(.fa-bold)){font-weight:400 !important}::slotted(.badge){margin-bottom:.375rem !important}::slotted(span:not(.badge)){display:block !important;font-weight:normal !important;font-size:1rem !important}::slotted(small){padding-top:1rem !important;display:block !important;font-weight:normal !important;padding-bottom:0 !important;color:var(--colour-body)}::slotted(span:not(.badge):not([class*=pt-])){padding-top:1.5rem !important}::slotted(:is(a,button)[slot=footer]){margin-bottom:var(--card-footer-bottom-padding) !important}.card__body:has(.card__total){--card-head-top-padding: 1rem;--card-head-bottom-padding: 1.5rem}.card__total{font-size:3rem;line-height:3rem;padding-right:1rem;margin-top:.5rem}.card__total i{font-family:var(--fa-style-family, "Font Awesome 6 Pro");font-weight:var(--fa-style, 900);display:block !important;font-size:2.5rem !important;margin:.5rem 0 .5rem 0 !important}::slotted([slot=total-icon]){display:block !important;font-size:2.5rem !important;margin:.5rem 0 .5rem 0 !important;line-height:2.5rem}.card__head:has(img)~.card__badges{position:absolute;top:0;text-align:left;left:0;z-index:9}.card__badges{padding:var(--card-badges-top-padding, 1rem) var(--card-right-padding) 0 var(--card-left-padding);margin-bottom:-1.5rem}body:not(.js-enabled) dialog:not([open]):target{display:block}[popover],dialog{--dialog-padding: 1.5rem;--mh-padding-inline: var(--dialog-padding);color:inherit;width:fit-content;height:fit-content;border:none;overscroll-behavior:contain;background:var(--colour-canvas-2);box-shadow:0px 2px 9px rgba(0,0,0,.11);border-radius:0.625rem;padding:var(--dialog-padding);outline:var(--contrast-outline-width, 0px) solid var(--colour-primary)}[popover]:popover-open,dialog[open]{display:flex;flex-direction:column}[popover]:popover-open>*:last-child,dialog[open]>*:last-child{margin-bottom:0}[popover]:popover-open>:is(p):last-child,dialog[open]>:is(p):last-child{padding-bottom:0}.dialog__wrapper{position:relative;display:inline-block;margin-bottom:calc(var(--btn-margin) - .25rem)}.dialog__wrapper:has(dialog[open],dialog:popover-open)>button{background:var(--colour-btn-secondary-bg-hover);color:var(--colour-btn-secondary-hover);filter:brightness(85%);transition:background .1s,color .1s;border-radius:1.5rem}.dialog__wrapper>.btn:first-child{margin-bottom:.25rem}.dialog__wrapper>.btn:first-child:not(.btn-compact):not([class*=fa-]):after{content:"";display:inline-block;margin-left:1em;margin-bottom:-0.15em;height:1em;width:1em;z-index:var(--index-focus);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%;transform:rotate(90deg)}.dialog__wrapper>.btn:first-child[aria-expanded]:not([data-number]):after{transform:rotate(270deg)}.dialog__wrapper>:is(dialog[open],dialog:popover-open){left:0;top:100%;z-index:var(--index-floating);min-width:20rem;border-radius:1rem;width:20rem;padding:1.5rem}@media screen and (min-width: 36em){.dialog__wrapper>:is(dialog[open],dialog:popover-open){width:20.9375rem}}@media screen and (min-width: 62em){.dialog__wrapper>:is(dialog[open],dialog:popover-open){width:22.5rem}}.dialog__wrapper>:is(dialog[open],dialog:popover-open).dialog--list{width:fit-content !important;min-width:8.75rem !important;max-width:17.5rem !important;padding:1rem;margin:0}@media screen and (min-width: 36em){.dialog__wrapper>:is(dialog[open],dialog:popover-open).dialog--list{width:max-content !important}}.dialog__wrapper>:is(dialog[open],dialog:popover-open).dialog--list hr{height:2px;background:var(--colour-border);margin-left:-1rem;margin-right:-1rem;margin-block:.25rem}.dialog__wrapper>:is(dialog[open],dialog:popover-open).dialog--list .radio--tick{margin-right:0;padding-left:1.5rem;margin-bottom:0}.dialog__wrapper>:is(dialog[open],dialog:popover-open).dialog--list .radio--tick:before{left:0;font-size:1em;top:.75rem}.dialog__wrapper>:is(dialog[open],dialog:popover-open).dialog--list a{padding:0.375rem;margin:0}.dialog__wrapper>:is(dialog[open],dialog:popover-open).dialog--list a:not(:hover,:focus,:active){border-color:rgba(0,0,0,0)}.dialog__wrapper>:is(dialog[open],dialog:popover-open).dialog--list a:after{display:none}.dialog__wrapper>:is(dialog[open],dialog:popover-open).dialog--list .btn-action{margin:0}.dialog__wrapper>:is(dialog[open],dialog:popover-open).dialog--list .btn-action:not(:hover,:focus,:active){border-color:rgba(0,0,0,0)}.dialog__wrapper>:is(dialog[open],dialog:popover-open) :is(dialog[open],dialog:popover-open){display:contents}.dialog__wrapper.dialog__wrapper--right>:is(dialog[open],dialog:popover-open){right:0;left:auto}.dialog__wrapper.dialog__wrapper--sm>:is(dialog[open],dialog:popover-open){width:14.9375rem}.dialog__wrapper.dialog__wrapper--lg>:is(dialog[open],dialog:popover-open){width:19.9375rem}@media screen and (min-width: 36em){.dialog__wrapper.dialog__wrapper--sm-left>dialog[open]{left:0;right:auto}.dialog__wrapper.dialog__wrapper--sm-right>dialog[open]{right:0;left:auto}.dialog__wrapper.dialog__wrapper--sm>dialog[open]{width:16.5625rem}.dialog__wrapper.dialog__wrapper--lg>dialog[open]{width:28.25rem}}@media screen and (min-width: 62em){.dialog__wrapper.dialog__wrapper--md-left>dialog[open]{left:0;right:auto}.dialog__wrapper.dialog__wrapper--md-right>dialog[open]{right:0;left:auto}.dialog__wrapper.dialog__wrapper--sm>dialog[open]{width:16.625rem}.dialog__wrapper.dialog__wrapper--lg>dialog[open]{width:28.375rem}}.dialog__wrapper :is(.empty,.individual){display:none}@supports selector(:has(*)){.dialog__wrapper :is(.empty,.individual){display:inline}}.dialog__wrapper:has(input:checked) .empty,.dialog__wrapper:not(:has(input:checked)) .individual,.dialog__wrapper:has(input:checked~input:checked) .individual,.dialog__wrapper:not(:has(input:checked~input:checked)) .multiple{display:none}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: 2px;display:inline-block;font-weight:bold;text-align:left;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;background:var(--colour-btn-bg);border:var(--btn-border-width) solid var(--colour-btn-border);color:var(--colour-btn);font-size:1.125rem;line-height:1.5rem;padding:calc(var(--btn-padding-block) - var(--btn-border-width)) calc(var(--btn-padding-inline) - var(--btn-border-width));border-radius:1.5rem;margin-bottom:var(--btn-margin);transition: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(: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{opacity:.4;cursor:not-allowed}.btn-secondary{background:var(--colour-btn-secondary-bg);border:2px solid var(--colour-btn-secondary-border);color:var(--colour-btn-secondary)}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)}.btn-action{--btn-border-width: 1px;--btn-padding-block: 0.375rem;--btn-padding-inline: 0.375rem;background-color:var(--colour-canvas-2);border:var(--btn-border-width) solid var(--colour-muted);border-radius:0.25rem !important;font-weight:400 !important;font-size:1rem;line-height:1.25rem;color:var(--colour-heading)}.btn-action.btn[class*=fa-]:before{content:var(--fa);margin-right:0.375rem}a:is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active) .btn-action,.btn-action:is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active){background:var(--colour-btn-action-hover-bg)}a:is(:active,.active):not([disabled]) .btn-action,.btn-action:is(:active,.active):not([disabled]){filter:brightness(85%);transition:all .1s;color:var(--colour-heading)}.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: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}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.btn-sm{--btn-padding-block: 0.5rem;--btn-padding-inline: 2rem}.btn-compact{--compact-size: 3rem;padding:0 !important;margin-bottom:0.5rem;text-align:center;width:calc(var(--compact-size));min-width:calc(var(--compact-size));max-width:calc(var(--compact-size));height:calc(var(--compact-size)) !important;min-height:calc(var(--compact-size)) !important;max-height:calc(var(--compact-size)) !important;line-height:calc(var(--compact-size) - var(--btn-border-width) - var(--btn-border-width)) !important;text-indent:-500px;overflow:hidden;position:relative;font-size:1.25rem}.btn-compact:not(:last-child){margin-right:0.5rem}.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) - var(--btn-border-width) - var(--btn-border-width));font-weight:900}.btn-compact[class*=fa-]:before{line-height:calc(var(--compact-size) - var(--btn-border-width) - var(--btn-border-width)) !important}.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-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:rgba(0,0,0,0) !important}.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}.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:1.5rem;vertical-align:bottom}.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;padding:calc(0.75rem - 2px) calc(2.5rem - 2px) !important;margin:calc(-0.75rem) calc(-2.5rem) !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:1.125rem !important;line-height:1.5rem !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"}.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],:active,.active):after{width:60% !important}.btn.btn-tertiary:is(:active,.active):not([disabled]){color:var(--colour-active)}:host{--card-right-padding: 1rem;--card-icon-right: 1rem}:host(:is(:hover,:focus,.hover):not(.prevent-hover)){--hover-outline-colour-default: var(--colour, var(--colour-primary));outline:2px solid var(--hover-outline-colour, var(--hover-outline-colour-default));outline-offset:-2px}:host(:is(:active,.active):not(.prevent-hover)){--card-icon-right: var(--card-icon-right-overide,0.5rem);outline:none}:host(.prevent-hover){pointer-events:none}:host(.prevent-hover) *{pointer-events:all}:host(.show-icon) .card__body{--card-right-padding: 3.5rem}:host(.show-icon) .card__body:before,:host(.show-icon) .card__body:after{content:"";position:absolute;right:var(--card-icon-right);bottom:var(--card-bottom-padding);height:1.5rem;width:1.5rem;background:var(--colour-warning);border-radius:50%}:host(.show-icon) .card__body:after{background:var(--colour-primary-theme);mask-image:var(--icon, var(--icon-arrow));mask-size:50%;mask-repeat:no-repeat;mask-position:50% 50%;-webkit-mask-image:var(--icon, var(--icon-arrow));-webkit-mask-size:50%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%;z-index:2}:host(:is(:hover,:focus,.hover):not(.prevent-hover):not([class*=colour-])) .card__body:before{background:var(--hover-icon-bg, var(--colour-primary-theme))}:host(:is(:hover,:focus,.hover):not(.prevent-hover):not([class*=colour-])) .card__body:after{background:var(--hover-icon-colour, #ffffff)}:host(:is(:active,.active):not(.prevent-hover):not([class*=colour-])) .card__body:before{background:var(--hover-icon-bg, var(--colour-primary-theme))}:host(:is(:active,.active):not(.prevent-hover):not([class*=colour-])) .card__body:after{background:var(--hover-icon-colour, #ffffff)}.card__body:has(.card__illustration){align-items:center;display:flex}.card__body:has(.card__illustration) .card__illustration{height:4rem;width:4rem;margin-right:1.5rem;margin-top:-1.25rem;margin-bottom:-1.25rem;position:relative}.card__body:has(.card__illustration) .card__illustration img{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:contain}:host([class*=colour-]){border-left:0.75rem solid var(--colour, var(--colour-primary))}slot[name=secondary]{display:block;position:absolute;top:.5rem;right:0;margin:.5rem .5rem 0 0;z-index:999}::slotted([slot=secondary]:not(:hover,:focus,:active,.hover)){background:none !important;color:var(--colour-btn) !important}::slotted([slot=checkbox]){position:absolute !important;top:.5rem;right:.5rem;width:2rem;height:2rem;height:2.5rem;overflow:hidden}.dialog__wrapper{position:absolute;right:1rem;bottom:2rem;width:3rem !important;left:auto;z-index:999}.dialog__wrapper>.btn:before{content:"\uF142";font-family:"Font Awesome 6 Pro"}.dialog__wrapper>[popover]{display:var(--menu-display, none);position:fixed;top:anchor(top);position-anchor:--anchor-el;left:anchor(right);right:auto;margin:0 0 0 0.25rem;padding:1rem}.dialog__wrapper>[popover]::backdrop{display:none}.dialog__wrapper>[popover]:popover-open{display:block !important}.dialog__wrapper:has([popover]:popover-open)>button{background-color:var(--colour)}.dialog__wrapper>button[popovertarget]{margin:0;anchor-name:--anchor-el}.dialog__wrapper>button[popovertarget]:not(:hover,:focus,:focus-within,:active){background:var(--ellipsis-bg)}::slotted([slot=btns]){border:none !important;margin:0 !important;display:block !important;width:fit-content}::slotted([slot=primary-action]){overflow:hidden;background-color:rgba(0,0,0,0);text-indent:-300%;position:absolute !important;inset:0;margin:0 !important;z-index:99;border:none}:host(:not(.prevent-hover)) ::slotted([slot=primary-action]:is(:hover,:focus,.hover)){--hover-outline-colour-default: var(--colour, var(--colour-primary));outline:2px solid var(--hover-outline-colour, var(--hover-outline-colour-default));outline-offset:-2px;border-radius:var(--card-border-radius) !important}/*# sourceMappingURL=assets/css/components/card.component.css.map */
23
+
10
24
  </style>
11
- <link rel="stylesheet" href="https://kit.fontawesome.com/26fdbf0179.css" crossorigin="anonymous">
12
- <div class="card ${i}" tabindex="0" part="card">
13
- ${this.createCardConent()}
14
- </div>
15
- `,this.shadowRoot.appendChild(a.content.cloneNode(!0)),document.getElementById("cardGlobal")||document.head.insertAdjacentHTML("beforeend",`<style id="cardGlobal">iam-card{margin-bottom:1.5rem;display:block}@supports not selector(:has(*)){iam-card{margin-bottom:2rem;display:block}}iam-card>div:has([type=checkbox]){display:contents}iam-card>div:has([type=checkbox])>input:is([type=radio],[type=checkbox])+label{position:absolute !important;top:.5rem;right:.5rem;width:2rem;padding-left:2rem;margin:0.25rem 0.5rem !important;height:2.5rem;overflow:hidden}iam-card:has([type=checkbox]:checked){--hover-outline-colour: var(--colour-info);--outline-colour: var(--colour-info)}iam-card:has([type=checkbox]+label:hover){--hover-outline-colour: transparent;--hover-icon-bg: var(--colour-warning);--hover-icon-colour: var(--colour-primary-theme);--card-icon-right-overide:1rem}iam-card:has([type=checkbox]:active){--hover-outline-colour: transparent;--hover-icon-bg: var(--colour-warning);--hover-icon-colour: var(--colour-primary-theme);--card-icon-right-overide:1rem}iam-card.card--has-icon:not(.card--filter):not(.card--secondary) i{position:absolute;top:calc(50% - .5rem - 2px);left:1rem}iam-card .badge i{position:static !important;margin-right:.25rem}:is(a,button,label) iam-card{margin-bottom:0 !important}[data-select-container]:has([type=checkbox]:checked) iam-card>div:has([type=checkbox])>input:is([type=radio],[type=checkbox]){width:100%;height:100%;max-height:100%;max-width:100%;cursor:pointer;pointer-events:all;inset:0;border-radius:0;z-index:10}a[target=_blank] iam-card::part(card){--icon: var(--icon-new-tab)}/*# sourceMappingURL=assets/css/components/card.global.css.map */
16
- </style>`)}createCardConent(){return`${this.hasAttribute("data-image")||this.hasAttribute("data-record")?`<div class="card__head" part="head">${this.hasAttribute("data-image")?`<img src="${this.getAttribute("data-image")}" alt="" loading="lazy" />`:""} <div class="card__badges"><slot name="badges"></slot></div></div>`:""}
17
- <div class="card__body" part="body">
18
- ${!this.hasAttribute("data-image")&&this.querySelector('[slot="badges"]')&&this.querySelector('[slot="checkbox"]')?'<div class="card__badges card__badges--inline"><slot name="badges"></slot></div>':""}
19
- ${!this.hasAttribute("data-image")&&!this.hasAttribute("data-record")&&this.querySelector('[slot="badges"]')?'<div class="card__badges"><slot name="badges"></slot></div>':""}
20
- ${this.hasAttribute("data-illustration")?`<div class="card__illustration"><img src="${this.getAttribute("data-illustration")}" alt="" loading="lazy" /></div>`:""}
21
- <slot></slot>
22
- ${this.hasAttribute("data-total")?`<div class="card__total">${this.getAttribute("data-total")}</div>`:""}
23
- </div>
24
- ${this.hasAttribute("data-add-link")?'<button class="btn btn-compact btn-secondary fa-plus">Add property</button>':""}
25
- <slot name="checkbox"></slot>
25
+ ${b}
26
26
  <slot name="primary-action"></slot>
27
- <div class="dialog__wrapper d-none">
28
- <button class="btn btn-secondary btn-compact fa-ellipsis-vertical" popovertarget="actions" title="${this.hasAttribute("data-menu-title")?this.getAttribute("data-menu-title"):"Further actions"}">Lorum ipsum</button>
29
- <dialog class="dialog--fix dialog--list" id="actions" popover>
30
- <slot name="actions"></slot>
31
- </dialog>
32
- </div>
33
- <div class="card__footer" part="footer">
34
- <slot name="footer"></slot>
35
- <slot name="btns"></slot>
36
- ${this.hasAttribute("data-cta")?`<span class="link d-inline-block pt-0 mb-0">${this.getAttribute("data-cta")}</span>`:""}
37
- </div>`}connectedCallback(){this.classList.add("loaded");const i=this,t=i.parentNode.closest("a, button, label, router-link"),r=this.shadowRoot.querySelector(".card"),a=this.shadowRoot.querySelector(".btn-compact");this.hasAttribute("data-record")&&this.getAttribute("data-record");const l=this.shadowRoot.querySelector(".dialog__wrapper");let s=i.querySelectorAll('button[slot="actions"],a[slot="actions"]');if(s.length){const e=this.shadowRoot.querySelector(".dialog__wrapper");this.shadowRoot.querySelector(".dialog__wrapper dialog"),e.querySelector("button"),e.classList.remove("d-none"),Array.from(s).forEach((o,d)=>{o.classList.add("btn"),o.classList.add("btn-action")})}else l.remove();if(!t)return!1;if(t&&t.setAttribute("tabindex","-1"),t.matches("label[for]")&&(document.getElementById(t.getAttribute("for")).checked?r.classList.add("checked"):r.classList.remove("checked")),this.addEventListener("click",e=>{let o=new Event("click");r.dispatchEvent(o)}),r.addEventListener("click",e=>{if(t.matches("label[for]")){e.stopPropagation(),e.preventDefault();const o=document.getElementById(t.getAttribute("for")),d=o.getAttribute("name"),c=o.getAttribute("id");Array.from(document.querySelectorAll(`[name="${d}"][type="radio"]:not([id="${c}"])`)).forEach((n,m)=>{document.querySelector(`[for="${n.getAttribute("id")}"] iam-card`).dispatchEvent(new Event("inactive"))}),t.click(),o.checked?r.classList.add("checked"):r.classList.remove("checked")}}),this.addEventListener("inactive",e=>{r.classList.remove("checked")}),r.addEventListener("keydown",e=>{switch(e.keyCode){case 32:case 13:if(t.matches("label[for]")){e.stopPropagation(),e.preventDefault();const o=document.getElementById(t.getAttribute("for")),d=o.getAttribute("name"),c=o.getAttribute("id");Array.from(document.querySelectorAll(`[name="${d}"]:not([id="${c}"])`)).forEach((n,m)=>{document.querySelector(`[for="${n.getAttribute("id")}"] iam-card`).dispatchEvent(new Event("inactive"))}),t.click(),o.checked?r.classList.add("checked"):r.classList.remove("checked")}else t.click();break}}),a){let e=this.getAttribute("data-add-link");a.addEventListener("click",o=>{o.stopPropagation(),o.preventDefault(),window.location=e})}}static get observedAttributes(){return["data-total","class","data-image"]}attributeChangedCallback(i,t,r){switch(i){case"data-total":{this.shadowRoot.querySelector(".card__total")&&(this.shadowRoot.querySelector(".card__total").innerHTML=r);break}case"class":{if(t!=r){let a=this.classList.toString();this.querySelector('*:not(.badge):not(small):not(.btn):not(button) > [class*="fa-"]:not(.btn)')&&(a+=" card--has-icon"),this.shadowRoot.querySelector(".card").setAttribute("class",`card ${a}`),this.shadowRoot.querySelector(".card").innerHTML=this.createCardConent()}break}case"data-image":{t!=r&&(this.shadowRoot.querySelector(".card").innerHTML=this.createCardConent());break}}}}export{g as default};
27
+ `,this.shadowRoot.appendChild(t.content.cloneNode(!0))}connectedCallback(){return v(this,void 0,void 0,function*(){const t=this;t.shadowRoot.querySelector(".card__head");const i=t.shadowRoot.querySelector(".card__body");if(t.shadowRoot.querySelector(".dialog__wrapper"),t.shadowRoot.querySelector(".dialog__wrapper button"),h(t),t.hasAttribute("data-illustration")&&i.insertAdjacentHTML("afterbegin",`<div class="card__illustration"><img src="${this.getAttribute("data-illustration")}" alt="" loading="lazy" /></div>`),!t.querySelector('[slot="btns"]')&&!t.querySelector('[slot="secondary"]')&&t.classList.add("show-icon"),t.querySelector('[slot="btns"]')&&(t.shadowRoot.innerHTML+=`<div class="dialog__wrapper">
28
+ <button class="btn btn-secondary btn-compact fa-ellipsis-vertical" popovertarget="actions" title="Further actions" type="button">Open further actions</button>
29
+ <div class="dialog--fix dialog--list" id="actions" popover>
30
+ <slot name="btns"></slot>
31
+ </div>
32
+ </div>`),Array.from(t.querySelectorAll('[slot="btns"]')).forEach((o,a)=>{o.classList.add("btn"),o.classList.add("btn-action")}),t.querySelector('[slot="checkbox"],[slot="secondary"]')){const o=t.querySelector('[slot="checkbox"],[slot="secondary"]');o.addEventListener("mouseenter",a=>{t.classList.add("prevent-hover")}),o.addEventListener("mouseleave",a=>{t.classList.remove("prevent-hover")})}if(t.shadowRoot.querySelector(".dialog__wrapper")){const o=t.shadowRoot.querySelector(".dialog__wrapper");o.addEventListener("mouseenter",a=>{t.classList.add("prevent-hover")}),o.addEventListener("mouseleave",a=>{t.classList.remove("prevent-hover")})}const e=t.querySelector('input[type="checkbox"]');e&&e.addEventListener("change",o=>{if(e.checked){const a=new CustomEvent("select-card",{detail:{"Card value":e.value,"input name":e.getAttribute("name")}});t.dispatchEvent(a)}else{const a=new CustomEvent("unselect-card",{detail:{"Card value":e.value,"input name":e.getAttribute("name")}});t.dispatchEvent(a)}});const n=t.querySelector('[slot="secondary"]');n&&n.addEventListener("click",o=>{const a=new CustomEvent("secondary-button-clicked",{detail:{Title:n.getAttribute("title")}});t.dispatchEvent(a)});const d=t.querySelectorAll('[slot="btns"]');Array.from(d).forEach((o,a)=>{o.addEventListener("click",p=>{const c=new CustomEvent("action-button-clicked",{detail:{Title:o.getAttribute("title")}});t.dispatchEvent(c)})}),g(t,"iam-card",["select-card","unselect-card","secondary-button-clicked","action-button-clicked"])})}static get observedAttributes(){return["data-image"]}attributeChangedCallback(t,i,e){switch(t){case"data-total":{this.shadowRoot.querySelector(".card__total")&&(this.shadowRoot.querySelector(".card__total").innerHTML=e);break}case"data-image":{if(i!=e){const n=this.shadowRoot.querySelector(".card__head img");n&&n.setAttribute("src",e)}break}}}}export{u as default};
38
33
  //# sourceMappingURL=card.component.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"card.component.min.js","sources":["card.component.js"],"sourcesContent":["// @ts-nocheck\n// Data layer Web component created\nwindow.dataLayer = window.dataLayer || [];\nwindow.dataLayer.push({\n \"event\": \"customElementRegistered\",\n \"element\": \"Card\"\n});\nclass iamCard extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n if (this.querySelector('*:not(.badge):not(small):not(.btn):not(button) > [class*=\"fa-\"]:not(.btn)'))\n this.classList.add('card--has-icon');\n let classList = this.classList.toString();\n const assetLocation = document.body.hasAttribute('data-assets-location') ? document.body.getAttribute('data-assets-location') : '/assets';\n const coreCSS = document.body.hasAttribute('data-core-css') ? document.body.getAttribute('data-core-css') : `${assetLocation}/css/core.min.css`;\n const loadCSS = `@import \"${assetLocation}/css/components/card.css\";`;\n const loadExtraCSS = `@import \"${assetLocation}/css/components/card.global.css\";`;\n const template = document.createElement('template');\n template.innerHTML = `\n <style>\n @import \"${coreCSS}\";\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=\"card ${classList}\" tabindex=\"0\" part=\"card\">\n ${this.createCardConent()}\n </div>\n `;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n // insert extra CSS\n if (!document.getElementById('cardGlobal'))\n document.head.insertAdjacentHTML('beforeend', `<style id=\"cardGlobal\">${loadExtraCSS}</style>`);\n }\n createCardConent() {\n // TODO split this out a bit\n return `${this.hasAttribute('data-image') || this.hasAttribute('data-record') ? `<div class=\"card__head\" part=\"head\">${this.hasAttribute('data-image') ? `<img src=\"${this.getAttribute('data-image')}\" alt=\"\" loading=\"lazy\" />` : ``} <div class=\"card__badges\"><slot name=\"badges\"></slot></div></div>` : ''}\n <div class=\"card__body\" part=\"body\">\n ${!this.hasAttribute('data-image') && this.querySelector('[slot=\"badges\"]') && this.querySelector('[slot=\"checkbox\"]') ? `<div class=\"card__badges card__badges--inline\"><slot name=\"badges\"></slot></div>` : ''}\n ${!this.hasAttribute('data-image') && !this.hasAttribute('data-record') && this.querySelector('[slot=\"badges\"]') ? `<div class=\"card__badges\"><slot name=\"badges\"></slot></div>` : ''}\n ${this.hasAttribute('data-illustration') ? `<div class=\"card__illustration\"><img src=\"${this.getAttribute('data-illustration')}\" alt=\"\" loading=\"lazy\" /></div>` : ''}\n <slot></slot>\n ${this.hasAttribute('data-total') ? `<div class=\"card__total\">${this.getAttribute('data-total')}</div>` : ''}\n </div>\n ${this.hasAttribute('data-add-link') ? `<button class=\"btn btn-compact btn-secondary fa-plus\">Add property</button>` : ''}\n <slot name=\"checkbox\"></slot>\n <slot name=\"primary-action\"></slot>\n <div class=\"dialog__wrapper d-none\">\n <button class=\"btn btn-secondary btn-compact fa-ellipsis-vertical\" popovertarget=\"actions\" title=\"${this.hasAttribute('data-menu-title') ? this.getAttribute('data-menu-title') : 'Further actions'}\">Lorum ipsum</button>\n <dialog class=\"dialog--fix dialog--list\" id=\"actions\" popover>\n <slot name=\"actions\"></slot>\n </dialog>\n </div>\n <div class=\"card__footer\" part=\"footer\">\n <slot name=\"footer\"></slot>\n <slot name=\"btns\"></slot>\n ${this.hasAttribute('data-cta') ? `<span class=\"link d-inline-block pt-0 mb-0\">${this.getAttribute('data-cta')}</span>` : ''}\n </div>`;\n }\n connectedCallback() {\n this.classList.add('loaded');\n // Mimic clicking the parent node so the focus and target events can be on the card\n const component = this;\n const parentNode = component.parentNode.closest('a, button, label, router-link');\n const card = this.shadowRoot.querySelector('.card');\n const btnCompact = this.shadowRoot.querySelector('.btn-compact');\n const recordType = this.hasAttribute('data-record') ? this.getAttribute('data-record') : '';\n // Add the actions slot to the buttons and links to move them into a dialog warpper\n const actionsWrapper = this.shadowRoot.querySelector('.dialog__wrapper');\n let buttons = component.querySelectorAll('button[slot=\"actions\"],a[slot=\"actions\"]');\n if (buttons.length) {\n const actionsWrapper = this.shadowRoot.querySelector('.dialog__wrapper');\n const actionsDialog = this.shadowRoot.querySelector('.dialog__wrapper dialog');\n const actionsBtn = actionsWrapper.querySelector('button');\n actionsWrapper.classList.remove('d-none');\n Array.from(buttons).forEach((button, index) => {\n button.classList.add('btn');\n button.classList.add('btn-action');\n });\n }\n else {\n actionsWrapper.remove();\n }\n /*\n If the parentNode is actually just a div,\n we don't want to look for anything or add events\n */\n if (!parentNode) {\n return false;\n }\n if (parentNode)\n parentNode.setAttribute('tabindex', '-1');\n if (parentNode.matches('label[for]')) {\n let isChecked = document.getElementById(parentNode.getAttribute('for')).checked;\n if (isChecked)\n card.classList.add('checked');\n else\n card.classList.remove('checked');\n }\n // Click event down\n this.addEventListener('click', (event) => {\n let clickEvent = new Event('click');\n card.dispatchEvent(clickEvent);\n });\n card.addEventListener('click', (event) => {\n if (parentNode.matches('label[for]')) {\n event.stopPropagation();\n event.preventDefault();\n const input = document.getElementById(parentNode.getAttribute('for'));\n const inputName = input.getAttribute('name');\n const inputID = input.getAttribute('id');\n // Mimic radio button functionality\n const inputs = Array.from(document.querySelectorAll(`[name=\"${inputName}\"][type=\"radio\"]:not([id=\"${inputID}\"])`));\n inputs.forEach((input, index) => {\n const otherCard = document.querySelector(`[for=\"${input.getAttribute('id')}\"] iam-card`);\n otherCard.dispatchEvent(new Event('inactive'));\n });\n parentNode.click();\n let isChecked = input.checked;\n if (isChecked)\n card.classList.add('checked');\n else\n card.classList.remove('checked');\n }\n });\n this.addEventListener('inactive', (event) => {\n card.classList.remove('checked');\n });\n card.addEventListener('keydown', (event) => {\n switch (event.keyCode) {\n case 32:\n case 13:\n if (parentNode.matches('label[for]')) {\n event.stopPropagation();\n event.preventDefault();\n const input = document.getElementById(parentNode.getAttribute('for'));\n const inputName = input.getAttribute('name');\n const inputID = input.getAttribute('id');\n const inputs = Array.from(document.querySelectorAll(`[name=\"${inputName}\"]:not([id=\"${inputID}\"])`));\n inputs.forEach((input, index) => {\n const otherCard = document.querySelector(`[for=\"${input.getAttribute('id')}\"] iam-card`);\n otherCard.dispatchEvent(new Event('inactive'));\n });\n parentNode.click();\n let isChecked = input.checked;\n if (isChecked)\n card.classList.add('checked');\n else\n card.classList.remove('checked');\n }\n else {\n parentNode.click();\n }\n break;\n default:\n break;\n }\n });\n if (btnCompact) {\n let addLocation = this.getAttribute('data-add-link');\n btnCompact.addEventListener('click', (event) => {\n event.stopPropagation();\n event.preventDefault();\n window.location = addLocation;\n });\n }\n }\n static get observedAttributes() {\n return [\"data-total\", \"class\", \"data-image\"];\n }\n attributeChangedCallback(attrName, oldVal, newVal) {\n switch (attrName) {\n case \"data-total\": {\n if (this.shadowRoot.querySelector('.card__total'))\n this.shadowRoot.querySelector('.card__total').innerHTML = newVal;\n break;\n }\n case \"class\": {\n if (oldVal != newVal) {\n let classList = this.classList.toString();\n if (this.querySelector('*:not(.badge):not(small):not(.btn):not(button) > [class*=\"fa-\"]:not(.btn)'))\n classList += ' card--has-icon';\n this.shadowRoot.querySelector('.card').setAttribute('class', `card ${classList}`);\n this.shadowRoot.querySelector('.card').innerHTML = this.createCardConent();\n }\n break;\n }\n case \"data-image\": {\n if (oldVal != newVal) {\n this.shadowRoot.querySelector('.card').innerHTML = this.createCardConent();\n }\n break;\n }\n }\n }\n}\nexport default iamCard;\n"],"names":["iamCard","classList","assetLocation","coreCSS","template","component","parentNode","card","btnCompact","actionsWrapper","buttons","button","index","event","clickEvent","input","inputName","inputID","addLocation","attrName","oldVal","newVal"],"mappings":"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"}
1
+ {"version":3,"file":"card.component.min.js","sources":["../_global.js","../../modules/card.module.js","card.component.js"],"sourcesContent":["// @ts-nocheck\nexport const trackComponentRegistered = (componentName) => {\n // Data layer Web component created\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n \"event\": \"customElementRegistered\",\n \"element\": componentName\n });\n};\nexport const trackComponent = (component, componentName, trackEvents) => {\n // Data layer Web component created\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n \"event\": \"customElementAdded\",\n \"element\": componentName\n });\n trackEvents.forEach((eventName) => {\n component.addEventListener(eventName, function (event) {\n let eventDetails = {\n \"event\": eventName,\n \"element\": componentName,\n \"target\": event.target\n };\n Object.keys(event.detail).forEach((eventKey) => {\n const eventDetail = event.detail[eventKey];\n eventDetails[eventKey] = eventDetail;\n });\n window.dataLayer.push(eventDetails);\n });\n });\n return true;\n};\n","export const cardHTML = `<div class=\"card__head\" part=\"head\">\n <slot name=\"head\"></slot>\n</div>\n<div class=\"card__badges\"><slot name=\"badges\"></slot></div>\n<slot name=\"checkbox\" class=\"activate-prevent-hover\"></slot>\n<div class=\"card__body\" part=\"body\">\n <slot></slot>\n <slot name=\"secondary\" part=\"secondary\"></slot>\n</div>\n<div class=\"card__details\" part=\"details\">\n <slot name=\"details\"></slot>\n</div>\n<div class=\"card__footer\" part=\"footer\">\n <slot name=\"footer\"></slot>\n</div>`;\nexport const setupCard = (cardComponent) => {\n cardComponent.classList.add('card');\n const cardHead = cardComponent.shadowRoot.querySelector('.card__head');\n const cardBody = cardComponent.shadowRoot.querySelector('.card__body');\n if (cardComponent.hasAttribute('data-image')) {\n cardHead.innerHTML += `<img src=\"${cardComponent.getAttribute('data-image')}\" alt=\"\" loading=\"lazy\" part=\"image\" />`;\n }\n // Inset the HTML for the data total or icon fallback\n if (cardComponent.hasAttribute('data-total')) {\n cardBody.insertAdjacentHTML('beforeend', `<div class=\"card__total\">${cardComponent.getAttribute('data-total')}</div>`);\n }\n else if (cardComponent.querySelector('[slot=\"total-icon\"]')) {\n cardBody.insertAdjacentHTML('beforeend', `<div class=\"card__total\"><slot name=\"total-icon\"></slot></div>`);\n }\n if (!cardComponent.querySelector('[slot=\"badges\"]')) {\n cardComponent.shadowRoot.querySelector('.card__badges').remove();\n }\n};\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n// @ts-nocheck\nimport { trackComponent, trackComponentRegistered } from \"../_global.js\";\nimport { cardHTML, setupCard } from \"../../modules/card.module.js\";\ntrackComponentRegistered(\"iam-card\");\nclass iamCard extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n const assetLocation = document.body.hasAttribute('data-assets-location') ? document.body.getAttribute('data-assets-location') : '/assets';\n const loadCSS = `@import \"${assetLocation}/css/components/card.component.css\";`;\n const template = document.createElement('template');\n template.innerHTML = `\n <style>\n ${this.hasAttribute('css') ? `@import \"${this.getAttribute('css')}\";` : ``}\n \n ${loadCSS}\n </style>\n ${cardHTML}\n <slot name=\"primary-action\"></slot>\n `;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n }\n connectedCallback() {\n return __awaiter(this, void 0, void 0, function* () {\n const cardComponent = this;\n const cardHead = cardComponent.shadowRoot.querySelector('.card__head');\n const cardBody = cardComponent.shadowRoot.querySelector('.card__body');\n const cardMenu = cardComponent.shadowRoot.querySelector('.dialog__wrapper');\n const btn = cardComponent.shadowRoot.querySelector('.dialog__wrapper button');\n setupCard(cardComponent);\n // Add Illustration HTML\n if (cardComponent.hasAttribute('data-illustration')) {\n cardBody.insertAdjacentHTML('afterbegin', `<div class=\"card__illustration\"><img src=\"${this.getAttribute('data-illustration')}\" alt=\"\" loading=\"lazy\" /></div>`);\n }\n // Add class that shows the right arrow icon\n if (!cardComponent.querySelector('[slot=\"btns\"]') && !cardComponent.querySelector('[slot=\"secondary\"]')) {\n cardComponent.classList.add('show-icon');\n }\n // Secondary buttons and actions\n // Add the dialog wrapper HTML\n if (cardComponent.querySelector('[slot=\"btns\"]')) {\n cardComponent.shadowRoot.innerHTML += `<div class=\"dialog__wrapper\">\n <button class=\"btn btn-secondary btn-compact fa-ellipsis-vertical\" popovertarget=\"actions\" title=\"Further actions\" type=\"button\">Open further actions</button>\n <div class=\"dialog--fix dialog--list\" id=\"actions\" popover>\n <slot name=\"btns\"></slot>\n </div>\n </div>`;\n }\n // Make sure slotted buttons and links have correct button classes\n Array.from(cardComponent.querySelectorAll('[slot=\"btns\"]')).forEach((button, index) => {\n button.classList.add('btn');\n button.classList.add('btn-action');\n });\n // Hide the default hover and focus states when interacting with the checkbox, dialog wrapper or secondary button\n if (cardComponent.querySelector('[slot=\"checkbox\"],[slot=\"secondary\"]')) {\n const element = cardComponent.querySelector('[slot=\"checkbox\"],[slot=\"secondary\"]');\n element.addEventListener('mouseenter', (event) => {\n cardComponent.classList.add('prevent-hover');\n });\n element.addEventListener('mouseleave', (event) => {\n cardComponent.classList.remove('prevent-hover');\n });\n }\n if (cardComponent.shadowRoot.querySelector('.dialog__wrapper')) {\n const element = cardComponent.shadowRoot.querySelector('.dialog__wrapper');\n element.addEventListener('mouseenter', (event) => {\n cardComponent.classList.add('prevent-hover');\n });\n element.addEventListener('mouseleave', (event) => {\n cardComponent.classList.remove('prevent-hover');\n });\n }\n // Dispatch events of selecting checkboxes\n const checkbox = cardComponent.querySelector('input[type=\"checkbox\"]');\n if (checkbox) {\n checkbox.addEventListener('change', (event) => {\n if (checkbox.checked) {\n const customEvent = new CustomEvent(\"select-card\", { detail: { 'Card value': checkbox.value, 'input name': checkbox.getAttribute('name') } });\n cardComponent.dispatchEvent(customEvent);\n }\n else {\n const customEvent = new CustomEvent(\"unselect-card\", { detail: { 'Card value': checkbox.value, 'input name': checkbox.getAttribute('name') } });\n cardComponent.dispatchEvent(customEvent);\n }\n });\n }\n // Dispatch events of click onto secondary buttons\n const secondaryBtn = cardComponent.querySelector('[slot=\"secondary\"]');\n if (secondaryBtn) {\n secondaryBtn.addEventListener('click', (event) => {\n const customEvent = new CustomEvent(\"secondary-button-clicked\", { detail: { 'Title': secondaryBtn.getAttribute('title') } });\n cardComponent.dispatchEvent(customEvent);\n });\n }\n // Dispatch events of click onto action buttons\n const actionBtns = cardComponent.querySelectorAll('[slot=\"btns\"]');\n Array.from(actionBtns).forEach((button, index) => {\n button.addEventListener('click', (event) => {\n const customEvent = new CustomEvent(\"action-button-clicked\", { detail: { 'Title': button.getAttribute('title') } });\n cardComponent.dispatchEvent(customEvent);\n });\n });\n trackComponent(cardComponent, \"iam-card\", ['select-card', 'unselect-card', 'secondary-button-clicked', 'action-button-clicked']);\n });\n }\n static get observedAttributes() {\n return [\"data-image\"];\n }\n attributeChangedCallback(attrName, oldVal, newVal) {\n switch (attrName) {\n case \"data-total\": {\n if (this.shadowRoot.querySelector('.card__total'))\n this.shadowRoot.querySelector('.card__total').innerHTML = newVal;\n break;\n }\n case \"data-image\": {\n if (oldVal != newVal) {\n const cardHeadImg = this.shadowRoot.querySelector('.card__head img');\n if (cardHeadImg)\n cardHeadImg.setAttribute('src', newVal);\n }\n break;\n }\n }\n }\n}\nexport default iamCard;\n"],"names":["trackComponentRegistered","componentName","trackComponent","component","trackEvents","eventName","event","eventDetails","eventKey","eventDetail","cardHTML","setupCard","cardComponent","cardHead","cardBody","__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","reject","fulfilled","step","e","rejected","result","iamCard","template","button","index","element","checkbox","customEvent","secondaryBtn","actionBtns","attrName","oldVal","newVal","cardHeadImg"],"mappings":"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"}