@iamproperty/components 7.6.4--beta7 → 7.7.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 (344) hide show
  1. package/assets/css/components/actionbar.component.css +1 -1
  2. package/assets/css/components/actionbar.component.css.map +1 -1
  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.component.css +1 -1
  6. package/assets/css/components/address-lookup.component.css.map +1 -1
  7. package/assets/css/components/applied-filters.css +1 -1
  8. package/assets/css/components/applied-filters.css.map +1 -1
  9. package/assets/css/components/barchart.component.css +1 -1
  10. package/assets/css/components/barchart.component.css.map +1 -1
  11. package/assets/css/components/bento-grid.global.css +1 -1
  12. package/assets/css/components/calendar.component.css +1 -1
  13. package/assets/css/components/calendar.component.css.map +1 -1
  14. package/assets/css/components/calendar.config.css +1 -1
  15. package/assets/css/components/card.component.css +1 -1
  16. package/assets/css/components/card.component.css.map +1 -1
  17. package/assets/css/components/card.module.css +1 -1
  18. package/assets/css/components/carousel.component.css +1 -1
  19. package/assets/css/components/carousel.component.css.map +1 -1
  20. package/assets/css/components/charts.config.css +1 -1
  21. package/assets/css/components/charts.css +1 -1
  22. package/assets/css/components/charts.css.map +1 -1
  23. package/assets/css/components/charts.module.css +1 -1
  24. package/assets/css/components/charts.module.css.map +1 -1
  25. package/assets/css/components/collapsible-side.css +1 -1
  26. package/assets/css/components/collapsible-side.css.map +1 -1
  27. package/assets/css/components/config.component.css +1 -0
  28. package/assets/css/components/config.component.css.map +1 -0
  29. package/assets/css/components/content.component.css +1 -1
  30. package/assets/css/components/content.component.css.map +1 -1
  31. package/assets/css/components/doughnutchart.component.css +1 -1
  32. package/assets/css/components/doughnutchart.component.css.map +1 -1
  33. package/assets/css/components/fileupload.css +1 -1
  34. package/assets/css/components/fileupload.css.map +1 -1
  35. package/assets/css/components/filter-card.component.css +1 -1
  36. package/assets/css/components/header.css +1 -1
  37. package/assets/css/components/header.css.map +1 -1
  38. package/assets/css/components/inline-edit.css +1 -1
  39. package/assets/css/components/inline-edit.css.map +1 -1
  40. package/assets/css/components/input.component.css +1 -1
  41. package/assets/css/components/input.component.css.map +1 -1
  42. package/assets/css/components/menu.component.css +1 -1
  43. package/assets/css/components/menu.component.css.map +1 -1
  44. package/assets/css/components/milestone.css +1 -1
  45. package/assets/css/components/modal.component.css +1 -1
  46. package/assets/css/components/modal.component.css.map +1 -1
  47. package/assets/css/components/multi-step-modal.component.css +1 -1
  48. package/assets/css/components/multi-step-modal.component.css.map +1 -1
  49. package/assets/css/components/multiselect.css +1 -1
  50. package/assets/css/components/multiselect.css.map +1 -1
  51. package/assets/css/components/nav.component.css +1 -1
  52. package/assets/css/components/nav.component.css.map +1 -1
  53. package/assets/css/components/nav.global.css +1 -1
  54. package/assets/css/components/nav.global.css.map +1 -1
  55. package/assets/css/components/notification.css +1 -1
  56. package/assets/css/components/notification.css.map +1 -1
  57. package/assets/css/components/pagination.css +1 -1
  58. package/assets/css/components/pagination.css.map +1 -1
  59. package/assets/css/components/password.component.css +1 -1
  60. package/assets/css/components/password.component.css.map +1 -1
  61. package/assets/css/components/property-searchbar.css +1 -1
  62. package/assets/css/components/property-searchbar.css.map +1 -1
  63. package/assets/css/components/rank.component.css +1 -1
  64. package/assets/css/components/rank.component.css.map +1 -1
  65. package/assets/css/components/record-card.component.css +1 -1
  66. package/assets/css/components/record-card.component.css.map +1 -1
  67. package/assets/css/components/slider.css +1 -1
  68. package/assets/css/components/slider.css.map +1 -1
  69. package/assets/css/components/split-button.component.css +1 -1
  70. package/assets/css/components/split-button.component.css.map +1 -1
  71. package/assets/css/components/table-basic.component.css +1 -1
  72. package/assets/css/components/table-basic.component.css.map +1 -1
  73. package/assets/css/components/table-basic.global.css +1 -1
  74. package/assets/css/components/table-basic.global.css.map +1 -1
  75. package/assets/css/components/table.component.css +1 -1
  76. package/assets/css/components/table.component.css.map +1 -1
  77. package/assets/css/components/table.global.css +1 -1
  78. package/assets/css/components/table.global.css.map +1 -1
  79. package/assets/css/components/tabs.component.css +1 -1
  80. package/assets/css/components/tabs.component.css.map +1 -1
  81. package/assets/css/components/tag.component.css +1 -1
  82. package/assets/css/components/tag.component.css.map +1 -1
  83. package/assets/css/components/tooltip.component.css +1 -1
  84. package/assets/css/components/tooltip.component.css.map +1 -1
  85. package/assets/css/components/video-card.component.css +1 -1
  86. package/assets/css/components/video-modal.component.css +1 -1
  87. package/assets/css/components/video-modal.component.css.map +1 -1
  88. package/assets/css/core.min.css +1 -1
  89. package/assets/css/core.min.css.map +1 -1
  90. package/assets/css/style.min.css +1 -1
  91. package/assets/css/style.min.css.map +1 -1
  92. package/assets/js/components/accordion/accordion.component.min.js +1 -1
  93. package/assets/js/components/actionbar/actionbar.component.js +8 -7
  94. package/assets/js/components/actionbar/actionbar.component.min.js +7 -7
  95. package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
  96. package/assets/js/components/address-lookup/address-lookup.component.js +12 -2
  97. package/assets/js/components/address-lookup/address-lookup.component.min.js +5 -5
  98. package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -1
  99. package/assets/js/components/advanced-select/advanced-select.component.js +1 -1
  100. package/assets/js/components/advanced-select/advanced-select.component.min.js +2 -2
  101. package/assets/js/components/advanced-select/advanced-select.component.min.js.map +1 -1
  102. package/assets/js/components/applied-filters/applied-filters.component.min.js +4 -4
  103. package/assets/js/components/barchart/barchart.component.min.js +6 -6
  104. package/assets/js/components/barchart/barchart.component.min.js.map +1 -1
  105. package/assets/js/components/bento-grid/bento-grid.component.min.js +2 -2
  106. package/assets/js/components/calendar/calendar.component.min.js +2 -2
  107. package/assets/js/components/card/card.component.min.js +7 -7
  108. package/assets/js/components/carousel/carousel.component.min.js +4 -4
  109. package/assets/js/components/collapsible-side/collapsible-side.component.js +1 -1
  110. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +5 -5
  111. package/assets/js/components/collapsible-side/collapsible-side.component.min.js.map +1 -1
  112. package/assets/js/components/config/config.component.js +532 -0
  113. package/assets/js/components/config/config.component.min.js +59 -0
  114. package/assets/js/components/config/config.component.min.js.map +1 -0
  115. package/assets/js/components/content/content.component.min.js +4 -4
  116. package/assets/js/components/darkmode/darkmode.component.min.js +1 -1
  117. package/assets/js/components/doughnutchart/doughnutchart.component.min.js +7 -7
  118. package/assets/js/components/fileupload/fileupload.component.min.js +4 -4
  119. package/assets/js/components/filter-card/filter-card.component.min.js +2 -2
  120. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  121. package/assets/js/components/form/form.component.min.js +1 -1
  122. package/assets/js/components/header/header.component.js +39 -1
  123. package/assets/js/components/header/header.component.min.js +40 -4
  124. package/assets/js/components/header/header.component.min.js.map +1 -1
  125. package/assets/js/components/inline-edit/inline-edit.component.js +1 -1
  126. package/assets/js/components/inline-edit/inline-edit.component.min.js +4 -4
  127. package/assets/js/components/inline-edit/inline-edit.component.min.js.map +1 -1
  128. package/assets/js/components/input/input.component.js +1 -1
  129. package/assets/js/components/input/input.component.min.js +3 -3
  130. package/assets/js/components/input/input.component.min.js.map +1 -1
  131. package/assets/js/components/input-range/input-range.component.js +1 -1
  132. package/assets/js/components/input-range/input-range.component.min.js +2 -2
  133. package/assets/js/components/input-range/input-range.component.min.js.map +1 -1
  134. package/assets/js/components/marketing/marketing.component.js +1 -1
  135. package/assets/js/components/marketing/marketing.component.min.js +2 -2
  136. package/assets/js/components/marketing/marketing.component.min.js.map +1 -1
  137. package/assets/js/components/menu/menu.component.min.js +2 -2
  138. package/assets/js/components/milestone/milestone.component.min.js +1 -1
  139. package/assets/js/components/milestone-group/milestone-group.component.min.js +1 -1
  140. package/assets/js/components/modal/modal.component.js +1 -1
  141. package/assets/js/components/modal/modal.component.min.js +5 -5
  142. package/assets/js/components/modal/modal.component.min.js.map +1 -1
  143. package/assets/js/components/multi-step/multi-step.component.min.js +1 -1
  144. package/assets/js/components/multi-step-modal/multi-step-modal.component.js +1 -1
  145. package/assets/js/components/multi-step-modal/multi-step-modal.component.min.js +5 -5
  146. package/assets/js/components/multi-step-modal/multi-step-modal.component.min.js.map +1 -1
  147. package/assets/js/components/multiselect/multiselect.component.min.js +2 -2
  148. package/assets/js/components/nav/nav.component.js +1 -1
  149. package/assets/js/components/nav/nav.component.min.js +6 -6
  150. package/assets/js/components/nav/nav.component.min.js.map +1 -1
  151. package/assets/js/components/notification/notification.component.js +69 -30
  152. package/assets/js/components/notification/notification.component.min.js +5 -5
  153. package/assets/js/components/notification/notification.component.min.js.map +1 -1
  154. package/assets/js/components/pagination/pagination.component.js +1 -1
  155. package/assets/js/components/pagination/pagination.component.min.js +4 -4
  156. package/assets/js/components/pagination/pagination.component.min.js.map +1 -1
  157. package/assets/js/components/password/password.component.js +1 -1
  158. package/assets/js/components/password/password.component.min.js +5 -5
  159. package/assets/js/components/password/password.component.min.js.map +1 -1
  160. package/assets/js/components/popover/popover.component.min.js +1 -1
  161. package/assets/js/components/rank/rank.component.min.js +1 -1
  162. package/assets/js/components/rankings/rankings.component.min.js +1 -1
  163. package/assets/js/components/rating/rating.component.min.js +1 -1
  164. package/assets/js/components/record-card/record-card.component.min.js +2 -2
  165. package/assets/js/components/search/search.component.js +1 -1
  166. package/assets/js/components/search/search.component.min.js +2 -2
  167. package/assets/js/components/search/search.component.min.js.map +1 -1
  168. package/assets/js/components/slider/slider.component.min.js +2 -2
  169. package/assets/js/components/split-button/split-button.component.js +0 -4
  170. package/assets/js/components/split-button/split-button.component.min.js +6 -7
  171. package/assets/js/components/split-button/split-button.component.min.js.map +1 -1
  172. package/assets/js/components/std-address-lookup/std-address-lookup.component.js +41 -11
  173. package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js +9 -17
  174. package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js.map +1 -1
  175. package/assets/js/components/table/table.component.min.js +4 -4
  176. package/assets/js/components/table-ajax/table-ajax.component.min.js +7 -7
  177. package/assets/js/components/table-basic/table-basic.component.min.js +5 -5
  178. package/assets/js/components/table-no-submit/table-no-submit.component.min.js +4 -4
  179. package/assets/js/components/table-submit/table-submit.component.min.js +7 -7
  180. package/assets/js/components/tabs/tabs.component.js +1 -1
  181. package/assets/js/components/tabs/tabs.component.min.js +5 -5
  182. package/assets/js/components/tabs/tabs.component.min.js.map +1 -1
  183. package/assets/js/components/tag/tag.component.min.js +4 -4
  184. package/assets/js/components/tag/tag.component.min.js.map +1 -1
  185. package/assets/js/components/tooltip/tooltip.component.min.js +2 -2
  186. package/assets/js/components/video-card/video-card.component.min.js +2 -2
  187. package/assets/js/components/video-modal/video-modal.component.js +1 -1
  188. package/assets/js/components/video-modal/video-modal.component.min.js +4 -4
  189. package/assets/js/components/video-modal/video-modal.component.min.js.map +1 -1
  190. package/assets/js/components/word-count/word-count.component.min.js +1 -1
  191. package/assets/js/modules/helper.test.js +84 -0
  192. package/assets/js/modules/test.js +19 -0
  193. package/assets/js/scripts.bundle.js +1 -1
  194. package/assets/js/scripts.bundle.min.js +1 -1
  195. package/assets/sass/_components.scss +7 -7
  196. package/assets/sass/_corefiles.scss +8 -7
  197. package/assets/sass/_elements.scss +16 -16
  198. package/assets/sass/_functions/bs_mixins.scss +3 -3
  199. package/assets/sass/_utilities.scss +4 -3
  200. package/assets/sass/components/actionbar.component.scss +37 -28
  201. package/assets/sass/components/actionbar.global.scss +12 -4
  202. package/assets/sass/components/address-lookup.component.scss +7 -7
  203. package/assets/sass/components/applied-filters.scss +2 -2
  204. package/assets/sass/components/barchart.component.scss +6 -6
  205. package/assets/sass/components/bento-grid.component.scss +2 -2
  206. package/assets/sass/components/bento-grid.global.scss +3 -3
  207. package/assets/sass/components/calendar.component.scss +14 -14
  208. package/assets/sass/components/calendar.config.scss +4 -4
  209. package/assets/sass/components/card.component.scss +10 -10
  210. package/assets/sass/components/card.module.scss +2 -2
  211. package/assets/sass/components/carousel.component.scss +8 -8
  212. package/assets/sass/components/carousel.config.scss +2 -2
  213. package/assets/sass/components/charts.config.scss +3 -3
  214. package/assets/sass/components/charts.module.scss +4 -18
  215. package/assets/sass/components/charts.scss +3 -3
  216. package/assets/sass/components/collapsible-side.scss +16 -16
  217. package/assets/sass/components/config.component.scss +235 -0
  218. package/assets/sass/components/content.component.scss +1 -1
  219. package/assets/sass/components/darkmode.component.scss +1 -1
  220. package/assets/sass/components/doughnutchart.component.scss +11 -10
  221. package/assets/sass/components/fileupload.scss +9 -9
  222. package/assets/sass/components/filter-card.component.scss +3 -3
  223. package/assets/sass/components/header.scss +121 -23
  224. package/assets/sass/components/inline-edit.preload.scss +1 -1
  225. package/assets/sass/components/inline-edit.scss +1 -1
  226. package/assets/sass/components/input.component.scss +2 -1
  227. package/assets/sass/components/marketing.component.scss +1 -1
  228. package/assets/sass/components/menu.component.scss +10 -10
  229. package/assets/sass/components/milestone.scss +2 -2
  230. package/assets/sass/components/modal.component.scss +22 -22
  231. package/assets/sass/components/multi-step-modal.component.scss +15 -15
  232. package/assets/sass/components/multi-step-modal.global.scss +1 -1
  233. package/assets/sass/components/multi-step.component.scss +3 -3
  234. package/assets/sass/components/multiselect.scss +9 -9
  235. package/assets/sass/components/nav.component.scss +24 -24
  236. package/assets/sass/components/nav.docs.scss +1 -1
  237. package/assets/sass/components/nav.global.scss +120 -119
  238. package/assets/sass/components/nav.preload.scss +1 -1
  239. package/assets/sass/components/notification.scss +36 -19
  240. package/assets/sass/components/pagination.scss +7 -7
  241. package/assets/sass/components/password.component.scss +1 -1
  242. package/assets/sass/components/popover.component.scss +3 -3
  243. package/assets/sass/components/property-searchbar.scss +1 -1
  244. package/assets/sass/components/rank.component.scss +19 -19
  245. package/assets/sass/components/rankings.component.scss +1 -1
  246. package/assets/sass/components/rankings.global.scss +2 -2
  247. package/assets/sass/components/record-card.component.scss +15 -15
  248. package/assets/sass/components/slider.scss +4 -4
  249. package/assets/sass/components/snapshot.scss +1 -1
  250. package/assets/sass/components/split-button.component.scss +2 -2
  251. package/assets/sass/components/table-basic.component.scss +3 -3
  252. package/assets/sass/components/table-basic.global.scss +34 -14
  253. package/assets/sass/components/table.component.scss +27 -16
  254. package/assets/sass/components/table.global.scss +51 -49
  255. package/assets/sass/components/tabs.component.scss +3 -3
  256. package/assets/sass/components/tabs.config.scss +1 -1
  257. package/assets/sass/components/tag.component.scss +2 -2
  258. package/assets/sass/components/testimonial.scss +2 -2
  259. package/assets/sass/components/timeline.scss +3 -3
  260. package/assets/sass/components/tooltip.component.scss +13 -8
  261. package/assets/sass/components/video-card.component.scss +2 -2
  262. package/assets/sass/components/video-modal.component.scss +1 -1
  263. package/assets/sass/components/word-count.component.scss +1 -1
  264. package/assets/sass/core.scss +1 -1
  265. package/assets/sass/elements/{admin-panel.scss → admin-panel.css} +17 -24
  266. package/assets/sass/elements/{badge-tag.scss → badge-tag.css} +11 -19
  267. package/assets/sass/elements/button__group.css +3 -2
  268. package/assets/sass/elements/{buttons--action.scss → buttons--action.css} +11 -19
  269. package/assets/sass/elements/{buttons--compact.scss → buttons--compact.css} +8 -36
  270. package/assets/sass/elements/buttons--global.scss +12 -18
  271. package/assets/sass/elements/buttons--special.scss +1 -1
  272. package/assets/sass/elements/buttons.scss +6 -6
  273. package/assets/sass/elements/container.scss +6 -6
  274. package/assets/sass/elements/details.scss +13 -13
  275. package/assets/sass/elements/dialog.scss +7 -7
  276. package/assets/sass/elements/dropdown.scss +1 -1
  277. package/assets/sass/elements/feature.scss +114 -6
  278. package/assets/sass/elements/forms.scss +24 -25
  279. package/assets/sass/elements/icons.css +1 -1
  280. package/assets/sass/elements/links.scss +5 -5
  281. package/assets/sass/elements/lists--tick-list.scss +18 -6
  282. package/assets/sass/elements/modal.scss +24 -24
  283. package/assets/sass/elements/popover.scss +14 -14
  284. package/assets/sass/elements/prefix.scss +18 -4
  285. package/assets/sass/elements/progress.scss +14 -14
  286. package/assets/sass/elements/table.element.scss +9 -5
  287. package/assets/sass/elements/tooltips.scss +4 -4
  288. package/assets/sass/email.scss +1 -1
  289. package/assets/sass/foundations/animations.scss +2 -0
  290. package/assets/sass/foundations/colours.scss +1 -1
  291. package/assets/sass/foundations/reboot.scss +1 -1
  292. package/assets/sass/foundations/root.scss +29 -96
  293. package/assets/sass/templates/auth.scss +7 -7
  294. package/assets/sass/templates/form.scss +8 -8
  295. package/assets/sass/utilities/border.scss +6 -18
  296. package/assets/sass/utilities/font-awesome-iso-fallbacks.scss +6 -0
  297. package/assets/sass/utilities/shadow.scss +7 -0
  298. package/assets/sass/utilities/wider-colours.scss +0 -2
  299. package/assets/ts/components/actionbar/actionbar.component.ts +8 -7
  300. package/assets/ts/components/address-lookup/address-lookup.component.ts +17 -2
  301. package/assets/ts/components/advanced-select/advanced-select.component.ts +1 -1
  302. package/assets/ts/components/collapsible-side/collapsible-side.component.ts +1 -1
  303. package/assets/ts/components/config/config.component.ts +699 -0
  304. package/assets/ts/components/header/header.component.ts +40 -1
  305. package/assets/ts/components/inline-edit/inline-edit.component.ts +1 -1
  306. package/assets/ts/components/input/input.component.ts +1 -1
  307. package/assets/ts/components/input-range/input-range.component.ts +1 -1
  308. package/assets/ts/components/marketing/marketing.component.ts +1 -1
  309. package/assets/ts/components/modal/modal.component.ts +1 -1
  310. package/assets/ts/components/multi-step-modal/multi-step-modal.component.ts +1 -1
  311. package/assets/ts/components/nav/nav.component.ts +1 -1
  312. package/assets/ts/components/notification/notification.component.ts +98 -47
  313. package/assets/ts/components/pagination/pagination.component.ts +1 -1
  314. package/assets/ts/components/password/password.component.ts +1 -1
  315. package/assets/ts/components/search/search.component.ts +1 -1
  316. package/assets/ts/components/split-button/split-button.component.ts +0 -4
  317. package/assets/ts/components/std-address-lookup/std-address-lookup.component.ts +47 -12
  318. package/assets/ts/components/tabs/tabs.component.ts +1 -1
  319. package/assets/ts/components/video-modal/video-modal.component.ts +1 -1
  320. package/assets/ts/modules/helper.test.ts +143 -0
  321. package/assets/ts/modules/test.ts +22 -0
  322. package/dist/components.es.js +29 -29
  323. package/dist/components.umd.js +372 -288
  324. package/package.json +9 -21
  325. package/src/components/Config/Config.vue +23 -0
  326. package/assets/js/tests/helpers.spec.js +0 -79
  327. package/assets/js/ui-tests/card.spec.js +0 -14
  328. package/assets/js/ui-tests/carousel.spec.js +0 -60
  329. package/assets/js/ui-tests/chart.spec.js +0 -59
  330. package/assets/js/ui-tests/fileupload.spec.js +0 -22
  331. package/assets/js/ui-tests/filterlist.spec.js +0 -22
  332. package/assets/js/ui-tests/multistep.spec.js +0 -68
  333. package/assets/js/ui-tests/slider.spec.js +0 -20
  334. package/assets/js/ui-tests/table.spec.js +0 -81
  335. package/assets/ts/tests/helpers.spec.ts +0 -137
  336. package/assets/ts/ui-tests/card.spec.ts +0 -19
  337. package/assets/ts/ui-tests/carousel.spec.ts +0 -66
  338. package/assets/ts/ui-tests/chart.spec.ts +0 -71
  339. package/assets/ts/ui-tests/data-layer.spec.js +0 -68
  340. package/assets/ts/ui-tests/fileupload.spec.ts +0 -30
  341. package/assets/ts/ui-tests/filterlist.spec.ts +0 -26
  342. package/assets/ts/ui-tests/multistep.spec.ts +0 -78
  343. package/assets/ts/ui-tests/slider.spec.ts +0 -27
  344. package/assets/ts/ui-tests/table.spec.ts +0 -91
@@ -1 +1 @@
1
- {"version":3,"file":"collapsible-side.component.min.js","sources":["collapsible-side.component.js"],"sourcesContent":["// Data layer Web component created\nwindow.dataLayer = window.dataLayer || [];\nwindow.dataLayer.push({\n event: 'customElementRegistered',\n element: 'collapsible side menu',\n});\nclass iamCollapsibleSideMenu extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n const assetLocation = document.body.hasAttribute('data-assets-location')\n ? document.body.getAttribute('data-assets-location')\n : '/assets';\n const loadCSS = `@import \"${assetLocation}/css/components/collapsible-side.css\";`;\n const template = document.createElement('template');\n template.innerHTML = `\n <style class=\"styles\">\n ${loadCSS}\n </style>\n <link rel=\"stylesheet\" href=\"https://kit.fontawesome.com/26fdbf0179.css\" crossorigin=\"anonymous\">\n <div class=\"container\" part=\"container\">\n\n <div class=\"side-menu\" part=\"side-menu\">\n <button class=\"btn btn-compact fa-chevron-right btn-secondary btn-sm btn-collapse\" part=\"btn\">Open or close Collapsible menu</button>\n \n <div class=\"side-menu-content closed\" part=\"side-menu-content\">\n <slot name=\"menu\"></slot>\n </div>\n </div>\n\n <div class=\"main-content\" part=\"main-content\">\n <slot></slot>\n </div>\n\n </div>\n `;\n if (this.shadowRoot) {\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n }\n }\n connectedCallback() {\n if (!this.shadowRoot)\n return;\n const container = this.shadowRoot.querySelector('.container');\n const sideMenu = this.shadowRoot.querySelector('.side-menu');\n const sideMenuContent = this.shadowRoot.querySelector('.side-menu-content');\n const mainContent = this.shadowRoot.querySelector('.main-content');\n const button = this.shadowRoot.querySelector('.side-menu > .btn');\n if (!sideMenu || !sideMenuContent || !mainContent || !button)\n return;\n // Load external CSS if needed\n if (this.hasAttribute('data-css')) {\n const styles = this.shadowRoot.querySelector('.styles');\n if (styles) {\n styles.insertAdjacentHTML('beforeend', `@import \"${this.getAttribute('data-css')}\";`);\n }\n }\n // Set side nav title\n if (!this.hasAttribute('data-title')) {\n this.setAttribute('data-title', 'configuration');\n }\n sideMenuContent.insertAdjacentHTML('afterbegin', `<span class=\"h3\">${this.getAttribute('data-title')}</span>`);\n mainContent.insertAdjacentHTML('afterbegin', `<span class=\"h3\">${this.getAttribute('data-title')}</span>`);\n const titleElement = this.querySelector(':scope > :is(h1,h2,h3,h4,h5,h6)');\n if (titleElement) {\n titleElement.classList.add('h4', 'main-content__title');\n }\n if (this.hasAttribute('open') && window.innerWidth > 992) {\n sideMenu.classList.add('open');\n button.setAttribute('aria-expanded', 'true');\n }\n if (this.hasAttribute('inline')) {\n container.classList.add('inline');\n }\n if (this.hasAttribute('menu-right')) {\n sideMenu.classList.add('menu-right');\n }\n // Open the menu\n button.addEventListener('click', () => {\n if (!sideMenu.classList.contains('open')) {\n sideMenuContent.classList.remove('closed');\n setTimeout(function () {\n sideMenu.classList.add('open');\n button.setAttribute('aria-expanded', 'true');\n }, 100);\n }\n else {\n sideMenu.classList.remove('open');\n button.removeAttribute('aria-expanded');\n setTimeout(function () {\n sideMenuContent.classList.add('closed');\n }, 1000); // Delay until its close so the animation is broken\n // While the menu is closing dont allow the hover to re-open it until its fully closed.\n sideMenu.classList.add('pe-none');\n setTimeout(function () {\n sideMenu.classList.remove('pe-none');\n }, 1000);\n }\n });\n // Mimic hover event on desktop so that we can control when classes are set and which order\n sideMenu.addEventListener('mouseenter', () => {\n if (window.innerWidth > 992) {\n if (!sideMenu.classList.contains('open'))\n sideMenuContent.classList.remove('closed');\n sideMenu.classList.add('hover');\n }\n });\n sideMenu.addEventListener('mousemove', () => {\n if (window.innerWidth > 992) {\n if (!sideMenu.classList.contains('open'))\n sideMenuContent.classList.remove('closed');\n }\n });\n sideMenu.addEventListener('mouseleave', () => {\n if (window.innerWidth > 992) {\n sideMenu.classList.remove('hover');\n if (!sideMenu.classList.contains('open'))\n setTimeout(function () {\n sideMenuContent.classList.add('closed');\n }, 1000); // Delay until its close so the animation is broken\n }\n });\n const sideMenuParentGroups = this.querySelectorAll('.parent');\n const sideMenuParentGroupsTopLinks = this.querySelectorAll('.parent > li:first-of-type');\n sideMenuParentGroupsTopLinks === null || sideMenuParentGroupsTopLinks === void 0 ? void 0 : sideMenuParentGroupsTopLinks.forEach((parentLink) => {\n parentLink.addEventListener('click', () => {\n if (!parentLink || !parentLink.parentElement)\n return false; // make sure elements exist\n if (parentLink.parentElement.classList.contains('reveal')) {\n parentLink.parentElement.classList.remove('reveal'); // remove if clicking a revealed parent\n }\n else {\n // remove other reveals and add reveal to this one\n sideMenuParentGroups === null || sideMenuParentGroups === void 0 ? void 0 : sideMenuParentGroups.forEach((parentGroup) => {\n parentGroup.classList.remove('reveal');\n });\n parentLink.parentElement.classList.add('reveal');\n }\n });\n });\n }\n}\nexport default iamCollapsibleSideMenu;\n"],"names":["iamCollapsibleSideMenu","template","container","sideMenu","sideMenuContent","mainContent","button","styles","titleElement","sideMenuParentGroups","sideMenuParentGroupsTopLinks","parentLink","parentGroup"],"mappings":"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"}
1
+ {"version":3,"file":"collapsible-side.component.min.js","sources":["collapsible-side.component.js"],"sourcesContent":["// Data layer Web component created\nwindow.dataLayer = window.dataLayer || [];\nwindow.dataLayer.push({\n event: 'customElementRegistered',\n element: 'collapsible side menu',\n});\nclass iamCollapsibleSideMenu extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n const assetLocation = document.body.hasAttribute('data-assets-location')\n ? document.body.getAttribute('data-assets-location')\n : '/assets';\n const loadCSS = `@import \"${assetLocation}/css/components/collapsible-side.css\";`;\n const template = document.createElement('template');\n template.innerHTML = `\n <style class=\"styles\">\n ${loadCSS}\n </style>\n <link rel=\"stylesheet\" href=\"https://kit.fontawesome.com/8bd0fca975.css\" crossorigin=\"anonymous\">\n <div class=\"container\" part=\"container\">\n\n <div class=\"side-menu\" part=\"side-menu\">\n <button class=\"btn btn-compact fa-chevron-right btn-secondary btn-sm btn-collapse\" part=\"btn\">Open or close Collapsible menu</button>\n \n <div class=\"side-menu-content closed\" part=\"side-menu-content\">\n <slot name=\"menu\"></slot>\n </div>\n </div>\n\n <div class=\"main-content\" part=\"main-content\">\n <slot></slot>\n </div>\n\n </div>\n `;\n if (this.shadowRoot) {\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n }\n }\n connectedCallback() {\n if (!this.shadowRoot)\n return;\n const container = this.shadowRoot.querySelector('.container');\n const sideMenu = this.shadowRoot.querySelector('.side-menu');\n const sideMenuContent = this.shadowRoot.querySelector('.side-menu-content');\n const mainContent = this.shadowRoot.querySelector('.main-content');\n const button = this.shadowRoot.querySelector('.side-menu > .btn');\n if (!sideMenu || !sideMenuContent || !mainContent || !button)\n return;\n // Load external CSS if needed\n if (this.hasAttribute('data-css')) {\n const styles = this.shadowRoot.querySelector('.styles');\n if (styles) {\n styles.insertAdjacentHTML('beforeend', `@import \"${this.getAttribute('data-css')}\";`);\n }\n }\n // Set side nav title\n if (!this.hasAttribute('data-title')) {\n this.setAttribute('data-title', 'configuration');\n }\n sideMenuContent.insertAdjacentHTML('afterbegin', `<span class=\"h3\">${this.getAttribute('data-title')}</span>`);\n mainContent.insertAdjacentHTML('afterbegin', `<span class=\"h3\">${this.getAttribute('data-title')}</span>`);\n const titleElement = this.querySelector(':scope > :is(h1,h2,h3,h4,h5,h6)');\n if (titleElement) {\n titleElement.classList.add('h4', 'main-content__title');\n }\n if (this.hasAttribute('open') && window.innerWidth > 992) {\n sideMenu.classList.add('open');\n button.setAttribute('aria-expanded', 'true');\n }\n if (this.hasAttribute('inline')) {\n container.classList.add('inline');\n }\n if (this.hasAttribute('menu-right')) {\n sideMenu.classList.add('menu-right');\n }\n // Open the menu\n button.addEventListener('click', () => {\n if (!sideMenu.classList.contains('open')) {\n sideMenuContent.classList.remove('closed');\n setTimeout(function () {\n sideMenu.classList.add('open');\n button.setAttribute('aria-expanded', 'true');\n }, 100);\n }\n else {\n sideMenu.classList.remove('open');\n button.removeAttribute('aria-expanded');\n setTimeout(function () {\n sideMenuContent.classList.add('closed');\n }, 1000); // Delay until its close so the animation is broken\n // While the menu is closing dont allow the hover to re-open it until its fully closed.\n sideMenu.classList.add('pe-none');\n setTimeout(function () {\n sideMenu.classList.remove('pe-none');\n }, 1000);\n }\n });\n // Mimic hover event on desktop so that we can control when classes are set and which order\n sideMenu.addEventListener('mouseenter', () => {\n if (window.innerWidth > 992) {\n if (!sideMenu.classList.contains('open'))\n sideMenuContent.classList.remove('closed');\n sideMenu.classList.add('hover');\n }\n });\n sideMenu.addEventListener('mousemove', () => {\n if (window.innerWidth > 992) {\n if (!sideMenu.classList.contains('open'))\n sideMenuContent.classList.remove('closed');\n }\n });\n sideMenu.addEventListener('mouseleave', () => {\n if (window.innerWidth > 992) {\n sideMenu.classList.remove('hover');\n if (!sideMenu.classList.contains('open'))\n setTimeout(function () {\n sideMenuContent.classList.add('closed');\n }, 1000); // Delay until its close so the animation is broken\n }\n });\n const sideMenuParentGroups = this.querySelectorAll('.parent');\n const sideMenuParentGroupsTopLinks = this.querySelectorAll('.parent > li:first-of-type');\n sideMenuParentGroupsTopLinks === null || sideMenuParentGroupsTopLinks === void 0 ? void 0 : sideMenuParentGroupsTopLinks.forEach((parentLink) => {\n parentLink.addEventListener('click', () => {\n if (!parentLink || !parentLink.parentElement)\n return false; // make sure elements exist\n if (parentLink.parentElement.classList.contains('reveal')) {\n parentLink.parentElement.classList.remove('reveal'); // remove if clicking a revealed parent\n }\n else {\n // remove other reveals and add reveal to this one\n sideMenuParentGroups === null || sideMenuParentGroups === void 0 ? void 0 : sideMenuParentGroups.forEach((parentGroup) => {\n parentGroup.classList.remove('reveal');\n });\n parentLink.parentElement.classList.add('reveal');\n }\n });\n });\n }\n}\nexport default iamCollapsibleSideMenu;\n"],"names":["iamCollapsibleSideMenu","template","container","sideMenu","sideMenuContent","mainContent","button","styles","titleElement","sideMenuParentGroups","sideMenuParentGroupsTopLinks","parentLink","parentGroup"],"mappings":"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"}
@@ -0,0 +1,532 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import Cookies from '../../../../node_modules/js-cookie/dist/js.cookie.mjs';
11
+ import { trackComponentRegistered } from '../_global.js';
12
+ trackComponentRegistered('iam-config');
13
+ class iamConfig extends HTMLElement {
14
+ constructor() {
15
+ var _a, _b;
16
+ super();
17
+ this.getBucketsData = (data) => {
18
+ if (!data)
19
+ return [];
20
+ const buckets = [];
21
+ // TODO: check local storage first
22
+ data.forEach(bucket => {
23
+ var _a, _b;
24
+ if (typeof ((_a = bucket.attributes) === null || _a === void 0 ? void 0 : _a.criteria) == "object" && Array.isArray((_b = bucket.attributes) === null || _b === void 0 ? void 0 : _b.criteria)) {
25
+ buckets.push(bucket);
26
+ }
27
+ });
28
+ return buckets;
29
+ };
30
+ this.createBuckets = (buckets) => {
31
+ console.log(buckets);
32
+ const bucketsContainer = this.shadowRoot.querySelector('#buckets'); // TODO: rename
33
+ if (!buckets)
34
+ return false;
35
+ buckets.forEach((bucket) => {
36
+ this.createBucket(bucket);
37
+ });
38
+ return true;
39
+ };
40
+ this.createBucket = (bucket) => {
41
+ const bucketsContainer = this.shadowRoot.querySelector('#buckets'); // TODO: rename
42
+ const bucketElement = document.createElement('div');
43
+ bucketElement.innerHTML = this.addBucketHTML(bucket);
44
+ //bucketElement.setAttribute('data-bucket',bucket.id);
45
+ bucketElement.classList.add('bucket__wrapper');
46
+ bucketsContainer === null || bucketsContainer === void 0 ? void 0 : bucketsContainer.insertAdjacentElement('beforeend', bucketElement);
47
+ //this.addButtonEvents(bucketElement,true);
48
+ this.createEditBucketsEvents(bucketElement);
49
+ const criteriaContainer = bucketElement.querySelector('.criteria--container');
50
+ if (bucket.attributes) {
51
+ bucket.attributes.criteria.forEach((criteria) => {
52
+ var _a, _b, _c;
53
+ const criteriaForm = document.createElement('form');
54
+ criteriaForm.classList.add('criteria');
55
+ criteriaForm.innerHTML = this.addCriteriaHTML(criteria.attributes);
56
+ // TODO add to HTML
57
+ (_a = criteriaForm.querySelector('[name="attribute"]')) === null || _a === void 0 ? void 0 : _a.value = criteria.attributes.attribute;
58
+ (_b = criteriaForm.querySelector('[name="rule"]')) === null || _b === void 0 ? void 0 : _b.value = criteria.attributes.rule;
59
+ (_c = criteriaForm.querySelector('[name="match"]')) === null || _c === void 0 ? void 0 : _c.value = criteria.attributes.match;
60
+ criteriaContainer === null || criteriaContainer === void 0 ? void 0 : criteriaContainer.appendChild(criteriaForm);
61
+ // TODO add buttons
62
+ // TODO add events
63
+ });
64
+ this.createForms(bucket.attributes.items, bucket.id);
65
+ }
66
+ return bucketElement;
67
+ };
68
+ this.addCriteriaHTML = (attributes) => {
69
+ return /*HTML*/ `<label>
70
+ <span class="visually-hidden">Attribute</span>
71
+ ${this.createCriteriaDropdown(attributes.attribute)}
72
+ </label>
73
+ <label>
74
+ <span class="visually-hidden">Rule</span>
75
+ <select name="rule" class="mt-0 select--sm">
76
+ <option value="set">is not empty</option>
77
+ <option value="empty">is empty</option>
78
+ <option value="equals">equals</option>
79
+ <option value="not">is not</option>
80
+ <option value="greater">greater than</option>
81
+ <option value="less">less than</option>
82
+ </select>
83
+ </label>
84
+ <label>
85
+ <span class="visually-hidden">Match</span>
86
+ <input type="text" name="match" class="mt-0 input--sm" /> <!-- TODO Add datalist or transform into select -->
87
+ </label>
88
+ <div class="btn__group">
89
+ <button class="btn btn-compact btn-sm mt-0 btn-secondary fa-plus" type="button" data-direction="add" title="Delete">Add</button>
90
+ <button class="btn btn-compact btn-sm mt-0 btn-secondary fa-trash" type="button" data-direction="delete" title="Delete">Delete</button>
91
+ </div>`;
92
+ };
93
+ this.addBucketHTML = (bucket) => {
94
+ var _a, _b, _c;
95
+ return /*HTML*/ `<label>
96
+ <span class="visually-hidden">Name</span>
97
+ <input type="text" name="bucket" value="${(_b = (_a = bucket.attributes) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : ''}"/>
98
+ </label>
99
+ <div class="btn__group text-end"><button class="btn btn-compact btn-sm mt-0 btn-secondary fa-pen-to-square" data-expand title="Expand to see more options">Edit</button>${this.buttonHTML}</div>
100
+ <div class="criteria--container">
101
+ </div>
102
+ <div data-bucket="${(_c = bucket.id) !== null && _c !== void 0 ? _c : ''}" class="bucket">
103
+ </div>`;
104
+ };
105
+ this.createCriteriaDropdown = (attribute) => {
106
+ const form = this.querySelector('form');
107
+ const formData = new FormData(form);
108
+ const formDataObj = Object.fromEntries(formData.entries());
109
+ let optionsHtml = '';
110
+ Object.keys(formDataObj).forEach(function (key) {
111
+ optionsHtml += `<option value="${key}" ${key == attribute ? ' selected="selected"' : ''}>${key}</option>`;
112
+ });
113
+ return `<select name="attributes[criteria]" class="mt-0 select--sm">
114
+ <option value=""></option>
115
+ ${optionsHtml}
116
+ </select>`;
117
+ };
118
+ this.createEditBucketsEvents = (bucket) => {
119
+ this.addButtonEvents(bucket, true);
120
+ const expandButton = bucket === null || bucket === void 0 ? void 0 : bucket.querySelector('[data-expand]');
121
+ expandButton === null || expandButton === void 0 ? void 0 : expandButton.addEventListener('click', () => {
122
+ bucket.classList.toggle('bucket--expanded');
123
+ });
124
+ };
125
+ this.createForms = (data, bucketId = "any") => {
126
+ data.forEach(item => {
127
+ var _a;
128
+ if (typeof ((_a = item.attributes) === null || _a === void 0 ? void 0 : _a.criteria) == "undefined") {
129
+ const formElement = this.createForm(item, bucketId);
130
+ Object.keys(item.attributes).forEach(function (key) {
131
+ if (formElement.querySelector(`[name="${key}"]`)) {
132
+ const element = formElement.querySelector(`[name="${key}"]`);
133
+ if (element.matches('select[data-import]') && !element.querySelector(`option[value="${item.attributes[key]}"]`)) {
134
+ const optionElement = document.createElement('option');
135
+ optionElement.value = item.attributes[key];
136
+ optionElement.innerHTML = item.attributes[key];
137
+ element.appendChild(optionElement);
138
+ }
139
+ element.value = item.attributes[key];
140
+ }
141
+ });
142
+ }
143
+ });
144
+ };
145
+ this.checkCriteria = (attributes, bucket) => {
146
+ if (attributes[bucket])
147
+ return true;
148
+ return false;
149
+ };
150
+ this.checkBuckets = (attributes) => {
151
+ const anyContainer = this.shadowRoot.querySelector('#any'); // TODO: rename
152
+ let container = anyContainer;
153
+ if (!this.hasAttribute('data-buckets'))
154
+ return container;
155
+ let buckets = [];
156
+ let addedToBucket = false;
157
+ // If data attribute set
158
+ buckets = this.getAttribute('data-buckets').split(',');
159
+ // TODO: If importing the config from a json file
160
+ buckets.forEach((bucket) => {
161
+ const addToBucket = !addedToBucket ? this.checkCriteria(attributes, bucket) : false;
162
+ if (addToBucket) {
163
+ addedToBucket = true;
164
+ container = this.shadowRoot.querySelector(`[data-bucket="${bucket}"]`);
165
+ }
166
+ });
167
+ return container;
168
+ };
169
+ this.createForm = (item, bucketId = "any") => {
170
+ var _a;
171
+ const anyContainer = this.shadowRoot.querySelector(`#items [data-bucket="${bucketId}"]`); // TODO: rename
172
+ //const bucketsContainer = this.shadowRoot.querySelector('#buckets'); // TODO: rename
173
+ //const container = this.checkBuckets(item.attributes); TODO: re-enable
174
+ const container = anyContainer;
175
+ const formElement = (_a = this.querySelector(`form`)) === null || _a === void 0 ? void 0 : _a.cloneNode(true);
176
+ //formTemplate.setAttribute('id', item.id);
177
+ // TODO check if it matches a bucket
178
+ container === null || container === void 0 ? void 0 : container.insertAdjacentElement('beforeend', formElement);
179
+ //const formElement = container?.querySelector(`[id="${item.id}"]`);
180
+ formElement === null || formElement === void 0 ? void 0 : formElement.addEventListener('submit', (event) => {
181
+ event.preventDefault();
182
+ });
183
+ this.addButtons(formElement);
184
+ return formElement;
185
+ };
186
+ this.getCurrentIds = () => {
187
+ var _a;
188
+ const idsArr = [];
189
+ Array.from((_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelectorAll('#items form')).forEach((form) => {
190
+ idsArr.push(parseInt(form.getAttribute('id')));
191
+ });
192
+ return idsArr;
193
+ };
194
+ this.generateId = () => {
195
+ return Math.max(...this.getCurrentIds()) + 1;
196
+ };
197
+ this.addButtonEvents = (element, scrollIntoView = true) => {
198
+ const upButton = element === null || element === void 0 ? void 0 : element.querySelector('[data-direction="up"]');
199
+ const downButton = element === null || element === void 0 ? void 0 : element.querySelector('[data-direction="down"]');
200
+ const deleteButton = element === null || element === void 0 ? void 0 : element.querySelector('[data-direction="delete"]');
201
+ upButton === null || upButton === void 0 ? void 0 : upButton.addEventListener('click', () => {
202
+ if (element === null || element === void 0 ? void 0 : element.previousElementSibling) {
203
+ element === null || element === void 0 ? void 0 : element.parentNode.insertBefore(element, element.previousElementSibling);
204
+ if (scrollIntoView)
205
+ element === null || element === void 0 ? void 0 : element.scrollIntoView({ behavior: "instant", block: "center" });
206
+ }
207
+ });
208
+ downButton === null || downButton === void 0 ? void 0 : downButton.addEventListener('click', () => {
209
+ if (element.nextElementSibling) {
210
+ element === null || element === void 0 ? void 0 : element.parentNode.insertBefore(element, element.nextElementSibling.nextElementSibling);
211
+ }
212
+ else {
213
+ element === null || element === void 0 ? void 0 : element.parentNode.insertAdjacentElement('beforeend', element);
214
+ }
215
+ if (scrollIntoView)
216
+ element === null || element === void 0 ? void 0 : element.scrollIntoView({ behavior: "instant", block: "center" });
217
+ });
218
+ deleteButton === null || deleteButton === void 0 ? void 0 : deleteButton.addEventListener('click', () => {
219
+ element.remove();
220
+ });
221
+ };
222
+ this.addButtons = (form) => {
223
+ form === null || form === void 0 ? void 0 : form.insertAdjacentHTML('beforeend', `<div class="btn__group">${this.buttonHTML}</div>`);
224
+ this.addButtonEvents(form);
225
+ };
226
+ this.attachShadow({ mode: 'open' });
227
+ const assetLocation = document.body.hasAttribute('data-assets-location')
228
+ ? document.body.getAttribute('data-assets-location')
229
+ : '/assets';
230
+ const loadCSS = `@import "${assetLocation}/css/components/config.component.css";`;
231
+ const template = document.createElement('template');
232
+ template.innerHTML = /* HTML */ `
233
+ <style>
234
+ ${loadCSS}
235
+ </style>
236
+ <div id="wrapper">
237
+ <div id="items">
238
+ <div id="buckets"></div>
239
+ <div id="any" data-bucket="any"></div>
240
+ </div>
241
+ <div class="admin-panel">
242
+ <button class="btn btn-action fa-plus" command="add-bucket">Add bucket</button>
243
+ <button class="btn btn-action fa-plus" command="add-item">Add ${(_a = this.getAttribute('data-item-name')) !== null && _a !== void 0 ? _a : 'item'}</button> <!-- Changes to open a model if we want to validate the add form first -->
244
+
245
+ </div>
246
+ <button id="save" class="btn btn-sm btn-primary fa-floppy-disk" >Save items</button>
247
+ </div>
248
+ `;
249
+ (_b = this.shadowRoot) === null || _b === void 0 ? void 0 : _b.appendChild(template.content.cloneNode(true));
250
+ }
251
+ importData(ajaxURL) {
252
+ return __awaiter(this, void 0, void 0, function* () {
253
+ // Setup controller vars if not already set
254
+ if (!window.controller)
255
+ window.controller = [];
256
+ // Abort if controller already present for this url
257
+ if (window.controller[ajaxURL])
258
+ window.controller[ajaxURL].abort();
259
+ // Create a new controller so it can be aborted if new fetch made
260
+ window.controller[ajaxURL] = new AbortController();
261
+ const { signal } = window.controller[ajaxURL];
262
+ try {
263
+ return yield fetch(ajaxURL, {
264
+ signal: signal,
265
+ method: 'get',
266
+ credentials: 'same-origin',
267
+ headers: new Headers({
268
+ 'Content-Type': 'application/json',
269
+ Accept: 'application/json',
270
+ 'X-Requested-With': 'XMLHttpRequest',
271
+ 'X-XSRF-TOKEN': Cookies.get('XSRF-TOKEN'),
272
+ }),
273
+ })
274
+ .then((response) => response.json())
275
+ .then((response) => {
276
+ const returnData = response['data'] ? response['data'] : response;
277
+ return returnData;
278
+ });
279
+ }
280
+ catch (error) {
281
+ //console.log(error);
282
+ return 'There has been a problem. Please try again in a few moments.';
283
+ }
284
+ });
285
+ }
286
+ importAttributeData(comonponent) {
287
+ return __awaiter(this, void 0, void 0, function* () {
288
+ });
289
+ }
290
+ connectedCallback() {
291
+ return __awaiter(this, void 0, void 0, function* () {
292
+ var _a, _b, _c, _d, _e;
293
+ this.buttonHTML = /* HTML */ `
294
+ <button class="btn btn-compact btn-sm mt-0 btn-secondary fa-trash" type="button" data-direction="delete" title="Delete">Delete</button>
295
+ <button class="btn btn-compact btn-sm mt-0 btn-secondary fa-chevron-down" type="button" data-direction="down" title="Move down">Down</button>
296
+ <button class="btn btn-compact btn-sm mt-0 btn-secondary fa-chevron-up" type="button" data-direction="up" title="Move up">Up</button>
297
+ `;
298
+ const dataImportUrl = this.getAttribute('data-import');
299
+ const getBucketsData = this.getBucketsData;
300
+ const createBuckets = this.createBuckets;
301
+ const createForms = this.createForms;
302
+ const createForm = this.createForm;
303
+ const itemsContainer = this.shadowRoot.querySelector('#items'); // TODO: rename
304
+ const anyContainer = this.shadowRoot.querySelector('#any'); // TODO: rename
305
+ const bucketsContainer = this.shadowRoot.querySelector('#buckets'); // TODO: rename
306
+ const editBuckets = this.shadowRoot.querySelector('#editBuckets'); // TODO: rename
307
+ const saveButton = this.shadowRoot.querySelector('#save');
308
+ const addButton = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('[data-add-item]');
309
+ const addForm = (_b = this.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#addForm');
310
+ const editBucketsDialog = (_c = this.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('#editBucketsDialog');
311
+ const editBucketsForm = (_d = this.shadowRoot) === null || _d === void 0 ? void 0 : _d.querySelector('#editBucketsForm');
312
+ const editBucketsFormSubmit = (_e = this.shadowRoot) === null || _e === void 0 ? void 0 : _e.querySelector('#editBucketsForm .btn-primary');
313
+ const addBucketButton = this === null || this === void 0 ? void 0 : this.shadowRoot.querySelector('[command="add-bucket"]');
314
+ const addItemButton = this === null || this === void 0 ? void 0 : this.shadowRoot.querySelector('[command="add-item"]');
315
+ const templateForm = this === null || this === void 0 ? void 0 : this.querySelector('form');
316
+ let editBucketsOriginalState = '';
317
+ let buckets = [];
318
+ // Prevent the template form from submitting anything
319
+ templateForm === null || templateForm === void 0 ? void 0 : templateForm.addEventListener('submit', (event) => {
320
+ event.preventDefault();
321
+ });
322
+ // TODO: add this to an on change event on the select
323
+ Array.from(this.querySelectorAll('select[data-import]')).forEach((select) => __awaiter(this, void 0, void 0, function* () {
324
+ const ajaxURL = select.getAttribute('data-import');
325
+ this.importData(ajaxURL).then((data) => {
326
+ if (typeof data == 'string')
327
+ return data;
328
+ data.forEach(item => {
329
+ const optionElement = document.createElement('option');
330
+ optionElement.value = item.id;
331
+ optionElement.innerHTML = item.attributes.name;
332
+ select.appendChild(optionElement);
333
+ });
334
+ return true;
335
+ });
336
+ }));
337
+ // #region import data
338
+ // TODO load from web storage if its newer
339
+ const storedData = localStorage.getItem(`config-${this.getAttribute('data-name')}`);
340
+ //const buckets = this.getBucketsData(); // TODO: load from local storage
341
+ if (storedData) {
342
+ //createForms(JSON.parse(storedData), buckets);
343
+ }
344
+ else if (dataImportUrl) {
345
+ const dataImport = yield this.importData(dataImportUrl).then((data) => {
346
+ if (typeof data == 'string')
347
+ return data;
348
+ const buckets = getBucketsData(data);
349
+ if (buckets) {
350
+ createBuckets(buckets);
351
+ }
352
+ createForms(data); // any bucket
353
+ return true;
354
+ });
355
+ }
356
+ // #endregion
357
+ // #region Add buckets to edit modal
358
+ /*
359
+ editBucketsForm?.addEventListener('submit', (event) => {
360
+
361
+ event.stopPropagation();
362
+ event.preventDefault();
363
+
364
+ if(event.submitter == editBucketsFormSubmit){
365
+
366
+ // Clear what is there already
367
+ //anyContainer?.innerHTML = '';
368
+
369
+ Array.from(itemsContainer?.querySelectorAll('form')).forEach((formElement:HTMLElement, index):void => {
370
+
371
+ anyContainer?.insertAdjacentElement('beforeend',formElement);
372
+ });
373
+
374
+ // Empty the buckets
375
+ bucketsContainer?.innerHTML = '';
376
+
377
+ // Load the new bucket data then recreate them
378
+ const buckets = [];
379
+ Array.from(editBuckets?.querySelectorAll('[data-bucket]')).forEach((editBucketElement:HTMLElement, index):void => {
380
+
381
+ bucketsContainer?.insertAdjacentHTML('beforeend',`<div class="bucket" data-bucket="${editBucketElement.getAttribute('data-bucket')}"></div>`);
382
+
383
+ const bucket = {}
384
+
385
+ bucket.id = editBucketElement.getAttribute('data-bucket');
386
+ bucket.attributes = {};
387
+
388
+ bucket.attributes.name = editBucketElement.querySelector('[name="bucket"]')?.value;
389
+
390
+ //const formData = new FormData(editBucketElement);
391
+ //const formDataObj = Object.fromEntries(formData.entries());
392
+ // TODO cycle through the criteria forms
393
+
394
+ buckets.push(bucket);
395
+ });
396
+
397
+
398
+ console.log(buckets);
399
+ // this.createBuckets(buckets); TODO: re-enable
400
+
401
+ /*
402
+ // Move items back into buckets
403
+ Array.from(itemsContainer?.querySelectorAll('form')).forEach((formElement:HTMLElement, index):void => {
404
+
405
+ const formData = new FormData(formElement);
406
+ const formDataObj = Object.fromEntries(formData.entries());
407
+ const newContainer = this.checkBuckets(formDataObj);
408
+
409
+ if(newContainer != anyContainer){
410
+ newContainer?.insertAdjacentElement('beforeend',formElement);
411
+ }
412
+ });
413
+
414
+
415
+ editBucketsOriginalState = editBuckets.innerHTML;
416
+ }
417
+
418
+ editBucketsDialog?.close();
419
+ });
420
+ */
421
+ /*
422
+
423
+ addBucketButton?.addEventListener('click', (event) => {
424
+
425
+ const editBucket = document.createElement('div');
426
+ editBucket.classList.add('bucket--edit');
427
+ editBucket.innerHTML = this.addBucketHTML();
428
+
429
+ editBuckets?.insertAdjacentElement('beforeend', editBucket)
430
+
431
+ this.addButtonEvents(editBucket,false);
432
+ const expandButton = editBucket?.querySelector('[data-expand]');
433
+
434
+ expandButton?.addEventListener('click',() => {
435
+
436
+ editBucket.classList.toggle('bucket--expanded');
437
+ });
438
+ });
439
+
440
+ */
441
+ // #endregion
442
+ // #region add data
443
+ addItemButton === null || addItemButton === void 0 ? void 0 : addItemButton.addEventListener("click", (event) => {
444
+ const form = this.createForm({});
445
+ form === null || form === void 0 ? void 0 : form.scrollIntoView({ behavior: "instant", block: "center" });
446
+ // TODO scroll into view
447
+ });
448
+ addBucketButton === null || addBucketButton === void 0 ? void 0 : addBucketButton.addEventListener("click", (event) => {
449
+ const bucket = this.createBucket({});
450
+ bucket === null || bucket === void 0 ? void 0 : bucket.scrollIntoView({ behavior: "instant", block: "center" });
451
+ });
452
+ // #endregion
453
+ // #region update values
454
+ this.shadowRoot.addEventListener('change', (event) => {
455
+ const container = event.target.closest('[data-bucket]');
456
+ if (!container)
457
+ return false;
458
+ const attribute = event.target.name;
459
+ const value = event.target.value;
460
+ const attributes = {};
461
+ attributes[attribute] = value;
462
+ const newContainer = this.checkBuckets(attributes);
463
+ if (newContainer != container) {
464
+ const form = event.target.closest(`form`);
465
+ // TODO a confirmation modal
466
+ newContainer === null || newContainer === void 0 ? void 0 : newContainer.insertAdjacentElement('beforeend', form);
467
+ form === null || form === void 0 ? void 0 : form.scrollIntoView({ behavior: "instant", block: "center" });
468
+ }
469
+ });
470
+ // #endregion
471
+ // #region save data
472
+ saveButton === null || saveButton === void 0 ? void 0 : saveButton.addEventListener('click', (event) => {
473
+ event.preventDefault();
474
+ // TODO validation
475
+ const entries = [];
476
+ // Save buckets data
477
+ Array.from(itemsContainer === null || itemsContainer === void 0 ? void 0 : itemsContainer.querySelectorAll('.bucket__wrapper')).forEach((bucketElement, index) => {
478
+ const bucket = {};
479
+ bucket.attributes = {};
480
+ bucket.id = bucketElement === null || bucketElement === void 0 ? void 0 : bucketElement.querySelector('[name="bucket"]').value;
481
+ bucket.type = 'bucket';
482
+ bucket.attributes.index = index;
483
+ const criteria = [];
484
+ // TODO populate criteria
485
+ Array.from(bucketElement === null || bucketElement === void 0 ? void 0 : bucketElement.querySelectorAll('.criteria--container form')).forEach((formElement, criteriaIndex) => {
486
+ const item = {};
487
+ //item.id = formElement.getAttribute('id');
488
+ item.type = 'criteria';
489
+ item.index = criteriaIndex;
490
+ const formData = new FormData(formElement);
491
+ const formDataObj = Object.fromEntries(formData.entries());
492
+ item.attributes = formDataObj;
493
+ criteria.push(item);
494
+ });
495
+ bucket.attributes.criteria = criteria;
496
+ const items = [];
497
+ Array.from(bucketElement === null || bucketElement === void 0 ? void 0 : bucketElement.querySelectorAll('[data-bucket] form')).forEach((formElement, itemIndex) => {
498
+ const item = {};
499
+ //item.id = formElement.getAttribute('id');
500
+ item.type = 'item';
501
+ item.index = itemIndex;
502
+ const formData = new FormData(formElement);
503
+ const formDataObj = Object.fromEntries(formData.entries());
504
+ item.attributes = formDataObj;
505
+ items.push(item);
506
+ });
507
+ bucket.attributes.items = items;
508
+ entries.push(bucket);
509
+ });
510
+ Array.from(itemsContainer === null || itemsContainer === void 0 ? void 0 : itemsContainer.querySelectorAll('[data-bucket="any"] form')).forEach((formElement, index) => {
511
+ const entry = {};
512
+ //entry.id = formElement.getAttribute('id');
513
+ entry.type = 'item';
514
+ entry.index = index;
515
+ const formData = new FormData(formElement);
516
+ const formDataObj = Object.fromEntries(formData.entries());
517
+ entry.attributes = formDataObj;
518
+ entries.push(entry);
519
+ });
520
+ const entriesJson = JSON.stringify(entries);
521
+ console.log(entries);
522
+ // TODO add toast message
523
+ // TODO save locally for now but when pushing to endpoint the web storage file should get deleted
524
+ //localStorage.setItem(`config-${this.getAttribute('data-name')}`, entriesJson);
525
+ //const bucketsJson = JSON.stringify(buckets);
526
+ //localStorage.setItem(`config-buckets-${this.getAttribute('data-name')}`, bucketsJson);
527
+ });
528
+ // #endregion
529
+ });
530
+ }
531
+ }
532
+ export default iamConfig;