cronofy-elements 1.48.2 → 1.49.2

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.2.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.2.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 -423
  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 -61
  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
package/demo/server.js DELETED
@@ -1,425 +0,0 @@
1
- require("@babel/polyfill");
2
- const fetch = require("node-fetch");
3
- const express = require("express");
4
- const app = express();
5
- const path = require("path");
6
- const moment = require("moment");
7
-
8
- const url = require("url");
9
- const querystring = require("querystring");
10
-
11
- const env = require("../src/js/env");
12
- let apiDomain = env.API_DOMAIN || "https://api.cronofy.com";
13
- let rawApiDomain = apiDomain;
14
- const appDomain = env.APP_DOMAIN || "https://app.cronofy.com";
15
-
16
- if (env.API_DOMAIN) {
17
- // The the "domain" starts with a protocol, we can assume it is
18
- // a full path. Otherwise assume it is a pure domain, so add our
19
- // protocol (everyone should be using HTTPS)
20
- apiDomain = env.API_DOMAIN.startsWith("http")
21
- ? env.API_DOMAIN
22
- : `https://${env.API_DOMAIN}`;
23
- rawApiDomain = env.API_DOMAIN;
24
- }
25
-
26
- console.log("Firing up server...");
27
-
28
- const getData = async (url, options) =>
29
- await fetch(url, options)
30
- .then(async res => await res.json())
31
- .catch(err => {
32
- console.log(err);
33
- console.error(
34
- "\x1b[31m",
35
- "\n┌───────────────────────────────────────────────────┐\n│ ERROR: │\n│ There was a problem generating the element token. │\n│ Check that your CLIENT_ID, CLIENT_SECRET, and SUB │\n│ environment variables are correct. │\n└───────────────────────────────────────────────────┘\n",
36
- "\x1b[0m"
37
- );
38
- return { element_token: { token: "invalid" } };
39
- });
40
-
41
- const baseUrl = `${apiDomain}/v1/element_tokens`;
42
-
43
- const singleTokenOptions = {
44
- method: "POST",
45
- headers: {
46
- "Content-Type": "application/json; charset=utf-8",
47
- Authorization: `Bearer ${env.CLIENT_SECRET}`
48
- },
49
- body: JSON.stringify({
50
- version: "1",
51
- permissions: [
52
- "agenda",
53
- "availability",
54
- "managed_availability",
55
- "account_management"
56
- ],
57
- subs: [env.SUB],
58
- origin: "http://localhost:8080"
59
- })
60
- };
61
-
62
- const calendarSyncTokenOptions = {
63
- method: "POST",
64
- headers: {
65
- "Content-Type": "application/json; charset=utf-8",
66
- Authorization: `Bearer ${env.CLIENT_SECRET}`
67
- },
68
- body: JSON.stringify({
69
- version: "1",
70
- permissions: ["account_management"],
71
- subs: [env.SUB],
72
- origin: "http://localhost:8080"
73
- })
74
- };
75
-
76
- const rulesTokenOptions = {
77
- method: "POST",
78
- headers: {
79
- "Content-Type": "application/json; charset=utf-8",
80
- Authorization: `Bearer ${env.CLIENT_SECRET}`
81
- },
82
- body: JSON.stringify({
83
- version: "1",
84
- permissions: ["managed_availability"],
85
- subs: [env.SUB],
86
- origin: "http://localhost:8080"
87
- })
88
- };
89
-
90
- const agendaTokenOptions = {
91
- method: "POST",
92
- headers: {
93
- "Content-Type": "application/json; charset=utf-8",
94
- Authorization: `Bearer ${env.CLIENT_SECRET}`
95
- },
96
- body: JSON.stringify({
97
- version: "1",
98
- permissions: ["agenda"],
99
- subs: [env.SUB],
100
- origin: "http://localhost:8080"
101
- })
102
- };
103
-
104
- const availabilityViewerTokenOptions = {
105
- method: "POST",
106
- headers: {
107
- "Content-Type": "application/json; charset=utf-8",
108
- Authorization: `Bearer ${env.CLIENT_SECRET}`
109
- },
110
- body: JSON.stringify({
111
- version: "1",
112
- permissions: ["availability"],
113
- subs: [env.SUB],
114
- origin: "http://localhost:8080"
115
- })
116
- };
117
-
118
- const slotPickerTokenOptions = {
119
- method: "POST",
120
- headers: {
121
- "Content-Type": "application/json; charset=utf-8",
122
- Authorization: `Bearer ${env.CLIENT_SECRET}`
123
- },
124
- body: JSON.stringify({
125
- version: "1",
126
- permissions: ["availability"],
127
- subs: [env.SUB],
128
- origin: "http://localhost:8080"
129
- })
130
- };
131
-
132
- const dateTimePickerTokenOptions = {
133
- method: "POST",
134
- headers: {
135
- "Content-Type": "application/json; charset=utf-8",
136
- Authorization: `Bearer ${env.CLIENT_SECRET}`
137
- },
138
- body: JSON.stringify({
139
- version: "1",
140
- permissions: ["availability"],
141
- subs: [env.SUB],
142
- origin: "http://localhost:8080"
143
- })
144
- };
145
-
146
- function localMiddleware (req, res, next) {
147
- if (req.query.locale !== undefined) {
148
- req.locale = req.query.locale;
149
- } else {
150
- req.locale = 'en';
151
- }
152
- // keep executing the router middleware
153
- next()
154
- }
155
-
156
- app.set("query parser", "extended");
157
- app.use(express.static(__dirname + "/../"));
158
- app.use(localMiddleware)
159
- app.set("view engine", "ejs");
160
- app.set("views", path.join(__dirname, "/../demo"));
161
-
162
- app.get("/", async (req, res) => {
163
- const codeQuery = req.query.code;
164
-
165
- if (codeQuery) {
166
- console.log("there is a `code` query:", codeQuery);
167
- const codeResponse = await getData(`${apiDomain}/oauth/token`, {
168
- method: "POST",
169
- headers: {
170
- "Content-Type": "application/json; charset=utf-8"
171
- },
172
- body: JSON.stringify({
173
- client_id: env.CLIENT_ID,
174
- client_secret: env.CLIENT_SECRET,
175
- grant_type: "authorization_code",
176
- code: codeQuery,
177
- redirect_uri: "http://localhost:8080/"
178
- })
179
- });
180
- console.log("codeResponse", codeResponse);
181
- return res.redirect("/");
182
- }
183
-
184
- const single_token = await getData(baseUrl, singleTokenOptions);
185
-
186
- return res.render("index", {
187
- single_token: single_token.element_token.token,
188
- api_domain: rawApiDomain,
189
- app_domain: appDomain,
190
- sub: env.SUB,
191
- locale: req.locale,
192
- client_id: env.CLIENT_ID
193
- });
194
- });
195
-
196
- app.get("/availability-viewer", async (req, res) => {
197
- const availability_token = await getData(
198
- baseUrl,
199
- availabilityViewerTokenOptions
200
- );
201
- console.log("Rendering with " + req.locale);
202
- return res.render("availability-viewer", {
203
- availability_token: availability_token.element_token.token,
204
- api_domain: rawApiDomain,
205
- app_domain: appDomain,
206
- sub: env.SUB,
207
- locale: req.locale,
208
- client_id: env.CLIENT_ID
209
- });
210
- });
211
-
212
- app.get("/rules", async (req, res) => {
213
- const rules_token = await getData(baseUrl, rulesTokenOptions);
214
- return res.render("rules", {
215
- rules_token: rules_token.element_token.token,
216
- api_domain: rawApiDomain,
217
- app_domain: appDomain,
218
- sub: env.SUB,
219
- locale: req.locale,
220
- client_id: env.CLIENT_ID
221
- });
222
- });
223
-
224
- app.get("/agenda", async (req, res) => {
225
- const agenda_token = await getData(baseUrl, agendaTokenOptions);
226
- return res.render("agenda", {
227
- agenda_token: agenda_token.element_token.token,
228
- locale: req.locale,
229
- api_domain: rawApiDomain
230
- });
231
- });
232
-
233
- app.get("/integration", async (req, res) => {
234
- const availability_token = await getData(
235
- baseUrl,
236
- availabilityViewerTokenOptions
237
- );
238
- const agenda_token = await getData(baseUrl, agendaTokenOptions);
239
- const rules_token = await getData(baseUrl, rulesTokenOptions);
240
- const slot_picker_token = await getData(baseUrl, slotPickerTokenOptions);
241
- const cal_sync_token = await getData(baseUrl, calendarSyncTokenOptions);
242
- return res.render("integration", {
243
- agenda_token: agenda_token.element_token.token,
244
- availability_token: availability_token.element_token.token,
245
- rules_token: rules_token.element_token.token,
246
- slot_picker_token: slot_picker_token.element_token.token,
247
- cal_sync_token: cal_sync_token.element_token.token,
248
- api_domain: rawApiDomain,
249
- app_domain: appDomain,
250
- sub: env.SUB,
251
- locale: req.locale,
252
- client_id: env.CLIENT_ID
253
- });
254
- });
255
-
256
- app.get("/crossbrowser", async (req, res) => {
257
- const availability_token = await getData(
258
- baseUrl,
259
- availabilityViewerTokenOptions
260
- );
261
- const agenda_token = await getData(baseUrl, agendaTokenOptions);
262
- const rules_token = await getData(baseUrl, rulesTokenOptions);
263
- const slot_picker_token = await getData(baseUrl, slotPickerTokenOptions);
264
- const cal_sync_token = await getData(baseUrl, calendarSyncTokenOptions);
265
- return res.render("crossbrowser", {
266
- agenda_token: agenda_token.element_token.token,
267
- availability_token: availability_token.element_token.token,
268
- rules_token: rules_token.element_token.token,
269
- slot_picker_token: slot_picker_token.element_token.token,
270
- cal_sync_token: cal_sync_token.element_token.token,
271
- api_domain: rawApiDomain,
272
- app_domain: appDomain,
273
- sub: env.SUB,
274
- locale: req.locale,
275
- client_id: env.CLIENT_ID
276
- });
277
- });
278
-
279
- const slotTimes = function(days, time) {
280
- const timeString = `${moment().utc().format("YYYY-MM-DD")}T${time}:00Z`;
281
- const output = moment(timeString)
282
- .add(days, "days");
283
- return output.utc().format();
284
- };
285
-
286
- app.get("/slot-picker", async (req, res) => {
287
- let bookable_event_ids = [];
288
-
289
- const createBookableEvents = req.query.bookable_events;
290
-
291
- if (createBookableEvents) {
292
- const example_bookable_events = [
293
- {
294
- "bookable_event_id": "BOOKABLE_EVENT_1",
295
- "start": slotTimes(1,"10:00"),
296
- "end": slotTimes(1,"11:00"),
297
- "status": "confirmed",
298
- "registration": {
299
- "capacity": 5
300
- }
301
- },
302
- {
303
- "bookable_event_id": "BOOKABLE_EVENT_2",
304
- "start": slotTimes(1,"12:00"),
305
- "end": slotTimes(1,"13:30"),
306
- "status": "confirmed",
307
- "registration": {
308
- "capacity": 5
309
- }
310
- },
311
- {
312
- "bookable_event_id": "BOOKABLE_EVENT_3",
313
- "start": slotTimes(1,"15:00"),
314
- "end": slotTimes(1,"17:00"),
315
- "status": "confirmed",
316
- "registration": {
317
- "capacity": 5
318
- }
319
- },
320
- {
321
- "bookable_event_id": "BOOKABLE_EVENT_4",
322
- "start": slotTimes(2,"12:00"),
323
- "end": slotTimes(2,"13:30"),
324
- "status": "confirmed",
325
- "registration": {
326
- "capacity": 5
327
- }
328
- }
329
- ];
330
-
331
- const bookableEventsUrl = `${apiDomain}/v1/bookable_events`;
332
- const eventCreationOptions = {
333
- method: "POST",
334
- headers: {
335
- "Content-Type": "application/json; charset=utf-8",
336
- Authorization: `Bearer ${env.CLIENT_SECRET}`
337
- }
338
- };
339
-
340
- bookable_event_ids = await Promise.all(example_bookable_events.map(async event => {
341
- const options = {
342
- ...eventCreationOptions,
343
- body: JSON.stringify(event)
344
- };
345
-
346
- const bookable_event = await getData(bookableEventsUrl, options);
347
- console.log("New bookable event created:");
348
- console.log({eventId: bookable_event.bookable_event.bookable_event_id});
349
-
350
- return bookable_event.bookable_event.bookable_event_id;
351
- }));
352
- }
353
-
354
- const tokenOptions = () => {
355
- let options = {
356
- version: "1",
357
- permissions: ["availability"],
358
- origin: "http://localhost:8080"
359
- }
360
-
361
- if(bookable_event_ids.length > 0){
362
- options.bookable_event_ids = bookable_event_ids;
363
- }
364
-
365
- return options;
366
- };
367
-
368
- const bookableEventsSlotPickerTokenOptions = {
369
- method: "POST",
370
- headers: {
371
- "Content-Type": "application/json; charset=utf-8",
372
- Authorization: `Bearer ${env.CLIENT_SECRET}`
373
- },
374
- body: JSON.stringify(tokenOptions()),
375
- }
376
-
377
- const slot_picker_token = await getData(baseUrl, slotPickerTokenOptions);
378
- const bookable_events_token = await getData(baseUrl, bookableEventsSlotPickerTokenOptions);
379
- return res.render("slot-picker", {
380
- bookable_event_ids: bookable_event_ids,
381
- slot_picker_token: slot_picker_token.element_token.token,
382
- bookable_events_token: bookable_events_token.element_token.token,
383
- api_domain: rawApiDomain,
384
- app_domain: appDomain,
385
- sub: env.SUB,
386
- locale: req.locale,
387
- client_id: env.CLIENT_ID
388
- });
389
- });
390
-
391
- app.get("/date-time-picker", async (req, res) => {
392
- const date_time_picker_token = await getData(baseUrl, dateTimePickerTokenOptions);
393
- return res.render("date-time-picker", {
394
- date_time_picker_token: date_time_picker_token.element_token.token,
395
- api_domain: rawApiDomain,
396
- app_domain: appDomain,
397
- sub: env.SUB,
398
- locale: req.locale,
399
- client_id: env.CLIENT_ID
400
- });
401
- });
402
-
403
- app.get("/calendar-sync", async (req, res) => {
404
- const cal_sync_token = await getData(baseUrl, calendarSyncTokenOptions);
405
- return res.render("calendar-sync", {
406
- cal_sync_token: cal_sync_token.element_token.token,
407
- api_domain: rawApiDomain,
408
- app_domain: appDomain,
409
- sub: env.SUB,
410
- locale: req.locale,
411
- client_id: env.CLIENT_ID
412
- });
413
- });
414
-
415
- app.listen(8080);
416
-
417
- console.log(
418
- "\x1b[32m\n",
419
- "┌─────────────────────────────────────────────────┐\n",
420
- "│ │\n",
421
- "│ serving on port 8080 - http://localhost:8080/ │\n",
422
- "│ │\n",
423
- "└─────────────────────────────────────────────────┘\n",
424
- "\x1b[0m"
425
- );
@@ -1,197 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1">
6
- <meta http-equiv="X-UA-Compatible" content="ie=edge">
7
- <title>Embedding demo: availability viewer</title>
8
- <link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet">
9
- <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.js"></script>
10
- <link href="/demo/demo-styles.css" rel="stylesheet">
11
- <%- include('load-elements.ejs', { mode: 'dev'}) %>
12
- </head>
13
-
14
- <body class="trouble">
15
- <% var slug = 'slot-picker'; %>
16
- <%- include nav.ejs %>
17
-
18
- <h1>Slot Picker</h1>
19
- <div id="cronofy-error-message"></div>
20
- <div id="cronofy-slot-picker"></div>
21
- <p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Recusandae, doloribus eaque? Animi, velit culpa nostrum omnis vitae rem placeat ut mollitia autem porro! Qui molestiae porro rerum similique, aliquid deleniti!</p>
22
- <div id="cronofy-slot-picker-two"></div>
23
- <hr>
24
- <h3>Slot Picker: bookable events</h3>
25
- <div id="cronofy-slot-picker-bookable-events"></div>
26
- <p><a href="http://localhost:8080/slot-picker?locale=en&bookable_events=true">Create some bookable events</a></p>
27
- <hr>
28
- <div class="wrapper">
29
- <div class="column">
30
- <h2>Consectetur adipisicing elit</h2>
31
- <p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. <a href="/">Voluptate sed ex totam odit</a> quae hic voluptatibus, quisquam dicta animi laborum velit laboriosam, placeat suscipit tenetur voluptates! Illo tempora minus animi.</p>
32
- <p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Quidem consequuntur repudiandae nesciunt, totam dicta earum deleniti magnam eveniet eligendi sunt adipisci veniam esse aliquid aperiam corporis optio fuga tempora sit!</p>
33
- </div>
34
- <div class="column">
35
- <h2>Est deserunt non quis do quis nostrud ad exercitation proident incididunt.</h2>
36
- <p>Excepturi dicta neque ut, a expedita quaerat, tempore dolor placeat quibusdam cumque ipsam cum officia voluptate, ea fuga optio necessitatibus inventore tempora?</p>
37
- <p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. Natus nisi eveniet voluptas provident esse beatae minus at error dignissimos neque? Temporibus velit numquam aut labore porro neque ipsum, deleniti a?</p>
38
- <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Eum sunt eligendi, error quos nulla dolorem alias corrupti iste fugiat deleniti nam unde, porro provident a voluptatem at voluptates, dolores sed!</p>
39
- </div>
40
- </div>
41
- <p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. Natus nisi eveniet voluptas provident esse beatae minus at error dignissimos neque? Temporibus velit numquam aut labore porro neque ipsum, deleniti a?</p>
42
- <p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. Debitis saepe maxime corporis nemo hic rerum porro in repudiandae? Libero eligendi impedit reiciendis exercitationem fuga ex eos aliquid itaque facere corrupti.</p>
43
- <hr>
44
- <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Eum sunt eligendi, error quos nulla dolorem alias corrupti iste fugiat deleniti nam unde, porro provident a voluptatem at voluptates, dolores sed!</p>
45
- <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Voluptatum commodi fuga laboriosam? Quas officiis doloremque iure modi, ipsam dolore ad illum saepe et voluptatum quis tempore ullam dolor, sequi nulla!</p>
46
- <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Eum sunt eligendi, error quos nulla dolorem alias corrupti iste fugiat deleniti nam unde, porro provident a voluptatem at voluptates, dolores sed!</p>
47
-
48
- <script>
49
- const locale = "<%= locale %>";
50
-
51
- if ("<%= slot_picker_token %>" === "invalid") {
52
- const errorMessageWrapper = document.querySelector('#cronofy-error-message');
53
- errorMessageWrapper.innerHTML = "<span class='error'>There was a problem generating the element token. Check that your <code>CLIENT_ID</code>, <code>CLIENT_SECRET</code>, and <code>SUB</code> environment variables are correct.</span>"
54
- }
55
-
56
- const display = {
57
- // 0 = don't show the element
58
- // 1 = show the element
59
- one: 1,
60
- two: 1,
61
- three: 1
62
- }
63
-
64
- if (display.one) {
65
- const slotTimes = function(days, time) {
66
- const timeString = `${moment().utc().format("YYYY-MM-DD")}T${time}:00Z`;
67
- const output = moment(timeString)
68
- .add(days, "days");
69
- return output.utc().format();
70
- };
71
-
72
- CronofyElements.SlotPicker({
73
- element_token: "<%= slot_picker_token %>",
74
- target_id: 'cronofy-slot-picker',
75
- api_domain:"<%= api_domain %>",
76
- availability_query: {
77
- participants: [
78
- {
79
- required: "all",
80
- members: [
81
- {
82
- sub: "<%= sub %>",
83
- // managed_availability: true,
84
- // availability_rule_ids: ["weekly_work_hours"]
85
- }
86
- ]
87
- }
88
- ],
89
- required_duration: { minutes: 60 },
90
- query_periods: [
91
- { start: slotTimes(1,"07:00"), end: slotTimes(1,"12:00") },
92
- { start: slotTimes(2,"09:00"), end: slotTimes(2,"13:00") },
93
- { start: slotTimes(2,"14:00"), end: slotTimes(2,"17:00") },
94
- { start: slotTimes(3,"09:00"), end: slotTimes(3,"13:00") },
95
- { start: slotTimes(3,"14:00"), end: slotTimes(3,"17:00") },
96
- { start: slotTimes(4,"09:00"), end: slotTimes(5,"17:00") }
97
- ]
98
- },
99
- // tzid: "America/Mexico_City",
100
- // tzid: "Asia/Katmandu",
101
- styles: {
102
- prefix: "SP1"
103
- },
104
- config: {
105
- logs: 'info'
106
- },
107
- // locale: 'keys',
108
- // translations: {
109
- // en: {
110
- // slot_picker: {
111
- // select_day: 'Override select_day'
112
- // }
113
- // }
114
- // },
115
- callback: slot => console.log('callback',slot),
116
- locale: locale
117
- // demo: true
118
- });
119
- }
120
-
121
- if (display.two) {
122
- const slotTimes = function(days, time) {
123
- const timeString = `${moment().utc().format("YYYY-MM-DD")}T${time}:00Z`;
124
- const output = moment(timeString)
125
- .add(days, "days");
126
- return output.utc().format();
127
- };
128
-
129
- CronofyElements.SlotPicker({
130
- element_token: "<%= slot_picker_token %>",
131
- target_id: 'cronofy-slot-picker-two',
132
- api_domain:"<%= api_domain %>",
133
- availability_query: {
134
- participants: [
135
- {
136
- required: "all",
137
- members: [
138
- { sub: "<%= sub %>" }
139
- ]
140
- }
141
- ],
142
- required_duration: { minutes: 30 },
143
- query_periods: [
144
- { start: slotTimes(1,"23:00"), end: slotTimes(2,"01:00") },
145
- { start: slotTimes(2,"23:00"), end: slotTimes(3,"01:00") }
146
- ]
147
- },
148
- config: {
149
- mode: 'no_confirm'
150
- },
151
- styles: {
152
- prefix: "SP2",
153
- padding: "20px"
154
- },
155
- callback: slot => console.log('callback',slot),
156
- locale: locale,
157
- locale_modifiers: {
158
- "ja": {"dates": "western"},
159
- }
160
- });
161
- }
162
-
163
- if (display.three) {
164
-
165
- const events = <%- JSON.stringify(bookable_event_ids) %>.map(event => ({
166
- bookable_event_id: event
167
- }));
168
-
169
- CronofyElements.SlotPicker({
170
- element_token: "<%= bookable_events_token %>",
171
- target_id: 'cronofy-slot-picker-bookable-events',
172
- api_domain:"<%= api_domain %>",
173
- availability_query: {
174
- "bookable_events": events
175
- // "bookable_events": [
176
- // {
177
- // "bookable_event_id": "UNKNOWN_ID"
178
- // }
179
- // ]
180
- // "bookable_events": []
181
- },
182
- config: {
183
- mode: 'no_confirm'
184
- },
185
- styles: {
186
- prefix: "SP3",
187
- },
188
- callback: slot => console.log('callback',slot),
189
- locale: locale,
190
- });
191
- }
192
-
193
- console.log('done.');
194
- </script>
195
-
196
- </body>
197
- </html>
package/git.README.md DELETED
@@ -1,71 +0,0 @@
1
- # Cronofy UI Elements
2
-
3
- A suite of embeddable components that access the Cronofy API.
4
-
5
- Full documentation can be found here: [docs.cronofy.com/developers/ui-elements](https://docs.cronofy.com/developers/ui-elements/)
6
-
7
- Information about installing via npm can be found here: [npm.README.md](./npm.README.md)
8
-
9
- ## Developer documentation
10
-
11
- To setup the development environment, run:
12
-
13
- make init
14
-
15
-
16
- You will need to ensure `/src/js/env.js` is updated with your local development settings. See `/src/js/env.example.js` for an example of this.
17
-
18
- To start development, run:
19
-
20
- make dev
21
-
22
- If using powprox for local API hosting (our default) you can set an environment variable to tell Node about a custom root CA in your `.bash_profile` or equivalent:
23
-
24
- export NODE_EXTRA_CA_CERTS="$HOME/.powprox/ssl/ca/pow-root-ca.crt"
25
-
26
- Alternatively, though not recommended, you can disable all TLS verification:
27
-
28
- NODE_TLS_REJECT_UNAUTHORIZED=0 make dev
29
-
30
- This will watch the source files and rebuild whenever you save changes. It will also host the demo app (`demo/index.ejs`) on port `8080`
31
-
32
- You can make a one-off development build (without watching the files or serving the demo) using:
33
-
34
- make build_dev
35
-
36
- You can make a production build with:
37
-
38
- make build
39
-
40
-
41
- To bump a patch version (e.g. from `0.0.1` to `0.0.2`) and make a production build, run:
42
-
43
- bump_patch
44
-
45
- To bump a minor version (e.g. from `0.1.0` to `0.2.0`) and make a production build, run:
46
-
47
- bump_minor
48
-
49
- To bump a major version (e.g. from `1.0.0` to `2.0.0`) and make a production build, run:
50
-
51
- bump_major
52
-
53
-
54
- ### Releasing
55
-
56
- > Since moving UI Elements into the monorepo, the npm update flow has been, shall we say, janky. This is because the npm tooling assumes it's always going to be in the root of whatever repo it lives in. These are the new steps needed to account for this jankiness:
57
-
58
- You find yourself in the UI Elements root folder (`cronofy/js/elements`) inside the monorepo. You have made changes, and your PR has been approved. You want to cut a new version before releasing changes...
59
-
60
- - Run `make bump_patch` (or `bump_minor` or `bump_major` depending on the type of change you've made)
61
- - That task no longer commits its changes automatically - it will have changed the version number in `package-lock.json` and `package.json` and the changes will be unstaged. Commit these changes ("version bump" or similar is fine for a commit-message).
62
- - You then need to run `git tag -a vTHE_NEW_VERSION -m "overview of changes"` (so if you've gone from v1.12.0 to v1.12.1, the tag version should look like `tag -a v1.12.1`) *For consistency, run the tag on the branch that contains the changes.*
63
- - Then `git push` and `git push --tags` (if you haven't pushed the tag, the deployment will fail)
64
- - Now you can merge your PR and ask someone to deploy the changes for you (make sure you tell them the number of the version you want to be released, e.g. `v1.12.1` - they'll need this to run the deployment). *Note: a UI Elements deployment is not the same thing as a normal app deployment - they are different steps, and need to be initiated independently.*
65
-
66
- ### Things that need to be published in order to call a UI Element change "done"
67
-
68
- - new build file added to S3 bucket (so that it shows up at this URL: `https://elements.cronofy.com/js/CronofyElements.vNEW_VERSION_NUMBER.js`)
69
- - publish changes to NPM (checkable here: [https://www.npmjs.com/package/cronofy-elements](https://www.npmjs.com/package/cronofy-elements))
70
- - Add changes to docs if user-facing API has changed
71
- - Update v# and changelog in the docs (only do this *after* the S3 URL is available)