@bigbinary/neeto-molecules 1.1.78 → 1.2.0-beta1

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 (370) hide show
  1. package/README.md +66 -52
  2. package/dist/Breadcrumbs.js +16 -19
  3. package/dist/Breadcrumbs.js.map +1 -1
  4. package/dist/BrowserSupport.js +41 -138
  5. package/dist/BrowserSupport.js.map +1 -1
  6. package/dist/Builder.js +207 -364
  7. package/dist/Builder.js.map +1 -1
  8. package/dist/CalendarView.js +40 -288
  9. package/dist/CalendarView.js.map +1 -1
  10. package/dist/Chevron-c64ff676.js +190 -0
  11. package/dist/Chevron-c64ff676.js.map +1 -0
  12. package/dist/Codeblock.js +26 -209
  13. package/dist/Codeblock.js.map +1 -1
  14. package/dist/Columns.js +16 -240
  15. package/dist/Columns.js.map +1 -1
  16. package/dist/ConfigurePageSidebar.js +97 -0
  17. package/dist/ConfigurePageSidebar.js.map +1 -0
  18. package/dist/ConfirmationModal.js +10 -10
  19. package/dist/ConfirmationModal.js.map +1 -1
  20. package/dist/Container.js +5 -1187
  21. package/dist/Container.js.map +1 -1
  22. package/dist/CopyToClipboardButton.js +26 -155
  23. package/dist/CopyToClipboardButton.js.map +1 -1
  24. package/dist/Currency.js +912 -0
  25. package/dist/Currency.js.map +1 -0
  26. package/dist/CustomDomain.js +37 -633
  27. package/dist/CustomDomain.js.map +1 -1
  28. package/dist/CustomDomainDashboard.js +69 -2192
  29. package/dist/CustomDomainDashboard.js.map +1 -1
  30. package/dist/DateFormat.js +6 -20
  31. package/dist/DateFormat.js.map +1 -1
  32. package/dist/DateRangeFilter.js +19 -75
  33. package/dist/DateRangeFilter.js.map +1 -1
  34. package/dist/DeleteArchiveModal.js +86 -0
  35. package/dist/DeleteArchiveModal.js.map +1 -0
  36. package/dist/DocumentEditor.js +43 -133
  37. package/dist/DocumentEditor.js.map +1 -1
  38. package/dist/DownloadMobileAppCallout.js +4 -4
  39. package/dist/DownloadMobileAppCallout.js.map +1 -1
  40. package/dist/DynamicVariables.js +12 -95
  41. package/dist/DynamicVariables.js.map +1 -1
  42. package/dist/EmailForm.js +79 -1741
  43. package/dist/EmailForm.js.map +1 -1
  44. package/dist/EmailPreview.js +32 -1213
  45. package/dist/EmailPreview.js.map +1 -1
  46. package/dist/EmojiPicker.js +67 -0
  47. package/dist/EmojiPicker.js.map +1 -0
  48. package/dist/EmojiReactions.js +69 -0
  49. package/dist/EmojiReactions.js.map +1 -0
  50. package/dist/ErrorPage.js +17 -26
  51. package/dist/ErrorPage.js.map +1 -1
  52. package/dist/FloatingActionMenu.js +646 -0
  53. package/dist/FloatingActionMenu.js.map +1 -0
  54. package/dist/Header.js +45 -117
  55. package/dist/Header.js.map +1 -1
  56. package/dist/HelpPopover.js +73 -0
  57. package/dist/HelpPopover.js.map +1 -0
  58. package/dist/IconPicker.js +36 -129
  59. package/dist/IconPicker.js.map +1 -1
  60. package/dist/ImageWithFallback.js +8 -144
  61. package/dist/ImageWithFallback.js.map +1 -1
  62. package/dist/InlineInput.js +22 -526
  63. package/dist/InlineInput.js.map +1 -1
  64. package/dist/Insights.js +304 -0
  65. package/dist/Insights.js.map +1 -0
  66. package/dist/IntegrationCard.js +42 -226
  67. package/dist/IntegrationCard.js.map +1 -1
  68. package/dist/IntegrationDisconnectAlert.js +6 -48
  69. package/dist/IntegrationDisconnectAlert.js.map +1 -1
  70. package/dist/IntegrationWalkthroughModal.js +10 -10
  71. package/dist/IntegrationWalkthroughModal.js.map +1 -1
  72. package/dist/IpRestriction.js +74 -221
  73. package/dist/IpRestriction.js.map +1 -1
  74. package/dist/KeyboardShortcuts.js +38 -128
  75. package/dist/KeyboardShortcuts.js.map +1 -1
  76. package/dist/LoginPage.js +39 -459
  77. package/dist/LoginPage.js.map +1 -1
  78. package/dist/MadeWith.js +32 -0
  79. package/dist/MadeWith.js.map +1 -0
  80. package/dist/MenuBar.js +34 -1295
  81. package/dist/MenuBar.js.map +1 -1
  82. package/dist/Metadata.js +65 -86
  83. package/dist/Metadata.js.map +1 -1
  84. package/dist/MoreDropdown.js +48 -107
  85. package/dist/MoreDropdown.js.map +1 -1
  86. package/dist/NavigationHeader.js +51 -730
  87. package/dist/NavigationHeader.js.map +1 -1
  88. package/dist/NeetoWidget.js +148 -316
  89. package/dist/NeetoWidget.js.map +1 -1
  90. package/dist/Onboarding.js +343 -0
  91. package/dist/Onboarding.js.map +1 -0
  92. package/dist/OptionFields.js +507 -0
  93. package/dist/OptionFields.js.map +1 -0
  94. package/dist/PageLoader.js +5 -48
  95. package/dist/PageLoader.js.map +1 -1
  96. package/dist/PhoneNumber.js +122 -201
  97. package/dist/PhoneNumber.js.map +1 -1
  98. package/dist/ProductEmbed.js +767 -0
  99. package/dist/ProductEmbed.js.map +1 -0
  100. package/dist/PublishBlock.js +19 -60
  101. package/dist/PublishBlock.js.map +1 -1
  102. package/dist/PublishYourItem.js +52 -0
  103. package/dist/PublishYourItem.js.map +1 -0
  104. package/dist/Rename.js +127 -394
  105. package/dist/Rename.js.map +1 -1
  106. package/dist/ResponsiveDevicePicker.js +7 -143
  107. package/dist/ResponsiveDevicePicker.js.map +1 -1
  108. package/dist/Schedule.js +131 -365
  109. package/dist/Schedule.js.map +1 -1
  110. package/dist/Scrollable.js +6 -89
  111. package/dist/Scrollable.js.map +1 -1
  112. package/dist/Search.js +54 -157
  113. package/dist/Search.js.map +1 -1
  114. package/dist/Security.js +72 -1567
  115. package/dist/Security.js.map +1 -1
  116. package/dist/SendToFields.js +51 -133
  117. package/dist/SendToFields.js.map +1 -1
  118. package/dist/Settings.js +141 -412
  119. package/dist/Settings.js.map +1 -1
  120. package/dist/ShareRecordingPane.js +189 -0
  121. package/dist/ShareRecordingPane.js.map +1 -0
  122. package/dist/ShareViaEmail.js +126 -551
  123. package/dist/ShareViaEmail.js.map +1 -1
  124. package/dist/ShareViaLink.js +127 -345
  125. package/dist/ShareViaLink.js.map +1 -1
  126. package/dist/Sidebar.js +161 -758
  127. package/dist/Sidebar.js.map +1 -1
  128. package/dist/SubHeader.js +63 -108
  129. package/dist/SubHeader.js.map +1 -1
  130. package/dist/SuffixedInput.js +105 -0
  131. package/dist/SuffixedInput.js.map +1 -0
  132. package/dist/TableWrapper.js +8 -9
  133. package/dist/TableWrapper.js.map +1 -1
  134. package/dist/Taxonomy.js +112 -1774
  135. package/dist/Taxonomy.js.map +1 -1
  136. package/dist/ThemeSidebar.js +159 -776
  137. package/dist/ThemeSidebar.js.map +1 -1
  138. package/dist/TimeFormat.js +8 -44
  139. package/dist/TimeFormat.js.map +1 -1
  140. package/dist/TimezoneMismatchModal.js +49 -84
  141. package/dist/TimezoneMismatchModal.js.map +1 -1
  142. package/dist/ToggleFeatureCard.js +46 -169
  143. package/dist/ToggleFeatureCard.js.map +1 -1
  144. package/dist/cjs/Breadcrumbs.js +49 -0
  145. package/dist/cjs/Breadcrumbs.js.map +1 -0
  146. package/dist/cjs/BrowserSupport.js +329 -0
  147. package/dist/cjs/BrowserSupport.js.map +1 -0
  148. package/dist/cjs/Builder.js +556 -0
  149. package/dist/cjs/Builder.js.map +1 -0
  150. package/dist/cjs/CalendarView.js +299 -0
  151. package/dist/cjs/CalendarView.js.map +1 -0
  152. package/dist/cjs/Chevron-8a4ed9cd.js +203 -0
  153. package/dist/cjs/Chevron-8a4ed9cd.js.map +1 -0
  154. package/dist/cjs/Codeblock.js +58 -0
  155. package/dist/cjs/Codeblock.js.map +1 -0
  156. package/dist/cjs/Columns.js +31 -0
  157. package/dist/cjs/Columns.js.map +1 -0
  158. package/dist/cjs/ConfigurePageSidebar.js +104 -0
  159. package/dist/cjs/ConfigurePageSidebar.js.map +1 -0
  160. package/dist/cjs/ConfirmationModal.js +120 -0
  161. package/dist/cjs/ConfirmationModal.js.map +1 -0
  162. package/dist/cjs/Container.js +36 -0
  163. package/dist/cjs/Container.js.map +1 -0
  164. package/dist/cjs/CopyToClipboardButton.js +86 -0
  165. package/dist/cjs/CopyToClipboardButton.js.map +1 -0
  166. package/dist/cjs/Currency.js +921 -0
  167. package/dist/cjs/Currency.js.map +1 -0
  168. package/dist/cjs/CustomDomain.js +125 -0
  169. package/dist/cjs/CustomDomain.js.map +1 -0
  170. package/dist/cjs/CustomDomainDashboard.js +200 -0
  171. package/dist/cjs/CustomDomainDashboard.js.map +1 -0
  172. package/dist/cjs/DateFormat.js +40 -0
  173. package/dist/cjs/DateFormat.js.map +1 -0
  174. package/dist/cjs/DateRangeFilter.js +180 -0
  175. package/dist/cjs/DateRangeFilter.js.map +1 -0
  176. package/dist/cjs/DeleteArchiveModal.js +92 -0
  177. package/dist/cjs/DeleteArchiveModal.js.map +1 -0
  178. package/dist/cjs/DocumentEditor.js +194 -0
  179. package/dist/cjs/DocumentEditor.js.map +1 -0
  180. package/dist/cjs/DownloadMobileAppCallout.js +45 -0
  181. package/dist/cjs/DownloadMobileAppCallout.js.map +1 -0
  182. package/dist/cjs/DynamicVariables.js +106 -0
  183. package/dist/cjs/DynamicVariables.js.map +1 -0
  184. package/dist/cjs/EmailForm.js +395 -0
  185. package/dist/cjs/EmailForm.js.map +1 -0
  186. package/dist/cjs/EmailPreview.js +139 -0
  187. package/dist/cjs/EmailPreview.js.map +1 -0
  188. package/dist/cjs/EmojiPicker.js +75 -0
  189. package/dist/cjs/EmojiPicker.js.map +1 -0
  190. package/dist/cjs/EmojiReactions.js +76 -0
  191. package/dist/cjs/EmojiReactions.js.map +1 -0
  192. package/dist/cjs/ErrorPage.js +179 -0
  193. package/dist/cjs/ErrorPage.js.map +1 -0
  194. package/dist/cjs/FloatingActionMenu.js +675 -0
  195. package/dist/cjs/FloatingActionMenu.js.map +1 -0
  196. package/dist/cjs/Header.js +104 -0
  197. package/dist/cjs/Header.js.map +1 -0
  198. package/dist/cjs/HelpPopover.js +80 -0
  199. package/dist/cjs/HelpPopover.js.map +1 -0
  200. package/dist/cjs/IconPicker.js +228 -0
  201. package/dist/cjs/IconPicker.js.map +1 -0
  202. package/dist/cjs/ImageWithFallback.js +52 -0
  203. package/dist/cjs/ImageWithFallback.js.map +1 -0
  204. package/dist/cjs/InlineInput.js +233 -0
  205. package/dist/cjs/InlineInput.js.map +1 -0
  206. package/dist/cjs/Insights.js +310 -0
  207. package/dist/cjs/Insights.js.map +1 -0
  208. package/dist/cjs/IntegrationCard.js +208 -0
  209. package/dist/cjs/IntegrationCard.js.map +1 -0
  210. package/dist/cjs/IntegrationDisconnectAlert.js +48 -0
  211. package/dist/cjs/IntegrationDisconnectAlert.js.map +1 -0
  212. package/dist/cjs/IntegrationWalkthroughModal.js +51 -0
  213. package/dist/cjs/IntegrationWalkthroughModal.js.map +1 -0
  214. package/dist/cjs/IpRestriction.js +525 -0
  215. package/dist/cjs/IpRestriction.js.map +1 -0
  216. package/dist/cjs/KeyboardShortcuts.js +282 -0
  217. package/dist/cjs/KeyboardShortcuts.js.map +1 -0
  218. package/dist/cjs/LoginPage.js +198 -0
  219. package/dist/cjs/LoginPage.js.map +1 -0
  220. package/dist/cjs/MadeWith.js +38 -0
  221. package/dist/cjs/MadeWith.js.map +1 -0
  222. package/dist/cjs/MenuBar.js +208 -0
  223. package/dist/cjs/MenuBar.js.map +1 -0
  224. package/dist/cjs/Metadata.js +195 -0
  225. package/dist/cjs/Metadata.js.map +1 -0
  226. package/dist/cjs/MoreDropdown.js +152 -0
  227. package/dist/cjs/MoreDropdown.js.map +1 -0
  228. package/dist/cjs/NavigationHeader.js +177 -0
  229. package/dist/cjs/NavigationHeader.js.map +1 -0
  230. package/dist/cjs/NeetoWidget.js +912 -0
  231. package/dist/cjs/NeetoWidget.js.map +1 -0
  232. package/dist/cjs/Onboarding.js +357 -0
  233. package/dist/cjs/Onboarding.js.map +1 -0
  234. package/dist/cjs/OptionFields.js +514 -0
  235. package/dist/cjs/OptionFields.js.map +1 -0
  236. package/dist/cjs/PageLoader.js +116 -0
  237. package/dist/cjs/PageLoader.js.map +1 -0
  238. package/dist/cjs/PhoneNumber.js +363 -0
  239. package/dist/cjs/PhoneNumber.js.map +1 -0
  240. package/dist/cjs/ProductEmbed.js +774 -0
  241. package/dist/cjs/ProductEmbed.js.map +1 -0
  242. package/dist/cjs/PublishBlock.js +125 -0
  243. package/dist/cjs/PublishBlock.js.map +1 -0
  244. package/dist/cjs/PublishYourItem.js +59 -0
  245. package/dist/cjs/PublishYourItem.js.map +1 -0
  246. package/dist/cjs/Rename.js +350 -0
  247. package/dist/cjs/Rename.js.map +1 -0
  248. package/dist/cjs/ResponsiveDevicePicker.js +64 -0
  249. package/dist/cjs/ResponsiveDevicePicker.js.map +1 -0
  250. package/dist/cjs/Schedule.js +889 -0
  251. package/dist/cjs/Schedule.js.map +1 -0
  252. package/dist/cjs/Scrollable.js +46 -0
  253. package/dist/cjs/Scrollable.js.map +1 -0
  254. package/dist/cjs/Search.js +117 -0
  255. package/dist/cjs/Search.js.map +1 -0
  256. package/dist/cjs/Security.js +376 -0
  257. package/dist/cjs/Security.js.map +1 -0
  258. package/dist/cjs/SendToFields.js +272 -0
  259. package/dist/cjs/SendToFields.js.map +1 -0
  260. package/dist/cjs/Settings.js +214 -0
  261. package/dist/cjs/Settings.js.map +1 -0
  262. package/dist/cjs/ShareRecordingPane.js +195 -0
  263. package/dist/cjs/ShareRecordingPane.js.map +1 -0
  264. package/dist/cjs/ShareViaEmail.js +348 -0
  265. package/dist/cjs/ShareViaEmail.js.map +1 -0
  266. package/dist/cjs/ShareViaLink.js +507 -0
  267. package/dist/cjs/ShareViaLink.js.map +1 -0
  268. package/dist/cjs/Sidebar.js +288 -0
  269. package/dist/cjs/Sidebar.js.map +1 -0
  270. package/dist/cjs/SubHeader.js +178 -0
  271. package/dist/cjs/SubHeader.js.map +1 -0
  272. package/dist/cjs/SuffixedInput.js +111 -0
  273. package/dist/cjs/SuffixedInput.js.map +1 -0
  274. package/dist/cjs/TableWrapper.js +32 -0
  275. package/dist/cjs/TableWrapper.js.map +1 -0
  276. package/dist/cjs/Taxonomy.js +442 -0
  277. package/dist/cjs/Taxonomy.js.map +1 -0
  278. package/dist/cjs/ThemeSidebar.js +1436 -0
  279. package/dist/cjs/ThemeSidebar.js.map +1 -0
  280. package/dist/cjs/TimeFormat.js +15 -0
  281. package/dist/cjs/TimeFormat.js.map +1 -0
  282. package/dist/cjs/TimezoneMismatchModal.js +143 -0
  283. package/dist/cjs/TimezoneMismatchModal.js.map +1 -0
  284. package/dist/cjs/ToggleFeatureCard.js +209 -0
  285. package/dist/cjs/ToggleFeatureCard.js.map +1 -0
  286. package/dist/cjs/defineProperty-886ed289.js +47 -0
  287. package/dist/cjs/defineProperty-886ed289.js.map +1 -0
  288. package/dist/cjs/extends-1b35a664.js +19 -0
  289. package/dist/cjs/extends-1b35a664.js.map +1 -0
  290. package/dist/cjs/index-00fdb8c2.js +542 -0
  291. package/dist/cjs/index-00fdb8c2.js.map +1 -0
  292. package/dist/cjs/index-248c4f4c.js +1186 -0
  293. package/dist/cjs/index-248c4f4c.js.map +1 -0
  294. package/dist/cjs/index-c55ad2bc.js +375 -0
  295. package/dist/cjs/index-c55ad2bc.js.map +1 -0
  296. package/dist/cjs/inject-css-80a5faa3.js +6 -0
  297. package/dist/cjs/inject-css-80a5faa3.js.map +1 -0
  298. package/dist/cjs/objectWithoutProperties-2fed2d7d.js +33 -0
  299. package/dist/cjs/objectWithoutProperties-2fed2d7d.js.map +1 -0
  300. package/dist/cjs/slicedToArray-f320d9e7.js +61 -0
  301. package/dist/cjs/slicedToArray-f320d9e7.js.map +1 -0
  302. package/dist/cjs/toConsumableArray-9abb3858.js +22 -0
  303. package/dist/cjs/toConsumableArray-9abb3858.js.map +1 -0
  304. package/dist/cjs/useColumns-a1c3668f.js +271 -0
  305. package/dist/cjs/useColumns-a1c3668f.js.map +1 -0
  306. package/dist/defineProperty-549061a7.js +43 -0
  307. package/dist/defineProperty-549061a7.js.map +1 -0
  308. package/dist/extends-093996c9.js +17 -0
  309. package/dist/extends-093996c9.js.map +1 -0
  310. package/dist/index-90c89467.js +509 -0
  311. package/dist/index-90c89467.js.map +1 -0
  312. package/dist/index-9720867c.js +372 -0
  313. package/dist/index-9720867c.js.map +1 -0
  314. package/dist/index-e5588516.js +1184 -0
  315. package/dist/index-e5588516.js.map +1 -0
  316. package/dist/inject-css-c86de496.js +4 -0
  317. package/dist/inject-css-c86de496.js.map +1 -0
  318. package/dist/objectWithoutProperties-a0edb288.js +31 -0
  319. package/dist/objectWithoutProperties-a0edb288.js.map +1 -0
  320. package/dist/slicedToArray-b4278ecd.js +57 -0
  321. package/dist/slicedToArray-b4278ecd.js.map +1 -0
  322. package/dist/toConsumableArray-1cc38429.js +20 -0
  323. package/dist/toConsumableArray-1cc38429.js.map +1 -0
  324. package/dist/useColumns-d17d1f72.js +258 -0
  325. package/dist/useColumns-d17d1f72.js.map +1 -0
  326. package/package.json +29 -17
  327. package/src/translations/de.json +7 -0
  328. package/src/translations/en.json +191 -31
  329. package/src/translations/es.json +7 -0
  330. package/src/translations/fr.json +7 -0
  331. package/src/translations/nl.json +7 -0
  332. package/src/translations/pl.json +7 -0
  333. package/src/translations/pt.json +7 -0
  334. package/types/Breadcrumbs.d.ts +1 -0
  335. package/types/Builder.d.ts +61 -12
  336. package/types/Columns.d.ts +112 -5
  337. package/types/ConfigurePageSidebar.d.ts +43 -0
  338. package/types/CopyToClipboardButton.d.ts +3 -0
  339. package/types/Currency.d.ts +48 -0
  340. package/types/CustomDomain.d.ts +2 -0
  341. package/types/CustomDomainDashboard.d.ts +14 -0
  342. package/types/DateRangeFilter.d.ts +2 -0
  343. package/types/DeleteArchiveModal.d.ts +60 -0
  344. package/types/EmailForm.d.ts +1 -1
  345. package/types/EmojiPicker.d.ts +33 -0
  346. package/types/EmojiReactions.d.ts +60 -0
  347. package/types/ErrorPage.d.ts +1 -0
  348. package/types/FloatingActionMenu.d.ts +56 -0
  349. package/types/Header.d.ts +2 -1
  350. package/types/HelpPopover.d.ts +42 -0
  351. package/types/Insights.d.ts +108 -0
  352. package/types/IntegrationCard.d.ts +2 -0
  353. package/types/KeyboardShortcuts.d.ts +2 -2
  354. package/types/MadeWith.d.ts +16 -0
  355. package/types/MoreDropdown.d.ts +4 -1
  356. package/types/NavigationHeader.d.ts +3 -1
  357. package/types/Onboarding.d.ts +63 -0
  358. package/types/OptionFields.d.ts +63 -0
  359. package/types/PhoneNumber.d.ts +6 -2
  360. package/types/ProductEmbed.d.ts +43 -0
  361. package/types/Rename.d.ts +4 -1
  362. package/types/Schedule.d.ts +2 -0
  363. package/types/Search.d.ts +2 -0
  364. package/types/Settings.d.ts +13 -10
  365. package/types/ShareRecordingPane.d.ts +50 -0
  366. package/types/ShareViaLink.d.ts +15 -4
  367. package/types/Sidebar.d.ts +16 -32
  368. package/types/SubHeader.d.ts +0 -1
  369. package/types/SuffixedInput.d.ts +43 -0
  370. package/types/ToggleFeatureCard.d.ts +8 -1
@@ -0,0 +1,889 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var formik = require('formik');
5
+ var neetoCist = require('@bigbinary/neeto-cist');
6
+ var ramda = require('ramda');
7
+ var withT = require('@bigbinary/neeto-commons-frontend/react-utils/withT');
8
+ var general = require('@bigbinary/neeto-commons-frontend/utils/general');
9
+ var neetoui = require('@bigbinary/neetoui');
10
+ var slicedToArray = require('./slicedToArray-f320d9e7.js');
11
+ var neetoTimeZones = require('@bigbinary/neeto-time-zones');
12
+ var dayjs = require('dayjs');
13
+ var i18next = require('i18next');
14
+ var datetime = require('@bigbinary/neeto-commons-frontend/utils/datetime');
15
+ var yup = require('yup');
16
+ var customParseFormat = require('dayjs/plugin/customParseFormat');
17
+ var timezone = require('dayjs/plugin/timezone');
18
+ var utc = require('dayjs/plugin/utc');
19
+ var weekday = require('dayjs/plugin/weekday');
20
+ var defineProperty = require('./defineProperty-886ed289.js');
21
+ var classnames = require('classnames');
22
+ var neetoIcons = require('@bigbinary/neeto-icons');
23
+ var formik$1 = require('@bigbinary/neetoui/formik');
24
+ var reactI18next = require('react-i18next');
25
+ var toConsumableArray = require('./toConsumableArray-9abb3858.js');
26
+ var neetoTeamMembersFrontend = require('@bigbinary/neeto-team-members-frontend');
27
+ var MoreDropdown = require('./MoreDropdown.js');
28
+ var injectCss = require('./inject-css-80a5faa3.js');
29
+ require('./extends-1b35a664.js');
30
+ require('./objectWithoutProperties-2fed2d7d.js');
31
+
32
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
33
+
34
+ function _interopNamespace(e) {
35
+ if (e && e.__esModule) return e;
36
+ var n = Object.create(null);
37
+ if (e) {
38
+ Object.keys(e).forEach(function (k) {
39
+ if (k !== 'default') {
40
+ var d = Object.getOwnPropertyDescriptor(e, k);
41
+ Object.defineProperty(n, k, d.get ? d : {
42
+ enumerable: true,
43
+ get: function () { return e[k]; }
44
+ });
45
+ }
46
+ });
47
+ }
48
+ n["default"] = e;
49
+ return Object.freeze(n);
50
+ }
51
+
52
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
53
+ var withT__default = /*#__PURE__*/_interopDefaultLegacy(withT);
54
+ var dayjs__default = /*#__PURE__*/_interopDefaultLegacy(dayjs);
55
+ var i18next__default = /*#__PURE__*/_interopDefaultLegacy(i18next);
56
+ var yup__namespace = /*#__PURE__*/_interopNamespace(yup);
57
+ var customParseFormat__default = /*#__PURE__*/_interopDefaultLegacy(customParseFormat);
58
+ var timezone__default = /*#__PURE__*/_interopDefaultLegacy(timezone);
59
+ var utc__default = /*#__PURE__*/_interopDefaultLegacy(utc);
60
+ var weekday__default = /*#__PURE__*/_interopDefaultLegacy(weekday);
61
+ var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
62
+
63
+ var DAYS = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"];
64
+ var DEFAULT_SLOT_INTERVAL = 30;
65
+
66
+ function _classCallCheck(instance, Constructor) {
67
+ if (!(instance instanceof Constructor)) {
68
+ throw new TypeError("Cannot call a class as a function");
69
+ }
70
+ }
71
+
72
+ function _defineProperties(target, props) {
73
+ for (var i = 0; i < props.length; i++) {
74
+ var descriptor = props[i];
75
+ descriptor.enumerable = descriptor.enumerable || false;
76
+ descriptor.configurable = true;
77
+ if ("value" in descriptor) descriptor.writable = true;
78
+ Object.defineProperty(target, defineProperty._toPropertyKey(descriptor.key), descriptor);
79
+ }
80
+ }
81
+ function _createClass(Constructor, protoProps, staticProps) {
82
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
83
+ if (staticProps) _defineProperties(Constructor, staticProps);
84
+ Object.defineProperty(Constructor, "prototype", {
85
+ writable: false
86
+ });
87
+ return Constructor;
88
+ }
89
+
90
+ var INTERVALS = ["year", "quarter", "month", "week", "day", "hour", "minute", "second"];
91
+
92
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
93
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { defineProperty._defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
94
+ var REMOVE_SELECT_DOWN_ARROW = {
95
+ DropdownIndicator: function DropdownIndicator() {
96
+ return null;
97
+ },
98
+ IndicatorSeparator: function IndicatorSeparator() {
99
+ return null;
100
+ }
101
+ };
102
+ var BLUR_TEXT_WHEN_SELECT_MENU_IS_OPEN = {
103
+ singleValue: function singleValue(base, state) {
104
+ return _objectSpread(_objectSpread({}, base), {}, {
105
+ color: state.selectProps.menuIsOpen ? "#c2c8cc" : base.color
106
+ });
107
+ }
108
+ };
109
+ var SLOT_TIME_FORMAT = "hh:mm A";
110
+ var END_OF_DAY = "11:59 PM";
111
+
112
+ var DayjsRange = /*#__PURE__*/function () {
113
+ function DayjsRange(startDate, endDate) {
114
+ _classCallCheck(this, DayjsRange);
115
+ var _ref = startDate > endDate ? {
116
+ s: endDate,
117
+ e: startDate
118
+ } : {
119
+ s: startDate,
120
+ e: endDate
121
+ },
122
+ s = _ref.s,
123
+ e = _ref.e;
124
+ this.startDate = s;
125
+ this.endDate = e;
126
+ }
127
+ _createClass(DayjsRange, [{
128
+ key: "isValidRange",
129
+ value: function isValidRange() {
130
+ return this.startDate.isValid() && this.endDate.isValid();
131
+ }
132
+ }, {
133
+ key: "isOverlap",
134
+ value: function isOverlap(other) {
135
+ if (!(other instanceof DayjsRange) || !other.isValidRange()) {
136
+ return false;
137
+ }
138
+ return this.startDate < other.endDate && this.endDate > other.startDate;
139
+ }
140
+ }, {
141
+ key: "toArrayOfTimeIntervals",
142
+ value: function toArrayOfTimeIntervals() {
143
+ var interval = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 15;
144
+ var startTime = this.startDate;
145
+ var endTime = this.endDate.add(1, "days");
146
+ var allTimes = [];
147
+ while (startTime < endTime) {
148
+ allTimes.push(startTime.format(SLOT_TIME_FORMAT));
149
+ startTime = startTime.add(interval, "minutes");
150
+ }
151
+ return allTimes;
152
+ }
153
+ }]);
154
+ return DayjsRange;
155
+ }();
156
+ function extendDayjs(dayjs) {
157
+ dayjs.range = function range(start, end) {
158
+ var dayjsObject = this;
159
+ if (typeof start === "string" && INTERVALS.includes(start)) {
160
+ return new DayjsRange(dayjs(dayjsObject).startOf(start), dayjs(dayjsObject).endOf(start));
161
+ }
162
+ return new DayjsRange(start, end);
163
+ };
164
+ dayjs.range.constructor = DayjsRange;
165
+
166
+ // Returns timeIntervals in 12 hour clock format for the whole day with both AM or PM suffixed
167
+ dayjs.timeIntervalsForDay = function (interval) {
168
+ var _ref2 = [dayjs("00:00 AM", SLOT_TIME_FORMAT), dayjs("00:00 AM", SLOT_TIME_FORMAT)],
169
+ startOfDay = _ref2[0],
170
+ endOfDay = _ref2[1];
171
+ var allIntervalsForADay = dayjs.range(startOfDay, endOfDay).toArrayOfTimeIntervals(interval);
172
+ return allIntervalsForADay;
173
+ };
174
+ return dayjs;
175
+ }
176
+
177
+ dayjs__default["default"].extend(utc__default["default"]);
178
+ dayjs__default["default"].extend(timezone__default["default"]);
179
+ dayjs__default["default"].extend(customParseFormat__default["default"]);
180
+ dayjs__default["default"].extend(weekday__default["default"]);
181
+
182
+ // Add range and overlap functions to dayjs
183
+ var dayjsExtended = extendDayjs(dayjs__default["default"]);
184
+
185
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
186
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
187
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
188
+ yup__namespace.addMethod(yup__namespace.array, "ensureSlotsCantOverlap", function () {
189
+ return this.test("ensureSlotsCantOverlap", function (periods) {
190
+ var _checkForOverlapBetwe = checkForOverlapBetweenPeriods(periods),
191
+ isOverlapping = _checkForOverlapBetwe.exists,
192
+ range1 = _checkForOverlapBetwe.range1,
193
+ range2 = _checkForOverlapBetwe.range2;
194
+ if (!isOverlapping) return true;
195
+ var _findIndicesOfOverlap = findIndicesOfOverlappingRangesInPeriods({
196
+ range1: range1,
197
+ range2: range2,
198
+ periods: periods
199
+ }),
200
+ firstIndex = _findIndicesOfOverlap.firstIndex,
201
+ secondIndex = _findIndicesOfOverlap.secondIndex;
202
+ var firstError = this.createError({
203
+ path: "".concat(this.path, "[").concat(firstIndex, "]"),
204
+ message: i18next__default["default"].t("neetoMolecules.schedule.errors.period.overlap", {
205
+ start: datetime.timeFormat.time(range2.startDate),
206
+ end: datetime.timeFormat.time(range2.endDate)
207
+ })
208
+ });
209
+ var secondError = this.createError({
210
+ path: "".concat(this.path, "[").concat(secondIndex, "]"),
211
+ message: i18next__default["default"].t("neetoMolecules.schedule.errors.period.overlap", {
212
+ start: datetime.timeFormat.time(range1.startDate),
213
+ end: datetime.timeFormat.time(range1.endDate)
214
+ })
215
+ });
216
+ return new yup__namespace.ValidationError([firstError, secondError]);
217
+ });
218
+ });
219
+ var isFromAndToSame = function isFromAndToSame(startTime, endTime) {
220
+ if (!startTime || !endTime) return true;
221
+ return dayjs__default["default"](startTime, SLOT_TIME_FORMAT).isSame(dayjs__default["default"](endTime, SLOT_TIME_FORMAT));
222
+ };
223
+ var getScheduleValidationSchema = function getScheduleValidationSchema() {
224
+ return yup__namespace.object().shape({
225
+ wdays: yup__namespace.array().of(yup__namespace.object().shape({
226
+ periods: yup__namespace.array().of(yup__namespace.object().shape({
227
+ startTime: yup__namespace.string().required(i18next__default["default"].t("neetoMolecules.schedule.errors.period.startTime")),
228
+ endTime: yup__namespace.string().required(i18next__default["default"].t("neetoMolecules.schedule.errors.period.endTime")).test("ensureToTimeNotBehindFromTime", i18next__default["default"].t("neetoMolecules.schedule.errors.period.isBehind"), function (value) {
229
+ var startTime = this.parent.startTime;
230
+ if (isFromAndToSame(value, startTime)) return true;
231
+ return isTimeBehind(startTime, value);
232
+ })
233
+ }).test("ensureTimeNotSame", i18next__default["default"].t("neetoMolecules.schedule.errors.period.sameTime"), function (value) {
234
+ var startTime = value.startTime,
235
+ endTime = value.endTime;
236
+ return !isFromAndToSame(startTime, endTime);
237
+ })).ensureSlotsCantOverlap()
238
+ }))
239
+ });
240
+ };
241
+ var getUserTimeZone = function getUserTimeZone() {
242
+ var _window$globalProps;
243
+ return (_window$globalProps = window.globalProps) === null || _window$globalProps === void 0 ? void 0 : _window$globalProps.user.timeZone;
244
+ };
245
+ var getTimeZoneAndTime = function getTimeZoneAndTime() {
246
+ var timeZone = getUserTimeZone();
247
+ var humanReadableTimezone = neetoTimeZones.ianaTimezoneToHumanReadable(timeZone);
248
+
249
+ // Requires timezone initialization
250
+ // eslint-disable-next-line @bigbinary/neeto/use-standard-date-time-formats
251
+ return "".concat(humanReadableTimezone, ": ").concat(dayjs__default["default"]().tz(timeZone).format(SLOT_TIME_FORMAT));
252
+ };
253
+ var isTimeBehind = function isTimeBehind(timeA, timeB) {
254
+ return dayjs__default["default"](timeA, SLOT_TIME_FORMAT).isBefore(dayjs__default["default"](timeB, SLOT_TIME_FORMAT));
255
+ };
256
+ var sortPeriodsByKey = function sortPeriodsByKey(_ref) {
257
+ var periods = _ref.periods,
258
+ key = _ref.key,
259
+ _ref$order = _ref.order,
260
+ order = _ref$order === void 0 ? "desc" : _ref$order;
261
+ return periods.slice().sort(function (periodA, periodB) {
262
+ var isPeriodBehind = isTimeBehind(periodA[key], periodB[key]);
263
+ if (order === "desc") return isPeriodBehind ? 1 : -1;
264
+ return isPeriodBehind ? -1 : 1;
265
+ });
266
+ };
267
+
268
+ /**
269
+ * Check for overlapping between entered periods
270
+ * @typedef {Object} Slots
271
+ * @property {Array<{startTime:string, endTime: string}>} periods - startTime and endTime
272
+ * @param {Slots} periods - changed time periods
273
+ * @return {{exists: boolean, range1: DayjsRange | null, range2:DayjsRange | null }} - overlapped ranges if exists
274
+ */
275
+ var checkForOverlapBetweenPeriods = function checkForOverlapBetweenPeriods(periods) {
276
+ var response = {
277
+ exists: false,
278
+ range1: null,
279
+ range2: null
280
+ };
281
+ if (!(periods !== null && periods !== void 0 && periods.length)) return response;
282
+ var slotsSortedByStartTime = sortPeriodsByKey({
283
+ periods: periods,
284
+ key: "startTime"
285
+ });
286
+ var _iterator = _createForOfIteratorHelper(slotsSortedByStartTime.slice(0, -1).entries()),
287
+ _step;
288
+ try {
289
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
290
+ var _step$value = slicedToArray._slicedToArray(_step.value, 2),
291
+ index = _step$value[0],
292
+ value = _step$value[1];
293
+ var seg1 = value;
294
+ var seg2 = slotsSortedByStartTime[index + 1];
295
+ var range1 = dayjsExtended.range(dayjsExtended(seg1.startTime, SLOT_TIME_FORMAT), dayjsExtended(seg1.endTime, SLOT_TIME_FORMAT));
296
+ var range2 = dayjsExtended.range(dayjsExtended(seg2.startTime, SLOT_TIME_FORMAT), dayjsExtended(seg2.endTime, SLOT_TIME_FORMAT));
297
+ if (range1.isOverlap(range2)) {
298
+ response = {
299
+ exists: true,
300
+ range1: range1,
301
+ range2: range2
302
+ };
303
+ break;
304
+ }
305
+ }
306
+ } catch (err) {
307
+ _iterator.e(err);
308
+ } finally {
309
+ _iterator.f();
310
+ }
311
+ return response;
312
+ };
313
+ var findIndicesOfOverlappingRangesInPeriods = function findIndicesOfOverlappingRangesInPeriods(_ref2) {
314
+ var range1 = _ref2.range1,
315
+ range2 = _ref2.range2,
316
+ periods = _ref2.periods;
317
+ var firstIndex = neetoCist.findIndexBy({
318
+ startTime: range1.startDate.format(SLOT_TIME_FORMAT)
319
+ }, periods);
320
+ var secondIndex = periods.findIndex(function (slot, index) {
321
+ return index > firstIndex && slot.startTime === range2.startDate.format(SLOT_TIME_FORMAT);
322
+ });
323
+ return {
324
+ firstIndex: firstIndex,
325
+ secondIndex: secondIndex
326
+ };
327
+ };
328
+
329
+ var DisplayAvailability = withT__default["default"](function (_ref) {
330
+ var t = _ref.t,
331
+ periods = _ref.periods;
332
+ return /*#__PURE__*/React__default["default"].createElement("div", {
333
+ className: "w-full space-y-4"
334
+ }, DAYS.map(function (day) {
335
+ var _sortPeriodsByKey;
336
+ return /*#__PURE__*/React__default["default"].createElement("div", {
337
+ className: "neeto-ui-rounded-md neeto-ui-shadow-s neeto-ui-border-gray-300 flex w-full flex-wrap items-center justify-center gap-2 border px-6 py-4 sm:items-start sm:justify-start",
338
+ key: day
339
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
340
+ className: "mt-0.5 w-24 text-center sm:w-1/4 sm:text-left",
341
+ "data-cy": general.joinHyphenCase(day, "day-text"),
342
+ style: "h5",
343
+ weight: "semibold"
344
+ }, t("neetoMolecules.schedule.days.".concat(day))), /*#__PURE__*/React__default["default"].createElement("div", {
345
+ className: "flex flex-grow flex-col items-center space-y-4 sm:w-1/2"
346
+ }, neetoCist.isPresent(periods[day]) ? (_sortPeriodsByKey = sortPeriodsByKey({
347
+ periods: periods[day],
348
+ key: "startTime",
349
+ order: "asc"
350
+ })) === null || _sortPeriodsByKey === void 0 ? void 0 : _sortPeriodsByKey.map(function (period) {
351
+ return /*#__PURE__*/React__default["default"].createElement("div", {
352
+ className: "flex items-center space-x-4",
353
+ key: period.id
354
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
355
+ className: "w-20 text-right",
356
+ lineHeight: "relaxed",
357
+ style: "h5",
358
+ weight: "semibold",
359
+ "data-cy": general.joinHyphenCase(day, period.startTime, "start-time-text")
360
+ }, period.startTime), /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
361
+ className: "neeto-ui-text-gray-600",
362
+ component: "span"
363
+ }, "-"), /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
364
+ className: "w-20 text-left",
365
+ lineHeight: "relaxed",
366
+ style: "h5",
367
+ weight: "semibold",
368
+ "data-cy": general.joinHyphenCase(day, period.endTime, "start-time-text")
369
+ }, period.endTime));
370
+ }) : /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
371
+ className: "mx-8 flex-grow text-center",
372
+ "data-cy": general.joinHyphenCase(day, "unavailable-time-text"),
373
+ lineHeight: "relaxed",
374
+ style: "h5"
375
+ }, t("neetoMolecules.schedule.unavailable"))));
376
+ }));
377
+ });
378
+
379
+ var buildSlotIntervals = function buildSlotIntervals(_ref) {
380
+ var interval = _ref.interval,
381
+ bookedSlots = _ref.bookedSlots,
382
+ slotType = _ref.slotType,
383
+ _ref$selectedValue = _ref.selectedValue,
384
+ selectedValue = _ref$selectedValue === void 0 ? null : _ref$selectedValue;
385
+ var selectedOption = {
386
+ label: selectedValue,
387
+ value: selectedValue
388
+ };
389
+ var allIntervalsForADay = dayjsExtended.timeIntervalsForDay(interval);
390
+ allIntervalsForADay.push(END_OF_DAY);
391
+ var uniqBookedSlots = ramda.uniq(ramda.pluck(slotType, bookedSlots));
392
+ var slotsAvailableForBooking = ramda.difference(allIntervalsForADay, uniqBookedSlots);
393
+ var slots = slotsAvailableForBooking.map(neetoCist.toLabelAndValue);
394
+ return selectedValue ? sortSlots([selectedOption].concat(toConsumableArray._toConsumableArray(slots))) : slots;
395
+ };
396
+ var sortSlots = function sortSlots(slots) {
397
+ return slots.sort(function (a, b) {
398
+ return isTimeBehind(a["value"], b["value"]) ? -1 : 1;
399
+ });
400
+ };
401
+ var slotsSelectComponentDefaultValue = function slotsSelectComponentDefaultValue(slot) {
402
+ return slot ? neetoCist.toLabelAndValue(slot) : "";
403
+ };
404
+ var padZeroes = function padZeroes(str) {
405
+ return str.length % 2 === 0 ? str : "0".concat(str);
406
+ };
407
+ var customFilter = function customFilter(option, searchTerm) {
408
+ if (neetoCist.isNotPresent(searchTerm)) return true;
409
+ var doesNumberMatches = option.value.replace(":", "").startsWith(padZeroes(searchTerm.replaceAll(/\D+/gi, "")));
410
+ var doesAmPmMatches = option.value.includes(searchTerm.toUpperCase().replaceAll(/[^a-z]/gi, ""));
411
+ return doesNumberMatches && doesAmPmMatches;
412
+ };
413
+ var roundToNearestHour = function roundToNearestHour(time) {
414
+ var minutes = time.minute();
415
+ if (minutes === 59) return time.startOf("hour").add(1, "hour");
416
+ return time.add(1, "hour");
417
+ };
418
+ var generateNewPeriod = function generateNewPeriod(periods, wday) {
419
+ var lastEndTime = periods[periods.length - 1].endTime;
420
+ var newStartTime = roundToNearestHour(dayjsExtended(lastEndTime, SLOT_TIME_FORMAT));
421
+ var newEndTime = dayjsExtended(newStartTime, SLOT_TIME_FORMAT).add(1, "hour");
422
+ return {
423
+ startTime: dayjsExtended(newStartTime).format(SLOT_TIME_FORMAT),
424
+ endTime: dayjsExtended(newEndTime).format(SLOT_TIME_FORMAT),
425
+ wday: wday
426
+ };
427
+ };
428
+ var addDefaultPeriod = function addDefaultPeriod(wday) {
429
+ return {
430
+ wday: wday,
431
+ startTime: "09:00 AM",
432
+ endTime: "05:00 PM"
433
+ };
434
+ };
435
+
436
+ // To avoid prop drilling `allowAddPeriod` to `ScheduleRow` component
437
+ // eslint-disable-next-line @bigbinary/neeto/use-zustand-for-global-state-management
438
+ var ScheduleContext = /*#__PURE__*/React.createContext({
439
+ allowAddPeriod: true
440
+ });
441
+
442
+ var ScheduleRow = function ScheduleRow(_ref) {
443
+ var values = _ref.values,
444
+ setFieldValue = _ref.setFieldValue,
445
+ wdayIndex = _ref.wdayIndex,
446
+ day = _ref.day;
447
+ var _useTranslation = reactI18next.useTranslation(),
448
+ t = _useTranslation.t;
449
+ var handleAddRow = function handleAddRow(arrayHelpers) {
450
+ if (neetoCist.isNotPresent(values.wdays[wdayIndex].periods)) {
451
+ arrayHelpers.push(addDefaultPeriod(day));
452
+ } else {
453
+ arrayHelpers.push(generateNewPeriod(values.wdays[wdayIndex].periods, day));
454
+ }
455
+ setFieldValue("wdays[".concat(wdayIndex, "].available"), true);
456
+ };
457
+ var handleDeleteRow = function handleDeleteRow(arrayHelpers, index) {
458
+ var isLastRowDeleted = values.wdays[wdayIndex].periods.length === 1;
459
+ arrayHelpers.remove(index);
460
+ setFieldValue("wdays[".concat(wdayIndex, "].available"), !isLastRowDeleted);
461
+ };
462
+ var _useContext = React.useContext(ScheduleContext),
463
+ allowAddPeriod = _useContext.allowAddPeriod;
464
+ return /*#__PURE__*/React__default["default"].createElement(formik.FieldArray, {
465
+ name: "wdays[".concat(wdayIndex, "].periods"),
466
+ render: function render(arrayHelpers) {
467
+ var _values$wdays$wdayInd, _values$wdays$wdayInd2;
468
+ return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, neetoCist.isPresent((_values$wdays$wdayInd = values.wdays[wdayIndex]) === null || _values$wdays$wdayInd === void 0 ? void 0 : _values$wdays$wdayInd.periods) && /*#__PURE__*/React__default["default"].createElement("div", {
469
+ className: "w-full space-y-2"
470
+ }, (_values$wdays$wdayInd2 = values.wdays[wdayIndex].periods) === null || _values$wdays$wdayInd2 === void 0 ? void 0 : _values$wdays$wdayInd2.map(function (period, index) {
471
+ return /*#__PURE__*/React__default["default"].createElement("div", {
472
+ className: "flex w-full flex-col sm:mx-auto sm:w-80",
473
+ key: "wdays[".concat(wdayIndex, "].periods[").concat(index, "]")
474
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
475
+ className: "flex items-start gap-2 sm:gap-3",
476
+ "data-cy": "schedule-row"
477
+ }, /*#__PURE__*/React__default["default"].createElement(formik$1.Select, {
478
+ isClearable: true,
479
+ isSearchable: true,
480
+ className: "w-full",
481
+ components: REMOVE_SELECT_DOWN_ARROW,
482
+ filterOption: customFilter,
483
+ name: "wdays[".concat(wdayIndex, "].periods[").concat(index, "].startTime"),
484
+ placeholder: t("neetoMolecules.schedule.startTime"),
485
+ styles: BLUR_TEXT_WHEN_SELECT_MENU_IS_OPEN,
486
+ options: buildSlotIntervals({
487
+ interval: DEFAULT_SLOT_INTERVAL,
488
+ bookedSlots: values.wdays[wdayIndex].periods,
489
+ slotType: "startTime",
490
+ selectedValue: period === null || period === void 0 ? void 0 : period.startTime
491
+ }),
492
+ value: slotsSelectComponentDefaultValue(period === null || period === void 0 ? void 0 : period.startTime),
493
+ onChange: function onChange(e) {
494
+ return setFieldValue("wdays[".concat(wdayIndex, "].periods[").concat(index, "].startTime"), (e === null || e === void 0 ? void 0 : e.value) || "");
495
+ }
496
+ }), /*#__PURE__*/React__default["default"].createElement(formik$1.Select, {
497
+ isClearable: true,
498
+ isSearchable: true,
499
+ className: "w-full",
500
+ components: REMOVE_SELECT_DOWN_ARROW,
501
+ filterOption: customFilter,
502
+ name: "wdays[".concat(wdayIndex, "].periods[").concat(index, "].endTime"),
503
+ placeholder: t("neetoMolecules.schedule.endTime"),
504
+ styles: BLUR_TEXT_WHEN_SELECT_MENU_IS_OPEN,
505
+ value: slotsSelectComponentDefaultValue(period === null || period === void 0 ? void 0 : period.endTime),
506
+ options: buildSlotIntervals({
507
+ interval: DEFAULT_SLOT_INTERVAL,
508
+ bookedSlots: values.wdays[wdayIndex].periods,
509
+ slotType: "endTime",
510
+ selectedValue: period === null || period === void 0 ? void 0 : period.endTime
511
+ }),
512
+ onChange: function onChange(e) {
513
+ return setFieldValue("wdays[".concat(wdayIndex, "].periods[").concat(index, "].endTime"), (e === null || e === void 0 ? void 0 : e.value) || "");
514
+ }
515
+ }), /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
516
+ className: "flex-shrink-0 self-start",
517
+ "data-cy": "delete-period-button",
518
+ "data-testid": "delete-period-button",
519
+ icon: neetoIcons.Delete,
520
+ style: "text",
521
+ onClick: function onClick() {
522
+ return handleDeleteRow(arrayHelpers, index);
523
+ }
524
+ })), /*#__PURE__*/React__default["default"].createElement(formik.ErrorMessage, {
525
+ name: "wdays[".concat(wdayIndex, "].periods[").concat(index, "]")
526
+ }, function (message) {
527
+ return defineProperty._typeof(message) !== "object" && /*#__PURE__*/React__default["default"].createElement("span", {
528
+ className: "neeto-ui-text-error-500 mt-1 w-11/12 px-2 text-xs"
529
+ }, message);
530
+ }));
531
+ })), values.wdays[wdayIndex].available && allowAddPeriod && /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
532
+ className: "absolute right-14 top-3 ml-auto flex-shrink-0 sm:static",
533
+ "data-cy": "add-new-period-button",
534
+ "data-testid": "add-new-period-button",
535
+ icon: neetoIcons.Plus,
536
+ style: "secondary",
537
+ tooltipProps: {
538
+ content: t("neetoMolecules.schedule.addNewPeriod"),
539
+ position: "top",
540
+ hideAfter: 5000
541
+ },
542
+ onClick: function onClick() {
543
+ return handleAddRow(arrayHelpers);
544
+ }
545
+ }));
546
+ }
547
+ });
548
+ };
549
+
550
+ var Form = function Form(_ref) {
551
+ var _values$wdays$index;
552
+ var day = _ref.day,
553
+ handleCopy = _ref.handleCopy,
554
+ values = _ref.values,
555
+ setFieldValue = _ref.setFieldValue,
556
+ index = _ref.index;
557
+ var _useState = React.useState([]),
558
+ _useState2 = slicedToArray._slicedToArray(_useState, 2),
559
+ deletedPeriods = _useState2[0],
560
+ setDeletedPeriods = _useState2[1];
561
+ var _useState3 = React.useState([]),
562
+ _useState4 = slicedToArray._slicedToArray(_useState3, 2),
563
+ wdaysToCopy = _useState4[0],
564
+ setWdaysToCopy = _useState4[1];
565
+ var _useTranslation = reactI18next.useTranslation(),
566
+ t = _useTranslation.t;
567
+ var restoreDeletedPeriods = function restoreDeletedPeriods(setFieldValue) {
568
+ setFieldValue("wdays[".concat(index, "].periods"), deletedPeriods);
569
+ };
570
+ var uncheckCheckbox = function uncheckCheckbox(setFieldValue, values) {
571
+ var _values$wdays$index$p;
572
+ setFieldValue("wdays[".concat(index, "].available"), false);
573
+ setFieldValue("wdays[".concat(index, "].periods"), []);
574
+ if ((_values$wdays$index$p = values.wdays[index].periods[0]) !== null && _values$wdays$index$p !== void 0 && _values$wdays$index$p.id) {
575
+ setDeletedPeriods(values.wdays[index].periods.filter(function (item) {
576
+ return item.startTime && item.endTime;
577
+ }).map(ramda.identity));
578
+ }
579
+ };
580
+ var checkCheckbox = function checkCheckbox(setFieldValue) {
581
+ var _deletedPeriods$;
582
+ setFieldValue("wdays[".concat(index, "].available"), true);
583
+ if ((_deletedPeriods$ = deletedPeriods[0]) !== null && _deletedPeriods$ !== void 0 && _deletedPeriods$.startTime) {
584
+ restoreDeletedPeriods(setFieldValue);
585
+ } else if (neetoCist.isNotPresent(values.wdays[index].periods)) {
586
+ setFieldValue("wdays[".concat(index, "].periods"), [addDefaultPeriod(day)]);
587
+ } else {
588
+ setFieldValue("wdays[".concat(index, "].periods"), [""]);
589
+ }
590
+ };
591
+ var handleCheckbox = function handleCheckbox(setFieldValue, values) {
592
+ if (values.wdays[index].available) {
593
+ uncheckCheckbox(setFieldValue, values);
594
+ } else {
595
+ checkCheckbox(setFieldValue);
596
+ }
597
+ };
598
+ var handleCopyChange = function handleCopyChange(e, day) {
599
+ return setWdaysToCopy(e.target.checked ? ramda.append(day) : ramda.without([day]));
600
+ };
601
+ return /*#__PURE__*/React__default["default"].createElement("div", {
602
+ className: "neeto-ui-rounded-md neeto-ui-shadow-s neeto-ui-border-gray-300 relative w-full border px-4 md:px-6"
603
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
604
+ className: "sm:flex-no-wrap my-4 flex w-full flex-wrap items-start gap-2 sm:flex-nowrap sm:gap-4" // Added `sm:flex-no-wrap` since neetoCal is using old version of tailwind
605
+ ,
606
+ "data-cy": "working-day-container"
607
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
608
+ className: classnames__default["default"]("flex w-36 flex-shrink-0 items-center justify-start sm:mt-1", {
609
+ "mb-3 sm:mb-0": neetoCist.isPresent((_values$wdays$index = values.wdays[index]) === null || _values$wdays$index === void 0 ? void 0 : _values$wdays$index.periods)
610
+ })
611
+ }, /*#__PURE__*/React__default["default"].createElement(formik$1.Switch, {
612
+ "aria-label": "wdays[".concat(index, "].available"),
613
+ checked: values.wdays[index].available,
614
+ className: "flex-grow-0",
615
+ "data-cy": general.joinHyphenCase(day, "weekly-hours-checkbox"),
616
+ id: "day",
617
+ name: "wdays[".concat(index, "].available"),
618
+ onChange: function onChange() {
619
+ return handleCheckbox(setFieldValue, values);
620
+ }
621
+ }), /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
622
+ component: "span",
623
+ "data-cy": general.joinHyphenCase(day, "day-text"),
624
+ style: "body2",
625
+ weight: values.wdays[index].available ? "semibold" : "normal",
626
+ className: classnames__default["default"]("ml-2 capitalize", {
627
+ "neeto-ui-text-gray-600": !values.wdays[index].available
628
+ })
629
+ }, t("neetoMolecules.schedule.days.".concat(day)))), /*#__PURE__*/React__default["default"].createElement(ScheduleRow, {
630
+ day: day,
631
+ setFieldValue: setFieldValue,
632
+ values: values,
633
+ wdayIndex: index
634
+ }), values.wdays[index].available && /*#__PURE__*/React__default["default"].createElement(neetoui.Dropdown, {
635
+ closeOnSelect: true,
636
+ buttonStyle: "secondary",
637
+ icon: neetoIcons.Copy,
638
+ position: "right-start",
639
+ buttonProps: {
640
+ tooltipProps: {
641
+ content: t("neetoMolecules.schedule.copyScheduleTooltip"),
642
+ position: "top",
643
+ hideAfter: 5000
644
+ },
645
+ className: "absolute right-4 top-3 sm:static flex-shrink-0",
646
+ "data-testid": general.joinHyphenCase(day, "copy-schedule-icon"),
647
+ "data-cy": general.joinHyphenCase(day, "copy-schedule-icon")
648
+ },
649
+ onClose: function onClose() {
650
+ return setWdaysToCopy([]);
651
+ }
652
+ }, /*#__PURE__*/React__default["default"].createElement("li", null, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
653
+ style: "h5"
654
+ }, t("neetoMolecules.schedule.copySchedule"))), DAYS.filter(function (copyDay) {
655
+ return copyDay !== day;
656
+ }).map(function (day) {
657
+ return /*#__PURE__*/React__default["default"].createElement("li", {
658
+ key: day,
659
+ onClick: function onClick(e) {
660
+ return e.stopPropagation();
661
+ }
662
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Label, {
663
+ className: "w-full cursor-pointer capitalize"
664
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Checkbox, {
665
+ checked: wdaysToCopy.includes(day),
666
+ id: day,
667
+ label: t("neetoMolecules.schedule.days.".concat(day)),
668
+ onChange: function onChange(e) {
669
+ return handleCopyChange(e, day);
670
+ }
671
+ })));
672
+ }), /*#__PURE__*/React__default["default"].createElement("li", null, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
673
+ "data-cy": "copy-schedule-submit-button",
674
+ disabled: neetoCist.isNotPresent(wdaysToCopy),
675
+ label: t("neetoMolecules.common.actions.submit"),
676
+ size: "small",
677
+ onClick: function onClick() {
678
+ handleCopy({
679
+ values: values,
680
+ index: index,
681
+ setFieldValue: setFieldValue,
682
+ wdaysToCopy: wdaysToCopy
683
+ });
684
+ setWdaysToCopy([]);
685
+ }
686
+ })))));
687
+ };
688
+
689
+ var Fields = function Fields(_ref) {
690
+ var handleCopy = _ref.handleCopy,
691
+ handleValuesChanged = _ref.handleValuesChanged,
692
+ scheduleRef = _ref.scheduleRef;
693
+ var _useFormikContext = formik.useFormikContext(),
694
+ values = _useFormikContext.values,
695
+ setFieldValue = _useFormikContext.setFieldValue,
696
+ resetForm = _useFormikContext.resetForm,
697
+ errors = _useFormikContext.errors,
698
+ dirty = _useFormikContext.dirty;
699
+ React.useEffect(function () {
700
+ handleValuesChanged(values, dirty);
701
+ }, [values]);
702
+ React.useImperativeHandle(scheduleRef, function () {
703
+ return {
704
+ resetForm: resetForm,
705
+ errors: errors
706
+ };
707
+ });
708
+ return /*#__PURE__*/React__default["default"].createElement(formik.FieldArray, {
709
+ name: "wdays",
710
+ render: function render() {
711
+ return /*#__PURE__*/React__default["default"].createElement("div", {
712
+ className: "space-y-4"
713
+ }, values.wdays.map(function (item, index) {
714
+ return /*#__PURE__*/React__default["default"].createElement(Form, {
715
+ handleCopy: handleCopy,
716
+ index: index,
717
+ setFieldValue: setFieldValue,
718
+ values: values,
719
+ day: DAYS.find(function (day) {
720
+ return day === item.wday;
721
+ }),
722
+ key: item.wday
723
+ });
724
+ }));
725
+ }
726
+ });
727
+ };
728
+
729
+ var Header = function Header(_ref) {
730
+ var isCreating = _ref.isCreating,
731
+ isEditable = _ref.isEditable,
732
+ isEditing = _ref.isEditing,
733
+ setIsEditing = _ref.setIsEditing;
734
+ var _useFormikContext = formik.useFormikContext(),
735
+ dirty = _useFormikContext.dirty,
736
+ resetForm = _useFormikContext.resetForm,
737
+ submitForm = _useFormikContext.submitForm,
738
+ isSubmitting = _useFormikContext.isSubmitting;
739
+ var _useTranslation = reactI18next.useTranslation(),
740
+ t = _useTranslation.t;
741
+ var _useState = React.useState(getTimeZoneAndTime()),
742
+ _useState2 = slicedToArray._slicedToArray(_useState, 2),
743
+ timeZoneAndTime = _useState2[0],
744
+ setTimeZoneAndTime = _useState2[1];
745
+ var _Profile$usePaneState = neetoTeamMembersFrontend.Profile.usePaneState(),
746
+ _Profile$usePaneState2 = slicedToArray._slicedToArray(_Profile$usePaneState, 2);
747
+ _Profile$usePaneState2[0];
748
+ var setIsProfilePaneOpen = _Profile$usePaneState2[1];
749
+ var handleReset = function handleReset() {
750
+ if (dirty) resetForm();else setIsEditing(false);
751
+ };
752
+ React.useEffect(function () {
753
+ var time = setInterval(function () {
754
+ setTimeZoneAndTime(getTimeZoneAndTime());
755
+ }, 30000);
756
+ return function () {
757
+ return clearInterval(time);
758
+ };
759
+ }, []);
760
+ return /*#__PURE__*/React__default["default"].createElement("div", {
761
+ className: "mb-6 flex flex-wrap justify-between gap-2"
762
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
763
+ className: "flex items-center gap-3"
764
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Tooltip, {
765
+ content: t("neetoMolecules.schedule.timezoneTooltip"),
766
+ position: "bottom"
767
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
768
+ component: "h4",
769
+ "data-cy": "timezone-text",
770
+ style: "h5",
771
+ weight: "medium"
772
+ }, timeZoneAndTime)), isEditable && /*#__PURE__*/React__default["default"].createElement(MoreDropdown, {
773
+ dropdownButtonProps: {
774
+ "data-testid": "nui-more-dropdown"
775
+ },
776
+ menuItems: [{
777
+ onClick: function onClick() {
778
+ return setIsProfilePaneOpen(true);
779
+ },
780
+ label: t("neetoMolecules.common.actions.changeTimezone"),
781
+ target: "_blank",
782
+ key: "change-timezone-option",
783
+ "data-testid": "change-timezone-option"
784
+ }]
785
+ })), isEditing ? /*#__PURE__*/React__default["default"].createElement("div", {
786
+ className: "flex items-center gap-2"
787
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
788
+ "data-cy": "reset-button",
789
+ style: "secondary",
790
+ label: !dirty ? t("neetoMolecules.common.actions.cancel") : t("neetoMolecules.common.actions.reset"),
791
+ onClick: handleReset
792
+ }), /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
793
+ "data-cy": "weekly-hours-save-changes-button",
794
+ disabled: !dirty && !isCreating || isSubmitting,
795
+ label: t("neetoMolecules.common.actions.saveChanges"),
796
+ loading: isSubmitting,
797
+ onClick: submitForm
798
+ })) : /*#__PURE__*/React__default["default"].createElement("div", null, isEditable && /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
799
+ "data-cy": "weekly-schedule-header",
800
+ label: t("neetoMolecules.schedule.changeAvailability"),
801
+ style: "primary",
802
+ weight: "semibold",
803
+ onClick: function onClick() {
804
+ return setIsEditing(true);
805
+ }
806
+ })));
807
+ };
808
+
809
+ var css = ".neeto-molecules-schedule{margin:auto;max-width:40rem;width:100%}";
810
+ injectCss.n(css,{});
811
+
812
+ var Schedule = /*#__PURE__*/React.forwardRef(function (_ref, scheduleRef) {
813
+ var periods = _ref.periods,
814
+ _ref$handleSubmit = _ref.handleSubmit,
815
+ handleSubmit = _ref$handleSubmit === void 0 ? neetoCist.noop : _ref$handleSubmit,
816
+ _ref$isEditing = _ref.isEditing,
817
+ isEditing = _ref$isEditing === void 0 ? false : _ref$isEditing,
818
+ setIsEditing = _ref.setIsEditing,
819
+ _ref$showHeader = _ref.showHeader,
820
+ showHeader = _ref$showHeader === void 0 ? true : _ref$showHeader,
821
+ _ref$handleValuesChan = _ref.handleValuesChanged,
822
+ handleValuesChanged = _ref$handleValuesChan === void 0 ? neetoCist.noop : _ref$handleValuesChan,
823
+ _ref$allowAddPeriod = _ref.allowAddPeriod,
824
+ allowAddPeriod = _ref$allowAddPeriod === void 0 ? true : _ref$allowAddPeriod,
825
+ _ref$isEditable = _ref.isEditable,
826
+ isEditable = _ref$isEditable === void 0 ? true : _ref$isEditable,
827
+ _ref$isCreating = _ref.isCreating,
828
+ isCreating = _ref$isCreating === void 0 ? false : _ref$isCreating;
829
+ var handleCopy = function handleCopy(_ref2) {
830
+ var _values$wdays$index$p;
831
+ var values = _ref2.values,
832
+ index = _ref2.index,
833
+ setFieldValue = _ref2.setFieldValue,
834
+ wdaysToCopy = _ref2.wdaysToCopy;
835
+ var newPeriods = (_values$wdays$index$p = values.wdays[index].periods) === null || _values$wdays$index$p === void 0 ? void 0 : _values$wdays$index$p.map(ramda.pick(["startTime", "endTime"]));
836
+ wdaysToCopy.forEach(function (wday) {
837
+ var dayIndex = DAYS.indexOf(wday);
838
+ setFieldValue("wdays[".concat(dayIndex, "].available"), neetoCist.isPresent(values.wdays[index].periods));
839
+ setFieldValue("wdays[".concat(dayIndex, "].periods"), newPeriods.map(function (period) {
840
+ return ramda.assoc("wday", wday, period);
841
+ }));
842
+ });
843
+ };
844
+ var getInitialFormValues = function getInitialFormValues() {
845
+ return DAYS.map(function (wday) {
846
+ var _periods$wday;
847
+ return {
848
+ periods: sortPeriodsByKey({
849
+ periods: periods[wday],
850
+ key: "startTime",
851
+ order: "asc"
852
+ }),
853
+ available: !!((_periods$wday = periods[wday]) !== null && _periods$wday !== void 0 && _periods$wday.length),
854
+ wday: wday
855
+ };
856
+ });
857
+ };
858
+ return /*#__PURE__*/React__default["default"].createElement("div", {
859
+ className: "neeto-molecules-schedule neeto-ui-border-gray-200 flex-shrink-0"
860
+ }, /*#__PURE__*/React__default["default"].createElement(formik.Formik, {
861
+ enableReinitialize: true,
862
+ initialValues: {
863
+ wdays: getInitialFormValues()
864
+ },
865
+ validationSchema: getScheduleValidationSchema(),
866
+ onSubmit: function onSubmit(values) {
867
+ return handleSubmit(values, getInitialFormValues());
868
+ }
869
+ }, /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, showHeader && /*#__PURE__*/React__default["default"].createElement(Header, {
870
+ isCreating: isCreating,
871
+ isEditable: isEditable,
872
+ isEditing: isEditing,
873
+ setIsEditing: setIsEditing
874
+ }), isEditing || !showHeader ? /*#__PURE__*/React__default["default"].createElement(formik.Form, null, /*#__PURE__*/React__default["default"].createElement(ScheduleContext.Provider, {
875
+ value: {
876
+ allowAddPeriod: allowAddPeriod
877
+ }
878
+ }, /*#__PURE__*/React__default["default"].createElement(Fields, {
879
+ handleCopy: handleCopy,
880
+ handleValuesChanged: handleValuesChanged,
881
+ scheduleRef: scheduleRef
882
+ }))) : /*#__PURE__*/React__default["default"].createElement(DisplayAvailability, {
883
+ periods: periods
884
+ }))));
885
+ });
886
+ Schedule.displayName = "Schedule";
887
+
888
+ module.exports = Schedule;
889
+ //# sourceMappingURL=Schedule.js.map