cronofy-elements 1.48.1 → 1.49.1

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 (349) hide show
  1. package/dist/.gitkeep +0 -0
  2. package/dist/CronofyElements.js +2 -0
  3. package/{build/CronofyElements.v1.48.1.js.LICENSE.txt → dist/CronofyElements.js.LICENSE.txt} +0 -0
  4. package/package.json +10 -7
  5. package/.babelrc +0 -20
  6. package/.eslintrc.yaml +0 -43
  7. package/.prettierignore +0 -4
  8. package/.prettierrc +0 -7
  9. package/Makefile +0 -92
  10. package/brainstorm.md +0 -76
  11. package/build/CronofyElements.v1.48.1.js +0 -2
  12. package/build/npm/CronofyElements.js +0 -2
  13. package/compat.config.js +0 -25
  14. package/demo/agenda.ejs +0 -71
  15. package/demo/availability-viewer.ejs +0 -322
  16. package/demo/calendar-sync.ejs +0 -149
  17. package/demo/crossbrowser.ejs +0 -228
  18. package/demo/date-time-picker.ejs +0 -213
  19. package/demo/demo-styles.css +0 -134
  20. package/demo/index.ejs +0 -249
  21. package/demo/integration.ejs +0 -482
  22. package/demo/load-elements.ejs +0 -12
  23. package/demo/nav.ejs +0 -14
  24. package/demo/rules.ejs +0 -121
  25. package/demo/server.js +0 -425
  26. package/demo/slot-picker.ejs +0 -197
  27. package/git.README.md +0 -71
  28. package/notes.style.md +0 -197
  29. package/postcss.config.js +0 -3
  30. package/script/i18n-export +0 -11
  31. package/script/i18n-helpers/split_write.rb +0 -25
  32. package/script/i18n-import +0 -22
  33. package/script/i18n-reference-update +0 -241
  34. package/src/js/components/Agenda/Agenda.js +0 -243
  35. package/src/js/components/Agenda/AllDayEventsList.js +0 -37
  36. package/src/js/components/Agenda/Calendar.js +0 -100
  37. package/src/js/components/Agenda/CalendarHeader.js +0 -187
  38. package/src/js/components/Agenda/Event.js +0 -34
  39. package/src/js/components/Agenda/EventAllDay.js +0 -76
  40. package/src/js/components/Agenda/EventAttendees.js +0 -30
  41. package/src/js/components/Agenda/EventDetail.js +0 -111
  42. package/src/js/components/Agenda/EventMessages.js +0 -24
  43. package/src/js/components/Agenda/EventMeta.js +0 -48
  44. package/src/js/components/Agenda/EventTime.js +0 -34
  45. package/src/js/components/Agenda/EventWrapper.js +0 -271
  46. package/src/js/components/Agenda/Location.js +0 -29
  47. package/src/js/components/Agenda/Message.js +0 -22
  48. package/src/js/components/Agenda/TimedEventsList.js +0 -29
  49. package/src/js/components/AvailabilityRules/AddButton.js +0 -60
  50. package/src/js/components/AvailabilityRules/AvailabilityRules.js +0 -45
  51. package/src/js/components/AvailabilityRules/Calendar.js +0 -31
  52. package/src/js/components/AvailabilityRules/CalendarListItem.js +0 -53
  53. package/src/js/components/AvailabilityRules/CalendarProfiles.js +0 -67
  54. package/src/js/components/AvailabilityRules/CalendarSelector.js +0 -104
  55. package/src/js/components/AvailabilityRules/Calendars.js +0 -145
  56. package/src/js/components/AvailabilityRules/Checkmark.js +0 -51
  57. package/src/js/components/AvailabilityRules/DayLabels.js +0 -91
  58. package/src/js/components/AvailabilityRules/Footer.js +0 -109
  59. package/src/js/components/AvailabilityRules/Legend.js +0 -57
  60. package/src/js/components/AvailabilityRules/Loading.js +0 -53
  61. package/src/js/components/AvailabilityRules/RemoveButton.js +0 -57
  62. package/src/js/components/AvailabilityRules/Slot.js +0 -195
  63. package/src/js/components/AvailabilityRules/SlotDisplay.js +0 -27
  64. package/src/js/components/AvailabilityRules/Slots.js +0 -81
  65. package/src/js/components/AvailabilityRules/SlotsDisplay.js +0 -68
  66. package/src/js/components/AvailabilityRules/TimeExpander.js +0 -119
  67. package/src/js/components/AvailabilityRules/TimeLabels.js +0 -89
  68. package/src/js/components/AvailabilityRules/TimeZoneDisplay.js +0 -41
  69. package/src/js/components/AvailabilityRules/ToggleIcon.js +0 -41
  70. package/src/js/components/AvailabilityRules/Tooltip.js +0 -63
  71. package/src/js/components/AvailabilityRules/UnknownCalendar.js +0 -33
  72. package/src/js/components/AvailabilityRules/Week.js +0 -115
  73. package/src/js/components/AvailabilityRules/WeekGrid.js +0 -80
  74. package/src/js/components/AvailabilityRules/Wrapper.js +0 -414
  75. package/src/js/components/AvailabilityRules/contexts/drag-context.js +0 -15
  76. package/src/js/components/AvailabilityRules/scss/_base.buttons.scss +0 -58
  77. package/src/js/components/AvailabilityRules/scss/_base.theme.scss +0 -4
  78. package/src/js/components/AvailabilityRules/scss/_components.timezoneselector.scss +0 -74
  79. package/src/js/components/AvailabilityRules/scss/_generic.reset.scss +0 -13
  80. package/src/js/components/AvailabilityRules/scss/_settings.colours.scss +0 -12
  81. package/src/js/components/AvailabilityRules/scss/availabilityrules.scss +0 -5
  82. package/src/js/components/AvailabilityRules/utils/tz-utils.js +0 -44
  83. package/src/js/components/AvailabilityViewer/AvailabilityViewer.js +0 -524
  84. package/src/js/components/AvailabilityViewer/ColumnHeader.js +0 -35
  85. package/src/js/components/AvailabilityViewer/DayColumn.js +0 -36
  86. package/src/js/components/AvailabilityViewer/DayColumnDisplay.js +0 -33
  87. package/src/js/components/AvailabilityViewer/DayColumnWrapper.js +0 -29
  88. package/src/js/components/AvailabilityViewer/DayLabels.js +0 -41
  89. package/src/js/components/AvailabilityViewer/EmptyColumn.js +0 -29
  90. package/src/js/components/AvailabilityViewer/Footer.js +0 -36
  91. package/src/js/components/AvailabilityViewer/GridFreeSelect.js +0 -33
  92. package/src/js/components/AvailabilityViewer/HoverSlot.js +0 -35
  93. package/src/js/components/AvailabilityViewer/HoverTooltip.js +0 -34
  94. package/src/js/components/AvailabilityViewer/LabelColumn.js +0 -53
  95. package/src/js/components/AvailabilityViewer/LabelItem.js +0 -73
  96. package/src/js/components/AvailabilityViewer/Legend.js +0 -79
  97. package/src/js/components/AvailabilityViewer/Loading.js +0 -57
  98. package/src/js/components/AvailabilityViewer/MonthLabels.js +0 -43
  99. package/src/js/components/AvailabilityViewer/Navigation.js +0 -138
  100. package/src/js/components/AvailabilityViewer/Overlay.js +0 -60
  101. package/src/js/components/AvailabilityViewer/Preloading.js +0 -66
  102. package/src/js/components/AvailabilityViewer/SelectedSlot.js +0 -106
  103. package/src/js/components/AvailabilityViewer/SelectedSlots.js +0 -72
  104. package/src/js/components/AvailabilityViewer/SelectionMask.js +0 -44
  105. package/src/js/components/AvailabilityViewer/Slot.js +0 -237
  106. package/src/js/components/AvailabilityViewer/SlotFreeSelect.js +0 -115
  107. package/src/js/components/AvailabilityViewer/Slots.js +0 -57
  108. package/src/js/components/AvailabilityViewer/TimeExpander.js +0 -93
  109. package/src/js/components/AvailabilityViewer/TimeLines.js +0 -74
  110. package/src/js/components/AvailabilityViewer/TimeSelector.js +0 -243
  111. package/src/js/components/AvailabilityViewer/TimeSelectorTrigger.js +0 -42
  112. package/src/js/components/AvailabilityViewer/TimeZoneDisplay.js +0 -28
  113. package/src/js/components/AvailabilityViewer/ToggleIcon.js +0 -41
  114. package/src/js/components/AvailabilityViewer/Tooltip.js +0 -65
  115. package/src/js/components/AvailabilityViewer/Week.js +0 -255
  116. package/src/js/components/AvailabilityViewer/WeekWrapper.js +0 -132
  117. package/src/js/components/AvailabilityViewer/contexts/page-context.js +0 -17
  118. package/src/js/components/AvailabilityViewer/contexts/page-reducer.js +0 -28
  119. package/src/js/components/AvailabilityViewer/contexts/selection-context.js +0 -25
  120. package/src/js/components/AvailabilityViewer/contexts/selection-reducer.js +0 -18
  121. package/src/js/components/CalendarSync/Active.js +0 -57
  122. package/src/js/components/CalendarSync/AddToggle.js +0 -72
  123. package/src/js/components/CalendarSync/CalendarSync.js +0 -215
  124. package/src/js/components/CalendarSync/EditToggle.js +0 -71
  125. package/src/js/components/CalendarSync/Footer.js +0 -31
  126. package/src/js/components/CalendarSync/Inactive.js +0 -66
  127. package/src/js/components/CalendarSync/Loading.js +0 -52
  128. package/src/js/components/CalendarSync/Pending.js +0 -74
  129. package/src/js/components/CalendarSync/ProfileStatus.js +0 -33
  130. package/src/js/components/CalendarSync/Profiles.js +0 -109
  131. package/src/js/components/CalendarSync/ProviderLogo.js +0 -28
  132. package/src/js/components/CalendarSync/Providers.js +0 -80
  133. package/src/js/components/CalendarSync/RemoveLink.js +0 -96
  134. package/src/js/components/CalendarSync/SelectProvider.js +0 -25
  135. package/src/js/components/CalendarSync/contexts/status-reducer.js +0 -74
  136. package/src/js/components/DateTimePicker/Calendar.js +0 -127
  137. package/src/js/components/DateTimePicker/CalendarHeader.js +0 -80
  138. package/src/js/components/DateTimePicker/Confirm.js +0 -106
  139. package/src/js/components/DateTimePicker/DateTimePicker.js +0 -131
  140. package/src/js/components/DateTimePicker/DayButton.js +0 -38
  141. package/src/js/components/DateTimePicker/DayHeadings.js +0 -33
  142. package/src/js/components/DateTimePicker/Details.js +0 -33
  143. package/src/js/components/DateTimePicker/Error.js +0 -39
  144. package/src/js/components/DateTimePicker/Loading.js +0 -20
  145. package/src/js/components/DateTimePicker/LoadingCalendar.js +0 -21
  146. package/src/js/components/DateTimePicker/NoSlotsFound.js +0 -16
  147. package/src/js/components/DateTimePicker/SequencedSlotButton.js +0 -97
  148. package/src/js/components/DateTimePicker/SlotButton.js +0 -55
  149. package/src/js/components/DateTimePicker/SlotsList.js +0 -45
  150. package/src/js/components/DateTimePicker/Wrapper.js +0 -281
  151. package/src/js/components/DateTimePicker/contexts/status-context.js +0 -19
  152. package/src/js/components/DateTimePicker/contexts/status-reducer.js +0 -276
  153. package/src/js/components/DateTimePicker/contexts/theme-context.js +0 -33
  154. package/src/js/components/DateTimePicker/helpers/theming.js +0 -49
  155. package/src/js/components/DateTimePicker/scss/_base.buttons.scss +0 -58
  156. package/src/js/components/DateTimePicker/scss/_base.layout.scss +0 -28
  157. package/src/js/components/DateTimePicker/scss/_base.theme.scss +0 -17
  158. package/src/js/components/DateTimePicker/scss/_components.calendargrid.scss +0 -78
  159. package/src/js/components/DateTimePicker/scss/_components.calendarheader.scss +0 -71
  160. package/src/js/components/DateTimePicker/scss/_components.confirm.scss +0 -40
  161. package/src/js/components/DateTimePicker/scss/_components.details.scss +0 -20
  162. package/src/js/components/DateTimePicker/scss/_components.error.scss +0 -34
  163. package/src/js/components/DateTimePicker/scss/_components.loading.scss +0 -36
  164. package/src/js/components/DateTimePicker/scss/_components.slotslist.scss +0 -43
  165. package/src/js/components/DateTimePicker/scss/_components.timezoneselector.scss +0 -73
  166. package/src/js/components/DateTimePicker/scss/_generic.reset.scss +0 -18
  167. package/src/js/components/DateTimePicker/scss/_settings.colours.scss +0 -17
  168. package/src/js/components/DateTimePicker/scss/datetimepicker.scss +0 -5
  169. package/src/js/components/DateTimePicker/utils/calendar-keyboard.js +0 -109
  170. package/src/js/components/DateTimePicker/utils/calendar.js +0 -125
  171. package/src/js/components/DateTimePicker/utils/slots.js +0 -288
  172. package/src/js/components/SlotPicker/Confirm.js +0 -160
  173. package/src/js/components/SlotPicker/Days.js +0 -58
  174. package/src/js/components/SlotPicker/Slot.js +0 -72
  175. package/src/js/components/SlotPicker/SlotPicker.js +0 -292
  176. package/src/js/components/SlotPicker/Slots.js +0 -66
  177. package/src/js/components/SlotPicker/TimeSlots.js +0 -91
  178. package/src/js/components/generic/Button.js +0 -26
  179. package/src/js/components/generic/Container.js +0 -33
  180. package/src/js/components/generic/Error.js +0 -77
  181. package/src/js/components/generic/Loading.js +0 -51
  182. package/src/js/components/generic/LoadingSpinner.js +0 -30
  183. package/src/js/components/generic/ShadowScrollbars.js +0 -70
  184. package/src/js/components/generic/TimeZoneSelector.js +0 -158
  185. package/src/js/components/generic/TransitionSlide.js +0 -72
  186. package/src/js/contexts/i18n-context.js +0 -25
  187. package/src/js/contexts/log-context.js +0 -18
  188. package/src/js/contexts/tz-context.js +0 -18
  189. package/src/js/env.example.js +0 -8
  190. package/src/js/helpers/colors.js +0 -33
  191. package/src/js/helpers/comparators.AvailabilityViewer.js +0 -27
  192. package/src/js/helpers/connections.js +0 -370
  193. package/src/js/helpers/events.js +0 -166
  194. package/src/js/helpers/functional.js +0 -4
  195. package/src/js/helpers/generator.js +0 -107
  196. package/src/js/helpers/i18n.js +0 -153
  197. package/src/js/helpers/init.Agenda.js +0 -55
  198. package/src/js/helpers/init.AvailabilityRules.js +0 -195
  199. package/src/js/helpers/init.AvailabilityViewer.js +0 -215
  200. package/src/js/helpers/init.CalendarSync.js +0 -83
  201. package/src/js/helpers/init.DateTimePicker.js +0 -219
  202. package/src/js/helpers/init.SlotPicker.js +0 -89
  203. package/src/js/helpers/init.js +0 -308
  204. package/src/js/helpers/logging.js +0 -78
  205. package/src/js/helpers/mocks.js +0 -871
  206. package/src/js/helpers/slots.js +0 -340
  207. package/src/js/helpers/slots.rules.js +0 -220
  208. package/src/js/helpers/theming.js +0 -93
  209. package/src/js/helpers/translations.js +0 -42
  210. package/src/js/helpers/tz-list.js +0 -136
  211. package/src/js/helpers/utils.AvailabilityRules.js +0 -110
  212. package/src/js/helpers/utils.AvailabilityViewer.js +0 -789
  213. package/src/js/helpers/utils.CalendarSync.js +0 -199
  214. package/src/js/helpers/utils.js +0 -76
  215. package/src/js/hooks/useWindowSize.js +0 -20
  216. package/src/js/main.js +0 -133
  217. package/src/js/next.js +0 -37
  218. package/src/js/styles/_settings.utils.scss +0 -82
  219. package/src/js/styles/colors.js +0 -13
  220. package/src/js/styles/global.js +0 -49
  221. package/src/js/styles/utils.js +0 -81
  222. package/src/js/translations/de/agenda.json +0 -12
  223. package/src/js/translations/de/availability_rules.json +0 -18
  224. package/src/js/translations/de/availability_viewer.json +0 -14
  225. package/src/js/translations/de/calendar_sync.json +0 -14
  226. package/src/js/translations/de/core.json +0 -15
  227. package/src/js/translations/de/date_time_picker.json +0 -14
  228. package/src/js/translations/de/slot_picker.json +0 -9
  229. package/src/js/translations/de/time_zones.json +0 -135
  230. package/src/js/translations/en/agenda.json +0 -12
  231. package/src/js/translations/en/availability_rules.json +0 -18
  232. package/src/js/translations/en/availability_viewer.json +0 -14
  233. package/src/js/translations/en/calendar_sync.json +0 -14
  234. package/src/js/translations/en/core.json +0 -23
  235. package/src/js/translations/en/date_time_picker.json +0 -15
  236. package/src/js/translations/en/slot_picker.json +0 -9
  237. package/src/js/translations/en/time_zones.json +0 -17
  238. package/src/js/translations/es/agenda.json +0 -12
  239. package/src/js/translations/es/availability_rules.json +0 -18
  240. package/src/js/translations/es/availability_viewer.json +0 -14
  241. package/src/js/translations/es/calendar_sync.json +0 -14
  242. package/src/js/translations/es/core.json +0 -15
  243. package/src/js/translations/es/date_time_picker.json +0 -14
  244. package/src/js/translations/es/slot_picker.json +0 -9
  245. package/src/js/translations/es/time_zones.json +0 -203
  246. package/src/js/translations/fr/agenda.json +0 -12
  247. package/src/js/translations/fr/availability_rules.json +0 -18
  248. package/src/js/translations/fr/availability_viewer.json +0 -14
  249. package/src/js/translations/fr/calendar_sync.json +0 -14
  250. package/src/js/translations/fr/core.json +0 -15
  251. package/src/js/translations/fr/date_time_picker.json +0 -14
  252. package/src/js/translations/fr/slot_picker.json +0 -9
  253. package/src/js/translations/fr/time_zones.json +0 -161
  254. package/src/js/translations/fr-CA/agenda.json +0 -12
  255. package/src/js/translations/fr-CA/availability_rules.json +0 -18
  256. package/src/js/translations/fr-CA/availability_viewer.json +0 -14
  257. package/src/js/translations/fr-CA/calendar_sync.json +0 -14
  258. package/src/js/translations/fr-CA/core.json +0 -23
  259. package/src/js/translations/fr-CA/date_time_picker.json +0 -14
  260. package/src/js/translations/fr-CA/slot_picker.json +0 -9
  261. package/src/js/translations/fr-CA/time_zones.json +0 -163
  262. package/src/js/translations/it/agenda.json +0 -12
  263. package/src/js/translations/it/availability_rules.json +0 -18
  264. package/src/js/translations/it/availability_viewer.json +0 -14
  265. package/src/js/translations/it/calendar_sync.json +0 -14
  266. package/src/js/translations/it/core.json +0 -15
  267. package/src/js/translations/it/date_time_picker.json +0 -14
  268. package/src/js/translations/it/slot_picker.json +0 -9
  269. package/src/js/translations/it/time_zones.json +0 -126
  270. package/src/js/translations/ja/agenda.json +0 -12
  271. package/src/js/translations/ja/availability_rules.json +0 -18
  272. package/src/js/translations/ja/availability_viewer.json +0 -14
  273. package/src/js/translations/ja/calendar_sync.json +0 -14
  274. package/src/js/translations/ja/core.json +0 -15
  275. package/src/js/translations/ja/date_formats.json +0 -5
  276. package/src/js/translations/ja/date_time_picker.json +0 -14
  277. package/src/js/translations/ja/slot_picker.json +0 -9
  278. package/src/js/translations/ja/time_zones.json +0 -435
  279. package/src/js/translations/nl/agenda.json +0 -12
  280. package/src/js/translations/nl/availability_rules.json +0 -18
  281. package/src/js/translations/nl/availability_viewer.json +0 -14
  282. package/src/js/translations/nl/calendar_sync.json +0 -14
  283. package/src/js/translations/nl/core.json +0 -15
  284. package/src/js/translations/nl/date_time_picker.json +0 -14
  285. package/src/js/translations/nl/slot_picker.json +0 -9
  286. package/src/js/translations/nl/time_zones.json +0 -118
  287. package/src/js/translations/ru/agenda.json +0 -12
  288. package/src/js/translations/ru/availability_rules.json +0 -18
  289. package/src/js/translations/ru/availability_viewer.json +0 -14
  290. package/src/js/translations/ru/calendar_sync.json +0 -14
  291. package/src/js/translations/ru/core.json +0 -15
  292. package/src/js/translations/ru/date_time_picker.json +0 -14
  293. package/src/js/translations/ru/slot_picker.json +0 -9
  294. package/src/js/translations/ru/time_zones.json +0 -435
  295. package/src/js/translations/sv/agenda.json +0 -12
  296. package/src/js/translations/sv/availability_rules.json +0 -18
  297. package/src/js/translations/sv/availability_viewer.json +0 -14
  298. package/src/js/translations/sv/calendar_sync.json +0 -14
  299. package/src/js/translations/sv/core.json +0 -15
  300. package/src/js/translations/sv/date_time_picker.json +0 -14
  301. package/src/js/translations/sv/slot_picker.json +0 -9
  302. package/src/js/translations/sv/time_zones.json +0 -136
  303. package/tests/AvailabilityRules/AvailabilityRules.test.js +0 -39
  304. package/tests/AvailabilityRules/__snapshots__/AvailabilityRules.test.js.snap +0 -1045
  305. package/tests/AvailabilityViewer/Navigation.test.js +0 -130
  306. package/tests/AvailabilityViewer/contexts/page-reducer.test.js +0 -87
  307. package/tests/AvailabilityViewer/reducer.test.js +0 -73
  308. package/tests/CalendarSync/Active.test.js +0 -25
  309. package/tests/CalendarSync/AddToggle.test.js +0 -57
  310. package/tests/CalendarSync/EditToggle.test.js +0 -57
  311. package/tests/CalendarSync/Inactive.test.js +0 -26
  312. package/tests/CalendarSync/Pending.test.js +0 -25
  313. package/tests/CalendarSync/ProviderLogo.test.js +0 -95
  314. package/tests/CalendarSync/__snapshots__/Active.test.js.snap +0 -61
  315. package/tests/CalendarSync/__snapshots__/Inactive.test.js.snap +0 -78
  316. package/tests/CalendarSync/__snapshots__/Pending.test.js.snap +0 -90
  317. package/tests/CalendarSync/__snapshots__/ProviderLogo.test.js.snap +0 -267
  318. package/tests/CalendarSync/init.CalendarSync.test.js +0 -302
  319. package/tests/CalendarSync/mocks/theme.js +0 -14
  320. package/tests/CalendarSync/status-reducer.test.js +0 -435
  321. package/tests/DateTimePicker/SequencedSlotButton.test.js +0 -157
  322. package/tests/DateTimePicker/SlotButton.test.js +0 -118
  323. package/tests/DateTimePicker/contexts/status-reducer.test.js +0 -1036
  324. package/tests/DateTimePicker/dummy-data.js +0 -883
  325. package/tests/DateTimePicker/utils.test.js +0 -515
  326. package/tests/colors.test.js +0 -70
  327. package/tests/components/TimezoneSelector.test.js +0 -124
  328. package/tests/components/main.test.js +0 -203
  329. package/tests/components/rtl-utils.js +0 -32
  330. package/tests/connections.test.js +0 -684
  331. package/tests/events.test.js +0 -472
  332. package/tests/generator.test.js +0 -74
  333. package/tests/i18n.test.js +0 -255
  334. package/tests/init.Agenda.test.js +0 -122
  335. package/tests/init.AvailabilityRules.test.js +0 -279
  336. package/tests/init.AvailabilityViewer.test.js +0 -740
  337. package/tests/init.SlotPicker.test.js +0 -166
  338. package/tests/init.test.js +0 -231
  339. package/tests/logging.test.js +0 -235
  340. package/tests/mocks/i18n.js +0 -3
  341. package/tests/mocks/theme.js +0 -3
  342. package/tests/setupJest.js +0 -8
  343. package/tests/slots.rules.test.js +0 -195
  344. package/tests/slots.test.js +0 -278
  345. package/tests/utils.AvailabilityRules.test.js +0 -221
  346. package/tests/utils.AvailabilityViewer.test.js +0 -1800
  347. package/tests/utils.CalendarSync.test.js +0 -277
  348. package/tests/utils.test.js +0 -119
  349. package/webpack.config.js +0 -114
@@ -1,414 +0,0 @@
1
- import React, { useState, useEffect } from "react";
2
- import { css } from "@emotion/core";
3
-
4
- import * as connections from "../../helpers/connections";
5
- import {
6
- buildNewRules,
7
- checkSlotAvailability,
8
- generateEmptyRulesSlots,
9
- getStaticTimeSlots,
10
- parseSlotsIntoDays,
11
- } from "../../helpers/slots.rules";
12
- import {
13
- parseExtras,
14
- parseAccountOptions,
15
- buildRuleTemplate,
16
- } from "../../helpers/utils.AvailabilityRules";
17
- import { getInitialSelectedTzid } from "./utils/tz-utils";
18
- import { parseStyleOptions, classBuilder } from "../../helpers/theming";
19
- import { globals } from "../../styles/utils";
20
- import { useI18n } from "../../contexts/i18n-context";
21
- import { useLog } from "../../contexts/log-context";
22
- import { useTz } from "../../contexts/tz-context";
23
-
24
- import Calendars from "./Calendars";
25
- import Container from "../generic/Container";
26
- import Error from "../generic/Error";
27
- import Footer from "./Footer";
28
- import Week from "./Week";
29
-
30
- export const AccountContext = React.createContext();
31
- export const ExtrasContext = React.createContext();
32
- export const CalendarContext = React.createContext();
33
- export const RulesContext = React.createContext();
34
- export const SlotsContext = React.createContext();
35
- export const StaticSlotsContext = React.createContext();
36
- export const StatusContext = React.createContext();
37
- export const ThemeContext = React.createContext();
38
-
39
- const Wrapper = ({ options }) => {
40
- const i18n = useI18n();
41
- const log = useLog();
42
- const [tz, setTz] = useTz();
43
-
44
- const [account, setAccount] = useState(() => parseAccountOptions(options));
45
- const [calendars, setCalendars] = useState(() => ({
46
- all: [],
47
- active: [],
48
- profiles: [],
49
- }));
50
- const [rules, setRules] = useState([]);
51
- const [status, setStatus] = useState(() => ({
52
- loading: true,
53
- error: false,
54
- saving: false,
55
- saved: false,
56
- savedSuccess: false,
57
- locale: options.locale,
58
- tzid: tz.selectedTzid.tzid,
59
- callback: options.callback ? options.callback : cb => {},
60
- startDay: options.config.startDay,
61
- defaultWeeklyPeriods: options.config.defaultWeeklyPeriods,
62
- }));
63
- const [extras, setExtras] = useState(() => parseExtras(options));
64
-
65
- const [saveOnRender, setSaveOnRender] = useState(false);
66
-
67
- // All slots for 7 days, 24 hours - our single source of truth
68
- const [slots, setSlots] = useState(() =>
69
- generateEmptyRulesSlots(extras.limits.duration, status.startDay, i18n)
70
- );
71
-
72
- const [visibleSlots, setVisibleSlots] = useState(() =>
73
- parseSlotsIntoDays(slots, extras.limits.slotsPerDay, extras.limits.slotsOffset)
74
- );
75
-
76
- // Full 24 hours of slot times
77
- const [staticTimes, setStaticTimes] = useState(() =>
78
- getStaticTimeSlots(extras.limits.duration, i18n)
79
- );
80
-
81
- // Just the visible slot times
82
- const [staticSlots, setStaticSlots] = useState(() =>
83
- staticTimes.slice(
84
- extras.limits.slotsOffset,
85
- extras.limits.slotsOffset + extras.limits.slotsPerDay
86
- )
87
- );
88
-
89
- const [theme, setTheme] = useState(() => {
90
- const styles = parseStyleOptions(options.styles, "AvailabilityViewer");
91
- return {
92
- ...styles,
93
- classBuilder: classBuilder(styles.prefix, "AR"),
94
- sizes: {
95
- breakpoints: {
96
- small: 650,
97
- },
98
- labelWidth: 60,
99
- labelWidthSmall: 24,
100
- columnWidth: 100,
101
- wrapperWidth: false,
102
- wrapperUnderflow: 0,
103
- },
104
- };
105
- });
106
-
107
- const handleRuleChange = (IDs, toggleStatus) => {
108
- const availability = toggleStatus === "available";
109
-
110
- const newSlots = {};
111
- IDs.forEach(ID => {
112
- newSlots[ID] = { ...slots[ID], available: availability };
113
- });
114
-
115
- const allSlots = { ...slots, ...newSlots };
116
- setSlots(allSlots);
117
- const newRules = buildNewRules(allSlots);
118
- setRules(newRules);
119
- };
120
-
121
- useEffect(() => {
122
- setVisibleSlots(
123
- parseSlotsIntoDays(slots, extras.limits.slotsPerDay, extras.limits.slotsOffset)
124
- );
125
- }, [slots]);
126
-
127
- useEffect(() => {
128
- setStaticSlots(
129
- staticTimes.slice(
130
- extras.limits.slotsOffset,
131
- extras.limits.slotsOffset + extras.limits.slotsPerDay
132
- )
133
- );
134
- setVisibleSlots(
135
- parseSlotsIntoDays(slots, extras.limits.slotsPerDay, extras.limits.slotsOffset)
136
- );
137
- }, [extras]);
138
-
139
- useEffect(() => {
140
- if (!status.loading && !status.error) {
141
- const callbackContent = {
142
- notification: {
143
- type: "availability_rule_edited",
144
- },
145
- availability_rule: {
146
- ...account,
147
- calendar_ids: calendars.active,
148
- weekly_periods: rules,
149
- },
150
- };
151
- status.callback(callbackContent);
152
- }
153
- }, [calendars, account, rules]);
154
-
155
- useEffect(() => {
156
- // Query the API for rules and calendars, but don't do anything until
157
- // we've heard back from both.
158
- Promise.all([
159
- connections.getAvailabilityRules({
160
- token: options.token,
161
- api_domain: options.domains.apiDomain,
162
- availability_rule_id: account.availability_rule_id,
163
- element: `AvailabilityRules`,
164
- mock: options.demo,
165
- tzid: options.tzid,
166
- }),
167
- connections.getCalendars(options.token, options.domains.apiDomain, options.demo),
168
- ])
169
- .then(res => {
170
- const isNewRule = res[0].type === 404;
171
- const rulesResponse = isNewRule
172
- ? buildRuleTemplate(options.config.defaultWeeklyPeriods, tz.selectedTzid.tzid)
173
- : res[0];
174
-
175
- if (isNewRule) {
176
- const callbackContent = {
177
- notification: {
178
- type: "availability_rule_not_found",
179
- message:
180
- "Availability rule ID does not already exist. Using default values.",
181
- url:
182
- "https://docs.cronofy.com/developers/ui-elements/availability-rules/#param-availability_rule_id",
183
- },
184
- };
185
- status.callback(callbackContent);
186
- }
187
-
188
- const calsResponse = res[1];
189
-
190
- setRules(rulesResponse.availability_rule.weekly_periods);
191
-
192
- setAccount(account => ({
193
- ...account,
194
- tzid: rulesResponse.availability_rule.tzid,
195
- }));
196
-
197
- const selectedTzid = getInitialSelectedTzid(
198
- tz.list,
199
- rulesResponse.availability_rule.tzid
200
- );
201
- setTz({
202
- list: tz.list,
203
- selectedTzid: selectedTzid,
204
- });
205
-
206
- setSlots(slots => {
207
- const hydratedSlots = checkSlotAvailability(
208
- rulesResponse.availability_rule.weekly_periods,
209
- slots
210
- );
211
- return hydratedSlots;
212
- });
213
-
214
- setExtras(oldExtras => ({
215
- ...oldExtras,
216
- limits: {
217
- ...oldExtras.limits,
218
- tzid: rulesResponse.availability_rule.tzid,
219
- },
220
- }));
221
-
222
- setCalendars({
223
- active: rulesResponse.availability_rule.calendar_ids || [],
224
- all: calsResponse.calendars,
225
- profiles: calsResponse.profiles,
226
- });
227
-
228
- setStatus({
229
- ...status,
230
- loading: false,
231
- calLoading: false,
232
- });
233
-
234
- if (isNewRule && options.config.autoCreateRulesMode) {
235
- const callbackContent = {
236
- notification: {
237
- type: "availability_rule_auto_created",
238
- message: "Auto create rule enabled. Saving new availability rule.",
239
- },
240
- };
241
- status.callback(callbackContent);
242
- setSaveOnRender(true);
243
- }
244
- })
245
- .catch(error => {
246
- const errorMessage = error.message ? error.message : error;
247
- const errorOutput = {};
248
- if (error.docsSlug) {
249
- errorOutput.docsSlug = error.docsSlug;
250
- }
251
- log.error(errorMessage, errorOutput);
252
- setStatus({
253
- ...status,
254
- loading: false,
255
- error: error,
256
- });
257
- });
258
- }, []);
259
-
260
- useEffect(() => {
261
- if (saveOnRender) {
262
- generateRules();
263
- setSaveOnRender(false);
264
- }
265
- }, [saveOnRender]);
266
-
267
- useEffect(() => {
268
- // When the rules are marked as "saved", we show a notification.
269
- // This timeout hides that notification after 6 seconds
270
- if (status.saved) {
271
- setTimeout(() => {
272
- setStatus({ ...status, saved: false });
273
- }, 6000);
274
- }
275
- }, [status]);
276
-
277
- useEffect(() => {
278
- if (tz.selectedTzid.tzid) {
279
- setAccount(account => ({
280
- ...account,
281
- tzid: tz.selectedTzid.tzid,
282
- }));
283
- }
284
- }, [tz.selectedTzid.tzid]);
285
-
286
- const generateRules = () => {
287
- const rulesRequest = { ...account, weekly_periods: rules };
288
-
289
- let tempStatus = status;
290
-
291
- if (calendars.active.length > 0) {
292
- rulesRequest.calendar_ids = calendars.active;
293
- }
294
-
295
- if (options.demo) {
296
- log.info("In demo mode, so not saving rules", {
297
- errorObject: rulesRequest,
298
- });
299
- const callbackContent = {
300
- notification: {
301
- type: "availability_rule_saved",
302
- },
303
- availability_rule: rulesRequest,
304
- };
305
- status.callback(callbackContent);
306
- return;
307
- }
308
-
309
- if (rulesRequest) {
310
- tempStatus = {
311
- ...tempStatus,
312
- saving: true,
313
- savedSuccess: false,
314
- };
315
- setStatus(tempStatus);
316
- connections
317
- .setAvailabilityRules({
318
- token: options.token,
319
- api_domain: options.domains.apiDomain,
320
- params: rulesRequest,
321
- element: `AvailabilityRules`,
322
- mock: options.demo,
323
- })
324
- .then(res => {
325
- if (res.errors) {
326
- const errorOutput = {};
327
- if (res.errors.docsSlug) {
328
- errorOutput.docsSlug = res.errors.docsSlug;
329
- }
330
- if (res.errors.errorObject) {
331
- errorOutput.errorObject = res.errors.message;
332
- }
333
- log.error("Could not save availability rules", errorOutput);
334
- tempStatus = {
335
- ...tempStatus,
336
- saving: false,
337
- saved: true,
338
- savedSuccess: false,
339
- };
340
- } else {
341
- const callbackContent = {
342
- notification: {
343
- type: "availability_rule_saved",
344
- },
345
- availability_rule: res.availability_rule,
346
- };
347
- status.callback(callbackContent);
348
- tempStatus = {
349
- ...tempStatus,
350
- saving: false,
351
- saved: true,
352
- savedSuccess: true,
353
- };
354
- }
355
- setStatus(tempStatus);
356
- })
357
- .catch(error => {
358
- log.error("There was a problem setting availability rules", {
359
- errorObject: error.message,
360
- });
361
- tempStatus = {
362
- ...tempStatus,
363
- saving: false,
364
- error: error,
365
- };
366
- setStatus(tempStatus);
367
- return error;
368
- });
369
- } else {
370
- log.warn("Invalid rulesRequest", {
371
- errorObject: rulesRequest,
372
- });
373
- }
374
- };
375
-
376
- return (
377
- <Container
378
- height={"auto"}
379
- css={css`
380
- ${globals};
381
- max-width: 100%;
382
- margin-bottom: 40px;
383
- @media (max-width: 550px) {
384
- overflow: hidden;
385
- }
386
- `}
387
- className={theme.classBuilder()}
388
- >
389
- <ThemeContext.Provider value={[theme, setTheme]}>
390
- <StatusContext.Provider value={[status, setStatus]}>
391
- {status.error ? (
392
- <Error message={i18n.t("global_error")} theme={theme} />
393
- ) : (
394
- <CalendarContext.Provider value={[calendars, setCalendars]}>
395
- <Calendars loading={status.loading} />
396
- <ExtrasContext.Provider value={[extras, setExtras]}>
397
- <StaticSlotsContext.Provider value={staticSlots}>
398
- <SlotsContext.Provider value={[visibleSlots, handleRuleChange]}>
399
- <AccountContext.Provider value={account}>
400
- <Week />
401
- </AccountContext.Provider>
402
- </SlotsContext.Provider>
403
- </StaticSlotsContext.Provider>
404
- <Footer generateRules={generateRules} />
405
- </ExtrasContext.Provider>
406
- </CalendarContext.Provider>
407
- )}
408
- </StatusContext.Provider>
409
- </ThemeContext.Provider>
410
- </Container>
411
- );
412
- };
413
-
414
- export default Wrapper;
@@ -1,15 +0,0 @@
1
- import React, { createContext, useContext, useState } from "react";
2
-
3
- const DragContext = createContext();
4
-
5
- export const DragProvider = ({ children, drag: initialDrag }) => {
6
- const [drag, setDrag] = useState(initialDrag);
7
- return <DragContext.Provider value={[drag, setDrag]}>{children}</DragContext.Provider>;
8
- };
9
- export const useDrag = () => {
10
- const context = useContext(DragContext);
11
- if (context === undefined) {
12
- throw new Error("useDrag must be used within a DragProvider");
13
- }
14
- return context;
15
- };
@@ -1,58 +0,0 @@
1
- .AR__button {
2
- appearance: none;
3
- background: none;
4
- border: none;
5
- border-radius: 0;
6
- font-family: inherit;
7
- position: relative;
8
- display: block;
9
- cursor: pointer;
10
- font-size: 1em;
11
- border: 0.1em solid var(--greyMid);
12
- background-color: var(--white);
13
-
14
- &:focus {
15
- border-color: var(--availableActive);
16
- box-shadow: inset var(--availableActive) 0 0 0 0.1em;
17
- box-shadow: inset var(--availableActive) 0 0 0 0.1em;
18
- outline: none;
19
- }
20
- &:hover {
21
- border-color: var(--availableActive);
22
- box-shadow: inset var(--availableActive) 0 0 0 0.1em;
23
- background-color: var(--availableHover);
24
- color: var(--black);
25
- outline: none;
26
- }
27
-
28
- &:active {
29
- background-color: var(--availableActive);
30
- color: var(--black);
31
- outline: none;
32
- }
33
- }
34
-
35
- .AR__disabled-button {
36
- pointer-events: none;
37
- border: unset;
38
- background-color: unset;
39
-
40
- &:focus {
41
- border-color: unset;
42
- box-shadow: unset;
43
- outline: none;
44
- background-color: unset;
45
- }
46
- &:hover {
47
- border-color: unset;
48
- box-shadow: unset;
49
- outline: none;
50
- }
51
-
52
- &:active {
53
- border-color: unset;
54
- box-shadow: unset;
55
- outline: none;
56
- background-color: unset;
57
- }
58
- }
@@ -1,4 +0,0 @@
1
- .AR {
2
- @import "base.buttons";
3
- @import "components.timezoneselector";
4
- }
@@ -1,74 +0,0 @@
1
- .AR__timezone-selector {
2
- position: relative;
3
- flex-grow: 1;
4
- max-width: 16rem;
5
- }
6
-
7
- .AR__timezone-selector--button {
8
- @extend .AR__button;
9
- display: inline-block;
10
- border: 0.1em solid var(--greyMid);
11
- background: var(--white);
12
- padding: 0.3em 1em;
13
- text-align: left;
14
- width: 100%;
15
- border-radius: 0.4em;
16
- z-index: 4;
17
- }
18
-
19
- .AR__timezone-selector--icon {
20
- width: 1em;
21
- height: 1em;
22
- margin-top: 0.2em;
23
- fill: var(--grey);
24
- float: right;
25
- }
26
-
27
- .AR__timezone-selector--icon-open {
28
- transform: scaleY(-1);
29
- }
30
-
31
- .AR__timezone-selector--listbox-wrapper {
32
- @extend %unset;
33
- position: absolute;
34
- width: 100%;
35
- border: 0.1em solid var(--greyMid);
36
- background-color: var(--white);
37
- border-top: 0;
38
- padding-top: 1.15em;
39
- top: 1em;
40
- z-index: 3;
41
- border-radius: 0 0 0.4em 0.4em;
42
- }
43
-
44
- .AR__timezone-selector--listbox {
45
- @extend %unset;
46
- width: 100%;
47
- max-height: 15em;
48
- overflow-y: auto;
49
- }
50
-
51
- .AR__timezone-selector--option {
52
- @extend %unset;
53
- display: block;
54
- cursor: pointer;
55
- padding: 0.5em 1em;
56
- position: relative;
57
- line-height: 1.8em;
58
-
59
- &:hover {
60
- background-color: var(--availableHover);
61
- color: var(--black);
62
- }
63
- }
64
-
65
- .AR__timezone-selector--focused {
66
- border-color: var(--availableActive);
67
- box-shadow: inset var(--availableActive) 0 0 0 0.1em;
68
- outline: none;
69
- }
70
-
71
- .AR__timezone-selector--selected {
72
- background-color: var(--availableHover);
73
- color: var(--black);
74
- }
@@ -1,13 +0,0 @@
1
- //Unsetting styles to avoid clashes with styles outside the component
2
- %unset {
3
- padding: unset;
4
- margin-top: unset;
5
- margin-bottom: unset;
6
- margin-left: unset;
7
- margin-right: unset;
8
- border: unset;
9
- background: unset;
10
- border-spacing: 0;
11
- font-style: unset;
12
- list-style: unset;
13
- }
@@ -1,12 +0,0 @@
1
- .AR {
2
- // Fallbacks
3
- --black: #000000;
4
- --white: #ffffff;
5
-
6
- --grey: #6f6f6f;
7
- --greyMid: #999999;
8
- --greyLight: #e4ebf2;
9
-
10
- --availableHover: #c0e992;
11
- --availableActive: #7ed321;
12
- }
@@ -1,5 +0,0 @@
1
- @import "../../../styles/settings.utils";
2
- @import "settings.colours";
3
-
4
- @import "generic.reset";
5
- @import "base.theme";
@@ -1,44 +0,0 @@
1
- import moment from "moment-timezone";
2
- import { humanizeTzName } from "../../../helpers/utils";
3
- import { defaultTimeZones } from "../../../helpers/tz-list";
4
-
5
- export const createTzObject = tzid => {
6
- const name = humanizeTzName(tzid);
7
-
8
- const zone = moment.tz(tzid);
9
-
10
- return {
11
- tzid: tzid,
12
- offset: zone.format("Z"),
13
- offsetMins: zone.utcOffset(),
14
- name: name,
15
- abbr: zone.zoneAbbr(),
16
- };
17
- };
18
-
19
- export const parseTzList = (timezones, tzid) => {
20
- const tzList = timezones ? timezones : moment.tz.names();
21
- const filtered = timezones ? timezones : tzList.filter(item => defaultTimeZones.includes(item));
22
-
23
- const result = [];
24
-
25
- filtered.map(tz => {
26
- const item = createTzObject(tz);
27
- result.push(item);
28
- });
29
-
30
- const isInList = result.findIndex(item => tzid === item.tzid);
31
-
32
- if (isInList <= -1) {
33
- const item = createTzObject(tzid);
34
- result.push(item);
35
- }
36
-
37
- result.sort((tzA, tzB) => tzA.offsetMins - tzB.offsetMins);
38
- return result;
39
- };
40
-
41
- export const getInitialSelectedTzid = (tzList, tzid) => {
42
- const result = tzList.find(tz => tzid === tz.tzid);
43
- return result;
44
- };