@iamproperty/components 7.3.0 → 7.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (327) hide show
  1. package/README.md +1 -1
  2. package/assets/css/components/actionbar.component.css +1 -1
  3. package/assets/css/components/actionbar.component.css.map +1 -1
  4. package/assets/css/components/actionbar.global.css +1 -1
  5. package/assets/css/components/actionbar.global.css.map +1 -1
  6. package/assets/css/components/address-lookup.component.css +1 -0
  7. package/assets/css/components/address-lookup.component.css.map +1 -0
  8. package/assets/css/components/barchart.component.css +1 -1
  9. package/assets/css/components/barchart.component.css.map +1 -1
  10. package/assets/css/components/calendar.component.css +1 -0
  11. package/assets/css/components/calendar.component.css.map +1 -0
  12. package/assets/css/components/calendar.config.css +1 -0
  13. package/assets/css/components/calendar.config.css.map +1 -0
  14. package/assets/css/components/card.component.css +1 -1
  15. package/assets/css/components/card.component.css.map +1 -1
  16. package/assets/css/components/carousel.component.css +1 -1
  17. package/assets/css/components/carousel.component.css.map +1 -1
  18. package/assets/css/components/charts.css +1 -1
  19. package/assets/css/components/charts.css.map +1 -1
  20. package/assets/css/components/collapsible-side.css +1 -1
  21. package/assets/css/components/collapsible-side.css.map +1 -1
  22. package/assets/css/components/content.component.css +1 -0
  23. package/assets/css/components/content.component.css.map +1 -0
  24. package/assets/css/components/darkmode.component.css +1 -0
  25. package/assets/css/components/darkmode.component.css.map +1 -0
  26. package/assets/css/components/doughnutchart.component.css +1 -1
  27. package/assets/css/components/doughnutchart.component.css.map +1 -1
  28. package/assets/css/components/fileupload.css.map +1 -1
  29. package/assets/css/components/inline-edit.css +1 -1
  30. package/assets/css/components/inline-edit.css.map +1 -1
  31. package/assets/css/components/marketing.component.css +1 -0
  32. package/assets/css/components/marketing.component.css.map +1 -0
  33. package/assets/css/components/menu.component.css.map +1 -1
  34. package/assets/css/components/{menu.css → menu.global.css} +1 -1
  35. package/assets/css/components/menu.global.css.map +1 -0
  36. package/assets/css/components/milestone.css +1 -0
  37. package/assets/css/components/milestone.css.map +1 -0
  38. package/assets/css/components/multi-step.component.css +1 -1
  39. package/assets/css/components/multi-step.component.css.map +1 -1
  40. package/assets/css/components/multiselect.css +1 -1
  41. package/assets/css/components/multiselect.css.map +1 -1
  42. package/assets/css/components/multiselect.preload.css +1 -1
  43. package/assets/css/components/multiselect.preload.css.map +1 -1
  44. package/assets/css/components/nav.component.css +1 -1
  45. package/assets/css/components/nav.component.css.map +1 -1
  46. package/assets/css/components/nav.global.css +1 -1
  47. package/assets/css/components/nav.global.css.map +1 -1
  48. package/assets/css/components/notification.css +1 -1
  49. package/assets/css/components/notification.css.map +1 -1
  50. package/assets/css/components/pagination.css.map +1 -1
  51. package/assets/css/components/property-searchbar.css +1 -1
  52. package/assets/css/components/property-searchbar.css.map +1 -1
  53. package/assets/css/components/rank.component.css +1 -1
  54. package/assets/css/components/rank.component.css.map +1 -1
  55. package/assets/css/components/rankings.component.css +1 -1
  56. package/assets/css/components/rankings.component.css.map +1 -1
  57. package/assets/css/components/rankings.global.css +1 -1
  58. package/assets/css/components/rankings.global.css.map +1 -1
  59. package/assets/css/components/slider.css.map +1 -1
  60. package/assets/css/components/split-button.component.css +1 -0
  61. package/assets/css/components/split-button.component.css.map +1 -0
  62. package/assets/css/components/word-count.component.css +1 -0
  63. package/assets/css/components/word-count.component.css.map +1 -0
  64. package/assets/css/core.min.css +1 -1
  65. package/assets/css/core.min.css.map +1 -1
  66. package/assets/css/mobile-core.min.css +1 -1
  67. package/assets/css/mobile-core.min.css.map +1 -1
  68. package/assets/css/mobile.min.css +1 -1
  69. package/assets/css/mobile.min.css.map +1 -1
  70. package/assets/css/style.min.css +1 -1
  71. package/assets/css/style.min.css.map +1 -1
  72. package/assets/js/components/accordion/accordion.component.js +40 -19
  73. package/assets/js/components/accordion/accordion.component.min.js +15 -15
  74. package/assets/js/components/accordion/accordion.component.min.js.map +1 -1
  75. package/assets/js/components/actionbar/actionbar.component.js +59 -31
  76. package/assets/js/components/actionbar/actionbar.component.min.js +18 -17
  77. package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
  78. package/assets/js/components/address-lookup/address-lookup.component.js +6 -8
  79. package/assets/js/components/address-lookup/address-lookup.component.min.js +10 -12
  80. package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -1
  81. package/assets/js/components/advanced-select/advanced-select.component.js +63 -0
  82. package/assets/js/components/advanced-select/advanced-select.component.min.js +23 -0
  83. package/assets/js/components/advanced-select/advanced-select.component.min.js.map +1 -0
  84. package/assets/js/components/applied-filters/applied-filters.component.min.js +1 -1
  85. package/assets/js/components/applied-filters/applied-filters.component.min.js.map +1 -1
  86. package/assets/js/components/barchart/barchart.component.min.js +2 -2
  87. package/assets/js/components/barchart/barchart.component.min.js.map +1 -1
  88. package/assets/js/components/bento-grid/bento-grid.component.min.js +1 -1
  89. package/assets/js/components/bento-grid/bento-grid.component.min.js.map +1 -1
  90. package/assets/js/components/calendar/calendar.component.js +1100 -0
  91. package/assets/js/components/calendar/calendar.component.min.js +170 -0
  92. package/assets/js/components/calendar/calendar.component.min.js.map +1 -0
  93. package/assets/js/components/card/card.component.js +14 -8
  94. package/assets/js/components/card/card.component.min.js +16 -10
  95. package/assets/js/components/card/card.component.min.js.map +1 -1
  96. package/assets/js/components/carousel/carousel.component.js +17 -19
  97. package/assets/js/components/carousel/carousel.component.min.js +17 -19
  98. package/assets/js/components/carousel/carousel.component.min.js.map +1 -1
  99. package/assets/js/components/collapsible-side/collapsible-side.component.js +47 -12
  100. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +6 -5
  101. package/assets/js/components/collapsible-side/collapsible-side.component.min.js.map +1 -1
  102. package/assets/js/components/content/content.component.js +66 -0
  103. package/assets/js/components/content/content.component.min.js +15 -0
  104. package/assets/js/components/content/content.component.min.js.map +1 -0
  105. package/assets/js/components/darkmode/darkmode.component.js +70 -0
  106. package/assets/js/components/darkmode/darkmode.component.min.js +10 -0
  107. package/assets/js/components/darkmode/darkmode.component.min.js.map +1 -0
  108. package/assets/js/components/doughnutchart/doughnutchart.component.min.js +2 -2
  109. package/assets/js/components/doughnutchart/doughnutchart.component.min.js.map +1 -1
  110. package/assets/js/components/fileupload/fileupload.component.min.js +1 -1
  111. package/assets/js/components/fileupload/fileupload.component.min.js.map +1 -1
  112. package/assets/js/components/filter-card/filter-card.component.min.js +1 -1
  113. package/assets/js/components/filter-card/filter-card.component.min.js.map +1 -1
  114. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  115. package/assets/js/components/filterlist/filterlist.component.min.js.map +1 -1
  116. package/assets/js/components/header/header.component.min.js +1 -1
  117. package/assets/js/components/header/header.component.min.js.map +1 -1
  118. package/assets/js/components/inline-edit/inline-edit.component.min.js +5 -5
  119. package/assets/js/components/inline-edit/inline-edit.component.min.js.map +1 -1
  120. package/assets/js/components/marketing/marketing.component.js +1 -1
  121. package/assets/js/components/marketing/marketing.component.min.js +2 -2
  122. package/assets/js/components/marketing/marketing.component.min.js.map +1 -1
  123. package/assets/js/components/menu/menu.component.js +12 -4
  124. package/assets/js/components/menu/menu.component.min.js +4 -5
  125. package/assets/js/components/menu/menu.component.min.js.map +1 -1
  126. package/assets/js/components/milestone/milestone.component.js +36 -0
  127. package/assets/js/components/milestone/milestone.component.min.js +15 -0
  128. package/assets/js/components/milestone/milestone.component.min.js.map +1 -0
  129. package/assets/js/components/milestone-group/milestone-group.component.js +33 -0
  130. package/assets/js/components/milestone-group/milestone-group.component.min.js +13 -0
  131. package/assets/js/components/milestone-group/milestone-group.component.min.js.map +1 -0
  132. package/assets/js/components/multi-step/multi-step.component.min.js +3 -3
  133. package/assets/js/components/multi-step/multi-step.component.min.js.map +1 -1
  134. package/assets/js/components/multiselect/multiselect.component.js +54 -2
  135. package/assets/js/components/multiselect/multiselect.component.min.js +5 -5
  136. package/assets/js/components/multiselect/multiselect.component.min.js.map +1 -1
  137. package/assets/js/components/nav/nav.component.js +18 -0
  138. package/assets/js/components/nav/nav.component.min.js +6 -6
  139. package/assets/js/components/nav/nav.component.min.js.map +1 -1
  140. package/assets/js/components/notification/notification.component.js +15 -11
  141. package/assets/js/components/notification/notification.component.min.js +4 -4
  142. package/assets/js/components/notification/notification.component.min.js.map +1 -1
  143. package/assets/js/components/pagination/pagination.component.min.js +1 -1
  144. package/assets/js/components/pagination/pagination.component.min.js.map +1 -1
  145. package/assets/js/components/rank/rank.component.js +346 -210
  146. package/assets/js/components/rank/rank.component.min.js +346 -211
  147. package/assets/js/components/rank/rank.component.min.js.map +1 -1
  148. package/assets/js/components/rankings/rankings.component.js +17 -8
  149. package/assets/js/components/rankings/rankings.component.min.js +14 -8
  150. package/assets/js/components/rankings/rankings.component.min.js.map +1 -1
  151. package/assets/js/components/record-card/record-card.component.min.js +1 -1
  152. package/assets/js/components/record-card/record-card.component.min.js.map +1 -1
  153. package/assets/js/components/search/search.component.js +5 -3
  154. package/assets/js/components/search/search.component.min.js +6 -6
  155. package/assets/js/components/search/search.component.min.js.map +1 -1
  156. package/assets/js/components/slider/slider.component.min.js +1 -1
  157. package/assets/js/components/slider/slider.component.min.js.map +1 -1
  158. package/assets/js/components/split-button/split-button.component.js +58 -0
  159. package/assets/js/components/split-button/split-button.component.min.js +31 -0
  160. package/assets/js/components/split-button/split-button.component.min.js.map +1 -0
  161. package/assets/js/components/table/table.component.js +12 -0
  162. package/assets/js/components/table/table.component.min.js +3 -3
  163. package/assets/js/components/table/table.component.min.js.map +1 -1
  164. package/assets/js/components/table-ajax/table-ajax.component.js +12 -0
  165. package/assets/js/components/table-ajax/table-ajax.component.min.js +3 -3
  166. package/assets/js/components/table-ajax/table-ajax.component.min.js.map +1 -1
  167. package/assets/js/components/table-basic/table-basic.component.min.js +1 -1
  168. package/assets/js/components/table-basic/table-basic.component.min.js.map +1 -1
  169. package/assets/js/components/table-no-submit/table-no-submit.component.js +12 -0
  170. package/assets/js/components/table-no-submit/table-no-submit.component.min.js +3 -3
  171. package/assets/js/components/table-no-submit/table-no-submit.component.min.js.map +1 -1
  172. package/assets/js/components/table-submit/table-submit.component.js +12 -0
  173. package/assets/js/components/table-submit/table-submit.component.min.js +3 -3
  174. package/assets/js/components/table-submit/table-submit.component.min.js.map +1 -1
  175. package/assets/js/components/tabs/tabs.component.min.js +1 -1
  176. package/assets/js/components/tabs/tabs.component.min.js.map +1 -1
  177. package/assets/js/components/video-card/video-card.component.min.js +1 -1
  178. package/assets/js/components/video-card/video-card.component.min.js.map +1 -1
  179. package/assets/js/components/word-count/word-count.component.js +81 -0
  180. package/assets/js/components/word-count/word-count.component.min.js +12 -0
  181. package/assets/js/components/word-count/word-count.component.min.js.map +1 -0
  182. package/assets/js/components.js +59 -0
  183. package/assets/js/modules/advanced-select.js +106 -0
  184. package/assets/js/modules/dialogs.js +53 -51
  185. package/assets/js/modules/dynamicEvents.js +7 -0
  186. package/assets/js/modules/inputs.js +0 -18
  187. package/assets/js/modules/milestone-group.js +30 -0
  188. package/assets/js/modules/milestone.js +89 -0
  189. package/assets/js/modules/table.js +11 -1
  190. package/assets/js/modules/videos.js +1 -1
  191. package/assets/js/scripts.bundle.js +3 -3
  192. package/assets/js/scripts.bundle.js.map +1 -1
  193. package/assets/js/scripts.bundle.min.js +2 -2
  194. package/assets/js/scripts.bundle.min.js.map +1 -1
  195. package/assets/js/scripts.js +5 -0
  196. package/assets/sass/_components.scss +15 -4
  197. package/assets/sass/_example.scss +1 -1
  198. package/assets/sass/_functions/utility-mixins.scss +40 -0
  199. package/assets/sass/_functions/variables.scss +11 -5
  200. package/assets/sass/components/actionbar.component.scss +23 -1
  201. package/assets/sass/components/actionbar.global.scss +5 -5
  202. package/assets/sass/components/{address-lookup.scss → address-lookup.component.scss} +10 -0
  203. package/assets/sass/components/calendar.component.scss +1272 -0
  204. package/assets/sass/components/calendar.config.scss +423 -0
  205. package/assets/sass/components/card.component.scss +4 -34
  206. package/assets/sass/components/carousel.component.scss +5 -0
  207. package/assets/sass/components/collapsible-side.scss +91 -95
  208. package/assets/sass/components/content.component.scss +18 -0
  209. package/assets/sass/components/darkmode.component.scss +22 -0
  210. package/assets/sass/components/inline-edit.scss +2 -0
  211. package/assets/sass/components/{marketing.scss → marketing.component.scss} +2 -6
  212. package/assets/sass/components/menu.component.scss +3 -8
  213. package/assets/sass/components/milestone.scss +216 -0
  214. package/assets/sass/components/multi-step.component.scss +1 -1
  215. package/assets/sass/components/multiselect.preload.scss +1 -1
  216. package/assets/sass/components/multiselect.scss +2 -0
  217. package/assets/sass/components/nav.component.scss +17 -6
  218. package/assets/sass/components/nav.global.scss +29 -3
  219. package/assets/sass/components/notification.scss +32 -13
  220. package/assets/sass/components/rank.component.scss +197 -24
  221. package/assets/sass/components/rankings.component.scss +38 -28
  222. package/assets/sass/components/rankings.global.scss +64 -2
  223. package/assets/sass/components/split-button.component.scss +79 -0
  224. package/assets/sass/components/table-basic.global.scss +32 -32
  225. package/assets/sass/components/word-count.component.scss +26 -0
  226. package/assets/sass/elements/admin-panel.scss +1 -1
  227. package/assets/sass/elements/badge-tag.scss +5 -1
  228. package/assets/sass/elements/buttons--compact.scss +4 -0
  229. package/assets/sass/elements/details.scss +33 -7
  230. package/assets/sass/elements/forms.scss +135 -28
  231. package/assets/sass/elements/links.scss +132 -4
  232. package/assets/sass/elements/lists.scss +62 -1
  233. package/assets/sass/elements/popover.scss +64 -10
  234. package/assets/sass/elements/toggle-button.scss +8 -8
  235. package/assets/sass/elements/type.scss +7 -10
  236. package/assets/sass/foundations/colours.scss +0 -0
  237. package/assets/sass/foundations/reboot.scss +8 -1
  238. package/assets/sass/foundations/root.scss +41 -51
  239. package/assets/sass/templates/form.scss +0 -2
  240. package/assets/ts/components/accordion/accordion.component.ts +47 -26
  241. package/assets/ts/components/actionbar/actionbar.component.ts +58 -22
  242. package/assets/ts/components/address-lookup/address-lookup.component.ts +6 -8
  243. package/assets/ts/components/advanced-select/advanced-select.component.ts +74 -0
  244. package/assets/ts/components/calendar/calendar.component.ts +1330 -0
  245. package/assets/ts/components/card/card.component.ts +15 -14
  246. package/assets/ts/components/carousel/carousel.component.ts +17 -19
  247. package/assets/ts/components/collapsible-side/collapsible-side.component.ts +53 -12
  248. package/assets/ts/components/content/content.component.ts +78 -0
  249. package/assets/ts/components/darkmode/darkmode.component.ts +85 -0
  250. package/assets/ts/components/marketing/marketing.component.ts +1 -1
  251. package/assets/ts/components/menu/menu.component.ts +18 -10
  252. package/assets/ts/components/milestone/milestone.component.ts +43 -0
  253. package/assets/ts/components/milestone-group/milestone-group.component.ts +39 -0
  254. package/assets/ts/components/multiselect/multiselect.component.ts +60 -3
  255. package/assets/ts/components/nav/nav.component.ts +18 -0
  256. package/assets/ts/components/notification/notification.component.ts +30 -11
  257. package/assets/ts/components/rank/rank.component.ts +345 -209
  258. package/assets/ts/components/rankings/rankings.component.ts +27 -8
  259. package/assets/ts/components/search/search.component.ts +6 -4
  260. package/assets/ts/components/split-button/split-button.component.ts +67 -0
  261. package/assets/ts/components/table/table.component.ts +14 -0
  262. package/assets/ts/components/table-ajax/table-ajax.component.ts +14 -0
  263. package/assets/ts/components/table-no-submit/table-no-submit.component.ts +14 -0
  264. package/assets/ts/components/table-submit/table-submit.component.ts +14 -0
  265. package/assets/ts/components/video-card/video-card.component.ts +2 -3
  266. package/assets/ts/components/word-count/word-count.component.ts +91 -0
  267. package/assets/ts/components.ts +64 -0
  268. package/assets/ts/modules/advanced-select.ts +120 -0
  269. package/assets/ts/modules/data-layer.md +0 -5
  270. package/assets/ts/modules/dialogs.ts +64 -61
  271. package/assets/ts/modules/dynamicEvents.ts +10 -0
  272. package/assets/ts/modules/inputs.ts +0 -25
  273. package/assets/ts/modules/milestone-group.ts +39 -0
  274. package/assets/ts/modules/milestone.ts +119 -0
  275. package/assets/ts/modules/table.ts +15 -1
  276. package/assets/ts/modules/videos.ts +19 -37
  277. package/assets/ts/scripts.ts +6 -3
  278. package/dist/components.es.js +849 -1079
  279. package/dist/components.umd.js +1052 -220
  280. package/package.json +6 -6
  281. package/src/components/Accordion/Accordion.vue +14 -23
  282. package/src/components/Accordion/AccordionItem.vue +27 -43
  283. package/src/components/Actionbar/Actionbar.vue +17 -19
  284. package/src/components/AddressLookup/AddressLookup.vue +17 -18
  285. package/src/components/AdvancedSelect/AdvancedSelect.vue +22 -0
  286. package/src/components/AppliedFilters/AppliedFilters.vue +16 -18
  287. package/src/components/Banner/Banner.vue +18 -21
  288. package/src/components/BarChart/BarChart.vue +17 -18
  289. package/src/components/Calendar/Calendar.vue +20 -0
  290. package/src/components/Card/Card.vue +17 -17
  291. package/src/components/Carousel/Carousel.vue +17 -20
  292. package/src/components/CollapsibleSideMenu/CollapsibleSideMenu.vue +7 -13
  293. package/src/components/Content/Content.vue +22 -0
  294. package/src/components/DarkMode/DarkMode.vue +19 -0
  295. package/src/components/DoughnutChart/DoughnutChart.vue +17 -18
  296. package/src/components/FileUpload/FileUpload.vue +22 -28
  297. package/src/components/FilterCard/FilterCard.vue +17 -18
  298. package/src/components/Filterlist/Filterlist.vue +17 -0
  299. package/src/components/Header/Header.vue +28 -29
  300. package/src/components/InlineEdit/InlineEdit.vue +11 -19
  301. package/src/components/Menu/Menu.vue +17 -17
  302. package/src/components/Milestones/Milestone.vue +22 -0
  303. package/src/components/Milestones/MilestoneGroup.vue +24 -0
  304. package/src/components/Multiselect/Multiselect.vue +17 -18
  305. package/src/components/Nav/Nav.vue +17 -19
  306. package/src/components/Notification/Notification.vue +17 -15
  307. package/src/components/Pagination/Pagination.vue +16 -16
  308. package/src/components/Rank/Rank.vue +17 -18
  309. package/src/components/Rankings/Rankings.vue +17 -27
  310. package/src/components/RecordCard/RecordCard.vue +17 -18
  311. package/src/components/Search/Search.vue +17 -17
  312. package/src/components/Slider/Slider.vue +17 -17
  313. package/src/components/SplitButton/README.md +19 -0
  314. package/src/components/SplitButton/SplitButton.vue +23 -0
  315. package/src/components/Tabs/Tabs.vue +17 -17
  316. package/src/components/VideoCard/VideoCard.vue +17 -18
  317. package/src/components/WordCount/WordCount.vue +22 -0
  318. package/src/index.js +2 -0
  319. package/assets/css/components/address-lookup.css +0 -1
  320. package/assets/css/components/address-lookup.css.map +0 -1
  321. package/assets/css/components/marketing.css +0 -1
  322. package/assets/css/components/marketing.css.map +0 -1
  323. package/assets/css/components/menu.css.map +0 -1
  324. package/assets/css/components/nav.old.css +0 -1
  325. package/assets/css/components/nav.old.css.map +0 -1
  326. package/assets/sass/components/nav.old.scss +0 -891
  327. /package/assets/sass/components/{menu.scss → menu.global.scss} +0 -0
@@ -0,0 +1,1272 @@
1
+ @use '../_func.scss' as *;
2
+ @use '../elements/buttons.scss' as *;
3
+ @use '../elements/badge-tag.scss' as *;
4
+ @use '../elements/type.scss' as *;
5
+ @use '../elements/forms.scss' as *;
6
+
7
+ @use '../elements/dialog.scss' as *;
8
+
9
+ @use '../elements/modal.scss' as *;
10
+
11
+ *,
12
+ *::before,
13
+ *::after {
14
+ box-sizing: border-box;
15
+ }
16
+
17
+ .border-0 {
18
+ border: none;
19
+ }
20
+ .d-inline-block {
21
+ display: inline-block;
22
+ }
23
+
24
+ .visually-hidden,
25
+ .visually-hidden-focusable:not(:focus):not(:focus-within) {
26
+ position: absolute !important;
27
+ width: 1px !important;
28
+ height: 1px !important;
29
+ padding: 0 !important;
30
+ margin: -1px !important;
31
+ overflow: hidden !important;
32
+ clip: rect(0, 0, 0, 0) !important;
33
+ white-space: nowrap !important;
34
+ border: 0 !important;
35
+ }
36
+
37
+ // #region FA icons
38
+ .fa-regular,
39
+ .far {
40
+ font-weight: 400;
41
+ }
42
+ .fa-light,
43
+ .fal {
44
+ font-weight: 300;
45
+ }
46
+
47
+ [class*='fa-']:before {
48
+ content: var(--fa);
49
+ font-family: 'Font Awesome 6 Pro';
50
+ line-height: 1em;
51
+ }
52
+
53
+ .fa-calendar-day {
54
+ --fa: '\f783';
55
+ }
56
+ .fa-calendar-days {
57
+ --fa: '\f073';
58
+ }
59
+ .fa-calendar-week {
60
+ --fa: '\f784';
61
+ }
62
+ .fa-calendars {
63
+ --fa: '\e0d7';
64
+ }
65
+ .fa-list {
66
+ --fa: '\f03a';
67
+ }
68
+ .fa-chevron-down {
69
+ --fa: '\f078';
70
+ }
71
+ .fa-chevron-left {
72
+ --fa: '\f053';
73
+ }
74
+ .fa-chevron-right {
75
+ --fa: '\f054';
76
+ }
77
+ .fa-sliders {
78
+ --fa: '\f1de';
79
+ }
80
+ .fa-cog,
81
+ .fa-gear {
82
+ --fa: '\f013';
83
+ --fa--fa: '\f013\f013';
84
+ }
85
+ .fa-clock {
86
+ --fa: '\f017';
87
+ }
88
+ // #endregion
89
+
90
+ // #region controls
91
+
92
+ #view[data-views] option {
93
+ display: none;
94
+ }
95
+
96
+ #view[data-views*='month'] option[value='month'] {
97
+ display: flex;
98
+ }
99
+ #view[data-views*='week'] option[value='week'] {
100
+ display: flex;
101
+ }
102
+ #view[data-views*='day'] option[value='day'] {
103
+ display: flex;
104
+ }
105
+ #view[data-views*='list'] option[value='list'] {
106
+ display: flex;
107
+ }
108
+
109
+ #view[data-views*='year'] option[value='year'] {
110
+ display: flex;
111
+ }
112
+
113
+ .calendar__controls {
114
+ display: flex;
115
+ flex-direction: row;
116
+ align-content: center;
117
+ align-items: center;
118
+ flex-wrap: wrap;
119
+ padding-bottom: 0.5rem;
120
+ }
121
+
122
+ #view,
123
+ #view::picker(select) {
124
+ appearance: base-select;
125
+ }
126
+
127
+ #view::picker-icon {
128
+ display: none;
129
+ }
130
+ @layer elements {
131
+ #view {
132
+ margin-bottom: 0.5rem !important;
133
+
134
+ i[class*='fa-'] {
135
+ margin-right: 0.5rem;
136
+ }
137
+ }
138
+
139
+ div:has(> #view) {
140
+ margin-bottom: 0 !important;
141
+ }
142
+ }
143
+
144
+ div:has(> select) #view {
145
+ margin-bottom: 0.5rem !important;
146
+ }
147
+
148
+ #view::picker(select) {
149
+ border-radius: 0.5rem;
150
+ border-color: var(--colour-border);
151
+ box-shadow: 0px 2px 9px rgba(0, 0, 0, 0.1);
152
+ padding: 0.5rem;
153
+ }
154
+
155
+ #view option {
156
+ padding-block: 0.5rem;
157
+
158
+ i {
159
+ font-weight: 400;
160
+ }
161
+ }
162
+ #view option:checked {
163
+ font-weight: bold;
164
+ }
165
+
166
+ #view option::checkmark {
167
+ display: none;
168
+ }
169
+
170
+ #prev-button,
171
+ #next-button {
172
+ margin-right: 0.5rem;
173
+ }
174
+
175
+ #next-button {
176
+ margin-right: auto;
177
+ margin-left: 0.5rem;
178
+ }
179
+
180
+ #prev-button:before,
181
+ #next-button:before {
182
+ margin-right: 0;
183
+ }
184
+
185
+ .calendar__datepicker {
186
+ display: inline-block;
187
+ position: relative;
188
+ margin-bottom: rem(9);
189
+ //margin-right: auto;
190
+
191
+ input {
192
+ position: absolute;
193
+ inset: 0;
194
+ opacity: 0;
195
+ z-index: 1;
196
+ }
197
+
198
+ ::-webkit-calendar-picker-indicator {
199
+ width: 100%;
200
+ height: 100%;
201
+ position: absolute;
202
+ inset: 0;
203
+ opacity: 0;
204
+ z-index: 1;
205
+ cursor: pointer;
206
+ }
207
+ }
208
+
209
+ .calendar__title {
210
+ display: inline-block;
211
+ line-height: rem(36);
212
+ margin-bottom: 0;
213
+ color: var(--colour-primary);
214
+ pointer-events: none;
215
+ }
216
+
217
+ #filters-button,
218
+ #settings-button {
219
+ i {
220
+ margin-right: 0 !important;
221
+ }
222
+
223
+ @container (min-width: 62em) {
224
+ .visually-hidden {
225
+ display: contents;
226
+ }
227
+
228
+ i {
229
+ margin-right: 1rem !important;
230
+ }
231
+ }
232
+ }
233
+
234
+ #filters-button {
235
+ display: none;
236
+ }
237
+
238
+ :host([data-filter]) #filters-button {
239
+ display: block;
240
+ }
241
+
242
+ hr {
243
+ display: none;
244
+ }
245
+
246
+ .tag.tag--toggle {
247
+ display: none;
248
+ }
249
+
250
+ @container (max-width: 36em) {
251
+ #today-button {
252
+ display: none;
253
+ }
254
+
255
+ .calendar__controls > * {
256
+ order: 1;
257
+ }
258
+
259
+ hr {
260
+ margin: 0;
261
+ padding: 0;
262
+ width: 100%;
263
+ border: 0;
264
+ height: 0;
265
+
266
+ display: block !important;
267
+ order: 2 !important;
268
+ }
269
+
270
+ #prev-button,
271
+ #next-button,
272
+ .calendar__datepicker {
273
+ order: 3;
274
+ }
275
+ .calendar__datepicker {
276
+ margin-inline: 0.5rem;
277
+ }
278
+
279
+ #prev-button {
280
+ margin-right: 0;
281
+ margin-left: auto;
282
+ }
283
+
284
+ #next-button {
285
+ margin-right: auto;
286
+ }
287
+
288
+ #filters-button {
289
+ margin-left: auto;
290
+ }
291
+
292
+ select:has(option[value='month']:checked) ~ .tag.tag--toggle {
293
+ display: inline-block;
294
+ margin-bottom: rem(9);
295
+ margin-right: 0;
296
+ line-height: rem(32);
297
+ order: 1;
298
+ margin-left: auto;
299
+
300
+ &:not(:has([type='checkbox']:checked)) {
301
+ outline: 1px solid var(--colour-muted) !important;
302
+ }
303
+
304
+ [type='checkbox'] {
305
+ position: absolute;
306
+ top: 0;
307
+ left: 0;
308
+ opacity: 0;
309
+ height: 0;
310
+ width: 0;
311
+ margin: 0;
312
+ pointer-events: none;
313
+ }
314
+ }
315
+
316
+ select:has(option[value='month']:checked) ~ #filters-button {
317
+ margin-left: 0.5rem;
318
+ }
319
+ }
320
+ // #endregion
321
+
322
+ // #region settings
323
+
324
+ #workday {
325
+ display: flex;
326
+ flex-direction: row;
327
+ flex-wrap: nowrap;
328
+ gap: 1rem;
329
+ margin-bottom: 1rem;
330
+
331
+ label {
332
+ flex-grow: 1;
333
+ }
334
+ }
335
+
336
+ .btn-primary,
337
+ .btn-secondary {
338
+ display: block;
339
+ margin-right: 0;
340
+ margin-bottom: 0;
341
+ margin-top: 1rem;
342
+ width: 100%;
343
+ max-width: 100%;
344
+ text-align: center;
345
+ }
346
+
347
+ // #endregion
348
+
349
+ // To do setup CSS vars
350
+ :host {
351
+ --columnHeadingFontSide: #{rem(14)};
352
+ --columnHeadingLineHeight: #{rem(24)};
353
+ --columnHeadingFontWeight: bold;
354
+
355
+ --alldayHeight: #{rem(28)};
356
+
357
+ background-color: var(--colour-canvas);
358
+ }
359
+
360
+ .column-header {
361
+ font-size: var(--columnHeadingFontSide);
362
+ line-height: var(--columnHeadingLineHeight);
363
+ height: var(--columnHeadingLineHeight);
364
+ color: var(--colour-heading);
365
+ white-space: nowrap;
366
+ padding-inline: rem(4);
367
+ font-weight: var(--columnHeadingFontWeight);
368
+ }
369
+
370
+ time.column-header {
371
+ display: block;
372
+ }
373
+
374
+ .calendar__container {
375
+ container-type: inline-size;
376
+ }
377
+
378
+ #week-view-corner,
379
+ #week-view-header,
380
+ #week-view-side,
381
+ #split,
382
+ #year-view {
383
+ display: none;
384
+ }
385
+
386
+ .today {
387
+ .day {
388
+ background-color: var(--colour-info);
389
+ text-align: center;
390
+ }
391
+ }
392
+
393
+ .day {
394
+ width: rem(20);
395
+ height: rem(20);
396
+ line-height: rem(20);
397
+ margin-top: rem(2);
398
+ text-align: left;
399
+ border-radius: 50%;
400
+ display: inline-block;
401
+ }
402
+
403
+ // #region month view
404
+ .calendar__controls:has(select :is(option[value='month'], option[value='year']):checked)
405
+ ~ .calendar__wrapper
406
+ :is(#calendar, .month-wrapper) {
407
+ container-type: inline-size;
408
+ }
409
+
410
+ .calendar__controls:has(select :is(option[value='month'], option[value='year']):checked)
411
+ ~ .calendar__wrapper
412
+ :is(#calendar, .month-wrapper)
413
+ > table {
414
+ width: 100%;
415
+ border-collapse: collapse;
416
+ max-height: unset;
417
+ table-layout: fixed;
418
+ height: 30rem;
419
+ font-size: rem(16);
420
+ line-height: 1;
421
+ border: 1px solid var(--colour-border);
422
+ margin-bottom: 2rem;
423
+
424
+ > thead > tr > th,
425
+ > tbody > tr > td {
426
+ border: 1px solid var(--colour-border);
427
+ color: var(--colour-heading);
428
+ }
429
+
430
+ > thead > tr > th {
431
+ text-align: center;
432
+
433
+ .long-day-name {
434
+ display: none;
435
+ }
436
+
437
+ @container (min-width: 36em) {
438
+ .short-day-name {
439
+ display: none;
440
+ }
441
+ .long-day-name {
442
+ display: inline;
443
+ }
444
+ }
445
+ }
446
+
447
+ > tbody > tr > td {
448
+ padding: 0.25rem;
449
+ overflow-x: visible;
450
+ overflow-y: clip;
451
+ aspect-ratio: unset;
452
+ //padding-top: 100%;
453
+ position: relative;
454
+ }
455
+
456
+ > tbody > tr > td > time {
457
+ font-weight: normal;
458
+ position: absolute;
459
+ top: 0.25rem;
460
+ left: 0;
461
+
462
+ .day-of-week,
463
+ .month {
464
+ display: none;
465
+ }
466
+ }
467
+
468
+ > tbody > tr > td {
469
+ overflow: hidden;
470
+ position: relative;
471
+
472
+ &:hover {
473
+ background-color: rgba(238, 238, 238, 1);
474
+ }
475
+
476
+ &:active {
477
+ background-color: rgba(224, 224, 224, 1);
478
+ }
479
+
480
+ &.selected {
481
+ background-color: rgba(233, 248, 252, 1);
482
+ }
483
+
484
+ &.day--saturday:not(.prev-month, .next-month, .selected),
485
+ &.day--sunday:not(.prev-month, .next-month, .selected) {
486
+ background-color: rgba(245, 245, 245, 1);
487
+ }
488
+
489
+ &.prev-month {
490
+ background-color: rgba(245, 245, 245, 0.4);
491
+ color: var(--colour-border);
492
+ }
493
+ &.next-month {
494
+ background-color: rgba(245, 245, 245, 0.4);
495
+ color: var(--colour-border);
496
+ }
497
+ }
498
+
499
+ @container (max-width: 36em) {
500
+ .table--day {
501
+ display: none;
502
+ thead,
503
+ tbody,
504
+ tr,
505
+ td {
506
+ display: none;
507
+ }
508
+ }
509
+
510
+ > tbody > tr > td {
511
+ overflow: visible;
512
+
513
+ &.has-event .table--day {
514
+ display: block;
515
+ position: absolute;
516
+ top: 2rem;
517
+ left: 0.25rem;
518
+ height: 0.5rem;
519
+ border-radius: 0.25rem;
520
+ overflow: hidden;
521
+ display: inline-block;
522
+ width: 0.5rem;
523
+ background: var(--colour-muted);
524
+ }
525
+ &.multi-events .table--day {
526
+ width: calc(50% - 0.5rem);
527
+ }
528
+ &.busy-day .table--day {
529
+ width: calc(75% - 0.5rem);
530
+ }
531
+ &.all-day .table--day {
532
+ width: calc(100% - 0.5rem);
533
+ }
534
+ &.continued-day:not(:first-child) .table--day {
535
+ width: calc(100% - 0.25rem);
536
+ left: 0;
537
+ margin-left: -1px;
538
+ border-top-left-radius: 0;
539
+ border-bottom-left-radius: 0;
540
+ }
541
+ &.all-day:has(+ .continued-day) .table--day {
542
+ width: calc(100% - 0.25rem);
543
+ border-top-right-radius: 0;
544
+ border-bottom-right-radius: 0;
545
+ }
546
+ &.continued-day:has(+ .continued-day) .table--day {
547
+ width: calc(100% + 2px);
548
+ margin-inline: -1px;
549
+ border-top-right-radius: 0;
550
+ border-bottom-right-radius: 0;
551
+ }
552
+ }
553
+ }
554
+ @container (min-width: 36em) {
555
+ height: 50rem;
556
+
557
+ > tbody > tr > td {
558
+ //pointer-events: none;
559
+ overflow: visible;
560
+ }
561
+
562
+ .table--day {
563
+ display: none;
564
+ }
565
+ .table--day:has(slot) {
566
+ display: block;
567
+ position: absolute;
568
+ top: 2rem;
569
+ left: 0;
570
+
571
+ > thead,
572
+ > tbody > tr > th,
573
+ > tbody > tr > td:not(:has(slot)) {
574
+ display: none;
575
+ }
576
+ > tbody,
577
+ > tbody > tr {
578
+ display: block;
579
+ }
580
+
581
+ > tbody > tr > td:has(slot) {
582
+ border: 0;
583
+ padding-inline: 0.25rem;
584
+ display: block;
585
+ overflow: visible;
586
+
587
+ slot {
588
+ pointer-events: all;
589
+ overflow: visible;
590
+ }
591
+ }
592
+
593
+ .multiple-event ~ .has-event {
594
+ display: none;
595
+ }
596
+
597
+ .has-event ~ .has-event ~ .has-event {
598
+ display: none;
599
+ }
600
+
601
+ .has-event ~ .multiple-event td:has([slot]) span:has([slot]) ~ span:has([slot]),
602
+ .has-event ~ .multiple-event td:has([slot]) ~ td:has([slot]) {
603
+ display: none;
604
+ }
605
+ }
606
+
607
+ > tbody > tr > td[data-more]:after {
608
+ content: '+' attr(data-more) ' more';
609
+ position: absolute;
610
+ left: 0.25rem;
611
+ bottom: 0.75rem;
612
+ text-decoration: underline;
613
+ line-height: 1;
614
+ text-underline-offset: 0.2em;
615
+ pointer-events: auto;
616
+ cursor: pointer;
617
+ }
618
+
619
+ ::slotted(button) {
620
+ width: var(--event-width, 100%) !important;
621
+ max-width: var(--event-max-width, 100%) !important;
622
+ }
623
+
624
+ > tbody > tr > td:not(:first-child) ::slotted(button.continued) {
625
+ opacity: 0 !important;
626
+ pointer-events: none !important;
627
+ }
628
+
629
+ .table--day {
630
+ width: 100%;
631
+
632
+ td {
633
+ height: auto;
634
+ width: auto;
635
+ position: relative;
636
+
637
+ slot {
638
+ width: 100%;
639
+ display: block;
640
+ }
641
+ }
642
+ }
643
+ }
644
+ }
645
+ @container (max-width: 36em) {
646
+ .calendar__controls:has([name='split']:checked) ~ .calendar__wrapper #calendar {
647
+ > table {
648
+ height: auto !important;
649
+ }
650
+
651
+ > table > tbody > tr > td {
652
+ height: 3rem;
653
+ }
654
+ }
655
+ }
656
+ // #endregion
657
+
658
+ // #region week view
659
+
660
+ .calendar__controls:has(select option[value='week']:checked) ~ .calendar__wrapper {
661
+ #week-view-header {
662
+ display: block;
663
+ position: sticky;
664
+ top: 0;
665
+ margin: 0;
666
+ padding-left: var(--side-panel-width);
667
+ margin-bottom: -1px;
668
+ background-color: white;
669
+ z-index: 100;
670
+
671
+ > table {
672
+ width: 100%;
673
+ background-color: white;
674
+ }
675
+
676
+ // Only show the all day row
677
+ .table--day > tbody > tr:not(.allday) {
678
+ display: none;
679
+ }
680
+ }
681
+
682
+ #week-view-header .table--day,
683
+ #calendar .table--day {
684
+ margin: -2px !important;
685
+ width: calc(100% + 4px) !important;
686
+ }
687
+
688
+ .calendar {
689
+ > table {
690
+ display: table;
691
+ width: 100%;
692
+ min-width: 55rem;
693
+ }
694
+ }
695
+ }
696
+
697
+ .calendar__controls:has(select :is(option[value='day'], option[value='week']):checked) ~ .calendar__wrapper {
698
+ --side-panel-width: #{rem(48)};
699
+ position: relative;
700
+ height: 40rem;
701
+ overflow: auto;
702
+ margin-bottom: 2rem;
703
+
704
+ @container (min-width: 36em) {
705
+ --side-panel-width: #{rem(72)};
706
+ }
707
+
708
+ #week-view-corner {
709
+ display: block;
710
+ position: sticky;
711
+ top: 0;
712
+ left: 0;
713
+ width: calc(var(--side-panel-width) + 1px);
714
+
715
+ margin-bottom: -3.5rem !important;
716
+ z-index: 9999;
717
+
718
+ table {
719
+ min-width: var(--side-panel-width);
720
+ }
721
+
722
+ thead {
723
+ display: table-header-group !important;
724
+ tr {
725
+ display: table-row !important;
726
+ }
727
+ th {
728
+ display: table-cell !important;
729
+ height: calc(var(--columnHeadingLineHeight) - 1px) !important;
730
+ line-height: calc(var(--columnHeadingLineHeight) - 1px) !important;
731
+ background-color: var(--colour-canvas);
732
+ border: 1px solid var(--colour-border);
733
+ //border-right: 0;
734
+ text-indent: -300%;
735
+ overflow: hidden;
736
+ }
737
+ }
738
+ tbody {
739
+ display: table-row-group !important;
740
+ tr {
741
+ display: table-row !important;
742
+ }
743
+ th {
744
+ display: table-cell !important;
745
+ height: calc(var(--alldayHeight) - 3px) !important;
746
+ line-height: calc(var(--alldayHeight) - 3px) !important;
747
+ background-color: var(--colour-canvas);
748
+ border: 1px solid var(--colour-border);
749
+
750
+ text-align: right;
751
+ font-size: var(--columnHeadingFontSide);
752
+
753
+ color: var(--colour-heading);
754
+ white-space: nowrap;
755
+ padding-inline: 0.25rem;
756
+ vertical-align: top;
757
+ font-weight: normal;
758
+ }
759
+ }
760
+ }
761
+
762
+ .table--day {
763
+ border-collapse: collapse;
764
+ width: 100%;
765
+ color: var(--colour-heading);
766
+
767
+ > thead,
768
+ > tbody > tr > th {
769
+ display: none;
770
+ }
771
+
772
+ tbody th {
773
+ text-align: right;
774
+
775
+ font-size: var(--columnHeadingFontSide);
776
+ line-height: var(--alldayHeight);
777
+ height: var(--alldayHeight);
778
+ color: var(--colour-heading);
779
+ white-space: nowrap;
780
+ padding-inline: rem(4);
781
+ vertical-align: top;
782
+ font-weight: normal;
783
+ }
784
+
785
+ td {
786
+ height: auto;
787
+ width: auto;
788
+ position: relative;
789
+ line-height: 1;
790
+
791
+ slot {
792
+ width: 100%;
793
+ display: block;
794
+ position: relative;
795
+ }
796
+ }
797
+
798
+ > tbody > tr {
799
+ border: 1px solid var(--colour-border);
800
+ padding: 0;
801
+ }
802
+
803
+ > tbody > tr > th,
804
+ > tbody > tr > td {
805
+ height: rem(72);
806
+ }
807
+
808
+ > tbody > tr > td {
809
+ padding: 0;
810
+
811
+ &:hover {
812
+ z-index: 6;
813
+ }
814
+ }
815
+
816
+ > tbody > tr > td:has(slot) {
817
+ padding: 0 0.25rem !important;
818
+ z-index: 7;
819
+ }
820
+
821
+ > tbody > tr > td > span {
822
+ height: rem(17.5);
823
+ display: block;
824
+
825
+ &.dragover {
826
+ background: pink;
827
+ }
828
+ }
829
+ > tbody > tr > td > span:nth-child(2) {
830
+ border-bottom: 1px dashed var(--colour-border);
831
+ margin-bottom: -1px;
832
+ }
833
+
834
+ > tbody > tr.allday > th {
835
+ display: block;
836
+ position: absolute;
837
+ width: calc(4.5rem);
838
+ right: 100%;
839
+ margin-top: -1px;
840
+ margin-left: 2px;
841
+ border-top: 1px solid var(--colour-border);
842
+ border-bottom: 1px solid var(--colour-border);
843
+
844
+ height: calc(var(--columnHeadingLineHeight) + 1px);
845
+ }
846
+
847
+ > tbody > tr.allday > td {
848
+ height: var(--columnHeadingLineHeight) !important;
849
+ }
850
+ }
851
+
852
+ .calendar {
853
+ > table {
854
+ display: table;
855
+ width: 100%;
856
+ border-collapse: collapse;
857
+ table-layout: fixed;
858
+ }
859
+
860
+ // Only show the selected week
861
+ > table > thead,
862
+ > table > tbody > tr:not(:has(.selected)) {
863
+ display: none !important;
864
+ }
865
+
866
+ > table > tbody > tr:has(.selected) > td {
867
+ border: 1px solid var(--colour-border);
868
+
869
+ .day-of-week {
870
+ float: left;
871
+ }
872
+ .day {
873
+ display: inline-block;
874
+ margin-left: 1rem;
875
+ float: right;
876
+ }
877
+ .month {
878
+ display: none;
879
+ }
880
+ }
881
+
882
+ .table--day > tbody > tr.allday {
883
+ height: var(--alldayHeight) !important;
884
+
885
+ th {
886
+ display: none;
887
+ }
888
+
889
+ td:has(slot) {
890
+ font-size: var(--columnHeadingFontSide);
891
+ color: var(--colour-heading);
892
+ //white-space: nowrap;
893
+ padding-inline: rem(4);
894
+ height: var(--alldayHeight) !important;
895
+ line-height: var(--alldayHeight) !important;
896
+ }
897
+ }
898
+ }
899
+
900
+ #week-view-side {
901
+ display: block;
902
+ left: 0;
903
+ position: sticky;
904
+ width: calc(var(--side-panel-width) + 1px);
905
+ overflow: hidden;
906
+ float: left;
907
+ z-index: 99;
908
+ background: white;
909
+
910
+ margin-right: -1px;
911
+
912
+ .table--day {
913
+ margin: 0px;
914
+ width: 100%;
915
+ }
916
+
917
+ .table--day > tbody > tr.allday {
918
+ display: none;
919
+ }
920
+
921
+ .table--day > tbody > tr > th {
922
+ display: table-cell;
923
+ border: 1px solid var(--colour-border);
924
+ border-right: none;
925
+ }
926
+ }
927
+
928
+ #calendar {
929
+ width: calc(100% - var(--side-panel-width));
930
+ float: left;
931
+
932
+ > table > tbody > tr {
933
+ display: table-row;
934
+ }
935
+ time {
936
+ display: none !important;
937
+ }
938
+
939
+ .table--day tr.allday {
940
+ display: none !important;
941
+ }
942
+ }
943
+
944
+ #calendar .table--day tr:has(.out-of-hours) {
945
+ background: rgba(245, 245, 245, 1);
946
+ }
947
+ }
948
+ // #endregion
949
+
950
+ // #region Day view
951
+ .calendar__controls:has(select option[value='day']:checked) ~ .calendar__wrapper {
952
+ #week-view-corner {
953
+ thead {
954
+ th {
955
+ border: 1px solid var(--colour-border);
956
+ }
957
+ }
958
+ tbody {
959
+ th {
960
+ border-right: 1px solid var(--colour-border);
961
+ }
962
+ }
963
+ }
964
+
965
+ #week-view-side {
966
+ padding-top: calc(var(--columnHeadingLineHeight) + var(--alldayHeight) + 1px);
967
+ }
968
+
969
+ #week-view-side .table--day > tbody > tr > th {
970
+ position: static;
971
+ }
972
+
973
+ #calendar > table {
974
+ --side-panel-width: #{rem(48)};
975
+ table-layout: fixed;
976
+ width: 100%;
977
+ max-width: 100%;
978
+
979
+ @container (min-width: 36em) {
980
+ --side-panel-width: #{rem(72)};
981
+ }
982
+
983
+ > thead,
984
+ > tbody > tr:not(:has(> td.selected)),
985
+ > tbody > tr > td:not(.selected),
986
+ > tbody > tr > td > time {
987
+ display: none;
988
+ }
989
+
990
+ > tbody > tr:has(> td.selected) {
991
+ display: block;
992
+ }
993
+
994
+ > tbody > tr > td.selected {
995
+ display: contents;
996
+ }
997
+
998
+ .table--day {
999
+ width: 100%;
1000
+ max-width: 100%;
1001
+ table-layout: fixed;
1002
+
1003
+ //border-collapse: separate;
1004
+ border-collapse: separate;
1005
+ border-spacing: 0;
1006
+
1007
+ thead {
1008
+ display: table-header-group !important;
1009
+ }
1010
+
1011
+ thead th {
1012
+ position: sticky;
1013
+ top: 0;
1014
+ z-index: 99;
1015
+ background: var(--colour-canvas);
1016
+ border-top: 1px solid var(--colour-border);
1017
+ border-right: 1px solid var(--colour-border);
1018
+
1019
+ height: calc(var(--columnHeadingLineHeight) - 1px) !important;
1020
+ line-height: calc(var(--columnHeadingLineHeight) - 1px) !important;
1021
+ }
1022
+
1023
+ > thead > tr > th:first-child {
1024
+ display: none;
1025
+ }
1026
+ tbody tr:first-child {
1027
+ position: sticky;
1028
+ top: rem(26);
1029
+ border-collapse: collapse;
1030
+ background: var(--colour-canvas);
1031
+ z-index: 99;
1032
+ display: table-row !important;
1033
+
1034
+ td {
1035
+ border-top: 1px solid var(--colour-border);
1036
+ }
1037
+ }
1038
+
1039
+ tbody th {
1040
+ display: none;
1041
+ }
1042
+
1043
+ tbody th,
1044
+ tbody td {
1045
+ border-bottom: 1px solid var(--colour-border);
1046
+ border-right: 1px solid var(--colour-border);
1047
+ height: rem(72);
1048
+
1049
+ &:first-child {
1050
+ border-left: 1px solid var(--colour-border);
1051
+ }
1052
+ }
1053
+
1054
+ > tbody > tr > td > span ::slotted(button) {
1055
+ max-width: 100%;
1056
+ }
1057
+ }
1058
+ }
1059
+
1060
+ .calendar ::slotted(button) {
1061
+ width: 100% !important;
1062
+ max-width: 100% !important;
1063
+ }
1064
+ }
1065
+
1066
+ // #endregion
1067
+
1068
+ // #region Current time indicator
1069
+ .calendar__controls:has(select :is(option[value='day'], option[value='week']):checked) ~ .calendar__wrapper {
1070
+ position: relative;
1071
+
1072
+ tr:has([data-hour][data-time]) {
1073
+ position: relative;
1074
+ }
1075
+
1076
+ [data-hour][data-time] {
1077
+ position: relative;
1078
+ //overflow: hidden;
1079
+ color: var(--colour-canvas);
1080
+ }
1081
+
1082
+ [data-hour][data-time]:before {
1083
+ content: attr(data-time);
1084
+ position: absolute;
1085
+ top: var(--minute-pos, 25%);
1086
+ left: 0;
1087
+ width: var(--side-panel-width);
1088
+ transform: translate(0, -50%);
1089
+ text-align: right;
1090
+ padding-right: 0.25rem;
1091
+ color: var(--colour-primary);
1092
+ }
1093
+
1094
+ [data-hour][data-time]:after {
1095
+ content: '';
1096
+ position: absolute;
1097
+ top: var(--minute-pos, 25%);
1098
+ right: 0;
1099
+ margin-right: -4px;
1100
+ width: 4px;
1101
+ height: 4px;
1102
+ border-radius: 50%;
1103
+ background: var(--colour-info);
1104
+ transform: translate(0, -50%);
1105
+ }
1106
+
1107
+ [data-hour][data-time] ~ td:before {
1108
+ content: '';
1109
+ position: absolute;
1110
+ top: var(--minute-pos, 25%);
1111
+ left: 0;
1112
+ margin-left: -1px;
1113
+ margin-right: -1px;
1114
+ width: calc(100% + 2px);
1115
+ height: 1px;
1116
+ border: 1px solid var(--colour-info);
1117
+ transform: translate(0, -50%);
1118
+ z-index: 98;
1119
+ }
1120
+ }
1121
+ // #endregion
1122
+
1123
+ // #region List view
1124
+
1125
+ .calendar__controls:has(select option[value='list']:checked) ~ .calendar__wrapper #calendar > table,
1126
+ .calendar__controls:has(select option[value='month']:checked) ~ #split.calendar > table {
1127
+ display: table;
1128
+ width: 100%;
1129
+ margin-bottom: 2rem;
1130
+
1131
+ > thead {
1132
+ display: none;
1133
+ }
1134
+
1135
+ > tbody,
1136
+ > tbody > tr,
1137
+ > tbody > tr > td {
1138
+ display: contents;
1139
+ }
1140
+
1141
+ > tbody > tr > td:not(:has(slot:not(.continued))) > *:not(.table--day) {
1142
+ display: none;
1143
+ }
1144
+
1145
+ .table--day {
1146
+ width: 100%;
1147
+
1148
+ tr {
1149
+ th {
1150
+ display: none;
1151
+ }
1152
+
1153
+ td {
1154
+ display: contents;
1155
+
1156
+ slot:not(.continued) {
1157
+ display: block;
1158
+ }
1159
+
1160
+ slot.continued {
1161
+ display: none;
1162
+ }
1163
+ }
1164
+ }
1165
+
1166
+ tr:not(:has(slot)) {
1167
+ display: none;
1168
+ }
1169
+ }
1170
+
1171
+ ::slotted(button) {
1172
+ margin-bottom: 0.5rem !important;
1173
+ }
1174
+ }
1175
+
1176
+ .calendar__controls:has(select option[value='month']:checked) ~ #split.calendar {
1177
+ display: none;
1178
+ }
1179
+
1180
+ @container (max-width: 36em) {
1181
+ .calendar__controls:has([name='split']:checked) ~ #split.calendar {
1182
+ display: block !important;
1183
+
1184
+ & > table > tbody > tr > td:not(.selected) {
1185
+ display: none;
1186
+ }
1187
+ }
1188
+ }
1189
+ // #endregion
1190
+
1191
+ // #region Year view
1192
+
1193
+ .calendar__controls:has(select option[value='year']:checked) ~ .calendar__wrapper #calendar {
1194
+ display: none;
1195
+ }
1196
+
1197
+ .calendar__controls:has(select option[value='year']:checked) ~ .calendar__wrapper {
1198
+ }
1199
+ .calendar__controls:has(select option[value='year']:checked) ~ .calendar__wrapper #year-view {
1200
+ display: grid !important;
1201
+ grid-template-columns: 1fr 1fr;
1202
+ //grid-template-rows: 1fr;
1203
+ gap: 1rem;
1204
+ margin-bottom: 2rem;
1205
+
1206
+ --table-height: 10rem;
1207
+
1208
+ .month-wrapper table {
1209
+ height: var(--table-height);
1210
+ font-size: rem(10);
1211
+ margin-bottom: 0;
1212
+
1213
+ thead > tr > th,
1214
+ .column-header {
1215
+ font-size: rem(10);
1216
+ line-height: rem(12);
1217
+ }
1218
+
1219
+ tbody > tr > td.selected {
1220
+ background-color: transparent;
1221
+ }
1222
+ }
1223
+
1224
+ @container (min-width: 36em) {
1225
+ grid-template-columns: 1fr 1fr 1fr;
1226
+ --table-height: 15rem;
1227
+ }
1228
+
1229
+ @container (min-width: 62em) {
1230
+ grid-template-columns: 1fr 1fr 1fr 1fr;
1231
+ --table-height: 20rem;
1232
+ }
1233
+ }
1234
+
1235
+ // #endregion
1236
+
1237
+ // #region hide weekends
1238
+
1239
+ :host([data-hide-weekends])
1240
+ .calendar__controls:has(select option[value='month']:checked)
1241
+ ~ .calendar__wrapper
1242
+ #calendar
1243
+ > table,
1244
+ :host([data-hide-weekends])
1245
+ .calendar__controls:has(select option[value='week']:checked)
1246
+ ~ .calendar__wrapper
1247
+ #calendar
1248
+ > table {
1249
+ th.saturday,
1250
+ td.day--saturday,
1251
+ th.sunday,
1252
+ td.day--sunday {
1253
+ display: none;
1254
+ }
1255
+ }
1256
+ // #endregion
1257
+
1258
+ // #region scrollbars
1259
+ ::-webkit-scrollbar {
1260
+ width: 6px;
1261
+ height: 6px;
1262
+ }
1263
+
1264
+ ::-webkit-scrollbar-track {
1265
+ background-color: var(--colour-canvas);
1266
+ }
1267
+
1268
+ ::-webkit-scrollbar-thumb {
1269
+ background-color: #c1c1c1;
1270
+ width: 6px;
1271
+ }
1272
+ //#endregion