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,131 +0,0 @@
1
- import React, { useMemo } from "react";
2
- import moment from "moment-timezone";
3
-
4
- import {
5
- getMonthObjectsFromQuery,
6
- parseTzList,
7
- getInitialSelectedTzid,
8
- getDurationFromQuery,
9
- } from "./utils/slots";
10
- import { getMonthsInDisplay, parseTimeSlots } from "./utils/calendar";
11
-
12
- import Wrapper from "./Wrapper";
13
-
14
- import "./scss/datetimepicker.scss";
15
-
16
- import { I18nProvider } from "../../contexts/i18n-context";
17
- import { LogProvider } from "../../contexts/log-context";
18
- import { ThemeProvider } from "./contexts/theme-context";
19
- import { StatusProvider } from "./contexts/status-context";
20
- import { TzProvider } from "../../contexts/tz-context";
21
-
22
- const DateTimePicker = ({ options }) => {
23
- const statusOptions = useMemo(() => {
24
- const selectedDateObject =
25
- options.config.selectedDate && moment(options.config.selectedDate, "YYYY-MM-DD");
26
-
27
- const months = getMonthObjectsFromQuery(
28
- options.query,
29
- options.tzid,
30
- selectedDateObject?.format("YYYY-MM")
31
- );
32
-
33
- const duration = getDurationFromQuery(options.query);
34
-
35
- const endDateObject = moment(options.config.endDate, "YYYY-MM-DD");
36
- const startDateObject = moment(options.config.startDate, "YYYY-MM-DD");
37
- const currentMonthObject = selectedDateObject ?? startDateObject;
38
- const currentMonth = currentMonthObject.format("YYYY-MM");
39
- const monthsInView = getMonthsInDisplay(currentMonth, options.config.startDay);
40
-
41
- const monthlyView = {
42
- month: currentMonth,
43
- hasNext: currentMonthObject.isBefore(endDateObject, "month"),
44
- hasPrev: currentMonthObject.isAfter(startDateObject, "month"),
45
- monthsInView,
46
- days: parseTimeSlots({
47
- slots: {},
48
- month: currentMonth,
49
- tzid: options.tzid,
50
- startDay: options.config.startDay,
51
- }),
52
- };
53
-
54
- return {
55
- auth: {
56
- token: options.token,
57
- domains: options.domains,
58
- demo: options.demo,
59
- },
60
- callback: options.callback
61
- ? options.callback
62
- : () => options.log.info("No `callback` option has been provided"),
63
- columnView: "loading", // loading | error | slots | confirm | no-slots
64
- daySlots: [],
65
- duration,
66
- locale: options.locale,
67
- mode: options.config.mode, // confirm (default) | no_confirm
68
- query: options.query,
69
- months,
70
- monthlyView,
71
- selected: false,
72
- startDay: options.config.startDay,
73
- focusedDay: options.config.selectedDay,
74
- selectedDay: options.config.selectedDate,
75
- startDateObject,
76
- endDateObject,
77
- focusedSlot: false,
78
- availableDays: [],
79
- sequenced_availability: options.query.sequence ? true : false,
80
- slots: {},
81
- slotButtonMode: options.config.slotButtonMode,
82
- slotFetchCount: 0,
83
- slotInjectionPoint: undefined,
84
- tzid: options.tzid,
85
- populated: false,
86
- };
87
- }, []);
88
-
89
- const themeOptions = {
90
- styles: { height: "auto", padding: "10px", ...options.styles },
91
- name: "DTP",
92
- };
93
-
94
- const logOptions = {
95
- mode: options.config.logs,
96
- name: "Date Time Picker",
97
- callback: options.callback,
98
- };
99
-
100
- const i18nOptions = {
101
- locale: options.locale,
102
- locale_modifiers: options.locale_modifiers,
103
- slug: "date_time_picker",
104
- allPhrases: options.translations,
105
- tzid: options.tzid,
106
- };
107
-
108
- const tzList = parseTzList(options.config.tzList, options.tzid);
109
- const selectedTzid = getInitialSelectedTzid(tzList, options.tzid);
110
-
111
- const tzOptions = {
112
- selectedTzid: selectedTzid,
113
- list: tzList,
114
- };
115
-
116
- return (
117
- <ThemeProvider options={themeOptions}>
118
- <LogProvider options={logOptions}>
119
- <I18nProvider options={i18nOptions}>
120
- <TzProvider options={tzOptions}>
121
- <StatusProvider options={statusOptions}>
122
- <Wrapper />
123
- </StatusProvider>
124
- </TzProvider>
125
- </I18nProvider>
126
- </LogProvider>
127
- </ThemeProvider>
128
- );
129
- };
130
-
131
- export default DateTimePicker;
@@ -1,38 +0,0 @@
1
- import React from "react";
2
- import moment from "moment-timezone";
3
-
4
- import { useI18n } from "../../contexts/i18n-context";
5
- import { useStatus } from "./contexts/status-context";
6
- import { useTheme } from "./contexts/theme-context";
7
- import { useTz } from "../../contexts/tz-context";
8
-
9
- const DayButton = ({ day, selected = false, focused = false }) => {
10
- const i18n = useI18n();
11
- const [status, dispatchStatus] = useStatus();
12
- const theme = useTheme();
13
- const [tz] = useTz();
14
-
15
- let classStub = "calendar-grid--button";
16
- if (day.isAvailable) classStub = classStub + " calendar-grid--available";
17
- if (!day.currentMonth) classStub = classStub + " calendar-grid--prevnext";
18
- if (selected) classStub = classStub + " calendar-grid--selected";
19
- if (focused) classStub = classStub + " calendar-grid--focused";
20
-
21
- const handleClick = () => {
22
- dispatchStatus({ type: "SELECT_DAY", day: day.date, tzid: tz.selectedTzid.tzid });
23
- };
24
-
25
- return (
26
- <button
27
- className={theme.classBuilder(classStub)}
28
- type="button"
29
- tabIndex={-1}
30
- disabled={day.isAvailable ? false : true}
31
- onClick={day.isAvailable ? handleClick : undefined}
32
- >
33
- {i18n.f(moment(day.date, "YYYY-MM-DD"), "DD")}
34
- </button>
35
- );
36
- };
37
-
38
- export default DayButton;
@@ -1,33 +0,0 @@
1
- import React from "react";
2
- import moment from "moment-timezone";
3
-
4
- import { useI18n } from "../../contexts/i18n-context";
5
- import { useTheme } from "./contexts/theme-context";
6
-
7
- const dayLookup = {
8
- sunday: "2020-03-01",
9
- monday: "2020-03-02",
10
- tuesday: "2020-03-03",
11
- wednesday: "2020-03-04",
12
- thursday: "2020-03-05",
13
- friday: "2020-03-06",
14
- saturday: "2020-03-07",
15
- };
16
-
17
- const DayHeadings = ({ days }) => {
18
- const i18n = useI18n();
19
- const theme = useTheme();
20
-
21
- const daysMarkup = days.map(day => {
22
- const dayObject = moment(dayLookup[day], "YYYY-MM-DD", true);
23
- return (
24
- <th className={theme.classBuilder("calendar-grid--week-day")} key={`day_${day}`}>
25
- {i18n.f(dayObject, "ddd")}
26
- </th>
27
- );
28
- });
29
-
30
- return daysMarkup;
31
- };
32
-
33
- export default DayHeadings;
@@ -1,33 +0,0 @@
1
- import React, { memo } from "react";
2
-
3
- import { useI18n } from "../../contexts/i18n-context";
4
- import { useTheme } from "./contexts/theme-context";
5
- import TimeZoneSelector from "../generic/TimeZoneSelector";
6
-
7
- import { useTz } from "../../contexts/tz-context";
8
-
9
- const Details = ({ duration, locale }) => {
10
- const i18n = useI18n();
11
- const theme = useTheme();
12
- const [tz, setTz] = useTz();
13
-
14
- return (
15
- <div className={theme.classBuilder("details")}>
16
- <div className={theme.classBuilder("details--tz")}>
17
- <p className={theme.classBuilder("details--tz-label")}>
18
- <strong>{i18n.t("time_zone")}:</strong>
19
- </p>
20
- <TimeZoneSelector locale={locale} theme={theme} tz={tz} setTz={setTz} />
21
- </div>
22
- <div className={theme.classBuilder("details--duration")}>
23
- {duration && (
24
- <p>
25
- <strong>{i18n.t("duration_label")}:</strong> {duration} {i18n.t("minutes")}
26
- </p>
27
- )}
28
- </div>
29
- </div>
30
- );
31
- };
32
-
33
- export default memo(Details);
@@ -1,39 +0,0 @@
1
- import React from "react";
2
-
3
- import { useTheme } from "./contexts/theme-context";
4
-
5
- const Error = ({ message = "There was an error", title = false }) => {
6
- const theme = useTheme();
7
- return (
8
- <div className={theme.classBuilder("error")}>
9
- <svg
10
- className={theme.classBuilder("error-icon")}
11
- viewBox="0 0 486.463 486.463"
12
- aria-hidden="true"
13
- >
14
- <path
15
- d="M243.225,333.382c-13.6,0-25,11.4-25,25s11.4,25,25,25c13.1,0,25-11.4,24.4-24.4
16
- C268.225,344.682,256.925,333.382,243.225,333.382z"
17
- />
18
- <path
19
- d="M474.625,421.982c15.7-27.1,15.8-59.4,0.2-86.4l-156.6-271.2c-15.5-27.3-43.5-43.5-74.9-43.5s-59.4,16.3-74.9,43.4
20
- l-156.8,271.5c-15.6,27.3-15.5,59.8,0.3,86.9c15.6,26.8,43.5,42.9,74.7,42.9h312.8
21
- C430.725,465.582,458.825,449.282,474.625,421.982z M440.625,402.382c-8.7,15-24.1,23.9-41.3,23.9h-312.8
22
- c-17,0-32.3-8.7-40.8-23.4c-8.6-14.9-8.7-32.7-0.1-47.7l156.8-271.4c8.5-14.9,23.7-23.7,40.9-23.7c17.1,0,32.4,8.9,40.9,23.8
23
- l156.7,271.4C449.325,369.882,449.225,387.482,440.625,402.382z"
24
- />
25
- <path
26
- d="M237.025,157.882c-11.9,3.4-19.3,14.2-19.3,27.3c0.6,7.9,1.1,15.9,1.7,23.8c1.7,30.1,3.4,59.6,5.1,89.7
27
- c0.6,10.2,8.5,17.6,18.7,17.6c10.2,0,18.2-7.9,18.7-18.2c0-6.2,0-11.9,0.6-18.2c1.1-19.3,2.3-38.6,3.4-57.9
28
- c0.6-12.5,1.7-25,2.3-37.5c0-4.5-0.6-8.5-2.3-12.5C260.825,160.782,248.925,155.082,237.025,157.882z"
29
- />
30
- </svg>
31
- {title ? (
32
- <span className={theme.classBuilder("error-text-wrapper")}>{title}</span>
33
- ) : null}
34
- <span className={theme.classBuilder("error-text")}>{message}</span>
35
- </div>
36
- );
37
- };
38
-
39
- export default Error;
@@ -1,20 +0,0 @@
1
- import React from "react";
2
-
3
- import { useI18n } from "../../contexts/i18n-context";
4
- import { useTheme } from "./contexts/theme-context";
5
-
6
- const Loading = () => {
7
- const i18n = useI18n();
8
- const theme = useTheme();
9
- return (
10
- <div className={theme.classBuilder("loading-wrapper")}>
11
- <svg aria-hidden="true" viewBox="0 0 489.711 489.711">
12
- <path d="M112.156,97.111c72.3-65.4,180.5-66.4,253.8-6.7l-58.1,2.2c-7.5,0.3-13.3,6.5-13,14c0.3,7.3,6.3,13,13.5,13 c0.2,0,0.3,0,0.5,0l89.2-3.3c7.3-0.3,13-6.2,13-13.5v-1c0-0.2,0-0.3,0-0.5v-0.1l0,0l-3.3-88.2c-0.3-7.5-6.6-13.3-14-13 c-7.5,0.3-13.3,6.5-13,14l2.1,55.3c-36.3-29.7-81-46.9-128.8-49.3c-59.2-3-116.1,17.3-160,57.1c-60.4,54.7-86,137.9-66.8,217.1 c1.5,6.2,7,10.3,13.1,10.3c1.1,0,2.1-0.1,3.2-0.4c7.2-1.8,11.7-9.1,9.9-16.3C36.656,218.211,59.056,145.111,112.156,97.111z" />
13
- <path d="M462.456,195.511c-1.8-7.2-9.1-11.7-16.3-9.9c-7.2,1.8-11.7,9.1-9.9,16.3c16.9,69.6-5.6,142.7-58.7,190.7 c-37.3,33.7-84.1,50.3-130.7,50.3c-44.5,0-88.9-15.1-124.7-44.9l58.8-5.3c7.4-0.7,12.9-7.2,12.2-14.7s-7.2-12.9-14.7-12.2l-88.9,8 c-7.4,0.7-12.9,7.2-12.2,14.7l8,88.9c0.6,7,6.5,12.3,13.4,12.3c0.4,0,0.8,0,1.2-0.1c7.4-0.7,12.9-7.2,12.2-14.7l-4.8-54.1 c36.3,29.4,80.8,46.5,128.3,48.9c3.8,0.2,7.6,0.3,11.3,0.3c55.1,0,107.5-20.2,148.7-57.4 C456.056,357.911,481.656,274.811,462.456,195.511z" />
14
- </svg>
15
- <span className={"visuallyhidden"}>{i18n.t("loading")}</span>
16
- </div>
17
- );
18
- };
19
-
20
- export default Loading;
@@ -1,21 +0,0 @@
1
- import React from "react";
2
-
3
- import { useI18n } from "../../contexts/i18n-context";
4
- import { useTheme } from "./contexts/theme-context";
5
-
6
- const LoadingCalendar = () => {
7
- const i18n = useI18n();
8
- const theme = useTheme();
9
-
10
- return (
11
- <div className={theme.classBuilder("calendar-loading")}>
12
- <svg aria-hidden="true" viewBox="0 0 489.711 489.711">
13
- <path d="M112.156,97.111c72.3-65.4,180.5-66.4,253.8-6.7l-58.1,2.2c-7.5,0.3-13.3,6.5-13,14c0.3,7.3,6.3,13,13.5,13 c0.2,0,0.3,0,0.5,0l89.2-3.3c7.3-0.3,13-6.2,13-13.5v-1c0-0.2,0-0.3,0-0.5v-0.1l0,0l-3.3-88.2c-0.3-7.5-6.6-13.3-14-13 c-7.5,0.3-13.3,6.5-13,14l2.1,55.3c-36.3-29.7-81-46.9-128.8-49.3c-59.2-3-116.1,17.3-160,57.1c-60.4,54.7-86,137.9-66.8,217.1 c1.5,6.2,7,10.3,13.1,10.3c1.1,0,2.1-0.1,3.2-0.4c7.2-1.8,11.7-9.1,9.9-16.3C36.656,218.211,59.056,145.111,112.156,97.111z" />
14
- <path d="M462.456,195.511c-1.8-7.2-9.1-11.7-16.3-9.9c-7.2,1.8-11.7,9.1-9.9,16.3c16.9,69.6-5.6,142.7-58.7,190.7 c-37.3,33.7-84.1,50.3-130.7,50.3c-44.5,0-88.9-15.1-124.7-44.9l58.8-5.3c7.4-0.7,12.9-7.2,12.2-14.7s-7.2-12.9-14.7-12.2l-88.9,8 c-7.4,0.7-12.9,7.2-12.2,14.7l8,88.9c0.6,7,6.5,12.3,13.4,12.3c0.4,0,0.8,0,1.2-0.1c7.4-0.7,12.9-7.2,12.2-14.7l-4.8-54.1 c36.3,29.4,80.8,46.5,128.3,48.9c3.8,0.2,7.6,0.3,11.3,0.3c55.1,0,107.5-20.2,148.7-57.4 C456.056,357.911,481.656,274.811,462.456,195.511z" />
15
- </svg>
16
- <span className={"calendar-loading__text"}>{i18n.t("loading_calendar")}</span>
17
- </div>
18
- );
19
- };
20
-
21
- export default LoadingCalendar;
@@ -1,16 +0,0 @@
1
- import React from "react";
2
-
3
- import { useI18n } from "../../contexts/i18n-context";
4
- import { useTheme } from "./contexts/theme-context";
5
-
6
- const NoSlotsFound = () => {
7
- const i18n = useI18n();
8
- const theme = useTheme();
9
- return (
10
- <div className={theme.classBuilder("no-slots")}>
11
- <p>{i18n.t("no_slots_found")}</p>
12
- </div>
13
- );
14
- };
15
-
16
- export default NoSlotsFound;
@@ -1,97 +0,0 @@
1
- import React, { useEffect, useRef } from "react";
2
- import moment from "moment-timezone";
3
-
4
- import { useI18n } from "../../contexts/i18n-context";
5
- import { useStatus } from "./contexts/status-context";
6
- import { useTheme } from "./contexts/theme-context";
7
- import { useTz } from "../../contexts/tz-context";
8
-
9
- const SequencedSlotButton = ({ slot }) => {
10
- const i18n = useI18n();
11
- const theme = useTheme();
12
- const [status, dispatchStatus] = useStatus();
13
- const [tz] = useTz();
14
-
15
- const slotButtonRef = useRef();
16
-
17
- const startArray = slot.map(a => a.start);
18
- const endArray = slot.map(a => a.end);
19
-
20
- const start = startArray.reduce((prev, current) => {
21
- return prev < current ? prev : current;
22
- });
23
-
24
- const end = endArray.reduce((prev, current) => {
25
- return prev > current ? prev : current;
26
- });
27
-
28
- const handleSlotSelection = slot => {
29
- const selectedSlot = {
30
- start,
31
- end,
32
- sequence: slot,
33
- };
34
- dispatchStatus({ type: "SELECT_SLOT", slot: selectedSlot, tzid: tz.selectedTzid.tzid });
35
- };
36
-
37
- useEffect(() => {
38
- if (status.focusedSlot === start) {
39
- slotButtonRef.current.focus();
40
- }
41
- }, [status.focusedSlot]);
42
-
43
- let classStub = "time-slot";
44
- if (status.slotButtonMode === "detailed") classStub = classStub + " time-slot--detailed";
45
- if (status.selected.start === start) classStub = classStub + " time-slot--selected";
46
-
47
- const detailedSlot = slot.map((s, i) => (
48
- <li key={i} className={theme.classBuilder("detailed-slot-list--item")}>
49
- {i18n.customFormatedTimeZone(
50
- moment(s.start, "YYYY-MM-DDTHH:mm:00Z"),
51
- tz.selectedTzid.tzid,
52
- "LT"
53
- )}
54
- {" - "}
55
- {i18n.customFormatedTimeZone(
56
- moment(s.end, "YYYY-MM-DDTHH:mm:00Z"),
57
- tz.selectedTzid.tzid,
58
- "LT"
59
- )}{" "}
60
- {`(${moment(start, "YYYY-MM-DDTHH:mm:00Z").tz(tz.selectedTzid.tzid).format("z")})`}
61
- </li>
62
- ));
63
-
64
- return (
65
- <button
66
- className={theme.classBuilder(classStub)}
67
- onClick={() => handleSlotSelection(slot)}
68
- ref={slotButtonRef}
69
- >
70
- <span className={theme.classBuilder("visually-hidden")}>
71
- {i18n.t("select_time_slot")}
72
- </span>
73
- {status.slotButtonMode === "detailed" ? (
74
- <ul className={theme.classBuilder("detailed-slot-list")}>{detailedSlot}</ul>
75
- ) : (
76
- <>
77
- {i18n.customFormatedTimeZone(
78
- moment(start, "YYYY-MM-DDTHH:mm:00Z"),
79
- tz.selectedTzid.tzid,
80
- "LT"
81
- )}
82
- {" - "}
83
- {i18n.customFormatedTimeZone(
84
- moment(end, "YYYY-MM-DDTHH:mm:00Z"),
85
- tz.selectedTzid.tzid,
86
- "LT"
87
- )}{" "}
88
- {`(${moment(start, "YYYY-MM-DDTHH:mm:00Z")
89
- .tz(tz.selectedTzid.tzid)
90
- .format("z")})`}
91
- </>
92
- )}
93
- </button>
94
- );
95
- };
96
-
97
- export default SequencedSlotButton;
@@ -1,55 +0,0 @@
1
- import React, { useEffect, useRef } from "react";
2
- import moment from "moment-timezone";
3
-
4
- import { useI18n } from "../../contexts/i18n-context";
5
- import { useStatus } from "./contexts/status-context";
6
- import { useTheme } from "./contexts/theme-context";
7
- import { useTz } from "../../contexts/tz-context";
8
-
9
- const SlotButton = ({ slot }) => {
10
- const i18n = useI18n();
11
- const theme = useTheme();
12
- const [status, dispatchStatus] = useStatus();
13
- const [tz] = useTz();
14
-
15
- const slotButtonRef = useRef();
16
-
17
- const handleSlotSelection = slot => {
18
- dispatchStatus({ type: "SELECT_SLOT", slot, tzid: tz.selectedTzid.tzid });
19
- };
20
-
21
- useEffect(() => {
22
- if (status.focusedSlot === slot.start) {
23
- slotButtonRef.current.focus();
24
- }
25
- }, [status.focusedSlot]);
26
-
27
- let classStub = "time-slot";
28
- if (status.selected.start === slot.start) classStub = classStub + " time-slot--selected";
29
-
30
- return (
31
- <button
32
- className={theme.classBuilder(classStub)}
33
- onClick={() => handleSlotSelection(slot)}
34
- ref={slotButtonRef}
35
- >
36
- <span className={theme.classBuilder("visually-hidden")}>
37
- {i18n.t("select_time_slot")}
38
- </span>
39
- {i18n.customFormatedTimeZone(
40
- moment(slot.start, "YYYY-MM-DDTHH:mm:00Z"),
41
- tz.selectedTzid.tzid,
42
- "LT"
43
- )}
44
- {" - "}
45
- {i18n.customFormatedTimeZone(
46
- moment(slot.end, "YYYY-MM-DDTHH:mm:00Z"),
47
- tz.selectedTzid.tzid,
48
- "LT"
49
- )}{" "}
50
- {`(${moment(slot.start, "YYYY-MM-DDTHH:mm:00Z").tz(tz.selectedTzid.tzid).format("z")})`}
51
- </button>
52
- );
53
- };
54
-
55
- export default SlotButton;
@@ -1,45 +0,0 @@
1
- import React from "react";
2
-
3
- import SlotButton from "./SlotButton";
4
- import SequencedSlotButton from "./SequencedSlotButton";
5
-
6
- import { useI18n } from "../../contexts/i18n-context";
7
- import { useStatus } from "./contexts/status-context";
8
- import { useTheme } from "./contexts/theme-context";
9
-
10
- const SlotsList = () => {
11
- const i18n = useI18n();
12
- const [status, dispatchStatus] = useStatus();
13
- const theme = useTheme();
14
-
15
- const renderSlots = status.daySlots.map((slot, key) => {
16
- return (
17
- <li key={key} className={theme.classBuilder("slot-list--item")}>
18
- {status.sequenced_availability ? (
19
- <SequencedSlotButton slot={slot} />
20
- ) : (
21
- <SlotButton slot={slot} />
22
- )}
23
- </li>
24
- );
25
- });
26
-
27
- return (
28
- <>
29
- <div className={theme.classBuilder("time-slots-list")}>
30
- <div className={theme.classBuilder("time-slots-list--header")}>
31
- <h3>{i18n.dateToSlotStringWithoutTzShift(status.selectedDay)}</h3>
32
- </div>
33
- <div className={theme.classBuilder("time-slots-group--wrapper")}>
34
- {status.daySlots.length > 0 ? (
35
- <ul className={theme.classBuilder("slot-list")}>{renderSlots}</ul>
36
- ) : (
37
- <p>{i18n.t("no_slots_for_day")}</p>
38
- )}
39
- </div>
40
- </div>
41
- </>
42
- );
43
- };
44
-
45
- export default SlotsList;