@iamproperty/components 7.1.0--beta7 → 7.2.1--beta1

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 (382) hide show
  1. package/assets/css/components/actionbar.component.css +1 -0
  2. package/assets/css/components/actionbar.component.css.map +1 -0
  3. package/assets/css/components/actionbar.global.css +1 -1
  4. package/assets/css/components/actionbar.global.css.map +1 -1
  5. package/assets/css/components/address-lookup.css +1 -1
  6. package/assets/css/components/address-lookup.css.map +1 -1
  7. package/assets/css/components/barchart.component.css +1 -1
  8. package/assets/css/components/barchart.component.css.map +1 -1
  9. package/assets/css/components/bento-grid.component.css +1 -0
  10. package/assets/css/components/bento-grid.component.css.map +1 -0
  11. package/assets/css/components/card.component.css +1 -1
  12. package/assets/css/components/card.component.css.map +1 -1
  13. package/assets/css/components/carousel.component.css +1 -1
  14. package/assets/css/components/carousel.component.css.map +1 -1
  15. package/assets/css/components/carousel.config.css +1 -1
  16. package/assets/css/components/carousel.config.css.map +1 -1
  17. package/assets/css/components/charts.config.css +1 -1
  18. package/assets/css/components/charts.config.css.map +1 -1
  19. package/assets/css/components/charts.css +1 -1
  20. package/assets/css/components/charts.css.map +1 -1
  21. package/assets/css/components/charts.module.css +1 -1
  22. package/assets/css/components/charts.module.css.map +1 -1
  23. package/assets/css/components/collapsible-side.css +1 -1
  24. package/assets/css/components/collapsible-side.css.map +1 -1
  25. package/assets/css/components/doughnutchart.component.css +1 -0
  26. package/assets/css/components/doughnutchart.component.css.map +1 -0
  27. package/assets/css/components/fileupload.css.map +1 -1
  28. package/assets/css/components/header.css.map +1 -1
  29. package/assets/css/components/inline-edit.preload.css +1 -1
  30. package/assets/css/components/inline-edit.preload.css.map +1 -1
  31. package/assets/css/components/marketing.css.map +1 -1
  32. package/assets/css/components/menu.component.css +1 -0
  33. package/assets/css/components/menu.component.css.map +1 -0
  34. package/assets/css/components/menu.css +1 -0
  35. package/assets/css/components/menu.css.map +1 -0
  36. package/assets/css/components/multi-step.component.css.map +1 -1
  37. package/assets/css/components/multiselect.preload.css +1 -1
  38. package/assets/css/components/multiselect.preload.css.map +1 -1
  39. package/assets/css/components/nav.component.css +1 -0
  40. package/assets/css/components/nav.component.css.map +1 -0
  41. package/assets/css/components/nav.docs.css.map +1 -1
  42. package/assets/css/components/nav.global.css.map +1 -1
  43. package/assets/css/components/nav.old.css +1 -1
  44. package/assets/css/components/nav.old.css.map +1 -1
  45. package/assets/css/components/nav.preload.css +1 -1
  46. package/assets/css/components/nav.preload.css.map +1 -1
  47. package/assets/css/components/notification.css +1 -1
  48. package/assets/css/components/notification.css.map +1 -1
  49. package/assets/css/components/pagination.css +1 -1
  50. package/assets/css/components/pagination.css.map +1 -1
  51. package/assets/css/components/property-searchbar.css.map +1 -1
  52. package/assets/css/components/slider.css +1 -1
  53. package/assets/css/components/slider.css.map +1 -1
  54. package/assets/css/components/snapshot.css.map +1 -1
  55. package/assets/css/components/stepper.css.map +1 -1
  56. package/assets/css/components/table-basic.component.css +1 -0
  57. package/assets/css/components/table-basic.component.css.map +1 -0
  58. package/assets/css/components/table-basic.global.css +1 -0
  59. package/assets/css/components/table-basic.global.css.map +1 -0
  60. package/assets/css/components/table.component.css +1 -0
  61. package/assets/css/components/table.component.css.map +1 -0
  62. package/assets/css/components/table.global.css +1 -1
  63. package/assets/css/components/table.global.css.map +1 -1
  64. package/assets/css/components/tabs.component.css +1 -0
  65. package/assets/css/components/tabs.component.css.map +1 -0
  66. package/assets/css/components/tabs.config.css +1 -0
  67. package/assets/css/components/tabs.config.css.map +1 -0
  68. package/assets/css/components/tabs.css +1 -1
  69. package/assets/css/components/tabs.css.map +1 -1
  70. package/assets/css/components/testimonial.css.map +1 -1
  71. package/assets/css/components/timeline.css.map +1 -1
  72. package/assets/css/core.min.css +1 -1
  73. package/assets/css/core.min.css.map +1 -1
  74. package/assets/css/mobile-core.min.css +1 -0
  75. package/assets/css/mobile-core.min.css.map +1 -0
  76. package/assets/css/mobile.min.css +1 -0
  77. package/assets/css/mobile.min.css.map +1 -0
  78. package/assets/css/style.min.css +1 -1
  79. package/assets/css/style.min.css.map +1 -1
  80. package/assets/js/components/_global.js +0 -1
  81. package/assets/js/components/accordion/accordion.component.min.js +1 -1
  82. package/assets/js/components/accordion/accordion.component.min.js.map +1 -1
  83. package/assets/js/components/actionbar/actionbar.component.js +86 -8
  84. package/assets/js/components/actionbar/actionbar.component.min.js +19 -6
  85. package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
  86. package/assets/js/components/address-lookup/address-lookup.component.js +17 -18
  87. package/assets/js/components/address-lookup/address-lookup.component.min.js +5 -5
  88. package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -1
  89. package/assets/js/components/applied-filters/applied-filters.component.js +0 -1
  90. package/assets/js/components/applied-filters/applied-filters.component.min.js +4 -4
  91. package/assets/js/components/applied-filters/applied-filters.component.min.js.map +1 -1
  92. package/assets/js/components/barchart/barchart.component.js +2 -3
  93. package/assets/js/components/barchart/barchart.component.min.js +8 -4
  94. package/assets/js/components/barchart/barchart.component.min.js.map +1 -1
  95. package/assets/js/components/bento-grid/bento-grid.component.js +50 -0
  96. package/assets/js/components/bento-grid/bento-grid.component.min.js +15 -0
  97. package/assets/js/components/bento-grid/bento-grid.component.min.js.map +1 -0
  98. package/assets/js/components/card/card.component.js +10 -13
  99. package/assets/js/components/card/card.component.min.js +7 -7
  100. package/assets/js/components/card/card.component.min.js.map +1 -1
  101. package/assets/js/components/carousel/carousel.component.js +4 -5
  102. package/assets/js/components/carousel/carousel.component.min.js +4 -4
  103. package/assets/js/components/carousel/carousel.component.min.js.map +1 -1
  104. package/assets/js/components/chart/chart.component.js +1 -5
  105. package/assets/js/components/collapsible-side/collapsible-side.component.js +4 -5
  106. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +4 -4
  107. package/assets/js/components/collapsible-side/collapsible-side.component.min.js.map +1 -1
  108. package/assets/js/components/doughnutchart/doughnutchart.component.js +70 -0
  109. package/assets/js/components/doughnutchart/doughnutchart.component.min.js +25 -0
  110. package/assets/js/components/doughnutchart/doughnutchart.component.min.js.map +1 -0
  111. package/assets/js/components/fileupload/fileupload.component.js +2 -3
  112. package/assets/js/components/fileupload/fileupload.component.min.js +6 -6
  113. package/assets/js/components/fileupload/fileupload.component.min.js.map +1 -1
  114. package/assets/js/components/filter-card/filter-card.component.js +3 -4
  115. package/assets/js/components/filter-card/filter-card.component.min.js +4 -4
  116. package/assets/js/components/filter-card/filter-card.component.min.js.map +1 -1
  117. package/assets/js/components/filterlist/filterlist.component.js +0 -1
  118. package/assets/js/components/filterlist/filterlist.component.min.js +3 -3
  119. package/assets/js/components/filterlist/filterlist.component.min.js.map +1 -1
  120. package/assets/js/components/header/header.component.js +0 -1
  121. package/assets/js/components/header/header.component.min.js +1 -1
  122. package/assets/js/components/header/header.component.min.js.map +1 -1
  123. package/assets/js/components/inline-edit/inline-edit.component.js +7 -8
  124. package/assets/js/components/inline-edit/inline-edit.component.min.js +4 -4
  125. package/assets/js/components/inline-edit/inline-edit.component.min.js.map +1 -1
  126. package/assets/js/components/marketing/marketing.component.js +0 -1
  127. package/assets/js/components/marketing/marketing.component.min.js +1 -1
  128. package/assets/js/components/marketing/marketing.component.min.js.map +1 -1
  129. package/assets/js/components/menu/menu.component.js +200 -0
  130. package/assets/js/components/menu/menu.component.min.js +77 -0
  131. package/assets/js/components/menu/menu.component.min.js.map +1 -0
  132. package/assets/js/components/multi-step/multi-step.component.js +10 -10
  133. package/assets/js/components/multi-step/multi-step.component.min.js +13 -0
  134. package/assets/js/components/multi-step/multi-step.component.min.js.map +1 -0
  135. package/assets/js/components/multiselect/multiselect.component.js +10 -10
  136. package/assets/js/components/multiselect/multiselect.component.min.js +3 -3
  137. package/assets/js/components/multiselect/multiselect.component.min.js.map +1 -1
  138. package/assets/js/components/nav/nav.component.js +7 -7
  139. package/assets/js/components/nav/nav.component.min.js +7 -7
  140. package/assets/js/components/nav/nav.component.min.js.map +1 -1
  141. package/assets/js/components/notification/notification.component.js +3 -3
  142. package/assets/js/components/notification/notification.component.min.js +4 -4
  143. package/assets/js/components/notification/notification.component.min.js.map +1 -1
  144. package/assets/js/components/pagination/pagination.component.js +14 -8
  145. package/assets/js/components/pagination/pagination.component.min.js +5 -5
  146. package/assets/js/components/pagination/pagination.component.min.js.map +1 -1
  147. package/assets/js/components/record-card/record-card.component.js +6 -8
  148. package/assets/js/components/record-card/record-card.component.min.js +4 -4
  149. package/assets/js/components/record-card/record-card.component.min.js.map +1 -1
  150. package/assets/js/components/search/search.component.js +9 -6
  151. package/assets/js/components/search/search.component.min.js +8 -5
  152. package/assets/js/components/search/search.component.min.js.map +1 -1
  153. package/assets/js/components/slider/slider.component.js +8 -8
  154. package/assets/js/components/slider/slider.component.min.js +5 -5
  155. package/assets/js/components/slider/slider.component.min.js.map +1 -1
  156. package/assets/js/components/table/table.component.js +36 -200
  157. package/assets/js/components/table/table.component.min.js +13 -23
  158. package/assets/js/components/table/table.component.min.js.map +1 -1
  159. package/assets/js/components/table-ajax/table-ajax.component.js +46 -0
  160. package/assets/js/components/table-ajax/table-ajax.component.min.js +22 -0
  161. package/assets/js/components/table-ajax/table-ajax.component.min.js.map +1 -0
  162. package/assets/js/components/table-basic/table-basic.component.js +46 -0
  163. package/assets/js/components/table-basic/table-basic.component.min.js +22 -0
  164. package/assets/js/components/table-basic/table-basic.component.min.js.map +1 -0
  165. package/assets/js/components/table-no-submit/table-no-submit.component.js +77 -0
  166. package/assets/js/components/table-no-submit/table-no-submit.component.min.js +22 -0
  167. package/assets/js/components/table-no-submit/table-no-submit.component.min.js.map +1 -0
  168. package/assets/js/components/table-submit/table-submit.component.js +55 -0
  169. package/assets/js/components/table-submit/table-submit.component.min.js +22 -0
  170. package/assets/js/components/table-submit/table-submit.component.min.js.map +1 -0
  171. package/assets/js/components/tabs/tabs.component.js +3 -2
  172. package/assets/js/components/tabs/tabs.component.min.js +6 -4
  173. package/assets/js/components/tabs/tabs.component.min.js.map +1 -1
  174. package/assets/js/components/video-card/video-card.component.js +4 -3
  175. package/assets/js/components/video-card/video-card.component.min.js +3 -3
  176. package/assets/js/components/video-card/video-card.component.min.js.map +1 -1
  177. package/assets/js/modules/applied-filters.js +8 -9
  178. package/assets/js/modules/carousel.js +9 -10
  179. package/assets/js/modules/chart.js +5 -3
  180. package/assets/js/modules/chart.module.js +108 -1
  181. package/assets/js/modules/dialogs.js +6 -7
  182. package/assets/js/modules/drawer.js +1 -2
  183. package/assets/js/modules/dynamicEvents.js +7 -8
  184. package/assets/js/modules/fileupload.js +7 -7
  185. package/assets/js/modules/filterlist.js +3 -4
  186. package/assets/js/modules/form.js +12 -13
  187. package/assets/js/modules/helpers.js +7 -5
  188. package/assets/js/modules/inputs.js +6 -9
  189. package/assets/js/modules/nav.js +3 -4
  190. package/assets/js/modules/notification.js +2 -3
  191. package/assets/js/modules/orderablelist.js +0 -1
  192. package/assets/js/modules/table.js +604 -317
  193. package/assets/js/modules/tabs.js +46 -19
  194. package/assets/js/scripts.bundle.js +3 -3
  195. package/assets/js/scripts.bundle.js.map +1 -1
  196. package/assets/js/scripts.bundle.min.js +2 -2
  197. package/assets/js/scripts.bundle.min.js.map +1 -1
  198. package/assets/js/scripts.js +71 -6
  199. package/assets/js/tests/card.spec.js +14 -0
  200. package/assets/js/tests/carousel.spec.js +60 -0
  201. package/assets/js/tests/chart.spec.js +7 -5
  202. package/assets/js/tests/fileupload.spec.js +22 -0
  203. package/assets/js/tests/multistep.spec.js +68 -0
  204. package/assets/js/tests/table.spec.js +0 -31
  205. package/assets/sass/_bs_grid.scss +4 -1
  206. package/assets/sass/_components.scss +326 -100
  207. package/assets/sass/_corefiles.scss +42 -18
  208. package/assets/sass/_elements.scss +98 -18
  209. package/assets/sass/_example.scss +61 -0
  210. package/assets/sass/_func.scss +5 -13
  211. package/assets/sass/_functions/bs_utilities.scss +43 -39
  212. package/assets/sass/_functions/functions.scss +66 -52
  213. package/assets/sass/_functions/mixins.scss +84 -100
  214. package/assets/sass/_functions/utility-mixins.scss +56 -44
  215. package/assets/sass/_functions/variables.scss +90 -1659
  216. package/assets/sass/_functions/variables_old.scss +1701 -0
  217. package/assets/sass/_grid.scss +19 -5
  218. package/assets/sass/_tests/func.spec.scss +1 -37
  219. package/assets/sass/_tests/mixins.spec.scss +1 -77
  220. package/assets/sass/_tests/typography.spec.scss +1 -1
  221. package/assets/sass/_utilities.scss +15 -5
  222. package/assets/sass/_utility-mixins.scss +6 -1
  223. package/assets/sass/components/{actionbar.scss → actionbar.component.scss} +83 -16
  224. package/assets/sass/components/actionbar.global.scss +12 -68
  225. package/assets/sass/components/address-lookup.scss +6 -0
  226. package/assets/sass/components/barchart.component.scss +7 -20
  227. package/assets/sass/components/bento-grid.component.scss +91 -0
  228. package/assets/sass/components/carousel.config.scss +64 -58
  229. package/assets/sass/components/charts.config.scss +73 -67
  230. package/assets/sass/components/charts.module.scss +128 -97
  231. package/assets/sass/components/charts.scss +43 -42
  232. package/assets/sass/components/collapsible-side.scss +29 -27
  233. package/assets/sass/components/doughnutchart.component.scss +205 -0
  234. package/assets/sass/components/fileupload.scss +4 -3
  235. package/assets/sass/components/header.scss +5 -5
  236. package/assets/sass/components/inline-edit.preload.scss +108 -102
  237. package/assets/sass/components/menu.component.scss +101 -0
  238. package/assets/sass/components/menu.scss +21 -0
  239. package/assets/sass/components/multi-step.component.scss +5 -3
  240. package/assets/sass/components/multiselect.preload.scss +36 -30
  241. package/assets/sass/components/{nav.scss → nav.component.scss} +41 -21
  242. package/assets/sass/components/nav.docs.scss +1 -1
  243. package/assets/sass/components/nav.global.scss +13 -11
  244. package/assets/sass/components/nav.old.scss +21 -24
  245. package/assets/sass/components/nav.preload.scss +40 -34
  246. package/assets/sass/components/notification.scss +9 -5
  247. package/assets/sass/components/pagination.scss +7 -0
  248. package/assets/sass/components/property-searchbar.scss +7 -7
  249. package/assets/sass/components/slider.scss +2 -0
  250. package/assets/sass/components/snapshot.scss +2 -2
  251. package/assets/sass/components/stepper.scss +7 -7
  252. package/assets/sass/components/{table.scss → table-basic.component.scss} +25 -68
  253. package/assets/sass/components/table-basic.global.scss +355 -0
  254. package/assets/sass/components/table.component.scss +40 -0
  255. package/assets/sass/components/table.global.scss +215 -418
  256. package/assets/sass/components/tabs.component.scss +5 -0
  257. package/assets/sass/components/tabs.config.scss +27 -0
  258. package/assets/sass/components/tabs.scss +40 -4
  259. package/assets/sass/components/testimonial.scss +7 -7
  260. package/assets/sass/components/timeline.scss +1 -1
  261. package/assets/sass/core.scss +13 -4
  262. package/assets/sass/elements/admin-panel.scss +199 -185
  263. package/assets/sass/elements/badge-tag.scss +87 -81
  264. package/assets/sass/elements/brand.scss +67 -61
  265. package/assets/sass/elements/buttons--action.scss +55 -0
  266. package/assets/sass/elements/buttons--compact.scss +135 -0
  267. package/assets/sass/elements/buttons--global.scss +323 -0
  268. package/assets/sass/elements/buttons--secondary.scss +24 -0
  269. package/assets/sass/elements/buttons--tertiary.scss +57 -0
  270. package/assets/sass/elements/buttons.scss +29 -503
  271. package/assets/sass/elements/container.scss +157 -151
  272. package/assets/sass/elements/details.scss +147 -138
  273. package/assets/sass/elements/dialog.scss +36 -30
  274. package/assets/sass/elements/forms.scss +1061 -1047
  275. package/assets/sass/elements/icons.scss +23 -17
  276. package/assets/sass/elements/links.scss +131 -116
  277. package/assets/sass/elements/lists.scss +270 -264
  278. package/assets/sass/elements/media.scss +19 -13
  279. package/assets/sass/elements/modal.scss +336 -330
  280. package/assets/sass/elements/popover.scss +163 -152
  281. package/assets/sass/elements/progress.scss +173 -162
  282. package/assets/sass/elements/table.element.scss +116 -108
  283. package/assets/sass/elements/tooltips.scss +87 -80
  284. package/assets/sass/elements/type.scss +172 -160
  285. package/assets/sass/email.scss +0 -1
  286. package/assets/sass/error.scss +15 -13
  287. package/assets/sass/foundations/reboot.scss +176 -170
  288. package/assets/sass/foundations/root.scss +136 -125
  289. package/assets/sass/helpers/max-height.scss +2 -2
  290. package/assets/sass/main.scss +14 -6
  291. package/assets/sass/mobile-core.scss +14 -0
  292. package/assets/sass/mobile.scss +16 -0
  293. package/assets/sass/templates/auth.scss +88 -83
  294. package/assets/sass/templates/form.scss +68 -59
  295. package/assets/ts/components/_global.ts +2 -3
  296. package/assets/ts/components/actionbar/actionbar.component.ts +94 -2
  297. package/assets/ts/components/address-lookup/address-lookup.component.ts +21 -22
  298. package/assets/ts/components/applied-filters/applied-filters.component.ts +1 -2
  299. package/assets/ts/components/barchart/barchart.component.ts +3 -5
  300. package/assets/ts/components/bento-grid/README.md +31 -0
  301. package/assets/ts/components/bento-grid/bento-grid.component.ts +67 -0
  302. package/assets/ts/components/card/card.component.ts +13 -16
  303. package/assets/ts/components/carousel/carousel.component.ts +5 -7
  304. package/assets/ts/components/chart/chart.component.ts +4 -9
  305. package/assets/ts/components/collapsible-side/collapsible-side.component.ts +5 -6
  306. package/assets/ts/components/doughnutchart/doughnutchart.component.ts +85 -0
  307. package/assets/ts/components/fileupload/fileupload.component.ts +5 -6
  308. package/assets/ts/components/filter-card/filter-card.component.ts +4 -5
  309. package/assets/ts/components/filterlist/filterlist.component.ts +1 -2
  310. package/assets/ts/components/header/header.component.ts +1 -3
  311. package/assets/ts/components/inline-edit/inline-edit.component.ts +8 -11
  312. package/assets/ts/components/marketing/marketing.component.ts +1 -3
  313. package/assets/ts/components/menu/menu.component.ts +222 -0
  314. package/assets/ts/components/multi-step/multi-step.component.ts +19 -23
  315. package/assets/ts/components/multiselect/multiselect.component.ts +13 -14
  316. package/assets/ts/components/nav/nav.component.ts +8 -9
  317. package/assets/ts/components/notification/notification.component.ts +3 -3
  318. package/assets/ts/components/pagination/pagination.component.ts +24 -12
  319. package/assets/ts/components/record-card/record-card.component.ts +9 -11
  320. package/assets/ts/components/search/search.component.ts +12 -9
  321. package/assets/ts/components/slider/slider.component.ts +9 -10
  322. package/assets/ts/components/table/table.component.ts +50 -247
  323. package/assets/ts/components/table-ajax/table-ajax.component.ts +64 -0
  324. package/assets/ts/components/table-basic/README.md +40 -0
  325. package/assets/ts/components/table-basic/table-basic.component.ts +56 -0
  326. package/assets/ts/components/table-no-submit/table-no-submit.component.ts +134 -0
  327. package/assets/ts/components/table-submit/table-submit.component.ts +64 -0
  328. package/assets/ts/components/tabs/tabs.component.ts +4 -3
  329. package/assets/ts/components/video-card/video-card.component.ts +13 -12
  330. package/assets/ts/modules/applied-filters.ts +10 -11
  331. package/assets/ts/modules/card.module.ts +1 -1
  332. package/assets/ts/modules/carousel.ts +13 -15
  333. package/assets/ts/modules/chart.module.ts +152 -19
  334. package/assets/ts/modules/chart.ts +26 -24
  335. package/assets/ts/modules/dialogs.ts +10 -13
  336. package/assets/ts/modules/drawer.ts +1 -2
  337. package/assets/ts/modules/dynamicEvents.ts +12 -14
  338. package/assets/ts/modules/fileupload.ts +10 -10
  339. package/assets/ts/modules/filterlist.ts +6 -7
  340. package/assets/ts/modules/form.ts +16 -17
  341. package/assets/ts/modules/helpers.ts +24 -21
  342. package/assets/ts/modules/inputs.ts +15 -18
  343. package/assets/ts/modules/nav.ts +4 -5
  344. package/assets/ts/modules/notification.ts +7 -8
  345. package/assets/ts/modules/orderablelist.ts +3 -4
  346. package/assets/ts/modules/pagination.ts +1 -1
  347. package/assets/ts/modules/table.ts +726 -356
  348. package/assets/ts/modules/tabs.ts +59 -20
  349. package/assets/ts/scripts.ts +72 -6
  350. package/assets/ts/tests/card.spec.ts +19 -0
  351. package/assets/ts/tests/carousel.spec.ts +66 -0
  352. package/assets/ts/tests/chart.spec.ts +9 -6
  353. package/assets/ts/tests/fileupload.spec.ts +30 -0
  354. package/assets/ts/tests/multistep.spec.ts +78 -0
  355. package/assets/ts/tests/table.spec.ts +0 -38
  356. package/dist/components.es.js +1260 -1063
  357. package/dist/components.umd.js +468 -198
  358. package/package.json +44 -49
  359. package/src/components/BentoGrid/BentoGrid.vue +20 -0
  360. package/src/components/DoughnutChart/DoughnutChart.vue +23 -0
  361. package/src/components/FileUpload/FileUpload.vue +4 -1
  362. package/src/components/Menu/Menu.vue +22 -0
  363. package/src/components/Table/TableAjax.vue +34 -0
  364. package/src/components/Table/TableBasic.vue +34 -0
  365. package/src/components/Table/TableNoSubmit.vue +34 -0
  366. package/src/components/Table/TableSubmit.vue +34 -0
  367. package/src/components/Tabs/Tabs.vue +0 -4
  368. package/src/index.js +25 -19
  369. package/assets/css/components/actionbar.css +0 -1
  370. package/assets/css/components/actionbar.css.map +0 -1
  371. package/assets/css/components/nav.css +0 -1
  372. package/assets/css/components/nav.css.map +0 -1
  373. package/assets/css/components/table.css +0 -1
  374. package/assets/css/components/table.css.map +0 -1
  375. package/assets/js/components.bundle.js +0 -5
  376. package/assets/js/components.bundle.js.map +0 -1
  377. package/assets/js/components.js +0 -57
  378. package/assets/js/modules/file-upload.js +0 -32
  379. package/assets/ts/components.ts +0 -62
  380. package/assets/ts/modules/file-upload.ts +0 -52
  381. package/dist/style.css +0 -1
  382. package/src/components/Table/Table.spec.js +0 -47
@@ -1,4 +1,3 @@
1
- // @ts-nocheck
2
1
  import Cookies from 'js-cookie';
3
2
  import { safeID, resolvePath, isTraversable } from '../../modules/helpers';
4
3
 
@@ -33,6 +32,9 @@ class iamSearch extends HTMLElement {
33
32
  }
34
33
  .optional-text {
35
34
  display: none;
35
+ }
36
+ .js-hide {
37
+ display: none !important;
36
38
  }
37
39
  </style>
38
40
  <link rel="stylesheet" href="https://kit.fontawesome.com/26fdbf0179.css" crossorigin="anonymous" />
@@ -41,7 +43,8 @@ class iamSearch extends HTMLElement {
41
43
  this.shadowRoot.appendChild(template.content.cloneNode(true));
42
44
  }
43
45
 
44
- async connectedCallback() {
46
+ async connectedCallback(): void {
47
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
45
48
  const searchWrapper = this;
46
49
  const inputField = this.querySelector('input');
47
50
  const valueSchema = this.hasAttribute('data-value-schema') ? this.getAttribute('data-value-schema') : 'value';
@@ -49,6 +52,7 @@ class iamSearch extends HTMLElement {
49
52
  const loopSchema = this.hasAttribute('data-schema') ? this.getAttribute('data-schema') : '';
50
53
  let datalist = this.querySelector('datalist');
51
54
  const searched = [];
55
+ let ajaxURL = this.getAttribute('data-url');
52
56
 
53
57
  // Clone original input field, re-name and use for display purposes
54
58
  const displayInputField = inputField.cloneNode();
@@ -73,7 +77,7 @@ class iamSearch extends HTMLElement {
73
77
 
74
78
  // Search the endpoint when 3 characters has been added
75
79
  if (searchWrapper.hasAttribute('data-url')) {
76
- displayInputField.addEventListener('input', (event) => {
80
+ displayInputField.addEventListener('input', () => {
77
81
  if (displayInputField.value.length == 3 && !searched.includes(displayInputField.value)) {
78
82
  search(displayInputField.value);
79
83
  searched.push(displayInputField.value);
@@ -81,7 +85,7 @@ class iamSearch extends HTMLElement {
81
85
  });
82
86
  }
83
87
 
84
- function checkMatch() {
88
+ function checkMatch(): void {
85
89
  const match = datalist.querySelector(`option[value="${displayInputField.value}"]`);
86
90
  const subMatch = datalist.querySelector(`option[value*="${displayInputField.value}" i]`);
87
91
 
@@ -97,12 +101,11 @@ class iamSearch extends HTMLElement {
97
101
  }
98
102
 
99
103
  // on change update oringinal field with the actual value and use displayed input for the nice display text
100
- displayInputField.addEventListener('input', (event) => {
104
+ displayInputField.addEventListener('input', () => {
101
105
  checkMatch();
102
106
  });
103
107
 
104
- const search = async (searchterm) => {
105
- let ajaxURL = searchWrapper.getAttribute('data-url');
108
+ const search = async (searchterm): any => {
106
109
  ajaxURL += `${encodeURI(searchterm)}`;
107
110
 
108
111
  // Setup controller vars if not already set
@@ -134,7 +137,7 @@ class iamSearch extends HTMLElement {
134
137
  const loopValues = resolvePath(response, loopSchema, '');
135
138
 
136
139
  if (isTraversable(loopValues) && typeof loopValues.forEach == 'function') {
137
- loopValues.forEach((item, index) => {
140
+ loopValues.forEach((item) => {
138
141
  const actualValue = resolvePath(item, valueSchema, '');
139
142
  const displayValue = resolvePath(item, displaySchema, '').replace('\n', ', ');
140
143
 
@@ -146,7 +149,7 @@ class iamSearch extends HTMLElement {
146
149
  } else if (typeof loopValues == 'object') {
147
150
  for (const [key, value] of Object.entries(loopValues)) {
148
151
  if (isTraversable(value) && typeof value.forEach == 'function') {
149
- value.forEach((item, index) => {
152
+ value.forEach((item) => {
150
153
  const actualValue = resolvePath(item, valueSchema, '');
151
154
  const displayValue = resolvePath(item, displaySchema, '').replace('\n', ', ');
152
155
 
@@ -1,5 +1,3 @@
1
- // @ts-nocheck
2
-
3
1
  // Data layer Web component created
4
2
  window.dataLayer = window.dataLayer || [];
5
3
  window.dataLayer.push({
@@ -38,7 +36,8 @@ class iamSlider extends HTMLElement {
38
36
  this.shadowRoot.appendChild(template.content.cloneNode(true));
39
37
  }
40
38
 
41
- connectedCallback() {
39
+ connectedCallback(): void {
40
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
42
41
  const slider = this;
43
42
  const minElement = this.shadowRoot.querySelector('.min');
44
43
  const maxElement = this.shadowRoot.querySelector('.max');
@@ -56,7 +55,7 @@ class iamSlider extends HTMLElement {
56
55
  stepperStart = 'touchstart';
57
56
  }
58
57
 
59
- const stepperFunction = function (input, eventType) {
58
+ const stepperFunction = function (input): void {
60
59
  const value = input.value;
61
60
 
62
61
  const min = slider.shadowRoot.querySelector('.is-first').getAttribute('min');
@@ -118,16 +117,16 @@ class iamSlider extends HTMLElement {
118
117
  const sliders = this.shadowRoot.querySelectorAll('input');
119
118
 
120
119
  Array.from(inputs).forEach((input, index) => {
121
- input.addEventListener('keyup', function (event) {
120
+ input.addEventListener('keyup', function () {
122
121
  sliders[index].value = input.value;
123
122
  stepperFunction(sliders[index]);
124
123
  });
125
- input.addEventListener('keydown', function (event) {
124
+ input.addEventListener('keydown', function () {
126
125
  sliders[index].value = input.value;
127
126
  stepperFunction(sliders[index]);
128
127
  });
129
128
 
130
- input.addEventListener('change', function (event) {
129
+ input.addEventListener('change', function () {
131
130
  sliders[index].value = input.value;
132
131
  stepperFunction(sliders[index]);
133
132
  });
@@ -136,7 +135,7 @@ class iamSlider extends HTMLElement {
136
135
  Array.from(sliders).forEach((input, index) => {
137
136
  stepperFunction(input, 'start');
138
137
 
139
- input.addEventListener(stepperStart, function (event) {
138
+ input.addEventListener(stepperStart, function () {
140
139
  clearInterval(stepperInterval);
141
140
  stepperInterval = setInterval(function () {
142
141
  stepperFunction(input, 'drag');
@@ -144,11 +143,11 @@ class iamSlider extends HTMLElement {
144
143
  }, 10);
145
144
  });
146
145
 
147
- input.addEventListener(stepperEvent, function (event) {
146
+ input.addEventListener(stepperEvent, function () {
148
147
  clearInterval(stepperInterval);
149
148
  });
150
149
 
151
- input.addEventListener('change', function (event) {
150
+ input.addEventListener('change', function () {
152
151
  clearInterval(stepperInterval);
153
152
  stepperFunction(input, 'click');
154
153
  inputs[index].value = input.value;
@@ -1,43 +1,43 @@
1
- // @ts-nocheck
2
- import * as tableModule from '../../modules/table';
3
- class iamTable extends HTMLElement {
1
+ import {
2
+ moveAttributesToComponents,
3
+ findForm,
4
+ setupBasicTable,
5
+ setupAdvancedTable,
6
+ paginateRows,
7
+ setupNoSubmitTable,
8
+ setupSubmitTable,
9
+ setupAjaxTable,
10
+ loadAjaxTable,
11
+ paginateTable,
12
+ } from '../../modules/table';
13
+
14
+ class iamTableBasic extends HTMLElement {
4
15
  constructor() {
5
16
  super();
6
17
  this.attachShadow({ mode: 'open' });
7
18
  const assetLocation = document.body.hasAttribute('data-assets-location')
8
19
  ? document.body.getAttribute('data-assets-location')
9
20
  : '/assets';
10
- const coreCSS = document.body.hasAttribute('data-core-css')
11
- ? document.body.getAttribute('data-core-css')
12
- : `${assetLocation}/css/core.min.css`;
13
- const loadCSS = `@import "${assetLocation}/css/components/table.css";`;
21
+
22
+ const loadCSS = `@import "${assetLocation}/css/components/table.component.css";`;
14
23
  const loadExtraCSS = `@import "${assetLocation}/css/components/table.global.css";`;
15
24
 
16
25
  const template = document.createElement('template');
17
26
  template.innerHTML = `
18
27
  <style>
19
- @import "${coreCSS}";
20
28
  ${loadCSS}
21
29
 
22
- :host(.mh-sm){
23
- max-height: none!important;
24
- }
25
- :host(.mh-md){
26
- max-height: none!important;
27
- }
28
- :host(.mh-lg){
29
- max-height: none!important;
30
- }
31
-
32
30
  ${this.hasAttribute('css') ? `@import "${this.getAttribute('css')}";` : ``}
33
31
  </style>
34
- <slot name="before"></slot>
35
- <div class="table--cta">
36
- <div class="table__wrapper">
37
- <slot></slot>
32
+ <div class="table__container">
33
+ <slot name="before"></slot>
34
+ <div class="table--cta">
35
+ <div class="table__wrapper">
36
+ <slot></slot>
37
+ </div>
38
+ </div>
39
+ <iam-pagination part="pagination" class="pagination--table" ></iam-pagination>
38
40
  </div>
39
- </div>
40
- <iam-pagination part="pagination" class="pagination--table" ${this.hasAttribute('data-page') ? `data-page="${this.getAttribute('data-page')}"` : ''} ></iam-pagination>
41
41
  `;
42
42
  this.shadowRoot.appendChild(template.content.cloneNode(true));
43
43
 
@@ -47,237 +47,40 @@ class iamTable extends HTMLElement {
47
47
  }
48
48
  }
49
49
 
50
- connectedCallback() {
51
- const params = new URLSearchParams(window.location.search);
52
-
53
- // Set default attributes
54
- if (!this.hasAttribute('data-total')) {
55
- this.setAttribute('data-total', this.querySelectorAll('table tbody tr').length);
56
- }
57
-
58
- if (!this.hasAttribute('data-page')) {
59
- this.setAttribute('data-page', params.has('page') ? params.get('page') : 1);
60
- }
61
-
62
- if (!this.hasAttribute('data-show')) {
63
- this.setAttribute('data-show', params.has('show') ? params.get('show') : 15);
64
- }
65
-
66
- if (!this.hasAttribute('data-increment')) {
67
- this.setAttribute('data-increment', this.getAttribute('data-show'));
68
- }
69
-
70
- // Update table__wrapper class
71
- let classList = this.classList.toString();
72
-
73
- classList = classList.replace('table--cta', '');
74
- classList = classList.replace('table--loading', '');
75
- //classList = classList.replace('mh-md','');
76
- this.shadowRoot.querySelector('.table__wrapper').className += ` ${classList}`;
77
-
78
- // set actionbar class if needed
79
- if (this.querySelector('.actionbar__sticky')) {
80
- this.shadowRoot.querySelector('.table__wrapper').classList.add('has-actionbar');
81
- }
82
-
83
- this.table = this.querySelector('table');
84
- this.savedTableBody = this.table.querySelector('tbody').cloneNode(true);
85
-
86
- this.pagination = this.shadowRoot.querySelector('iam-pagination');
87
- this.pagination.setAttribute('data-total', this.getAttribute('data-total'));
88
- this.pagination.setAttribute('data-page', this.getAttribute('data-page'));
89
- this.pagination.setAttribute('data-show', this.getAttribute('data-show'));
90
- this.pagination.setAttribute('data-increment', this.getAttribute('data-show'));
91
-
92
- if (this.hasAttribute('data-page-jump')) {
93
- this.pagination.setAttribute('data-page-jump', 'true');
94
- }
95
- if (this.hasAttribute('data-per-page')) {
96
- this.pagination.setAttribute('data-per-page', 'true');
97
- }
98
- if (this.hasAttribute('data-item-count')) {
99
- this.pagination.setAttribute('data-item-count', 'true');
100
- }
101
- if (this.hasAttribute('data-loading')) {
102
- this.pagination.setAttribute('data-loading', 'true');
103
- }
104
- if (this.classList.contains('table--fullwidth')) {
105
- this.pagination.setAttribute('data-minimal', 'true');
106
- }
107
-
108
- // Remove table CTA
109
- const isCTA = this.classList.contains('table--cta');
50
+ connectedCallback(): void {
51
+ const pagination = this.shadowRoot.querySelector('iam-pagination');
52
+ const table = this.querySelector('table');
110
53
 
111
- if (!isCTA) this.shadowRoot.querySelector('.table--cta').classList.remove('table--cta');
112
-
113
- // Set events on the filter table
114
- this.form = document.createElement('form');
115
- if (this.hasAttribute('data-filterby')) {
116
- this.form = document.querySelector(`#${this.getAttribute('data-filterby')}`);
117
- } else {
118
- this.table.parentNode.insertBefore(this.form, this.table.nextSibling);
119
- }
54
+ const form = findForm(this, table);
120
55
 
121
- // Set ajax class
122
- if (this.form.hasAttribute('data-ajax')) {
123
- this.table.classList.add('table--ajax');
124
- }
125
- // Create a data list if a search input is present
126
- tableModule.createSearchDataList(this.table, this.form);
56
+ const savedTableBody = table.querySelector('tbody').cloneNode(true);
127
57
 
128
- if (!this.form.querySelector('[data-pagination]')) {
129
- this.form.insertAdjacentHTML(
130
- 'beforeend',
131
- `<input name="page" type="hidden" value="${this.getAttribute('data-page')}" data-pagination="true" />`
132
- );
133
- }
134
- if (!this.form.querySelector('[data-show]')) {
135
- this.form.insertAdjacentHTML(
136
- 'beforeend',
137
- `<input name="show" type="hidden" value="${this.getAttribute('data-show')}" data-show="true" />`
138
- );
139
- }
58
+ moveAttributesToComponents(this);
140
59
 
141
- // Event listeners
142
- tableModule.addTableEventListeners(this.table);
143
- tableModule.addFilterEventListeners(this.table, this.form, this.pagination, this, this.savedTableBody);
144
- tableModule.addPaginationEventListeners(this.table, this.form, this.pagination, this);
145
- tableModule.addExportEventListeners(this.shadowRoot.querySelector('[data-export]'), this.table);
60
+ setupBasicTable(this, table, form, pagination);
61
+ setupAdvancedTable(this, table, form, pagination);
146
62
 
147
- if (this.form.getAttribute('data-ajax')) {
148
- tableModule.loadAjaxTable(this.table, this.form, this.pagination, this);
63
+ if (this.hasAttribute('data-submit')) {
64
+ setupSubmitTable(this, table, form, pagination);
65
+ paginateTable(this, table, form, pagination, () => {
66
+ form.submit();
67
+ });
68
+ } else if (this.hasAttribute('data-no-submit')) {
69
+ setupNoSubmitTable(this, table, form, pagination, savedTableBody);
70
+ paginateTable(this, table, form, pagination, () => {
71
+ paginateRows(this);
72
+ });
73
+ } else if (this.hasAttribute('data-ajax')) {
74
+ setupAjaxTable(this, table, form, pagination);
75
+ paginateTable(this, table, form, pagination, () => {
76
+ loadAjaxTable(this, table, form, pagination);
77
+ });
149
78
  } else {
150
- function uniqueID(index = 1) {
151
- const ID = Math.floor(Math.random() * Date.now() * (index + 1));
152
-
153
- return ID;
154
- }
155
-
156
- // Add in the checkboxes
157
-
158
- if (
159
- this.querySelector('iam-actionbar[data-selectall]') ||
160
- document.querySelector(`iam-actionbar[data-for='${this.getAttribute('id')}']`)
161
- ) {
162
- const actionbar = this.querySelector('iam-actionbar[data-selectall]')
163
- ? this.querySelector('iam-actionbar[data-selectall]')
164
- : document.querySelector(`iam-actionbar[data-for='${this.getAttribute('id')}']`);
165
-
166
- Array.from(this.table.querySelectorAll('thead tr')).forEach((row, index) => {
167
- row.insertAdjacentHTML('afterbegin', `<th class="th--fixed"></th>`);
168
- });
169
-
170
- Array.from(this.table.querySelectorAll('tbody tr')).forEach((row, index) => {
171
-
172
- if(!row.querySelector('.selectrow')){
173
- const rowID = `row${uniqueID(index)}`;
174
- row.insertAdjacentHTML(
175
- 'afterbegin',
176
- `<td class="td--fixed selectrow selected"><input type="checkbox" name="row" id="${rowID}" ${row.hasAttribute('data-selected') ? `checked="true"` : ''}/><label for="${rowID}"><span class="visually-hidden">Select row</span></label></td>`
177
- );
178
- }
179
- });
180
-
181
- this.table.addEventListener('change', (event) => {
182
- if (event && event.target instanceof HTMLElement && event.target.closest('.selectrow input')) {
183
- const count = this.table.querySelectorAll('.selectrow input[type="checkbox"]').length;
184
- const countChecked = this.table.querySelectorAll('.selectrow input[type="checkbox"]:checked').length;
185
-
186
- actionbar.setAttribute('data-selected', count == countChecked ? 'all' : countChecked);
187
- }
188
- });
189
-
190
- actionbar.addEventListener('selected', (event) => {
191
- if (event.detail.selected == '0') {
192
- Array.from(this.table.querySelectorAll('.selectrow input[type="checkbox"]')).forEach((input, index) => {
193
- input.checked = false;
194
- });
195
- } else if (event.detail.selected == 'all') {
196
- Array.from(this.table.querySelectorAll('.selectrow input[type="checkbox"]')).forEach((input, index) => {
197
- input.checked = true;
198
- });
199
- }
200
- });
201
- }
202
-
203
- // Make the dialog menus columns fixed
204
- let colIndex = -1;
205
- Array.from(this.table.querySelectorAll('tbody tr')).forEach((row, index) => {
206
- if (row.querySelector(':scope > td > .dialog__wrapper')) {
207
- const columnn = row.querySelector(':scope > td > .dialog__wrapper').parentNode;
208
-
209
- columnn.classList.add('td--fixed');
210
-
211
- colIndex = Array.from(columnn.parentNode.children).indexOf(columnn);
212
- }
79
+ paginateTable(this, table, form, pagination, () => {
80
+ paginateRows(this);
213
81
  });
214
-
215
- if (colIndex != -1) {
216
- this.table.querySelector(`thead tr th:nth-child(${colIndex + 1})`).classList.add('th--fixed');
217
-
218
- Array.from(this.table.querySelectorAll(`tbody tr td:nth-child(${colIndex + 1})`)).forEach((col, index) => {
219
- col.classList.add('td--fixed');
220
- });
221
- }
222
-
223
- tableModule.makeTableFunctional(this.table, this.form, this.pagination, this);
224
-
225
- if (!this.hasAttribute('data-no-submit')) tableModule.filterTable(this.table, this.form, this);
226
-
227
- tableModule.populateDataQueries(this.table, this.form);
228
- }
229
-
230
- this.shadowRoot.querySelector('.table__wrapper').addEventListener('scroll', (event) => {
231
- if (this.table.querySelector('dialog[open]')) {
232
- this.table.querySelector('dialog[open]').close();
233
- this.table.querySelector('.dialog__wrapper > button.active').classList.remove('active');
234
- }
235
- });
236
-
237
- // Push up the pagination events
238
- this.pagination.addEventListener('update-show', (event) => {
239
- const show = event.detail.show;
240
-
241
- const updateEvent = new CustomEvent('update-show', { detail: { show: show } });
242
- this.dispatchEvent(updateEvent);
243
- });
244
-
245
- this.pagination.addEventListener('update-page', (event) => {
246
- const page = event.detail.page;
247
-
248
- const updateEvent = new CustomEvent('update-page', { detail: { page: page } });
249
- this.dispatchEvent(updateEvent);
250
- });
251
- }
252
-
253
- static get observedAttributes() {
254
- return ['data-total', 'data-page', 'data-show'];
255
- }
256
-
257
- attributeChangedCallback(attrName, oldVal, newVal) {
258
- this.pagination = this.shadowRoot.querySelector('iam-pagination');
259
-
260
- switch (attrName) {
261
- case 'data-total': {
262
- if (oldVal != newVal) {
263
- this.pagination.setAttribute('data-total', newVal);
264
- }
265
- break;
266
- }
267
- case 'data-show': {
268
- if (oldVal != newVal) {
269
- this.pagination.setAttribute('data-show', newVal);
270
- }
271
- break;
272
- }
273
- case 'data-page': {
274
- if (oldVal != newVal) {
275
- this.pagination.setAttribute('data-page', newVal);
276
- }
277
- break;
278
- }
279
82
  }
280
83
  }
281
84
  }
282
85
 
283
- export default iamTable;
86
+ export default iamTableBasic;
@@ -0,0 +1,64 @@
1
+ import {
2
+ setupBasicTable,
3
+ findForm,
4
+ setupAdvancedTable,
5
+ setupAjaxTable,
6
+ paginateTable,
7
+ loadAjaxTable,
8
+ } from '../../modules/table';
9
+
10
+ class iamTableAjax extends HTMLElement {
11
+ constructor() {
12
+ super();
13
+ this.attachShadow({ mode: 'open' });
14
+ const assetLocation = document.body.hasAttribute('data-assets-location')
15
+ ? document.body.getAttribute('data-assets-location')
16
+ : '/assets';
17
+
18
+ const loadCSS = `@import "${assetLocation}/css/components/table.component.css";`;
19
+ const loadExtraCSS = `@import "${assetLocation}/css/components/table.global.css";`;
20
+
21
+ const template = document.createElement('template');
22
+ template.innerHTML = `
23
+ <style>
24
+ ${loadCSS}
25
+
26
+ ${this.hasAttribute('css') ? `@import "${this.getAttribute('css')}";` : ``}
27
+ </style>
28
+ <div class="table__container">
29
+ <slot name="before"></slot>
30
+ <div class="table--cta">
31
+ <div class="table__wrapper">
32
+ <slot></slot>
33
+ </div>
34
+ </div>
35
+ <iam-pagination part="pagination" class="pagination--table" ${this.hasAttribute('data-page') ? `data-page="${this.getAttribute('data-page')}"` : ''} ></iam-pagination>
36
+ </div>
37
+ `;
38
+ this.shadowRoot.appendChild(template.content.cloneNode(true));
39
+
40
+ // insert extra CSS
41
+ if (!document.getElementById('tableSingleExtras') && !document.getElementById('tableExtras')) {
42
+ document.head.insertAdjacentHTML('beforeend', `<style id="tableSingleExtras">${loadExtraCSS}</style>`);
43
+ }
44
+ }
45
+
46
+ connectedCallback(): void {
47
+ const pagination = this.shadowRoot.querySelector('iam-pagination');
48
+ const table = this.querySelector('table');
49
+
50
+ const form = findForm(this, table);
51
+
52
+ setupBasicTable(this, table, form, pagination);
53
+
54
+ setupAdvancedTable(this, table, form, pagination);
55
+
56
+ setupAjaxTable(this, table, form, pagination);
57
+
58
+ paginateTable(component, table, form, pagination, () => {
59
+ loadAjaxTable(component, table, form, pagination);
60
+ });
61
+ }
62
+ }
63
+
64
+ export default iamTableAjax;
@@ -0,0 +1,40 @@
1
+ **Add the below to your initialise script**
2
+
3
+ ```
4
+ import('../node_modules/@iamproperty/components/assets/js/components/table/table.component.min').then(module => { // Might need to update the path
5
+
6
+ if (!window.customElements.get(`iam-table`))
7
+ window.customElements.define(`iam-table`, module.default);
8
+
9
+ }).catch((err) => {
10
+ console.log(err.message);
11
+ });
12
+ ```
13
+
14
+ **Add the below HTML code to where you want the component to live.**
15
+
16
+ ```
17
+ <iam-table class="container">
18
+ <table>
19
+ <thead>....</thead>
20
+ <tbody>...</tbody>
21
+ </table>
22
+ </iam-tabs>
23
+ ```
24
+
25
+ **Properties**
26
+
27
+ | Option | Type | Default Value | Description |
28
+ | --------------- | ---------------- | ------------- | ----------------------------------------------------------------------------------------------- |
29
+ | data-show | int | 15 | Update how many rows can be shown per page |
30
+ | data-filterby | string (form ID) | | Give an optional form ID to connect a form to the table and make it act like a filtering system |
31
+ | data-no-scroll | flag | - | Stops the page from scrolling up to the top of the table |
32
+ | data-expandable | flag | - | Adds expandable buttons to rows with will allow for larger paragraphs to be shown correctly |
33
+
34
+ _Pagination properties can also be added to the table component so that they can be passed down to the child pagination element._
35
+
36
+ **Class modifiers**
37
+
38
+ - Adding a class of **.table--cta** to the table component will fix the last column of the table in place (While on tablet or desktop).
39
+ - Adding a class of **.table--fullwidth** to the table component will prevent it from becoming a stacked view on mobile.
40
+ - Adding a class of **.table--mh-small**,**.table--mh-medium** or **.table--mh-large** to the table component will give the table container a max height and the ability to scroll.
@@ -0,0 +1,56 @@
1
+ import { setupBasicTable, paginateRows, findForm, paginateTable } from '../../modules/table';
2
+
3
+ class iamTableBasic extends HTMLElement {
4
+ constructor() {
5
+ super();
6
+ this.attachShadow({ mode: 'open' });
7
+ const assetLocation = document.body.hasAttribute('data-assets-location')
8
+ ? document.body.getAttribute('data-assets-location')
9
+ : '/assets';
10
+
11
+ const loadCSS = `@import "${assetLocation}/css/components/table.component.css";`;
12
+ const loadExtraCSS = `@import "${assetLocation}/css/components/table-basic.global.css";`;
13
+
14
+ const template = document.createElement('template');
15
+ template.innerHTML = `
16
+ <style>
17
+ ${loadCSS}
18
+
19
+ ${this.hasAttribute('css') ? `@import "${this.getAttribute('css')}";` : ``}
20
+ </style>
21
+ <div class="table__container" part="container">
22
+ <slot name="before"></slot>
23
+ <div class="table--cta">
24
+ <div class="table__wrapper" part="wrapper">
25
+ <slot></slot>
26
+ </div>
27
+ </div>
28
+ <iam-pagination part="pagination" class="pagination--table" ${this.hasAttribute('data-page') ? `data-page="${this.getAttribute('data-page')}"` : ''} ></iam-pagination>
29
+ </div>
30
+ `;
31
+ this.shadowRoot.appendChild(template.content.cloneNode(true));
32
+
33
+ // insert extra CSS
34
+ if (
35
+ !document.getElementById('tableBasicExtras') &&
36
+ !document.getElementById('tableSingleExtras') &&
37
+ !document.getElementById('tableExtras')
38
+ ) {
39
+ document.head.insertAdjacentHTML('beforeend', `<style id="tableBasicExtras">${loadExtraCSS}</style>`);
40
+ }
41
+ }
42
+
43
+ connectedCallback(): void {
44
+ const pagination = this.shadowRoot.querySelector('iam-pagination');
45
+ const table = this.querySelector('table');
46
+ const form = findForm(this, table);
47
+
48
+ setupBasicTable(this, table, form, pagination);
49
+
50
+ paginateTable(this, table, form, pagination, () => {
51
+ paginateRows(component);
52
+ });
53
+ }
54
+ }
55
+
56
+ export default iamTableBasic;