@iamproperty/components 7.7.1--beta5 → 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 (701) 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/barchart.component.css +1 -1
  159. package/assets/css/components/barchart.component.css.map +1 -1
  160. package/assets/css/components/calendar.component.css +1 -1
  161. package/assets/css/components/calendar.component.css.map +1 -1
  162. package/assets/css/components/card.component.css +1 -1
  163. package/assets/css/components/card.component.css.map +1 -1
  164. package/assets/css/components/card.module.css +1 -1
  165. package/assets/css/components/card.module.css.map +1 -1
  166. package/assets/css/components/carousel.component.css +1 -1
  167. package/assets/css/components/carousel.component.css.map +1 -1
  168. package/assets/css/components/charts.css +1 -1
  169. package/assets/css/components/charts.css.map +1 -1
  170. package/assets/css/components/collapsible-side.css +1 -1
  171. package/assets/css/components/collapsible-side.css.map +1 -1
  172. package/assets/css/components/config.component.css +1 -1
  173. package/assets/css/components/config.component.css.map +1 -1
  174. package/assets/css/components/content.component.css +1 -1
  175. package/assets/css/components/content.component.css.map +1 -1
  176. package/assets/css/components/doughnutchart.component.css +1 -1
  177. package/assets/css/components/doughnutchart.component.css.map +1 -1
  178. package/assets/css/components/fileupload.css +1 -1
  179. package/assets/css/components/fileupload.css.map +1 -1
  180. package/assets/css/components/filter-card.component.css +1 -1
  181. package/assets/css/components/filter-card.component.css.map +1 -1
  182. package/assets/css/components/header.css +1 -1
  183. package/assets/css/components/header.css.map +1 -1
  184. package/assets/css/components/input.component.css.map +1 -1
  185. package/assets/css/components/modal.component.css +1 -1
  186. package/assets/css/components/modal.component.css.map +1 -1
  187. package/assets/css/components/multi-step-modal.component.css +1 -1
  188. package/assets/css/components/multi-step-modal.component.css.map +1 -1
  189. package/assets/css/components/multiselect.css +1 -1
  190. package/assets/css/components/multiselect.css.map +1 -1
  191. package/assets/css/components/nav.component.css +1 -1
  192. package/assets/css/components/nav.component.css.map +1 -1
  193. package/assets/css/components/pagination.css +1 -1
  194. package/assets/css/components/pagination.css.map +1 -1
  195. package/assets/css/components/record-card.component.css +1 -1
  196. package/assets/css/components/record-card.component.css.map +1 -1
  197. package/assets/css/components/slider.css +1 -1
  198. package/assets/css/components/slider.css.map +1 -1
  199. package/assets/css/components/split-button.component.css +1 -1
  200. package/assets/css/components/split-button.component.css.map +1 -1
  201. package/assets/css/components/tabs.component.css +1 -1
  202. package/assets/css/components/tabs.component.css.map +1 -1
  203. package/assets/css/components/tag.component.css +1 -1
  204. package/assets/css/components/tag.component.css.map +1 -1
  205. package/assets/css/components/video-card.component.css +1 -1
  206. package/assets/css/components/video-card.component.css.map +1 -1
  207. package/assets/css/components/video-modal.component.css +1 -1
  208. package/assets/css/components/video-modal.component.css.map +1 -1
  209. package/assets/css/components/video.component.css +1 -1
  210. package/assets/css/components/video.component.css.map +1 -1
  211. package/assets/css/core.min.css +1 -1
  212. package/assets/css/core.min.css.map +1 -1
  213. package/assets/css/elements/buttons--global.css +1 -1
  214. package/assets/css/elements/buttons--global.css.map +1 -1
  215. package/assets/css/elements/buttons--secondary.css +1 -1
  216. package/assets/css/elements/buttons--secondary.css.map +1 -1
  217. package/assets/css/elements/buttons--special.css +1 -1
  218. package/assets/css/elements/buttons--special.css.map +1 -1
  219. package/assets/css/elements/buttons--tertiary.css +1 -1
  220. package/assets/css/elements/buttons--tertiary.css.map +1 -1
  221. package/assets/css/elements/buttons.css +1 -1
  222. package/assets/css/elements/buttons.css.map +1 -1
  223. package/assets/css/elements/container.css +1 -1
  224. package/assets/css/elements/container.css.map +1 -1
  225. package/assets/css/elements/details.css +1 -1
  226. package/assets/css/elements/details.css.map +1 -1
  227. package/assets/css/elements/dialog.css.map +1 -1
  228. package/assets/css/elements/dropdown.css +1 -1
  229. package/assets/css/elements/dropdown.css.map +1 -1
  230. package/assets/css/elements/feature.css +1 -1
  231. package/assets/css/elements/feature.css.map +1 -1
  232. package/assets/css/elements/forms.css +1 -1
  233. package/assets/css/elements/forms.css.map +1 -1
  234. package/assets/css/elements/label.css +1 -1
  235. package/assets/css/elements/label.css.map +1 -1
  236. package/assets/css/elements/links--collapsible-side.css +1 -0
  237. package/assets/css/elements/links--collapsible-side.css.map +1 -0
  238. package/assets/css/elements/links--global.css +1 -0
  239. package/assets/css/elements/links--global.css.map +1 -0
  240. package/assets/css/elements/links--video.css +1 -0
  241. package/assets/css/elements/links--video.css.map +1 -0
  242. package/assets/css/elements/links.css +1 -1
  243. package/assets/css/elements/links.css.map +1 -1
  244. package/assets/css/elements/modal.css.map +1 -1
  245. package/assets/css/elements/progress.css.map +1 -1
  246. package/assets/css/elements/textarea.css +1 -1
  247. package/assets/css/elements/textarea.css.map +1 -1
  248. package/assets/css/elements/toggle-button.css +1 -1
  249. package/assets/css/elements/toggle-button.css.map +1 -1
  250. package/assets/css/elements/tooltips.css +1 -1
  251. package/assets/css/elements/tooltips.css.map +1 -1
  252. package/assets/css/style.min.css +1 -1
  253. package/assets/css/style.min.css.map +1 -1
  254. package/assets/favicons/README.md +20 -20
  255. package/assets/favicons/browserconfig.xml +9 -9
  256. package/assets/favicons/manifest.json +31 -31
  257. package/assets/favicons/safari-pinned-tab.svg +35 -35
  258. package/assets/favicons/site.webmanifest +20 -20
  259. package/assets/js/components/accordion/accordion.component.js +15 -15
  260. package/assets/js/components/accordion/accordion.component.min.js +1 -1
  261. package/assets/js/components/accordion/accordion.component.min.js.map +1 -1
  262. package/assets/js/components/actionbar/actionbar.component.js +68 -68
  263. package/assets/js/components/actionbar/actionbar.component.min.js +2 -2
  264. package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
  265. package/assets/js/components/address-lookup/address-lookup.component.js +60 -60
  266. package/assets/js/components/address-lookup/address-lookup.component.min.js +2 -2
  267. package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -1
  268. package/assets/js/components/advanced-select/advanced-select.component.js +20 -20
  269. package/assets/js/components/advanced-select/advanced-select.component.min.js +1 -1
  270. package/assets/js/components/advanced-select/advanced-select.component.min.js.map +1 -1
  271. package/assets/js/components/applied-filters/applied-filters.component.js +7 -7
  272. package/assets/js/components/applied-filters/applied-filters.component.min.js +1 -1
  273. package/assets/js/components/applied-filters/applied-filters.component.min.js.map +1 -1
  274. package/assets/js/components/barchart/barchart.component.js +2 -2
  275. package/assets/js/components/barchart/barchart.component.min.js +6 -6
  276. package/assets/js/components/barchart/barchart.component.min.js.map +1 -1
  277. package/assets/js/components/bento-grid/bento-grid.component.js +9 -9
  278. package/assets/js/components/bento-grid/bento-grid.component.min.js +1 -1
  279. package/assets/js/components/bento-grid/bento-grid.component.min.js.map +1 -1
  280. package/assets/js/components/calendar/calendar.component.js +2 -2
  281. package/assets/js/components/calendar/calendar.component.min.js +2 -2
  282. package/assets/js/components/calendar/calendar.component.min.js.map +1 -1
  283. package/assets/js/components/card/card.component.js +3 -3
  284. package/assets/js/components/card/card.component.min.js +2 -2
  285. package/assets/js/components/card/card.component.min.js.map +1 -1
  286. package/assets/js/components/carousel/carousel.component.js +2 -2
  287. package/assets/js/components/carousel/carousel.component.min.js +4 -4
  288. package/assets/js/components/carousel/carousel.component.min.js.map +1 -1
  289. package/assets/js/components/chart/chart.component.js +1 -1
  290. package/assets/js/components/collapsible-side/collapsible-side.component.js +20 -20
  291. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +4 -4
  292. package/assets/js/components/collapsible-side/collapsible-side.component.min.js.map +1 -1
  293. package/assets/js/components/config/config.component.js +54 -54
  294. package/assets/js/components/config/config.component.min.js +2 -2
  295. package/assets/js/components/config/config.component.min.js.map +1 -1
  296. package/assets/js/components/content/content.component.js +9 -9
  297. package/assets/js/components/content/content.component.min.js +4 -4
  298. package/assets/js/components/content/content.component.min.js.map +1 -1
  299. package/assets/js/components/darkmode/darkmode.component.js +4 -4
  300. package/assets/js/components/darkmode/darkmode.component.min.js +1 -1
  301. package/assets/js/components/darkmode/darkmode.component.min.js.map +1 -1
  302. package/assets/js/components/doughnutchart/doughnutchart.component.js +2 -2
  303. package/assets/js/components/doughnutchart/doughnutchart.component.min.js +4 -4
  304. package/assets/js/components/doughnutchart/doughnutchart.component.min.js.map +1 -1
  305. package/assets/js/components/fileupload/fileupload.component.js +17 -17
  306. package/assets/js/components/fileupload/fileupload.component.min.js +2 -2
  307. package/assets/js/components/fileupload/fileupload.component.min.js.map +1 -1
  308. package/assets/js/components/filter-card/filter-card.component.js +9 -9
  309. package/assets/js/components/filter-card/filter-card.component.min.js +5 -5
  310. package/assets/js/components/filter-card/filter-card.component.min.js.map +1 -1
  311. package/assets/js/components/filterlist/filterlist.component.js +1 -1
  312. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  313. package/assets/js/components/filterlist/filterlist.component.min.js.map +1 -1
  314. package/assets/js/components/form/form.component.js +5 -5
  315. package/assets/js/components/form/form.component.min.js +1 -1
  316. package/assets/js/components/form/form.component.min.js.map +1 -1
  317. package/assets/js/components/header/header.component.js +53 -53
  318. package/assets/js/components/header/header.component.min.js +2 -2
  319. package/assets/js/components/header/header.component.min.js.map +1 -1
  320. package/assets/js/components/inline-edit/inline-edit.component.js +16 -16
  321. package/assets/js/components/inline-edit/inline-edit.component.min.js +1 -1
  322. package/assets/js/components/inline-edit/inline-edit.component.min.js.map +1 -1
  323. package/assets/js/components/input/input.component.js +11 -11
  324. package/assets/js/components/input/input.component.min.js +1 -1
  325. package/assets/js/components/input/input.component.min.js.map +1 -1
  326. package/assets/js/components/input-range/input-range.component.js +9 -9
  327. package/assets/js/components/input-range/input-range.component.min.js +1 -1
  328. package/assets/js/components/input-range/input-range.component.min.js.map +1 -1
  329. package/assets/js/components/marketing/marketing.component.js +10 -10
  330. package/assets/js/components/marketing/marketing.component.min.js +1 -1
  331. package/assets/js/components/marketing/marketing.component.min.js.map +1 -1
  332. package/assets/js/components/menu/menu.component.js +6 -6
  333. package/assets/js/components/menu/menu.component.min.js +1 -1
  334. package/assets/js/components/menu/menu.component.min.js.map +1 -1
  335. package/assets/js/components/milestone/milestone.component.js +2 -2
  336. package/assets/js/components/milestone/milestone.component.min.js +1 -1
  337. package/assets/js/components/milestone/milestone.component.min.js.map +1 -1
  338. package/assets/js/components/milestone-group/milestone-group.component.js +2 -2
  339. package/assets/js/components/milestone-group/milestone-group.component.min.js +1 -1
  340. package/assets/js/components/milestone-group/milestone-group.component.min.js.map +1 -1
  341. package/assets/js/components/modal/modal.component.js +23 -23
  342. package/assets/js/components/modal/modal.component.min.js +4 -4
  343. package/assets/js/components/modal/modal.component.min.js.map +1 -1
  344. package/assets/js/components/multi-step/multi-step.component.js +1 -1
  345. package/assets/js/components/multi-step/multi-step.component.min.js +1 -1
  346. package/assets/js/components/multi-step/multi-step.component.min.js.map +1 -1
  347. package/assets/js/components/multi-step-modal/multi-step-modal.component.js +12 -12
  348. package/assets/js/components/multi-step-modal/multi-step-modal.component.min.js +4 -4
  349. package/assets/js/components/multi-step-modal/multi-step-modal.component.min.js.map +1 -1
  350. package/assets/js/components/multiselect/multiselect.component.js +21 -21
  351. package/assets/js/components/multiselect/multiselect.component.min.js +4 -4
  352. package/assets/js/components/multiselect/multiselect.component.min.js.map +1 -1
  353. package/assets/js/components/nav/nav.component.js +45 -45
  354. package/assets/js/components/nav/nav.component.min.js +2 -2
  355. package/assets/js/components/nav/nav.component.min.js.map +1 -1
  356. package/assets/js/components/notification/notification.component.js +14 -14
  357. package/assets/js/components/notification/notification.component.min.js +1 -1
  358. package/assets/js/components/notification/notification.component.min.js.map +1 -1
  359. package/assets/js/components/pagination/pagination.component.js +39 -39
  360. package/assets/js/components/pagination/pagination.component.min.js +3 -3
  361. package/assets/js/components/pagination/pagination.component.min.js.map +1 -1
  362. package/assets/js/components/password/password.component.js +11 -11
  363. package/assets/js/components/password/password.component.min.js +1 -1
  364. package/assets/js/components/password/password.component.min.js.map +1 -1
  365. package/assets/js/components/popover/popover.component.js +8 -8
  366. package/assets/js/components/popover/popover.component.min.js +1 -1
  367. package/assets/js/components/popover/popover.component.min.js.map +1 -1
  368. package/assets/js/components/rank/rank.component.js +360 -360
  369. package/assets/js/components/rank/rank.component.min.js +1 -1
  370. package/assets/js/components/rank/rank.component.min.js.map +1 -1
  371. package/assets/js/components/rankings/rankings.component.js +18 -18
  372. package/assets/js/components/rankings/rankings.component.min.js +1 -1
  373. package/assets/js/components/rankings/rankings.component.min.js.map +1 -1
  374. package/assets/js/components/rating/rating.component.js +10 -10
  375. package/assets/js/components/rating/rating.component.min.js +1 -1
  376. package/assets/js/components/rating/rating.component.min.js.map +1 -1
  377. package/assets/js/components/record-card/record-card.component.js +2 -2
  378. package/assets/js/components/record-card/record-card.component.min.js +2 -2
  379. package/assets/js/components/record-card/record-card.component.min.js.map +1 -1
  380. package/assets/js/components/search/search.component.js +19 -19
  381. package/assets/js/components/search/search.component.min.js +1 -1
  382. package/assets/js/components/search/search.component.min.js.map +1 -1
  383. package/assets/js/components/slider/slider.component.js +12 -12
  384. package/assets/js/components/slider/slider.component.min.js +2 -2
  385. package/assets/js/components/slider/slider.component.min.js.map +1 -1
  386. package/assets/js/components/split-button/split-button.component.js +19 -19
  387. package/assets/js/components/split-button/split-button.component.min.js +3 -3
  388. package/assets/js/components/split-button/split-button.component.min.js.map +1 -1
  389. package/assets/js/components/std-address-lookup/std-address-lookup.component.js +114 -114
  390. package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js +2 -2
  391. package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js.map +1 -1
  392. package/assets/js/components/table/table.component.js +17 -17
  393. package/assets/js/components/table/table.component.min.js +1 -1
  394. package/assets/js/components/table/table.component.min.js.map +1 -1
  395. package/assets/js/components/table-ajax/table-ajax.component.js +17 -17
  396. package/assets/js/components/table-ajax/table-ajax.component.min.js +1 -1
  397. package/assets/js/components/table-ajax/table-ajax.component.min.js.map +1 -1
  398. package/assets/js/components/table-basic/table-basic.component.js +16 -16
  399. package/assets/js/components/table-basic/table-basic.component.min.js +1 -1
  400. package/assets/js/components/table-basic/table-basic.component.min.js.map +1 -1
  401. package/assets/js/components/table-no-submit/table-no-submit.component.js +17 -17
  402. package/assets/js/components/table-no-submit/table-no-submit.component.min.js +1 -1
  403. package/assets/js/components/table-no-submit/table-no-submit.component.min.js.map +1 -1
  404. package/assets/js/components/table-submit/table-submit.component.js +17 -17
  405. package/assets/js/components/table-submit/table-submit.component.min.js +1 -1
  406. package/assets/js/components/table-submit/table-submit.component.min.js.map +1 -1
  407. package/assets/js/components/tabs/tabs.component.js +18 -18
  408. package/assets/js/components/tabs/tabs.component.min.js +2 -2
  409. package/assets/js/components/tabs/tabs.component.min.js.map +1 -1
  410. package/assets/js/components/tag/tag.component.js +14 -14
  411. package/assets/js/components/tag/tag.component.min.js +4 -4
  412. package/assets/js/components/tag/tag.component.min.js.map +1 -1
  413. package/assets/js/components/tooltip/tooltip.component.js +9 -9
  414. package/assets/js/components/tooltip/tooltip.component.min.js +1 -1
  415. package/assets/js/components/tooltip/tooltip.component.min.js.map +1 -1
  416. package/assets/js/components/video/video.component.js +11 -11
  417. package/assets/js/components/video/video.component.min.js +4 -4
  418. package/assets/js/components/video/video.component.min.js.map +1 -1
  419. package/assets/js/components/video-card/video-card.component.js +16 -16
  420. package/assets/js/components/video-card/video-card.component.min.js +6 -6
  421. package/assets/js/components/video-card/video-card.component.min.js.map +1 -1
  422. package/assets/js/components/video-modal/video-modal.component.js +16 -16
  423. package/assets/js/components/video-modal/video-modal.component.min.js +5 -5
  424. package/assets/js/components/video-modal/video-modal.component.min.js.map +1 -1
  425. package/assets/js/components/word-count/word-count.component.js +1 -1
  426. package/assets/js/components/word-count/word-count.component.min.js +1 -1
  427. package/assets/js/components/word-count/word-count.component.min.js.map +1 -1
  428. package/assets/js/modules/card.module.js +14 -14
  429. package/assets/js/modules/chart.js +1 -1
  430. package/assets/js/modules/chart.module.js +5 -5
  431. package/assets/js/modules/helper.test.js +2 -2
  432. package/assets/js/modules/integration-tests.js +3 -3
  433. package/assets/js/modules/table.js +3 -3
  434. package/assets/js/modules/tabs.js +1 -1
  435. package/assets/js/modules/videos.js +6 -6
  436. package/assets/js/scripts.bundle.js +1 -1
  437. package/assets/js/scripts.bundle.js.map +1 -1
  438. package/assets/js/scripts.bundle.min.js +1 -1
  439. package/assets/js/scripts.bundle.min.js.map +1 -1
  440. package/assets/js/scripts.js +4 -4
  441. package/assets/sass/_bs_grid.scss +41 -41
  442. package/assets/sass/_bs_utilities.scss +51 -51
  443. package/assets/sass/_components.scss +162 -162
  444. package/assets/sass/_corefiles.scss +31 -31
  445. package/assets/sass/_elements.scss +30 -30
  446. package/assets/sass/_fonts.scss +28 -28
  447. package/assets/sass/_func.scss +2 -2
  448. package/assets/sass/_functions/bs_functions.scss +487 -487
  449. package/assets/sass/_functions/bs_mixins.scss +2103 -2103
  450. package/assets/sass/_functions/bs_utilities.scss +922 -922
  451. package/assets/sass/_functions/bs_variables.scss +1701 -1703
  452. package/assets/sass/_functions/functions.scss +48 -48
  453. package/assets/sass/_functions/mixins.scss +1 -1
  454. package/assets/sass/_grid.scss +320 -320
  455. package/assets/sass/_print.scss +64 -64
  456. package/assets/sass/_utilities.scss +35 -35
  457. package/assets/sass/components/actionbar.component.scss +421 -421
  458. package/assets/sass/components/actionbar.global.scss +115 -115
  459. package/assets/sass/components/address-lookup.component.scss +161 -161
  460. package/assets/sass/components/address-lookup.preload.scss +90 -90
  461. package/assets/sass/components/applied-filters.scss +19 -19
  462. package/assets/sass/components/barchart.component.scss +347 -347
  463. package/assets/sass/components/bento-grid.component.scss +109 -109
  464. package/assets/sass/components/bento-grid.global.scss +248 -248
  465. package/assets/sass/components/calendar.component.scss +1272 -1272
  466. package/assets/sass/components/calendar.config.scss +423 -423
  467. package/assets/sass/components/card.component.scss +187 -182
  468. package/assets/sass/components/card.module.scss +154 -151
  469. package/assets/sass/components/carousel.component.scss +631 -631
  470. package/assets/sass/components/carousel.config.scss +84 -84
  471. package/assets/sass/components/charts.config.scss +86 -86
  472. package/assets/sass/components/charts.module.scss +588 -588
  473. package/assets/sass/components/charts.scss +1298 -1298
  474. package/assets/sass/components/collapsible-side.scss +307 -307
  475. package/assets/sass/components/config.component.scss +235 -235
  476. package/assets/sass/components/content.component.scss +18 -18
  477. package/assets/sass/components/darkmode.component.scss +20 -20
  478. package/assets/sass/components/doughnutchart.component.scss +206 -206
  479. package/assets/sass/components/fileupload.scss +162 -162
  480. package/assets/sass/components/filter-card.component.scss +99 -99
  481. package/assets/sass/components/header.scss +251 -256
  482. package/assets/sass/components/inline-edit.preload.scss +203 -203
  483. package/assets/sass/components/inline-edit.scss +40 -40
  484. package/assets/sass/components/input-range.component.scss +46 -46
  485. package/assets/sass/components/input.component.scss +101 -101
  486. package/assets/sass/components/marketing.component.scss +65 -65
  487. package/assets/sass/components/menu.component.scss +161 -190
  488. package/assets/sass/components/menu.global.scss +82 -82
  489. package/assets/sass/components/milestone.scss +216 -216
  490. package/assets/sass/components/modal.component.scss +252 -252
  491. package/assets/sass/components/multi-step-modal.component.scss +255 -255
  492. package/assets/sass/components/multi-step-modal.global.scss +92 -92
  493. package/assets/sass/components/multi-step.component.scss +144 -144
  494. package/assets/sass/components/multiselect.preload.scss +8 -8
  495. package/assets/sass/components/multiselect.scss +238 -238
  496. package/assets/sass/components/nav.component.scss +718 -718
  497. package/assets/sass/components/nav.docs.scss +55 -55
  498. package/assets/sass/components/nav.global.scss +870 -870
  499. package/assets/sass/components/nav.preload.scss +54 -54
  500. package/assets/sass/components/notification.scss +218 -218
  501. package/assets/sass/components/pagination.scss +237 -237
  502. package/assets/sass/components/password.component.scss +56 -56
  503. package/assets/sass/components/popover.component.scss +28 -28
  504. package/assets/sass/components/property-searchbar.scss +139 -139
  505. package/assets/sass/components/rank.component.scss +275 -275
  506. package/assets/sass/components/rankings.component.scss +70 -70
  507. package/assets/sass/components/rankings.global.scss +140 -140
  508. package/assets/sass/components/rating.component.css +211 -211
  509. package/assets/sass/components/record-card.component.scss +191 -191
  510. package/assets/sass/components/slider.scss +127 -127
  511. package/assets/sass/components/snapshot.scss +65 -65
  512. package/assets/sass/components/split-button.component.scss +83 -83
  513. package/assets/sass/components/stepper.scss +157 -157
  514. package/assets/sass/components/table-basic.component.scss +136 -136
  515. package/assets/sass/components/table-basic.global.scss +676 -676
  516. package/assets/sass/components/table.component.scss +51 -51
  517. package/assets/sass/components/table.global.scss +398 -398
  518. package/assets/sass/components/tabs.component.scss +34 -34
  519. package/assets/sass/components/tabs.config.scss +258 -258
  520. package/assets/sass/components/tag.component.scss +59 -59
  521. package/assets/sass/components/tag.preload.scss +20 -20
  522. package/assets/sass/components/testimonial.scss +125 -125
  523. package/assets/sass/components/timeline.scss +92 -92
  524. package/assets/sass/components/tooltip.component.scss +148 -148
  525. package/assets/sass/components/video-card.component.scss +49 -49
  526. package/assets/sass/components/video-modal.component.scss +26 -26
  527. package/assets/sass/components/video.component.scss +74 -74
  528. package/assets/sass/components/word-count.component.scss +26 -26
  529. package/assets/sass/core.scss +4 -4
  530. package/assets/sass/elements/admin-panel.css +310 -310
  531. package/assets/sass/elements/badge-tag.css +101 -101
  532. package/assets/sass/elements/brand.css +80 -80
  533. package/assets/sass/elements/button__group.css +135 -135
  534. package/assets/sass/elements/buttons--action.css +71 -71
  535. package/assets/sass/elements/buttons--compact.css +168 -168
  536. package/assets/sass/elements/{buttons--global.scss → buttons--global.css} +239 -250
  537. package/assets/sass/elements/{buttons--secondary.scss → buttons--secondary.css} +18 -24
  538. package/assets/sass/elements/{buttons--special.scss → buttons--special.css} +164 -171
  539. package/assets/sass/elements/{buttons--tertiary.scss → buttons--tertiary.css} +51 -57
  540. package/assets/sass/elements/buttons.scss +9 -14
  541. package/assets/sass/elements/code.css +45 -45
  542. package/assets/sass/elements/container.scss +118 -155
  543. package/assets/sass/elements/{details.scss → details.css} +224 -227
  544. package/assets/sass/elements/dialog.scss +75 -86
  545. package/assets/sass/elements/{dropdown.scss → dropdown.css} +85 -87
  546. package/assets/sass/elements/{feature.scss → feature.css} +174 -180
  547. package/assets/sass/elements/forms.scss +1337 -1338
  548. package/assets/sass/elements/highlight.css +76 -76
  549. package/assets/sass/elements/hr.css +41 -41
  550. package/assets/sass/elements/icons.css +48 -48
  551. package/assets/sass/elements/input.scss +212 -212
  552. package/assets/sass/elements/{label.scss → label.css} +20 -20
  553. package/assets/sass/elements/links--collapsible-side.scss +130 -0
  554. package/assets/sass/elements/links--global.scss +155 -0
  555. package/assets/sass/elements/links--video.scss +73 -0
  556. package/assets/sass/elements/links.scss +5 -370
  557. package/assets/sass/elements/lists--breadcrumbs.scss +26 -26
  558. package/assets/sass/elements/lists--steps.css +171 -171
  559. package/assets/sass/elements/lists--tick-list.scss +112 -112
  560. package/assets/sass/elements/lists.scss +99 -99
  561. package/assets/sass/elements/media.css +20 -20
  562. package/assets/sass/elements/modal.scss +411 -415
  563. package/assets/sass/elements/popover.scss +259 -259
  564. package/assets/sass/elements/prefix.scss +139 -139
  565. package/assets/sass/elements/progress.scss +208 -214
  566. package/assets/sass/elements/table.element.scss +144 -144
  567. package/assets/sass/elements/{textarea.scss → textarea.css} +84 -96
  568. package/assets/sass/elements/{toggle-button.scss → toggle-button.css} +49 -55
  569. package/assets/sass/elements/tooltips.scss +152 -151
  570. package/assets/sass/elements/type.css +166 -166
  571. package/assets/sass/email.scss +68 -68
  572. package/assets/sass/error.scss +31 -33
  573. package/assets/sass/foundations/animations.scss +2 -2
  574. package/assets/sass/foundations/colours.scss +104 -104
  575. package/assets/sass/foundations/reboot.scss +166 -166
  576. package/assets/sass/foundations/root.scss +269 -269
  577. package/assets/sass/main.scss +7 -7
  578. package/assets/sass/templates/auth.scss +106 -106
  579. package/assets/sass/templates/form.scss +95 -95
  580. package/assets/sass/utilities/{align.scss → align.css} +24 -24
  581. package/assets/sass/utilities/{border.scss → border.css} +65 -68
  582. package/assets/sass/utilities/{clearfix.scss → clearfix.css} +8 -8
  583. package/assets/sass/utilities/colours.scss +43 -43
  584. package/assets/sass/utilities/{columns.scss → columns.css} +61 -61
  585. package/assets/sass/utilities/display.scss +89 -89
  586. package/assets/sass/utilities/{fixed.scss → fixed.css} +16 -16
  587. package/assets/sass/utilities/flex.scss +291 -291
  588. package/assets/sass/utilities/{font-awesome-iso-fallbacks.scss → font-awesome-iso-fallbacks.css} +43 -43
  589. package/assets/sass/utilities/gap.css +26 -0
  590. package/assets/sass/utilities/{gradients.scss → gradients.css} +39 -39
  591. package/assets/sass/utilities/{js-display.scss → js-display.css} +12 -12
  592. package/assets/sass/utilities/{line-clamp.scss → line-clamp.css} +24 -24
  593. package/assets/sass/utilities/margins.scss +74 -74
  594. package/assets/sass/utilities/max-height.scss +93 -93
  595. package/assets/sass/utilities/{opacity.scss → opacity.css} +20 -20
  596. package/assets/sass/utilities/order.css +104 -0
  597. package/assets/sass/utilities/{overflow.scss → overflow.css} +16 -16
  598. package/assets/sass/utilities/paddings.scss +33 -33
  599. package/assets/sass/utilities/{pointer-events.scss → pointer-events.css} +8 -8
  600. package/assets/sass/utilities/position.css +68 -0
  601. package/assets/sass/utilities/{ratio.scss → ratio.css} +33 -33
  602. package/assets/sass/utilities/{rounded.scss → rounded.css} +56 -56
  603. package/assets/sass/utilities/{shadow.scss → shadow.css} +7 -7
  604. package/assets/sass/utilities/{sizes.scss → sizes.css} +92 -92
  605. package/assets/sass/utilities/{sticky.scss → sticky.css} +38 -38
  606. package/assets/sass/utilities/{text-truncate.scss → text-truncate.css} +6 -6
  607. package/assets/sass/utilities/{text.scss → text.css} +190 -190
  608. package/assets/sass/utilities/{visible.scss → visible.css} +8 -8
  609. package/assets/sass/utilities/{visually-hidden.scss → visually-hidden.css} +13 -13
  610. package/assets/sass/utilities/wider-colours.scss +8 -8
  611. package/assets/svg/illustrations/table.svg +165 -165
  612. package/assets/svg/logo.svg +56 -56
  613. package/assets/ts/components/accordion/accordion.component.ts +77 -77
  614. package/assets/ts/components/actionbar/actionbar.component.ts +567 -567
  615. package/assets/ts/components/address-lookup/address-lookup.component.ts +672 -672
  616. package/assets/ts/components/advanced-select/advanced-select.component.ts +116 -116
  617. package/assets/ts/components/applied-filters/applied-filters.component.ts +37 -37
  618. package/assets/ts/components/bento-grid/bento-grid.component.ts +88 -88
  619. package/assets/ts/components/collapsible-side/collapsible-side.component.ts +165 -165
  620. package/assets/ts/components/config/config.component.ts +699 -699
  621. package/assets/ts/components/content/content.component.ts +78 -78
  622. package/assets/ts/components/darkmode/darkmode.component.ts +108 -108
  623. package/assets/ts/components/fileupload/fileupload.component.ts +74 -74
  624. package/assets/ts/components/filter-card/filter-card.component.ts +106 -106
  625. package/assets/ts/components/form/form.component.ts +102 -102
  626. package/assets/ts/components/header/header.component.ts +97 -97
  627. package/assets/ts/components/inline-edit/inline-edit.component.ts +212 -212
  628. package/assets/ts/components/input/input.component.ts +278 -278
  629. package/assets/ts/components/input-range/input-range.component.ts +78 -78
  630. package/assets/ts/components/marketing/marketing.component.ts +44 -44
  631. package/assets/ts/components/menu/menu.component.ts +212 -212
  632. package/assets/ts/components/modal/modal.component.ts +184 -184
  633. package/assets/ts/components/multi-step-modal/multi-step-modal.component.ts +304 -304
  634. package/assets/ts/components/multiselect/multiselect.component.ts +349 -349
  635. package/assets/ts/components/nav/nav.component.ts +369 -369
  636. package/assets/ts/components/notification/notification.component.ts +172 -172
  637. package/assets/ts/components/pagination/pagination.component.ts +213 -213
  638. package/assets/ts/components/password/password.component.ts +118 -118
  639. package/assets/ts/components/popover/popover.component.ts +50 -50
  640. package/assets/ts/components/rank/rank.component.ts +394 -394
  641. package/assets/ts/components/rankings/rankings.component.ts +79 -79
  642. package/assets/ts/components/rating/rating.component.ts +86 -86
  643. package/assets/ts/components/search/search.component.ts +244 -244
  644. package/assets/ts/components/slider/slider.component.ts +170 -170
  645. package/assets/ts/components/split-button/split-button.component.ts +63 -63
  646. package/assets/ts/components/std-address-lookup/std-address-lookup.component.ts +1919 -1919
  647. package/assets/ts/components/table/table.component.ts +94 -94
  648. package/assets/ts/components/table-ajax/table-ajax.component.ts +70 -70
  649. package/assets/ts/components/table-basic/table-basic.component.ts +56 -56
  650. package/assets/ts/components/table-no-submit/table-no-submit.component.ts +130 -130
  651. package/assets/ts/components/table-submit/table-submit.component.ts +71 -71
  652. package/assets/ts/components/tabs/tabs.component.ts +70 -70
  653. package/assets/ts/components/tag/tag.component.ts +104 -104
  654. package/assets/ts/components/tooltip/tooltip.component.ts +98 -98
  655. package/assets/ts/components/video/video.component.ts +74 -74
  656. package/assets/ts/components/video-card/video-card.component.ts +129 -129
  657. package/assets/ts/components/video-modal/video-modal.component.ts +88 -88
  658. package/assets/ts/modules/advanced-select.ts +186 -186
  659. package/assets/ts/modules/applied-filters.ts +238 -238
  660. package/assets/ts/modules/card.module.ts +46 -46
  661. package/assets/ts/modules/chart.module.ts +594 -594
  662. package/assets/ts/modules/data-layer.md +71 -71
  663. package/assets/ts/modules/dialogs.ts +259 -259
  664. package/assets/ts/modules/dropdown.ts +216 -216
  665. package/assets/ts/modules/helper.test.ts +143 -143
  666. package/assets/ts/modules/helpers.ts +212 -212
  667. package/assets/ts/modules/integration-tests.ts +525 -525
  668. package/assets/ts/modules/modal.ts +45 -45
  669. package/assets/ts/modules/password.ts +82 -82
  670. package/assets/ts/modules/table.ts +1500 -1500
  671. package/assets/ts/modules/test.ts +22 -22
  672. package/assets/ts/modules/videos.ts +233 -233
  673. package/assets/ts/scripts.ts +111 -111
  674. package/dist/components.es.js +25 -25
  675. package/dist/components.umd.js +27 -27
  676. package/package.json +115 -116
  677. package/src/components/AdvancedSelect/AdvancedSelect.vue +28 -28
  678. package/src/components/Config/Config.vue +23 -23
  679. package/src/components/DarkMode/DarkMode.vue +19 -19
  680. package/src/components/Filterlist/Filterlist.vue +23 -23
  681. package/src/components/Form/Form.vue +22 -22
  682. package/src/components/Header/Header.vue +36 -36
  683. package/src/components/Input/Input.vue +22 -22
  684. package/src/components/InputRange/InputRange.vue +22 -22
  685. package/src/components/Modal/Modal.vue +22 -22
  686. package/src/components/MultiStepModal/MultiStepModal.vue +23 -23
  687. package/src/components/NoteFeed/NoteFeed.vue +82 -82
  688. package/src/components/Password/Password.vue +23 -23
  689. package/src/components/Popover/Popover.vue +22 -22
  690. package/src/components/PropertySearchbar/PropertySearchbar.vue +235 -235
  691. package/src/components/PropertySearchbar/README.md +25 -25
  692. package/src/components/Rating/Rating.vue +22 -22
  693. package/src/components/STDAddressLookup/STDAddressLookup.vue +22 -22
  694. package/src/components/Snapshot/Snapshot.vue +30 -30
  695. package/src/components/Tag/Tag.vue +22 -22
  696. package/src/components/Tooltip/Tooltip.vue +22 -22
  697. package/src/components/Video/Video.vue +22 -22
  698. package/src/components/VideoModal/VideoModal.vue +22 -22
  699. package/assets/sass/utilities/gap.scss +0 -8
  700. package/assets/sass/utilities/order.scss +0 -43
  701. package/assets/sass/utilities/position.scss +0 -52
@@ -1 +1 @@
1
- {"version":3,"file":"calendar.component.min.js","sources":["../_global.js","../../modules/helpers.js","calendar.component.js"],"sourcesContent":["export const trackComponentRegistered = (componentName) => {\n // Data layer Web component created\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n event: 'customElementRegistered',\n element: componentName,\n });\n};\nexport const trackComponent = (component, componentName, trackEvents) => {\n // Data layer Web component created\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n event: 'customElementAdded',\n element: componentName,\n });\n trackEvents.forEach((eventName) => {\n component.addEventListener(eventName, function (event) {\n const eventDetails = {\n event: eventName,\n element: componentName,\n target: event.target,\n };\n Object.keys(event.detail).forEach((eventKey) => {\n const eventDetail = event.detail[eventKey];\n eventDetails[eventKey] = eventDetail;\n });\n window.dataLayer.push(eventDetails);\n });\n });\n return true;\n};\n","/**\n * Global helper functions to help maintain and enhance framework elements.\n * @module Helpers\n */\n/**\n * Add global classes used by the CSS and later JavaScript.\n * @param {HTMLElement} body Dom element, this doesn't have to be the body but it is recommended.\n */\nexport const addBodyClasses = (body) => {\n body.classList.add('js-enabled');\n if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) {\n body.classList.add('ie');\n }\n};\n/**\n * Add global events.\n * @param {HTMLElement} body Dom element, this doesn't have to be the body but it is recommended.\n */\nexport const addGlobalEvents = (body) => {\n const checkElements = function (hash) {\n const label = document.querySelector(`label[for=\"${hash.replace('#', '')}\"]`);\n const summary = document.querySelector(hash + ' summary');\n const dialog = document.querySelector(`dialog${hash}`);\n const detail = document.querySelector(`detail${hash}`);\n if (label instanceof HTMLElement)\n label.click();\n else if (summary instanceof HTMLElement)\n summary.click();\n else if (dialog instanceof HTMLElement)\n dialog.showModal();\n else if (detail instanceof HTMLElement)\n detail.addAttribute('open');\n };\n if (location.hash)\n checkElements(location.hash);\n window.addEventListener('hashchange', function () {\n checkElements(location.hash);\n }, false);\n addEventListener('popstate', (event) => {\n if (event && event.state && event.state.type && event.state.type == 'pagination') {\n const form = document.querySelector(`#${event.state.form}`);\n const pageInput = document.querySelector(`#${event.state.form} [data-pagination]`);\n if (pageInput)\n pageInput.value = event.state.page;\n else\n form.innerHTML += `<input name=\"page\" type=\"hidden\" data-pagination=\"true\" value=\"${event.state.page}\" />`;\n form.dispatchEvent(new Event('submit'));\n }\n });\n Array.from(document.querySelectorAll('form')).forEach((form) => {\n if (!(form === null || form === void 0 ? void 0 : form.closest('iam-form'))) {\n form.addEventListener('submit', (event) => {\n var _a;\n if (form.querySelector(':invalid')) {\n form.classList.add('was-validated');\n (_a = form === null || form === void 0 ? void 0 : form.querySelector('input:invalid')) === null || _a === void 0 ? void 0 : _a.scrollIntoView();\n event.preventDefault();\n }\n });\n }\n });\n document.addEventListener('click', (event) => {\n var _a;\n if (event && event.target instanceof HTMLElement && event.target.matches('form button:not([type=button])')) {\n const form = event.target.closest('form');\n if (!(form === null || form === void 0 ? void 0 : form.closest('iam-form'))) {\n // Reset password types\n Array.from(form.querySelectorAll('[data-password-type]')).forEach((input) => {\n input.setAttribute('type', 'password');\n });\n if (form.querySelector(':invalid') ||\n form.querySelector('.pwd-checker[data-strength=\"1\"]') ||\n form.querySelector('.pwd-checker[data-strength=\"2\"]')) {\n form.classList.add('was-validated');\n (_a = form === null || form === void 0 ? void 0 : form.querySelector('input:invalid')) === null || _a === void 0 ? void 0 : _a.scrollIntoView();\n event.preventDefault();\n }\n if (form.querySelector('iam-multiselect[data-is-required][data-error]')) {\n form.classList.add('was-validated');\n event.preventDefault();\n }\n }\n }\n });\n document.addEventListener('keydown', (e) => {\n if (e.key === 'Escape') {\n if (document.querySelector('.dialog--transactional[open], .dialog--acknowledgement[open]')) {\n e.preventDefault();\n e.stopPropagation();\n }\n }\n });\n Array.from(document.querySelectorAll('label progress')).forEach((progress) => {\n const label = progress.closest('label');\n label.setAttribute('data-percent', progress.getAttribute('value'));\n });\n};\nexport const isNumeric = function (str) {\n if (typeof str != 'string')\n return false; // we only process strings!\n return (!isNaN(str) && // use type coercion to parse the _entirety_ of the string (`parseFloat` alone does not do this)...\n !isNaN(parseFloat(str))); // ...and ensure strings of whitespace fail\n};\nexport const zeroPad = (num, places) => String(num).padStart(places, '0');\nexport const ucfirst = (str) => str.charAt(0).toUpperCase() + str.slice(1);\nexport const ucwords = (str) => str\n .split(' ')\n .map((s) => ucfirst(s))\n .join(' ');\nexport const unsnake = (str) => str.replace(/_/g, ' ');\nexport const snake = (str) => str.replace(/ /g, '_');\nexport const safeID = function (str) {\n str = str.toLowerCase();\n str = snake(str);\n str = str.replace(/\\W/g, '');\n return str;\n};\nexport const numberOfDays = function (startDateString, endDateString) {\n const convertStart = startDateString.split('/');\n const convertEnd = endDateString.split('/');\n const dateStart = new Date(convertStart[1] + '/' + convertStart[0] + '/' + convertStart[2]);\n const dateEnd = new Date(convertEnd[1] + '/' + convertEnd[0] + '/' + convertEnd[2]);\n if (dateStart == 'Invalid Date')\n throw 'Start date is not a valid date';\n if (dateEnd == 'Invalid Date')\n throw 'End date is not a valid date';\n // To calculate the time difference of two dates\n const diffTime = dateEnd.getTime() - dateStart.getTime();\n const numberOfDays = diffTime / (1000 * 3600 * 24) + 1;\n if (numberOfDays < 0)\n throw 'The start date should be before the end date';\n return numberOfDays;\n};\n// Used to get values from nested json objects\nexport const resolvePath = (object, path, defaultValue) => path\n // eslint-disable-next-line no-useless-escape\n .split(/[\\.\\[\\]\\'\\\"]/)\n .filter((p) => p)\n .reduce((o, p) => (o ? o[p] : defaultValue), object);\nexport const isTraversable = (o) => Array.isArray(o) || (o !== null && ['function', 'object'].includes(typeof o));\nexport const getSwipeDirection = (touchstartX, touchstartY, touchendX, touchendY) => {\n const limit = Math.tan(((45 * 1.5) / 180) * Math.PI);\n const pageWidth = window.innerWidth || document.body.clientWidth;\n const treshold = Math.max(1, Math.floor(0.01 * pageWidth));\n const x = touchendX - touchstartX;\n const y = touchendY - touchstartY;\n const xy = Math.abs(x / y);\n const yx = Math.abs(y / x);\n if (Math.abs(x) > treshold || Math.abs(y) > treshold) {\n if (yx <= limit) {\n if (x < 0) {\n return 'left';\n }\n else {\n return 'right';\n }\n }\n if (xy <= limit) {\n if (y < 0) {\n return 'top';\n }\n else {\n return 'bottom';\n }\n }\n }\n else {\n return 'tap';\n }\n};\nexport const uniqueID = (index = 1) => {\n const ID = Math.floor(Math.random() * Date.now() * (index + 1));\n return ID;\n};\nexport const isValidPostcode = (searchValue) => {\n const regexp = /^([A-Z][A-HJ-Y]?[0-9][A-Z0-9]? ?[0-9][A-Z]{2}|GIR ?0A{2})$/gmi;\n return regexp.test(searchValue.trim());\n};\n","import { trackComponent, trackComponentRegistered } from '../_global.js';\nimport { uniqueID } from '../../modules/helpers.js';\ntrackComponentRegistered('iam-calendar');\nclass iamCalendar extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n const assetLocation = document.body.hasAttribute('data-assets-location')\n ? document.body.getAttribute('data-assets-location')\n : '/assets';\n const loadCSS = `@import \"${assetLocation}/css/components/calendar.component.css\";`;\n const weekViewOnly = `<table class=\"table--day\" role=\"presentation\"><tbody>\n <tr class=\"allday\"><th>All day</th></tr>\n <tr><th data-hour=\"0\">00</th></tr>\n <tr><th data-hour=\"1\">01</th></tr>\n <tr><th data-hour=\"2\">02</th></tr>\n <tr><th data-hour=\"3\">03</th></tr>\n <tr><th data-hour=\"4\">04</th></tr>\n <tr><th data-hour=\"5\">05</th></tr>\n <tr><th data-hour=\"6\">06</th></tr>\n <tr><th data-hour=\"7\">07</th></tr>\n <tr><th data-hour=\"8\">08</th></tr>\n <tr><th data-hour=\"9\">09</th></tr>\n <tr><th data-hour=\"10\">10</th></tr>\n <tr><th data-hour=\"11\">11</th></tr>\n <tr><th data-hour=\"12\">12</th></tr>\n <tr><th data-hour=\"13\">13</th></tr>\n <tr><th data-hour=\"14\">14</th></tr>\n <tr><th data-hour=\"15\">15</th></tr>\n <tr><th data-hour=\"16\">16</th></tr>\n <tr><th data-hour=\"17\">17</th></tr>\n <tr><th data-hour=\"18\">18</th></tr>\n <tr><th data-hour=\"19\">19</th></tr>\n <tr><th data-hour=\"20\">20</th></tr>\n <tr><th data-hour=\"21\">21</th></tr>\n <tr><th data-hour=\"22\">22</th></tr>\n <tr><th data-hour=\"23\">23</th></tr>\n </tbody></table>`;\n const template = document.createElement('template');\n template.innerHTML = `\n <style>\n ${loadCSS}\n ${this.hasAttribute('css') ? `@import \"${this.getAttribute('css')}\";` : ``}\n </style>\n <div class=\"calendar__container\">\n\n <div class=\"calendar__controls\">\n <button id=\"today-button\" class=\"btn btn-action\">Today</button>\n\n\n <button id=\"prev-button\" class=\"btn btn-action fa-chevron-left border-0\"><span class=\"visually-hidden\">previous</span></button>\n <div class=\"calendar__datepicker\">\n <span class=\"calendar__title\"></span>\n <input type=\"date\" id=\"date\" name=\"date\" />\n </div>\n <button id=\"next-button\" class=\"btn btn-action fa-chevron-right border-0\"><span class=\"visually-hidden\">Next</span></button>\n \n <hr/>\n \n\n <select name=\"view\" id=\"view\" class=\"btn btn-action\">\n\n <button>\n <selectedcontent></selectedcontent> <i class=\"fa-regular fa-chevron-down\"></i>\n </button>\n\n <option value=\"month\"><i class=\"fa-light fa-calendar-days\"></i>Month</option>\n <option value=\"week\"><i class=\"fa-light fa-calendar-week\"></i>Week</option>\n <option value=\"day\"><i class=\"fa-light fa-calendar-day\"></i>Day</option>\n <option value=\"list\"><i class=\"fa-light fa-list\"></i>List</option>\n <option value=\"year\"><i class=\"fa-light fa-calendars\"></i>Year</option>\n </select>\n\n <label class=\"tag tag--toggle\"><input type=\"checkbox\" name=\"split\" value=\"true\">Split view</label>\n\n <button id=\"filters-button\" class=\"btn btn-action\"><i class=\"fa-light fa-sliders\"></i><span class=\"visually-hidden\">Filters</span></button>\n\n <button id=\"settings-button\" class=\"btn btn-action\"><i class=\"fa-light fa-gear\"></i><span class=\"visually-hidden\">Settings</span></button>\n \n </div>\n\n <dialog id=\"settings\">\n <button class=\"dialog__close\">Close</button>\n <span class=\"h3\">Calendar settings</span>\n\n <fieldset id=\"workday\" class=\"mb-5\">\n <label>Start time <span><input type=\"time\" id=\"start-time\" name=\"start-time\" step=\"3600\" value=\"08:00\" /><span class=\"suffix fa-regular fa-clock\" aria-hidden=\"true\"></span></span></label>\n <label>End time <span><input type=\"time\" id=\"end-time\" name=\"end-time\" step=\"3600\" value=\"18:00\" /><span class=\"suffix fa-regular fa-clock\" aria-hidden=\"true\"></span></span></label>\n\n </fieldset>\n\n <hr/>\n <fieldset>\n <span class=\"label\">Show weekends</span>\n <input type=\"radio\" name=\"weekends\" id=\"weekends-yes\" tabindex=\"-1\">\n <label for=\"weekends-yes\" class=\"d-inline-block\">Yes</label>\n <input type=\"radio\" name=\"weekends\" id=\"weekends-no\" tabindex=\"-1\">\n <label for=\"weekends-no\" class=\"d-inline-block\">No</label>\n </fieldset>\n <hr/>\n <button class=\"btn btn-primary\">Save settings</button>\n <button class=\"btn btn-secondary\">Cancel</button>\n\n </dialog>\n\n \n <div class=\"calendar__wrapper\">\n \n <div id=\"week-view-corner\" class=\"calendar\">\n <table>\n <thead>\n <tr>\n <th class=\"column-header\">Empty</th>\n </tr>\n </thead>\n <tbody>\n <tr class=\"allday\">\n <th>All day</th>\n </tr>\n </tbody>\n </table>\n </div>\n\n <div id=\"week-view-header\" class=\"calendar\">\n <table>\n <thead>\n </thead>\n <tbody>\n </tbody>\n </table>\n </div>\n\n <div id=\"week-view-side\">${weekViewOnly}</div>\n\n <div class=\"calendar month-wrapper\" id=\"calendar\" part=\"calendar\">\n <table>\n <thead>\n </thead>\n <tbody>\n </tbody>\n </table>\n </div>\n\n <div id=\"year-view\">\n </div>\n </div>\n\n\n <slot></slot>\n\n </div>\n `;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n this.monthArray = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ];\n this.dayArray = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n this.english_ordinal_rules = new Intl.PluralRules('en', { type: 'ordinal' });\n this.suffixes = {\n one: 'st',\n two: 'nd',\n few: 'rd',\n other: 'th',\n };\n this.calendars = ['Default']; // TO DO allow for these to be set via the component data attributes\n this.eventTypes = []; // TO DO allow for these to be set via the component data attributes\n this.pauseObserver = false;\n }\n createThead(sundayFirst) {\n if (sundayFirst)\n return `<tr>\n <th class=\"column-header sunday\"><span class=\"long-day-name\">Sunday</span><span class=\"short-day-name\" role=\"presentation\">Sun</span></th>\n <th class=\"column-header monday\"><span class=\"long-day-name\">Monday</span><span class=\"short-day-name\" role=\"presentation\">Mon</span></th>\n <th class=\"column-header tuesday\"><span class=\"long-day-name\">Tuesday</span><span class=\"short-day-name\" role=\"presentation\">Tues</span></th>\n <th class=\"column-header wednesday\"><span class=\"long-day-name\">Wednesday</span><span class=\"short-day-name\" role=\"presentation\">Wed</span></th>\n <th class=\"column-header thursday\"><span class=\"long-day-name\">Thursday</span><span class=\"short-day-name\" role=\"presentation\">Thurs</span></th>\n <th class=\"column-header friday\"><span class=\"long-day-name\">Friday</span><span class=\"short-day-name\" role=\"presentation\">Fri</span></th>\n <th class=\"column-header saturday\"><span class=\"long-day-name\">Saturday</span><span class=\"short-day-name\" role=\"presentation\">Sat</span></th>\n </tr>`;\n return `<tr>\n <th class=\"column-header monday\"><span class=\"long-day-name\">Monday</span><span class=\"short-day-name\" role=\"presentation\">Mon</span></th>\n <th class=\"column-header tuesday\"><span class=\"long-day-name\">Tuesday</span><span class=\"short-day-name\" role=\"presentation\">Tues</span></th>\n <th class=\"column-header wednesday\"><span class=\"long-day-name\">Wednesday</span><span class=\"short-day-name\" role=\"presentation\">Wed</span></th>\n <th class=\"column-header thursday\"><span class=\"long-day-name\">Thursday</span><span class=\"short-day-name\" role=\"presentation\">Thurs</span></th>\n <th class=\"column-header friday\"><span class=\"long-day-name\">Friday</span><span class=\"short-day-name\" role=\"presentation\">Fri</span></th>\n <th class=\"column-header saturday\"><span class=\"long-day-name\">Saturday</span><span class=\"short-day-name\" role=\"presentation\">Sat</span></th>\n <th class=\"column-header sunday\"><span class=\"long-day-name\">Sunday</span><span class=\"short-day-name\" role=\"presentation\">Sun</span></th>\n</tr>`;\n }\n numberDaysInMonth(year, month) {\n return new Date(year, month, 0).getDate();\n }\n getOrdinalNumber(number) {\n const category = this.english_ordinal_rules.select(number);\n const suffix = this.suffixes[category];\n return number + suffix;\n }\n setToMonday(date) {\n const day = date.getDay() || 7;\n if (day !== 1)\n date.setHours(-24 * (day - 1));\n return date;\n }\n setToSunday(date) {\n const monday = this.setToMonday(date);\n const sunday = new Date(monday);\n sunday.setDate(sunday.getDate() + 6);\n return sunday;\n }\n getTitle(dateStr, view) {\n const date = new Date(dateStr);\n const month = date.getMonth();\n const year = date.getFullYear();\n const day = date.getDate();\n const dayOfWeek = date.getDay() ? date.getDay() : 7;\n if (view == 'week') {\n const monday = this.setToMonday(new Date(dateStr));\n const sunday = this.setToSunday(new Date(dateStr));\n const mondayMonth = monday.getMonth();\n const mondayYear = monday.getFullYear();\n const mondayDay = monday.getDate();\n const sundayMonth = sunday.getMonth();\n const sundayYear = sunday.getFullYear();\n const sundayDay = sunday.getDate();\n return `${this.getOrdinalNumber(mondayDay)} ${mondayMonth != sundayMonth ? this.monthArray[sundayMonth] : ''} ${mondayYear != sundayYear ? mondayYear : ''} - ${this.getOrdinalNumber(sundayDay)} ${this.monthArray[sundayMonth]} ${sundayYear}`;\n }\n else if (view == 'day') {\n return `${this.dayArray[dayOfWeek]} ${this.getOrdinalNumber(day)} ${this.monthArray[month]} ${year}`;\n }\n else if (view == 'year') {\n return `${year}`;\n }\n return `${this.monthArray[month]} ${year}`;\n }\n createCalendar(selectedDate, today, sundayFirst) {\n const date = new Date(selectedDate);\n const month = date.getMonth();\n const year = date.getFullYear();\n const day = date.getDate();\n const selectedDateStr = `${year}-${String(month + 1).padStart(2, '0')}-${String(day).padStart(2, '0')}`;\n const daysThisMonth = this.numberDaysInMonth(year, month + 1);\n const startOfMonth = new Date(`${year}-${String(month + 1).padStart(2, '0')}-01`);\n const endOfMonth = new Date(`${year}-${String(month + 1).padStart(2, '0')}-${daysThisMonth}`);\n const startDay = startOfMonth.getDay() != 0 ? startOfMonth.getDay() : 7;\n const endDay = endOfMonth.getDay() != 0 ? endOfMonth.getDay() : 7;\n const loopDays = daysThisMonth + startDay + (7 - endDay - 1);\n // Get the previous month\n const prevMonthDate = new Date(selectedDate);\n prevMonthDate.setMonth(prevMonthDate.getMonth() - 1);\n const prevMonth = prevMonthDate.getMonth();\n const prevMonthYear = prevMonthDate.getFullYear();\n const daysPrevMonth = this.numberDaysInMonth(year, month);\n // Get the next month\n const nextMonthDate = new Date(selectedDate);\n nextMonthDate.setMonth(nextMonthDate.getMonth() + 1);\n const nextMonth = nextMonthDate.getMonth();\n const nextMonthYear = nextMonthDate.getFullYear();\n // Get calendars\n if (!this.hasAttribute('data-calendars')) {\n Array.from(this.querySelectorAll('button[data-calendar]')).forEach((element) => {\n // Scan through the buttons and look forunique calendar names\n if (!this.calendars.includes(element.getAttribute('data-calendar')))\n this.calendars.push(element.getAttribute('data-calendar'));\n });\n }\n // Create tbody string by looping through the number of days in month plus some days before and after\n let tbodyContent = `<tr>`;\n for (let i = sundayFirst ? 0 : 1; i <= loopDays; i++) {\n const loopDay = i - (startDay - 1);\n const loopDate = `${year}-${String(month + 1).padStart(2, '0')}-${String(loopDay).padStart(2, '0')}`;\n const dayOfWeek = i % 7;\n tbodyContent += `<td class=\"day--${this.dayArray[dayOfWeek].toLowerCase()} ${loopDate == today ? 'today' : ''} ${loopDate == selectedDateStr ? 'selected' : ''} ${i < startDay ? 'prev-month' : ''} ${loopDay > daysThisMonth ? 'next-month' : ''}\">`;\n // prev month days\n if (i < startDay) {\n const adjustedLoopDay = daysPrevMonth - (startDay - 1 - i);\n const adjustedLoopDate = `${prevMonthYear}-${String(prevMonth + 1).padStart(2, '0')}-${String(adjustedLoopDay).padStart(2, '0')}`;\n tbodyContent += `<time class=\"column-header\" datetime=\"${adjustedLoopDate}\" title=\"${this.dayArray[dayOfWeek]} ${loopDay} ${this.monthArray[prevMonth]} ${year}\"><span class=\"day-of-week\">${this.dayArray[dayOfWeek]} </span><span class=\"day\">${adjustedLoopDay}</span> <span class=\"month\">${this.monthArray[prevMonth]}</span></time>`;\n tbodyContent += this.addDay(adjustedLoopDate, this.calendars);\n }\n if (i >= startDay && loopDay <= daysThisMonth) {\n tbodyContent += `<time class=\"column-header\" datetime=\"${loopDate}\" title=\"${this.dayArray[dayOfWeek]} ${loopDay} ${this.monthArray[month]} ${year}\"><span class=\"day-of-week\">${this.dayArray[dayOfWeek]} </span><span class=\"day\">${loopDay}</span> <span class=\"month\">${this.monthArray[month]}</span></time>`;\n tbodyContent += this.addDay(loopDate, this.calendars);\n }\n // next month days\n if (loopDay > daysThisMonth) {\n const adjustedLoopDay = i - (startDay - 1) - daysThisMonth;\n const adjustedLoopDate = `${nextMonthYear}-${String(nextMonth + 1).padStart(2, '0')}-${String(adjustedLoopDay).padStart(2, '0')}`;\n tbodyContent += `<time class=\"column-header\" datetime=\"${adjustedLoopDate}\" title=\"${this.dayArray[dayOfWeek]} ${loopDay} ${this.monthArray[nextMonth]} ${year}\"><span class=\"day-of-week\">${this.dayArray[dayOfWeek]} </span><span class=\"day\">${adjustedLoopDay}</span> <span class=\"month\">${this.monthArray[nextMonth]}</span></time>`;\n tbodyContent += this.addDay(adjustedLoopDate, this.calendars);\n }\n tbodyContent += '</td>';\n // Close row and start a new one\n if ((sundayFirst ? i + 1 : i) % 7 === 0 && i != loopDays) {\n tbodyContent += `</tr><tr>`;\n }\n }\n tbodyContent += '</tr>';\n return tbodyContent;\n }\n addDay(day, calendars) {\n let htmlTable = '<table class=\"table--day\">';\n htmlTable += `<thead><tr><th>time</th>`;\n calendars.forEach((calendarTitle) => {\n htmlTable += `<th class=\"column-header\">${calendarTitle}</th>`;\n });\n htmlTable += `</tr></thead>`;\n htmlTable += `<tbody>`;\n htmlTable += `<tr class=\"allday\"><th>All day</th>`;\n calendars.forEach((calendarTitle) => {\n htmlTable += `<td datetime=\"${day}\" data-calendar=\"${calendarTitle}\"><span datetime=\"${day}\"></span></td>`;\n });\n htmlTable += `</tr>`;\n for (let i = 0; i < 24; i++) {\n htmlTable += `<tr class=\"hour${i}\"><th data-hour=\"${i}\">${i}${i < 12 ? 'am' : 'pm'}</th>`;\n calendars.forEach((calendarTitle) => {\n htmlTable += `<td datetime=\"${day}T${String(i).padStart(2, '0')}:00\" data-calendar=\"${calendarTitle}\"><span datetime=\"${day}T${String(i).padStart(2, '0')}:00\"></span><span datetime=\"${day}T${String(i).padStart(2, '0')}:15\"></span><span datetime=\"${day}T${String(i).padStart(2, '0')}:30\"></span><span datetime=\"${day}T${String(i).padStart(2, '0')}:45\"></span></td>`;\n });\n htmlTable += `</tr>`;\n }\n htmlTable += `</tbody>`;\n htmlTable += '</table>';\n return htmlTable;\n }\n addEvents() {\n function setDefaultEventValues(component, element, index) {\n const datetime = element.getAttribute('datetime');\n const datetimeArr = datetime.split('T');\n let id = element.getAttribute('id');\n // Add ID\n if (!element.hasAttribute('id')) {\n id = `event${uniqueID(index)}`;\n element.setAttribute('id', id);\n }\n // Wrap content in span for formatting in week/day view\n if (!element.querySelector('span:not(.tooltip__content')) {\n element.innerHTML = `<span>${element.innerHTML}</span>`;\n }\n // Add event type enum so we can set the correct colours\n //if(!element.hasAttribute('data-event-type-enum') && element.hasAttribute('data-event-type')){\n const eventType = element.getAttribute('data-event-type');\n if (!component.eventTypes.includes(eventType))\n component.eventTypes.push(eventType);\n element.setAttribute('data-event-type-enum', component.eventTypes.indexOf(eventType) + 1);\n //}\n // Add calendar enum so we can set the correct colours\n if (element.hasAttribute('data-calendar')) {\n const calendar = element.getAttribute('data-calendar');\n if (!component.calendars.includes(calendar))\n component.calendars.push(calendar);\n element.setAttribute('data-calendar-enum', component.calendars.indexOf(calendar) + 1);\n }\n if (!element.hasAttribute('data-calendar-enum')) {\n element.setAttribute('data-calendar-enum', 1);\n }\n if (!element.hasAttribute('data-hours') && !element.hasAttribute('data-days')) {\n if (datetimeArr[1]) {\n element.setAttribute('data-hours', 1);\n }\n else {\n element.setAttribute('data-days', 1);\n }\n }\n const getRoundedDate = (minutes, d = new Date()) => {\n const ms = 1000 * 60 * minutes; // convert minutes to ms\n const roundedDate = new Date(Math.round(d.getTime() / ms) * ms);\n const newMonth = roundedDate.getMonth();\n const newYear = roundedDate.getFullYear();\n const newDay = roundedDate.getDate();\n const newMinutes = roundedDate.getMinutes();\n const newHour = roundedDate.getHours();\n const strRoundedDate = `${newYear}-${String(newMonth + 1).padStart(2, '0')}-${String(newDay).padStart(2, '0')}T${String(newHour).padStart(2, '0')}:${String(newMinutes).padStart(2, '0')}`;\n return strRoundedDate;\n };\n if (datetimeArr[1]) {\n element.setAttribute('data-start', datetimeArr[1]);\n element.querySelector(':scope > span').setAttribute('data-start', datetimeArr[1]);\n const roundedDatetime = getRoundedDate(15, new Date(datetime));\n element.setAttribute('datetime', roundedDatetime);\n }\n if (element.querySelector('.tooltip__content')) {\n const tooltip = element.querySelector('.tooltip__content');\n tooltip.style.positionAnchor = `--${id}`;\n element.style.anchorName = `--${id}`;\n }\n element.classList.add('defaults-added');\n }\n function adjustEvent(component, element, continued) {\n var _a;\n const datetime = element.getAttribute('datetime');\n const date = new Date(datetime);\n const dayOfWeek = date.getDay() ? date.getDay() : 7;\n // Locate where we need to add slots for the buttons to go - We need duplicate slots for the split view and fixed header\n const timeTd = component.shadowRoot.querySelector(`.month-wrapper .table--day td:has(span[datetime=\"${datetime}\"])${element.hasAttribute('data-calendar') ? `[data-calendar=\"${element.getAttribute('data-calendar').replace('_', '')}\"]` : ''}`);\n const timeTdHeader = component.shadowRoot.querySelector(`#week-view-header .table--day td:has(span[datetime=\"${datetime}\"])${element.hasAttribute('data-calendar') ? `[data-calendar=\"${element.getAttribute('data-calendar').replace('_', '')}\"]` : ''}`);\n if (timeTdHeader && timeTdHeader.closest('tr').classList.contains('allday')) {\n // Add the alldays slot for the fixed header\n if (!timeTdHeader.querySelector(`slot[name=\"${datetime}${element.hasAttribute('data-calendar') ? `-${element.getAttribute('data-calendar').replace('_', '')}` : ''}-header]\"`)) {\n timeTdHeader\n .querySelector(`span[datetime=\"${datetime}\"]`)\n .insertAdjacentHTML('beforeEnd', `<slot name=\"${datetime}${element.hasAttribute('data-calendar') ? `-${element.getAttribute('data-calendar').replace('_', '')}` : ''}-header\" class=\"${continued ? 'continued' : ''}\"></slot>`);\n }\n }\n const dateTd = (_a = timeTd === null || timeTd === void 0 ? void 0 : timeTd.parentElement) === null || _a === void 0 ? void 0 : _a.closest('td');\n // original event needs a slot name adding\n element.setAttribute('slot', `${datetime}${element.hasAttribute('data-calendar') ? `-${element.getAttribute('data-calendar').replace('_', '')}` : ''}`);\n // Add matching slot to the event element to have it show in the correct place on the calendar\n if (timeTd) {\n // Add the default slot\n if (!timeTd.querySelector(`slot[name=\"${datetime}${element.hasAttribute('data-calendar') ? `-${element.getAttribute('data-calendar').replace('_', '')}` : ''}\"]`)) {\n timeTd\n .querySelector(`span[datetime=\"${datetime}\"]`)\n .insertAdjacentHTML('beforeEnd', `<slot name=\"${datetime}${element.hasAttribute('data-calendar') ? `-${element.getAttribute('data-calendar').replace('_', '')}` : ''}\" class=\"${continued ? 'continued' : ''}\"></slot>`);\n }\n // Set the classes need to create the grey bars in the mobile month view\n const events = dateTd.hasAttribute('data-events') ? parseInt(dateTd.getAttribute('data-events')) : 0;\n let hours = dateTd.hasAttribute('data-hours') ? parseFloat(dateTd.getAttribute('data-hours')) : 0;\n hours += element.hasAttribute('data-hours') ? parseFloat(element.getAttribute('data-hours')) : 0;\n dateTd.setAttribute('data-events', parseInt(events) + 1);\n if (events + 1 > 2)\n dateTd.setAttribute('data-more', parseInt(events) + 1 - 2);\n dateTd.setAttribute('data-hours', hours);\n dateTd.classList.add('has-event');\n if (timeTd.closest('tr').classList.contains('has-event'))\n timeTd.closest('tr').classList.add('multiple-event');\n else\n timeTd.closest('tr').classList.add('has-event');\n if (hours > 2)\n dateTd.classList.add('multi-events');\n if (hours > 4)\n dateTd.classList.add('busy-day');\n if (element.hasAttribute('data-days'))\n dateTd.classList.add('all-day');\n if (element.classList.contains('continued'))\n dateTd.classList.add('continued-day');\n }\n // Add CSS properties so we can control the size of the event elements for day and week view\n if (element.hasAttribute('data-hours'))\n element.style.setProperty('--event-height', `${parseInt(element.getAttribute('data-hours')) * (1.09375 * 4)}rem`);\n if (element.hasAttribute('data-days') && !element.classList.contains('processed')) {\n const eventDayTotal = element.getAttribute('data-days');\n element.style.setProperty('--event-width', `${eventDayTotal * 100}%`);\n element.style.setProperty('--event-max-width', `${(8 - dayOfWeek) * 100}%`);\n element.classList.add('allday-event');\n // Create a duplicate event for each day the orginal\n for (let i = 1; i < eventDayTotal; i++) {\n const cloneElement = element.cloneNode(true);\n cloneElement.removeAttribute('data-days');\n cloneElement.removeAttribute('style');\n cloneElement.classList.add('continued');\n cloneElement.classList.add('allday-event');\n const id = `event${uniqueID(i)}`;\n cloneElement.setAttribute('id', id);\n if (cloneElement.querySelector('.tooltip__content')) {\n const tooltip = cloneElement.querySelector('.tooltip__content');\n tooltip.style.positionAnchor = `--${id}`;\n cloneElement.style.anchorName = `--${id}`;\n }\n const newDate = new Date(datetime);\n newDate.setDate(newDate.getDate() + i);\n const newMonth = newDate.getMonth();\n const newYear = newDate.getFullYear();\n const newDay = newDate.getDate();\n const newDayOfWeek = newDate.getDay() ? newDate.getDay() : 7;\n const strCloneEvent = `${newYear}-${String(newMonth + 1).padStart(2, '0')}-${String(newDay).padStart(2, '0')}`;\n cloneElement.setAttribute('data-original-datetime', element.getAttribute('datetime'));\n cloneElement.setAttribute('datetime', strCloneEvent);\n element.after(cloneElement); // Add after original\n adjustEvent(component, cloneElement, true);\n if (newDayOfWeek == 1) {\n // Monday\n cloneElement.style.setProperty('--event-width', `${(eventDayTotal - i) * 100}%`);\n cloneElement.style.setProperty('--event-max-width', `${(8 - newDayOfWeek) * 100}%`);\n cloneElement.classList.remove('continued');\n }\n }\n }\n // Add flag so we dont have to re-do the above\n element.classList.add('processed');\n }\n this.pauseObserver = true;\n Array.from(this.querySelectorAll('button[datetime]')).forEach((element, index) => {\n setDefaultEventValues(this, element, index);\n adjustEvent(this, element);\n });\n setTimeout(() => {\n this.pauseObserver = false;\n }, '500');\n }\n addJSEvents(component) {\n var _a, _b, _c, _d, _e, _f, _g;\n // Add events to the newly created calendar\n const title = (_a = component.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.calendar__title');\n const datePicker = (_b = component.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector(`#date`);\n const viewPicker = (_c = component.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector(`#view`);\n const yearView = (_d = this.shadowRoot) === null || _d === void 0 ? void 0 : _d.querySelector('#year-view');\n const today = new Date();\n const date = today.getDate();\n const month = today.getMonth();\n const year = today.getFullYear();\n const strToday = `${year}-${String(month + 1).padStart(2, '0')}-${String(date).padStart(2, '0')}`;\n const tbody = (_e = component.shadowRoot) === null || _e === void 0 ? void 0 : _e.querySelector('#calendar > table > tbody');\n // clicking on the day istelf\n Array.from(component.shadowRoot.querySelectorAll('.month-wrapper > table > tbody > tr > td:has(slot)')).forEach((element) => {\n element.addEventListener('click', (event) => {\n if (!event.target.matches('button')) {\n const elementDate = element.querySelector('time').getAttribute('datetime');\n datePicker.value = elementDate;\n Array.from(tbody.querySelectorAll(':scope > tr > td')).forEach((innerelement) => {\n innerelement.classList.remove('selected');\n });\n element.classList.add('selected');\n // Go to day if the in month view with out split view enabled\n if (component.shadowRoot.querySelector('[name=\"split\"]:checked') && viewPicker.value == 'month') {\n Array.from(component.querySelectorAll(`[data-slot]`)).forEach((button) => {\n button.setAttribute('slot', button.getAttribute('data-slot'));\n });\n Array.from(component.querySelectorAll(`[slot^=\"${datePicker.value}\"]`)).forEach((button) => {\n button.setAttribute('data-slot', button.getAttribute('slot'));\n button.removeAttribute('slot');\n });\n }\n else if (!component.shadowRoot.querySelector('[name=\"split\"]:checked') && viewPicker.value == 'month') {\n viewPicker.value = 'day';\n title === null || title === void 0 ? void 0 : title.innerHTML = this.getTitle(datePicker.value, viewPicker.value);\n component.scrollIntoPlace();\n }\n if (viewPicker.value == 'year') {\n viewPicker.value = 'month';\n yearView === null || yearView === void 0 ? void 0 : yearView.innerHTML = '';\n tbody === null || tbody === void 0 ? void 0 : tbody.innerHTML = component.createCalendar(datePicker.value, strToday);\n component.addEvents();\n }\n }\n });\n });\n // Drag and drop\n (_f = component.shadowRoot) === null || _f === void 0 ? void 0 : _f.querySelectorAll(`#calendar .table--day td span`).forEach((element) => {\n element.addEventListener('dragover', (ev) => {\n ev.preventDefault();\n return false;\n });\n element.addEventListener('dragenter', (ev) => {\n ev.preventDefault();\n element.classList.add('dragover');\n });\n element.addEventListener('dragleave', (ev) => {\n ev.preventDefault();\n element.classList.remove('dragover');\n });\n element.addEventListener('drop', (ev) => {\n ev.preventDefault();\n const droppedElement = component.querySelector(`#${ev.dataTransfer.getData('text')}`);\n const td = element.closest('td');\n const datetime = element.getAttribute('datetime');\n element.classList.remove('dragover');\n // Add a new slot to te span if needed\n if (!element.querySelector(`slot[name=\"${datetime}${td.hasAttribute('data-calendar') ? `-${td.getAttribute('data-calendar').replace('_', '')}]` : ''}]\"`)) {\n element.insertAdjacentHTML('beforeEnd', `<slot name=\"${datetime}${td.hasAttribute('data-calendar') ? `-${td.getAttribute('data-calendar').replace('_', '')}` : ''}\" class=\"\"></slot>`);\n }\n // Update the slot attribute to match the slot the event has been dropped on\n droppedElement === null || droppedElement === void 0 ? void 0 : droppedElement.setAttribute('slot', `${datetime}${td.hasAttribute('data-calendar') ? `-${td.getAttribute('data-calendar').replace('_', '')}` : ''}`);\n });\n });\n // Watch for the event being resized\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (entry.target.classList.contains('mousedown'))\n entry.target.classList.add('resizing');\n }\n });\n if (component.hasAttribute('data-drag')) {\n component.querySelectorAll(`button:not([draggable])`).forEach((element) => {\n element.setAttribute('draggable', 'true');\n element.addEventListener('dragstart', (ev) => {\n ev.dataTransfer.setData('text', ev.target.id); // save the id for when dropped\n });\n // set onbserver\n resizeObserver.observe(element);\n element.addEventListener('mousedown', (ev) => {\n element.classList.add('mousedown');\n });\n element.addEventListener('click', (ev) => {\n if (element.classList.contains('resizing')) {\n ev.stopPropagation();\n ev.stopImmediatePropagation();\n element.classList.remove('mousedown');\n element.classList.remove('resizing');\n // Work out the evnt length in hours and set the height\n const span = this.shadowRoot.querySelector(`span[datetime=\"${element.getAttribute('datetime')}\"]`);\n const spanStyles = window.getComputedStyle(span);\n const hours = Math.round(parseInt(element.style.height) / parseInt(spanStyles.getPropertyValue('height'))) / 4;\n element.setAttribute('data-hours', hours);\n element.style.setProperty('--event-height', `${hours * (1.09375 * 4)}rem`);\n element.style.height = '';\n // to do dispatch event\n }\n });\n });\n }\n component.querySelectorAll(`button`).forEach((element) => {\n element.addEventListener('contextmenu', (event) => {\n event.preventDefault();\n event.stopPropagation();\n });\n });\n (_g = component.shadowRoot) === null || _g === void 0 ? void 0 : _g.querySelectorAll(`.month-wrapper > table > tbody > tr > td`).forEach((element) => {\n element.addEventListener('contextmenu', (event) => {\n event.preventDefault();\n const customEvent = new CustomEvent('right-click', {\n detail: {\n clientX: event.clientX,\n clientY: event.clientY,\n element: element,\n datetime: element.querySelector('time').getAttribute('datetime'),\n },\n });\n console.log(element);\n this.dispatchEvent(customEvent);\n });\n });\n }\n paginateDate(direction, view, currentDate) {\n if (view == 'month' || view == 'list') {\n const selectedDate = new Date(currentDate);\n if (direction == 'next')\n selectedDate.setMonth(selectedDate.getMonth() + 1);\n else\n selectedDate.setMonth(selectedDate.getMonth() - 1);\n const month = selectedDate.getMonth() + 1;\n const year = selectedDate.getFullYear();\n const strNextMonth = `${year}-${String(month).padStart(2, '0')}-01`;\n return strNextMonth;\n }\n else if (view == 'week') {\n //const selectedDate = new Date(currentDate);\n const monday = this.setToMonday(new Date(currentDate));\n if (direction == 'next')\n monday.setDate(monday.getDate() + 7);\n else\n monday.setDate(monday.getDate() - 7);\n const date = monday.getDate();\n const month = monday.getMonth() + 1;\n const year = monday.getFullYear();\n const strNextWeek = `${year}-${String(month).padStart(2, '0')}-${String(date).padStart(2, '0')}`;\n return strNextWeek;\n }\n else if (view == 'year') {\n const selectedDate = new Date(currentDate);\n if (direction == 'next')\n selectedDate.setYear(selectedDate.getFullYear() + 1);\n else\n selectedDate.setYear(selectedDate.getFullYear() - 1);\n const year = selectedDate.getFullYear();\n const month = selectedDate.getMonth() + 1;\n const strNextMonth = `${year}-${String(month).padStart(2, '0')}-01`;\n return strNextMonth;\n }\n const nextDay = new Date(currentDate);\n if (direction == 'next')\n nextDay.setDate(nextDay.getDate() + 1);\n else\n nextDay.setDate(nextDay.getDate() - 1);\n const date = nextDay.getDate();\n const month = nextDay.getMonth() + 1;\n const year = nextDay.getFullYear();\n const strNextDay = `${year}-${String(month).padStart(2, '0')}-${String(date).padStart(2, '0')}`;\n return strNextDay;\n }\n setWeekDay() {\n var _a, _b, _c, _d;\n (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelectorAll('.out-of-hours').forEach((element) => {\n element.classList.remove('out-of-hours');\n });\n const startTime = parseInt((_b = this.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#start-time').value.split(':')[0]);\n const endTime = parseInt((_c = this.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('#end-time').value.split(':')[0]);\n (_d = this.shadowRoot) === null || _d === void 0 ? void 0 : _d.querySelectorAll('[data-hour]').forEach((element) => {\n const hour = parseInt(element.getAttribute('data-hour'));\n if (hour < startTime)\n element.classList.add('out-of-hours');\n if (hour >= endTime)\n element.classList.add('out-of-hours');\n });\n }\n scrollIntoPlace() {\n var _a, _b;\n const fs = parseInt(window.getComputedStyle(document.body).getPropertyValue('font-size'));\n const startTime = parseInt((_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#start-time').value.split(':')[0]);\n const scrollPos = startTime * (4.5 * fs);\n const viewPicker = (_b = this.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector(`#view`);\n const wrapper = this.shadowRoot.querySelector('.calendar__wrapper');\n // scroll\n if (viewPicker.value == 'week')\n wrapper.scrollTo(0, scrollPos); // TO DO work out how much to scroll by\n else if (viewPicker.value == 'day') {\n wrapper.scrollTo(0, scrollPos); // TO DO work out how much to scroll by\n }\n }\n setupSettings() {\n var _a, _b;\n const settingsButton = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#settings-button');\n const settingsDialog = (_b = this.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#settings');\n // Setup the pre-defined attributes and display the form elements to match\n if (this.hasAttribute('data-hide-weekends'))\n settingsDialog.querySelector('#weekends-no').checked = true;\n else\n settingsDialog.querySelector('#weekends-yes').checked = true;\n if (this.hasAttribute('data-start-time'))\n settingsDialog.querySelector('#start-time').value = this.getAttribute('data-start-time');\n else\n this.setAttribute('data-start-time', settingsDialog.querySelector('#start-time').value);\n if (this.hasAttribute('data-end-time'))\n settingsDialog.querySelector('#end-time').value = this.getAttribute('data-end-time');\n else\n this.setAttribute('data-end-time', settingsDialog.querySelector('#end-time').value);\n // open dialog\n settingsButton === null || settingsButton === void 0 ? void 0 : settingsButton.addEventListener('click', () => {\n settingsDialog.showModal();\n settingsDialog.focus();\n const customEvent = new CustomEvent('open-settings');\n this.dispatchEvent(customEvent);\n });\n // On clicking the save button, adjust the data attributes\n settingsDialog === null || settingsDialog === void 0 ? void 0 : settingsDialog.addEventListener('click', (event) => {\n if (event && event.target.matches('button')) {\n if (event.target.matches('.btn-primary')) {\n if (settingsDialog.querySelector('#weekends-no:checked'))\n this.setAttribute('data-hide-weekends', 'true');\n else\n this.removeAttribute('data-hide-weekends');\n this.setAttribute('data-start-time', settingsDialog.querySelector('#start-time').value);\n this.setAttribute('data-end-time', settingsDialog.querySelector('#end-time').value);\n this.setWeekDay();\n const customEvent = new CustomEvent('save-settings');\n this.dispatchEvent(customEvent);\n }\n const customEvent = new CustomEvent('close-settings');\n this.dispatchEvent(customEvent);\n settingsDialog.close();\n }\n });\n }\n setTime() {\n var _a;\n if (!this.hasAttribute('data-time')) {\n const today = new Date();\n const hour = today.getHours();\n const minute = today.getMinutes();\n const time = `${hour}:${minute}`;\n this.setAttribute('data-time', time);\n }\n if (this.hasAttribute('data-time')) {\n const time = this.getAttribute('data-time');\n const hour = parseInt(time.split(':')[0]);\n const minute = parseInt(time.split(':')[1]);\n (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelectorAll(`[data-hour=\"${hour}\"]`).forEach((element) => {\n var _a;\n element.setAttribute('data-time', time);\n element.classList.add('column-header');\n (_a = element.closest('tr')) === null || _a === void 0 ? void 0 : _a.style.setProperty('--minute-pos', (minute / 60) * 100 + '%');\n });\n }\n }\n getYearView(selectedDate, today, sundayFirst) {\n let yearViewStr = '';\n for (let i = 0; i < 12; i++) {\n console.log(selectedDate);\n const selectedDateObj = new Date(selectedDate);\n const selectedYear = selectedDateObj.getFullYear();\n const selectedFormattedDate = `${selectedYear}-${String(i + 1).padStart(2, '0')}-01`;\n yearViewStr += `<div class='month-wrapper'>\n <time class=\"column-header\">${this.monthArray[i]}</time>\n <table>\n <thead>\n ${this.createThead(sundayFirst)}\n </thead>\n <tbody>\n ${this.createCalendar(selectedFormattedDate, today, sundayFirst)}\n </tbody>\n </table>\n </div>`;\n }\n return yearViewStr;\n }\n connectedCallback() {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\n // To to transform the below into variables of component to make more re-usable\n const title = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.calendar__title');\n const tbody = (_b = this.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#calendar > table > tbody');\n const thead = (_c = this.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('#calendar > table > thead');\n //const tbodySplit = this.shadowRoot?.querySelector('#split > table > tbody');\n //const theadSplit = this.shadowRoot?.querySelector('#split > table > thead');\n const weekViewHeader = (_d = this.shadowRoot) === null || _d === void 0 ? void 0 : _d.querySelector('#week-view-header > table > tbody');\n const yearView = (_e = this.shadowRoot) === null || _e === void 0 ? void 0 : _e.querySelector('#year-view');\n const datePicker = (_f = this.shadowRoot) === null || _f === void 0 ? void 0 : _f.querySelector(`#date`);\n const viewPicker = (_g = this.shadowRoot) === null || _g === void 0 ? void 0 : _g.querySelector(`#view`);\n const todayButton = (_h = this.shadowRoot) === null || _h === void 0 ? void 0 : _h.querySelector('#today-button');\n const filtersButton = (_j = this.shadowRoot) === null || _j === void 0 ? void 0 : _j.querySelector('#filters-button');\n const prevButton = (_k = this.shadowRoot) === null || _k === void 0 ? void 0 : _k.querySelector('#prev-button');\n const nextButton = (_l = this.shadowRoot) === null || _l === void 0 ? void 0 : _l.querySelector('#next-button');\n const sundayFirst = this.hasAttribute('data-sunday-first');\n const splitButton = (_m = this.shadowRoot) === null || _m === void 0 ? void 0 : _m.querySelector(`[name=\"split\"]`);\n // set the table head - starting by monday by default but can be changed to sunday\n thead === null || thead === void 0 ? void 0 : thead.innerHTML = this.createThead(sundayFirst);\n //theadSplit?.innerHTML = this.createThead(sundayFirst);\n // Get a formatted version of todays date\n const today = new Date();\n const date = today.getDate();\n const month = today.getMonth();\n const year = today.getFullYear();\n const strToday = `${year}-${String(month + 1).padStart(2, '0')}-${String(date).padStart(2, '0')}`;\n datePicker.value = strToday;\n // Setup the view, month being default\n if (this.hasAttribute('data-view'))\n viewPicker.value = this.getAttribute('data-view');\n else {\n this.setAttribute('data-view', 'month');\n viewPicker.value = 'month';\n }\n if (this.hasAttribute('data-views'))\n viewPicker === null || viewPicker === void 0 ? void 0 : viewPicker.setAttribute('data-views', this.getAttribute('data-views'));\n // Create the calendars\n if (this.hasAttribute('data-calendars')) {\n this.calendars = this.getAttribute('data-calendars').split(',');\n this.calendars.forEach((item, index) => {\n this.calendars[index] = item.trim();\n });\n }\n // Setup the settings dialog\n this.setupSettings();\n // Setup the calendar then adjust and add events\n title === null || title === void 0 ? void 0 : title.innerHTML = this.getTitle(strToday, viewPicker.value);\n const calendarHtml = this.createCalendar(strToday, strToday, sundayFirst);\n tbody === null || tbody === void 0 ? void 0 : tbody.innerHTML = calendarHtml;\n //tbodySplit?.innerHTML = calendarHtml;\n weekViewHeader === null || weekViewHeader === void 0 ? void 0 : weekViewHeader.innerHTML = calendarHtml;\n if (viewPicker.value == 'year') {\n yearView === null || yearView === void 0 ? void 0 : yearView.innerHTML = this.getYearView(datePicker.value, strToday, sundayFirst);\n tbody === null || tbody === void 0 ? void 0 : tbody.innerHTML = '';\n }\n this.addEvents();\n this.addJSEvents(this);\n this.setWeekDay(); // Working hours\n this.setTime(); // Month and day view has a current time indicator\n this.scrollIntoPlace(); // Scroll into place - month and day view needs have the weekday hours in place\n // #region Add events for the basic top controls\n // Remove the slot attribute on selected days when in split mode\n splitButton === null || splitButton === void 0 ? void 0 : splitButton.addEventListener('change', () => {\n if (splitButton.checked) {\n Array.from(this.querySelectorAll(`[slot^=\"${datePicker.value}\"]`)).forEach((button) => {\n button.setAttribute('data-slot', button.getAttribute('slot'));\n button.removeAttribute('slot');\n });\n }\n else {\n Array.from(this.querySelectorAll(`[data-slot]`)).forEach((button) => {\n button.setAttribute('slot', button.getAttribute('data-slot'));\n });\n }\n });\n const resizeObserver = new ResizeObserver((entries) => {\n const splitButtonDisplayed = window.getComputedStyle(splitButton === null || splitButton === void 0 ? void 0 : splitButton.parentElement, null).display;\n if (splitButtonDisplayed == 'none') {\n Array.from(this.querySelectorAll(`[data-slot]`)).forEach((button) => {\n button.setAttribute('slot', button.getAttribute('data-slot'));\n });\n splitButton.checked = false;\n }\n });\n resizeObserver.observe(this);\n viewPicker === null || viewPicker === void 0 ? void 0 : viewPicker.addEventListener('change', () => {\n title === null || title === void 0 ? void 0 : title.innerHTML = this.getTitle(datePicker.value, viewPicker.value);\n this.setAttribute('data-view', viewPicker.value);\n if (viewPicker.value == 'week') {\n Array.from(this.querySelectorAll(`.allday-event`)).forEach((button) => {\n button.setAttribute('slot', button.getAttribute('slot') + '-header');\n });\n }\n else {\n Array.from(this.querySelectorAll(`.allday-event`)).forEach((button) => {\n var _a;\n button.setAttribute('slot', (_a = button.getAttribute('slot')) === null || _a === void 0 ? void 0 : _a.replace('-header', ''));\n });\n }\n if (viewPicker.value == 'week' || viewPicker.value == 'day')\n this.scrollIntoPlace();\n if (viewPicker.value != 'month') {\n Array.from(this.querySelectorAll(`[data-slot^=\"${datePicker.value}\"]`)).forEach((button) => {\n button.setAttribute('slot', button.getAttribute('data-slot'));\n });\n }\n if (viewPicker.value == 'year') {\n yearView === null || yearView === void 0 ? void 0 : yearView.innerHTML = this.getYearView(datePicker.value, strToday, sundayFirst);\n tbody === null || tbody === void 0 ? void 0 : tbody.innerHTML = '';\n this.addEvents();\n this.addJSEvents(this);\n this.setWeekDay(); // Working hours\n this.setTime(); // Month and day view has a current time indicator\n this.scrollIntoPlace();\n }\n else if ((tbody === null || tbody === void 0 ? void 0 : tbody.innerHTML) == '') {\n yearView === null || yearView === void 0 ? void 0 : yearView.innerHTML = '';\n tbody === null || tbody === void 0 ? void 0 : tbody.innerHTML = this.createCalendar(datePicker.value, strToday);\n this.addEvents();\n this.addJSEvents(this);\n this.setWeekDay(); // Working hours\n this.setTime(); // Month and day view has a current time indicator\n this.scrollIntoPlace();\n }\n const customEvent = new CustomEvent('change-view', {\n detail: {\n view: viewPicker.value,\n date: datePicker.value,\n },\n });\n this.dispatchEvent(customEvent);\n });\n function resetCalendar(component) {\n if (viewPicker.value == 'year') {\n yearView === null || yearView === void 0 ? void 0 : yearView.innerHTML = component.getYearView(datePicker.value, strToday, sundayFirst);\n tbody === null || tbody === void 0 ? void 0 : tbody.innerHTML = '';\n component.addEvents();\n component.addJSEvents(component);\n component.setWeekDay(); // Working hours\n component.setTime(); // Month and day view has a current time indicator\n }\n else {\n const calendarHtml = component.createCalendar(datePicker.value, strToday);\n tbody === null || tbody === void 0 ? void 0 : tbody.innerHTML = calendarHtml;\n //tbodySplit?.innerHTML = calendarHtml;\n weekViewHeader === null || weekViewHeader === void 0 ? void 0 : weekViewHeader.innerHTML = calendarHtml;\n component.addEvents();\n component.addJSEvents(component);\n component.setWeekDay();\n component.setTime();\n }\n }\n function updateCalendar(component) {\n Array.from(component.shadowRoot.querySelectorAll('.selected')).forEach((element) => {\n element.classList.remove('selected');\n });\n Array.from(component.shadowRoot.querySelectorAll(`td:has(time[datetime=\"${datePicker.value}\"]):not(.prev-month, .next-month)`)).forEach((element) => {\n element.classList.add('selected');\n });\n }\n datePicker === null || datePicker === void 0 ? void 0 : datePicker.addEventListener('change', () => {\n title === null || title === void 0 ? void 0 : title.innerHTML = this.getTitle(datePicker.value, viewPicker.value);\n if (this.shadowRoot.querySelector(`td:has(time[datetime=\"${datePicker.value}\"]):not(.prev-month, .next-month)`))\n updateCalendar(this);\n else\n resetCalendar(this);\n const customEvent = new CustomEvent('change-date', {\n detail: {\n view: viewPicker.value,\n date: datePicker.value,\n },\n });\n this.dispatchEvent(customEvent);\n });\n filtersButton === null || filtersButton === void 0 ? void 0 : filtersButton.addEventListener('click', () => {\n const customEvent = new CustomEvent('open-filters');\n this.dispatchEvent(customEvent);\n });\n // HTML Observer\n const htmlUpdated = (mutationList, observer) => {\n observer.disconnect();\n console.log(this.pauseObserver);\n if (this.pauseObserver == false) {\n for (const mutation of mutationList) {\n if (mutation.type == 'characterData' ||\n (mutation.type == 'childList' && mutation.addedNodes.length) ||\n mutation.type === 'attributes') {\n //resetCalendar(this);\n this.addEvents();\n }\n }\n }\n observer.observe(this, { childList: true, characterData: true, subtree: true, attributes: true });\n };\n const observer = new MutationObserver(htmlUpdated);\n observer.observe(this, { childList: true, characterData: true, subtree: true, attributes: true });\n todayButton === null || todayButton === void 0 ? void 0 : todayButton.addEventListener('click', () => {\n datePicker.value = strToday;\n title === null || title === void 0 ? void 0 : title.innerHTML = this.getTitle(datePicker.value, viewPicker.value);\n if (this.shadowRoot.querySelector(`td:has(time[datetime=\"${datePicker.value}\"]):not(.prev-month, .next-month)`))\n updateCalendar(this);\n else\n resetCalendar(this);\n const customEvent = new CustomEvent('change-date-today', {\n detail: {\n view: viewPicker.value,\n date: datePicker.value,\n },\n });\n this.dispatchEvent(customEvent);\n });\n prevButton === null || prevButton === void 0 ? void 0 : prevButton.addEventListener('click', () => {\n datePicker.value = this.paginateDate('prev', viewPicker.value, datePicker.value);\n title === null || title === void 0 ? void 0 : title.innerHTML = this.getTitle(datePicker.value, viewPicker.value);\n if (this.shadowRoot.querySelector(`td:has(time[datetime=\"${datePicker.value}\"]):not(.prev-month, .next-month)`))\n updateCalendar(this);\n else\n resetCalendar(this);\n const customEvent = new CustomEvent('change-date-previous', {\n detail: {\n view: viewPicker.value,\n date: datePicker.value,\n },\n });\n this.dispatchEvent(customEvent);\n });\n nextButton === null || nextButton === void 0 ? void 0 : nextButton.addEventListener('click', () => {\n datePicker.value = this.paginateDate('next', viewPicker.value, datePicker.value);\n title === null || title === void 0 ? void 0 : title.innerHTML = this.getTitle(datePicker.value, viewPicker.value);\n console.log(datePicker.value);\n if (this.shadowRoot.querySelector(`td:has(time[datetime=\"${datePicker.value}\"]):not(.prev-month, .next-month)`))\n updateCalendar(this);\n else\n resetCalendar(this);\n const customEvent = new CustomEvent('change-date-next', {\n detail: {\n view: viewPicker.value,\n date: datePicker.value,\n },\n });\n this.dispatchEvent(customEvent);\n });\n // #endregion\n // TODO\n trackComponent(this, 'iam-calendar', [\n 'open-filters',\n 'change-view',\n 'change-date',\n 'change-date-today',\n 'change-date-previous',\n 'change-date-next',\n 'open-settings',\n 'close-settings',\n 'save-settings',\n ]);\n }\n static get observedAttributes() {\n return ['data-calendars', 'data-view'];\n }\n attributeChangedCallback(attrName, oldVal, newVal) {\n var _a, _b, _c, _d;\n this.pauseObserver = true;\n switch (attrName) {\n case 'data-calendars': {\n if (oldVal != newVal) {\n const tbody = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#calendar > table > tbody');\n const weekViewHeader = (_b = this.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#week-view-header > table > tbody');\n const datePicker = (_c = this.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector(`#date`);\n // Get a formatted version of todays date\n const today = new Date();\n const date = today.getDate();\n const month = today.getMonth();\n const year = today.getFullYear();\n const strToday = `${year}-${String(month + 1).padStart(2, '0')}-${String(date).padStart(2, '0')}`;\n if (this.hasAttribute('data-calendars')) {\n this.calendars = this.getAttribute('data-calendars').split(',');\n this.calendars.forEach((item, index) => {\n this.calendars[index] = item.trim();\n });\n }\n const calendarHtml = this.createCalendar(datePicker.value, strToday);\n tbody === null || tbody === void 0 ? void 0 : tbody.innerHTML = calendarHtml;\n weekViewHeader === null || weekViewHeader === void 0 ? void 0 : weekViewHeader.innerHTML = calendarHtml;\n this.addEvents();\n this.addJSEvents(this);\n this.setWeekDay();\n this.setTime();\n }\n break;\n }\n case 'data-view': {\n if (oldVal != newVal) {\n const viewPicker = (_d = this.shadowRoot) === null || _d === void 0 ? void 0 : _d.querySelector(`#view`);\n viewPicker.value = newVal;\n viewPicker.dispatchEvent(new Event('change'));\n }\n break;\n }\n }\n setTimeout(() => {\n this.pauseObserver = false;\n }, '500');\n }\n}\nexport default iamCalendar;\n"],"names":["trackComponentRegistered","componentName","trackComponent","component","trackEvents","eventName","event","eventDetails","eventKey","eventDetail","uniqueID","index","iamCalendar","weekViewOnly","template","sundayFirst","year","month","number","category","suffix","date","day","monday","sunday","dateStr","view","dayOfWeek","mondayMonth","mondayYear","mondayDay","sundayMonth","sundayYear","sundayDay","selectedDate","today","selectedDateStr","daysThisMonth","startOfMonth","endOfMonth","startDay","endDay","loopDays","prevMonthDate","prevMonth","prevMonthYear","daysPrevMonth","nextMonthDate","nextMonth","nextMonthYear","element","tbodyContent","i","loopDay","loopDate","adjustedLoopDay","adjustedLoopDate","calendars","htmlTable","calendarTitle","setDefaultEventValues","datetime","datetimeArr","id","eventType","calendar","getRoundedDate","minutes","d","ms","roundedDate","newMonth","newYear","newDay","newMinutes","newHour","roundedDatetime","tooltip","adjustEvent","continued","_a","timeTd","timeTdHeader","dateTd","events","hours","eventDayTotal","cloneElement","newDate","newDayOfWeek","strCloneEvent","_b","_c","_d","_e","_f","_g","title","datePicker","viewPicker","yearView","strToday","tbody","elementDate","innerelement","button","ev","droppedElement","td","resizeObserver","entries","entry","span","spanStyles","customEvent","direction","currentDate","nextDay","startTime","endTime","hour","fs","scrollPos","wrapper","settingsButton","settingsDialog","minute","time","yearViewStr","selectedFormattedDate","_h","_j","_k","_l","_m","thead","weekViewHeader","todayButton","filtersButton","prevButton","nextButton","splitButton","item","calendarHtml","resetCalendar","updateCalendar","htmlUpdated","mutationList","observer","mutation","attrName","oldVal","newVal"],"mappings":"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"}
1
+ {"version":3,"file":"calendar.component.min.js","sources":["../_global.js","../../modules/helpers.js","calendar.component.js"],"sourcesContent":["export const trackComponentRegistered = (componentName) => {\n // Data layer Web component created\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n event: 'customElementRegistered',\n element: componentName,\n });\n};\nexport const trackComponent = (component, componentName, trackEvents) => {\n // Data layer Web component created\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n event: 'customElementAdded',\n element: componentName,\n });\n trackEvents.forEach((eventName) => {\n component.addEventListener(eventName, function (event) {\n const eventDetails = {\n event: eventName,\n element: componentName,\n target: event.target,\n };\n Object.keys(event.detail).forEach((eventKey) => {\n const eventDetail = event.detail[eventKey];\n eventDetails[eventKey] = eventDetail;\n });\n window.dataLayer.push(eventDetails);\n });\n });\n return true;\n};\n","/**\n * Global helper functions to help maintain and enhance framework elements.\n * @module Helpers\n */\n/**\n * Add global classes used by the CSS and later JavaScript.\n * @param {HTMLElement} body Dom element, this doesn't have to be the body but it is recommended.\n */\nexport const addBodyClasses = (body) => {\n body.classList.add('js-enabled');\n if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) {\n body.classList.add('ie');\n }\n};\n/**\n * Add global events.\n * @param {HTMLElement} body Dom element, this doesn't have to be the body but it is recommended.\n */\nexport const addGlobalEvents = (body) => {\n const checkElements = function (hash) {\n const label = document.querySelector(`label[for=\"${hash.replace('#', '')}\"]`);\n const summary = document.querySelector(hash + ' summary');\n const dialog = document.querySelector(`dialog${hash}`);\n const detail = document.querySelector(`detail${hash}`);\n if (label instanceof HTMLElement)\n label.click();\n else if (summary instanceof HTMLElement)\n summary.click();\n else if (dialog instanceof HTMLElement)\n dialog.showModal();\n else if (detail instanceof HTMLElement)\n detail.addAttribute('open');\n };\n if (location.hash)\n checkElements(location.hash);\n window.addEventListener('hashchange', function () {\n checkElements(location.hash);\n }, false);\n addEventListener('popstate', (event) => {\n if (event && event.state && event.state.type && event.state.type == 'pagination') {\n const form = document.querySelector(`#${event.state.form}`);\n const pageInput = document.querySelector(`#${event.state.form} [data-pagination]`);\n if (pageInput)\n pageInput.value = event.state.page;\n else\n form.innerHTML += `<input name=\"page\" type=\"hidden\" data-pagination=\"true\" value=\"${event.state.page}\" />`;\n form.dispatchEvent(new Event('submit'));\n }\n });\n Array.from(document.querySelectorAll('form')).forEach((form) => {\n if (!(form === null || form === void 0 ? void 0 : form.closest('iam-form'))) {\n form.addEventListener('submit', (event) => {\n var _a;\n if (form.querySelector(':invalid')) {\n form.classList.add('was-validated');\n (_a = form === null || form === void 0 ? void 0 : form.querySelector('input:invalid')) === null || _a === void 0 ? void 0 : _a.scrollIntoView();\n event.preventDefault();\n }\n });\n }\n });\n document.addEventListener('click', (event) => {\n var _a;\n if (event && event.target instanceof HTMLElement && event.target.matches('form button:not([type=button])')) {\n const form = event.target.closest('form');\n if (!(form === null || form === void 0 ? void 0 : form.closest('iam-form'))) {\n // Reset password types\n Array.from(form.querySelectorAll('[data-password-type]')).forEach((input) => {\n input.setAttribute('type', 'password');\n });\n if (form.querySelector(':invalid') ||\n form.querySelector('.pwd-checker[data-strength=\"1\"]') ||\n form.querySelector('.pwd-checker[data-strength=\"2\"]')) {\n form.classList.add('was-validated');\n (_a = form === null || form === void 0 ? void 0 : form.querySelector('input:invalid')) === null || _a === void 0 ? void 0 : _a.scrollIntoView();\n event.preventDefault();\n }\n if (form.querySelector('iam-multiselect[data-is-required][data-error]')) {\n form.classList.add('was-validated');\n event.preventDefault();\n }\n }\n }\n });\n document.addEventListener('keydown', (e) => {\n if (e.key === 'Escape') {\n if (document.querySelector('.dialog--transactional[open], .dialog--acknowledgement[open]')) {\n e.preventDefault();\n e.stopPropagation();\n }\n }\n });\n Array.from(document.querySelectorAll('label progress')).forEach((progress) => {\n const label = progress.closest('label');\n label.setAttribute('data-percent', progress.getAttribute('value'));\n });\n};\nexport const isNumeric = function (str) {\n if (typeof str != 'string')\n return false; // we only process strings!\n return (!isNaN(str) && // use type coercion to parse the _entirety_ of the string (`parseFloat` alone does not do this)...\n !isNaN(parseFloat(str))); // ...and ensure strings of whitespace fail\n};\nexport const zeroPad = (num, places) => String(num).padStart(places, '0');\nexport const ucfirst = (str) => str.charAt(0).toUpperCase() + str.slice(1);\nexport const ucwords = (str) => str\n .split(' ')\n .map((s) => ucfirst(s))\n .join(' ');\nexport const unsnake = (str) => str.replace(/_/g, ' ');\nexport const snake = (str) => str.replace(/ /g, '_');\nexport const safeID = function (str) {\n str = str.toLowerCase();\n str = snake(str);\n str = str.replace(/\\W/g, '');\n return str;\n};\nexport const numberOfDays = function (startDateString, endDateString) {\n const convertStart = startDateString.split('/');\n const convertEnd = endDateString.split('/');\n const dateStart = new Date(convertStart[1] + '/' + convertStart[0] + '/' + convertStart[2]);\n const dateEnd = new Date(convertEnd[1] + '/' + convertEnd[0] + '/' + convertEnd[2]);\n if (dateStart == 'Invalid Date')\n throw 'Start date is not a valid date';\n if (dateEnd == 'Invalid Date')\n throw 'End date is not a valid date';\n // To calculate the time difference of two dates\n const diffTime = dateEnd.getTime() - dateStart.getTime();\n const numberOfDays = diffTime / (1000 * 3600 * 24) + 1;\n if (numberOfDays < 0)\n throw 'The start date should be before the end date';\n return numberOfDays;\n};\n// Used to get values from nested json objects\nexport const resolvePath = (object, path, defaultValue) => path\n // eslint-disable-next-line no-useless-escape\n .split(/[\\.\\[\\]\\'\\\"]/)\n .filter((p) => p)\n .reduce((o, p) => (o ? o[p] : defaultValue), object);\nexport const isTraversable = (o) => Array.isArray(o) || (o !== null && ['function', 'object'].includes(typeof o));\nexport const getSwipeDirection = (touchstartX, touchstartY, touchendX, touchendY) => {\n const limit = Math.tan(((45 * 1.5) / 180) * Math.PI);\n const pageWidth = window.innerWidth || document.body.clientWidth;\n const treshold = Math.max(1, Math.floor(0.01 * pageWidth));\n const x = touchendX - touchstartX;\n const y = touchendY - touchstartY;\n const xy = Math.abs(x / y);\n const yx = Math.abs(y / x);\n if (Math.abs(x) > treshold || Math.abs(y) > treshold) {\n if (yx <= limit) {\n if (x < 0) {\n return 'left';\n }\n else {\n return 'right';\n }\n }\n if (xy <= limit) {\n if (y < 0) {\n return 'top';\n }\n else {\n return 'bottom';\n }\n }\n }\n else {\n return 'tap';\n }\n};\nexport const uniqueID = (index = 1) => {\n const ID = Math.floor(Math.random() * Date.now() * (index + 1));\n return ID;\n};\nexport const isValidPostcode = (searchValue) => {\n const regexp = /^([A-Z][A-HJ-Y]?[0-9][A-Z0-9]? ?[0-9][A-Z]{2}|GIR ?0A{2})$/gmi;\n return regexp.test(searchValue.trim());\n};\n","import { trackComponent, trackComponentRegistered } from '../_global';\nimport { uniqueID } from '../../modules/helpers';\ntrackComponentRegistered('iam-calendar');\nclass iamCalendar extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n const assetLocation = document.body.hasAttribute('data-assets-location')\n ? document.body.getAttribute('data-assets-location')\n : '/assets';\n const loadCSS = `@import \"${assetLocation}/css/components/calendar.component.css\";`;\n const weekViewOnly = `<table class=\"table--day\" role=\"presentation\"><tbody>\n <tr class=\"allday\"><th>All day</th></tr>\n <tr><th data-hour=\"0\">00</th></tr>\n <tr><th data-hour=\"1\">01</th></tr>\n <tr><th data-hour=\"2\">02</th></tr>\n <tr><th data-hour=\"3\">03</th></tr>\n <tr><th data-hour=\"4\">04</th></tr>\n <tr><th data-hour=\"5\">05</th></tr>\n <tr><th data-hour=\"6\">06</th></tr>\n <tr><th data-hour=\"7\">07</th></tr>\n <tr><th data-hour=\"8\">08</th></tr>\n <tr><th data-hour=\"9\">09</th></tr>\n <tr><th data-hour=\"10\">10</th></tr>\n <tr><th data-hour=\"11\">11</th></tr>\n <tr><th data-hour=\"12\">12</th></tr>\n <tr><th data-hour=\"13\">13</th></tr>\n <tr><th data-hour=\"14\">14</th></tr>\n <tr><th data-hour=\"15\">15</th></tr>\n <tr><th data-hour=\"16\">16</th></tr>\n <tr><th data-hour=\"17\">17</th></tr>\n <tr><th data-hour=\"18\">18</th></tr>\n <tr><th data-hour=\"19\">19</th></tr>\n <tr><th data-hour=\"20\">20</th></tr>\n <tr><th data-hour=\"21\">21</th></tr>\n <tr><th data-hour=\"22\">22</th></tr>\n <tr><th data-hour=\"23\">23</th></tr>\n </tbody></table>`;\n const template = document.createElement('template');\n template.innerHTML = `\n <style>\n ${loadCSS}\n ${this.hasAttribute('css') ? `@import \"${this.getAttribute('css')}\";` : ``}\n </style>\n <div class=\"calendar__container\">\n\n <div class=\"calendar__controls\">\n <button id=\"today-button\" class=\"btn btn-action\">Today</button>\n\n\n <button id=\"prev-button\" class=\"btn btn-action fa-chevron-left border-0\"><span class=\"visually-hidden\">previous</span></button>\n <div class=\"calendar__datepicker\">\n <span class=\"calendar__title\"></span>\n <input type=\"date\" id=\"date\" name=\"date\" />\n </div>\n <button id=\"next-button\" class=\"btn btn-action fa-chevron-right border-0\"><span class=\"visually-hidden\">Next</span></button>\n \n <hr/>\n \n\n <select name=\"view\" id=\"view\" class=\"btn btn-action\">\n\n <button>\n <selectedcontent></selectedcontent> <i class=\"fa-regular fa-chevron-down\"></i>\n </button>\n\n <option value=\"month\"><i class=\"fa-light fa-calendar-days\"></i>Month</option>\n <option value=\"week\"><i class=\"fa-light fa-calendar-week\"></i>Week</option>\n <option value=\"day\"><i class=\"fa-light fa-calendar-day\"></i>Day</option>\n <option value=\"list\"><i class=\"fa-light fa-list\"></i>List</option>\n <option value=\"year\"><i class=\"fa-light fa-calendars\"></i>Year</option>\n </select>\n\n <label class=\"tag tag--toggle\"><input type=\"checkbox\" name=\"split\" value=\"true\">Split view</label>\n\n <button id=\"filters-button\" class=\"btn btn-action\"><i class=\"fa-light fa-sliders\"></i><span class=\"visually-hidden\">Filters</span></button>\n\n <button id=\"settings-button\" class=\"btn btn-action\"><i class=\"fa-light fa-gear\"></i><span class=\"visually-hidden\">Settings</span></button>\n \n </div>\n\n <dialog id=\"settings\">\n <button class=\"dialog__close\">Close</button>\n <span class=\"h3\">Calendar settings</span>\n\n <fieldset id=\"workday\" class=\"mb-5\">\n <label>Start time <span><input type=\"time\" id=\"start-time\" name=\"start-time\" step=\"3600\" value=\"08:00\" /><span class=\"suffix fa-regular fa-clock\" aria-hidden=\"true\"></span></span></label>\n <label>End time <span><input type=\"time\" id=\"end-time\" name=\"end-time\" step=\"3600\" value=\"18:00\" /><span class=\"suffix fa-regular fa-clock\" aria-hidden=\"true\"></span></span></label>\n\n </fieldset>\n\n <hr/>\n <fieldset>\n <span class=\"label\">Show weekends</span>\n <input type=\"radio\" name=\"weekends\" id=\"weekends-yes\" tabindex=\"-1\">\n <label for=\"weekends-yes\" class=\"d-inline-block\">Yes</label>\n <input type=\"radio\" name=\"weekends\" id=\"weekends-no\" tabindex=\"-1\">\n <label for=\"weekends-no\" class=\"d-inline-block\">No</label>\n </fieldset>\n <hr/>\n <button class=\"btn btn-primary\">Save settings</button>\n <button class=\"btn btn-secondary\">Cancel</button>\n\n </dialog>\n\n \n <div class=\"calendar__wrapper\">\n \n <div id=\"week-view-corner\" class=\"calendar\">\n <table>\n <thead>\n <tr>\n <th class=\"column-header\">Empty</th>\n </tr>\n </thead>\n <tbody>\n <tr class=\"allday\">\n <th>All day</th>\n </tr>\n </tbody>\n </table>\n </div>\n\n <div id=\"week-view-header\" class=\"calendar\">\n <table>\n <thead>\n </thead>\n <tbody>\n </tbody>\n </table>\n </div>\n\n <div id=\"week-view-side\">${weekViewOnly}</div>\n\n <div class=\"calendar month-wrapper\" id=\"calendar\" part=\"calendar\">\n <table>\n <thead>\n </thead>\n <tbody>\n </tbody>\n </table>\n </div>\n\n <div id=\"year-view\">\n </div>\n </div>\n\n\n <slot></slot>\n\n </div>\n `;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n this.monthArray = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ];\n this.dayArray = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n this.english_ordinal_rules = new Intl.PluralRules('en', { type: 'ordinal' });\n this.suffixes = {\n one: 'st',\n two: 'nd',\n few: 'rd',\n other: 'th',\n };\n this.calendars = ['Default']; // TO DO allow for these to be set via the component data attributes\n this.eventTypes = []; // TO DO allow for these to be set via the component data attributes\n this.pauseObserver = false;\n }\n createThead(sundayFirst) {\n if (sundayFirst)\n return `<tr>\n <th class=\"column-header sunday\"><span class=\"long-day-name\">Sunday</span><span class=\"short-day-name\" role=\"presentation\">Sun</span></th>\n <th class=\"column-header monday\"><span class=\"long-day-name\">Monday</span><span class=\"short-day-name\" role=\"presentation\">Mon</span></th>\n <th class=\"column-header tuesday\"><span class=\"long-day-name\">Tuesday</span><span class=\"short-day-name\" role=\"presentation\">Tues</span></th>\n <th class=\"column-header wednesday\"><span class=\"long-day-name\">Wednesday</span><span class=\"short-day-name\" role=\"presentation\">Wed</span></th>\n <th class=\"column-header thursday\"><span class=\"long-day-name\">Thursday</span><span class=\"short-day-name\" role=\"presentation\">Thurs</span></th>\n <th class=\"column-header friday\"><span class=\"long-day-name\">Friday</span><span class=\"short-day-name\" role=\"presentation\">Fri</span></th>\n <th class=\"column-header saturday\"><span class=\"long-day-name\">Saturday</span><span class=\"short-day-name\" role=\"presentation\">Sat</span></th>\n </tr>`;\n return `<tr>\n <th class=\"column-header monday\"><span class=\"long-day-name\">Monday</span><span class=\"short-day-name\" role=\"presentation\">Mon</span></th>\n <th class=\"column-header tuesday\"><span class=\"long-day-name\">Tuesday</span><span class=\"short-day-name\" role=\"presentation\">Tues</span></th>\n <th class=\"column-header wednesday\"><span class=\"long-day-name\">Wednesday</span><span class=\"short-day-name\" role=\"presentation\">Wed</span></th>\n <th class=\"column-header thursday\"><span class=\"long-day-name\">Thursday</span><span class=\"short-day-name\" role=\"presentation\">Thurs</span></th>\n <th class=\"column-header friday\"><span class=\"long-day-name\">Friday</span><span class=\"short-day-name\" role=\"presentation\">Fri</span></th>\n <th class=\"column-header saturday\"><span class=\"long-day-name\">Saturday</span><span class=\"short-day-name\" role=\"presentation\">Sat</span></th>\n <th class=\"column-header sunday\"><span class=\"long-day-name\">Sunday</span><span class=\"short-day-name\" role=\"presentation\">Sun</span></th>\n</tr>`;\n }\n numberDaysInMonth(year, month) {\n return new Date(year, month, 0).getDate();\n }\n getOrdinalNumber(number) {\n const category = this.english_ordinal_rules.select(number);\n const suffix = this.suffixes[category];\n return number + suffix;\n }\n setToMonday(date) {\n const day = date.getDay() || 7;\n if (day !== 1)\n date.setHours(-24 * (day - 1));\n return date;\n }\n setToSunday(date) {\n const monday = this.setToMonday(date);\n const sunday = new Date(monday);\n sunday.setDate(sunday.getDate() + 6);\n return sunday;\n }\n getTitle(dateStr, view) {\n const date = new Date(dateStr);\n const month = date.getMonth();\n const year = date.getFullYear();\n const day = date.getDate();\n const dayOfWeek = date.getDay() ? date.getDay() : 7;\n if (view == 'week') {\n const monday = this.setToMonday(new Date(dateStr));\n const sunday = this.setToSunday(new Date(dateStr));\n const mondayMonth = monday.getMonth();\n const mondayYear = monday.getFullYear();\n const mondayDay = monday.getDate();\n const sundayMonth = sunday.getMonth();\n const sundayYear = sunday.getFullYear();\n const sundayDay = sunday.getDate();\n return `${this.getOrdinalNumber(mondayDay)} ${mondayMonth != sundayMonth ? this.monthArray[sundayMonth] : ''} ${mondayYear != sundayYear ? mondayYear : ''} - ${this.getOrdinalNumber(sundayDay)} ${this.monthArray[sundayMonth]} ${sundayYear}`;\n }\n else if (view == 'day') {\n return `${this.dayArray[dayOfWeek]} ${this.getOrdinalNumber(day)} ${this.monthArray[month]} ${year}`;\n }\n else if (view == 'year') {\n return `${year}`;\n }\n return `${this.monthArray[month]} ${year}`;\n }\n createCalendar(selectedDate, today, sundayFirst) {\n const date = new Date(selectedDate);\n const month = date.getMonth();\n const year = date.getFullYear();\n const day = date.getDate();\n const selectedDateStr = `${year}-${String(month + 1).padStart(2, '0')}-${String(day).padStart(2, '0')}`;\n const daysThisMonth = this.numberDaysInMonth(year, month + 1);\n const startOfMonth = new Date(`${year}-${String(month + 1).padStart(2, '0')}-01`);\n const endOfMonth = new Date(`${year}-${String(month + 1).padStart(2, '0')}-${daysThisMonth}`);\n const startDay = startOfMonth.getDay() != 0 ? startOfMonth.getDay() : 7;\n const endDay = endOfMonth.getDay() != 0 ? endOfMonth.getDay() : 7;\n const loopDays = daysThisMonth + startDay + (7 - endDay - 1);\n // Get the previous month\n const prevMonthDate = new Date(selectedDate);\n prevMonthDate.setMonth(prevMonthDate.getMonth() - 1);\n const prevMonth = prevMonthDate.getMonth();\n const prevMonthYear = prevMonthDate.getFullYear();\n const daysPrevMonth = this.numberDaysInMonth(year, month);\n // Get the next month\n const nextMonthDate = new Date(selectedDate);\n nextMonthDate.setMonth(nextMonthDate.getMonth() + 1);\n const nextMonth = nextMonthDate.getMonth();\n const nextMonthYear = nextMonthDate.getFullYear();\n // Get calendars\n if (!this.hasAttribute('data-calendars')) {\n Array.from(this.querySelectorAll('button[data-calendar]')).forEach((element) => {\n // Scan through the buttons and look forunique calendar names\n if (!this.calendars.includes(element.getAttribute('data-calendar')))\n this.calendars.push(element.getAttribute('data-calendar'));\n });\n }\n // Create tbody string by looping through the number of days in month plus some days before and after\n let tbodyContent = `<tr>`;\n for (let i = sundayFirst ? 0 : 1; i <= loopDays; i++) {\n const loopDay = i - (startDay - 1);\n const loopDate = `${year}-${String(month + 1).padStart(2, '0')}-${String(loopDay).padStart(2, '0')}`;\n const dayOfWeek = i % 7;\n tbodyContent += `<td class=\"day--${this.dayArray[dayOfWeek].toLowerCase()} ${loopDate == today ? 'today' : ''} ${loopDate == selectedDateStr ? 'selected' : ''} ${i < startDay ? 'prev-month' : ''} ${loopDay > daysThisMonth ? 'next-month' : ''}\">`;\n // prev month days\n if (i < startDay) {\n const adjustedLoopDay = daysPrevMonth - (startDay - 1 - i);\n const adjustedLoopDate = `${prevMonthYear}-${String(prevMonth + 1).padStart(2, '0')}-${String(adjustedLoopDay).padStart(2, '0')}`;\n tbodyContent += `<time class=\"column-header\" datetime=\"${adjustedLoopDate}\" title=\"${this.dayArray[dayOfWeek]} ${loopDay} ${this.monthArray[prevMonth]} ${year}\"><span class=\"day-of-week\">${this.dayArray[dayOfWeek]} </span><span class=\"day\">${adjustedLoopDay}</span> <span class=\"month\">${this.monthArray[prevMonth]}</span></time>`;\n tbodyContent += this.addDay(adjustedLoopDate, this.calendars);\n }\n if (i >= startDay && loopDay <= daysThisMonth) {\n tbodyContent += `<time class=\"column-header\" datetime=\"${loopDate}\" title=\"${this.dayArray[dayOfWeek]} ${loopDay} ${this.monthArray[month]} ${year}\"><span class=\"day-of-week\">${this.dayArray[dayOfWeek]} </span><span class=\"day\">${loopDay}</span> <span class=\"month\">${this.monthArray[month]}</span></time>`;\n tbodyContent += this.addDay(loopDate, this.calendars);\n }\n // next month days\n if (loopDay > daysThisMonth) {\n const adjustedLoopDay = i - (startDay - 1) - daysThisMonth;\n const adjustedLoopDate = `${nextMonthYear}-${String(nextMonth + 1).padStart(2, '0')}-${String(adjustedLoopDay).padStart(2, '0')}`;\n tbodyContent += `<time class=\"column-header\" datetime=\"${adjustedLoopDate}\" title=\"${this.dayArray[dayOfWeek]} ${loopDay} ${this.monthArray[nextMonth]} ${year}\"><span class=\"day-of-week\">${this.dayArray[dayOfWeek]} </span><span class=\"day\">${adjustedLoopDay}</span> <span class=\"month\">${this.monthArray[nextMonth]}</span></time>`;\n tbodyContent += this.addDay(adjustedLoopDate, this.calendars);\n }\n tbodyContent += '</td>';\n // Close row and start a new one\n if ((sundayFirst ? i + 1 : i) % 7 === 0 && i != loopDays) {\n tbodyContent += `</tr><tr>`;\n }\n }\n tbodyContent += '</tr>';\n return tbodyContent;\n }\n addDay(day, calendars) {\n let htmlTable = '<table class=\"table--day\">';\n htmlTable += `<thead><tr><th>time</th>`;\n calendars.forEach((calendarTitle) => {\n htmlTable += `<th class=\"column-header\">${calendarTitle}</th>`;\n });\n htmlTable += `</tr></thead>`;\n htmlTable += `<tbody>`;\n htmlTable += `<tr class=\"allday\"><th>All day</th>`;\n calendars.forEach((calendarTitle) => {\n htmlTable += `<td datetime=\"${day}\" data-calendar=\"${calendarTitle}\"><span datetime=\"${day}\"></span></td>`;\n });\n htmlTable += `</tr>`;\n for (let i = 0; i < 24; i++) {\n htmlTable += `<tr class=\"hour${i}\"><th data-hour=\"${i}\">${i}${i < 12 ? 'am' : 'pm'}</th>`;\n calendars.forEach((calendarTitle) => {\n htmlTable += `<td datetime=\"${day}T${String(i).padStart(2, '0')}:00\" data-calendar=\"${calendarTitle}\"><span datetime=\"${day}T${String(i).padStart(2, '0')}:00\"></span><span datetime=\"${day}T${String(i).padStart(2, '0')}:15\"></span><span datetime=\"${day}T${String(i).padStart(2, '0')}:30\"></span><span datetime=\"${day}T${String(i).padStart(2, '0')}:45\"></span></td>`;\n });\n htmlTable += `</tr>`;\n }\n htmlTable += `</tbody>`;\n htmlTable += '</table>';\n return htmlTable;\n }\n addEvents() {\n function setDefaultEventValues(component, element, index) {\n const datetime = element.getAttribute('datetime');\n const datetimeArr = datetime.split('T');\n let id = element.getAttribute('id');\n // Add ID\n if (!element.hasAttribute('id')) {\n id = `event${uniqueID(index)}`;\n element.setAttribute('id', id);\n }\n // Wrap content in span for formatting in week/day view\n if (!element.querySelector('span:not(.tooltip__content')) {\n element.innerHTML = `<span>${element.innerHTML}</span>`;\n }\n // Add event type enum so we can set the correct colours\n //if(!element.hasAttribute('data-event-type-enum') && element.hasAttribute('data-event-type')){\n const eventType = element.getAttribute('data-event-type');\n if (!component.eventTypes.includes(eventType))\n component.eventTypes.push(eventType);\n element.setAttribute('data-event-type-enum', component.eventTypes.indexOf(eventType) + 1);\n //}\n // Add calendar enum so we can set the correct colours\n if (element.hasAttribute('data-calendar')) {\n const calendar = element.getAttribute('data-calendar');\n if (!component.calendars.includes(calendar))\n component.calendars.push(calendar);\n element.setAttribute('data-calendar-enum', component.calendars.indexOf(calendar) + 1);\n }\n if (!element.hasAttribute('data-calendar-enum')) {\n element.setAttribute('data-calendar-enum', 1);\n }\n if (!element.hasAttribute('data-hours') && !element.hasAttribute('data-days')) {\n if (datetimeArr[1]) {\n element.setAttribute('data-hours', 1);\n }\n else {\n element.setAttribute('data-days', 1);\n }\n }\n const getRoundedDate = (minutes, d = new Date()) => {\n const ms = 1000 * 60 * minutes; // convert minutes to ms\n const roundedDate = new Date(Math.round(d.getTime() / ms) * ms);\n const newMonth = roundedDate.getMonth();\n const newYear = roundedDate.getFullYear();\n const newDay = roundedDate.getDate();\n const newMinutes = roundedDate.getMinutes();\n const newHour = roundedDate.getHours();\n const strRoundedDate = `${newYear}-${String(newMonth + 1).padStart(2, '0')}-${String(newDay).padStart(2, '0')}T${String(newHour).padStart(2, '0')}:${String(newMinutes).padStart(2, '0')}`;\n return strRoundedDate;\n };\n if (datetimeArr[1]) {\n element.setAttribute('data-start', datetimeArr[1]);\n element.querySelector(':scope > span').setAttribute('data-start', datetimeArr[1]);\n const roundedDatetime = getRoundedDate(15, new Date(datetime));\n element.setAttribute('datetime', roundedDatetime);\n }\n if (element.querySelector('.tooltip__content')) {\n const tooltip = element.querySelector('.tooltip__content');\n tooltip.style.positionAnchor = `--${id}`;\n element.style.anchorName = `--${id}`;\n }\n element.classList.add('defaults-added');\n }\n function adjustEvent(component, element, continued) {\n var _a;\n const datetime = element.getAttribute('datetime');\n const date = new Date(datetime);\n const dayOfWeek = date.getDay() ? date.getDay() : 7;\n // Locate where we need to add slots for the buttons to go - We need duplicate slots for the split view and fixed header\n const timeTd = component.shadowRoot.querySelector(`.month-wrapper .table--day td:has(span[datetime=\"${datetime}\"])${element.hasAttribute('data-calendar') ? `[data-calendar=\"${element.getAttribute('data-calendar').replace('_', '')}\"]` : ''}`);\n const timeTdHeader = component.shadowRoot.querySelector(`#week-view-header .table--day td:has(span[datetime=\"${datetime}\"])${element.hasAttribute('data-calendar') ? `[data-calendar=\"${element.getAttribute('data-calendar').replace('_', '')}\"]` : ''}`);\n if (timeTdHeader && timeTdHeader.closest('tr').classList.contains('allday')) {\n // Add the alldays slot for the fixed header\n if (!timeTdHeader.querySelector(`slot[name=\"${datetime}${element.hasAttribute('data-calendar') ? `-${element.getAttribute('data-calendar').replace('_', '')}` : ''}-header]\"`)) {\n timeTdHeader\n .querySelector(`span[datetime=\"${datetime}\"]`)\n .insertAdjacentHTML('beforeEnd', `<slot name=\"${datetime}${element.hasAttribute('data-calendar') ? `-${element.getAttribute('data-calendar').replace('_', '')}` : ''}-header\" class=\"${continued ? 'continued' : ''}\"></slot>`);\n }\n }\n const dateTd = (_a = timeTd === null || timeTd === void 0 ? void 0 : timeTd.parentElement) === null || _a === void 0 ? void 0 : _a.closest('td');\n // original event needs a slot name adding\n element.setAttribute('slot', `${datetime}${element.hasAttribute('data-calendar') ? `-${element.getAttribute('data-calendar').replace('_', '')}` : ''}`);\n // Add matching slot to the event element to have it show in the correct place on the calendar\n if (timeTd) {\n // Add the default slot\n if (!timeTd.querySelector(`slot[name=\"${datetime}${element.hasAttribute('data-calendar') ? `-${element.getAttribute('data-calendar').replace('_', '')}` : ''}\"]`)) {\n timeTd\n .querySelector(`span[datetime=\"${datetime}\"]`)\n .insertAdjacentHTML('beforeEnd', `<slot name=\"${datetime}${element.hasAttribute('data-calendar') ? `-${element.getAttribute('data-calendar').replace('_', '')}` : ''}\" class=\"${continued ? 'continued' : ''}\"></slot>`);\n }\n // Set the classes need to create the grey bars in the mobile month view\n const events = dateTd.hasAttribute('data-events') ? parseInt(dateTd.getAttribute('data-events')) : 0;\n let hours = dateTd.hasAttribute('data-hours') ? parseFloat(dateTd.getAttribute('data-hours')) : 0;\n hours += element.hasAttribute('data-hours') ? parseFloat(element.getAttribute('data-hours')) : 0;\n dateTd.setAttribute('data-events', parseInt(events) + 1);\n if (events + 1 > 2)\n dateTd.setAttribute('data-more', parseInt(events) + 1 - 2);\n dateTd.setAttribute('data-hours', hours);\n dateTd.classList.add('has-event');\n if (timeTd.closest('tr').classList.contains('has-event'))\n timeTd.closest('tr').classList.add('multiple-event');\n else\n timeTd.closest('tr').classList.add('has-event');\n if (hours > 2)\n dateTd.classList.add('multi-events');\n if (hours > 4)\n dateTd.classList.add('busy-day');\n if (element.hasAttribute('data-days'))\n dateTd.classList.add('all-day');\n if (element.classList.contains('continued'))\n dateTd.classList.add('continued-day');\n }\n // Add CSS properties so we can control the size of the event elements for day and week view\n if (element.hasAttribute('data-hours'))\n element.style.setProperty('--event-height', `${parseInt(element.getAttribute('data-hours')) * (1.09375 * 4)}rem`);\n if (element.hasAttribute('data-days') && !element.classList.contains('processed')) {\n const eventDayTotal = element.getAttribute('data-days');\n element.style.setProperty('--event-width', `${eventDayTotal * 100}%`);\n element.style.setProperty('--event-max-width', `${(8 - dayOfWeek) * 100}%`);\n element.classList.add('allday-event');\n // Create a duplicate event for each day the orginal\n for (let i = 1; i < eventDayTotal; i++) {\n const cloneElement = element.cloneNode(true);\n cloneElement.removeAttribute('data-days');\n cloneElement.removeAttribute('style');\n cloneElement.classList.add('continued');\n cloneElement.classList.add('allday-event');\n const id = `event${uniqueID(i)}`;\n cloneElement.setAttribute('id', id);\n if (cloneElement.querySelector('.tooltip__content')) {\n const tooltip = cloneElement.querySelector('.tooltip__content');\n tooltip.style.positionAnchor = `--${id}`;\n cloneElement.style.anchorName = `--${id}`;\n }\n const newDate = new Date(datetime);\n newDate.setDate(newDate.getDate() + i);\n const newMonth = newDate.getMonth();\n const newYear = newDate.getFullYear();\n const newDay = newDate.getDate();\n const newDayOfWeek = newDate.getDay() ? newDate.getDay() : 7;\n const strCloneEvent = `${newYear}-${String(newMonth + 1).padStart(2, '0')}-${String(newDay).padStart(2, '0')}`;\n cloneElement.setAttribute('data-original-datetime', element.getAttribute('datetime'));\n cloneElement.setAttribute('datetime', strCloneEvent);\n element.after(cloneElement); // Add after original\n adjustEvent(component, cloneElement, true);\n if (newDayOfWeek == 1) {\n // Monday\n cloneElement.style.setProperty('--event-width', `${(eventDayTotal - i) * 100}%`);\n cloneElement.style.setProperty('--event-max-width', `${(8 - newDayOfWeek) * 100}%`);\n cloneElement.classList.remove('continued');\n }\n }\n }\n // Add flag so we dont have to re-do the above\n element.classList.add('processed');\n }\n this.pauseObserver = true;\n Array.from(this.querySelectorAll('button[datetime]')).forEach((element, index) => {\n setDefaultEventValues(this, element, index);\n adjustEvent(this, element);\n });\n setTimeout(() => {\n this.pauseObserver = false;\n }, '500');\n }\n addJSEvents(component) {\n var _a, _b, _c, _d, _e, _f, _g;\n // Add events to the newly created calendar\n const title = (_a = component.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.calendar__title');\n const datePicker = (_b = component.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector(`#date`);\n const viewPicker = (_c = component.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector(`#view`);\n const yearView = (_d = this.shadowRoot) === null || _d === void 0 ? void 0 : _d.querySelector('#year-view');\n const today = new Date();\n const date = today.getDate();\n const month = today.getMonth();\n const year = today.getFullYear();\n const strToday = `${year}-${String(month + 1).padStart(2, '0')}-${String(date).padStart(2, '0')}`;\n const tbody = (_e = component.shadowRoot) === null || _e === void 0 ? void 0 : _e.querySelector('#calendar > table > tbody');\n // clicking on the day istelf\n Array.from(component.shadowRoot.querySelectorAll('.month-wrapper > table > tbody > tr > td:has(slot)')).forEach((element) => {\n element.addEventListener('click', (event) => {\n if (!event.target.matches('button')) {\n const elementDate = element.querySelector('time').getAttribute('datetime');\n datePicker.value = elementDate;\n Array.from(tbody.querySelectorAll(':scope > tr > td')).forEach((innerelement) => {\n innerelement.classList.remove('selected');\n });\n element.classList.add('selected');\n // Go to day if the in month view with out split view enabled\n if (component.shadowRoot.querySelector('[name=\"split\"]:checked') && viewPicker.value == 'month') {\n Array.from(component.querySelectorAll(`[data-slot]`)).forEach((button) => {\n button.setAttribute('slot', button.getAttribute('data-slot'));\n });\n Array.from(component.querySelectorAll(`[slot^=\"${datePicker.value}\"]`)).forEach((button) => {\n button.setAttribute('data-slot', button.getAttribute('slot'));\n button.removeAttribute('slot');\n });\n }\n else if (!component.shadowRoot.querySelector('[name=\"split\"]:checked') && viewPicker.value == 'month') {\n viewPicker.value = 'day';\n title === null || title === void 0 ? void 0 : title.innerHTML = this.getTitle(datePicker.value, viewPicker.value);\n component.scrollIntoPlace();\n }\n if (viewPicker.value == 'year') {\n viewPicker.value = 'month';\n yearView === null || yearView === void 0 ? void 0 : yearView.innerHTML = '';\n tbody === null || tbody === void 0 ? void 0 : tbody.innerHTML = component.createCalendar(datePicker.value, strToday);\n component.addEvents();\n }\n }\n });\n });\n // Drag and drop\n (_f = component.shadowRoot) === null || _f === void 0 ? void 0 : _f.querySelectorAll(`#calendar .table--day td span`).forEach((element) => {\n element.addEventListener('dragover', (ev) => {\n ev.preventDefault();\n return false;\n });\n element.addEventListener('dragenter', (ev) => {\n ev.preventDefault();\n element.classList.add('dragover');\n });\n element.addEventListener('dragleave', (ev) => {\n ev.preventDefault();\n element.classList.remove('dragover');\n });\n element.addEventListener('drop', (ev) => {\n ev.preventDefault();\n const droppedElement = component.querySelector(`#${ev.dataTransfer.getData('text')}`);\n const td = element.closest('td');\n const datetime = element.getAttribute('datetime');\n element.classList.remove('dragover');\n // Add a new slot to te span if needed\n if (!element.querySelector(`slot[name=\"${datetime}${td.hasAttribute('data-calendar') ? `-${td.getAttribute('data-calendar').replace('_', '')}]` : ''}]\"`)) {\n element.insertAdjacentHTML('beforeEnd', `<slot name=\"${datetime}${td.hasAttribute('data-calendar') ? `-${td.getAttribute('data-calendar').replace('_', '')}` : ''}\" class=\"\"></slot>`);\n }\n // Update the slot attribute to match the slot the event has been dropped on\n droppedElement === null || droppedElement === void 0 ? void 0 : droppedElement.setAttribute('slot', `${datetime}${td.hasAttribute('data-calendar') ? `-${td.getAttribute('data-calendar').replace('_', '')}` : ''}`);\n });\n });\n // Watch for the event being resized\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (entry.target.classList.contains('mousedown'))\n entry.target.classList.add('resizing');\n }\n });\n if (component.hasAttribute('data-drag')) {\n component.querySelectorAll(`button:not([draggable])`).forEach((element) => {\n element.setAttribute('draggable', 'true');\n element.addEventListener('dragstart', (ev) => {\n ev.dataTransfer.setData('text', ev.target.id); // save the id for when dropped\n });\n // set onbserver\n resizeObserver.observe(element);\n element.addEventListener('mousedown', (ev) => {\n element.classList.add('mousedown');\n });\n element.addEventListener('click', (ev) => {\n if (element.classList.contains('resizing')) {\n ev.stopPropagation();\n ev.stopImmediatePropagation();\n element.classList.remove('mousedown');\n element.classList.remove('resizing');\n // Work out the evnt length in hours and set the height\n const span = this.shadowRoot.querySelector(`span[datetime=\"${element.getAttribute('datetime')}\"]`);\n const spanStyles = window.getComputedStyle(span);\n const hours = Math.round(parseInt(element.style.height) / parseInt(spanStyles.getPropertyValue('height'))) / 4;\n element.setAttribute('data-hours', hours);\n element.style.setProperty('--event-height', `${hours * (1.09375 * 4)}rem`);\n element.style.height = '';\n // to do dispatch event\n }\n });\n });\n }\n component.querySelectorAll(`button`).forEach((element) => {\n element.addEventListener('contextmenu', (event) => {\n event.preventDefault();\n event.stopPropagation();\n });\n });\n (_g = component.shadowRoot) === null || _g === void 0 ? void 0 : _g.querySelectorAll(`.month-wrapper > table > tbody > tr > td`).forEach((element) => {\n element.addEventListener('contextmenu', (event) => {\n event.preventDefault();\n const customEvent = new CustomEvent('right-click', {\n detail: {\n clientX: event.clientX,\n clientY: event.clientY,\n element: element,\n datetime: element.querySelector('time').getAttribute('datetime'),\n },\n });\n console.log(element);\n this.dispatchEvent(customEvent);\n });\n });\n }\n paginateDate(direction, view, currentDate) {\n if (view == 'month' || view == 'list') {\n const selectedDate = new Date(currentDate);\n if (direction == 'next')\n selectedDate.setMonth(selectedDate.getMonth() + 1);\n else\n selectedDate.setMonth(selectedDate.getMonth() - 1);\n const month = selectedDate.getMonth() + 1;\n const year = selectedDate.getFullYear();\n const strNextMonth = `${year}-${String(month).padStart(2, '0')}-01`;\n return strNextMonth;\n }\n else if (view == 'week') {\n //const selectedDate = new Date(currentDate);\n const monday = this.setToMonday(new Date(currentDate));\n if (direction == 'next')\n monday.setDate(monday.getDate() + 7);\n else\n monday.setDate(monday.getDate() - 7);\n const date = monday.getDate();\n const month = monday.getMonth() + 1;\n const year = monday.getFullYear();\n const strNextWeek = `${year}-${String(month).padStart(2, '0')}-${String(date).padStart(2, '0')}`;\n return strNextWeek;\n }\n else if (view == 'year') {\n const selectedDate = new Date(currentDate);\n if (direction == 'next')\n selectedDate.setYear(selectedDate.getFullYear() + 1);\n else\n selectedDate.setYear(selectedDate.getFullYear() - 1);\n const year = selectedDate.getFullYear();\n const month = selectedDate.getMonth() + 1;\n const strNextMonth = `${year}-${String(month).padStart(2, '0')}-01`;\n return strNextMonth;\n }\n const nextDay = new Date(currentDate);\n if (direction == 'next')\n nextDay.setDate(nextDay.getDate() + 1);\n else\n nextDay.setDate(nextDay.getDate() - 1);\n const date = nextDay.getDate();\n const month = nextDay.getMonth() + 1;\n const year = nextDay.getFullYear();\n const strNextDay = `${year}-${String(month).padStart(2, '0')}-${String(date).padStart(2, '0')}`;\n return strNextDay;\n }\n setWeekDay() {\n var _a, _b, _c, _d;\n (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelectorAll('.out-of-hours').forEach((element) => {\n element.classList.remove('out-of-hours');\n });\n const startTime = parseInt((_b = this.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#start-time').value.split(':')[0]);\n const endTime = parseInt((_c = this.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('#end-time').value.split(':')[0]);\n (_d = this.shadowRoot) === null || _d === void 0 ? void 0 : _d.querySelectorAll('[data-hour]').forEach((element) => {\n const hour = parseInt(element.getAttribute('data-hour'));\n if (hour < startTime)\n element.classList.add('out-of-hours');\n if (hour >= endTime)\n element.classList.add('out-of-hours');\n });\n }\n scrollIntoPlace() {\n var _a, _b;\n const fs = parseInt(window.getComputedStyle(document.body).getPropertyValue('font-size'));\n const startTime = parseInt((_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#start-time').value.split(':')[0]);\n const scrollPos = startTime * (4.5 * fs);\n const viewPicker = (_b = this.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector(`#view`);\n const wrapper = this.shadowRoot.querySelector('.calendar__wrapper');\n // scroll\n if (viewPicker.value == 'week')\n wrapper.scrollTo(0, scrollPos); // TO DO work out how much to scroll by\n else if (viewPicker.value == 'day') {\n wrapper.scrollTo(0, scrollPos); // TO DO work out how much to scroll by\n }\n }\n setupSettings() {\n var _a, _b;\n const settingsButton = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#settings-button');\n const settingsDialog = (_b = this.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#settings');\n // Setup the pre-defined attributes and display the form elements to match\n if (this.hasAttribute('data-hide-weekends'))\n settingsDialog.querySelector('#weekends-no').checked = true;\n else\n settingsDialog.querySelector('#weekends-yes').checked = true;\n if (this.hasAttribute('data-start-time'))\n settingsDialog.querySelector('#start-time').value = this.getAttribute('data-start-time');\n else\n this.setAttribute('data-start-time', settingsDialog.querySelector('#start-time').value);\n if (this.hasAttribute('data-end-time'))\n settingsDialog.querySelector('#end-time').value = this.getAttribute('data-end-time');\n else\n this.setAttribute('data-end-time', settingsDialog.querySelector('#end-time').value);\n // open dialog\n settingsButton === null || settingsButton === void 0 ? void 0 : settingsButton.addEventListener('click', () => {\n settingsDialog.showModal();\n settingsDialog.focus();\n const customEvent = new CustomEvent('open-settings');\n this.dispatchEvent(customEvent);\n });\n // On clicking the save button, adjust the data attributes\n settingsDialog === null || settingsDialog === void 0 ? void 0 : settingsDialog.addEventListener('click', (event) => {\n if (event && event.target.matches('button')) {\n if (event.target.matches('.btn-primary')) {\n if (settingsDialog.querySelector('#weekends-no:checked'))\n this.setAttribute('data-hide-weekends', 'true');\n else\n this.removeAttribute('data-hide-weekends');\n this.setAttribute('data-start-time', settingsDialog.querySelector('#start-time').value);\n this.setAttribute('data-end-time', settingsDialog.querySelector('#end-time').value);\n this.setWeekDay();\n const customEvent = new CustomEvent('save-settings');\n this.dispatchEvent(customEvent);\n }\n const customEvent = new CustomEvent('close-settings');\n this.dispatchEvent(customEvent);\n settingsDialog.close();\n }\n });\n }\n setTime() {\n var _a;\n if (!this.hasAttribute('data-time')) {\n const today = new Date();\n const hour = today.getHours();\n const minute = today.getMinutes();\n const time = `${hour}:${minute}`;\n this.setAttribute('data-time', time);\n }\n if (this.hasAttribute('data-time')) {\n const time = this.getAttribute('data-time');\n const hour = parseInt(time.split(':')[0]);\n const minute = parseInt(time.split(':')[1]);\n (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelectorAll(`[data-hour=\"${hour}\"]`).forEach((element) => {\n var _a;\n element.setAttribute('data-time', time);\n element.classList.add('column-header');\n (_a = element.closest('tr')) === null || _a === void 0 ? void 0 : _a.style.setProperty('--minute-pos', (minute / 60) * 100 + '%');\n });\n }\n }\n getYearView(selectedDate, today, sundayFirst) {\n let yearViewStr = '';\n for (let i = 0; i < 12; i++) {\n console.log(selectedDate);\n const selectedDateObj = new Date(selectedDate);\n const selectedYear = selectedDateObj.getFullYear();\n const selectedFormattedDate = `${selectedYear}-${String(i + 1).padStart(2, '0')}-01`;\n yearViewStr += `<div class='month-wrapper'>\n <time class=\"column-header\">${this.monthArray[i]}</time>\n <table>\n <thead>\n ${this.createThead(sundayFirst)}\n </thead>\n <tbody>\n ${this.createCalendar(selectedFormattedDate, today, sundayFirst)}\n </tbody>\n </table>\n </div>`;\n }\n return yearViewStr;\n }\n connectedCallback() {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\n // To to transform the below into variables of component to make more re-usable\n const title = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.calendar__title');\n const tbody = (_b = this.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#calendar > table > tbody');\n const thead = (_c = this.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('#calendar > table > thead');\n //const tbodySplit = this.shadowRoot?.querySelector('#split > table > tbody');\n //const theadSplit = this.shadowRoot?.querySelector('#split > table > thead');\n const weekViewHeader = (_d = this.shadowRoot) === null || _d === void 0 ? void 0 : _d.querySelector('#week-view-header > table > tbody');\n const yearView = (_e = this.shadowRoot) === null || _e === void 0 ? void 0 : _e.querySelector('#year-view');\n const datePicker = (_f = this.shadowRoot) === null || _f === void 0 ? void 0 : _f.querySelector(`#date`);\n const viewPicker = (_g = this.shadowRoot) === null || _g === void 0 ? void 0 : _g.querySelector(`#view`);\n const todayButton = (_h = this.shadowRoot) === null || _h === void 0 ? void 0 : _h.querySelector('#today-button');\n const filtersButton = (_j = this.shadowRoot) === null || _j === void 0 ? void 0 : _j.querySelector('#filters-button');\n const prevButton = (_k = this.shadowRoot) === null || _k === void 0 ? void 0 : _k.querySelector('#prev-button');\n const nextButton = (_l = this.shadowRoot) === null || _l === void 0 ? void 0 : _l.querySelector('#next-button');\n const sundayFirst = this.hasAttribute('data-sunday-first');\n const splitButton = (_m = this.shadowRoot) === null || _m === void 0 ? void 0 : _m.querySelector(`[name=\"split\"]`);\n // set the table head - starting by monday by default but can be changed to sunday\n thead === null || thead === void 0 ? void 0 : thead.innerHTML = this.createThead(sundayFirst);\n //theadSplit?.innerHTML = this.createThead(sundayFirst);\n // Get a formatted version of todays date\n const today = new Date();\n const date = today.getDate();\n const month = today.getMonth();\n const year = today.getFullYear();\n const strToday = `${year}-${String(month + 1).padStart(2, '0')}-${String(date).padStart(2, '0')}`;\n datePicker.value = strToday;\n // Setup the view, month being default\n if (this.hasAttribute('data-view'))\n viewPicker.value = this.getAttribute('data-view');\n else {\n this.setAttribute('data-view', 'month');\n viewPicker.value = 'month';\n }\n if (this.hasAttribute('data-views'))\n viewPicker === null || viewPicker === void 0 ? void 0 : viewPicker.setAttribute('data-views', this.getAttribute('data-views'));\n // Create the calendars\n if (this.hasAttribute('data-calendars')) {\n this.calendars = this.getAttribute('data-calendars').split(',');\n this.calendars.forEach((item, index) => {\n this.calendars[index] = item.trim();\n });\n }\n // Setup the settings dialog\n this.setupSettings();\n // Setup the calendar then adjust and add events\n title === null || title === void 0 ? void 0 : title.innerHTML = this.getTitle(strToday, viewPicker.value);\n const calendarHtml = this.createCalendar(strToday, strToday, sundayFirst);\n tbody === null || tbody === void 0 ? void 0 : tbody.innerHTML = calendarHtml;\n //tbodySplit?.innerHTML = calendarHtml;\n weekViewHeader === null || weekViewHeader === void 0 ? void 0 : weekViewHeader.innerHTML = calendarHtml;\n if (viewPicker.value == 'year') {\n yearView === null || yearView === void 0 ? void 0 : yearView.innerHTML = this.getYearView(datePicker.value, strToday, sundayFirst);\n tbody === null || tbody === void 0 ? void 0 : tbody.innerHTML = '';\n }\n this.addEvents();\n this.addJSEvents(this);\n this.setWeekDay(); // Working hours\n this.setTime(); // Month and day view has a current time indicator\n this.scrollIntoPlace(); // Scroll into place - month and day view needs have the weekday hours in place\n // #region Add events for the basic top controls\n // Remove the slot attribute on selected days when in split mode\n splitButton === null || splitButton === void 0 ? void 0 : splitButton.addEventListener('change', () => {\n if (splitButton.checked) {\n Array.from(this.querySelectorAll(`[slot^=\"${datePicker.value}\"]`)).forEach((button) => {\n button.setAttribute('data-slot', button.getAttribute('slot'));\n button.removeAttribute('slot');\n });\n }\n else {\n Array.from(this.querySelectorAll(`[data-slot]`)).forEach((button) => {\n button.setAttribute('slot', button.getAttribute('data-slot'));\n });\n }\n });\n const resizeObserver = new ResizeObserver((entries) => {\n const splitButtonDisplayed = window.getComputedStyle(splitButton === null || splitButton === void 0 ? void 0 : splitButton.parentElement, null).display;\n if (splitButtonDisplayed == 'none') {\n Array.from(this.querySelectorAll(`[data-slot]`)).forEach((button) => {\n button.setAttribute('slot', button.getAttribute('data-slot'));\n });\n splitButton.checked = false;\n }\n });\n resizeObserver.observe(this);\n viewPicker === null || viewPicker === void 0 ? void 0 : viewPicker.addEventListener('change', () => {\n title === null || title === void 0 ? void 0 : title.innerHTML = this.getTitle(datePicker.value, viewPicker.value);\n this.setAttribute('data-view', viewPicker.value);\n if (viewPicker.value == 'week') {\n Array.from(this.querySelectorAll(`.allday-event`)).forEach((button) => {\n button.setAttribute('slot', button.getAttribute('slot') + '-header');\n });\n }\n else {\n Array.from(this.querySelectorAll(`.allday-event`)).forEach((button) => {\n var _a;\n button.setAttribute('slot', (_a = button.getAttribute('slot')) === null || _a === void 0 ? void 0 : _a.replace('-header', ''));\n });\n }\n if (viewPicker.value == 'week' || viewPicker.value == 'day')\n this.scrollIntoPlace();\n if (viewPicker.value != 'month') {\n Array.from(this.querySelectorAll(`[data-slot^=\"${datePicker.value}\"]`)).forEach((button) => {\n button.setAttribute('slot', button.getAttribute('data-slot'));\n });\n }\n if (viewPicker.value == 'year') {\n yearView === null || yearView === void 0 ? void 0 : yearView.innerHTML = this.getYearView(datePicker.value, strToday, sundayFirst);\n tbody === null || tbody === void 0 ? void 0 : tbody.innerHTML = '';\n this.addEvents();\n this.addJSEvents(this);\n this.setWeekDay(); // Working hours\n this.setTime(); // Month and day view has a current time indicator\n this.scrollIntoPlace();\n }\n else if ((tbody === null || tbody === void 0 ? void 0 : tbody.innerHTML) == '') {\n yearView === null || yearView === void 0 ? void 0 : yearView.innerHTML = '';\n tbody === null || tbody === void 0 ? void 0 : tbody.innerHTML = this.createCalendar(datePicker.value, strToday);\n this.addEvents();\n this.addJSEvents(this);\n this.setWeekDay(); // Working hours\n this.setTime(); // Month and day view has a current time indicator\n this.scrollIntoPlace();\n }\n const customEvent = new CustomEvent('change-view', {\n detail: {\n view: viewPicker.value,\n date: datePicker.value,\n },\n });\n this.dispatchEvent(customEvent);\n });\n function resetCalendar(component) {\n if (viewPicker.value == 'year') {\n yearView === null || yearView === void 0 ? void 0 : yearView.innerHTML = component.getYearView(datePicker.value, strToday, sundayFirst);\n tbody === null || tbody === void 0 ? void 0 : tbody.innerHTML = '';\n component.addEvents();\n component.addJSEvents(component);\n component.setWeekDay(); // Working hours\n component.setTime(); // Month and day view has a current time indicator\n }\n else {\n const calendarHtml = component.createCalendar(datePicker.value, strToday);\n tbody === null || tbody === void 0 ? void 0 : tbody.innerHTML = calendarHtml;\n //tbodySplit?.innerHTML = calendarHtml;\n weekViewHeader === null || weekViewHeader === void 0 ? void 0 : weekViewHeader.innerHTML = calendarHtml;\n component.addEvents();\n component.addJSEvents(component);\n component.setWeekDay();\n component.setTime();\n }\n }\n function updateCalendar(component) {\n Array.from(component.shadowRoot.querySelectorAll('.selected')).forEach((element) => {\n element.classList.remove('selected');\n });\n Array.from(component.shadowRoot.querySelectorAll(`td:has(time[datetime=\"${datePicker.value}\"]):not(.prev-month, .next-month)`)).forEach((element) => {\n element.classList.add('selected');\n });\n }\n datePicker === null || datePicker === void 0 ? void 0 : datePicker.addEventListener('change', () => {\n title === null || title === void 0 ? void 0 : title.innerHTML = this.getTitle(datePicker.value, viewPicker.value);\n if (this.shadowRoot.querySelector(`td:has(time[datetime=\"${datePicker.value}\"]):not(.prev-month, .next-month)`))\n updateCalendar(this);\n else\n resetCalendar(this);\n const customEvent = new CustomEvent('change-date', {\n detail: {\n view: viewPicker.value,\n date: datePicker.value,\n },\n });\n this.dispatchEvent(customEvent);\n });\n filtersButton === null || filtersButton === void 0 ? void 0 : filtersButton.addEventListener('click', () => {\n const customEvent = new CustomEvent('open-filters');\n this.dispatchEvent(customEvent);\n });\n // HTML Observer\n const htmlUpdated = (mutationList, observer) => {\n observer.disconnect();\n console.log(this.pauseObserver);\n if (this.pauseObserver == false) {\n for (const mutation of mutationList) {\n if (mutation.type == 'characterData' ||\n (mutation.type == 'childList' && mutation.addedNodes.length) ||\n mutation.type === 'attributes') {\n //resetCalendar(this);\n this.addEvents();\n }\n }\n }\n observer.observe(this, { childList: true, characterData: true, subtree: true, attributes: true });\n };\n const observer = new MutationObserver(htmlUpdated);\n observer.observe(this, { childList: true, characterData: true, subtree: true, attributes: true });\n todayButton === null || todayButton === void 0 ? void 0 : todayButton.addEventListener('click', () => {\n datePicker.value = strToday;\n title === null || title === void 0 ? void 0 : title.innerHTML = this.getTitle(datePicker.value, viewPicker.value);\n if (this.shadowRoot.querySelector(`td:has(time[datetime=\"${datePicker.value}\"]):not(.prev-month, .next-month)`))\n updateCalendar(this);\n else\n resetCalendar(this);\n const customEvent = new CustomEvent('change-date-today', {\n detail: {\n view: viewPicker.value,\n date: datePicker.value,\n },\n });\n this.dispatchEvent(customEvent);\n });\n prevButton === null || prevButton === void 0 ? void 0 : prevButton.addEventListener('click', () => {\n datePicker.value = this.paginateDate('prev', viewPicker.value, datePicker.value);\n title === null || title === void 0 ? void 0 : title.innerHTML = this.getTitle(datePicker.value, viewPicker.value);\n if (this.shadowRoot.querySelector(`td:has(time[datetime=\"${datePicker.value}\"]):not(.prev-month, .next-month)`))\n updateCalendar(this);\n else\n resetCalendar(this);\n const customEvent = new CustomEvent('change-date-previous', {\n detail: {\n view: viewPicker.value,\n date: datePicker.value,\n },\n });\n this.dispatchEvent(customEvent);\n });\n nextButton === null || nextButton === void 0 ? void 0 : nextButton.addEventListener('click', () => {\n datePicker.value = this.paginateDate('next', viewPicker.value, datePicker.value);\n title === null || title === void 0 ? void 0 : title.innerHTML = this.getTitle(datePicker.value, viewPicker.value);\n console.log(datePicker.value);\n if (this.shadowRoot.querySelector(`td:has(time[datetime=\"${datePicker.value}\"]):not(.prev-month, .next-month)`))\n updateCalendar(this);\n else\n resetCalendar(this);\n const customEvent = new CustomEvent('change-date-next', {\n detail: {\n view: viewPicker.value,\n date: datePicker.value,\n },\n });\n this.dispatchEvent(customEvent);\n });\n // #endregion\n // TODO\n trackComponent(this, 'iam-calendar', [\n 'open-filters',\n 'change-view',\n 'change-date',\n 'change-date-today',\n 'change-date-previous',\n 'change-date-next',\n 'open-settings',\n 'close-settings',\n 'save-settings',\n ]);\n }\n static get observedAttributes() {\n return ['data-calendars', 'data-view'];\n }\n attributeChangedCallback(attrName, oldVal, newVal) {\n var _a, _b, _c, _d;\n this.pauseObserver = true;\n switch (attrName) {\n case 'data-calendars': {\n if (oldVal != newVal) {\n const tbody = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#calendar > table > tbody');\n const weekViewHeader = (_b = this.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#week-view-header > table > tbody');\n const datePicker = (_c = this.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector(`#date`);\n // Get a formatted version of todays date\n const today = new Date();\n const date = today.getDate();\n const month = today.getMonth();\n const year = today.getFullYear();\n const strToday = `${year}-${String(month + 1).padStart(2, '0')}-${String(date).padStart(2, '0')}`;\n if (this.hasAttribute('data-calendars')) {\n this.calendars = this.getAttribute('data-calendars').split(',');\n this.calendars.forEach((item, index) => {\n this.calendars[index] = item.trim();\n });\n }\n const calendarHtml = this.createCalendar(datePicker.value, strToday);\n tbody === null || tbody === void 0 ? void 0 : tbody.innerHTML = calendarHtml;\n weekViewHeader === null || weekViewHeader === void 0 ? void 0 : weekViewHeader.innerHTML = calendarHtml;\n this.addEvents();\n this.addJSEvents(this);\n this.setWeekDay();\n this.setTime();\n }\n break;\n }\n case 'data-view': {\n if (oldVal != newVal) {\n const viewPicker = (_d = this.shadowRoot) === null || _d === void 0 ? void 0 : _d.querySelector(`#view`);\n viewPicker.value = newVal;\n viewPicker.dispatchEvent(new Event('change'));\n }\n break;\n }\n }\n setTimeout(() => {\n this.pauseObserver = false;\n }, '500');\n }\n}\nexport default iamCalendar;\n"],"names":["trackComponentRegistered","componentName","trackComponent","component","trackEvents","eventName","event","eventDetails","eventKey","eventDetail","uniqueID","index","iamCalendar","weekViewOnly","template","sundayFirst","year","month","number","category","suffix","date","day","monday","sunday","dateStr","view","dayOfWeek","mondayMonth","mondayYear","mondayDay","sundayMonth","sundayYear","sundayDay","selectedDate","today","selectedDateStr","daysThisMonth","startOfMonth","endOfMonth","startDay","endDay","loopDays","prevMonthDate","prevMonth","prevMonthYear","daysPrevMonth","nextMonthDate","nextMonth","nextMonthYear","element","tbodyContent","i","loopDay","loopDate","adjustedLoopDay","adjustedLoopDate","calendars","htmlTable","calendarTitle","setDefaultEventValues","datetime","datetimeArr","id","eventType","calendar","getRoundedDate","minutes","d","ms","roundedDate","newMonth","newYear","newDay","newMinutes","newHour","roundedDatetime","tooltip","adjustEvent","continued","_a","timeTd","timeTdHeader","dateTd","events","hours","eventDayTotal","cloneElement","newDate","newDayOfWeek","strCloneEvent","_b","_c","_d","_e","_f","_g","title","datePicker","viewPicker","yearView","strToday","tbody","elementDate","innerelement","button","ev","droppedElement","td","resizeObserver","entries","entry","span","spanStyles","customEvent","direction","currentDate","nextDay","startTime","endTime","hour","fs","scrollPos","wrapper","settingsButton","settingsDialog","minute","time","yearViewStr","selectedFormattedDate","_h","_j","_k","_l","_m","thead","weekViewHeader","todayButton","filtersButton","prevButton","nextButton","splitButton","item","calendarHtml","resetCalendar","updateCalendar","htmlUpdated","mutationList","observer","mutation","attrName","oldVal","newVal"],"mappings":"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"}
@@ -7,9 +7,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import { trackComponent, trackComponentRegistered } from '../_global.js';
11
- import { cardHTML, setupCard } from '../../modules/card.module.js';
12
- import iamMenu from '../menu/menu.component.js';
10
+ import { trackComponent, trackComponentRegistered } from '../_global';
11
+ import { cardHTML, setupCard } from '../../modules/card.module';
12
+ import iamMenu from '../menu/menu.component';
13
13
  trackComponentRegistered('iam-card');
14
14
  class iamCard extends HTMLElement {
15
15
  constructor() {