@iamproperty/components 7.7.1--beta4 → 7.7.1--beta6

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 (712) hide show
  1. package/README.md +4 -4
  2. package/assets/bootstrap/README.md +247 -247
  3. package/assets/bootstrap/dist/css/bootstrap-grid.css +4124 -0
  4. package/assets/bootstrap/dist/css/bootstrap-grid.css.map +1 -0
  5. package/assets/bootstrap/dist/css/bootstrap-grid.min.css +7 -0
  6. package/assets/bootstrap/dist/css/bootstrap-grid.min.css.map +1 -0
  7. package/assets/bootstrap/dist/css/bootstrap-grid.rtl.css +4123 -0
  8. package/assets/bootstrap/dist/css/bootstrap-grid.rtl.css.map +1 -0
  9. package/assets/bootstrap/dist/css/bootstrap-grid.rtl.min.css +7 -0
  10. package/assets/bootstrap/dist/css/bootstrap-grid.rtl.min.css.map +1 -0
  11. package/assets/bootstrap/dist/css/bootstrap-reboot.css +488 -0
  12. package/assets/bootstrap/dist/css/bootstrap-reboot.css.map +1 -0
  13. package/assets/bootstrap/dist/css/bootstrap-reboot.min.css +7 -0
  14. package/assets/bootstrap/dist/css/bootstrap-reboot.min.css.map +1 -0
  15. package/assets/bootstrap/dist/css/bootstrap-reboot.rtl.css +485 -0
  16. package/assets/bootstrap/dist/css/bootstrap-reboot.rtl.css.map +1 -0
  17. package/assets/bootstrap/dist/css/bootstrap-reboot.rtl.min.css +7 -0
  18. package/assets/bootstrap/dist/css/bootstrap-reboot.rtl.min.css.map +1 -0
  19. package/assets/bootstrap/dist/css/bootstrap-utilities.css +4197 -0
  20. package/assets/bootstrap/dist/css/bootstrap-utilities.css.map +1 -0
  21. package/assets/bootstrap/dist/css/bootstrap-utilities.min.css +7 -0
  22. package/assets/bootstrap/dist/css/bootstrap-utilities.min.css.map +1 -0
  23. package/assets/bootstrap/dist/css/bootstrap-utilities.rtl.css +4188 -0
  24. package/assets/bootstrap/dist/css/bootstrap-utilities.rtl.css.map +1 -0
  25. package/assets/bootstrap/dist/css/bootstrap-utilities.rtl.min.css +7 -0
  26. package/assets/bootstrap/dist/css/bootstrap-utilities.rtl.min.css.map +1 -0
  27. package/assets/bootstrap/dist/css/bootstrap.css +10907 -0
  28. package/assets/bootstrap/dist/css/bootstrap.css.map +1 -0
  29. package/assets/bootstrap/dist/css/bootstrap.min.css +7 -0
  30. package/assets/bootstrap/dist/css/bootstrap.min.css.map +1 -0
  31. package/assets/bootstrap/dist/css/bootstrap.rtl.css +10867 -0
  32. package/assets/bootstrap/dist/css/bootstrap.rtl.css.map +1 -0
  33. package/assets/bootstrap/dist/css/bootstrap.rtl.min.css +7 -0
  34. package/assets/bootstrap/dist/css/bootstrap.rtl.min.css.map +1 -0
  35. package/assets/bootstrap/dist/js/bootstrap.bundle.js +7066 -0
  36. package/assets/bootstrap/dist/js/bootstrap.bundle.js.map +1 -0
  37. package/assets/bootstrap/dist/js/bootstrap.bundle.min.js +7 -0
  38. package/assets/bootstrap/dist/js/bootstrap.bundle.min.js.map +1 -0
  39. package/assets/bootstrap/dist/js/bootstrap.esm.js +5204 -0
  40. package/assets/bootstrap/dist/js/bootstrap.esm.js.map +1 -0
  41. package/assets/bootstrap/dist/js/bootstrap.esm.min.js +7 -0
  42. package/assets/bootstrap/dist/js/bootstrap.esm.min.js.map +1 -0
  43. package/assets/bootstrap/dist/js/bootstrap.js +5251 -0
  44. package/assets/bootstrap/dist/js/bootstrap.js.map +1 -0
  45. package/assets/bootstrap/dist/js/bootstrap.min.js +7 -0
  46. package/assets/bootstrap/dist/js/bootstrap.min.js.map +1 -0
  47. package/assets/bootstrap/js/dist/alert.js +100 -0
  48. package/assets/bootstrap/js/dist/alert.js.map +1 -0
  49. package/assets/bootstrap/js/dist/base-component.js +100 -0
  50. package/assets/bootstrap/js/dist/base-component.js.map +1 -0
  51. package/assets/bootstrap/js/dist/button.js +82 -0
  52. package/assets/bootstrap/js/dist/button.js.map +1 -0
  53. package/assets/bootstrap/js/dist/carousel.js +471 -0
  54. package/assets/bootstrap/js/dist/carousel.js.map +1 -0
  55. package/assets/bootstrap/js/dist/collapse.js +311 -0
  56. package/assets/bootstrap/js/dist/collapse.js.map +1 -0
  57. package/assets/bootstrap/js/dist/dom/data.js +67 -0
  58. package/assets/bootstrap/js/dist/dom/data.js.map +1 -0
  59. package/assets/bootstrap/js/dist/dom/event-handler.js +284 -0
  60. package/assets/bootstrap/js/dist/dom/event-handler.js.map +1 -0
  61. package/assets/bootstrap/js/dist/dom/manipulator.js +85 -0
  62. package/assets/bootstrap/js/dist/dom/manipulator.js.map +1 -0
  63. package/assets/bootstrap/js/dist/dom/selector-engine.js +86 -0
  64. package/assets/bootstrap/js/dist/dom/selector-engine.js.map +1 -0
  65. package/assets/bootstrap/js/dist/dropdown.js +471 -0
  66. package/assets/bootstrap/js/dist/dropdown.js.map +1 -0
  67. package/assets/bootstrap/js/dist/modal.js +397 -0
  68. package/assets/bootstrap/js/dist/modal.js.map +1 -0
  69. package/assets/bootstrap/js/dist/offcanvas.js +298 -0
  70. package/assets/bootstrap/js/dist/offcanvas.js.map +1 -0
  71. package/assets/bootstrap/js/dist/popover.js +102 -0
  72. package/assets/bootstrap/js/dist/popover.js.map +1 -0
  73. package/assets/bootstrap/js/dist/scrollspy.js +308 -0
  74. package/assets/bootstrap/js/dist/scrollspy.js.map +1 -0
  75. package/assets/bootstrap/js/dist/tab.js +334 -0
  76. package/assets/bootstrap/js/dist/tab.js.map +1 -0
  77. package/assets/bootstrap/js/dist/toast.js +237 -0
  78. package/assets/bootstrap/js/dist/toast.js.map +1 -0
  79. package/assets/bootstrap/js/dist/tooltip.js +663 -0
  80. package/assets/bootstrap/js/dist/tooltip.js.map +1 -0
  81. package/assets/bootstrap/js/dist/util/backdrop.js +166 -0
  82. package/assets/bootstrap/js/dist/util/backdrop.js.map +1 -0
  83. package/assets/bootstrap/js/dist/util/component-functions.js +47 -0
  84. package/assets/bootstrap/js/dist/util/component-functions.js.map +1 -0
  85. package/assets/bootstrap/js/dist/util/config.js +80 -0
  86. package/assets/bootstrap/js/dist/util/config.js.map +1 -0
  87. package/assets/bootstrap/js/dist/util/focustrap.js +130 -0
  88. package/assets/bootstrap/js/dist/util/focustrap.js.map +1 -0
  89. package/assets/bootstrap/js/dist/util/index.js +351 -0
  90. package/assets/bootstrap/js/dist/util/index.js.map +1 -0
  91. package/assets/bootstrap/js/dist/util/sanitizer.js +123 -0
  92. package/assets/bootstrap/js/dist/util/sanitizer.js.map +1 -0
  93. package/assets/bootstrap/js/dist/util/scrollbar.js +139 -0
  94. package/assets/bootstrap/js/dist/util/scrollbar.js.map +1 -0
  95. package/assets/bootstrap/js/dist/util/swipe.js +156 -0
  96. package/assets/bootstrap/js/dist/util/swipe.js.map +1 -0
  97. package/assets/bootstrap/js/dist/util/template-factory.js +178 -0
  98. package/assets/bootstrap/js/dist/util/template-factory.js.map +1 -0
  99. package/assets/bootstrap/js/index.esm.js +19 -19
  100. package/assets/bootstrap/js/index.umd.js +34 -34
  101. package/assets/bootstrap/js/src/alert.js +87 -87
  102. package/assets/bootstrap/js/src/base-component.js +85 -85
  103. package/assets/bootstrap/js/src/button.js +72 -72
  104. package/assets/bootstrap/js/src/carousel.js +475 -475
  105. package/assets/bootstrap/js/src/collapse.js +302 -302
  106. package/assets/bootstrap/js/src/dom/data.js +55 -55
  107. package/assets/bootstrap/js/src/dom/event-handler.js +320 -320
  108. package/assets/bootstrap/js/src/dom/manipulator.js +71 -71
  109. package/assets/bootstrap/js/src/dom/selector-engine.js +83 -83
  110. package/assets/bootstrap/js/src/dropdown.js +445 -445
  111. package/assets/bootstrap/js/src/modal.js +373 -373
  112. package/assets/bootstrap/js/src/offcanvas.js +283 -283
  113. package/assets/bootstrap/js/src/popover.js +97 -97
  114. package/assets/bootstrap/js/src/scrollspy.js +290 -290
  115. package/assets/bootstrap/js/src/tab.js +307 -307
  116. package/assets/bootstrap/js/src/toast.js +220 -220
  117. package/assets/bootstrap/js/src/tooltip.js +651 -651
  118. package/assets/bootstrap/js/src/util/backdrop.js +149 -149
  119. package/assets/bootstrap/js/src/util/component-functions.js +34 -34
  120. package/assets/bootstrap/js/src/util/config.js +66 -66
  121. package/assets/bootstrap/js/src/util/focustrap.js +115 -115
  122. package/assets/bootstrap/js/src/util/index.js +336 -336
  123. package/assets/bootstrap/js/src/util/sanitizer.js +118 -118
  124. package/assets/bootstrap/js/src/util/scrollbar.js +114 -114
  125. package/assets/bootstrap/js/src/util/swipe.js +146 -146
  126. package/assets/bootstrap/js/src/util/template-factory.js +160 -160
  127. package/assets/bootstrap/package.json +180 -180
  128. package/assets/bootstrap/scss/_accordion.scss +146 -146
  129. package/assets/bootstrap/scss/_button-group.scss +142 -142
  130. package/assets/bootstrap/scss/_buttons.scss +186 -186
  131. package/assets/bootstrap/scss/_carousel.scss +229 -229
  132. package/assets/bootstrap/scss/_dropdown.scss +248 -248
  133. package/assets/bootstrap/scss/_functions.scss +302 -302
  134. package/assets/bootstrap/scss/_list-group.scss +191 -191
  135. package/assets/bootstrap/scss/_modal.scss +237 -237
  136. package/assets/bootstrap/scss/_nav.scss +172 -172
  137. package/assets/bootstrap/scss/_navbar.scss +276 -276
  138. package/assets/bootstrap/scss/_offcanvas.scss +143 -143
  139. package/assets/bootstrap/scss/_pagination.scss +109 -109
  140. package/assets/bootstrap/scss/_popover.scss +196 -196
  141. package/assets/bootstrap/scss/_toasts.scss +70 -70
  142. package/assets/bootstrap/scss/_variables-dark.scss +87 -87
  143. package/assets/bootstrap/scss/_variables.scss +1633 -1633
  144. package/assets/bootstrap/scss/bootstrap-utilities.scss +15 -15
  145. package/assets/bootstrap/scss/forms/_floating-labels.scss +74 -74
  146. package/assets/bootstrap/scss/forms/_input-group.scss +129 -129
  147. package/assets/bootstrap/scss/helpers/_focus-ring.scss +5 -5
  148. package/assets/bootstrap/scss/helpers/_icon-link.scss +25 -25
  149. package/assets/bootstrap/scss/mixins/_banner.scss +9 -9
  150. package/assets/bootstrap/scss/mixins/_color-mode.scss +21 -21
  151. package/assets/bootstrap/scss/mixins/_forms.scss +152 -152
  152. package/assets/bootstrap/scss/mixins/_table-variants.scss +24 -24
  153. package/assets/bootstrap/scss/mixins/_utilities.scss +97 -97
  154. package/assets/css/components/actionbar.component.css +1 -1
  155. package/assets/css/components/actionbar.component.css.map +1 -1
  156. package/assets/css/components/address-lookup.component.css +1 -1
  157. package/assets/css/components/address-lookup.component.css.map +1 -1
  158. package/assets/css/components/applied-filters.css +1 -1
  159. package/assets/css/components/applied-filters.css.map +1 -1
  160. package/assets/css/components/barchart.component.css +1 -1
  161. package/assets/css/components/barchart.component.css.map +1 -1
  162. package/assets/css/components/calendar.component.css +1 -1
  163. package/assets/css/components/calendar.component.css.map +1 -1
  164. package/assets/css/components/card.component.css +1 -1
  165. package/assets/css/components/card.component.css.map +1 -1
  166. package/assets/css/components/card.module.css +1 -1
  167. package/assets/css/components/card.module.css.map +1 -1
  168. package/assets/css/components/carousel.component.css +1 -1
  169. package/assets/css/components/carousel.component.css.map +1 -1
  170. package/assets/css/components/charts.css +1 -1
  171. package/assets/css/components/charts.css.map +1 -1
  172. package/assets/css/components/collapsible-side.css +1 -1
  173. package/assets/css/components/collapsible-side.css.map +1 -1
  174. package/assets/css/components/config.component.css +1 -1
  175. package/assets/css/components/config.component.css.map +1 -1
  176. package/assets/css/components/content.component.css +1 -1
  177. package/assets/css/components/content.component.css.map +1 -1
  178. package/assets/css/components/doughnutchart.component.css +1 -1
  179. package/assets/css/components/doughnutchart.component.css.map +1 -1
  180. package/assets/css/components/fileupload.css +1 -1
  181. package/assets/css/components/fileupload.css.map +1 -1
  182. package/assets/css/components/filter-card.component.css +1 -1
  183. package/assets/css/components/filter-card.component.css.map +1 -1
  184. package/assets/css/components/header.css +1 -1
  185. package/assets/css/components/header.css.map +1 -1
  186. package/assets/css/components/inline-edit.css +1 -1
  187. package/assets/css/components/inline-edit.css.map +1 -1
  188. package/assets/css/components/input.component.css.map +1 -1
  189. package/assets/css/components/modal.component.css +1 -1
  190. package/assets/css/components/modal.component.css.map +1 -1
  191. package/assets/css/components/multi-step-modal.component.css +1 -1
  192. package/assets/css/components/multi-step-modal.component.css.map +1 -1
  193. package/assets/css/components/multiselect.css +1 -1
  194. package/assets/css/components/multiselect.css.map +1 -1
  195. package/assets/css/components/nav.component.css +1 -1
  196. package/assets/css/components/nav.component.css.map +1 -1
  197. package/assets/css/components/pagination.css +1 -1
  198. package/assets/css/components/pagination.css.map +1 -1
  199. package/assets/css/components/record-card.component.css +1 -1
  200. package/assets/css/components/record-card.component.css.map +1 -1
  201. package/assets/css/components/slider.css +1 -1
  202. package/assets/css/components/slider.css.map +1 -1
  203. package/assets/css/components/split-button.component.css +1 -1
  204. package/assets/css/components/split-button.component.css.map +1 -1
  205. package/assets/css/components/tabs.component.css +1 -1
  206. package/assets/css/components/tabs.component.css.map +1 -1
  207. package/assets/css/components/tabs.config.css +1 -1
  208. package/assets/css/components/tabs.config.css.map +1 -1
  209. package/assets/css/components/tag.component.css +1 -1
  210. package/assets/css/components/tag.component.css.map +1 -1
  211. package/assets/css/components/video-card.component.css +1 -1
  212. package/assets/css/components/video-card.component.css.map +1 -1
  213. package/assets/css/components/video-modal.component.css +1 -1
  214. package/assets/css/components/video-modal.component.css.map +1 -1
  215. package/assets/css/components/video.component.css +1 -0
  216. package/assets/css/components/video.component.css.map +1 -0
  217. package/assets/css/core.min.css +1 -1
  218. package/assets/css/core.min.css.map +1 -1
  219. package/assets/css/elements/badge-tag.css +1 -1
  220. package/assets/css/elements/badge-tag.css.map +1 -1
  221. package/assets/css/elements/buttons--action.css +1 -1
  222. package/assets/css/elements/buttons--action.css.map +1 -1
  223. package/assets/css/elements/buttons--global.css +1 -1
  224. package/assets/css/elements/buttons--global.css.map +1 -1
  225. package/assets/css/elements/buttons--secondary.css +1 -1
  226. package/assets/css/elements/buttons--secondary.css.map +1 -1
  227. package/assets/css/elements/buttons--special.css +1 -1
  228. package/assets/css/elements/buttons--special.css.map +1 -1
  229. package/assets/css/elements/buttons--tertiary.css +1 -1
  230. package/assets/css/elements/buttons--tertiary.css.map +1 -1
  231. package/assets/css/elements/buttons.css +1 -1
  232. package/assets/css/elements/buttons.css.map +1 -1
  233. package/assets/css/elements/container.css +1 -1
  234. package/assets/css/elements/container.css.map +1 -1
  235. package/assets/css/elements/details.css +1 -1
  236. package/assets/css/elements/details.css.map +1 -1
  237. package/assets/css/elements/dialog.css.map +1 -1
  238. package/assets/css/elements/dropdown.css +1 -1
  239. package/assets/css/elements/dropdown.css.map +1 -1
  240. package/assets/css/elements/feature.css +1 -1
  241. package/assets/css/elements/feature.css.map +1 -1
  242. package/assets/css/elements/forms.css +1 -1
  243. package/assets/css/elements/forms.css.map +1 -1
  244. package/assets/css/elements/label.css +1 -1
  245. package/assets/css/elements/label.css.map +1 -1
  246. package/assets/css/elements/links--collapsible-side.css +1 -0
  247. package/assets/css/elements/links--collapsible-side.css.map +1 -0
  248. package/assets/css/elements/links--global.css +1 -0
  249. package/assets/css/elements/links--global.css.map +1 -0
  250. package/assets/css/elements/links--video.css +1 -0
  251. package/assets/css/elements/links--video.css.map +1 -0
  252. package/assets/css/elements/links.css +1 -1
  253. package/assets/css/elements/links.css.map +1 -1
  254. package/assets/css/elements/modal.css.map +1 -1
  255. package/assets/css/elements/progress.css.map +1 -1
  256. package/assets/css/elements/textarea.css +1 -1
  257. package/assets/css/elements/textarea.css.map +1 -1
  258. package/assets/css/elements/toggle-button.css +1 -1
  259. package/assets/css/elements/toggle-button.css.map +1 -1
  260. package/assets/css/elements/tooltips.css +1 -1
  261. package/assets/css/elements/tooltips.css.map +1 -1
  262. package/assets/css/style.min.css +1 -1
  263. package/assets/css/style.min.css.map +1 -1
  264. package/assets/favicons/README.md +20 -20
  265. package/assets/favicons/browserconfig.xml +9 -9
  266. package/assets/favicons/manifest.json +31 -31
  267. package/assets/favicons/safari-pinned-tab.svg +35 -35
  268. package/assets/favicons/site.webmanifest +20 -20
  269. package/assets/js/components/accordion/accordion.component.js +15 -15
  270. package/assets/js/components/accordion/accordion.component.min.js +1 -1
  271. package/assets/js/components/accordion/accordion.component.min.js.map +1 -1
  272. package/assets/js/components/actionbar/actionbar.component.js +68 -68
  273. package/assets/js/components/actionbar/actionbar.component.min.js +2 -2
  274. package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
  275. package/assets/js/components/address-lookup/address-lookup.component.js +60 -60
  276. package/assets/js/components/address-lookup/address-lookup.component.min.js +4 -4
  277. package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -1
  278. package/assets/js/components/advanced-select/advanced-select.component.js +20 -20
  279. package/assets/js/components/advanced-select/advanced-select.component.min.js +1 -1
  280. package/assets/js/components/advanced-select/advanced-select.component.min.js.map +1 -1
  281. package/assets/js/components/applied-filters/applied-filters.component.js +7 -7
  282. package/assets/js/components/applied-filters/applied-filters.component.min.js +2 -2
  283. package/assets/js/components/applied-filters/applied-filters.component.min.js.map +1 -1
  284. package/assets/js/components/barchart/barchart.component.js +2 -2
  285. package/assets/js/components/barchart/barchart.component.min.js +3 -3
  286. package/assets/js/components/barchart/barchart.component.min.js.map +1 -1
  287. package/assets/js/components/bento-grid/bento-grid.component.js +9 -9
  288. package/assets/js/components/bento-grid/bento-grid.component.min.js +1 -1
  289. package/assets/js/components/bento-grid/bento-grid.component.min.js.map +1 -1
  290. package/assets/js/components/calendar/calendar.component.js +2 -2
  291. package/assets/js/components/calendar/calendar.component.min.js +2 -2
  292. package/assets/js/components/calendar/calendar.component.min.js.map +1 -1
  293. package/assets/js/components/card/card.component.js +3 -3
  294. package/assets/js/components/card/card.component.min.js +2 -2
  295. package/assets/js/components/card/card.component.min.js.map +1 -1
  296. package/assets/js/components/carousel/carousel.component.js +2 -2
  297. package/assets/js/components/carousel/carousel.component.min.js +4 -4
  298. package/assets/js/components/carousel/carousel.component.min.js.map +1 -1
  299. package/assets/js/components/chart/chart.component.js +1 -1
  300. package/assets/js/components/collapsible-side/collapsible-side.component.js +20 -20
  301. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +4 -4
  302. package/assets/js/components/collapsible-side/collapsible-side.component.min.js.map +1 -1
  303. package/assets/js/components/config/config.component.js +54 -54
  304. package/assets/js/components/config/config.component.min.js +2 -2
  305. package/assets/js/components/config/config.component.min.js.map +1 -1
  306. package/assets/js/components/content/content.component.js +9 -9
  307. package/assets/js/components/content/content.component.min.js +4 -4
  308. package/assets/js/components/content/content.component.min.js.map +1 -1
  309. package/assets/js/components/darkmode/darkmode.component.js +4 -4
  310. package/assets/js/components/darkmode/darkmode.component.min.js +1 -1
  311. package/assets/js/components/darkmode/darkmode.component.min.js.map +1 -1
  312. package/assets/js/components/doughnutchart/doughnutchart.component.js +2 -2
  313. package/assets/js/components/doughnutchart/doughnutchart.component.min.js +2 -2
  314. package/assets/js/components/doughnutchart/doughnutchart.component.min.js.map +1 -1
  315. package/assets/js/components/fileupload/fileupload.component.js +17 -17
  316. package/assets/js/components/fileupload/fileupload.component.min.js +2 -2
  317. package/assets/js/components/fileupload/fileupload.component.min.js.map +1 -1
  318. package/assets/js/components/filter-card/filter-card.component.js +9 -9
  319. package/assets/js/components/filter-card/filter-card.component.min.js +5 -5
  320. package/assets/js/components/filter-card/filter-card.component.min.js.map +1 -1
  321. package/assets/js/components/filterlist/filterlist.component.js +1 -1
  322. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  323. package/assets/js/components/filterlist/filterlist.component.min.js.map +1 -1
  324. package/assets/js/components/form/form.component.js +5 -5
  325. package/assets/js/components/form/form.component.min.js +1 -1
  326. package/assets/js/components/form/form.component.min.js.map +1 -1
  327. package/assets/js/components/header/header.component.js +53 -53
  328. package/assets/js/components/header/header.component.min.js +2 -2
  329. package/assets/js/components/header/header.component.min.js.map +1 -1
  330. package/assets/js/components/inline-edit/inline-edit.component.js +16 -16
  331. package/assets/js/components/inline-edit/inline-edit.component.min.js +4 -4
  332. package/assets/js/components/inline-edit/inline-edit.component.min.js.map +1 -1
  333. package/assets/js/components/input/input.component.js +11 -11
  334. package/assets/js/components/input/input.component.min.js +1 -1
  335. package/assets/js/components/input/input.component.min.js.map +1 -1
  336. package/assets/js/components/input-range/input-range.component.js +9 -9
  337. package/assets/js/components/input-range/input-range.component.min.js +1 -1
  338. package/assets/js/components/input-range/input-range.component.min.js.map +1 -1
  339. package/assets/js/components/marketing/marketing.component.js +10 -10
  340. package/assets/js/components/marketing/marketing.component.min.js +1 -1
  341. package/assets/js/components/marketing/marketing.component.min.js.map +1 -1
  342. package/assets/js/components/menu/menu.component.js +6 -6
  343. package/assets/js/components/menu/menu.component.min.js +1 -1
  344. package/assets/js/components/menu/menu.component.min.js.map +1 -1
  345. package/assets/js/components/milestone/milestone.component.js +2 -2
  346. package/assets/js/components/milestone/milestone.component.min.js +1 -1
  347. package/assets/js/components/milestone/milestone.component.min.js.map +1 -1
  348. package/assets/js/components/milestone-group/milestone-group.component.js +2 -2
  349. package/assets/js/components/milestone-group/milestone-group.component.min.js +1 -1
  350. package/assets/js/components/milestone-group/milestone-group.component.min.js.map +1 -1
  351. package/assets/js/components/modal/modal.component.js +25 -25
  352. package/assets/js/components/modal/modal.component.min.js +4 -4
  353. package/assets/js/components/modal/modal.component.min.js.map +1 -1
  354. package/assets/js/components/multi-step/multi-step.component.js +1 -1
  355. package/assets/js/components/multi-step/multi-step.component.min.js +1 -1
  356. package/assets/js/components/multi-step/multi-step.component.min.js.map +1 -1
  357. package/assets/js/components/multi-step-modal/multi-step-modal.component.js +12 -12
  358. package/assets/js/components/multi-step-modal/multi-step-modal.component.min.js +4 -4
  359. package/assets/js/components/multi-step-modal/multi-step-modal.component.min.js.map +1 -1
  360. package/assets/js/components/multiselect/multiselect.component.js +21 -21
  361. package/assets/js/components/multiselect/multiselect.component.min.js +4 -4
  362. package/assets/js/components/multiselect/multiselect.component.min.js.map +1 -1
  363. package/assets/js/components/nav/nav.component.js +45 -45
  364. package/assets/js/components/nav/nav.component.min.js +2 -2
  365. package/assets/js/components/nav/nav.component.min.js.map +1 -1
  366. package/assets/js/components/notification/notification.component.js +14 -14
  367. package/assets/js/components/notification/notification.component.min.js +1 -1
  368. package/assets/js/components/notification/notification.component.min.js.map +1 -1
  369. package/assets/js/components/pagination/pagination.component.js +39 -39
  370. package/assets/js/components/pagination/pagination.component.min.js +3 -3
  371. package/assets/js/components/pagination/pagination.component.min.js.map +1 -1
  372. package/assets/js/components/password/password.component.js +11 -11
  373. package/assets/js/components/password/password.component.min.js +1 -1
  374. package/assets/js/components/password/password.component.min.js.map +1 -1
  375. package/assets/js/components/popover/popover.component.js +8 -8
  376. package/assets/js/components/popover/popover.component.min.js +1 -1
  377. package/assets/js/components/popover/popover.component.min.js.map +1 -1
  378. package/assets/js/components/rank/rank.component.js +360 -360
  379. package/assets/js/components/rank/rank.component.min.js +1 -1
  380. package/assets/js/components/rank/rank.component.min.js.map +1 -1
  381. package/assets/js/components/rankings/rankings.component.js +18 -18
  382. package/assets/js/components/rankings/rankings.component.min.js +1 -1
  383. package/assets/js/components/rankings/rankings.component.min.js.map +1 -1
  384. package/assets/js/components/rating/rating.component.js +10 -10
  385. package/assets/js/components/rating/rating.component.min.js +1 -1
  386. package/assets/js/components/rating/rating.component.min.js.map +1 -1
  387. package/assets/js/components/record-card/record-card.component.js +2 -2
  388. package/assets/js/components/record-card/record-card.component.min.js +2 -2
  389. package/assets/js/components/record-card/record-card.component.min.js.map +1 -1
  390. package/assets/js/components/search/search.component.js +19 -19
  391. package/assets/js/components/search/search.component.min.js +1 -1
  392. package/assets/js/components/search/search.component.min.js.map +1 -1
  393. package/assets/js/components/slider/slider.component.js +12 -12
  394. package/assets/js/components/slider/slider.component.min.js +2 -2
  395. package/assets/js/components/slider/slider.component.min.js.map +1 -1
  396. package/assets/js/components/split-button/split-button.component.js +19 -19
  397. package/assets/js/components/split-button/split-button.component.min.js +3 -3
  398. package/assets/js/components/split-button/split-button.component.min.js.map +1 -1
  399. package/assets/js/components/std-address-lookup/std-address-lookup.component.js +114 -114
  400. package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js +4 -4
  401. package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js.map +1 -1
  402. package/assets/js/components/table/table.component.js +17 -17
  403. package/assets/js/components/table/table.component.min.js +1 -1
  404. package/assets/js/components/table/table.component.min.js.map +1 -1
  405. package/assets/js/components/table-ajax/table-ajax.component.js +17 -17
  406. package/assets/js/components/table-ajax/table-ajax.component.min.js +1 -1
  407. package/assets/js/components/table-ajax/table-ajax.component.min.js.map +1 -1
  408. package/assets/js/components/table-basic/table-basic.component.js +16 -16
  409. package/assets/js/components/table-basic/table-basic.component.min.js +1 -1
  410. package/assets/js/components/table-basic/table-basic.component.min.js.map +1 -1
  411. package/assets/js/components/table-no-submit/table-no-submit.component.js +17 -17
  412. package/assets/js/components/table-no-submit/table-no-submit.component.min.js +1 -1
  413. package/assets/js/components/table-no-submit/table-no-submit.component.min.js.map +1 -1
  414. package/assets/js/components/table-submit/table-submit.component.js +17 -17
  415. package/assets/js/components/table-submit/table-submit.component.min.js +1 -1
  416. package/assets/js/components/table-submit/table-submit.component.min.js.map +1 -1
  417. package/assets/js/components/tabs/tabs.component.js +31 -18
  418. package/assets/js/components/tabs/tabs.component.min.js +4 -4
  419. package/assets/js/components/tabs/tabs.component.min.js.map +1 -1
  420. package/assets/js/components/tag/tag.component.js +14 -14
  421. package/assets/js/components/tag/tag.component.min.js +4 -4
  422. package/assets/js/components/tag/tag.component.min.js.map +1 -1
  423. package/assets/js/components/tooltip/tooltip.component.js +9 -9
  424. package/assets/js/components/tooltip/tooltip.component.min.js +1 -1
  425. package/assets/js/components/tooltip/tooltip.component.min.js.map +1 -1
  426. package/assets/js/components/video/video.component.js +67 -0
  427. package/assets/js/components/video/video.component.min.js +21 -0
  428. package/assets/js/components/video/video.component.min.js.map +1 -0
  429. package/assets/js/components/video-card/video-card.component.js +53 -70
  430. package/assets/js/components/video-card/video-card.component.min.js +15 -7
  431. package/assets/js/components/video-card/video-card.component.min.js.map +1 -1
  432. package/assets/js/components/video-modal/video-modal.component.js +24 -58
  433. package/assets/js/components/video-modal/video-modal.component.min.js +12 -6
  434. package/assets/js/components/video-modal/video-modal.component.min.js.map +1 -1
  435. package/assets/js/components/word-count/word-count.component.js +1 -1
  436. package/assets/js/components/word-count/word-count.component.min.js +1 -1
  437. package/assets/js/components/word-count/word-count.component.min.js.map +1 -1
  438. package/assets/js/modules/card.module.js +14 -14
  439. package/assets/js/modules/chart.js +1 -1
  440. package/assets/js/modules/chart.module.js +5 -5
  441. package/assets/js/modules/helper.test.js +2 -2
  442. package/assets/js/modules/integration-tests.js +3 -3
  443. package/assets/js/modules/modal.js +4 -2
  444. package/assets/js/modules/table.js +3 -3
  445. package/assets/js/modules/tabs.js +1 -1
  446. package/assets/js/modules/videos.js +42 -0
  447. package/assets/js/scripts.bundle.js +1 -1
  448. package/assets/js/scripts.bundle.js.map +1 -1
  449. package/assets/js/scripts.bundle.min.js +1 -1
  450. package/assets/js/scripts.bundle.min.js.map +1 -1
  451. package/assets/js/scripts.js +4 -4
  452. package/assets/sass/_bs_grid.scss +41 -41
  453. package/assets/sass/_bs_utilities.scss +51 -51
  454. package/assets/sass/_components.scss +162 -162
  455. package/assets/sass/_corefiles.scss +31 -31
  456. package/assets/sass/_elements.scss +30 -30
  457. package/assets/sass/_fonts.scss +28 -28
  458. package/assets/sass/_func.scss +2 -2
  459. package/assets/sass/_functions/bs_functions.scss +487 -487
  460. package/assets/sass/_functions/bs_mixins.scss +2103 -2103
  461. package/assets/sass/_functions/bs_utilities.scss +922 -922
  462. package/assets/sass/_functions/bs_variables.scss +1701 -1703
  463. package/assets/sass/_functions/functions.scss +48 -48
  464. package/assets/sass/_functions/mixins.scss +1 -1
  465. package/assets/sass/_grid.scss +320 -320
  466. package/assets/sass/_print.scss +64 -64
  467. package/assets/sass/_utilities.scss +35 -35
  468. package/assets/sass/components/actionbar.component.scss +421 -421
  469. package/assets/sass/components/actionbar.global.scss +115 -115
  470. package/assets/sass/components/address-lookup.component.scss +161 -161
  471. package/assets/sass/components/address-lookup.preload.scss +90 -90
  472. package/assets/sass/components/applied-filters.scss +19 -19
  473. package/assets/sass/components/barchart.component.scss +347 -347
  474. package/assets/sass/components/bento-grid.component.scss +109 -109
  475. package/assets/sass/components/bento-grid.global.scss +248 -248
  476. package/assets/sass/components/calendar.component.scss +1272 -1272
  477. package/assets/sass/components/calendar.config.scss +423 -423
  478. package/assets/sass/components/card.component.scss +187 -182
  479. package/assets/sass/components/card.module.scss +154 -151
  480. package/assets/sass/components/carousel.component.scss +631 -631
  481. package/assets/sass/components/carousel.config.scss +84 -84
  482. package/assets/sass/components/charts.config.scss +86 -86
  483. package/assets/sass/components/charts.module.scss +588 -588
  484. package/assets/sass/components/charts.scss +1298 -1298
  485. package/assets/sass/components/collapsible-side.scss +307 -307
  486. package/assets/sass/components/config.component.scss +235 -235
  487. package/assets/sass/components/content.component.scss +18 -18
  488. package/assets/sass/components/darkmode.component.scss +20 -20
  489. package/assets/sass/components/doughnutchart.component.scss +206 -206
  490. package/assets/sass/components/fileupload.scss +162 -162
  491. package/assets/sass/components/filter-card.component.scss +99 -99
  492. package/assets/sass/components/header.scss +251 -256
  493. package/assets/sass/components/inline-edit.preload.scss +203 -203
  494. package/assets/sass/components/inline-edit.scss +40 -40
  495. package/assets/sass/components/input-range.component.scss +46 -46
  496. package/assets/sass/components/input.component.scss +101 -101
  497. package/assets/sass/components/marketing.component.scss +65 -65
  498. package/assets/sass/components/menu.component.scss +161 -190
  499. package/assets/sass/components/menu.global.scss +82 -82
  500. package/assets/sass/components/milestone.scss +216 -216
  501. package/assets/sass/components/modal.component.scss +252 -252
  502. package/assets/sass/components/multi-step-modal.component.scss +255 -255
  503. package/assets/sass/components/multi-step-modal.global.scss +92 -92
  504. package/assets/sass/components/multi-step.component.scss +144 -144
  505. package/assets/sass/components/multiselect.preload.scss +8 -8
  506. package/assets/sass/components/multiselect.scss +238 -238
  507. package/assets/sass/components/nav.component.scss +718 -718
  508. package/assets/sass/components/nav.docs.scss +55 -55
  509. package/assets/sass/components/nav.global.scss +870 -870
  510. package/assets/sass/components/nav.preload.scss +54 -54
  511. package/assets/sass/components/notification.scss +218 -218
  512. package/assets/sass/components/pagination.scss +237 -237
  513. package/assets/sass/components/password.component.scss +56 -56
  514. package/assets/sass/components/popover.component.scss +28 -28
  515. package/assets/sass/components/property-searchbar.scss +139 -139
  516. package/assets/sass/components/rank.component.scss +275 -275
  517. package/assets/sass/components/rankings.component.scss +70 -70
  518. package/assets/sass/components/rankings.global.scss +140 -140
  519. package/assets/sass/components/rating.component.css +211 -211
  520. package/assets/sass/components/record-card.component.scss +191 -191
  521. package/assets/sass/components/slider.scss +127 -127
  522. package/assets/sass/components/snapshot.scss +65 -65
  523. package/assets/sass/components/split-button.component.scss +83 -83
  524. package/assets/sass/components/stepper.scss +157 -157
  525. package/assets/sass/components/table-basic.component.scss +136 -136
  526. package/assets/sass/components/table-basic.global.scss +676 -676
  527. package/assets/sass/components/table.component.scss +51 -51
  528. package/assets/sass/components/table.global.scss +398 -398
  529. package/assets/sass/components/tabs.component.scss +34 -9
  530. package/assets/sass/components/tabs.config.scss +258 -254
  531. package/assets/sass/components/tag.component.scss +59 -59
  532. package/assets/sass/components/tag.preload.scss +20 -20
  533. package/assets/sass/components/testimonial.scss +125 -125
  534. package/assets/sass/components/timeline.scss +92 -92
  535. package/assets/sass/components/tooltip.component.scss +148 -148
  536. package/assets/sass/components/video-card.component.scss +49 -75
  537. package/assets/sass/components/video-modal.component.scss +26 -24
  538. package/assets/sass/components/video.component.scss +75 -0
  539. package/assets/sass/components/word-count.component.scss +26 -26
  540. package/assets/sass/core.scss +4 -4
  541. package/assets/sass/elements/admin-panel.css +310 -310
  542. package/assets/sass/elements/badge-tag.css +101 -101
  543. package/assets/sass/elements/brand.css +80 -80
  544. package/assets/sass/elements/button__group.css +135 -135
  545. package/assets/sass/elements/buttons--action.css +71 -54
  546. package/assets/sass/elements/buttons--compact.css +168 -168
  547. package/assets/sass/elements/{buttons--global.scss → buttons--global.css} +239 -246
  548. package/assets/sass/elements/{buttons--secondary.scss → buttons--secondary.css} +18 -24
  549. package/assets/sass/elements/{buttons--special.scss → buttons--special.css} +164 -171
  550. package/assets/sass/elements/{buttons--tertiary.scss → buttons--tertiary.css} +51 -57
  551. package/assets/sass/elements/buttons.scss +9 -14
  552. package/assets/sass/elements/code.css +45 -45
  553. package/assets/sass/elements/container.scss +118 -155
  554. package/assets/sass/elements/{details.scss → details.css} +224 -227
  555. package/assets/sass/elements/dialog.scss +75 -86
  556. package/assets/sass/elements/{dropdown.scss → dropdown.css} +85 -87
  557. package/assets/sass/elements/{feature.scss → feature.css} +174 -180
  558. package/assets/sass/elements/forms.scss +1337 -1338
  559. package/assets/sass/elements/highlight.css +76 -76
  560. package/assets/sass/elements/hr.css +41 -41
  561. package/assets/sass/elements/icons.css +48 -48
  562. package/assets/sass/elements/input.scss +212 -212
  563. package/assets/sass/elements/{label.scss → label.css} +20 -20
  564. package/assets/sass/elements/links--collapsible-side.scss +130 -0
  565. package/assets/sass/elements/links--global.scss +155 -0
  566. package/assets/sass/elements/links--video.scss +73 -0
  567. package/assets/sass/elements/links.scss +5 -348
  568. package/assets/sass/elements/lists--breadcrumbs.scss +26 -26
  569. package/assets/sass/elements/lists--steps.css +171 -171
  570. package/assets/sass/elements/lists--tick-list.scss +112 -112
  571. package/assets/sass/elements/lists.scss +99 -99
  572. package/assets/sass/elements/media.css +20 -20
  573. package/assets/sass/elements/modal.scss +411 -415
  574. package/assets/sass/elements/popover.scss +259 -259
  575. package/assets/sass/elements/prefix.scss +139 -139
  576. package/assets/sass/elements/progress.scss +208 -214
  577. package/assets/sass/elements/table.element.scss +144 -144
  578. package/assets/sass/elements/{textarea.scss → textarea.css} +84 -96
  579. package/assets/sass/elements/{toggle-button.scss → toggle-button.css} +49 -55
  580. package/assets/sass/elements/tooltips.scss +152 -151
  581. package/assets/sass/elements/type.css +166 -166
  582. package/assets/sass/email.scss +68 -68
  583. package/assets/sass/error.scss +31 -33
  584. package/assets/sass/foundations/animations.scss +2 -2
  585. package/assets/sass/foundations/colours.scss +104 -104
  586. package/assets/sass/foundations/reboot.scss +166 -166
  587. package/assets/sass/foundations/root.scss +269 -269
  588. package/assets/sass/main.scss +7 -7
  589. package/assets/sass/templates/auth.scss +106 -106
  590. package/assets/sass/templates/form.scss +95 -95
  591. package/assets/sass/utilities/{align.scss → align.css} +24 -24
  592. package/assets/sass/utilities/{border.scss → border.css} +65 -68
  593. package/assets/sass/utilities/{clearfix.scss → clearfix.css} +8 -8
  594. package/assets/sass/utilities/colours.scss +43 -43
  595. package/assets/sass/utilities/{columns.scss → columns.css} +61 -61
  596. package/assets/sass/utilities/display.scss +89 -89
  597. package/assets/sass/utilities/{fixed.scss → fixed.css} +16 -16
  598. package/assets/sass/utilities/flex.scss +291 -291
  599. package/assets/sass/utilities/{font-awesome-iso-fallbacks.scss → font-awesome-iso-fallbacks.css} +43 -43
  600. package/assets/sass/utilities/gap.css +26 -0
  601. package/assets/sass/utilities/{gradients.scss → gradients.css} +39 -39
  602. package/assets/sass/utilities/{js-display.scss → js-display.css} +12 -12
  603. package/assets/sass/utilities/{line-clamp.scss → line-clamp.css} +24 -24
  604. package/assets/sass/utilities/margins.scss +74 -74
  605. package/assets/sass/utilities/max-height.scss +93 -93
  606. package/assets/sass/utilities/{opacity.scss → opacity.css} +20 -20
  607. package/assets/sass/utilities/order.css +104 -0
  608. package/assets/sass/utilities/{overflow.scss → overflow.css} +16 -16
  609. package/assets/sass/utilities/paddings.scss +33 -33
  610. package/assets/sass/utilities/{pointer-events.scss → pointer-events.css} +8 -8
  611. package/assets/sass/utilities/position.css +68 -0
  612. package/assets/sass/utilities/{ratio.scss → ratio.css} +33 -33
  613. package/assets/sass/utilities/{rounded.scss → rounded.css} +56 -56
  614. package/assets/sass/utilities/{shadow.scss → shadow.css} +7 -7
  615. package/assets/sass/utilities/{sizes.scss → sizes.css} +92 -92
  616. package/assets/sass/utilities/{sticky.scss → sticky.css} +38 -38
  617. package/assets/sass/utilities/{text-truncate.scss → text-truncate.css} +6 -6
  618. package/assets/sass/utilities/{text.scss → text.css} +190 -190
  619. package/assets/sass/utilities/{visible.scss → visible.css} +8 -8
  620. package/assets/sass/utilities/{visually-hidden.scss → visually-hidden.css} +13 -13
  621. package/assets/sass/utilities/wider-colours.scss +8 -8
  622. package/assets/svg/illustrations/table.svg +165 -165
  623. package/assets/svg/logo.svg +56 -56
  624. package/assets/ts/components/accordion/accordion.component.ts +77 -77
  625. package/assets/ts/components/actionbar/actionbar.component.ts +567 -567
  626. package/assets/ts/components/address-lookup/address-lookup.component.ts +672 -672
  627. package/assets/ts/components/advanced-select/advanced-select.component.ts +116 -116
  628. package/assets/ts/components/applied-filters/applied-filters.component.ts +37 -37
  629. package/assets/ts/components/bento-grid/bento-grid.component.ts +88 -88
  630. package/assets/ts/components/collapsible-side/collapsible-side.component.ts +165 -165
  631. package/assets/ts/components/config/config.component.ts +699 -699
  632. package/assets/ts/components/content/content.component.ts +78 -78
  633. package/assets/ts/components/darkmode/darkmode.component.ts +108 -108
  634. package/assets/ts/components/fileupload/fileupload.component.ts +74 -74
  635. package/assets/ts/components/filter-card/filter-card.component.ts +106 -106
  636. package/assets/ts/components/form/form.component.ts +102 -102
  637. package/assets/ts/components/header/header.component.ts +97 -97
  638. package/assets/ts/components/inline-edit/inline-edit.component.ts +212 -212
  639. package/assets/ts/components/input/input.component.ts +278 -278
  640. package/assets/ts/components/input-range/input-range.component.ts +78 -78
  641. package/assets/ts/components/marketing/marketing.component.ts +44 -44
  642. package/assets/ts/components/menu/menu.component.ts +212 -212
  643. package/assets/ts/components/modal/modal.component.ts +184 -184
  644. package/assets/ts/components/multi-step-modal/multi-step-modal.component.ts +304 -304
  645. package/assets/ts/components/multiselect/multiselect.component.ts +349 -349
  646. package/assets/ts/components/nav/nav.component.ts +369 -369
  647. package/assets/ts/components/notification/notification.component.ts +172 -172
  648. package/assets/ts/components/pagination/pagination.component.ts +213 -213
  649. package/assets/ts/components/password/password.component.ts +118 -118
  650. package/assets/ts/components/popover/popover.component.ts +50 -50
  651. package/assets/ts/components/rank/rank.component.ts +394 -394
  652. package/assets/ts/components/rankings/rankings.component.ts +79 -79
  653. package/assets/ts/components/rating/rating.component.ts +86 -86
  654. package/assets/ts/components/search/search.component.ts +244 -244
  655. package/assets/ts/components/slider/slider.component.ts +170 -170
  656. package/assets/ts/components/split-button/split-button.component.ts +63 -63
  657. package/assets/ts/components/std-address-lookup/std-address-lookup.component.ts +1919 -1919
  658. package/assets/ts/components/table/table.component.ts +94 -94
  659. package/assets/ts/components/table-ajax/table-ajax.component.ts +70 -70
  660. package/assets/ts/components/table-basic/table-basic.component.ts +56 -56
  661. package/assets/ts/components/table-no-submit/table-no-submit.component.ts +130 -130
  662. package/assets/ts/components/table-submit/table-submit.component.ts +71 -71
  663. package/assets/ts/components/tabs/tabs.component.ts +70 -51
  664. package/assets/ts/components/tag/tag.component.ts +104 -104
  665. package/assets/ts/components/tooltip/tooltip.component.ts +98 -98
  666. package/assets/ts/components/video/video.component.ts +74 -0
  667. package/assets/ts/components/video-card/video-card.component.ts +129 -150
  668. package/assets/ts/components/video-modal/video-modal.component.ts +88 -137
  669. package/assets/ts/modules/advanced-select.ts +186 -186
  670. package/assets/ts/modules/applied-filters.ts +238 -238
  671. package/assets/ts/modules/card.module.ts +46 -46
  672. package/assets/ts/modules/chart.module.ts +594 -594
  673. package/assets/ts/modules/data-layer.md +71 -71
  674. package/assets/ts/modules/dialogs.ts +259 -259
  675. package/assets/ts/modules/dropdown.ts +216 -216
  676. package/assets/ts/modules/helper.test.ts +143 -143
  677. package/assets/ts/modules/helpers.ts +212 -212
  678. package/assets/ts/modules/integration-tests.ts +525 -525
  679. package/assets/ts/modules/modal.ts +45 -43
  680. package/assets/ts/modules/password.ts +82 -82
  681. package/assets/ts/modules/table.ts +1500 -1500
  682. package/assets/ts/modules/test.ts +22 -22
  683. package/assets/ts/modules/videos.ts +233 -176
  684. package/assets/ts/scripts.ts +111 -111
  685. package/dist/components.es.js +25 -25
  686. package/dist/components.umd.js +143 -113
  687. package/package.json +115 -116
  688. package/src/components/AdvancedSelect/AdvancedSelect.vue +28 -28
  689. package/src/components/Config/Config.vue +23 -23
  690. package/src/components/DarkMode/DarkMode.vue +19 -19
  691. package/src/components/Filterlist/Filterlist.vue +23 -23
  692. package/src/components/Form/Form.vue +22 -22
  693. package/src/components/Header/Header.vue +36 -36
  694. package/src/components/Input/Input.vue +22 -22
  695. package/src/components/InputRange/InputRange.vue +22 -22
  696. package/src/components/Modal/Modal.vue +22 -22
  697. package/src/components/MultiStepModal/MultiStepModal.vue +23 -23
  698. package/src/components/NoteFeed/NoteFeed.vue +82 -82
  699. package/src/components/Password/Password.vue +23 -23
  700. package/src/components/Popover/Popover.vue +22 -22
  701. package/src/components/PropertySearchbar/PropertySearchbar.vue +235 -235
  702. package/src/components/PropertySearchbar/README.md +25 -25
  703. package/src/components/Rating/Rating.vue +22 -22
  704. package/src/components/STDAddressLookup/STDAddressLookup.vue +22 -22
  705. package/src/components/Snapshot/Snapshot.vue +30 -30
  706. package/src/components/Tag/Tag.vue +22 -22
  707. package/src/components/Tooltip/Tooltip.vue +22 -22
  708. package/src/components/Video/Video.vue +22 -0
  709. package/src/components/VideoModal/VideoModal.vue +22 -22
  710. package/assets/sass/utilities/gap.scss +0 -8
  711. package/assets/sass/utilities/order.scss +0 -43
  712. package/assets/sass/utilities/position.scss +0 -52
@@ -1,699 +1,699 @@
1
- import Cookies from '../../../../node_modules/js-cookie/dist/js.cookie.mjs';
2
- import { trackComponent, trackComponentRegistered } from '../_global';
3
-
4
- trackComponentRegistered('iam-config');
5
-
6
- class iamConfig extends HTMLElement {
7
- constructor() {
8
- super();
9
- this.attachShadow({ mode: 'open' });
10
-
11
- const assetLocation = document.body.hasAttribute('data-assets-location')
12
- ? document.body.getAttribute('data-assets-location')
13
- : '/assets';
14
-
15
- const loadCSS = `@import "${assetLocation}/css/components/config.component.css";`;
16
-
17
- const template = document.createElement('template');
18
-
19
- template.innerHTML = /* HTML */ `
20
- <style>
21
- ${loadCSS}
22
- </style>
23
- <div id="wrapper">
24
- <div id="items">
25
- <div id="buckets"></div>
26
- <div id="any" data-bucket="any"></div>
27
- </div>
28
- <div class="admin-panel">
29
- <button class="btn btn-action fa-plus" command="add-bucket">Add bucket</button>
30
- <button class="btn btn-action fa-plus" command="add-item">Add ${this.getAttribute('data-item-name')??'item'}</button> <!-- Changes to open a model if we want to validate the add form first -->
31
-
32
- </div>
33
- <button id="save" class="btn btn-sm btn-primary fa-floppy-disk" >Save items</button>
34
- </div>
35
- `;
36
- this.shadowRoot?.appendChild(template.content.cloneNode(true));
37
- }
38
-
39
- async importData(ajaxURL): void {
40
-
41
- // Setup controller vars if not already set
42
- if (!window.controller) window.controller = [];
43
-
44
- // Abort if controller already present for this url
45
- if (window.controller[ajaxURL]) window.controller[ajaxURL].abort();
46
-
47
- // Create a new controller so it can be aborted if new fetch made
48
- window.controller[ajaxURL] = new AbortController();
49
- const { signal } = window.controller[ajaxURL];
50
-
51
- try {
52
- return await fetch(ajaxURL, {
53
- signal: signal,
54
- method: 'get',
55
- credentials: 'same-origin',
56
- headers: new Headers({
57
- 'Content-Type': 'application/json',
58
- Accept: 'application/json',
59
- 'X-Requested-With': 'XMLHttpRequest',
60
- 'X-XSRF-TOKEN': Cookies.get('XSRF-TOKEN'),
61
- }),
62
- })
63
- .then((response) => response.json())
64
- .then((response) => {
65
-
66
- const returnData = response['data'] ? response['data'] : response;
67
-
68
- return returnData;
69
- });
70
- } catch (error) {
71
- //console.log(error);
72
- return 'There has been a problem. Please try again in a few moments.';
73
- }
74
-
75
- }
76
-
77
- getBucketsData = (data): void => {
78
-
79
- if(!data)
80
- return [];
81
-
82
- const buckets = [];
83
- // TODO: check local storage first
84
- data.forEach(bucket => {
85
-
86
- if(typeof bucket.attributes?.criteria == "object" && Array.isArray(bucket.attributes?.criteria)){
87
-
88
- buckets.push(bucket);
89
- }
90
- });
91
-
92
- return buckets;
93
- }
94
-
95
- createBuckets = (buckets): void => {
96
-
97
- console.log(buckets);
98
-
99
- const bucketsContainer = this.shadowRoot.querySelector('#buckets'); // TODO: rename
100
-
101
- if(!buckets)
102
- return false;
103
-
104
- buckets.forEach((bucket) => {
105
-
106
- this.createBucket(bucket);
107
-
108
- });
109
-
110
- return true;
111
- }
112
-
113
- createBucket = (bucket): void => {
114
-
115
-
116
- const bucketsContainer = this.shadowRoot.querySelector('#buckets'); // TODO: rename
117
-
118
- const bucketElement = document.createElement('div');
119
- bucketElement.innerHTML = this.addBucketHTML(bucket);
120
- //bucketElement.setAttribute('data-bucket',bucket.id);
121
- bucketElement.classList.add('bucket__wrapper');
122
-
123
- bucketsContainer?.insertAdjacentElement('beforeend', bucketElement);
124
-
125
- //this.addButtonEvents(bucketElement,true);
126
- this.createEditBucketsEvents(bucketElement);
127
-
128
-
129
- const criteriaContainer = bucketElement.querySelector('.criteria--container');
130
-
131
- if(bucket.attributes){
132
- bucket.attributes.criteria.forEach((criteria) => {
133
- const criteriaForm = document.createElement('form');
134
- criteriaForm.classList.add('criteria');
135
-
136
- criteriaForm.innerHTML = this.addCriteriaHTML(criteria.attributes);
137
-
138
- // TODO add to HTML
139
- criteriaForm.querySelector('[name="attribute"]')?.value = criteria.attributes.attribute;
140
- criteriaForm.querySelector('[name="rule"]')?.value = criteria.attributes.rule;
141
- criteriaForm.querySelector('[name="match"]')?.value = criteria.attributes.match;
142
-
143
- criteriaContainer?.appendChild(criteriaForm);
144
-
145
- // TODO add buttons
146
- // TODO add events
147
- });
148
- this.createForms(bucket.attributes.items, bucket.id);
149
- }
150
-
151
-
152
- return bucketElement;
153
- }
154
-
155
- addCriteriaHTML = (attributes): void => {
156
- return /*HTML*/ `<label>
157
- <span class="visually-hidden">Attribute</span>
158
- ${this.createCriteriaDropdown(attributes.attribute)}
159
- </label>
160
- <label>
161
- <span class="visually-hidden">Rule</span>
162
- <select name="rule" class="mt-0 select--sm">
163
- <option value="set">is not empty</option>
164
- <option value="empty">is empty</option>
165
- <option value="equals">equals</option>
166
- <option value="not">is not</option>
167
- <option value="greater">greater than</option>
168
- <option value="less">less than</option>
169
- </select>
170
- </label>
171
- <label>
172
- <span class="visually-hidden">Match</span>
173
- <input type="text" name="match" class="mt-0 input--sm" /> <!-- TODO Add datalist or transform into select -->
174
- </label>
175
- <div class="btn__group">
176
- <button class="btn btn-compact btn-sm mt-0 btn-secondary fa-plus" type="button" data-direction="add" title="Delete">Add</button>
177
- <button class="btn btn-compact btn-sm mt-0 btn-secondary fa-trash" type="button" data-direction="delete" title="Delete">Delete</button>
178
- </div>`;
179
- }
180
-
181
- addBucketHTML = (bucket):void => {
182
-
183
- return /*HTML*/ `<label>
184
- <span class="visually-hidden">Name</span>
185
- <input type="text" name="bucket" value="${bucket.attributes?.name ?? ''}"/>
186
- </label>
187
- <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>
188
- <div class="criteria--container">
189
- </div>
190
- <div data-bucket="${bucket.id ?? ''}" class="bucket">
191
- </div>`;
192
- }
193
-
194
- createCriteriaDropdown = (attribute):void => {
195
-
196
- const form = this.querySelector('form');
197
-
198
- const formData = new FormData(form);
199
- const formDataObj = Object.fromEntries(formData.entries());
200
-
201
- let optionsHtml = '';
202
- Object.keys(formDataObj).forEach(function(key){
203
- optionsHtml += `<option value="${key}" ${key == attribute ? ' selected="selected"' : ''}>${key}</option>`;
204
- });
205
-
206
- return `<select name="attributes[criteria]" class="mt-0 select--sm">
207
- <option value=""></option>
208
- ${optionsHtml}
209
- </select>`;
210
- }
211
-
212
- createEditBucketsEvents = (bucket):Void => {
213
- this.addButtonEvents(bucket,true);
214
- const expandButton = bucket?.querySelector('[data-expand]');
215
-
216
- expandButton?.addEventListener('click',() => {
217
-
218
- bucket.classList.toggle('bucket--expanded');
219
- });
220
- }
221
-
222
- async importAttributeData(comonponent): void {
223
-
224
- }
225
-
226
- createForms = (data, bucketId = "any"):void => {
227
-
228
- data.forEach(item => {
229
-
230
- if(typeof item.attributes?.criteria == "undefined"){
231
-
232
- const formElement = this.createForm(item, bucketId);
233
-
234
- Object.keys(item.attributes).forEach(function(key){
235
-
236
- if(formElement.querySelector(`[name="${key}"]`)){
237
-
238
- const element = formElement.querySelector(`[name="${key}"]`);
239
-
240
- if(element.matches('select[data-import]') && !element.querySelector(`option[value="${item.attributes[key]}"]`)){
241
- const optionElement = document.createElement('option');
242
- optionElement.value = item.attributes[key];
243
- optionElement.innerHTML = item.attributes[key];
244
- element.appendChild(optionElement);
245
- }
246
- element.value = item.attributes[key];
247
- }
248
- });
249
- }
250
- });
251
- }
252
-
253
- checkCriteria = (attributes, bucket):void => {
254
-
255
- if(attributes[bucket])
256
- return true;
257
-
258
- return false;
259
- }
260
-
261
- checkBuckets = (attributes):any => {
262
-
263
- const anyContainer = this.shadowRoot.querySelector('#any'); // TODO: rename
264
- let container = anyContainer;
265
-
266
- if(!this.hasAttribute('data-buckets'))
267
- return container;
268
-
269
-
270
- let buckets = [];
271
- let addedToBucket = false;
272
-
273
- // If data attribute set
274
- buckets = this.getAttribute('data-buckets').split(',');
275
-
276
- // TODO: If importing the config from a json file
277
-
278
- buckets.forEach((bucket)=>{
279
-
280
- const addToBucket = !addedToBucket ? this.checkCriteria(attributes, bucket) : false;
281
-
282
- if(addToBucket){
283
- addedToBucket = true;
284
- container = this.shadowRoot.querySelector(`[data-bucket="${bucket}"]`);
285
- }
286
- });
287
-
288
- return container;
289
- }
290
-
291
- createForm = (item, bucketId = "any"):void => {
292
-
293
- const anyContainer = this.shadowRoot.querySelector(`#items [data-bucket="${bucketId}"]`); // TODO: rename
294
- //const bucketsContainer = this.shadowRoot.querySelector('#buckets'); // TODO: rename
295
- //const container = this.checkBuckets(item.attributes); TODO: re-enable
296
- const container = anyContainer;
297
-
298
- const formElement = this.querySelector(`form`)?.cloneNode(true);
299
- //formTemplate.setAttribute('id', item.id);
300
-
301
- // TODO check if it matches a bucket
302
- container?.insertAdjacentElement('beforeend',formElement);
303
- //const formElement = container?.querySelector(`[id="${item.id}"]`);
304
- formElement?.addEventListener('submit', (event) => {
305
-
306
- event.preventDefault();
307
- });
308
-
309
- this.addButtons(formElement);
310
-
311
-
312
- return formElement;
313
- }
314
-
315
- getCurrentIds = ():void => {
316
-
317
- const idsArr = [];
318
-
319
- Array.from(this.shadowRoot?.querySelectorAll('#items form')).forEach((form) => {
320
- idsArr.push(parseInt(form.getAttribute('id')));
321
- });
322
-
323
- return idsArr;
324
- }
325
-
326
- generateId = ():any => {
327
-
328
- return Math.max(...this.getCurrentIds()) + 1;
329
- }
330
-
331
- addButtonEvents = (element, scrollIntoView:boolean = true):void => {
332
-
333
- const upButton = element?.querySelector('[data-direction="up"]');
334
- const downButton = element?.querySelector('[data-direction="down"]');
335
- const deleteButton = element?.querySelector('[data-direction="delete"]');
336
-
337
- upButton?.addEventListener('click',() => {
338
-
339
- if(element?.previousElementSibling){
340
- element?.parentNode.insertBefore(element, element.previousElementSibling);
341
-
342
- if(scrollIntoView)
343
- element?.scrollIntoView({ behavior: "instant", block: "center" });
344
- }
345
- });
346
-
347
- downButton?.addEventListener('click',() => {
348
-
349
- if(element.nextElementSibling){
350
- element?.parentNode.insertBefore(element, element.nextElementSibling.nextElementSibling);
351
- }
352
- else {
353
- element?.parentNode.insertAdjacentElement('beforeend',element);
354
- }
355
-
356
- if(scrollIntoView)
357
- element?.scrollIntoView({ behavior: "instant", block: "center" });
358
- });
359
-
360
- deleteButton?.addEventListener('click',() => {
361
-
362
- element.remove();
363
- });
364
- }
365
-
366
- addButtons = (form):void => {
367
-
368
- form?.insertAdjacentHTML('beforeend',`<div class="btn__group">${this.buttonHTML}</div>`);
369
-
370
- this.addButtonEvents(form);
371
- }
372
-
373
- async connectedCallback(): void {
374
- this.buttonHTML = /* HTML */`
375
- <button class="btn btn-compact btn-sm mt-0 btn-secondary fa-trash" type="button" data-direction="delete" title="Delete">Delete</button>
376
- <button class="btn btn-compact btn-sm mt-0 btn-secondary fa-chevron-down" type="button" data-direction="down" title="Move down">Down</button>
377
- <button class="btn btn-compact btn-sm mt-0 btn-secondary fa-chevron-up" type="button" data-direction="up" title="Move up">Up</button>
378
- `;
379
-
380
- const dataImportUrl = this.getAttribute('data-import');
381
- const getBucketsData = this.getBucketsData;
382
- const createBuckets = this.createBuckets;
383
-
384
-
385
- const createForms = this.createForms;
386
- const createForm = this.createForm;
387
- const itemsContainer = this.shadowRoot.querySelector('#items'); // TODO: rename
388
- const anyContainer = this.shadowRoot.querySelector('#any'); // TODO: rename
389
- const bucketsContainer = this.shadowRoot.querySelector('#buckets'); // TODO: rename
390
-
391
- const editBuckets = this.shadowRoot.querySelector('#editBuckets'); // TODO: rename
392
-
393
- const saveButton = this.shadowRoot.querySelector('#save');
394
- const addButton = this.shadowRoot?.querySelector('[data-add-item]')
395
- const addForm = this.shadowRoot?.querySelector('#addForm');
396
-
397
- const editBucketsDialog = this.shadowRoot?.querySelector('#editBucketsDialog');
398
- const editBucketsForm = this.shadowRoot?.querySelector('#editBucketsForm');
399
- const editBucketsFormSubmit = this.shadowRoot?.querySelector('#editBucketsForm .btn-primary');
400
- const addBucketButton = this?.shadowRoot.querySelector('[command="add-bucket"]');
401
- const addItemButton = this?.shadowRoot.querySelector('[command="add-item"]');
402
-
403
-
404
- const templateForm = this?.querySelector('form');
405
-
406
- let editBucketsOriginalState = '';
407
-
408
- let buckets = [];
409
-
410
- // Prevent the template form from submitting anything
411
- templateForm?.addEventListener('submit', (event) => {
412
-
413
- event.preventDefault();
414
- });
415
-
416
-
417
- // TODO: add this to an on change event on the select
418
- Array.from(this.querySelectorAll('select[data-import]')).forEach(async(select) =>{
419
-
420
-
421
- const ajaxURL = select.getAttribute('data-import');
422
-
423
- this.importData(ajaxURL).then(
424
- (data) => {
425
- if(typeof data == 'string')
426
- return data;
427
-
428
- data.forEach(item =>{
429
-
430
- const optionElement = document.createElement('option');
431
- optionElement.value = item.id;
432
- optionElement.innerHTML = item.attributes.name;
433
- select.appendChild(optionElement);
434
- });
435
-
436
- return true;
437
- }
438
- );
439
- });
440
-
441
-
442
-
443
-
444
- // #region import data
445
- // TODO load from web storage if its newer
446
-
447
- const storedData = localStorage.getItem(`config-${this.getAttribute('data-name')}`);
448
- //const buckets = this.getBucketsData(); // TODO: load from local storage
449
-
450
- if(storedData){
451
-
452
- //createForms(JSON.parse(storedData), buckets);
453
- }
454
- else if(dataImportUrl){
455
-
456
- const dataImport = await this.importData(dataImportUrl).then(
457
- (data) => {
458
- if(typeof data == 'string')
459
- return data;
460
-
461
- const buckets = getBucketsData(data);
462
-
463
- if(buckets){
464
-
465
- createBuckets(buckets);
466
- }
467
- createForms(data); // any bucket
468
-
469
- return true;
470
- }
471
- );
472
- }
473
- // #endregion
474
-
475
- // #region Add buckets to edit modal
476
- /*
477
- editBucketsForm?.addEventListener('submit', (event) => {
478
-
479
- event.stopPropagation();
480
- event.preventDefault();
481
-
482
- if(event.submitter == editBucketsFormSubmit){
483
-
484
- // Clear what is there already
485
- //anyContainer?.innerHTML = '';
486
-
487
- Array.from(itemsContainer?.querySelectorAll('form')).forEach((formElement:HTMLElement, index):void => {
488
-
489
- anyContainer?.insertAdjacentElement('beforeend',formElement);
490
- });
491
-
492
- // Empty the buckets
493
- bucketsContainer?.innerHTML = '';
494
-
495
- // Load the new bucket data then recreate them
496
- const buckets = [];
497
- Array.from(editBuckets?.querySelectorAll('[data-bucket]')).forEach((editBucketElement:HTMLElement, index):void => {
498
-
499
- bucketsContainer?.insertAdjacentHTML('beforeend',`<div class="bucket" data-bucket="${editBucketElement.getAttribute('data-bucket')}"></div>`);
500
-
501
- const bucket = {}
502
-
503
- bucket.id = editBucketElement.getAttribute('data-bucket');
504
- bucket.attributes = {};
505
-
506
- bucket.attributes.name = editBucketElement.querySelector('[name="bucket"]')?.value;
507
-
508
- //const formData = new FormData(editBucketElement);
509
- //const formDataObj = Object.fromEntries(formData.entries());
510
- // TODO cycle through the criteria forms
511
-
512
- buckets.push(bucket);
513
- });
514
-
515
-
516
- console.log(buckets);
517
- // this.createBuckets(buckets); TODO: re-enable
518
-
519
- /*
520
- // Move items back into buckets
521
- Array.from(itemsContainer?.querySelectorAll('form')).forEach((formElement:HTMLElement, index):void => {
522
-
523
- const formData = new FormData(formElement);
524
- const formDataObj = Object.fromEntries(formData.entries());
525
- const newContainer = this.checkBuckets(formDataObj);
526
-
527
- if(newContainer != anyContainer){
528
- newContainer?.insertAdjacentElement('beforeend',formElement);
529
- }
530
- });
531
-
532
-
533
- editBucketsOriginalState = editBuckets.innerHTML;
534
- }
535
-
536
- editBucketsDialog?.close();
537
- });
538
- */
539
- /*
540
-
541
- addBucketButton?.addEventListener('click', (event) => {
542
-
543
- const editBucket = document.createElement('div');
544
- editBucket.classList.add('bucket--edit');
545
- editBucket.innerHTML = this.addBucketHTML();
546
-
547
- editBuckets?.insertAdjacentElement('beforeend', editBucket)
548
-
549
- this.addButtonEvents(editBucket,false);
550
- const expandButton = editBucket?.querySelector('[data-expand]');
551
-
552
- expandButton?.addEventListener('click',() => {
553
-
554
- editBucket.classList.toggle('bucket--expanded');
555
- });
556
- });
557
-
558
- */
559
-
560
-
561
-
562
- // #endregion
563
-
564
- // #region add data
565
-
566
- addItemButton?.addEventListener("click", (event) => {
567
-
568
- const form = this.createForm({});
569
- form?.scrollIntoView({ behavior: "instant", block: "center" });
570
- // TODO scroll into view
571
- });
572
-
573
- addBucketButton?.addEventListener("click", (event) => {
574
-
575
- const bucket = this.createBucket({});
576
- bucket?.scrollIntoView({ behavior: "instant", block: "center" });
577
- });
578
-
579
- // #endregion
580
-
581
-
582
- // #region update values
583
-
584
- this.shadowRoot.addEventListener('change', (event) => {
585
-
586
- const container = event.target.closest('[data-bucket]');
587
-
588
- if(!container)
589
- return false;
590
-
591
- const attribute = event.target.name;
592
- const value = event.target.value;
593
- const attributes = {};
594
- attributes[attribute] = value;
595
- const newContainer = this.checkBuckets(attributes);
596
-
597
- if(newContainer != container){
598
- const form = event.target.closest(`form`);
599
- // TODO a confirmation modal
600
- newContainer?.insertAdjacentElement('beforeend',form);
601
-
602
-
603
- form?.scrollIntoView({ behavior: "instant", block: "center" });
604
- }
605
-
606
- });
607
- // #endregion
608
-
609
- // #region save data
610
- saveButton?.addEventListener('click', (event) => {
611
-
612
- event.preventDefault();
613
-
614
- // TODO validation
615
-
616
- const entries = [];
617
-
618
- // Save buckets data
619
- Array.from(itemsContainer?.querySelectorAll('.bucket__wrapper')).forEach((bucketElement:HTMLElement, index):void => {
620
-
621
- const bucket = {};
622
- bucket.attributes = {};
623
- bucket.id = bucketElement?.querySelector('[name="bucket"]').value;
624
- bucket.type = 'bucket';
625
- bucket.attributes.index = index;
626
-
627
-
628
- const criteria = [];
629
- // TODO populate criteria
630
- Array.from(bucketElement?.querySelectorAll('.criteria--container form')).forEach((formElement:HTMLElement, criteriaIndex):void => {
631
-
632
- const item = {};
633
- //item.id = formElement.getAttribute('id');
634
- item.type = 'criteria';
635
- item.index = criteriaIndex;
636
- const formData = new FormData(formElement);
637
- const formDataObj = Object.fromEntries(formData.entries());
638
-
639
- item.attributes = formDataObj;
640
-
641
- criteria.push(item);
642
- });
643
- bucket.attributes.criteria = criteria;
644
-
645
- const items = [];
646
- Array.from(bucketElement?.querySelectorAll('[data-bucket] form')).forEach((formElement:HTMLElement, itemIndex):void => {
647
-
648
- const item = {};
649
- //item.id = formElement.getAttribute('id');
650
- item.type = 'item';
651
- item.index = itemIndex;
652
- const formData = new FormData(formElement);
653
- const formDataObj = Object.fromEntries(formData.entries());
654
-
655
- item.attributes = formDataObj;
656
-
657
- items.push(item);
658
- });
659
- bucket.attributes.items = items;
660
-
661
- entries.push(bucket);
662
- });
663
-
664
-
665
- Array.from(itemsContainer?.querySelectorAll('[data-bucket="any"] form')).forEach((formElement:HTMLElement, index):void => {
666
-
667
- const entry = {};
668
- //entry.id = formElement.getAttribute('id');
669
- entry.type = 'item';
670
- entry.index = index;
671
- const formData = new FormData(formElement);
672
- const formDataObj = Object.fromEntries(formData.entries());
673
-
674
- entry.attributes = formDataObj;
675
-
676
- entries.push(entry);
677
- });
678
-
679
- const entriesJson = JSON.stringify(entries);
680
-
681
- console.log(entries);
682
-
683
- // TODO add toast message
684
- // TODO save locally for now but when pushing to endpoint the web storage file should get deleted
685
-
686
- //localStorage.setItem(`config-${this.getAttribute('data-name')}`, entriesJson);
687
-
688
-
689
-
690
- //const bucketsJson = JSON.stringify(buckets);
691
-
692
- //localStorage.setItem(`config-buckets-${this.getAttribute('data-name')}`, bucketsJson);
693
-
694
- });
695
- // #endregion
696
- }
697
- }
698
-
699
- export default iamConfig;
1
+ import Cookies from '../../../../node_modules/js-cookie/dist/js.cookie.mjs';
2
+ import { trackComponent, trackComponentRegistered } from '../_global';
3
+
4
+ trackComponentRegistered('iam-config');
5
+
6
+ class iamConfig extends HTMLElement {
7
+ constructor() {
8
+ super();
9
+ this.attachShadow({ mode: 'open' });
10
+
11
+ const assetLocation = document.body.hasAttribute('data-assets-location')
12
+ ? document.body.getAttribute('data-assets-location')
13
+ : '/assets';
14
+
15
+ const loadCSS = `@import "${assetLocation}/css/components/config.component.css";`;
16
+
17
+ const template = document.createElement('template');
18
+
19
+ template.innerHTML = /* HTML */ `
20
+ <style>
21
+ ${loadCSS}
22
+ </style>
23
+ <div id="wrapper">
24
+ <div id="items">
25
+ <div id="buckets"></div>
26
+ <div id="any" data-bucket="any"></div>
27
+ </div>
28
+ <div class="admin-panel">
29
+ <button class="btn btn-action fa-plus" command="add-bucket">Add bucket</button>
30
+ <button class="btn btn-action fa-plus" command="add-item">Add ${this.getAttribute('data-item-name')??'item'}</button> <!-- Changes to open a model if we want to validate the add form first -->
31
+
32
+ </div>
33
+ <button id="save" class="btn btn-sm btn-primary fa-floppy-disk" >Save items</button>
34
+ </div>
35
+ `;
36
+ this.shadowRoot?.appendChild(template.content.cloneNode(true));
37
+ }
38
+
39
+ async importData(ajaxURL): void {
40
+
41
+ // Setup controller vars if not already set
42
+ if (!window.controller) window.controller = [];
43
+
44
+ // Abort if controller already present for this url
45
+ if (window.controller[ajaxURL]) window.controller[ajaxURL].abort();
46
+
47
+ // Create a new controller so it can be aborted if new fetch made
48
+ window.controller[ajaxURL] = new AbortController();
49
+ const { signal } = window.controller[ajaxURL];
50
+
51
+ try {
52
+ return await fetch(ajaxURL, {
53
+ signal: signal,
54
+ method: 'get',
55
+ credentials: 'same-origin',
56
+ headers: new Headers({
57
+ 'Content-Type': 'application/json',
58
+ Accept: 'application/json',
59
+ 'X-Requested-With': 'XMLHttpRequest',
60
+ 'X-XSRF-TOKEN': Cookies.get('XSRF-TOKEN'),
61
+ }),
62
+ })
63
+ .then((response) => response.json())
64
+ .then((response) => {
65
+
66
+ const returnData = response['data'] ? response['data'] : response;
67
+
68
+ return returnData;
69
+ });
70
+ } catch (error) {
71
+ //console.log(error);
72
+ return 'There has been a problem. Please try again in a few moments.';
73
+ }
74
+
75
+ }
76
+
77
+ getBucketsData = (data): void => {
78
+
79
+ if(!data)
80
+ return [];
81
+
82
+ const buckets = [];
83
+ // TODO: check local storage first
84
+ data.forEach(bucket => {
85
+
86
+ if(typeof bucket.attributes?.criteria == "object" && Array.isArray(bucket.attributes?.criteria)){
87
+
88
+ buckets.push(bucket);
89
+ }
90
+ });
91
+
92
+ return buckets;
93
+ }
94
+
95
+ createBuckets = (buckets): void => {
96
+
97
+ console.log(buckets);
98
+
99
+ const bucketsContainer = this.shadowRoot.querySelector('#buckets'); // TODO: rename
100
+
101
+ if(!buckets)
102
+ return false;
103
+
104
+ buckets.forEach((bucket) => {
105
+
106
+ this.createBucket(bucket);
107
+
108
+ });
109
+
110
+ return true;
111
+ }
112
+
113
+ createBucket = (bucket): void => {
114
+
115
+
116
+ const bucketsContainer = this.shadowRoot.querySelector('#buckets'); // TODO: rename
117
+
118
+ const bucketElement = document.createElement('div');
119
+ bucketElement.innerHTML = this.addBucketHTML(bucket);
120
+ //bucketElement.setAttribute('data-bucket',bucket.id);
121
+ bucketElement.classList.add('bucket__wrapper');
122
+
123
+ bucketsContainer?.insertAdjacentElement('beforeend', bucketElement);
124
+
125
+ //this.addButtonEvents(bucketElement,true);
126
+ this.createEditBucketsEvents(bucketElement);
127
+
128
+
129
+ const criteriaContainer = bucketElement.querySelector('.criteria--container');
130
+
131
+ if(bucket.attributes){
132
+ bucket.attributes.criteria.forEach((criteria) => {
133
+ const criteriaForm = document.createElement('form');
134
+ criteriaForm.classList.add('criteria');
135
+
136
+ criteriaForm.innerHTML = this.addCriteriaHTML(criteria.attributes);
137
+
138
+ // TODO add to HTML
139
+ criteriaForm.querySelector('[name="attribute"]')?.value = criteria.attributes.attribute;
140
+ criteriaForm.querySelector('[name="rule"]')?.value = criteria.attributes.rule;
141
+ criteriaForm.querySelector('[name="match"]')?.value = criteria.attributes.match;
142
+
143
+ criteriaContainer?.appendChild(criteriaForm);
144
+
145
+ // TODO add buttons
146
+ // TODO add events
147
+ });
148
+ this.createForms(bucket.attributes.items, bucket.id);
149
+ }
150
+
151
+
152
+ return bucketElement;
153
+ }
154
+
155
+ addCriteriaHTML = (attributes): void => {
156
+ return /*HTML*/ `<label>
157
+ <span class="visually-hidden">Attribute</span>
158
+ ${this.createCriteriaDropdown(attributes.attribute)}
159
+ </label>
160
+ <label>
161
+ <span class="visually-hidden">Rule</span>
162
+ <select name="rule" class="mt-0 select--sm">
163
+ <option value="set">is not empty</option>
164
+ <option value="empty">is empty</option>
165
+ <option value="equals">equals</option>
166
+ <option value="not">is not</option>
167
+ <option value="greater">greater than</option>
168
+ <option value="less">less than</option>
169
+ </select>
170
+ </label>
171
+ <label>
172
+ <span class="visually-hidden">Match</span>
173
+ <input type="text" name="match" class="mt-0 input--sm" /> <!-- TODO Add datalist or transform into select -->
174
+ </label>
175
+ <div class="btn__group">
176
+ <button class="btn btn-compact btn-sm mt-0 btn-secondary fa-plus" type="button" data-direction="add" title="Delete">Add</button>
177
+ <button class="btn btn-compact btn-sm mt-0 btn-secondary fa-trash" type="button" data-direction="delete" title="Delete">Delete</button>
178
+ </div>`;
179
+ }
180
+
181
+ addBucketHTML = (bucket):void => {
182
+
183
+ return /*HTML*/ `<label>
184
+ <span class="visually-hidden">Name</span>
185
+ <input type="text" name="bucket" value="${bucket.attributes?.name ?? ''}"/>
186
+ </label>
187
+ <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>
188
+ <div class="criteria--container">
189
+ </div>
190
+ <div data-bucket="${bucket.id ?? ''}" class="bucket">
191
+ </div>`;
192
+ }
193
+
194
+ createCriteriaDropdown = (attribute):void => {
195
+
196
+ const form = this.querySelector('form');
197
+
198
+ const formData = new FormData(form);
199
+ const formDataObj = Object.fromEntries(formData.entries());
200
+
201
+ let optionsHtml = '';
202
+ Object.keys(formDataObj).forEach(function(key){
203
+ optionsHtml += `<option value="${key}" ${key == attribute ? ' selected="selected"' : ''}>${key}</option>`;
204
+ });
205
+
206
+ return `<select name="attributes[criteria]" class="mt-0 select--sm">
207
+ <option value=""></option>
208
+ ${optionsHtml}
209
+ </select>`;
210
+ }
211
+
212
+ createEditBucketsEvents = (bucket):Void => {
213
+ this.addButtonEvents(bucket,true);
214
+ const expandButton = bucket?.querySelector('[data-expand]');
215
+
216
+ expandButton?.addEventListener('click',() => {
217
+
218
+ bucket.classList.toggle('bucket--expanded');
219
+ });
220
+ }
221
+
222
+ async importAttributeData(comonponent): void {
223
+
224
+ }
225
+
226
+ createForms = (data, bucketId = "any"):void => {
227
+
228
+ data.forEach(item => {
229
+
230
+ if(typeof item.attributes?.criteria == "undefined"){
231
+
232
+ const formElement = this.createForm(item, bucketId);
233
+
234
+ Object.keys(item.attributes).forEach(function(key){
235
+
236
+ if(formElement.querySelector(`[name="${key}"]`)){
237
+
238
+ const element = formElement.querySelector(`[name="${key}"]`);
239
+
240
+ if(element.matches('select[data-import]') && !element.querySelector(`option[value="${item.attributes[key]}"]`)){
241
+ const optionElement = document.createElement('option');
242
+ optionElement.value = item.attributes[key];
243
+ optionElement.innerHTML = item.attributes[key];
244
+ element.appendChild(optionElement);
245
+ }
246
+ element.value = item.attributes[key];
247
+ }
248
+ });
249
+ }
250
+ });
251
+ }
252
+
253
+ checkCriteria = (attributes, bucket):void => {
254
+
255
+ if(attributes[bucket])
256
+ return true;
257
+
258
+ return false;
259
+ }
260
+
261
+ checkBuckets = (attributes):any => {
262
+
263
+ const anyContainer = this.shadowRoot.querySelector('#any'); // TODO: rename
264
+ let container = anyContainer;
265
+
266
+ if(!this.hasAttribute('data-buckets'))
267
+ return container;
268
+
269
+
270
+ let buckets = [];
271
+ let addedToBucket = false;
272
+
273
+ // If data attribute set
274
+ buckets = this.getAttribute('data-buckets').split(',');
275
+
276
+ // TODO: If importing the config from a json file
277
+
278
+ buckets.forEach((bucket)=>{
279
+
280
+ const addToBucket = !addedToBucket ? this.checkCriteria(attributes, bucket) : false;
281
+
282
+ if(addToBucket){
283
+ addedToBucket = true;
284
+ container = this.shadowRoot.querySelector(`[data-bucket="${bucket}"]`);
285
+ }
286
+ });
287
+
288
+ return container;
289
+ }
290
+
291
+ createForm = (item, bucketId = "any"):void => {
292
+
293
+ const anyContainer = this.shadowRoot.querySelector(`#items [data-bucket="${bucketId}"]`); // TODO: rename
294
+ //const bucketsContainer = this.shadowRoot.querySelector('#buckets'); // TODO: rename
295
+ //const container = this.checkBuckets(item.attributes); TODO: re-enable
296
+ const container = anyContainer;
297
+
298
+ const formElement = this.querySelector(`form`)?.cloneNode(true);
299
+ //formTemplate.setAttribute('id', item.id);
300
+
301
+ // TODO check if it matches a bucket
302
+ container?.insertAdjacentElement('beforeend',formElement);
303
+ //const formElement = container?.querySelector(`[id="${item.id}"]`);
304
+ formElement?.addEventListener('submit', (event) => {
305
+
306
+ event.preventDefault();
307
+ });
308
+
309
+ this.addButtons(formElement);
310
+
311
+
312
+ return formElement;
313
+ }
314
+
315
+ getCurrentIds = ():void => {
316
+
317
+ const idsArr = [];
318
+
319
+ Array.from(this.shadowRoot?.querySelectorAll('#items form')).forEach((form) => {
320
+ idsArr.push(parseInt(form.getAttribute('id')));
321
+ });
322
+
323
+ return idsArr;
324
+ }
325
+
326
+ generateId = ():any => {
327
+
328
+ return Math.max(...this.getCurrentIds()) + 1;
329
+ }
330
+
331
+ addButtonEvents = (element, scrollIntoView:boolean = true):void => {
332
+
333
+ const upButton = element?.querySelector('[data-direction="up"]');
334
+ const downButton = element?.querySelector('[data-direction="down"]');
335
+ const deleteButton = element?.querySelector('[data-direction="delete"]');
336
+
337
+ upButton?.addEventListener('click',() => {
338
+
339
+ if(element?.previousElementSibling){
340
+ element?.parentNode.insertBefore(element, element.previousElementSibling);
341
+
342
+ if(scrollIntoView)
343
+ element?.scrollIntoView({ behavior: "instant", block: "center" });
344
+ }
345
+ });
346
+
347
+ downButton?.addEventListener('click',() => {
348
+
349
+ if(element.nextElementSibling){
350
+ element?.parentNode.insertBefore(element, element.nextElementSibling.nextElementSibling);
351
+ }
352
+ else {
353
+ element?.parentNode.insertAdjacentElement('beforeend',element);
354
+ }
355
+
356
+ if(scrollIntoView)
357
+ element?.scrollIntoView({ behavior: "instant", block: "center" });
358
+ });
359
+
360
+ deleteButton?.addEventListener('click',() => {
361
+
362
+ element.remove();
363
+ });
364
+ }
365
+
366
+ addButtons = (form):void => {
367
+
368
+ form?.insertAdjacentHTML('beforeend',`<div class="btn__group">${this.buttonHTML}</div>`);
369
+
370
+ this.addButtonEvents(form);
371
+ }
372
+
373
+ async connectedCallback(): void {
374
+ this.buttonHTML = /* HTML */`
375
+ <button class="btn btn-compact btn-sm mt-0 btn-secondary fa-trash" type="button" data-direction="delete" title="Delete">Delete</button>
376
+ <button class="btn btn-compact btn-sm mt-0 btn-secondary fa-chevron-down" type="button" data-direction="down" title="Move down">Down</button>
377
+ <button class="btn btn-compact btn-sm mt-0 btn-secondary fa-chevron-up" type="button" data-direction="up" title="Move up">Up</button>
378
+ `;
379
+
380
+ const dataImportUrl = this.getAttribute('data-import');
381
+ const getBucketsData = this.getBucketsData;
382
+ const createBuckets = this.createBuckets;
383
+
384
+
385
+ const createForms = this.createForms;
386
+ const createForm = this.createForm;
387
+ const itemsContainer = this.shadowRoot.querySelector('#items'); // TODO: rename
388
+ const anyContainer = this.shadowRoot.querySelector('#any'); // TODO: rename
389
+ const bucketsContainer = this.shadowRoot.querySelector('#buckets'); // TODO: rename
390
+
391
+ const editBuckets = this.shadowRoot.querySelector('#editBuckets'); // TODO: rename
392
+
393
+ const saveButton = this.shadowRoot.querySelector('#save');
394
+ const addButton = this.shadowRoot?.querySelector('[data-add-item]')
395
+ const addForm = this.shadowRoot?.querySelector('#addForm');
396
+
397
+ const editBucketsDialog = this.shadowRoot?.querySelector('#editBucketsDialog');
398
+ const editBucketsForm = this.shadowRoot?.querySelector('#editBucketsForm');
399
+ const editBucketsFormSubmit = this.shadowRoot?.querySelector('#editBucketsForm .btn-primary');
400
+ const addBucketButton = this?.shadowRoot.querySelector('[command="add-bucket"]');
401
+ const addItemButton = this?.shadowRoot.querySelector('[command="add-item"]');
402
+
403
+
404
+ const templateForm = this?.querySelector('form');
405
+
406
+ let editBucketsOriginalState = '';
407
+
408
+ let buckets = [];
409
+
410
+ // Prevent the template form from submitting anything
411
+ templateForm?.addEventListener('submit', (event) => {
412
+
413
+ event.preventDefault();
414
+ });
415
+
416
+
417
+ // TODO: add this to an on change event on the select
418
+ Array.from(this.querySelectorAll('select[data-import]')).forEach(async(select) =>{
419
+
420
+
421
+ const ajaxURL = select.getAttribute('data-import');
422
+
423
+ this.importData(ajaxURL).then(
424
+ (data) => {
425
+ if(typeof data == 'string')
426
+ return data;
427
+
428
+ data.forEach(item =>{
429
+
430
+ const optionElement = document.createElement('option');
431
+ optionElement.value = item.id;
432
+ optionElement.innerHTML = item.attributes.name;
433
+ select.appendChild(optionElement);
434
+ });
435
+
436
+ return true;
437
+ }
438
+ );
439
+ });
440
+
441
+
442
+
443
+
444
+ // #region import data
445
+ // TODO load from web storage if its newer
446
+
447
+ const storedData = localStorage.getItem(`config-${this.getAttribute('data-name')}`);
448
+ //const buckets = this.getBucketsData(); // TODO: load from local storage
449
+
450
+ if(storedData){
451
+
452
+ //createForms(JSON.parse(storedData), buckets);
453
+ }
454
+ else if(dataImportUrl){
455
+
456
+ const dataImport = await this.importData(dataImportUrl).then(
457
+ (data) => {
458
+ if(typeof data == 'string')
459
+ return data;
460
+
461
+ const buckets = getBucketsData(data);
462
+
463
+ if(buckets){
464
+
465
+ createBuckets(buckets);
466
+ }
467
+ createForms(data); // any bucket
468
+
469
+ return true;
470
+ }
471
+ );
472
+ }
473
+ // #endregion
474
+
475
+ // #region Add buckets to edit modal
476
+ /*
477
+ editBucketsForm?.addEventListener('submit', (event) => {
478
+
479
+ event.stopPropagation();
480
+ event.preventDefault();
481
+
482
+ if(event.submitter == editBucketsFormSubmit){
483
+
484
+ // Clear what is there already
485
+ //anyContainer?.innerHTML = '';
486
+
487
+ Array.from(itemsContainer?.querySelectorAll('form')).forEach((formElement:HTMLElement, index):void => {
488
+
489
+ anyContainer?.insertAdjacentElement('beforeend',formElement);
490
+ });
491
+
492
+ // Empty the buckets
493
+ bucketsContainer?.innerHTML = '';
494
+
495
+ // Load the new bucket data then recreate them
496
+ const buckets = [];
497
+ Array.from(editBuckets?.querySelectorAll('[data-bucket]')).forEach((editBucketElement:HTMLElement, index):void => {
498
+
499
+ bucketsContainer?.insertAdjacentHTML('beforeend',`<div class="bucket" data-bucket="${editBucketElement.getAttribute('data-bucket')}"></div>`);
500
+
501
+ const bucket = {}
502
+
503
+ bucket.id = editBucketElement.getAttribute('data-bucket');
504
+ bucket.attributes = {};
505
+
506
+ bucket.attributes.name = editBucketElement.querySelector('[name="bucket"]')?.value;
507
+
508
+ //const formData = new FormData(editBucketElement);
509
+ //const formDataObj = Object.fromEntries(formData.entries());
510
+ // TODO cycle through the criteria forms
511
+
512
+ buckets.push(bucket);
513
+ });
514
+
515
+
516
+ console.log(buckets);
517
+ // this.createBuckets(buckets); TODO: re-enable
518
+
519
+ /*
520
+ // Move items back into buckets
521
+ Array.from(itemsContainer?.querySelectorAll('form')).forEach((formElement:HTMLElement, index):void => {
522
+
523
+ const formData = new FormData(formElement);
524
+ const formDataObj = Object.fromEntries(formData.entries());
525
+ const newContainer = this.checkBuckets(formDataObj);
526
+
527
+ if(newContainer != anyContainer){
528
+ newContainer?.insertAdjacentElement('beforeend',formElement);
529
+ }
530
+ });
531
+
532
+
533
+ editBucketsOriginalState = editBuckets.innerHTML;
534
+ }
535
+
536
+ editBucketsDialog?.close();
537
+ });
538
+ */
539
+ /*
540
+
541
+ addBucketButton?.addEventListener('click', (event) => {
542
+
543
+ const editBucket = document.createElement('div');
544
+ editBucket.classList.add('bucket--edit');
545
+ editBucket.innerHTML = this.addBucketHTML();
546
+
547
+ editBuckets?.insertAdjacentElement('beforeend', editBucket)
548
+
549
+ this.addButtonEvents(editBucket,false);
550
+ const expandButton = editBucket?.querySelector('[data-expand]');
551
+
552
+ expandButton?.addEventListener('click',() => {
553
+
554
+ editBucket.classList.toggle('bucket--expanded');
555
+ });
556
+ });
557
+
558
+ */
559
+
560
+
561
+
562
+ // #endregion
563
+
564
+ // #region add data
565
+
566
+ addItemButton?.addEventListener("click", (event) => {
567
+
568
+ const form = this.createForm({});
569
+ form?.scrollIntoView({ behavior: "instant", block: "center" });
570
+ // TODO scroll into view
571
+ });
572
+
573
+ addBucketButton?.addEventListener("click", (event) => {
574
+
575
+ const bucket = this.createBucket({});
576
+ bucket?.scrollIntoView({ behavior: "instant", block: "center" });
577
+ });
578
+
579
+ // #endregion
580
+
581
+
582
+ // #region update values
583
+
584
+ this.shadowRoot.addEventListener('change', (event) => {
585
+
586
+ const container = event.target.closest('[data-bucket]');
587
+
588
+ if(!container)
589
+ return false;
590
+
591
+ const attribute = event.target.name;
592
+ const value = event.target.value;
593
+ const attributes = {};
594
+ attributes[attribute] = value;
595
+ const newContainer = this.checkBuckets(attributes);
596
+
597
+ if(newContainer != container){
598
+ const form = event.target.closest(`form`);
599
+ // TODO a confirmation modal
600
+ newContainer?.insertAdjacentElement('beforeend',form);
601
+
602
+
603
+ form?.scrollIntoView({ behavior: "instant", block: "center" });
604
+ }
605
+
606
+ });
607
+ // #endregion
608
+
609
+ // #region save data
610
+ saveButton?.addEventListener('click', (event) => {
611
+
612
+ event.preventDefault();
613
+
614
+ // TODO validation
615
+
616
+ const entries = [];
617
+
618
+ // Save buckets data
619
+ Array.from(itemsContainer?.querySelectorAll('.bucket__wrapper')).forEach((bucketElement:HTMLElement, index):void => {
620
+
621
+ const bucket = {};
622
+ bucket.attributes = {};
623
+ bucket.id = bucketElement?.querySelector('[name="bucket"]').value;
624
+ bucket.type = 'bucket';
625
+ bucket.attributes.index = index;
626
+
627
+
628
+ const criteria = [];
629
+ // TODO populate criteria
630
+ Array.from(bucketElement?.querySelectorAll('.criteria--container form')).forEach((formElement:HTMLElement, criteriaIndex):void => {
631
+
632
+ const item = {};
633
+ //item.id = formElement.getAttribute('id');
634
+ item.type = 'criteria';
635
+ item.index = criteriaIndex;
636
+ const formData = new FormData(formElement);
637
+ const formDataObj = Object.fromEntries(formData.entries());
638
+
639
+ item.attributes = formDataObj;
640
+
641
+ criteria.push(item);
642
+ });
643
+ bucket.attributes.criteria = criteria;
644
+
645
+ const items = [];
646
+ Array.from(bucketElement?.querySelectorAll('[data-bucket] form')).forEach((formElement:HTMLElement, itemIndex):void => {
647
+
648
+ const item = {};
649
+ //item.id = formElement.getAttribute('id');
650
+ item.type = 'item';
651
+ item.index = itemIndex;
652
+ const formData = new FormData(formElement);
653
+ const formDataObj = Object.fromEntries(formData.entries());
654
+
655
+ item.attributes = formDataObj;
656
+
657
+ items.push(item);
658
+ });
659
+ bucket.attributes.items = items;
660
+
661
+ entries.push(bucket);
662
+ });
663
+
664
+
665
+ Array.from(itemsContainer?.querySelectorAll('[data-bucket="any"] form')).forEach((formElement:HTMLElement, index):void => {
666
+
667
+ const entry = {};
668
+ //entry.id = formElement.getAttribute('id');
669
+ entry.type = 'item';
670
+ entry.index = index;
671
+ const formData = new FormData(formElement);
672
+ const formDataObj = Object.fromEntries(formData.entries());
673
+
674
+ entry.attributes = formDataObj;
675
+
676
+ entries.push(entry);
677
+ });
678
+
679
+ const entriesJson = JSON.stringify(entries);
680
+
681
+ console.log(entries);
682
+
683
+ // TODO add toast message
684
+ // TODO save locally for now but when pushing to endpoint the web storage file should get deleted
685
+
686
+ //localStorage.setItem(`config-${this.getAttribute('data-name')}`, entriesJson);
687
+
688
+
689
+
690
+ //const bucketsJson = JSON.stringify(buckets);
691
+
692
+ //localStorage.setItem(`config-buckets-${this.getAttribute('data-name')}`, bucketsJson);
693
+
694
+ });
695
+ // #endregion
696
+ }
697
+ }
698
+
699
+ export default iamConfig;