@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,9 +1,62 @@
1
1
  // @ts-nocheck
2
- function carousel(carouselElement, row) {
2
+ export const generateThumbnailList = function (carouselComponent) {
3
+ let thumbnailImages = [];
4
+ Array.from(carouselComponent.querySelectorAll(':scope > div')).forEach((slide, index) => {
5
+ if (slide.hasAttribute('data-thumbnail')) {
6
+ thumbnailImages[index] = slide.getAttribute('data-thumbnail');
7
+ }
8
+ });
9
+ return thumbnailImages;
10
+ };
11
+ export const generatePipsHTML = function (carouselComponent, thumbnailImages) {
12
+ let itemCount = carouselComponent.querySelectorAll(':scope > div').length;
13
+ let pips = "";
14
+ for (let i = 1; i <= itemCount; i++) {
15
+ let pipContent = null;
16
+ let pipClass = '';
17
+ if (thumbnailImages.length && thumbnailImages[i - 1]) {
18
+ pipClass = 'has-thumbnail';
19
+ pipContent = `<img src="${thumbnailImages[i - 1]}" alt="Slide ${i}" height="148"/>`;
20
+ }
21
+ else {
22
+ pipContent = `Slide ${i}`;
23
+ }
24
+ pips += `<button class="control-${i} ${pipClass}" data-slide="${i}" ${i == 1 ? "aria-current" : ""}>${pipContent}</button>`;
25
+ }
26
+ return pips;
27
+ };
28
+ const getProgressMax = function (itemCount, visibleItems) {
29
+ if (visibleItems == 1) {
30
+ return itemCount;
31
+ }
32
+ let max = (Math.ceil(itemCount / visibleItems) * visibleItems) - visibleItems;
33
+ return max + 1;
34
+ };
35
+ const getProgressPercent = function (value, max) {
36
+ return (((value - 1) / (max - 1)) * 100);
37
+ };
38
+ export const carousel = function (carouselComponent) {
3
39
  var scrollTimeout;
40
+ const carouselElement = carouselComponent.shadowRoot.querySelector('.carousel');
4
41
  let carouselInner = carouselElement.querySelector('.carousel__inner');
5
42
  let carouselControls = carouselElement.querySelector('.carousel__controls');
6
- let itemCount = row.querySelectorAll(':scope > .col').length;
43
+ let carouselProgress = carouselElement.querySelector('.carousel__progress [type="range"]');
44
+ let itemCount = carouselComponent.querySelectorAll(':scope > div').length;
45
+ let scrollArea = carouselInner.clientWidth;
46
+ let itemWidth = carouselComponent.querySelector(':scope > div').scrollWidth;
47
+ let visibleItems = Math.round(scrollArea / itemWidth);
48
+ carouselProgress.setAttribute('min', 1);
49
+ carouselProgress.setAttribute('step', visibleItems);
50
+ let progressMax = getProgressMax(itemCount, visibleItems);
51
+ carouselProgress.setAttribute('max', progressMax);
52
+ carouselProgress.value = 1;
53
+ let percent = getProgressPercent(1, progressMax);
54
+ carouselProgress.style.setProperty('--percent', percent + "%");
55
+ let stepperInterval, stepperEvent = "mouseup", stepperStart = "mousedown";
56
+ if ("ontouchstart" in document.documentElement) {
57
+ stepperEvent = "touchend";
58
+ stepperStart = "touchstart";
59
+ }
7
60
  // On scroll we need to make sure the buttons get corrected and the next testimonial is shown
8
61
  carouselInner.addEventListener('scroll', function (e) {
9
62
  clearTimeout(scrollTimeout);
@@ -12,13 +65,14 @@ function carousel(carouselElement, row) {
12
65
  let scrollWidth = carouselInner.scrollWidth;
13
66
  let scrollLeft = carouselInner.scrollLeft;
14
67
  let targetSlide = Math.round((scrollLeft / scrollWidth) * itemCount) + 1;
15
- let itemWidth = row.querySelector(':scope > .col').scrollWidth;
16
- let lastItemOffset = row.querySelector(':scope > .col:last-child').offsetLeft;
68
+ let itemWidth = carouselComponent.querySelector(':scope > div').scrollWidth;
69
+ let lastItemOffset = carouselComponent.querySelector(':scope > div:last-child').offsetLeft;
17
70
  //+60px here is to account for when the next offscreen slide is visible beneath the next arrow
18
71
  let lastItemInView = carouselInner.scrollLeft + scrollArea + carouselInner.getBoundingClientRect().left >= (lastItemOffset + 60);
19
72
  let visibleItems = Math.round(scrollArea / itemWidth);
20
73
  //Check if theres room for more slides than we have
21
74
  let leftOverSpace = (Math.ceil(itemCount / visibleItems) * visibleItems) - itemCount;
75
+ carouselProgress.setAttribute('step', visibleItems);
22
76
  if (leftOverSpace > 0 && lastItemInView) {
23
77
  targetSlide = (Math.floor(itemCount / visibleItems) * visibleItems) + 1;
24
78
  }
@@ -36,6 +90,12 @@ function carousel(carouselElement, row) {
36
90
  carouselElement.querySelector('.btn-next').setAttribute('disabled', 'disabled');
37
91
  else
38
92
  carouselElement.querySelector('.btn-next').removeAttribute('disabled');
93
+ carouselProgress.value = targetSlide;
94
+ progressMax = getProgressMax(itemCount, visibleItems);
95
+ carouselProgress.setAttribute('max', progressMax);
96
+ percent = (targetSlide / progressMax) * 100;
97
+ percent = getProgressPercent(targetSlide, progressMax);
98
+ carouselProgress.style.setProperty('--percent', percent + "%");
39
99
  }, 100);
40
100
  }, false);
41
101
  // when the buttons are used we need to make sure the carousel scrolls to the correct place
@@ -47,7 +107,12 @@ function carousel(carouselElement, row) {
47
107
  button.removeAttribute('aria-current');
48
108
  });
49
109
  target.setAttribute('aria-current', true);
50
- const el = row.querySelector(`:scope > *:nth-child(${target.getAttribute('data-slide')})`);
110
+ const customEvent = new CustomEvent("pip-clicked", { detail: {
111
+ 'slide': target.getAttribute('data-slide')
112
+ }
113
+ });
114
+ carouselComponent.dispatchEvent(customEvent);
115
+ const el = carouselComponent.querySelector(`:scope > *:nth-child(${target.getAttribute('data-slide')})`);
51
116
  carouselInner.scroll({
52
117
  top: 0,
53
118
  left: el.offsetLeft - carouselInner.getBoundingClientRect().left,
@@ -60,9 +125,9 @@ function carousel(carouselElement, row) {
60
125
  carouselElement.addEventListener('click', function (e) {
61
126
  let scrollArea = carouselInner.clientWidth;
62
127
  let scrollWidth = carouselInner.scrollWidth;
63
- let itemWidth = row.querySelector(':scope > .col').scrollWidth;
128
+ let itemWidth = carouselComponent.querySelector(':scope > div').scrollWidth;
64
129
  let visibleItems = Math.round(scrollArea / itemWidth);
65
- let lastItemOffset = row.querySelector(':scope > .col:last-child').offsetLeft;
130
+ let lastItemOffset = carouselComponent.querySelector(':scope > div:last-child').offsetLeft;
66
131
  let lastItemInView = carouselInner.scrollLeft + scrollArea + carouselInner.getBoundingClientRect().left >= (lastItemOffset + 60);
67
132
  //Check if theres room for more slides than we have
68
133
  let leftOverSpace = (Math.ceil(itemCount / visibleItems) * visibleItems) - itemCount;
@@ -75,6 +140,12 @@ function carousel(carouselElement, row) {
75
140
  let movement = lastItemInView && leftOverSpace > 0 ? spacesToMove * itemWidth : carouselInner.clientWidth;
76
141
  for (var target = e.target; target && target != this; target = target.parentNode) {
77
142
  if (typeof target.matches == "function" && target.matches('.btn-next, .btn-prev')) {
143
+ let direction = target.matches('.btn-next') ? 'next' : 'prev';
144
+ const customEvent = new CustomEvent(`${direction}-clicked`, { detail: {
145
+ 'slide': target.getAttribute('data-go')
146
+ }
147
+ });
148
+ carouselComponent.dispatchEvent(customEvent);
78
149
  e.preventDefault();
79
150
  let scrollTo = target.classList.contains('btn-prev') ? carouselInner.scrollLeft - movement : carouselInner.scrollLeft + carouselInner.clientWidth;
80
151
  carouselInner.scroll({
@@ -86,5 +157,36 @@ function carousel(carouselElement, row) {
86
157
  }
87
158
  }
88
159
  }, false);
89
- }
160
+ carouselProgress.addEventListener(stepperStart, function (event) {
161
+ clearInterval(stepperInterval);
162
+ stepperInterval = setInterval(function () {
163
+ scrollArea = carouselInner.clientWidth;
164
+ itemWidth = carouselComponent.querySelector(':scope > div').scrollWidth;
165
+ visibleItems = Math.round(scrollArea / itemWidth);
166
+ carouselProgress.setAttribute('step', visibleItems);
167
+ progressMax = getProgressMax(itemCount, visibleItems);
168
+ carouselProgress.setAttribute('max', progressMax);
169
+ percent = getProgressPercent(carouselProgress.value, progressMax);
170
+ carouselProgress.style.setProperty('--percent', percent + "%");
171
+ }, 10);
172
+ });
173
+ carouselProgress.addEventListener(stepperEvent, function (event) {
174
+ clearInterval(stepperInterval);
175
+ });
176
+ carouselProgress.addEventListener('change', function (e) {
177
+ clearInterval(stepperInterval);
178
+ let target = carouselComponent.querySelector(`:scope > *:nth-child(${carouselProgress.value})`);
179
+ carouselInner.scroll({
180
+ top: 0,
181
+ left: target ? target.offsetLeft - carouselInner.getBoundingClientRect().left : 0,
182
+ behavior: 'smooth'
183
+ });
184
+ let direction = target.matches('.btn-next') ? 'next' : 'prev';
185
+ const customEvent = new CustomEvent(`slider-changed`, { detail: {
186
+ 'slide': carouselProgress.value
187
+ }
188
+ });
189
+ carouselComponent.dispatchEvent(customEvent);
190
+ }, false);
191
+ };
90
192
  export default carousel;
@@ -557,8 +557,8 @@ export const createPies = function (chartOuter) {
557
557
  const largeArcFlag = percent > .5 ? 1 : 0; // if the slice is more than 50%, take the large arc (the long way around)
558
558
  const pathData = [
559
559
  `M 0 0`,
560
- `L ${(startX ? startX.toFixed(0) : 0)} ${(startY ? startY.toFixed(0) : 0)}`,
561
- `A 100 100 0 ${largeArcFlag} 1 ${(endX ? endX.toFixed(0) : 0)} ${(endY ? endY.toFixed(0) : 0)}`,
560
+ `L ${(startX ? startX.toFixed(0) : 0)} ${(startY ? startY.toFixed(0) : 0)}`, // Move
561
+ `A 100 100 0 ${largeArcFlag} 1 ${(endX ? endX.toFixed(0) : 0)} ${(endY ? endY.toFixed(0) : 0)}`, // Arc
562
562
  `L 0 0`, // Line
563
563
  ].join(' ');
564
564
  paths += `<path d="${pathData}" style="${td.getAttribute('style')} --path-index: ${subindex};${hide}"></path>`;
@@ -1,5 +1,4 @@
1
1
  // @ts-nocheck
2
- import { createEmbed } from "./youtubevideo.js";
3
2
  const extendDialogs = (body) => {
4
3
  Array.from(body.querySelectorAll('dialog[open]')).forEach((dialog, index) => {
5
4
  let parent = dialog.closest('.dialog__wrapper');
@@ -23,8 +22,10 @@ const extendDialogs = (body) => {
23
22
  // Open the modal!
24
23
  dialog.showModal();
25
24
  dialog.focus();
26
- let firstWidth = dialog.offsetWidth;
27
- dialog.setAttribute('style', `max-width: ${firstWidth}px;`);
25
+ if (!dialog.querySelector('iam-multi-step')) {
26
+ let firstWidth = dialog.offsetWidth;
27
+ dialog.setAttribute('style', `max-width: ${firstWidth}px;`);
28
+ }
28
29
  // When the modal is opened we want to make sure any duplicate checkboxes are matching the originals
29
30
  Array.from(dialog.querySelectorAll('[data-duplicate]')).forEach((element, index) => {
30
31
  const id = element.getAttribute('data-duplicate');
@@ -169,17 +170,8 @@ const extendDialogs = (body) => {
169
170
  return null;
170
171
  };
171
172
  export const createDialog = (dialog) => {
172
- // Create the video embed
173
- let videoButton = dialog.querySelector('.youtube-embed a');
174
- if (videoButton) {
175
- createEmbed(videoButton);
176
- }
177
- // Multi dialog
178
- if (dialog.classList.contains('dialog--multi') && !dialog.querySelector(':scope > .steps')) {
179
- createMultiFormDialog(dialog);
180
- }
181
173
  // If you are using Vue eevents and bindings its recommended to add in the .mh-lg div manually to the dialog
182
- if (!dialog.querySelector(':scope .mh-lg') && !dialog.classList.contains('dialog--multi')) {
174
+ if (!dialog.querySelector(':scope .mh-lg') && !dialog.querySelector('iam-multi-step')) {
183
175
  dialog.innerHTML = `<div class="mh-lg">${dialog.innerHTML}</div>`;
184
176
  let dialogContent = dialog.querySelector('.mh-lg');
185
177
  let titleElement = dialog.querySelector('.mh-lg :is(.h1,.h2,.h3,.h4,.h5,.h6)');
@@ -194,120 +186,4 @@ export const createDialog = (dialog) => {
194
186
  if (!dialog.querySelector(':scope > button:first-child'))
195
187
  dialog.insertAdjacentHTML('afterbegin', `<button class="dialog__close">Close</button>`);
196
188
  };
197
- export const createMultiFormDialog = (dialog) => {
198
- let buttons = "";
199
- let fieldsets = Array.from(dialog.querySelectorAll('fieldset[data-title]'));
200
- let form = dialog.querySelector('form');
201
- fieldsets.forEach((fieldset, index) => {
202
- buttons += `<button data-title="${fieldset.getAttribute('data-title')}" type="button" class="${index == 0 ? "active" : ""}" tabindex="-1">${fieldset.getAttribute('data-title')}</button>`;
203
- const btnWrapper = document.createElement("div");
204
- btnWrapper.classList.add('btn--wrapper');
205
- fieldset.appendChild(btnWrapper);
206
- if (index != 0)
207
- btnWrapper.innerHTML += `<button data-title="${fieldsets[index - 1].getAttribute('data-title')}" class="btn btn-secondary mb-0" data-previous type="button">Previous</button>`;
208
- if (index != fieldsets.length - 1)
209
- btnWrapper.innerHTML += `<button data-title="${fieldsets[index + 1].getAttribute('data-title')}" class="btn btn-primary mb-0" data-next type="button">Next</button>`;
210
- // Last fieldset
211
- if (index == fieldsets.length - 1) {
212
- if (form && form.querySelector(':scope > button[type="submit"]')) {
213
- let existingButton = form.querySelector(':scope > button[type="submit"]');
214
- existingButton.classList.add('mb-0');
215
- btnWrapper.insertAdjacentElement('beforeend', existingButton);
216
- }
217
- else
218
- btnWrapper.innerHTML += `<button data-title="${fieldsets[index].getAttribute('data-title')}" class="btn btn-primary mb-0" data-next type="submit">Submit</button>`;
219
- }
220
- });
221
- dialog.insertAdjacentHTML('afterbegin', `<div class="steps bg-primary">${buttons}</div>`);
222
- // Open the fieldset with an error inside
223
- let validatedFieldsets = Array.from(dialog.querySelectorAll('fieldset.was-validated'));
224
- for (let i = 0; i < validatedFieldsets.length; i++) {
225
- let fieldset = validatedFieldsets[i];
226
- let fieldsetID = fieldset.getAttribute('data-title');
227
- if (fieldset.querySelector('.is-invalid')) {
228
- Array.from(dialog.querySelectorAll(`[data-title="${fieldsetID}"]`)).forEach((element, index) => {
229
- element.classList.add('active');
230
- });
231
- break;
232
- }
233
- else {
234
- Array.from(dialog.querySelectorAll(`[data-title="${fieldsetID}"]`)).forEach((element, index) => {
235
- element.classList.add('valid');
236
- });
237
- }
238
- }
239
- // Prevent the bubble messages
240
- dialog.addEventListener('invalid', (function () {
241
- return function (e) {
242
- e.preventDefault();
243
- };
244
- })(), true);
245
- function validateFieldset(button) {
246
- const currentFieldset = dialog.querySelector(`fieldset.active`) ? dialog.querySelector(`fieldset.active`) : dialog.querySelector(`fieldset[data-title]`);
247
- const currentFieldsetID = currentFieldset.getAttribute('data-title');
248
- let isFieldsetValid = true;
249
- currentFieldset.classList.add('was-validated');
250
- Array.from(currentFieldset.querySelectorAll('input')).forEach((input, index) => {
251
- if (!input.checkValidity())
252
- isFieldsetValid = false;
253
- });
254
- // If valid mode to next field set
255
- if (!isFieldsetValid) {
256
- Array.from(dialog.querySelectorAll(`[data-title="${currentFieldsetID}"]`)).forEach((element, index) => {
257
- element.classList.remove('valid');
258
- });
259
- }
260
- else {
261
- Array.from(dialog.querySelectorAll(`[data-title="${currentFieldsetID}"]`)).forEach((element, index) => {
262
- element.classList.add('valid');
263
- });
264
- }
265
- // Allow the previous button to navigate
266
- if (isFieldsetValid || !button.hasAttribute('data-next')) {
267
- const fieldset = dialog.querySelector(`fieldset[data-title="${button.getAttribute('data-title')}"]`);
268
- const step = dialog.querySelector(`.steps button[data-title="${button.getAttribute('data-title')}"]`);
269
- Array.from(dialog.querySelectorAll('button')).forEach((button, index) => {
270
- button.classList.remove('active');
271
- });
272
- Array.from(dialog.querySelectorAll('fieldset')).forEach((button, index) => {
273
- button.classList.remove('active');
274
- });
275
- step.classList.add('active');
276
- fieldset.classList.add('active');
277
- }
278
- let fieldsetCount = Array.from(dialog.querySelectorAll(`fieldset`)).length;
279
- let validFieldsetCount = Array.from(dialog.querySelectorAll(`fieldset.valid`)).length;
280
- // update the progress bar
281
- dialog.style.setProperty('--progress', `${(validFieldsetCount / (fieldsetCount - 1) * 100)}%`);
282
- }
283
- // remove error messages from server
284
- dialog.addEventListener('keydown', (event) => {
285
- if (event && event.target instanceof HTMLElement && event.target.closest('button')) {
286
- const button = event.target.closest('button');
287
- if (event.keyCode == 13 && button.getAttribute('type') != "submit") {
288
- event.preventDefault();
289
- validateFieldset(button);
290
- }
291
- }
292
- if (event && event.target instanceof HTMLElement && event.target.closest('input')) {
293
- const input = event.target.closest('input');
294
- input.classList.remove('is-invalid');
295
- if (event.keyCode == 13) {
296
- event.preventDefault();
297
- }
298
- }
299
- });
300
- dialog.addEventListener('click', (event) => {
301
- if (event && event.target instanceof HTMLElement && event.target.closest('button[type="submit"]')) {
302
- const form = event.target.closest('form');
303
- form.classList.add('was-validated');
304
- }
305
- else if (event && event.target instanceof HTMLElement && event.target.closest('button[data-title]')) {
306
- const button = event.target.closest('button[data-title]');
307
- validateFieldset(button);
308
- }
309
- ;
310
- return null;
311
- });
312
- };
313
189
  export default extendDialogs;
@@ -546,7 +546,7 @@ export const filterTable = (table, form, wrapper) => {
546
546
  }
547
547
  });
548
548
  // Work out what to display after pagination
549
- Array.from(table.querySelectorAll('tbody tr:not(.filtered')).forEach((row, index) => {
549
+ Array.from(table.querySelectorAll('tbody tr:not(.filtered)')).forEach((row, index) => {
550
550
  matched++;
551
551
  row.classList.add('filtered--matched');
552
552
  // pagination bit