@iamproperty/components 7.3.0 → 7.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (327) hide show
  1. package/README.md +1 -1
  2. package/assets/css/components/actionbar.component.css +1 -1
  3. package/assets/css/components/actionbar.component.css.map +1 -1
  4. package/assets/css/components/actionbar.global.css +1 -1
  5. package/assets/css/components/actionbar.global.css.map +1 -1
  6. package/assets/css/components/address-lookup.component.css +1 -0
  7. package/assets/css/components/address-lookup.component.css.map +1 -0
  8. package/assets/css/components/barchart.component.css +1 -1
  9. package/assets/css/components/barchart.component.css.map +1 -1
  10. package/assets/css/components/calendar.component.css +1 -0
  11. package/assets/css/components/calendar.component.css.map +1 -0
  12. package/assets/css/components/calendar.config.css +1 -0
  13. package/assets/css/components/calendar.config.css.map +1 -0
  14. package/assets/css/components/card.component.css +1 -1
  15. package/assets/css/components/card.component.css.map +1 -1
  16. package/assets/css/components/carousel.component.css +1 -1
  17. package/assets/css/components/carousel.component.css.map +1 -1
  18. package/assets/css/components/charts.css +1 -1
  19. package/assets/css/components/charts.css.map +1 -1
  20. package/assets/css/components/collapsible-side.css +1 -1
  21. package/assets/css/components/collapsible-side.css.map +1 -1
  22. package/assets/css/components/content.component.css +1 -0
  23. package/assets/css/components/content.component.css.map +1 -0
  24. package/assets/css/components/darkmode.component.css +1 -0
  25. package/assets/css/components/darkmode.component.css.map +1 -0
  26. package/assets/css/components/doughnutchart.component.css +1 -1
  27. package/assets/css/components/doughnutchart.component.css.map +1 -1
  28. package/assets/css/components/fileupload.css.map +1 -1
  29. package/assets/css/components/inline-edit.css +1 -1
  30. package/assets/css/components/inline-edit.css.map +1 -1
  31. package/assets/css/components/marketing.component.css +1 -0
  32. package/assets/css/components/marketing.component.css.map +1 -0
  33. package/assets/css/components/menu.component.css.map +1 -1
  34. package/assets/css/components/{menu.css → menu.global.css} +1 -1
  35. package/assets/css/components/menu.global.css.map +1 -0
  36. package/assets/css/components/milestone.css +1 -0
  37. package/assets/css/components/milestone.css.map +1 -0
  38. package/assets/css/components/multi-step.component.css +1 -1
  39. package/assets/css/components/multi-step.component.css.map +1 -1
  40. package/assets/css/components/multiselect.css +1 -1
  41. package/assets/css/components/multiselect.css.map +1 -1
  42. package/assets/css/components/multiselect.preload.css +1 -1
  43. package/assets/css/components/multiselect.preload.css.map +1 -1
  44. package/assets/css/components/nav.component.css +1 -1
  45. package/assets/css/components/nav.component.css.map +1 -1
  46. package/assets/css/components/nav.global.css +1 -1
  47. package/assets/css/components/nav.global.css.map +1 -1
  48. package/assets/css/components/notification.css +1 -1
  49. package/assets/css/components/notification.css.map +1 -1
  50. package/assets/css/components/pagination.css.map +1 -1
  51. package/assets/css/components/property-searchbar.css +1 -1
  52. package/assets/css/components/property-searchbar.css.map +1 -1
  53. package/assets/css/components/rank.component.css +1 -1
  54. package/assets/css/components/rank.component.css.map +1 -1
  55. package/assets/css/components/rankings.component.css +1 -1
  56. package/assets/css/components/rankings.component.css.map +1 -1
  57. package/assets/css/components/rankings.global.css +1 -1
  58. package/assets/css/components/rankings.global.css.map +1 -1
  59. package/assets/css/components/slider.css.map +1 -1
  60. package/assets/css/components/split-button.component.css +1 -0
  61. package/assets/css/components/split-button.component.css.map +1 -0
  62. package/assets/css/components/word-count.component.css +1 -0
  63. package/assets/css/components/word-count.component.css.map +1 -0
  64. package/assets/css/core.min.css +1 -1
  65. package/assets/css/core.min.css.map +1 -1
  66. package/assets/css/mobile-core.min.css +1 -1
  67. package/assets/css/mobile-core.min.css.map +1 -1
  68. package/assets/css/mobile.min.css +1 -1
  69. package/assets/css/mobile.min.css.map +1 -1
  70. package/assets/css/style.min.css +1 -1
  71. package/assets/css/style.min.css.map +1 -1
  72. package/assets/js/components/accordion/accordion.component.js +40 -19
  73. package/assets/js/components/accordion/accordion.component.min.js +15 -15
  74. package/assets/js/components/accordion/accordion.component.min.js.map +1 -1
  75. package/assets/js/components/actionbar/actionbar.component.js +59 -31
  76. package/assets/js/components/actionbar/actionbar.component.min.js +18 -17
  77. package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
  78. package/assets/js/components/address-lookup/address-lookup.component.js +6 -8
  79. package/assets/js/components/address-lookup/address-lookup.component.min.js +10 -12
  80. package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -1
  81. package/assets/js/components/advanced-select/advanced-select.component.js +63 -0
  82. package/assets/js/components/advanced-select/advanced-select.component.min.js +23 -0
  83. package/assets/js/components/advanced-select/advanced-select.component.min.js.map +1 -0
  84. package/assets/js/components/applied-filters/applied-filters.component.min.js +1 -1
  85. package/assets/js/components/applied-filters/applied-filters.component.min.js.map +1 -1
  86. package/assets/js/components/barchart/barchart.component.min.js +2 -2
  87. package/assets/js/components/barchart/barchart.component.min.js.map +1 -1
  88. package/assets/js/components/bento-grid/bento-grid.component.min.js +1 -1
  89. package/assets/js/components/bento-grid/bento-grid.component.min.js.map +1 -1
  90. package/assets/js/components/calendar/calendar.component.js +1100 -0
  91. package/assets/js/components/calendar/calendar.component.min.js +170 -0
  92. package/assets/js/components/calendar/calendar.component.min.js.map +1 -0
  93. package/assets/js/components/card/card.component.js +14 -8
  94. package/assets/js/components/card/card.component.min.js +16 -10
  95. package/assets/js/components/card/card.component.min.js.map +1 -1
  96. package/assets/js/components/carousel/carousel.component.js +17 -19
  97. package/assets/js/components/carousel/carousel.component.min.js +17 -19
  98. package/assets/js/components/carousel/carousel.component.min.js.map +1 -1
  99. package/assets/js/components/collapsible-side/collapsible-side.component.js +47 -12
  100. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +6 -5
  101. package/assets/js/components/collapsible-side/collapsible-side.component.min.js.map +1 -1
  102. package/assets/js/components/content/content.component.js +66 -0
  103. package/assets/js/components/content/content.component.min.js +15 -0
  104. package/assets/js/components/content/content.component.min.js.map +1 -0
  105. package/assets/js/components/darkmode/darkmode.component.js +70 -0
  106. package/assets/js/components/darkmode/darkmode.component.min.js +10 -0
  107. package/assets/js/components/darkmode/darkmode.component.min.js.map +1 -0
  108. package/assets/js/components/doughnutchart/doughnutchart.component.min.js +2 -2
  109. package/assets/js/components/doughnutchart/doughnutchart.component.min.js.map +1 -1
  110. package/assets/js/components/fileupload/fileupload.component.min.js +1 -1
  111. package/assets/js/components/fileupload/fileupload.component.min.js.map +1 -1
  112. package/assets/js/components/filter-card/filter-card.component.min.js +1 -1
  113. package/assets/js/components/filter-card/filter-card.component.min.js.map +1 -1
  114. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  115. package/assets/js/components/filterlist/filterlist.component.min.js.map +1 -1
  116. package/assets/js/components/header/header.component.min.js +1 -1
  117. package/assets/js/components/header/header.component.min.js.map +1 -1
  118. package/assets/js/components/inline-edit/inline-edit.component.min.js +5 -5
  119. package/assets/js/components/inline-edit/inline-edit.component.min.js.map +1 -1
  120. package/assets/js/components/marketing/marketing.component.js +1 -1
  121. package/assets/js/components/marketing/marketing.component.min.js +2 -2
  122. package/assets/js/components/marketing/marketing.component.min.js.map +1 -1
  123. package/assets/js/components/menu/menu.component.js +12 -4
  124. package/assets/js/components/menu/menu.component.min.js +4 -5
  125. package/assets/js/components/menu/menu.component.min.js.map +1 -1
  126. package/assets/js/components/milestone/milestone.component.js +36 -0
  127. package/assets/js/components/milestone/milestone.component.min.js +15 -0
  128. package/assets/js/components/milestone/milestone.component.min.js.map +1 -0
  129. package/assets/js/components/milestone-group/milestone-group.component.js +33 -0
  130. package/assets/js/components/milestone-group/milestone-group.component.min.js +13 -0
  131. package/assets/js/components/milestone-group/milestone-group.component.min.js.map +1 -0
  132. package/assets/js/components/multi-step/multi-step.component.min.js +3 -3
  133. package/assets/js/components/multi-step/multi-step.component.min.js.map +1 -1
  134. package/assets/js/components/multiselect/multiselect.component.js +54 -2
  135. package/assets/js/components/multiselect/multiselect.component.min.js +5 -5
  136. package/assets/js/components/multiselect/multiselect.component.min.js.map +1 -1
  137. package/assets/js/components/nav/nav.component.js +18 -0
  138. package/assets/js/components/nav/nav.component.min.js +6 -6
  139. package/assets/js/components/nav/nav.component.min.js.map +1 -1
  140. package/assets/js/components/notification/notification.component.js +15 -11
  141. package/assets/js/components/notification/notification.component.min.js +4 -4
  142. package/assets/js/components/notification/notification.component.min.js.map +1 -1
  143. package/assets/js/components/pagination/pagination.component.min.js +1 -1
  144. package/assets/js/components/pagination/pagination.component.min.js.map +1 -1
  145. package/assets/js/components/rank/rank.component.js +346 -210
  146. package/assets/js/components/rank/rank.component.min.js +346 -211
  147. package/assets/js/components/rank/rank.component.min.js.map +1 -1
  148. package/assets/js/components/rankings/rankings.component.js +17 -8
  149. package/assets/js/components/rankings/rankings.component.min.js +14 -8
  150. package/assets/js/components/rankings/rankings.component.min.js.map +1 -1
  151. package/assets/js/components/record-card/record-card.component.min.js +1 -1
  152. package/assets/js/components/record-card/record-card.component.min.js.map +1 -1
  153. package/assets/js/components/search/search.component.js +5 -3
  154. package/assets/js/components/search/search.component.min.js +6 -6
  155. package/assets/js/components/search/search.component.min.js.map +1 -1
  156. package/assets/js/components/slider/slider.component.min.js +1 -1
  157. package/assets/js/components/slider/slider.component.min.js.map +1 -1
  158. package/assets/js/components/split-button/split-button.component.js +58 -0
  159. package/assets/js/components/split-button/split-button.component.min.js +31 -0
  160. package/assets/js/components/split-button/split-button.component.min.js.map +1 -0
  161. package/assets/js/components/table/table.component.js +12 -0
  162. package/assets/js/components/table/table.component.min.js +3 -3
  163. package/assets/js/components/table/table.component.min.js.map +1 -1
  164. package/assets/js/components/table-ajax/table-ajax.component.js +12 -0
  165. package/assets/js/components/table-ajax/table-ajax.component.min.js +3 -3
  166. package/assets/js/components/table-ajax/table-ajax.component.min.js.map +1 -1
  167. package/assets/js/components/table-basic/table-basic.component.min.js +1 -1
  168. package/assets/js/components/table-basic/table-basic.component.min.js.map +1 -1
  169. package/assets/js/components/table-no-submit/table-no-submit.component.js +12 -0
  170. package/assets/js/components/table-no-submit/table-no-submit.component.min.js +3 -3
  171. package/assets/js/components/table-no-submit/table-no-submit.component.min.js.map +1 -1
  172. package/assets/js/components/table-submit/table-submit.component.js +12 -0
  173. package/assets/js/components/table-submit/table-submit.component.min.js +3 -3
  174. package/assets/js/components/table-submit/table-submit.component.min.js.map +1 -1
  175. package/assets/js/components/tabs/tabs.component.min.js +1 -1
  176. package/assets/js/components/tabs/tabs.component.min.js.map +1 -1
  177. package/assets/js/components/video-card/video-card.component.min.js +1 -1
  178. package/assets/js/components/video-card/video-card.component.min.js.map +1 -1
  179. package/assets/js/components/word-count/word-count.component.js +81 -0
  180. package/assets/js/components/word-count/word-count.component.min.js +12 -0
  181. package/assets/js/components/word-count/word-count.component.min.js.map +1 -0
  182. package/assets/js/components.js +59 -0
  183. package/assets/js/modules/advanced-select.js +106 -0
  184. package/assets/js/modules/dialogs.js +53 -51
  185. package/assets/js/modules/dynamicEvents.js +7 -0
  186. package/assets/js/modules/inputs.js +0 -18
  187. package/assets/js/modules/milestone-group.js +30 -0
  188. package/assets/js/modules/milestone.js +89 -0
  189. package/assets/js/modules/table.js +11 -1
  190. package/assets/js/modules/videos.js +1 -1
  191. package/assets/js/scripts.bundle.js +3 -3
  192. package/assets/js/scripts.bundle.js.map +1 -1
  193. package/assets/js/scripts.bundle.min.js +2 -2
  194. package/assets/js/scripts.bundle.min.js.map +1 -1
  195. package/assets/js/scripts.js +5 -0
  196. package/assets/sass/_components.scss +15 -4
  197. package/assets/sass/_example.scss +1 -1
  198. package/assets/sass/_functions/utility-mixins.scss +40 -0
  199. package/assets/sass/_functions/variables.scss +11 -5
  200. package/assets/sass/components/actionbar.component.scss +23 -1
  201. package/assets/sass/components/actionbar.global.scss +5 -5
  202. package/assets/sass/components/{address-lookup.scss → address-lookup.component.scss} +10 -0
  203. package/assets/sass/components/calendar.component.scss +1272 -0
  204. package/assets/sass/components/calendar.config.scss +423 -0
  205. package/assets/sass/components/card.component.scss +4 -34
  206. package/assets/sass/components/carousel.component.scss +5 -0
  207. package/assets/sass/components/collapsible-side.scss +91 -95
  208. package/assets/sass/components/content.component.scss +18 -0
  209. package/assets/sass/components/darkmode.component.scss +22 -0
  210. package/assets/sass/components/inline-edit.scss +2 -0
  211. package/assets/sass/components/{marketing.scss → marketing.component.scss} +2 -6
  212. package/assets/sass/components/menu.component.scss +3 -8
  213. package/assets/sass/components/milestone.scss +216 -0
  214. package/assets/sass/components/multi-step.component.scss +1 -1
  215. package/assets/sass/components/multiselect.preload.scss +1 -1
  216. package/assets/sass/components/multiselect.scss +2 -0
  217. package/assets/sass/components/nav.component.scss +17 -6
  218. package/assets/sass/components/nav.global.scss +29 -3
  219. package/assets/sass/components/notification.scss +32 -13
  220. package/assets/sass/components/rank.component.scss +197 -24
  221. package/assets/sass/components/rankings.component.scss +38 -28
  222. package/assets/sass/components/rankings.global.scss +64 -2
  223. package/assets/sass/components/split-button.component.scss +79 -0
  224. package/assets/sass/components/table-basic.global.scss +32 -32
  225. package/assets/sass/components/word-count.component.scss +26 -0
  226. package/assets/sass/elements/admin-panel.scss +1 -1
  227. package/assets/sass/elements/badge-tag.scss +5 -1
  228. package/assets/sass/elements/buttons--compact.scss +4 -0
  229. package/assets/sass/elements/details.scss +33 -7
  230. package/assets/sass/elements/forms.scss +135 -28
  231. package/assets/sass/elements/links.scss +132 -4
  232. package/assets/sass/elements/lists.scss +62 -1
  233. package/assets/sass/elements/popover.scss +64 -10
  234. package/assets/sass/elements/toggle-button.scss +8 -8
  235. package/assets/sass/elements/type.scss +7 -10
  236. package/assets/sass/foundations/colours.scss +0 -0
  237. package/assets/sass/foundations/reboot.scss +8 -1
  238. package/assets/sass/foundations/root.scss +41 -51
  239. package/assets/sass/templates/form.scss +0 -2
  240. package/assets/ts/components/accordion/accordion.component.ts +47 -26
  241. package/assets/ts/components/actionbar/actionbar.component.ts +58 -22
  242. package/assets/ts/components/address-lookup/address-lookup.component.ts +6 -8
  243. package/assets/ts/components/advanced-select/advanced-select.component.ts +74 -0
  244. package/assets/ts/components/calendar/calendar.component.ts +1330 -0
  245. package/assets/ts/components/card/card.component.ts +15 -14
  246. package/assets/ts/components/carousel/carousel.component.ts +17 -19
  247. package/assets/ts/components/collapsible-side/collapsible-side.component.ts +53 -12
  248. package/assets/ts/components/content/content.component.ts +78 -0
  249. package/assets/ts/components/darkmode/darkmode.component.ts +85 -0
  250. package/assets/ts/components/marketing/marketing.component.ts +1 -1
  251. package/assets/ts/components/menu/menu.component.ts +18 -10
  252. package/assets/ts/components/milestone/milestone.component.ts +43 -0
  253. package/assets/ts/components/milestone-group/milestone-group.component.ts +39 -0
  254. package/assets/ts/components/multiselect/multiselect.component.ts +60 -3
  255. package/assets/ts/components/nav/nav.component.ts +18 -0
  256. package/assets/ts/components/notification/notification.component.ts +30 -11
  257. package/assets/ts/components/rank/rank.component.ts +345 -209
  258. package/assets/ts/components/rankings/rankings.component.ts +27 -8
  259. package/assets/ts/components/search/search.component.ts +6 -4
  260. package/assets/ts/components/split-button/split-button.component.ts +67 -0
  261. package/assets/ts/components/table/table.component.ts +14 -0
  262. package/assets/ts/components/table-ajax/table-ajax.component.ts +14 -0
  263. package/assets/ts/components/table-no-submit/table-no-submit.component.ts +14 -0
  264. package/assets/ts/components/table-submit/table-submit.component.ts +14 -0
  265. package/assets/ts/components/video-card/video-card.component.ts +2 -3
  266. package/assets/ts/components/word-count/word-count.component.ts +91 -0
  267. package/assets/ts/components.ts +64 -0
  268. package/assets/ts/modules/advanced-select.ts +120 -0
  269. package/assets/ts/modules/data-layer.md +0 -5
  270. package/assets/ts/modules/dialogs.ts +64 -61
  271. package/assets/ts/modules/dynamicEvents.ts +10 -0
  272. package/assets/ts/modules/inputs.ts +0 -25
  273. package/assets/ts/modules/milestone-group.ts +39 -0
  274. package/assets/ts/modules/milestone.ts +119 -0
  275. package/assets/ts/modules/table.ts +15 -1
  276. package/assets/ts/modules/videos.ts +19 -37
  277. package/assets/ts/scripts.ts +6 -3
  278. package/dist/components.es.js +849 -1079
  279. package/dist/components.umd.js +1052 -220
  280. package/package.json +6 -6
  281. package/src/components/Accordion/Accordion.vue +14 -23
  282. package/src/components/Accordion/AccordionItem.vue +27 -43
  283. package/src/components/Actionbar/Actionbar.vue +17 -19
  284. package/src/components/AddressLookup/AddressLookup.vue +17 -18
  285. package/src/components/AdvancedSelect/AdvancedSelect.vue +22 -0
  286. package/src/components/AppliedFilters/AppliedFilters.vue +16 -18
  287. package/src/components/Banner/Banner.vue +18 -21
  288. package/src/components/BarChart/BarChart.vue +17 -18
  289. package/src/components/Calendar/Calendar.vue +20 -0
  290. package/src/components/Card/Card.vue +17 -17
  291. package/src/components/Carousel/Carousel.vue +17 -20
  292. package/src/components/CollapsibleSideMenu/CollapsibleSideMenu.vue +7 -13
  293. package/src/components/Content/Content.vue +22 -0
  294. package/src/components/DarkMode/DarkMode.vue +19 -0
  295. package/src/components/DoughnutChart/DoughnutChart.vue +17 -18
  296. package/src/components/FileUpload/FileUpload.vue +22 -28
  297. package/src/components/FilterCard/FilterCard.vue +17 -18
  298. package/src/components/Filterlist/Filterlist.vue +17 -0
  299. package/src/components/Header/Header.vue +28 -29
  300. package/src/components/InlineEdit/InlineEdit.vue +11 -19
  301. package/src/components/Menu/Menu.vue +17 -17
  302. package/src/components/Milestones/Milestone.vue +22 -0
  303. package/src/components/Milestones/MilestoneGroup.vue +24 -0
  304. package/src/components/Multiselect/Multiselect.vue +17 -18
  305. package/src/components/Nav/Nav.vue +17 -19
  306. package/src/components/Notification/Notification.vue +17 -15
  307. package/src/components/Pagination/Pagination.vue +16 -16
  308. package/src/components/Rank/Rank.vue +17 -18
  309. package/src/components/Rankings/Rankings.vue +17 -27
  310. package/src/components/RecordCard/RecordCard.vue +17 -18
  311. package/src/components/Search/Search.vue +17 -17
  312. package/src/components/Slider/Slider.vue +17 -17
  313. package/src/components/SplitButton/README.md +19 -0
  314. package/src/components/SplitButton/SplitButton.vue +23 -0
  315. package/src/components/Tabs/Tabs.vue +17 -17
  316. package/src/components/VideoCard/VideoCard.vue +17 -18
  317. package/src/components/WordCount/WordCount.vue +22 -0
  318. package/src/index.js +2 -0
  319. package/assets/css/components/address-lookup.css +0 -1
  320. package/assets/css/components/address-lookup.css.map +0 -1
  321. package/assets/css/components/marketing.css +0 -1
  322. package/assets/css/components/marketing.css.map +0 -1
  323. package/assets/css/components/menu.css.map +0 -1
  324. package/assets/css/components/nav.old.css +0 -1
  325. package/assets/css/components/nav.old.css.map +0 -1
  326. package/assets/sass/components/nav.old.scss +0 -891
  327. /package/assets/sass/components/{menu.scss → menu.global.scss} +0 -0
@@ -19,9 +19,15 @@ class iamRankings extends HTMLElement {
19
19
  ${loadCSS}
20
20
  </style>
21
21
  <div class="podium">
22
- <div><iam-rank>1st</iam-rank><span class="first-position"></span></div>
23
- <div><iam-rank>2nd</iam-rank><span class="second-position"></span></div>
24
- <div><iam-rank>3rd</iam-rank><span class="third-position"></span></div>
22
+ <div>
23
+ <iam-rank class="rank--trophy first-position">1st</iam-rank>
24
+ </div>
25
+ <div>
26
+ <iam-rank class="second-position">2nd</iam-rank>
27
+ </div>
28
+ <div>
29
+ <iam-rank class="third-position">3rd</iam-rank>
30
+ </div>
25
31
  </div>
26
32
  <div class="mh-md" part="leaderboard"><slot></slot></div>
27
33
  `;
@@ -36,12 +42,21 @@ class iamRankings extends HTMLElement {
36
42
  const firstText = this.shadowRoot?.querySelector('.first-position');
37
43
  const secondText = this.shadowRoot?.querySelector('.second-position');
38
44
  const thirdText = this.shadowRoot?.querySelector('.third-position');
39
- const max = this.hasAttribute('data-max') ? this.getAttribute('data-max') : 100;
40
45
 
41
- firstText?.innerHTML = this.querySelector('tbody tr:nth-child(1) :is(td,th):nth-child(1)')?.textContent;
42
- secondText?.innerHTML = this.querySelector('tbody tr:nth-child(2) :is(td,th):nth-child(1)')?.textContent;
43
- thirdText?.innerHTML = this.querySelector('tbody tr:nth-child(3) :is(td,th):nth-child(1)')?.textContent;
46
+ firstText?.setAttribute(
47
+ 'data-title',
48
+ this.querySelector('tbody tr:nth-child(1) :is(td,th):nth-child(1)')?.textContent
49
+ );
50
+ secondText?.setAttribute(
51
+ 'data-title',
52
+ this.querySelector('tbody tr:nth-child(2) :is(td,th):nth-child(1)')?.textContent
53
+ );
54
+ thirdText?.setAttribute(
55
+ 'data-title',
56
+ this.querySelector('tbody tr:nth-child(3) :is(td,th):nth-child(1)')?.textContent
57
+ );
44
58
 
59
+ const max = this.hasAttribute('data-max') ? this.getAttribute('data-max') : 100;
45
60
  this.querySelectorAll('tbody tr').forEach((element) => {
46
61
  const value = element.querySelector('td:last-child')?.textContent?.trim();
47
62
 
@@ -49,7 +64,11 @@ class iamRankings extends HTMLElement {
49
64
  element.querySelector(':first-child')?.innerHTML += `<progress max="${max}" value="${value}"></progress>`;
50
65
  });
51
66
 
52
- trackComponent(this, 'iam-rank', ['select-card']);
67
+ if (!this.classList.contains('hide-gold')) {
68
+ const firstRow = this.querySelector('tbody tr th');
69
+
70
+ firstRow?.insertAdjacentHTML('afterbegin', `<iam-rank class="rank--medal first-position">1st</iam-rank>`);
71
+ }
53
72
  }
54
73
  }
55
74
 
@@ -1,5 +1,6 @@
1
1
  import Cookies from 'js-cookie';
2
2
  import { safeID, resolvePath, isTraversable } from '../../modules/helpers';
3
+ import advancedSelect from '../../modules/advanced-select';
3
4
 
4
5
  // Data layer Web component created
5
6
  window.dataLayer = window.dataLayer || [];
@@ -75,6 +76,8 @@ class iamSearch extends HTMLElement {
75
76
  displayInputField.setAttribute('list', listID);
76
77
  }
77
78
 
79
+ advancedSelect(this, displayInputField, datalist, true);
80
+
78
81
  // Search the endpoint when 3 characters has been added
79
82
  if (searchWrapper.hasAttribute('data-url')) {
80
83
  displayInputField.addEventListener('input', () => {
@@ -91,6 +94,7 @@ class iamSearch extends HTMLElement {
91
94
 
92
95
  if (match) {
93
96
  inputField.value = match.getAttribute('data-value');
97
+ displayInputField.value = match.getAttribute('data-value');
94
98
  } else if (displayInputField.value.length > 0 && !subMatch) {
95
99
  displayInputField.classList.add('is-invalid');
96
100
  displayInputField.closest('label').setAttribute('data-error', 'No results returned');
@@ -141,10 +145,8 @@ class iamSearch extends HTMLElement {
141
145
  const actualValue = resolvePath(item, valueSchema, '');
142
146
  const displayValue = resolvePath(item, displaySchema, '').replace('\n', ', ');
143
147
 
144
- console.log(displayValue);
145
-
146
148
  if (!datalist.querySelector(`option[data-value="${actualValue}"]`))
147
- listString += `<option value="${displayValue}" data-value="${actualValue}"></option>`;
149
+ listString += `<option value="${displayValue}" data-value="${actualValue}">${displayValue}</option>`;
148
150
  });
149
151
  } else if (typeof loopValues == 'object') {
150
152
  for (const [key, value] of Object.entries(loopValues)) {
@@ -154,7 +156,7 @@ class iamSearch extends HTMLElement {
154
156
  const displayValue = resolvePath(item, displaySchema, '').replace('\n', ', ');
155
157
 
156
158
  if (!datalist.querySelector(`option[data-value="${actualValue}"]`))
157
- listString += `<option value="${key}: ${displayValue}" data-value='${actualValue}'></option>`;
159
+ listString += `<option value="${key}: ${displayValue}" data-value='${actualValue}'>${key}: ${displayValue}</option>`;
158
160
  });
159
161
  }
160
162
  }
@@ -0,0 +1,67 @@
1
+ import iamMenu from '../menu/menu.component';
2
+
3
+ // Data layer Web component created
4
+ window.dataLayer = window.dataLayer || [];
5
+ window.dataLayer.push({
6
+ event: 'customElementRegistered',
7
+ element: 'split-button',
8
+ });
9
+
10
+ class iamSplitButton extends HTMLElement {
11
+ constructor() {
12
+ super();
13
+ this.attachShadow({ mode: 'open' });
14
+
15
+ const assetLocation = document.body.hasAttribute('data-assets-location')
16
+ ? document.body.getAttribute('data-assets-location')
17
+ : '/assets';
18
+ const coreCSS = document.body.hasAttribute('data-core-css')
19
+ ? document.body.getAttribute('data-core-css')
20
+ : `${assetLocation}/css/core.min.css`;
21
+ const loadCSS = `@import "${assetLocation}/css/components/split-button.component.css";`;
22
+
23
+ const template = document.createElement('template');
24
+ template.innerHTML = `
25
+ <style>
26
+ @import "${coreCSS}";
27
+ ${loadCSS}
28
+ ${this.hasAttribute('css') ? `@import "${this.getAttribute('css')}";` : ``}
29
+ </style>
30
+ <div class="split-button">
31
+ <slot></slot>
32
+ <div class="dropdown">
33
+ <button class="btn btn-split" part="dropdown" popovertarget="actions" style="anchor-name: --anchor-el;" title="Further actions">
34
+ <i class="fa fa-angle-down fa-light"></i>
35
+ </button>
36
+
37
+ <iam-menu id="actions" style="position-anchor: --anchor-el;" popover>
38
+ <slot name="menu-item"></slot>
39
+ </iam-menu>
40
+
41
+ </div>
42
+ </div>
43
+ `;
44
+ this.shadowRoot.appendChild(template.content.cloneNode(true));
45
+ }
46
+
47
+ connectedCallback(): void {
48
+ const dropdown = this.shadowRoot.querySelector('.split-menu');
49
+ const splitBtn = this.shadowRoot.querySelector('.btn-split');
50
+ const html = document.querySelector('html');
51
+ const mainButton = this.querySelector('.btn');
52
+
53
+ if (!window.customElements.get(`iam-menu`)) window.customElements.define(`iam-menu`, iamMenu);
54
+
55
+ splitBtn.className = `${mainButton.className} btn-split`;
56
+
57
+ if (mainButton.disabled) {
58
+ splitBtn.disabled = true;
59
+ }
60
+
61
+ if (mainButton.classList.contains('btn-sm')) {
62
+ splitBtn.classList.add('btn-sm');
63
+ }
64
+ }
65
+ }
66
+
67
+ export default iamSplitButton;
@@ -55,6 +55,20 @@ class iamTableBasic extends HTMLElement {
55
55
 
56
56
  const savedTableBody = table.querySelector('tbody').cloneNode(true);
57
57
 
58
+ const assetLocation = document.body.hasAttribute('data-assets-location')
59
+ ? document.body.getAttribute('data-assets-location')
60
+ : '/assets';
61
+
62
+ if (!window.customElements.get(`iam-menu`)) {
63
+ import(/* @vite-ignore */ `${assetLocation}/js/components/menu/menu.component.js`)
64
+ .then((module) => {
65
+ window.customElements.define(`iam-menu`, module.default);
66
+ })
67
+ .catch((err) => {
68
+ console.log(err.message);
69
+ });
70
+ }
71
+
58
72
  moveAttributesToComponents(this);
59
73
 
60
74
  setupBasicTable(this, table, form, pagination);
@@ -49,6 +49,20 @@ class iamTableAjax extends HTMLElement {
49
49
 
50
50
  const form = findForm(this, table);
51
51
 
52
+ const assetLocation = document.body.hasAttribute('data-assets-location')
53
+ ? document.body.getAttribute('data-assets-location')
54
+ : '/assets';
55
+
56
+ if (!window.customElements.get(`iam-menu`)) {
57
+ import(/* @vite-ignore */ `${assetLocation}/js/components/menu/menu.component.js`)
58
+ .then((module) => {
59
+ window.customElements.define(`iam-menu`, module.default);
60
+ })
61
+ .catch((err) => {
62
+ console.log(err.message);
63
+ });
64
+ }
65
+
52
66
  setupBasicTable(this, table, form, pagination);
53
67
 
54
68
  setupAdvancedTable(this, table, form, pagination);
@@ -51,6 +51,20 @@ class iamTableNoSubmit extends HTMLElement {
51
51
 
52
52
  const form = findForm(this, table);
53
53
 
54
+ const assetLocation = document.body.hasAttribute('data-assets-location')
55
+ ? document.body.getAttribute('data-assets-location')
56
+ : '/assets';
57
+
58
+ if (!window.customElements.get(`iam-menu`)) {
59
+ import(/* @vite-ignore */ `${assetLocation}/js/components/menu/menu.component.js`)
60
+ .then((module) => {
61
+ window.customElements.define(`iam-menu`, module.default);
62
+ })
63
+ .catch((err) => {
64
+ console.log(err.message);
65
+ });
66
+ }
67
+
54
68
  setupBasicTable(this, table, form, pagination);
55
69
 
56
70
  setupAdvancedTable(this, table);
@@ -49,6 +49,20 @@ class iamTableSubmit extends HTMLElement {
49
49
  if (params.has('page')) pagination.setAttribute('data-page', params.get('page'));
50
50
  if (params.has('show')) pagination.setAttribute('data-show', params.get('show'));
51
51
 
52
+ const assetLocation = document.body.hasAttribute('data-assets-location')
53
+ ? document.body.getAttribute('data-assets-location')
54
+ : '/assets';
55
+
56
+ if (!window.customElements.get(`iam-menu`)) {
57
+ import(/* @vite-ignore */ `${assetLocation}/js/components/menu/menu.component.js`)
58
+ .then((module) => {
59
+ window.customElements.define(`iam-menu`, module.default);
60
+ })
61
+ .catch((err) => {
62
+ console.log(err.message);
63
+ });
64
+ }
65
+
52
66
  setupBasicTable(this, table, form, pagination);
53
67
 
54
68
  setupAdvancedTable(this, table, form, pagination);
@@ -1,7 +1,6 @@
1
1
  import { trackComponent, trackComponentRegistered } from '../_global';
2
2
  import { cardHTML, setupCard } from '../../modules/card.module';
3
- import {loadYouTubeScripts,createYoutTubeVideo} from '../../modules/videos';
4
-
3
+ import { loadYouTubeScripts, createYoutTubeVideo } from '../../modules/videos';
5
4
 
6
5
  trackComponentRegistered('iam-video-card');
7
6
 
@@ -83,7 +82,7 @@ class iamVideoCard extends HTMLElement {
83
82
  });
84
83
  cardComponent.dispatchEvent(customEvent);
85
84
 
86
- createYoutTubeVideo(embed,this.getAttribute('[data-youtbue]'));
85
+ createYoutTubeVideo(embed, this.getAttribute('[data-youtbue]'));
87
86
  dialog.showModal();
88
87
  });
89
88
 
@@ -0,0 +1,91 @@
1
+ import { trackComponent, trackComponentRegistered } from '../_global';
2
+
3
+ trackComponentRegistered('iam-word-count');
4
+
5
+ class iamCard extends HTMLElement {
6
+ constructor() {
7
+ super();
8
+ this.attachShadow({ mode: 'open' });
9
+
10
+ const assetLocation = document.body.hasAttribute('data-assets-location')
11
+ ? document.body.getAttribute('data-assets-location')
12
+ : '/assets';
13
+ const loadCSS = `@import "${assetLocation}/css/components/word-count.component.css";`;
14
+
15
+ const template = document.createElement('template');
16
+ template.innerHTML = `
17
+ <style>
18
+
19
+ ${loadCSS}
20
+ </style>
21
+ <slot></slot>
22
+ `;
23
+
24
+ this.shadowRoot.appendChild(template.content.cloneNode(true));
25
+ }
26
+
27
+ connectedCallback(): void {
28
+ const input = this.querySelector('input,textarea,select');
29
+ let span = this.querySelector('[data-count]');
30
+
31
+ if (!span) {
32
+ span = document.createElement('span');
33
+ this.append(span);
34
+ }
35
+
36
+ console.log(input.value.split(' ').length);
37
+
38
+ if (this.hasAttribute('data-character')) span.setAttribute('data-count', input.value ? input.value.length : '0');
39
+ else span.setAttribute('data-count', input.value ? input.value.split(' ').length : '0');
40
+
41
+ const maxlength = this.getAttribute('data-max');
42
+ this.style.setProperty('--maxlength', maxlength);
43
+ span.setAttribute('data-max', this.getAttribute('data-max'));
44
+
45
+ input.addEventListener('input', (event) => {
46
+ if (this.hasAttribute('data-max') && span && this.hasAttribute('data-character')) {
47
+ input?.setAttribute('maxlength', this.getAttribute('data-max'));
48
+ span.setAttribute('data-count', input?.value.length);
49
+ } else if (this.hasAttribute('data-max') && span) {
50
+ if (input?.value.split(' ').length >= this.getAttribute('data-max')) {
51
+ event?.preventDefault();
52
+ input?.setAttribute('maxlength', input?.value.length);
53
+ } else {
54
+ input?.removeAttribute('maxlength');
55
+ }
56
+
57
+ span.setAttribute('data-count', input?.value.split(' ').length);
58
+ span.setAttribute('data-max', this.getAttribute('data-max'));
59
+ }
60
+ });
61
+
62
+ /*
63
+
64
+ // maxlength counter init
65
+ Array.from(document.querySelectorAll('input[maxlength],textarea[maxlength]')).forEach((input) => {
66
+ const wrapper = input.parentElement;
67
+ setMaxlengthVars(input, wrapper);
68
+ });
69
+
70
+
71
+
72
+ const wrapper = input.parentElement;
73
+ const maxlength = input.getAttribute('maxlength');
74
+
75
+ wrapper.style.setProperty('--maxlength', maxlength);
76
+
77
+ let span = input.nextElementSibling;
78
+
79
+ if (!span || (span && span.classList.contains('invalid-feedback'))) {
80
+ span = document.createElement('span');
81
+ wrapper.insertBefore(span, input.nextSibling);
82
+ }
83
+ v
84
+ span.setAttribute('data-count', input.value.length);
85
+
86
+
87
+ */
88
+ }
89
+ }
90
+
91
+ export default iamCard;
@@ -0,0 +1,64 @@
1
+ // @ts-nocheck
2
+ const components = [
3
+ 'accordion',
4
+ 'header',
5
+ 'table',
6
+ 'tabs',
7
+ 'card',
8
+ 'filter-card',
9
+ 'video-card',
10
+ 'record-card',
11
+ 'filterlist',
12
+ 'applied-filters',
13
+ 'pagination',
14
+ 'notification',
15
+ 'actionbar',
16
+ 'nav',
17
+ 'collapsible-side',
18
+ 'address-lookup',
19
+ 'fileupload',
20
+ 'search',
21
+ 'inline-edit',
22
+ 'multiselect',
23
+ 'multi-step',
24
+ 'slider',
25
+ 'carousel',
26
+ 'marketing',
27
+ 'barchart',
28
+ 'splitbutton',
29
+ 'word-count',
30
+ ];
31
+
32
+ const prefix = 'iam';
33
+ const options = {
34
+ rootMargin: '50px',
35
+ threshold: 0.1,
36
+ };
37
+ const componentExt = '.component.min.js';
38
+
39
+ // Load components - Each component will load once the first of its type has been loaded
40
+ components.forEach((component) => {
41
+ if (document.getElementsByTagName(`${prefix}-${component}`).length === 0) return;
42
+
43
+ const callback = (entries: any) => {
44
+ entries.forEach((entry: any) => {
45
+ if (entry.intersectionRatio > 0) {
46
+ console.log(component);
47
+
48
+ import(`./components/${component}/${component}${componentExt}`)
49
+ .then((module) => {
50
+ if (!window.customElements.get(`${prefix}-${component}`))
51
+ window.customElements.define(`${prefix}-${component}`, module.default);
52
+ })
53
+ .catch((err) => {
54
+ console.log(err.message);
55
+ });
56
+
57
+ intObserver.unobserve(entry.target);
58
+ }
59
+ });
60
+ };
61
+
62
+ const intObserver = new IntersectionObserver(callback, options);
63
+ intObserver.observe(document.getElementsByTagName(`${prefix}-${component}`)[0]);
64
+ });
@@ -0,0 +1,120 @@
1
+ function advancedSelect(advancedSelect, displayInputField, datalist, isSearch = false): boolean | void {
2
+ let currentFocus = -1;
3
+
4
+ if (!isSearch) {
5
+ displayInputField.addEventListener('focus', function () {
6
+ displayInputField.setAttribute('placeholder', displayInputField.value);
7
+ displayInputField.setAttribute('data-value', displayInputField.value);
8
+ displayInputField.value = '';
9
+
10
+ displayInputField.setAttribute('data-list', displayInputField.getAttribute('list'));
11
+ displayInputField.setAttribute('list', '');
12
+
13
+ datalist.style.display = 'block';
14
+ });
15
+ } else {
16
+ displayInputField.addEventListener('focus', function () {
17
+ displayInputField.setAttribute('data-list', displayInputField.getAttribute('list'));
18
+ displayInputField.setAttribute('list', '');
19
+
20
+ datalist.style.display = 'block';
21
+ });
22
+ }
23
+
24
+ displayInputField.addEventListener('blur', function () {
25
+ if (displayInputField.hasAttribute('data-value')) {
26
+ displayInputField.value = displayInputField.getAttribute('data-value');
27
+ }
28
+
29
+ setTimeout(() => {
30
+ datalist.style.display = 'none';
31
+ }, 500);
32
+ });
33
+
34
+ for (const option of datalist.options) {
35
+ if (option.innerHTML == '') option.innerHTML = option.value;
36
+ }
37
+
38
+ advancedSelect.addEventListener('click', function () {
39
+ if (event && event.target instanceof HTMLElement && event.target.closest('datalist option')) {
40
+ const option = event.target.closest('datalist option');
41
+
42
+ displayInputField.value = option.value;
43
+
44
+ if (typeof window.triggerDynamicEvent == 'function') window.triggerDynamicEvent(displayInputField);
45
+
46
+ datalist.style.display = 'none';
47
+
48
+ for (const optionInner of datalist.options) {
49
+ optionInner.classList.remove('active');
50
+ }
51
+
52
+ option.classList.add('active');
53
+ }
54
+ });
55
+
56
+ displayInputField.addEventListener('input', function () {
57
+ displayInputField.removeAttribute('data-value');
58
+ currentFocus = -1;
59
+ const text = displayInputField.value.toUpperCase();
60
+ for (const option of datalist.options) {
61
+ if (option.value.toUpperCase().indexOf(text) > -1) {
62
+ option.style.display = 'block';
63
+ } else {
64
+ option.style.display = 'none';
65
+ }
66
+ }
67
+ });
68
+
69
+ displayInputField.addEventListener('keydown', function (e) {
70
+ if (e.keyCode == 40) {
71
+ currentFocus++;
72
+ addActive(datalist.options);
73
+ } else if (e.keyCode == 38) {
74
+ currentFocus--;
75
+ addActive(datalist.options);
76
+ } else if (e.keyCode == 13) {
77
+ e.preventDefault();
78
+ if (currentFocus > -1) {
79
+ /*and simulate a click on the "active" item:*/
80
+ if (datalist.options) datalist.options[currentFocus].click();
81
+ }
82
+ }
83
+ });
84
+
85
+ function addActive(x): void {
86
+ if (!x) return false;
87
+ removeActive(x);
88
+ if (currentFocus >= x.length) currentFocus = 0;
89
+ if (currentFocus < 0) currentFocus = x.length - 1;
90
+ x[currentFocus].classList.add('active');
91
+ }
92
+
93
+ function removeActive(x): void {
94
+ for (let i = 0; i < x.length; i++) {
95
+ x[i].classList.remove('active');
96
+ }
97
+ }
98
+
99
+ // Add the empty button
100
+ displayInputField
101
+ .closest('label')
102
+ .insertAdjacentHTML(
103
+ 'beforeend',
104
+ '<button class="empty btn btn-action"><i class="fa-light fa-times me-0"></i></button>'
105
+ );
106
+ const closeBtn = advancedSelect.querySelector('.empty');
107
+
108
+ closeBtn.addEventListener('click', function (e) {
109
+ displayInputField.removeAttribute('placeholder');
110
+ displayInputField.removeAttribute('data-value');
111
+ displayInputField.value = '';
112
+
113
+ for (const optionInner of datalist.options) {
114
+ optionInner.classList.remove('active');
115
+ optionInner.removeAttribute('style');
116
+ }
117
+ });
118
+ }
119
+
120
+ export default advancedSelect;
@@ -13,28 +13,24 @@ The `createDataLayer()` function should be called in the JavaScript code of the
13
13
  ## Events Tracked
14
14
 
15
15
  1. **"Pageview" Event**
16
-
17
16
  - Description: This event is automatically pushed to the `window.dataLayer` array during the function's execution, representing the initial pageview with the current document title.
18
17
  - Event Data:
19
18
  - `event`: "Pageview"
20
19
  - `pageTitle`: The title of the current document.
21
20
 
22
21
  2. **"closeDetails" Event**
23
-
24
22
  - Description: This event is triggered when a click occurs on an element with the attribute `[open] summary`, indicating that a summary element with the `[open]` attribute is being closed.
25
23
  - Event Data:
26
24
  - `event`: "closeDetails"
27
25
  - `detailsTitle`: The text content of the `summary` element associated with the clicked element. If the `summary` element doesn't have any text content, an empty string is used.
28
26
 
29
27
  3. **"openDetails" Event**
30
-
31
28
  - Description: This event is triggered when a click occurs on a `summary` element (not associated with `[open]` attribute), indicating that a summary element is being opened.
32
29
  - Event Data:
33
30
  - `event`: "openDetails"
34
31
  - `detailsTitle`: The text content of the clicked `summary` element. If the `summary` element doesn't have any text content, an empty string is used.
35
32
 
36
33
  4. **"linkClicked" Event**
37
-
38
34
  - Description: This event is triggered when a click occurs on an `a` (anchor) element.
39
35
  - Event Data:
40
36
  - `event`: "linkClicked"
@@ -43,7 +39,6 @@ The `createDataLayer()` function should be called in the JavaScript code of the
43
39
  - `href`: The value of the `href` attribute of the `a` element. If the `a` element doesn't have an `href` attribute, an empty string is used.
44
40
 
45
41
  5. **"buttonClicked" Event**
46
-
47
42
  - Description: This event is triggered when a click occurs on a `button` element.
48
43
  - Event Data:
49
44
  - `event`: "buttonClicked"