@iamproperty/components 7.0.0 → 7.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 (411) hide show
  1. package/assets/css/components/actionbar.css.map +1 -1
  2. package/assets/css/components/actionbar.global.css.map +1 -1
  3. package/assets/css/components/address-lookup.css.map +1 -1
  4. package/assets/css/components/applied-filters.css.map +1 -1
  5. package/assets/css/components/barchart.component.css +1 -1
  6. package/assets/css/components/barchart.component.css.map +1 -1
  7. package/assets/css/components/card.component.css +1 -1
  8. package/assets/css/components/card.component.css.map +1 -1
  9. package/assets/css/components/card.module.css.map +1 -1
  10. package/assets/css/components/carousel.component.css +1 -1
  11. package/assets/css/components/carousel.component.css.map +1 -1
  12. package/assets/css/components/carousel.config.css.map +1 -1
  13. package/assets/css/components/charts.config.css.map +1 -1
  14. package/assets/css/components/charts.css +1 -1
  15. package/assets/css/components/charts.css.map +1 -1
  16. package/assets/css/components/charts.module.css +1 -1
  17. package/assets/css/components/charts.module.css.map +1 -1
  18. package/assets/css/components/collapsible-side.css.map +1 -1
  19. package/assets/css/components/fileupload.css.map +1 -1
  20. package/assets/css/components/filter-card.component.css.map +1 -1
  21. package/assets/css/components/header.css.map +1 -1
  22. package/assets/css/components/inline-edit.css.map +1 -1
  23. package/assets/css/components/inline-edit.preload.css.map +1 -1
  24. package/assets/css/components/marketing.css.map +1 -1
  25. package/assets/css/components/multi-step.component.css.map +1 -1
  26. package/assets/css/components/multiselect.css +1 -1
  27. package/assets/css/components/multiselect.css.map +1 -1
  28. package/assets/css/components/multiselect.preload.css.map +1 -1
  29. package/assets/css/components/nav.css +1 -1
  30. package/assets/css/components/nav.css.map +1 -1
  31. package/assets/css/components/nav.docs.css.map +1 -1
  32. package/assets/css/components/nav.global.css +1 -1
  33. package/assets/css/components/nav.global.css.map +1 -1
  34. package/assets/css/components/nav.old.css +1 -1
  35. package/assets/css/components/nav.old.css.map +1 -1
  36. package/assets/css/components/nav.preload.css.map +1 -1
  37. package/assets/css/components/notification.css.map +1 -1
  38. package/assets/css/components/notification.global.css.map +1 -1
  39. package/assets/css/components/pagination.css.map +1 -1
  40. package/assets/css/components/property-searchbar.css +1 -1
  41. package/assets/css/components/property-searchbar.css.map +1 -1
  42. package/assets/css/components/record-card.component.css.map +1 -1
  43. package/assets/css/components/slider.css.map +1 -1
  44. package/assets/css/components/snapshot.css.map +1 -1
  45. package/assets/css/components/stepper.css.map +1 -1
  46. package/assets/css/components/table.css +1 -1
  47. package/assets/css/components/table.css.map +1 -1
  48. package/assets/css/components/table.global.css +1 -1
  49. package/assets/css/components/table.global.css.map +1 -1
  50. package/assets/css/components/tabs.css.map +1 -1
  51. package/assets/css/components/testimonial.css.map +1 -1
  52. package/assets/css/components/timeline.css +1 -1
  53. package/assets/css/components/timeline.css.map +1 -1
  54. package/assets/css/components/video-card.component.css.map +1 -1
  55. package/assets/css/core.min.css +1 -1
  56. package/assets/css/core.min.css.map +1 -1
  57. package/assets/css/style.min.css +1 -1
  58. package/assets/css/style.min.css.map +1 -1
  59. package/assets/js/components/_global.js +8 -8
  60. package/assets/js/components/accordion/accordion.component.js +13 -10
  61. package/assets/js/components/accordion/accordion.component.min.js +4 -4
  62. package/assets/js/components/accordion/accordion.component.min.js.map +1 -1
  63. package/assets/js/components/actionbar/actionbar.component.js +97 -83
  64. package/assets/js/components/actionbar/actionbar.component.min.js +5 -5
  65. package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
  66. package/assets/js/components/address-lookup/address-lookup.component.js +30 -26
  67. package/assets/js/components/address-lookup/address-lookup.component.min.js +4 -4
  68. package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -1
  69. package/assets/js/components/applied-filters/applied-filters.component.js +10 -6
  70. package/assets/js/components/applied-filters/applied-filters.component.min.js +3 -3
  71. package/assets/js/components/applied-filters/applied-filters.component.min.js.map +1 -1
  72. package/assets/js/components/barchart/barchart.component.js +8 -7
  73. package/assets/js/components/barchart/barchart.component.min.js +4 -4
  74. package/assets/js/components/barchart/barchart.component.min.js.map +1 -1
  75. package/assets/js/components/card/card.component.js +27 -12
  76. package/assets/js/components/card/card.component.min.js +3 -3
  77. package/assets/js/components/card/card.component.min.js.map +1 -1
  78. package/assets/js/components/carousel/carousel.component.js +18 -12
  79. package/assets/js/components/carousel/carousel.component.min.js +4 -4
  80. package/assets/js/components/carousel/carousel.component.min.js.map +1 -1
  81. package/assets/js/components/chart/chart.component.js +9 -8
  82. package/assets/js/components/collapsible-side/collapsible-side.component.js +20 -8
  83. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +1 -1
  84. package/assets/js/components/collapsible-side/collapsible-side.component.min.js.map +1 -1
  85. package/assets/js/components/fileupload/fileupload.component.js +11 -7
  86. package/assets/js/components/fileupload/fileupload.component.min.js +2 -2
  87. package/assets/js/components/fileupload/fileupload.component.min.js.map +1 -1
  88. package/assets/js/components/filter-card/filter-card.component.js +19 -9
  89. package/assets/js/components/filter-card/filter-card.component.min.js +2 -2
  90. package/assets/js/components/filter-card/filter-card.component.min.js.map +1 -1
  91. package/assets/js/components/filterlist/filterlist.component.js +10 -6
  92. package/assets/js/components/filterlist/filterlist.component.min.js +3 -3
  93. package/assets/js/components/filterlist/filterlist.component.min.js.map +1 -1
  94. package/assets/js/components/header/header.component.js +8 -4
  95. package/assets/js/components/header/header.component.min.js +1 -1
  96. package/assets/js/components/header/header.component.min.js.map +1 -1
  97. package/assets/js/components/inline-edit/inline-edit.component.js +43 -23
  98. package/assets/js/components/inline-edit/inline-edit.component.min.js +4 -4
  99. package/assets/js/components/inline-edit/inline-edit.component.min.js.map +1 -1
  100. package/assets/js/components/marketing/marketing.component.js +11 -5
  101. package/assets/js/components/marketing/marketing.component.min.js +1 -1
  102. package/assets/js/components/marketing/marketing.component.min.js.map +1 -1
  103. package/assets/js/components/multi-step/multi-step.component.js +22 -19
  104. package/assets/js/components/multiselect/multiselect.component.js +62 -45
  105. package/assets/js/components/multiselect/multiselect.component.min.js +5 -5
  106. package/assets/js/components/multiselect/multiselect.component.min.js.map +1 -1
  107. package/assets/js/components/nav/nav.component.js +57 -38
  108. package/assets/js/components/nav/nav.component.min.js +5 -5
  109. package/assets/js/components/nav/nav.component.min.js.map +1 -1
  110. package/assets/js/components/notification/notification.component.js +9 -5
  111. package/assets/js/components/notification/notification.component.min.js +5 -5
  112. package/assets/js/components/notification/notification.component.min.js.map +1 -1
  113. package/assets/js/components/pagination/pagination.component.js +18 -14
  114. package/assets/js/components/pagination/pagination.component.min.js +2 -2
  115. package/assets/js/components/pagination/pagination.component.min.js.map +1 -1
  116. package/assets/js/components/record-card/record-card.component.js +10 -8
  117. package/assets/js/components/record-card/record-card.component.min.js +2 -2
  118. package/assets/js/components/record-card/record-card.component.min.js.map +1 -1
  119. package/assets/js/components/search/search.component.js +22 -17
  120. package/assets/js/components/search/search.component.min.js +4 -4
  121. package/assets/js/components/search/search.component.min.js.map +1 -1
  122. package/assets/js/components/slider/slider.component.js +25 -21
  123. package/assets/js/components/slider/slider.component.min.js +3 -3
  124. package/assets/js/components/slider/slider.component.min.js.map +1 -1
  125. package/assets/js/components/table/table.component.js +30 -24
  126. package/assets/js/components/table/table.component.min.js +7 -7
  127. package/assets/js/components/table/table.component.min.js.map +1 -1
  128. package/assets/js/components/tabs/tabs.component.js +10 -6
  129. package/assets/js/components/tabs/tabs.component.min.js +3 -3
  130. package/assets/js/components/tabs/tabs.component.min.js.map +1 -1
  131. package/assets/js/components/video-card/video-card.component.js +45 -33
  132. package/assets/js/components/video-card/video-card.component.min.js +3 -3
  133. package/assets/js/components/video-card/video-card.component.min.js.map +1 -1
  134. package/assets/js/components.bundle.js +1 -1
  135. package/assets/js/components.bundle.js.map +1 -1
  136. package/assets/js/components.js +35 -8
  137. package/assets/js/modules/applied-filters.js +20 -20
  138. package/assets/js/modules/carousel.js +65 -60
  139. package/assets/js/modules/chart.js +184 -134
  140. package/assets/js/modules/chart.module.js +74 -63
  141. package/assets/js/modules/data-layer.js +17 -17
  142. package/assets/js/modules/dialogs.js +47 -38
  143. package/assets/js/modules/drawer.js +1 -1
  144. package/assets/js/modules/dynamicEvents.js +24 -24
  145. package/assets/js/modules/file-upload.js +8 -9
  146. package/assets/js/modules/fileupload.js +5 -5
  147. package/assets/js/modules/filterlist.js +4 -4
  148. package/assets/js/modules/form.js +22 -18
  149. package/assets/js/modules/helpers.js +54 -44
  150. package/assets/js/modules/inputs.js +25 -21
  151. package/assets/js/modules/nav.js +3 -1
  152. package/assets/js/modules/notification.js +6 -6
  153. package/assets/js/modules/orderablelist.js +12 -12
  154. package/assets/js/modules/pagination.js +5 -5
  155. package/assets/js/modules/table.js +242 -181
  156. package/assets/js/modules/tabs.js +71 -60
  157. package/assets/js/modules/testimonial.js +11 -12
  158. package/assets/js/scripts.bundle.js +1 -1
  159. package/assets/js/scripts.bundle.js.map +1 -1
  160. package/assets/js/scripts.bundle.min.js +1 -1
  161. package/assets/js/scripts.bundle.min.js.map +1 -1
  162. package/assets/js/scripts.js +1 -1
  163. package/assets/js/tests/chart.spec.js +5 -5
  164. package/assets/js/tests/filterlist.spec.js +2 -2
  165. package/assets/js/tests/slider.spec.js +2 -2
  166. package/assets/js/tests/table.spec.js +2 -2
  167. package/assets/js/vendor/hibp.js +4 -4
  168. package/assets/sass/_components.scss +28 -40
  169. package/assets/sass/_corefiles.scss +22 -29
  170. package/assets/sass/_elements.scss +19 -19
  171. package/assets/sass/_fonts.scss +10 -7
  172. package/assets/sass/_func.scss +14 -14
  173. package/assets/sass/_functions/functions.scss +115 -90
  174. package/assets/sass/_functions/mixins.scss +72 -112
  175. package/assets/sass/_functions/utilities.scss +447 -393
  176. package/assets/sass/_functions/variables.scss +1357 -1371
  177. package/assets/sass/_print.scss +18 -16
  178. package/assets/sass/_tests/colours.spec.scss +15 -14
  179. package/assets/sass/_tests/func.spec.scss +1 -2
  180. package/assets/sass/_tests/mixins.spec.scss +9 -14
  181. package/assets/sass/_tests/typography.spec.scss +1 -2
  182. package/assets/sass/_utilities.scss +8 -12
  183. package/assets/sass/components/actionbar.global.scss +45 -64
  184. package/assets/sass/components/actionbar.scss +58 -84
  185. package/assets/sass/components/address-lookup.scss +9 -11
  186. package/assets/sass/components/applied-filters.scss +3 -7
  187. package/assets/sass/components/barchart.component.scss +68 -99
  188. package/assets/sass/components/card.component.scss +35 -50
  189. package/assets/sass/components/card.module.scss +34 -37
  190. package/assets/sass/components/carousel.component.scss +198 -177
  191. package/assets/sass/components/carousel.config.scss +13 -19
  192. package/assets/sass/components/charts.config.scss +16 -23
  193. package/assets/sass/components/charts.module.scss +139 -178
  194. package/assets/sass/components/charts.scss +173 -232
  195. package/assets/sass/components/collapsible-side.scss +65 -98
  196. package/assets/sass/components/fileupload.scss +17 -23
  197. package/assets/sass/components/filter-card.component.scss +21 -28
  198. package/assets/sass/components/header.scss +24 -37
  199. package/assets/sass/components/inline-edit.preload.scss +24 -45
  200. package/assets/sass/components/inline-edit.scss +4 -5
  201. package/assets/sass/components/marketing.scss +19 -14
  202. package/assets/sass/components/multi-step.component.scss +36 -42
  203. package/assets/sass/components/multiselect.preload.scss +9 -12
  204. package/assets/sass/components/multiselect.scss +20 -24
  205. package/assets/sass/components/nav.docs.scss +7 -15
  206. package/assets/sass/components/nav.global.scss +123 -177
  207. package/assets/sass/components/nav.old.scss +64 -135
  208. package/assets/sass/components/nav.preload.scss +11 -12
  209. package/assets/sass/components/nav.scss +126 -173
  210. package/assets/sass/components/notification.global.scss +2 -3
  211. package/assets/sass/components/notification.scss +17 -32
  212. package/assets/sass/components/pagination.scss +32 -44
  213. package/assets/sass/components/property-searchbar.scss +2 -6
  214. package/assets/sass/components/record-card.component.scss +42 -55
  215. package/assets/sass/components/slider.scss +38 -35
  216. package/assets/sass/components/snapshot.scss +4 -10
  217. package/assets/sass/components/stepper.scss +14 -22
  218. package/assets/sass/components/table.global.scss +130 -171
  219. package/assets/sass/components/table.scss +17 -27
  220. package/assets/sass/components/tabs.scss +23 -32
  221. package/assets/sass/components/testimonial.scss +6 -14
  222. package/assets/sass/components/timeline.scss +8 -12
  223. package/assets/sass/components/video-card.component.scss +9 -14
  224. package/assets/sass/components.reset.scss +5 -5
  225. package/assets/sass/core.scss +3 -3
  226. package/assets/sass/elements/admin-panel.scss +41 -45
  227. package/assets/sass/elements/badge-tag.scss +16 -26
  228. package/assets/sass/elements/brand.scss +13 -16
  229. package/assets/sass/elements/buttons.scss +80 -106
  230. package/assets/sass/elements/container.scss +24 -133
  231. package/assets/sass/elements/details.scss +30 -50
  232. package/assets/sass/elements/dialog.scss +4 -6
  233. package/assets/sass/elements/forms.scss +421 -437
  234. package/assets/sass/elements/icons.scss +3 -4
  235. package/assets/sass/elements/links.scss +17 -25
  236. package/assets/sass/elements/lists.scss +30 -47
  237. package/assets/sass/elements/media.scss +1 -4
  238. package/assets/sass/elements/modal.scss +54 -80
  239. package/assets/sass/elements/popover.scss +28 -45
  240. package/assets/sass/elements/progress.scss +30 -40
  241. package/assets/sass/elements/table.element.scss +10 -15
  242. package/assets/sass/elements/tooltips.scss +27 -49
  243. package/assets/sass/elements/type.scss +47 -53
  244. package/assets/sass/email.scss +7 -9
  245. package/assets/sass/error.scss +23 -20
  246. package/assets/sass/foundations/bs_grid.scss +0 -1
  247. package/assets/sass/foundations/grid.scss +120 -122
  248. package/assets/sass/foundations/reboot.scss +27 -35
  249. package/assets/sass/foundations/root.scss +21 -31
  250. package/assets/sass/helpers/dynamic.scss +5 -5
  251. package/assets/sass/helpers/line-clamp.scss +1 -2
  252. package/assets/sass/helpers/max-height.scss +28 -36
  253. package/assets/sass/helpers/wider-colours.scss +2 -5
  254. package/assets/sass/main.scss +4 -4
  255. package/assets/sass/templates/auth.scss +11 -18
  256. package/assets/sass/templates/form.scss +16 -29
  257. package/assets/ts/components/_global.ts +14 -17
  258. package/assets/ts/components/accordion/accordion.component.ts +23 -19
  259. package/assets/ts/components/actionbar/README.md +8 -7
  260. package/assets/ts/components/actionbar/actionbar.component.ts +170 -220
  261. package/assets/ts/components/address-lookup/address-lookup.component.ts +94 -130
  262. package/assets/ts/components/applied-filters/README.md +1 -1
  263. package/assets/ts/components/applied-filters/applied-filters.component.ts +16 -15
  264. package/assets/ts/components/barchart/barchart.component.ts +29 -26
  265. package/assets/ts/components/card/card.component.ts +56 -57
  266. package/assets/ts/components/carousel/README.md +8 -9
  267. package/assets/ts/components/carousel/carousel.component.ts +30 -33
  268. package/assets/ts/components/chart/README.md +1 -3
  269. package/assets/ts/components/chart/chart.component.ts +24 -36
  270. package/assets/ts/components/collapsible-side/README.md +1 -1
  271. package/assets/ts/components/collapsible-side/collapsible-side.component.ts +44 -57
  272. package/assets/ts/components/fileupload/README.md +3 -3
  273. package/assets/ts/components/fileupload/fileupload.component.ts +23 -28
  274. package/assets/ts/components/filter-card/filter-card.component.ts +32 -33
  275. package/assets/ts/components/filterlist/README.md +3 -3
  276. package/assets/ts/components/filterlist/filterlist.component.ts +18 -16
  277. package/assets/ts/components/header/README.md +8 -9
  278. package/assets/ts/components/header/header.component.ts +15 -16
  279. package/assets/ts/components/inline-edit/README.md +1 -0
  280. package/assets/ts/components/inline-edit/inline-edit.component.ts +71 -71
  281. package/assets/ts/components/marketing/marketing.component.ts +17 -16
  282. package/assets/ts/components/multi-step/multi-step.component.ts +114 -156
  283. package/assets/ts/components/multiselect/README.md +5 -5
  284. package/assets/ts/components/multiselect/multiselect.component.ts +116 -133
  285. package/assets/ts/components/nav/README.md +13 -13
  286. package/assets/ts/components/nav/nav.component.ts +171 -167
  287. package/assets/ts/components/notification/README.md +9 -9
  288. package/assets/ts/components/notification/notification.component.ts +33 -32
  289. package/assets/ts/components/pagination/README.md +12 -12
  290. package/assets/ts/components/pagination/pagination.component.ts +51 -69
  291. package/assets/ts/components/record-card/record-card.component.ts +24 -34
  292. package/assets/ts/components/search/README.md +6 -7
  293. package/assets/ts/components/search/search.component.ts +75 -91
  294. package/assets/ts/components/slider/slider.component.ts +62 -77
  295. package/assets/ts/components/table/README.md +8 -8
  296. package/assets/ts/components/table/table.component.ts +97 -134
  297. package/assets/ts/components/tabs/README.md +4 -4
  298. package/assets/ts/components/tabs/tabs.component.ts +16 -14
  299. package/assets/ts/components/video-card/video-card.component.ts +89 -93
  300. package/assets/ts/components.ts +44 -20
  301. package/assets/ts/html.d.ts +1 -7
  302. package/assets/ts/modules/applied-filters.ts +104 -135
  303. package/assets/ts/modules/card.module.ts +13 -18
  304. package/assets/ts/modules/carousel.ts +194 -195
  305. package/assets/ts/modules/chart.module.ts +201 -246
  306. package/assets/ts/modules/chart.ts +454 -472
  307. package/assets/ts/modules/data-layer.md +35 -31
  308. package/assets/ts/modules/data-layer.ts +18 -18
  309. package/assets/ts/modules/dialogs.ts +113 -117
  310. package/assets/ts/modules/drawer.ts +7 -9
  311. package/assets/ts/modules/dynamicEvents.ts +67 -100
  312. package/assets/ts/modules/file-upload.ts +43 -40
  313. package/assets/ts/modules/fileupload.ts +38 -60
  314. package/assets/ts/modules/filterlist.ts +14 -20
  315. package/assets/ts/modules/form.ts +126 -128
  316. package/assets/ts/modules/helpers.ts +114 -120
  317. package/assets/ts/modules/inputs.ts +88 -120
  318. package/assets/ts/modules/nav.ts +19 -18
  319. package/assets/ts/modules/notification.ts +28 -32
  320. package/assets/ts/modules/orderablelist.ts +90 -82
  321. package/assets/ts/modules/pagination.ts +14 -19
  322. package/assets/ts/modules/table.ts +516 -599
  323. package/assets/ts/modules/tabs.ts +120 -145
  324. package/assets/ts/modules/testimonial.ts +59 -64
  325. package/assets/ts/scripts.ts +7 -9
  326. package/assets/ts/tests/chart.spec.ts +11 -20
  327. package/assets/ts/tests/data-layer.spec.js +3 -4
  328. package/assets/ts/tests/filterlist.spec.ts +3 -6
  329. package/assets/ts/tests/slider.spec.ts +9 -15
  330. package/assets/ts/tests/table.spec.ts +7 -24
  331. package/assets/ts/vendor/hibp.ts +43 -43
  332. package/dist/components.es.js +280 -270
  333. package/dist/components.umd.js +67 -67
  334. package/dist/style.css +1 -1
  335. package/package.json +14 -4
  336. package/src/components/Accordion/Accordion.spec.js +25 -31
  337. package/src/components/Accordion/Accordion.vue +16 -19
  338. package/src/components/Accordion/AccordionItem.vue +39 -37
  339. package/src/components/Accordion/README.md +10 -12
  340. package/src/components/Actionbar/Actionbar.vue +15 -18
  341. package/src/components/Actionbar/README.md +8 -7
  342. package/src/components/AddressLookup/AddressLookup.vue +14 -16
  343. package/src/components/AppliedFilters/AppliedFilters.vue +14 -16
  344. package/src/components/Banner/Banner.spec.js +13 -15
  345. package/src/components/Banner/Banner.vue +19 -19
  346. package/src/components/Banner/README.md +8 -10
  347. package/src/components/BarChart/BarChart.vue +14 -16
  348. package/src/components/Card/Card.vue +13 -16
  349. package/src/components/Card/README.md +8 -8
  350. package/src/components/Carousel/Carousel.vue +15 -18
  351. package/src/components/Carousel/README.md +7 -7
  352. package/src/components/Chart/Chart.spec.js +64 -87
  353. package/src/components/Chart/Chart.vue +41 -40
  354. package/src/components/Chart/README.md +8 -9
  355. package/src/components/CollapsibleSideMenu/CollapsibleSideMenu.vue +8 -10
  356. package/src/components/CollapsibleSideMenu/README.md +1 -1
  357. package/src/components/FileUpload/FileUpload.vue +35 -40
  358. package/src/components/FileUpload/README.md +3 -3
  359. package/src/components/FilterCard/FilterCard.vue +14 -16
  360. package/src/components/Filterlist/Filterlist.vue +7 -9
  361. package/src/components/Filterlist/README.md +3 -3
  362. package/src/components/Header/Header.vue +23 -26
  363. package/src/components/Header/README.md +8 -9
  364. package/src/components/InlineEdit/InlineEdit.vue +26 -32
  365. package/src/components/Input/Input.vue +323 -233
  366. package/src/components/Input/README.md +11 -11
  367. package/src/components/Marketing/Marketing.vue +24 -27
  368. package/src/components/Marketing/README.md +7 -7
  369. package/src/components/MultiStep/MultiStep.vue +13 -15
  370. package/src/components/Multiselect/Multiselect.vue +14 -17
  371. package/src/components/Nav/Nav.vue +15 -29
  372. package/src/components/Nav/README.md +12 -12
  373. package/src/components/Nav-old/Nav.vue +88 -93
  374. package/src/components/Nav-old/README.md +11 -12
  375. package/src/components/NoteFeed/NoteFeed.vue +59 -56
  376. package/src/components/NoteFeed/README.md +6 -6
  377. package/src/components/Notification/Notification.vue +11 -15
  378. package/src/components/Notification/README.md +9 -9
  379. package/src/components/Pagination/Pagination.vue +14 -24
  380. package/src/components/Pagination/README.md +12 -12
  381. package/src/components/PropertySearchbar/PropertySearchbar.vue +191 -160
  382. package/src/components/PropertySearchbar/README.md +14 -15
  383. package/src/components/RecordCard/RecordCard.vue +14 -16
  384. package/src/components/Search/README.md +1 -1
  385. package/src/components/Search/Search.vue +13 -16
  386. package/src/components/Slider/Slider.vue +13 -16
  387. package/src/components/Snapshot/README.md +9 -10
  388. package/src/components/Snapshot/Snapshot.vue +15 -17
  389. package/src/components/Stepper/README.md +12 -13
  390. package/src/components/Stepper/Step.vue +22 -18
  391. package/src/components/Stepper/Stepper.spec.js +41 -46
  392. package/src/components/Stepper/Stepper.vue +17 -18
  393. package/src/components/Table/README.md +12 -11
  394. package/src/components/Table/Table.spec.js +17 -28
  395. package/src/components/Table/Table.vue +49 -48
  396. package/src/components/Tabs/README.md +8 -8
  397. package/src/components/Tabs/Tab.vue +21 -21
  398. package/src/components/Tabs/Tabs.vue +14 -17
  399. package/src/components/Testimonial/README.md +11 -12
  400. package/src/components/Testimonial/Testimonial.spec.js +22 -26
  401. package/src/components/Testimonial/Testimonial.vue +31 -25
  402. package/src/components/Timeline/README.md +3 -3
  403. package/src/components/Timeline/Timeline.spec.js +9 -11
  404. package/src/components/Timeline/Timeline.vue +10 -10
  405. package/src/components/VideoCard/VideoCard.vue +14 -16
  406. package/src/foundations/Logo/Logo.spec.js +30 -30
  407. package/src/foundations/Logo/Logo.vue +28 -28
  408. package/src/foundations/Logo/README.md +5 -4
  409. package/src/helpers/strings.js +11 -8
  410. package/src/index.js +27 -28
  411. package/src/vue-shim.d.ts +4 -4
@@ -1,5 +1,5 @@
1
1
  import { ucfirst, unsnake, numberOfDays } from './helpers.js';
2
- // #region Functions that setup and trigger other functions
2
+ // #region Functions that setup and trigger other functions
3
3
  export const setupChart = (chartElement, chartOuter, tableElement) => {
4
4
  // #region Reset the chart
5
5
  // empty divs to re-populate
@@ -12,15 +12,19 @@ export const setupChart = (chartElement, chartOuter, tableElement) => {
12
12
  const chartYaxis = chartOuter.querySelector('.chart__yaxis');
13
13
  chartYaxis.innerHTML = ``;
14
14
  // Remove old input fields
15
- Array.from(chartOuter.querySelectorAll(':scope > input[type="checkbox"],:scope > input[type="radio"]')).map((element) => { element.remove(); });
15
+ Array.from(chartOuter.querySelectorAll(':scope > input[type="checkbox"],:scope > input[type="radio"]')).map((element) => {
16
+ element.remove();
17
+ });
16
18
  // #endregion
17
19
  createTypeSwitcher(chartElement, chartKey, chartOptions);
18
- let { xaxis, type } = getChartData(chartElement, chartOuter);
20
+ const { xaxis, type } = getChartData(chartElement, chartOuter);
19
21
  setCellData(chartElement, chartOuter, tableElement);
20
22
  createChartKey(chartOuter, tableElement, chartKey);
21
23
  createChartGuidelines(chartElement, chartOuter, chartGuidelines);
22
24
  createChartYaxis(chartElement, chartOuter, chartYaxis);
23
- const availableTypes = chartElement.hasAttribute('data-types') ? chartElement.getAttribute('data-types').split(',') : [type];
25
+ const availableTypes = chartElement.hasAttribute('data-types')
26
+ ? chartElement.getAttribute('data-types').split(',')
27
+ : [type];
24
28
  if (availableTypes.includes('line')) {
25
29
  createLines(chartElement, chartOuter);
26
30
  }
@@ -29,7 +33,8 @@ export const setupChart = (chartElement, chartOuter, tableElement) => {
29
33
  if (xaxis) {
30
34
  createXaxis(chartElement, chartOuter, xaxis);
31
35
  }
32
- if (chartElement.hasAttribute('data-slope')) // Need to check attribute is there not its value
36
+ if (chartElement.hasAttribute('data-slope'))
37
+ // Need to check attribute is there not its value
33
38
  createSlope(chartElement, chartOuter);
34
39
  if (chartElement.classList.contains('chart--show-totals'))
35
40
  createKeyTotals(chartElement, chartOuter);
@@ -43,9 +48,11 @@ export const setupChart = (chartElement, chartOuter, tableElement) => {
43
48
  // #region Event handlers and observers
44
49
  export const setEventHandlers = function (chartElement, chartOuter) {
45
50
  const showData = chartOuter.querySelectorAll(':scope > input[type="checkbox"]');
46
- let { type } = getChartData(chartElement, chartOuter);
47
- const availableTypes = chartElement.hasAttribute('data-types') ? chartElement.getAttribute('data-types').split(',') : [type];
48
- for (var i = 0; i < showData.length; i++) {
51
+ const { type } = getChartData(chartElement, chartOuter);
52
+ const availableTypes = chartElement.hasAttribute('data-types')
53
+ ? chartElement.getAttribute('data-types').split(',')
54
+ : [type];
55
+ for (let i = 0; i < showData.length; i++) {
49
56
  showData[i].addEventListener('change', function () {
50
57
  if (availableTypes.includes('pie'))
51
58
  createPies(chartOuter);
@@ -65,13 +72,15 @@ export const setEventHandlers = function (chartElement, chartOuter) {
65
72
  export const setEventObservers = function (chartElement, chartOuter) {
66
73
  if (chartElement.hasAttribute('data-series'))
67
74
  return false;
68
- let table = chartElement.querySelector('table');
69
- let newTable = chartOuter.querySelector('table');
75
+ const table = chartElement.querySelector('table');
76
+ const newTable = chartOuter.querySelector('table');
70
77
  const attributesUpdated = (mutationList, observer) => {
71
78
  observer.disconnect();
72
79
  observer2.disconnect();
73
80
  for (const mutation of mutationList) {
74
- if (mutation.attributeName == 'class' || (mutation.type === 'attributes' && mutation.attributeName === 'data-total') || mutation.type === 'attributes') {
81
+ if (mutation.attributeName == 'class' ||
82
+ (mutation.type === 'attributes' && mutation.attributeName === 'data-total') ||
83
+ mutation.type === 'attributes') {
75
84
  newTable.innerHTML = table.innerHTML;
76
85
  setupChart(chartElement, chartOuter, newTable);
77
86
  }
@@ -83,7 +92,7 @@ export const setEventObservers = function (chartElement, chartOuter) {
83
92
  observer.disconnect();
84
93
  observer2.disconnect();
85
94
  for (const mutation of mutationList) {
86
- if (mutation.type == "characterData" || (mutation.type == "childList" && mutation.addedNodes.length)) {
95
+ if (mutation.type == 'characterData' || (mutation.type == 'childList' && mutation.addedNodes.length)) {
87
96
  newTable.innerHTML = table.innerHTML;
88
97
  setupChart(chartElement, chartOuter, newTable);
89
98
  }
@@ -91,8 +100,8 @@ export const setEventObservers = function (chartElement, chartOuter) {
91
100
  observer.observe(table, { characterData: true, subtree: true });
92
101
  observer2.observe(chartElement, { attributes: true });
93
102
  };
94
- let observer = new MutationObserver(tableUpdated);
95
- let observer2 = new MutationObserver(attributesUpdated);
103
+ const observer = new MutationObserver(tableUpdated);
104
+ const observer2 = new MutationObserver(attributesUpdated);
96
105
  observer.observe(table, { characterData: true, subtree: true });
97
106
  observer2.observe(chartElement, { attributes: true });
98
107
  return true;
@@ -100,24 +109,50 @@ export const setEventObservers = function (chartElement, chartOuter) {
100
109
  // #endregion
101
110
  // #region GET functions
102
111
  export const getChartData = function (chartElement, chartOuter) {
103
- let table = chartOuter.querySelector('.chart__wrapper table');
104
- let min = chartElement.hasAttribute('data-min') ? chartElement.getAttribute('data-min') : 0;
105
- let max = chartElement.hasAttribute('data-max') ? chartElement.getAttribute('data-max') : getLargestValue(table);
106
- let type = chartElement.hasAttribute('data-type') ? chartElement.getAttribute('data-type') : 'column';
107
- let yaxis = chartElement.hasAttribute('data-yaxis') ? chartElement.getAttribute('data-yaxis').split(',') : [];
108
- let guidelines = chartElement.hasAttribute('data-guidelines') ? chartElement.getAttribute('data-guidelines').split(',') : [];
109
- let targets = chartElement.hasAttribute('data-targets') ? JSON.parse(chartElement.getAttribute('data-targets')) : null;
110
- let events = chartElement.hasAttribute('data-events') ? JSON.parse(chartElement.getAttribute('data-events')) : null;
111
- let xaxis = chartElement.hasAttribute('data-xaxis') ? chartElement.getAttribute('data-xaxis').split(',') : null;
112
- let increment = chartElement.hasAttribute('data-increment') ? chartElement.getAttribute('data-increment') : null;
113
- let start = chartElement.hasAttribute('data-start') ? chartElement.getAttribute('data-start') : 0;
114
- let end = chartElement.hasAttribute('data-end') ? chartElement.getAttribute('data-end') : getLargestValue(table); // TODO - get largest value from the data-xaxis
115
- let slope = chartElement.hasAttribute('data-slope') ? chartElement.getAttribute('data-slope') : null;
116
- let yInt = chartElement.hasAttribute('data-yint') ? chartElement.getAttribute('data-yint') : null;
117
- return { min, max, type, yaxis, targets, events, xaxis, increment, start, end, slope, yInt, guidelines };
112
+ const table = chartOuter.querySelector('.chart__wrapper table');
113
+ const min = chartElement.hasAttribute('data-min') ? chartElement.getAttribute('data-min') : 0;
114
+ const max = chartElement.hasAttribute('data-max')
115
+ ? chartElement.getAttribute('data-max')
116
+ : getLargestValue(table);
117
+ const type = chartElement.hasAttribute('data-type') ? chartElement.getAttribute('data-type') : 'column';
118
+ const yaxis = chartElement.hasAttribute('data-yaxis') ? chartElement.getAttribute('data-yaxis').split(',') : [];
119
+ const guidelines = chartElement.hasAttribute('data-guidelines')
120
+ ? chartElement.getAttribute('data-guidelines').split(',')
121
+ : [];
122
+ const targets = chartElement.hasAttribute('data-targets')
123
+ ? JSON.parse(chartElement.getAttribute('data-targets'))
124
+ : null;
125
+ const events = chartElement.hasAttribute('data-events')
126
+ ? JSON.parse(chartElement.getAttribute('data-events'))
127
+ : null;
128
+ const xaxis = chartElement.hasAttribute('data-xaxis')
129
+ ? chartElement.getAttribute('data-xaxis').split(',')
130
+ : null;
131
+ const increment = chartElement.hasAttribute('data-increment') ? chartElement.getAttribute('data-increment') : null;
132
+ const start = chartElement.hasAttribute('data-start') ? chartElement.getAttribute('data-start') : 0;
133
+ const end = chartElement.hasAttribute('data-end')
134
+ ? chartElement.getAttribute('data-end')
135
+ : getLargestValue(table); // TODO - get largest value from the data-xaxis
136
+ const slope = chartElement.hasAttribute('data-slope') ? chartElement.getAttribute('data-slope') : null;
137
+ const yInt = chartElement.hasAttribute('data-yint') ? chartElement.getAttribute('data-yint') : null;
138
+ return {
139
+ min,
140
+ max,
141
+ type,
142
+ yaxis,
143
+ targets,
144
+ events,
145
+ xaxis,
146
+ increment,
147
+ start,
148
+ end,
149
+ slope,
150
+ yInt,
151
+ guidelines,
152
+ };
118
153
  };
119
154
  function getLargestValue(table) {
120
- let values = Array.from(table.querySelectorAll('tbody td:not(:first-child)')).map((element) => {
155
+ const values = Array.from(table.querySelectorAll('tbody td:not(:first-child)')).map((element) => {
121
156
  let currentValue = String(element.textContent);
122
157
  currentValue = currentValue.replace('£', '');
123
158
  currentValue = currentValue.replace('%', '');
@@ -125,7 +160,7 @@ function getLargestValue(table) {
125
160
  currentValue = Number.parseFloat(currentValue);
126
161
  return currentValue;
127
162
  });
128
- let largetValue = Math.max(...values);
163
+ const largetValue = Math.max(...values);
129
164
  // TO DO round to the nearest 10, 100, 1000 and so on
130
165
  return Math.ceil(largetValue);
131
166
  }
@@ -143,7 +178,7 @@ const getValues = function (value, min, max, start) {
143
178
  }
144
179
  // If the value is negative the position below the 0 line
145
180
  if (min < 0) {
146
- bottom = Math.abs(((min) / (max - min)) * 100);
181
+ bottom = Math.abs((min / (max - min)) * 100);
147
182
  if (cleanValue < 0) {
148
183
  percent = bottom - percent;
149
184
  bottom = bottom - percent;
@@ -168,19 +203,21 @@ function getCoordinatesForPercent(percent, pieCount) {
168
203
  // #region SET functions - set data attributes and classes
169
204
  export const setCellData = function (chartElement, chartOuter, table) {
170
205
  let { min, max } = getChartData(chartElement, chartOuter);
171
- let chartType = chartElement.getAttribute('data-type');
172
- let increment = chartElement.getAttribute('data-increment');
173
- let incrementStart = chartElement.getAttribute('data-start');
174
- let incrementEnd = chartElement.getAttribute('data-end');
175
- let startDay = min;
206
+ const chartType = chartElement.getAttribute('data-type');
207
+ const increment = chartElement.getAttribute('data-increment');
208
+ const incrementStart = chartElement.getAttribute('data-start');
209
+ const incrementEnd = chartElement.getAttribute('data-end');
210
+ const startDay = min;
176
211
  // Change how gant charts are configured as this just seems bizarre now
177
- if (increment == "days") {
212
+ if (increment == 'days') {
178
213
  max = numberOfDays(min, max);
179
214
  min = 0;
180
- chartElement.querySelector('tbody').setAttribute('style', `--single-day:${((1 / max) * 100)}%;`);
215
+ chartElement.querySelector('tbody').setAttribute('style', `--single-day:${(1 / max) * 100}%;`);
181
216
  }
182
217
  Array.from(table.querySelectorAll('tbody tr')).forEach((tr, index) => {
183
- let group = tr.querySelector('td:first-child, th:first-child') ? tr.querySelector('td:first-child, th:first-child').innerHTML : '';
218
+ const group = tr.querySelector('td:first-child, th:first-child')
219
+ ? tr.querySelector('td:first-child, th:first-child').innerHTML
220
+ : '';
184
221
  let coverageStart = 100;
185
222
  let coverageEnd = 0;
186
223
  let cumulativeComparison = 0;
@@ -192,8 +229,8 @@ export const setCellData = function (chartElement, chartOuter, table) {
192
229
  Array.from(tr.querySelectorAll('td:not([data-numeric]):not(:first-child)')).forEach((td) => {
193
230
  let value = parseFloat(td.textContent.replace('£', '').replace('%', '').replace(',', ''));
194
231
  let start = 0;
195
- if (increment == "days") {
196
- let dates = td.textContent.split(' - ');
232
+ if (increment == 'days') {
233
+ const dates = td.textContent.split(' - ');
197
234
  if (dates[1]) {
198
235
  value = numberOfDays(dates[0], dates[1]);
199
236
  start = numberOfDays(startDay, dates[0]) - 1;
@@ -215,27 +252,27 @@ export const setCellData = function (chartElement, chartOuter, table) {
215
252
  if (tr.querySelector('[data-label="Max"]')) {
216
253
  tr.setAttribute('data-max', tr.querySelector('[data-label="Max"][data-numeric]').getAttribute('data-numeric'));
217
254
  }
218
- if ((chartType == "proportional" || chartType == "waffle") && !tr.hasAttribute('data-total')) {
255
+ if ((chartType == 'proportional' || chartType == 'waffle') && !tr.hasAttribute('data-total')) {
219
256
  let total = 0;
220
257
  Array.from(tr.querySelectorAll('td[data-numeric]:not(:first-child)')).forEach((td) => {
221
- let display = getComputedStyle(td).display;
258
+ const display = getComputedStyle(td).display;
222
259
  if (display == 'none')
223
260
  return;
224
261
  total += Number.parseFloat(td.getAttribute('data-numeric'));
225
262
  });
226
263
  tr.setAttribute('data-total', total);
227
264
  }
228
- let rowMin = tr.hasAttribute('data-min') ? tr.getAttribute('data-min') : min;
229
- let rowMax = tr.hasAttribute('data-max') ? tr.getAttribute('data-max') : max;
265
+ const rowMin = tr.hasAttribute('data-min') ? tr.getAttribute('data-min') : min;
266
+ const rowMax = tr.hasAttribute('data-max') ? tr.getAttribute('data-max') : max;
230
267
  // Add a useful index css var for the use of animatons.
231
268
  tr.setAttribute('style', `--row-index:${index + 1};`);
232
269
  if (rowMin < 0) {
233
- let minBottom = Math.abs(((rowMin) / (rowMax - rowMin)) * 100);
270
+ const minBottom = Math.abs((rowMin / (rowMax - rowMin)) * 100);
234
271
  chartElement.setAttribute('style', `--min-bottom: ${minBottom}%;`);
235
272
  }
236
273
  // Add css vars to cells
237
274
  Array.from(tr.querySelectorAll('td[data-numeric]:not([data-label="Min"]):not([data-label="Max"]):not(:first-child)')).forEach((td) => {
238
- let display = getComputedStyle(td).display;
275
+ const display = getComputedStyle(td).display;
239
276
  if (display == 'none')
240
277
  return;
241
278
  const label = td.getAttribute('data-label');
@@ -245,22 +282,22 @@ export const setCellData = function (chartElement, chartOuter, table) {
245
282
  if (!td.querySelector('span[data-group]'))
246
283
  td.innerHTML = `<span data-group="${group}" data-label="${label}">${content}</span>`;
247
284
  if (!td.hasAttribute('style')) {
248
- let { percent, bottom, axis } = getValues(value, rowMin, rowMax, start);
285
+ const { percent, bottom, axis } = getValues(value, rowMin, rowMax, start);
249
286
  td.setAttribute('data-percent', percent);
250
- td.setAttribute("style", `--bottom:${bottom}%;--percent:${percent}%;--axis:${axis}%;`);
287
+ td.setAttribute('style', `--bottom:${bottom}%;--percent:${percent}%;--axis:${axis}%;`);
251
288
  if (tr.hasAttribute('data-total')) {
252
- let rowTotal = tr.getAttribute('data-total');
253
- let comparison = ((value - rowMin) / (rowTotal)) * 100;
289
+ const rowTotal = tr.getAttribute('data-total');
290
+ const comparison = ((value - rowMin) / rowTotal) * 100;
254
291
  cumulativeComparison += comparison;
255
292
  td.setAttribute('data-comparison', comparison);
256
293
  td.style.setProperty('--cumulative-comparision', `${cumulativeComparison}%`);
257
294
  td.style.setProperty('--comparison', `${comparison}%`);
258
295
  }
259
- if (chartElement.classList.contains("chart--value-order")) {
260
- let order = (10000 - Math.round(percent * 100));
296
+ if (chartElement.classList.contains('chart--value-order')) {
297
+ const order = 10000 - Math.round(percent * 100);
261
298
  td.style.setProperty('--order', `${order}%`);
262
299
  }
263
- if (chartType == "dumbbell") {
300
+ if (chartType == 'dumbbell') {
264
301
  if (percent < coverageStart) {
265
302
  tr.style.setProperty('--coverage-start', `${percent}%`);
266
303
  coverageStart = percent;
@@ -270,16 +307,16 @@ export const setCellData = function (chartElement, chartOuter, table) {
270
307
  coverageEnd = percent;
271
308
  }
272
309
  }
273
- if (chartType == "waffle") {
310
+ if (chartType == 'waffle') {
274
311
  let actualPercent = Math.round(td.getAttribute('data-comparison'));
275
312
  // Prevent the chart from spilling out of the top
276
313
  totalPercent += actualPercent;
277
314
  if (totalPercent > 100)
278
315
  actualPercent = actualPercent - (totalPercent - 100);
279
- let percentMinusAfter = previousAfter != 0 ? actualPercent - (10 - previousAfter) : actualPercent;
280
- let rowHeight = percentMinusAfter < 10 ? 10 : Math.floor(percentMinusAfter / 10) * 10;
281
- let rowWidth = percentMinusAfter < 10 ? percentMinusAfter * 10 : 100;
282
- let maxWidth = actualPercent * 10;
316
+ const percentMinusAfter = previousAfter != 0 ? actualPercent - (10 - previousAfter) : actualPercent;
317
+ const rowHeight = percentMinusAfter < 10 ? 10 : Math.floor(percentMinusAfter / 10) * 10;
318
+ const rowWidth = percentMinusAfter < 10 ? percentMinusAfter * 10 : 100;
319
+ const maxWidth = actualPercent * 10;
283
320
  td.style.setProperty('--rowPosition', `${rowPosition}%`);
284
321
  td.style.setProperty('--rowHeight', `${rowHeight}%`);
285
322
  td.style.setProperty('--rowWidth', `${rowWidth}%`);
@@ -287,19 +324,19 @@ export const setCellData = function (chartElement, chartOuter, table) {
287
324
  // Create the psuedo element variables for the the block that sticks out BELOW the main row
288
325
  let beforeWidth = 0;
289
326
  if (previousAfter != 0) {
290
- beforeWidth = 100 - (previousAfter * 10);
327
+ beforeWidth = 100 - previousAfter * 10;
291
328
  td.style.setProperty('--beforeWidth', `${beforeWidth}%`);
292
- td.style.setProperty('--beforeHeight', `${10 / rowHeight * 100}%`);
329
+ td.style.setProperty('--beforeHeight', `${(10 / rowHeight) * 100}%`);
293
330
  td.style.setProperty('--beforeLeft', `${previousAfter * 10}%`);
294
331
  }
295
332
  // Create the psuedo element variables for the the block that sticks out ABOVE the main row
296
- let afterWidth = Math.round(percentMinusAfter - rowHeight) * 10;
297
- let afterHeight = 10 / (rowHeight) * 100;
333
+ const afterWidth = Math.round(percentMinusAfter - rowHeight) * 10;
334
+ const afterHeight = (10 / rowHeight) * 100;
298
335
  td.style.setProperty('--afterWidth', `${afterWidth}%`);
299
336
  td.style.setProperty('--afterHeight', `${afterHeight}%`);
300
337
  // If the row width plus the previous after is under 10 it needs to be added to the new previousAfter variable
301
338
  if (previousAfter + beforeWidth / 10 + rowWidth / 10 < 10)
302
- previousAfter += beforeWidth / 10 + (rowWidth / 10);
339
+ previousAfter += beforeWidth / 10 + rowWidth / 10;
303
340
  else if (percentMinusAfter < 10)
304
341
  previousAfter = percentMinusAfter;
305
342
  else
@@ -310,8 +347,13 @@ export const setCellData = function (chartElement, chartOuter, table) {
310
347
  }
311
348
  // totals
312
349
  if (chartElement.classList.contains('chart--show-totals')) {
313
- let chartTotal = chartElement.getAttribute('data-total') ? Number.parseFloat(chartElement.getAttribute('data-total')) : 0;
314
- let keyTotal = chartElement.querySelector(`.key[data-label="${label}"]`) && chartElement.querySelector(`.key[data-label="${label}"]`).getAttribute('data-total') ? Number.parseFloat(chartElement.querySelector(`.key[data-label="${label}"]`).getAttribute('data-total')) : 0;
350
+ const chartTotal = chartElement.getAttribute('data-total')
351
+ ? Number.parseFloat(chartElement.getAttribute('data-total'))
352
+ : 0;
353
+ const keyTotal = chartElement.querySelector(`.key[data-label="${label}"]`) &&
354
+ chartElement.querySelector(`.key[data-label="${label}"]`).getAttribute('data-total')
355
+ ? Number.parseFloat(chartElement.querySelector(`.key[data-label="${label}"]`).getAttribute('data-total'))
356
+ : 0;
315
357
  if (chartElement.querySelector(`.key[data-label="${label}"]`))
316
358
  chartElement.querySelector(`.key[data-label="${label}"]`).setAttribute('data-total', keyTotal + value);
317
359
  chartElement.setAttribute('data-total', chartTotal + value);
@@ -319,19 +361,19 @@ export const setCellData = function (chartElement, chartOuter, table) {
319
361
  });
320
362
  // Values for incremental charts i.e. histograms...
321
363
  if (increment && incrementStart && incrementEnd) {
322
- let firstCellValue = parseFloat(tr.querySelector('td:first-child').textContent.replace('£', '').replace('%', '').replace(',', ''));
323
- let position = ((firstCellValue - incrementStart) / (incrementEnd - incrementStart)) * 100;
364
+ const firstCellValue = parseFloat(tr.querySelector('td:first-child').textContent.replace('£', '').replace('%', '').replace(',', ''));
365
+ const position = ((firstCellValue - incrementStart) / (incrementEnd - incrementStart)) * 100;
324
366
  tr.setAttribute('style', `--position:${position}%;`);
325
367
  }
326
368
  });
327
369
  };
328
370
  export const setLongestLabel = function (chartOuter) {
329
- let chartWrapper = chartOuter.querySelector('.chart__wrapper');
330
- let table = chartOuter.querySelector('.chart table');
371
+ const chartWrapper = chartOuter.querySelector('.chart__wrapper');
372
+ const table = chartOuter.querySelector('.chart table');
331
373
  // set the longest label attr so that the bar chart knows what margin to set on the left
332
374
  let longestLabel = '';
333
375
  Array.from(table.querySelectorAll('tbody tr td:first-child')).forEach((td) => {
334
- if (typeof td.textContent != "undefined" && td.textContent.length > longestLabel.length)
376
+ if (typeof td.textContent != 'undefined' && td.textContent.length > longestLabel.length)
335
377
  longestLabel = td.textContent;
336
378
  });
337
379
  chartWrapper.setAttribute('data-longest-label', longestLabel);
@@ -347,12 +389,16 @@ export const setLongestLabel = function (chartOuter) {
347
389
  // #region CREATE function
348
390
  export const createTypeSwitcher = function (chartElement, chartKey, chartOptions) {
349
391
  const chartID = `chart-${Date.now() + (Math.floor(Math.random() * 100) + 1)}`;
350
- const availableTypes = chartElement.hasAttribute('data-types') ? chartElement.getAttribute('data-types').split(',') : [];
392
+ const availableTypes = chartElement.hasAttribute('data-types')
393
+ ? chartElement.getAttribute('data-types').split(',')
394
+ : [];
351
395
  if (!chartElement.hasAttribute('data-types') && chartElement.hasAttribute('data-type'))
352
396
  chartKey.insertAdjacentHTML('afterend', `<input type="radio" name="chart-type" value="${chartElement.getAttribute('data-type')}" checked="">`);
353
397
  else if (chartElement.hasAttribute('data-types')) {
354
- let chartType = chartElement.hasAttribute('data-type') ? chartElement.getAttribute('data-type') : 'column';
355
- chartOptions.insertAdjacentHTML('beforebegin', availableTypes.map((type) => `<input type="radio" name="chart-type" value="${type}" id="${chartID}-${type}" ${chartType == type ? 'checked=""' : ''}>`).join(''));
398
+ const chartType = chartElement.hasAttribute('data-type') ? chartElement.getAttribute('data-type') : 'column';
399
+ chartOptions.insertAdjacentHTML('beforebegin', availableTypes
400
+ .map((type) => `<input type="radio" name="chart-type" value="${type}" id="${chartID}-${type}" ${chartType == type ? 'checked=""' : ''}>`)
401
+ .join(''));
356
402
  chartOptions.insertAdjacentHTML('beforeend', availableTypes.map((type) => `<label for="${chartID}-${type}">${type}</label>`).join(''));
357
403
  }
358
404
  };
@@ -360,7 +406,7 @@ export const createChartKey = function (chartOuter, tableElement, chartKey) {
360
406
  const chartID = `chart-${Date.now() + (Math.floor(Math.random() * 100) + 1)}`;
361
407
  //const chartOuter = chartElement.querySelector('.chart__outer');
362
408
  let previousInput;
363
- let headings = Array.from(tableElement.querySelectorAll('thead th'));
409
+ const headings = Array.from(tableElement.querySelectorAll('thead th'));
364
410
  headings.forEach((arrayElement, index) => {
365
411
  if (index != 0) {
366
412
  previousInput = createChartKeyItem(chartID, index, arrayElement.textContent, chartKey, chartOuter, previousInput);
@@ -372,7 +418,7 @@ export const createChartKey = function (chartOuter, tableElement, chartKey) {
372
418
  return true;
373
419
  };
374
420
  function createChartKeyItem(chartID, index, text, chartKey, chartOuter, previousInput) {
375
- let input = document.createElement('input');
421
+ const input = document.createElement('input');
376
422
  input.setAttribute('name', `${chartID}-dataset-${index}`);
377
423
  input.setAttribute('id', `${chartID}-dataset-${index}`);
378
424
  input.setAttribute('checked', `checked`);
@@ -382,7 +428,7 @@ function createChartKeyItem(chartID, index, text, chartKey, chartOuter, previous
382
428
  else
383
429
  chartOuter.insertBefore(input, previousInput.nextSibling);
384
430
  previousInput = input;
385
- let label = document.createElement('label');
431
+ const label = document.createElement('label');
386
432
  label.setAttribute('class', `key btn btn-action`);
387
433
  label.setAttribute('for', `${chartID}-dataset-${index}`);
388
434
  label.setAttribute('data-label', `${text}`);
@@ -394,8 +440,8 @@ export const createChartGuidelines = function (chartElement, chartOuter, chartGu
394
440
  let { min, max, yaxis, increment, guidelines } = getChartData(chartElement, chartOuter);
395
441
  if (guidelines.length)
396
442
  yaxis = guidelines;
397
- let startDay = min;
398
- if (increment == "days") {
443
+ const startDay = min;
444
+ if (increment == 'days') {
399
445
  max = numberOfDays(min, max);
400
446
  min = 0;
401
447
  }
@@ -404,19 +450,19 @@ export const createChartGuidelines = function (chartElement, chartOuter, chartGu
404
450
  chartGuidelines.setAttribute('class', 'chart__guidelines');
405
451
  }
406
452
  chartGuidelines.innerHTML = '';
407
- for (var i = 0; i < yaxis.length; i++) {
453
+ for (let i = 0; i < yaxis.length; i++) {
408
454
  let value = parseFloat(yaxis[i].replace('£', '').replace('%', '').replace(',', ''));
409
- if (increment == "days") {
455
+ if (increment == 'days') {
410
456
  value = numberOfDays(startDay, yaxis[i]) - 1;
411
457
  }
412
- let { axis } = getValues(value, min, max);
458
+ const { axis } = getValues(value, min, max);
413
459
  chartGuidelines.innerHTML += `<div class="guideline" style="--percent:${axis}%;"><span>${yaxis[i]}</span></div>`;
414
460
  }
415
461
  };
416
462
  export const createChartYaxis = function (chartElement, chartOuter, chartYaxis) {
417
463
  let { min, max, yaxis, increment } = getChartData(chartElement, chartOuter);
418
- let startDay = min;
419
- if (increment == "days") {
464
+ const startDay = min;
465
+ if (increment == 'days') {
420
466
  max = numberOfDays(min, max);
421
467
  min = 0;
422
468
  }
@@ -425,49 +471,49 @@ export const createChartYaxis = function (chartElement, chartOuter, chartYaxis)
425
471
  chartYaxis.setAttribute('class', 'chart__yaxis');
426
472
  }
427
473
  chartYaxis.innerHTML = '';
428
- for (var i = 0; i < yaxis.length; i++) {
474
+ for (let i = 0; i < yaxis.length; i++) {
429
475
  let value = parseFloat(yaxis[i].replace('£', '').replace('%', ''));
430
- if (increment == "days") {
476
+ if (increment == 'days') {
431
477
  value = numberOfDays(startDay, yaxis[i]);
432
478
  }
433
- let { axis } = getValues(value, min, max);
479
+ const { axis } = getValues(value, min, max);
434
480
  chartYaxis.innerHTML += `<div class="axis__point" style="--percent:${axis}%;"><span>${yaxis[i]}</span></div>`;
435
481
  }
436
482
  };
437
483
  export const createXaxis = function (chartElement, chartOuter, xaxis) {
438
484
  const chart = chartOuter.querySelector('.chart');
439
485
  let chartXaxis = chartOuter.querySelector('.chart__xaxis');
440
- let { increment, start, end } = getChartData(chartElement, chartOuter);
486
+ const { increment, start, end } = getChartData(chartElement, chartOuter);
441
487
  if (!chartXaxis) {
442
488
  chartXaxis = document.createElement('div');
443
489
  chartXaxis.setAttribute('class', 'chart__xaxis');
444
490
  }
445
491
  if (increment && start && end) {
446
492
  chartXaxis.innerHTML = '';
447
- for (var i = 0; i < xaxis.length; i++) {
448
- let value = parseFloat(xaxis[i].replace('£', '').replace('%', ''));
449
- let position = ((value - start) / (end - start)) * 100;
493
+ for (let i = 0; i < xaxis.length; i++) {
494
+ const value = parseFloat(xaxis[i].replace('£', '').replace('%', ''));
495
+ const position = ((value - start) / (end - start)) * 100;
450
496
  chartXaxis.innerHTML += `<div class="axis__point" style="--percent:${position}%;"><span>${xaxis[i]}</span></div>`;
451
497
  }
452
498
  }
453
499
  chart.prepend(chartXaxis);
454
500
  };
455
501
  export const createLines = function (chartElement, chartOuter) {
456
- let { min, max } = getChartData(chartElement, chartOuter);
457
- let chartType = chartElement.getAttribute('data-type');
502
+ const { min, max } = getChartData(chartElement, chartOuter);
503
+ const chartType = chartElement.getAttribute('data-type');
458
504
  let returnString = '';
459
505
  //let chartWrapper = chartOuter.querySelector('.chart__wrapper');
460
- let linesWrapper = chartOuter.querySelector('.chart__lines');
461
- let items = Array.from(chartOuter.querySelectorAll('tbody tr'));
462
- let lines = Array();
463
- let linesCount = chartOuter.querySelectorAll('thead th:not(:first-child)').length;
464
- let commands = Array();
465
- let animatelines = Array();
466
- let itemCount = items.length <= 1000 ? items.length : 1000;
506
+ const linesWrapper = chartOuter.querySelector('.chart__lines');
507
+ const items = Array.from(chartOuter.querySelectorAll('tbody tr'));
508
+ const lines = [];
509
+ const linesCount = chartOuter.querySelectorAll('thead th:not(:first-child)').length;
510
+ const commands = [];
511
+ const animatelines = [];
512
+ const itemCount = items.length <= 1000 ? items.length : 1000;
467
513
  let spacer = 200 / (itemCount - 1);
468
514
  let spacerIndent = 0;
469
- if (chartType == "combo") {
470
- spacer = 200 / (itemCount);
515
+ if (chartType == 'combo') {
516
+ spacer = 200 / itemCount;
471
517
  spacerIndent = spacer / 2;
472
518
  }
473
519
  // Creates the lines array from the fields array
@@ -480,13 +526,13 @@ export const createLines = function (chartElement, chartOuter) {
480
526
  let counter = 0;
481
527
  Array.from(chartOuter.querySelectorAll('tbody tr')).forEach((item) => {
482
528
  const display = getComputedStyle(item).display;
483
- if (display != "none") {
529
+ if (display != 'none') {
484
530
  Array.from(item.querySelectorAll('td:not(:first-child)')).forEach((cell, subindex) => {
485
531
  if (!cell.classList.contains('chart__bar')) {
486
- let value = cell.getAttribute('data-numeric');
487
- let { axis } = getValues(value, min, max);
532
+ const value = cell.getAttribute('data-numeric');
533
+ const { axis } = getValues(value, min, max);
488
534
  if (!Number.isNaN(axis)) {
489
- lines[subindex] += `${commands[subindex]} ${(spacerIndent) + (spacer * counter)} ${100 - axis} `;
535
+ lines[subindex] += `${commands[subindex]} ${spacerIndent + spacer * counter} ${100 - axis} `;
490
536
  animatelines[subindex] += `${commands[subindex]} ${spacer * counter} 100 `;
491
537
  commands[subindex] = 'L';
492
538
  }
@@ -508,10 +554,10 @@ export const createLines = function (chartElement, chartOuter) {
508
554
  };
509
555
  export const createPies = function (chartOuter) {
510
556
  let returnString = '';
511
- let chartInner = chartOuter.querySelector('.chart');
557
+ const chartInner = chartOuter.querySelector('.chart');
512
558
  let pieWrapper = chartOuter.querySelector('.pies');
513
559
  if (!pieWrapper) {
514
- pieWrapper = document.createElement("div");
560
+ pieWrapper = document.createElement('div');
515
561
  pieWrapper.setAttribute('class', 'pies');
516
562
  chartInner.append(pieWrapper);
517
563
  }
@@ -520,8 +566,8 @@ export const createPies = function (chartOuter) {
520
566
  let tooltips = '';
521
567
  let cumulativePercent = 0;
522
568
  let total = 0;
523
- let titleKey = item.querySelectorAll('td')[0];
524
- let title = titleKey.innerHTML;
569
+ const titleKey = item.querySelectorAll('td')[0];
570
+ const title = titleKey.innerHTML;
525
571
  let pieCount = 0;
526
572
  // Work out the total amount
527
573
  Array.from(item.querySelectorAll('td')).forEach((td, subindex) => {
@@ -539,26 +585,26 @@ export const createPies = function (chartOuter) {
539
585
  // Create the paths
540
586
  Array.from(item.querySelectorAll('td')).forEach((td, subindex) => {
541
587
  const display = getComputedStyle(td).display;
542
- if (subindex != 0 && pieCount == 1 && display != "none") {
588
+ if (subindex != 0 && pieCount == 1 && display != 'none') {
543
589
  const pathData = `M 0 0 L 100 0 A 100 100 0 1 1 100 -0.01 L 0 0`;
544
590
  paths += `<path d="${pathData}" style="${td.getAttribute('style')} --path-index: ${subindex};"></path>`;
545
591
  tooltips += `<foreignObject x="-70" y="-70" width="140" height="140" ><div><span class="h5 mb-0"><span class="total d-block">${ucfirst(unsnake(title))}</span> ${ucfirst(unsnake(td.getAttribute('data-label')))}<br/> ${td.innerHTML}${td.hasAttribute('data-second') ? `${td.getAttribute('data-second-label')}: ${td.getAttribute('data-second')}` : ''}</span></div></foreignObject>`;
546
592
  }
547
593
  else if (subindex != 0) {
548
594
  let value = td.getAttribute('data-numeric');
549
- let hide = display == "none" ? "display: none;" : "";
595
+ const hide = display == 'none' ? 'display: none;' : '';
550
596
  value = value.replace('£', '');
551
597
  value = value.replace('%', '');
552
598
  value = value.replace(',', '');
553
599
  value = Number.parseInt(value);
554
- let percent = value / total;
600
+ const percent = value / total;
555
601
  const [startX, startY] = getCoordinatesForPercent(cumulativePercent, pieCount);
556
602
  const [endX, endY] = getCoordinatesForPercent(cumulativePercent + percent, pieCount);
557
- const largeArcFlag = percent > .5 ? 1 : 0; // if the slice is more than 50%, take the large arc (the long way around)
603
+ const largeArcFlag = percent > 0.5 ? 1 : 0; // if the slice is more than 50%, take the large arc (the long way around)
558
604
  const pathData = [
559
605
  `M 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
606
+ `L ${startX ? startX.toFixed(0) : 0} ${startY ? startY.toFixed(0) : 0}`, // Move
607
+ `A 100 100 0 ${largeArcFlag} 1 ${endX ? endX.toFixed(0) : 0} ${endY ? endY.toFixed(0) : 0}`, // Arc
562
608
  `L 0 0`, // Line
563
609
  ].join(' ');
564
610
  paths += `<path d="${pathData}" style="${td.getAttribute('style')} --path-index: ${subindex};${hide}"></path>`;
@@ -578,24 +624,24 @@ export const createSlope = function (chartElement, chartOuter) {
578
624
  let totalY = 0;
579
625
  let totalXY = 0;
580
626
  let totalXsquared = 0;
581
- let { min, max, start, end, slope, yInt } = getChartData(chartElement, chartOuter);
582
- let chart = chartOuter.querySelector('.chart');
627
+ const { min, max, start, end, slope, yInt } = getChartData(chartElement, chartOuter);
628
+ const chart = chartOuter.querySelector('.chart');
583
629
  let slopeWrapper = chartOuter.querySelector('.slope');
584
630
  if (!slopeWrapper) {
585
- slopeWrapper = document.createElement("div");
631
+ slopeWrapper = document.createElement('div');
586
632
  slopeWrapper.setAttribute('class', 'slope');
587
633
  chart.prepend(slopeWrapper);
588
634
  }
589
635
  Array.from(chart.querySelectorAll('tbody tr')).forEach((tr) => {
590
636
  const display = getComputedStyle(tr).display;
591
- if (display != "none") {
592
- let x = parseFloat(tr.querySelector('td:first-child').textContent);
637
+ if (display != 'none') {
638
+ const x = parseFloat(tr.querySelector('td:first-child').textContent);
593
639
  let y = 0;
594
640
  Array.from(tr.querySelectorAll('td:not(:first-child)')).forEach((td) => {
595
641
  y += parseFloat(td.getAttribute('data-numeric'));
596
642
  });
597
- let xy = x * y;
598
- let xSquared = x * x;
643
+ const xy = x * y;
644
+ const xSquared = x * x;
599
645
  totalX += x;
600
646
  totalY += y;
601
647
  totalXY += xy;
@@ -604,12 +650,12 @@ export const createSlope = function (chartElement, chartOuter) {
604
650
  }
605
651
  });
606
652
  // Least squares method (https://www.youtube.com/watch?v=P8hT5nDai6A)
607
- let m = slope ? parseFloat(slope) : ((n * totalXY) - (totalX * totalY)) / ((n * totalXsquared) - (totalX * totalX)); // Slope
608
- let b = yInt ? parseFloat(yInt) : (totalY - (m * totalX)) / n; // Y intercept
609
- let firstY = (m * parseFloat(start)) + b;
610
- let lastY = (m * parseFloat(end)) + b;
611
- let { percent: firstYPercent } = getValues(firstY, min, max);
612
- let { percent: lastYPercent } = getValues(lastY, min, max);
653
+ const m = slope ? parseFloat(slope) : (n * totalXY - totalX * totalY) / (n * totalXsquared - totalX * totalX); // Slope
654
+ const b = yInt ? parseFloat(yInt) : (totalY - m * totalX) / n; // Y intercept
655
+ const firstY = m * parseFloat(start) + b;
656
+ const lastY = m * parseFloat(end) + b;
657
+ const { percent: firstYPercent } = getValues(firstY, min, max);
658
+ const { percent: lastYPercent } = getValues(lastY, min, max);
613
659
  slopeWrapper.innerHTML = `<svg viewBox="0 0 200 100" class="line" preserveAspectRatio="none"><path fill="none" d="M 0 ${100 - firstYPercent} L 200 ${100 - lastYPercent}" style="--path: path('M 0 100 L 200 100');"></path></svg>`;
614
660
  };
615
661
  function createKeyTotals(chartElement, chartOuter) {
@@ -627,17 +673,21 @@ function createKeyTotals(chartElement, chartOuter) {
627
673
  Array.from(chartOuter.querySelectorAll('.chart__key .key[data-label]')).forEach((key) => {
628
674
  if (key.querySelector('.chart__total'))
629
675
  key.querySelector('.chart__total').remove();
630
- let label = key.getAttribute('data-label');
676
+ const label = key.getAttribute('data-label');
631
677
  let keyTotal = 0;
632
678
  Array.from(chartOuter.querySelectorAll(`tbody td[data-label="${label}"]`)).forEach((td) => {
633
679
  const value = Number.parseFloat(td.getAttribute('data-numeric'));
634
680
  keyTotal += value;
635
681
  });
636
- let keyPercent = Math.round((keyTotal / chartTotal) * 100);
682
+ const keyPercent = Math.round((keyTotal / chartTotal) * 100);
637
683
  if (chartElement.hasAttribute('data-currency')) {
638
- if (chartElement.getAttribute('data-currency') == "GBP") {
684
+ if (chartElement.getAttribute('data-currency') == 'GBP') {
639
685
  // @ts-ignore
640
- keyTotal = new Intl.NumberFormat('en-GB', { style: 'currency', currency: 'GBP', trailingZeroDisplay: 'stripIfInteger' }).format(keyTotal);
686
+ keyTotal = new Intl.NumberFormat('en-GB', {
687
+ style: 'currency',
688
+ currency: 'GBP',
689
+ trailingZeroDisplay: 'stripIfInteger',
690
+ }).format(keyTotal);
641
691
  }
642
692
  }
643
693
  else if (chartElement.hasAttribute('data-total-format')) {