guestbell-forms 3.0.39 → 3.0.41

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 (342) hide show
  1. package/.env.bat +1 -0
  2. package/.eslintrc.json +21 -14
  3. package/build/components/base/input/BaseInput.d.ts +99 -99
  4. package/build/components/base/input/BaseInput.js +4 -0
  5. package/build/components/base/input/BaseInput.js.map +1 -1
  6. package/build/components/base/input/index.d.ts +1 -1
  7. package/build/components/bookingCalendar/BookingCalendar.d.ts +47 -46
  8. package/build/components/bookingCalendar/BookingCalendar.js +38 -14
  9. package/build/components/bookingCalendar/BookingCalendar.js.map +1 -1
  10. package/build/components/bookingCalendar/bookingCalendarControls/BookingCalendarControls.d.ts +17 -17
  11. package/build/components/bookingCalendar/bookingCalendarControls/BookingCalendarControls.js +12 -12
  12. package/build/components/bookingCalendar/bookingCalendarControls/BookingCalendarControls.js.map +1 -1
  13. package/build/components/bookingCalendar/bookingCalendarControls/classes.d.ts +9 -9
  14. package/build/components/bookingCalendar/bookingCalendarControls/index.d.ts +2 -2
  15. package/build/components/bookingCalendar/bookingCalendarDatePicker/BookingCalendarDatePicker.d.ts +13 -13
  16. package/build/components/bookingCalendar/bookingCalendarDatePicker/BookingCalendarDatePicker.js +3 -3
  17. package/build/components/bookingCalendar/bookingCalendarDatePicker/BookingCalendarDatePicker.js.map +1 -1
  18. package/build/components/bookingCalendar/bookingCalendarDatePicker/classes.d.ts +5 -5
  19. package/build/components/bookingCalendar/bookingCalendarDatePicker/index.d.ts +2 -2
  20. package/build/components/bookingCalendar/bookingCalendarGrid/BookingCalendarGrid.d.ts +10 -10
  21. package/build/components/bookingCalendar/bookingCalendarGrid/classes.d.ts +5 -5
  22. package/build/components/bookingCalendar/bookingCalendarItem/BookingCalendarItem.d.ts +57 -57
  23. package/build/components/bookingCalendar/bookingCalendarItem/BookingCalendarItem.js +2 -1
  24. package/build/components/bookingCalendar/bookingCalendarItem/BookingCalendarItem.js.map +1 -1
  25. package/build/components/bookingCalendar/bookingCalendarItem/classes.d.ts +4 -4
  26. package/build/components/bookingCalendar/bookingCalendarItem/index.d.ts +2 -2
  27. package/build/components/bookingCalendar/bookingCalendarLane/BookingCalendarLane.d.ts +16 -16
  28. package/build/components/bookingCalendar/bookingCalendarLane/classes.d.ts +4 -4
  29. package/build/components/bookingCalendar/bookingCalendarLane/index.d.ts +2 -2
  30. package/build/components/bookingCalendar/bookingCalendarLaneHeader/BookingCalendarLaneHeader.d.ts +7 -7
  31. package/build/components/bookingCalendar/bookingCalendarLaneHeader/classes.d.ts +4 -4
  32. package/build/components/bookingCalendar/bookingCalendarLaneHeader/index.d.ts +1 -1
  33. package/build/components/bookingCalendar/bookingCalendarLanesHeader/BookingCalendarLanesHeader.d.ts +11 -11
  34. package/build/components/bookingCalendar/bookingCalendarLanesHeader/BookingCalendarLanesHeader.js +3 -3
  35. package/build/components/bookingCalendar/bookingCalendarLanesHeader/BookingCalendarLanesHeader.js.map +1 -1
  36. package/build/components/bookingCalendar/bookingCalendarLanesHeader/BookingCalendarLanesHeaderRenderItem.d.ts +4 -5
  37. package/build/components/bookingCalendar/bookingCalendarLanesHeader/BookingCalendarLanesHeaderRenderItem.js.map +1 -1
  38. package/build/components/bookingCalendar/bookingCalendarLanesHeader/classes.d.ts +5 -5
  39. package/build/components/bookingCalendar/bookingCalendarLanesHeader/index.d.ts +2 -2
  40. package/build/components/bookingCalendar/bookingCalendarRenderItem/BookingCalendarRenderItem.d.ts +9 -9
  41. package/build/components/bookingCalendar/bookingCalendarRenderItem/classes.d.ts +6 -6
  42. package/build/components/bookingCalendar/bookingCalendarRenderItem/index.d.ts +1 -1
  43. package/build/components/bookingCalendar/bookingCalendarSelection/BookingCalendarSelection.d.ts +38 -37
  44. package/build/components/bookingCalendar/bookingCalendarSelection/BookingCalendarSelection.js +7 -4
  45. package/build/components/bookingCalendar/bookingCalendarSelection/BookingCalendarSelection.js.map +1 -1
  46. package/build/components/bookingCalendar/bookingCalendarSelection/classes.d.ts +5 -0
  47. package/build/components/bookingCalendar/bookingCalendarSelection/classes.js +12 -0
  48. package/build/components/bookingCalendar/bookingCalendarSelection/classes.js.map +1 -0
  49. package/build/components/bookingCalendar/bookingCalendarTimeAxis/BookingCalendarTimeAxis.d.ts +11 -11
  50. package/build/components/bookingCalendar/bookingCalendarTimeAxis/classes.d.ts +5 -5
  51. package/build/components/bookingCalendar/classes.d.ts +11 -11
  52. package/build/components/bookingCalendar/common.d.ts +24 -23
  53. package/build/components/bookingCalendar/common.js +3 -4
  54. package/build/components/bookingCalendar/common.js.map +1 -1
  55. package/build/components/bookingCalendar/index.d.ts +3 -3
  56. package/build/components/bookingCalendar/utils.d.ts +55 -50
  57. package/build/components/bookingCalendar/utils.js +2 -1
  58. package/build/components/bookingCalendar/utils.js.map +1 -1
  59. package/build/components/button/Button.d.ts +81 -81
  60. package/build/components/button/Button.js +1 -0
  61. package/build/components/button/Button.js.map +1 -1
  62. package/build/components/button/index.d.ts +2 -2
  63. package/build/components/checkbox/Checkbox.d.ts +23 -23
  64. package/build/components/checkbox/index.d.ts +2 -2
  65. package/build/components/dropdown/Dropdown.d.ts +44 -44
  66. package/build/components/dropdown/index.d.ts +2 -2
  67. package/build/components/dynamicSubmit/DynamicSubmit.d.ts +54 -54
  68. package/build/components/dynamicSubmit/DynamicSubmit.js.map +1 -1
  69. package/build/components/dynamicSubmit/index.d.ts +2 -2
  70. package/build/components/externalValidationComponent/ExternalValidationComponent.d.ts +15 -15
  71. package/build/components/externalValidationComponent/index.d.ts +2 -2
  72. package/build/components/form/Form.d.ts +47 -47
  73. package/build/components/form/FormContext.d.ts +30 -30
  74. package/build/components/form/FormValidationSummary.d.ts +38 -38
  75. package/build/components/form/FormValidationSummary.js.map +1 -1
  76. package/build/components/form/index.d.ts +5 -5
  77. package/build/components/form/withFormContext.d.ts +3 -3
  78. package/build/components/inputGroup/InputGroup.d.ts +15 -17
  79. package/build/components/inputGroup/index.d.ts +2 -2
  80. package/build/components/inputHeader/InputHeader.d.ts +97 -97
  81. package/build/components/inputHeader/InputHeader.js.map +1 -1
  82. package/build/components/inputHeader/InputHeaderContext.d.ts +24 -24
  83. package/build/components/inputHeader/index.d.ts +2 -2
  84. package/build/components/inputHeader/withInputHeaderContext.d.ts +3 -3
  85. package/build/components/money/Money.d.ts +78 -78
  86. package/build/components/money/Money.js.map +1 -1
  87. package/build/components/money/index.d.ts +2 -2
  88. package/build/components/numberInput/NumberInput.d.ts +28 -28
  89. package/build/components/numberInput/index.d.ts +2 -2
  90. package/build/components/openingHours/openingHoursDay/OpeningHoursDay.d.ts +84 -84
  91. package/build/components/openingHours/openingHoursDay/OpeningHoursDay.js +3 -3
  92. package/build/components/openingHours/openingHoursDay/OpeningHoursDay.js.map +1 -1
  93. package/build/components/openingHours/openingHoursDay/index.d.ts +2 -2
  94. package/build/components/openingHours/openingHoursSpecial/OpeningHoursSpecial.d.ts +92 -90
  95. package/build/components/openingHours/openingHoursSpecial/OpeningHoursSpecial.js.map +1 -1
  96. package/build/components/openingHours/openingHoursSpecial/index.d.ts +2 -2
  97. package/build/components/openingHours/openingHoursWeek/OpeningHoursWeek.d.ts +109 -109
  98. package/build/components/openingHours/openingHoursWeek/index.d.ts +2 -2
  99. package/build/components/openingHours/utils/OpeningHoursUtil.d.ts +21 -21
  100. package/build/components/radio/Radio.d.ts +20 -20
  101. package/build/components/radio/index.d.ts +2 -2
  102. package/build/components/radioContainer/RadioContainer.d.ts +17 -16
  103. package/build/components/radioContainer/RadioContainer.js.map +1 -1
  104. package/build/components/radioContainer/index.d.ts +2 -2
  105. package/build/components/select/Select.d.ts +79 -79
  106. package/build/components/select/index.d.ts +2 -2
  107. package/build/components/submit/Submit.d.ts +137 -137
  108. package/build/components/submit/index.d.ts +2 -2
  109. package/build/components/submit/subComponents/SubmitValidationSummary.d.ts +5 -5
  110. package/build/components/tags/Tags.d.ts +92 -92
  111. package/build/components/tags/Tags.js +2 -0
  112. package/build/components/tags/Tags.js.map +1 -1
  113. package/build/components/tags/index.d.ts +2 -2
  114. package/build/components/tags/subComponents/TagsSuggestions.d.ts +34 -34
  115. package/build/components/tags/subComponents/TagsSuggestions.js +2 -2
  116. package/build/components/tags/subComponents/TagsSuggestions.js.map +1 -1
  117. package/build/components/text/Text.d.ts +31 -31
  118. package/build/components/text/index.d.ts +2 -2
  119. package/build/components/textArea/TextArea.d.ts +28 -28
  120. package/build/components/textArea/TextArea.js +1 -0
  121. package/build/components/textArea/TextArea.js.map +1 -1
  122. package/build/components/textArea/index.d.ts +2 -2
  123. package/build/components/themeProvider/ThemeContext.d.ts +9 -9
  124. package/build/components/themeProvider/ThemeProvider.d.ts +8 -7
  125. package/build/components/themeProvider/ThemeProvider.js.map +1 -1
  126. package/build/components/themeProvider/index.d.ts +4 -4
  127. package/build/components/themeProvider/withThemeContext.d.ts +4 -4
  128. package/build/components/time/Time.d.ts +32 -32
  129. package/build/components/time/Time.js +3 -3
  130. package/build/components/time/Time.js.map +1 -1
  131. package/build/components/time/index.d.ts +2 -2
  132. package/build/components/timeSpan/TimeSpan.d.ts +46 -46
  133. package/build/components/timeSpan/TimeSpan.js +6 -6
  134. package/build/components/timeSpan/TimeSpan.js.map +1 -1
  135. package/build/components/timeSpan/index.d.ts +2 -2
  136. package/build/components/utils/Guid.d.ts +2 -2
  137. package/build/components/utils/ShallowEqual.d.ts +16 -16
  138. package/build/components/utils/TimeUtil.d.ts +6 -6
  139. package/build/components/utils/Typescript.d.ts +5 -5
  140. package/build/dist/guestbell-forms.css +154 -170
  141. package/build/dist/guestbell-forms.css.map +1 -1
  142. package/build/dist/guestbell-forms.js +15 -24
  143. package/build/dist/guestbell-forms.js.map +1 -1
  144. package/build/dist/guestbell-forms.min.css +1 -1
  145. package/build/dist/guestbell-forms.min.js +1 -1
  146. package/build/dist/guestbell-forms.min.js.map +1 -1
  147. package/build/dist/report.html +3 -3
  148. package/build/index.d.ts +24 -24
  149. package/build/scss/components/bookingCalendar/bookingCalendar.scss +32 -7
  150. package/build/types/ElementOverrideProp.d.ts +3 -3
  151. package/build/types/Theme.d.ts +4 -4
  152. package/build/types/ThemeOverrides.d.ts +45 -45
  153. package/build/validators/EmailValidator.d.ts +4 -4
  154. package/build/validators/LatitudeValidator.d.ts +4 -4
  155. package/build/validators/LongitudeValidator.d.ts +4 -4
  156. package/build/validators/NumberValidator.d.ts +12 -12
  157. package/build/validators/NumberValidator.js +1 -0
  158. package/build/validators/NumberValidator.js.map +1 -1
  159. package/build/validators/UrlValidator.d.ts +4 -4
  160. package/build/validators/base.d.ts +4 -4
  161. package/build/validators/index.d.ts +6 -6
  162. package/package.json +130 -136
  163. package/src/lib/components/base/input/BaseInput.tsx +526 -0
  164. package/src/lib/components/base/input/index.tsx +1 -0
  165. package/src/lib/components/bookingCalendar/BookingCalendar.tsx +399 -0
  166. package/src/lib/components/bookingCalendar/bookingCalendarControls/BookingCalendarControls.tsx +249 -0
  167. package/src/lib/components/bookingCalendar/bookingCalendarControls/classes.ts +20 -0
  168. package/src/lib/components/bookingCalendar/bookingCalendarControls/index.ts +2 -0
  169. package/src/lib/components/bookingCalendar/bookingCalendarDatePicker/BookingCalendarDatePicker.tsx +104 -0
  170. package/src/lib/components/bookingCalendar/bookingCalendarDatePicker/classes.ts +9 -0
  171. package/src/lib/components/bookingCalendar/bookingCalendarDatePicker/index.ts +2 -0
  172. package/src/lib/components/bookingCalendar/bookingCalendarGrid/BookingCalendarGrid.tsx +56 -0
  173. package/src/lib/components/bookingCalendar/bookingCalendarGrid/classes.ts +9 -0
  174. package/src/lib/components/bookingCalendar/bookingCalendarItem/BookingCalendarItem.tsx +98 -0
  175. package/src/lib/components/bookingCalendar/bookingCalendarItem/classes.ts +7 -0
  176. package/src/lib/components/bookingCalendar/bookingCalendarItem/index.ts +2 -0
  177. package/src/lib/components/bookingCalendar/bookingCalendarLane/BookingCalendarLane.tsx +69 -0
  178. package/src/lib/components/bookingCalendar/bookingCalendarLane/classes.ts +7 -0
  179. package/src/lib/components/bookingCalendar/bookingCalendarLane/index.ts +2 -0
  180. package/src/lib/components/bookingCalendar/bookingCalendarLaneHeader/BookingCalendarLaneHeader.tsx +28 -0
  181. package/src/lib/components/bookingCalendar/bookingCalendarLaneHeader/classes.ts +7 -0
  182. package/src/lib/components/bookingCalendar/bookingCalendarLaneHeader/index.ts +1 -0
  183. package/src/lib/components/bookingCalendar/bookingCalendarLanesHeader/BookingCalendarLanesHeader.tsx +57 -0
  184. package/src/lib/components/bookingCalendar/bookingCalendarLanesHeader/BookingCalendarLanesHeaderRenderItem.tsx +53 -0
  185. package/src/lib/components/bookingCalendar/bookingCalendarLanesHeader/classes.ts +9 -0
  186. package/src/lib/components/bookingCalendar/bookingCalendarLanesHeader/index.ts +2 -0
  187. package/src/lib/components/bookingCalendar/bookingCalendarRenderItem/BookingCalendarRenderItem.tsx +57 -0
  188. package/src/lib/components/bookingCalendar/bookingCalendarRenderItem/classes.ts +11 -0
  189. package/src/lib/components/bookingCalendar/bookingCalendarRenderItem/index.ts +1 -0
  190. package/src/lib/components/bookingCalendar/bookingCalendarSelection/BookingCalendarSelection.tsx +225 -0
  191. package/src/lib/components/bookingCalendar/bookingCalendarSelection/classes.ts +10 -0
  192. package/src/lib/components/bookingCalendar/bookingCalendarTimeAxis/BookingCalendarTimeAxis.tsx +53 -0
  193. package/src/lib/components/bookingCalendar/bookingCalendarTimeAxis/classes.ts +9 -0
  194. package/src/lib/components/bookingCalendar/classes.ts +21 -0
  195. package/src/lib/components/bookingCalendar/common.ts +62 -0
  196. package/src/lib/components/bookingCalendar/index.ts +3 -0
  197. package/src/lib/components/bookingCalendar/utils.ts +350 -0
  198. package/src/lib/components/button/Button.tsx +193 -0
  199. package/src/lib/components/button/index.tsx +2 -0
  200. package/src/lib/components/checkbox/Checkbox.tsx +178 -0
  201. package/src/lib/components/checkbox/index.tsx +2 -0
  202. package/src/lib/components/dropdown/Dropdown.tsx +135 -0
  203. package/src/lib/components/dropdown/index.tsx +2 -0
  204. package/src/lib/components/dynamicSubmit/DynamicSubmit.tsx +153 -0
  205. package/src/lib/components/dynamicSubmit/index.tsx +2 -0
  206. package/src/lib/components/externalValidationComponent/ExternalValidationComponent.tsx +78 -0
  207. package/src/lib/components/externalValidationComponent/index.tsx +2 -0
  208. package/src/lib/components/form/Form.tsx +276 -0
  209. package/src/lib/components/form/FormContext.ts +49 -0
  210. package/src/lib/components/form/FormValidationSummary.tsx +122 -0
  211. package/src/lib/components/form/index.tsx +5 -0
  212. package/src/lib/components/form/withFormContext.tsx +20 -0
  213. package/src/lib/components/inputGroup/InputGroup.tsx +60 -0
  214. package/src/lib/components/inputGroup/index.tsx +2 -0
  215. package/src/lib/components/inputHeader/InputHeader.tsx +448 -0
  216. package/src/lib/components/inputHeader/InputHeaderContext.ts +42 -0
  217. package/src/lib/components/inputHeader/index.tsx +2 -0
  218. package/src/lib/components/inputHeader/withInputHeaderContext.tsx +24 -0
  219. package/src/lib/components/money/Money.tsx +298 -0
  220. package/src/lib/components/money/index.tsx +2 -0
  221. package/src/lib/components/numberInput/NumberInput.tsx +186 -0
  222. package/src/lib/components/numberInput/index.tsx +2 -0
  223. package/src/lib/components/openingHours/openingHoursDay/OpeningHoursDay.tsx +394 -0
  224. package/src/lib/components/openingHours/openingHoursDay/index.tsx +2 -0
  225. package/src/lib/components/openingHours/openingHoursSpecial/OpeningHoursSpecial.tsx +227 -0
  226. package/src/lib/components/openingHours/openingHoursSpecial/index.tsx +2 -0
  227. package/src/lib/components/openingHours/openingHoursWeek/OpeningHoursWeek.tsx +283 -0
  228. package/src/lib/components/openingHours/openingHoursWeek/index.tsx +2 -0
  229. package/src/lib/components/openingHours/utils/OpeningHoursUtil.tsx +111 -0
  230. package/src/lib/components/radio/Radio.tsx +87 -0
  231. package/src/lib/components/radio/index.tsx +2 -0
  232. package/src/lib/components/radioContainer/RadioContainer.tsx +50 -0
  233. package/src/lib/components/radioContainer/index.tsx +2 -0
  234. package/src/lib/components/select/Select.tsx +335 -0
  235. package/src/lib/components/select/index.tsx +2 -0
  236. package/src/lib/components/submit/Submit.tsx +117 -0
  237. package/src/lib/components/submit/index.tsx +2 -0
  238. package/src/lib/components/submit/subComponents/SubmitValidationSummary.tsx +55 -0
  239. package/src/lib/components/tags/Tags.tsx +702 -0
  240. package/src/lib/components/tags/index.tsx +2 -0
  241. package/src/lib/components/tags/subComponents/TagsSuggestions.tsx +150 -0
  242. package/src/lib/components/text/Text.tsx +200 -0
  243. package/src/lib/components/text/index.tsx +2 -0
  244. package/src/lib/components/textArea/TextArea.tsx +109 -0
  245. package/src/lib/components/textArea/index.tsx +2 -0
  246. package/src/lib/components/themeProvider/ThemeContext.ts +16 -0
  247. package/src/lib/components/themeProvider/ThemeProvider.tsx +21 -0
  248. package/src/lib/components/themeProvider/index.tsx +4 -0
  249. package/src/lib/components/themeProvider/withThemeContext.tsx +30 -0
  250. package/src/lib/components/time/Time.tsx +296 -0
  251. package/src/lib/components/time/index.tsx +2 -0
  252. package/src/lib/components/timeSpan/TimeSpan.tsx +378 -0
  253. package/src/lib/components/timeSpan/index.tsx +2 -0
  254. package/src/lib/components/utils/Guid.ts +9 -0
  255. package/src/lib/components/utils/ShallowEqual.ts +75 -0
  256. package/src/lib/components/utils/TimeUtil.ts +22 -0
  257. package/src/lib/components/utils/Typescript.ts +11 -0
  258. package/src/lib/declarations/import.d.ts +1 -0
  259. package/src/lib/index.ts +24 -0
  260. package/src/lib/scss/components/base/index.scss +1 -0
  261. package/src/lib/scss/components/base/input/index.scss +1 -0
  262. package/src/lib/scss/components/base/input/input.scss +237 -0
  263. package/src/lib/scss/components/bookingCalendar/bookingCalendar.scss +274 -0
  264. package/src/lib/scss/components/bookingCalendar/index.scss +1 -0
  265. package/src/lib/scss/components/button/buttons.scss +161 -0
  266. package/src/lib/scss/components/button/index.scss +1 -0
  267. package/src/lib/scss/components/checkbox/checkbox.scss +115 -0
  268. package/src/lib/scss/components/checkbox/index.scss +1 -0
  269. package/src/lib/scss/components/dropdown/dropdown.scss +111 -0
  270. package/src/lib/scss/components/dropdown/index.scss +1 -0
  271. package/src/lib/scss/components/dynamicSubmit/dynamicSubmit.scss +1 -0
  272. package/src/lib/scss/components/dynamicSubmit/index.scss +1 -0
  273. package/src/lib/scss/components/form/form.scss +1 -0
  274. package/src/lib/scss/components/form/formValidationSummary.scss +55 -0
  275. package/src/lib/scss/components/form/index.scss +2 -0
  276. package/src/lib/scss/components/index.scss +21 -0
  277. package/src/lib/scss/components/inputGroup/index.scss +1 -0
  278. package/src/lib/scss/components/inputGroup/inputGroup.scss +67 -0
  279. package/src/lib/scss/components/inputHeader/index.scss +1 -0
  280. package/src/lib/scss/components/inputHeader/inputHeader.scss +132 -0
  281. package/src/lib/scss/components/money/index.scss +1 -0
  282. package/src/lib/scss/components/money/money.scss +51 -0
  283. package/src/lib/scss/components/numberInput/index.scss +1 -0
  284. package/src/lib/scss/components/numberInput/numberInput.scss +116 -0
  285. package/src/lib/scss/components/openingHours/index.scss +3 -0
  286. package/src/lib/scss/components/openingHours/openingHoursDay/index.scss +1 -0
  287. package/src/lib/scss/components/openingHours/openingHoursDay/openingHoursDay.scss +127 -0
  288. package/src/lib/scss/components/openingHours/openingHoursSpecial/index.scss +1 -0
  289. package/src/lib/scss/components/openingHours/openingHoursSpecial/openingHoursSpecial.scss +93 -0
  290. package/src/lib/scss/components/openingHours/openingHoursWeek/index.scss +1 -0
  291. package/src/lib/scss/components/openingHours/openingHoursWeek/openingHoursWeek.scss +23 -0
  292. package/src/lib/scss/components/radio/index.scss +1 -0
  293. package/src/lib/scss/components/radio/radio.scss +68 -0
  294. package/src/lib/scss/components/radioContainer/index.scss +1 -0
  295. package/src/lib/scss/components/radioContainer/radioContainer.scss +15 -0
  296. package/src/lib/scss/components/select/index.scss +1 -0
  297. package/src/lib/scss/components/select/select.scss +64 -0
  298. package/src/lib/scss/components/submit/index.scss +1 -0
  299. package/src/lib/scss/components/submit/submitValidationSummary.scss +35 -0
  300. package/src/lib/scss/components/tags/index.scss +1 -0
  301. package/src/lib/scss/components/tags/tags.scss +128 -0
  302. package/src/lib/scss/components/text/index.scss +1 -0
  303. package/src/lib/scss/components/text/text.scss +42 -0
  304. package/src/lib/scss/components/textArea/index.scss +1 -0
  305. package/src/lib/scss/components/textArea/textArea.scss +32 -0
  306. package/src/lib/scss/components/time/index.scss +1 -0
  307. package/src/lib/scss/components/time/time.scss +111 -0
  308. package/src/lib/scss/components/timeSpan/index.scss +1 -0
  309. package/src/lib/scss/components/timeSpan/timeSpan.scss +115 -0
  310. package/src/lib/scss/index.scss +8 -0
  311. package/src/lib/scss/styles/base.scss +7 -0
  312. package/src/lib/scss/styles/index.scss +2 -0
  313. package/src/lib/scss/styles/react-tippy.scss +4 -0
  314. package/src/lib/scss/variables/_buttons.scss +6 -0
  315. package/src/lib/scss/variables/_colors.scss +1 -0
  316. package/src/lib/scss/variables/_common.scss +12 -0
  317. package/src/lib/tsconfig.json +19 -0
  318. package/src/lib/types/ElementOverrideProp.ts +3 -0
  319. package/src/lib/types/Theme.ts +5 -0
  320. package/src/lib/types/ThemeOverrides.ts +46 -0
  321. package/src/lib/validators/EmailValidator.ts +15 -0
  322. package/src/lib/validators/LatitudeValidator.ts +25 -0
  323. package/src/lib/validators/LongitudeValidator.ts +25 -0
  324. package/src/lib/validators/NumberValidator.ts +50 -0
  325. package/src/lib/validators/UrlValidator.ts +20 -0
  326. package/src/lib/validators/base.ts +15 -0
  327. package/src/lib/validators/index.ts +6 -0
  328. package/src/stories/Basic.stories.ts +17 -0
  329. package/src/stories/Basic.tsx +1065 -0
  330. package/src/stories/Schedule.stories.ts +16 -0
  331. package/src/stories/Schedule.tsx +85 -0
  332. package/src/stories/ValidationPage.tsx +417 -0
  333. package/tsconfig.json +9 -22
  334. package/typedoc.json +6 -0
  335. package/webpack/webpack.config.base.js +139 -0
  336. package/webpack/webpack.config.dev.js +78 -0
  337. package/webpack/webpack.config.gh-pages.js +78 -0
  338. package/webpack/webpack.config.js +21 -0
  339. package/webpack/webpack.config.min.js +100 -0
  340. package/.vscode/launch.json +0 -15
  341. package/.vscode/settings.json +0 -27
  342. package/.vscode/tasks.json +0 -12
@@ -0,0 +1,394 @@
1
+ import * as PlusIcon from 'material-design-icons/content/svg/production/ic_add_circle_outline_24px.svg';
2
+
3
+ // Libs
4
+ import * as React from 'react';
5
+
6
+ // Misc
7
+ import { Time } from '../../time/Time';
8
+ import OpeningHoursUtil from '../utils/OpeningHoursUtil';
9
+ import TimeUtil from '../../utils/TimeUtil';
10
+ import InputGroup from '../../inputGroup/InputGroup';
11
+ import {
12
+ BaseInputProps,
13
+ BaseInputState,
14
+ BaseInput,
15
+ defaultBaseTranslations,
16
+ } from '../../base/input/BaseInput';
17
+ import { Button } from '../../button/Button';
18
+ import { withFormContext } from '../../form/withFormContext';
19
+ import classNames from 'classnames';
20
+ import moment, { Duration } from 'moment';
21
+ import NumberInput from '../../numberInput/NumberInput';
22
+ import { withThemeContext } from '../../themeProvider/withThemeContext';
23
+
24
+ export interface OpeningHoursPeriodObj {
25
+ opens: Duration;
26
+ closes: Duration;
27
+ capacity?: number;
28
+ }
29
+
30
+ export interface OpeningHoursDayObj {
31
+ times: OpeningHoursPeriodObj[];
32
+ }
33
+
34
+ export const defaultDayTranslations = {
35
+ opens: 'Opens',
36
+ closes: 'Closes',
37
+ capacity: 'Capacity',
38
+ add: 'Add new time range',
39
+ midnight: 'Midnight',
40
+ ...defaultBaseTranslations,
41
+ };
42
+
43
+ export type OpeningHoursDayTranslations = Partial<
44
+ typeof defaultDayTranslations
45
+ >;
46
+
47
+ export interface OpeningHoursDayProps
48
+ extends BaseInputProps<never, OpeningHoursDayTranslations> {
49
+ onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;
50
+ onOpeningHoursChange: (openingHours: OpeningHoursDayObj) => void;
51
+ openingHours: OpeningHoursDayObj;
52
+ label?: JSX.Element | string;
53
+ maxOpenCloseTimes?: number;
54
+ useCapacity?: boolean;
55
+ }
56
+
57
+ export interface OpeningHoursState extends BaseInputState {}
58
+
59
+ export class OpeningHoursDayRaw extends BaseInput<
60
+ OpeningHoursDayProps,
61
+ OpeningHoursState,
62
+ never,
63
+ OpeningHoursDayTranslations
64
+ > {
65
+ public static defaultProps = Object.assign({}, BaseInput.defaultProps, {
66
+ onChange: undefined,
67
+ type: 'openingHours',
68
+ allowMultiple: false,
69
+ maxOpenCloseTimes: 10,
70
+ });
71
+ private fullDayMilliseconds: number = 24 * 60 * 60 * 1000;
72
+
73
+ constructor(props: OpeningHoursDayProps) {
74
+ super(props);
75
+ }
76
+
77
+ public render() {
78
+ const translations = this.getTranslations(defaultDayTranslations);
79
+ return (
80
+ <InputGroup
81
+ title={this.props.title}
82
+ className={classNames(
83
+ 'input__group__openingHoursDay',
84
+ this.props.className,
85
+ {
86
+ 'input__group__openingHoursDay--closed':
87
+ this.props.openingHours &&
88
+ this.props.openingHours.times &&
89
+ this.props.openingHours.times.length === 0,
90
+ }
91
+ )}
92
+ tooltip={this.props.tooltip}
93
+ >
94
+ <div
95
+ {...(this.props.id && {
96
+ id: this.props.id,
97
+ })}
98
+ className={classNames(
99
+ 'input__base openingHoursDay-input',
100
+ {
101
+ 'openingHoursDay-input--closed':
102
+ this.props.openingHours &&
103
+ this.props.openingHours.times &&
104
+ this.props.openingHours.times.length === 0,
105
+ },
106
+ this.getValidationClass()
107
+ )}
108
+ ref={this.containerRef}
109
+ >
110
+ <div className="openingHoursDay-input__container">
111
+ {this.props.openingHours &&
112
+ this.props.openingHours.times &&
113
+ this.props.openingHours.times.map((item, index) => {
114
+ const times = [item.opens, item.closes];
115
+ return (
116
+ <div
117
+ className="openingHoursDay-input__time__container"
118
+ key={index}
119
+ >
120
+ {times.map((time, indexJ) => {
121
+ const localIndex = index * 2 + indexJ;
122
+ const previousTime =
123
+ indexJ > 0
124
+ ? times[indexJ - 1].clone()
125
+ : index === 0
126
+ ? this.getTime(0, 0)
127
+ : this.props.openingHours.times[
128
+ index - 1
129
+ ].closes.clone();
130
+ let nextTime =
131
+ indexJ === 0
132
+ ? times[1]
133
+ : this.props.openingHours.times.length - 1 > index
134
+ ? this.props.openingHours.times[
135
+ index + 1
136
+ ].opens.clone()
137
+ : this.getTime(23, 59, true);
138
+ if (localIndex % 2 === 0) {
139
+ nextTime = moment.duration(
140
+ Math.min.apply(null, [
141
+ this.getTime(23, 59, false).asMilliseconds(),
142
+ nextTime.asMilliseconds(),
143
+ ]),
144
+ 'millisecond'
145
+ );
146
+ }
147
+ return (
148
+ <Time
149
+ key={`${index}-${indexJ}`}
150
+ {...(this.props.id && {
151
+ id: `${
152
+ this.props.id
153
+ }-time-${index.toString()}-${indexJ.toString()}`,
154
+ })}
155
+ className={'openingHoursDay-input__time'}
156
+ timeChange={this.timeChanged(index, indexJ)}
157
+ time={time}
158
+ min={previousTime}
159
+ max={nextTime}
160
+ showDateDiff={true}
161
+ label={
162
+ indexJ % 2 === 0
163
+ ? translations.opens
164
+ : translations.closes
165
+ }
166
+ />
167
+ );
168
+ })}
169
+ {this.props.useCapacity && (
170
+ <NumberInput
171
+ label={translations.capacity}
172
+ min={0}
173
+ number={item.capacity}
174
+ onNumberChange={(num) =>
175
+ this.props.onOpeningHoursChange({
176
+ ...this.props.openingHours,
177
+ times: this.props.openingHours.times.map((t, i) =>
178
+ i === index ? { ...t, capacity: num } : t
179
+ ),
180
+ })
181
+ }
182
+ />
183
+ )}
184
+ <Button
185
+ {...(this.props.id && {
186
+ id:
187
+ this.props.id +
188
+ '-remove-button-' +
189
+ ((index - 1) / 2).toString(),
190
+ })}
191
+ onClick={this.removeTimeClick(index)}
192
+ className="openingHoursDay-input__button--remove mr-3 line-height--0"
193
+ circular={true}
194
+ blank={true}
195
+ type="error"
196
+ >
197
+ <PlusIcon />
198
+ </Button>
199
+ </div>
200
+ );
201
+ })}
202
+ {this.props.maxOpenCloseTimes >
203
+ this.props.openingHours.times.length && (
204
+ <Button
205
+ {...(this.props.id && {
206
+ id: this.props.id + '-add-button',
207
+ })}
208
+ className="openingHoursDay-input__button-open-close"
209
+ onClick={this.addTimeClick}
210
+ disabled={this.isAddTimeClickDisabled()}
211
+ type={'primary'}
212
+ hero={true}
213
+ >
214
+ {translations.add}
215
+ </Button>
216
+ )}
217
+ </div>
218
+ {this.renderDefaultValidation()}
219
+ {this.props.openingHours && this.props.label && (
220
+ <span
221
+ className={
222
+ 'label-classname ' +
223
+ (this.props.openingHours &&
224
+ this.props.openingHours.times &&
225
+ this.props.openingHours.times.length
226
+ ? 'label--focused'
227
+ : 'label--focused label--closed')
228
+ }
229
+ >
230
+ {this.renderLabel(true)}
231
+ </span>
232
+ )}
233
+ </div>
234
+ {this.getBottomBorder(translations)}
235
+ </InputGroup>
236
+ );
237
+ }
238
+
239
+ private isAddTimeClickDisabled() {
240
+ if (
241
+ this.props.openingHours &&
242
+ this.props.openingHours.times &&
243
+ this.props.openingHours.times.length
244
+ ) {
245
+ const dayDiff = TimeUtil.dayDiff(
246
+ this.props.openingHours.times[0].opens,
247
+ this.props.openingHours.times[this.props.openingHours.times.length - 1]
248
+ .closes
249
+ );
250
+ if (dayDiff > 0) {
251
+ return true;
252
+ }
253
+ }
254
+ return false;
255
+ }
256
+
257
+ private addTimeClick = () => {
258
+ let newTime =
259
+ this.props.openingHours &&
260
+ this.props.openingHours.times &&
261
+ this.props.openingHours.times.length
262
+ ? this.props.openingHours.times[
263
+ this.props.openingHours.times.length - 1
264
+ ].closes.clone()
265
+ : this.getTime(8, 0);
266
+ if (newTime.hours() < 23) {
267
+ newTime = newTime.add(1, 'hour');
268
+ }
269
+ let closeTime = newTime.clone().add(1, 'hour');
270
+ this.props.onOpeningHoursChange({
271
+ ...this.props.openingHours,
272
+ times: this.props.openingHours.times.concat({
273
+ opens: newTime,
274
+ closes: closeTime,
275
+ capacity: this.props.useCapacity ? 1 : undefined,
276
+ }),
277
+ });
278
+ };
279
+
280
+ private removeTimeClick = (index: number) => () =>
281
+ this.props.onOpeningHoursChange({
282
+ ...this.props.openingHours,
283
+ times: this.props.openingHours.times.filter(
284
+ (time, itemIndex) => itemIndex < index || itemIndex > index + 1
285
+ ),
286
+ });
287
+
288
+ private timeChanged = (index: number, indexJ: number) => (time: Duration) => {
289
+ let newOpeningHours: OpeningHoursDayObj = {
290
+ ...this.props.openingHours,
291
+ times: this.props.openingHours.times.slice(0),
292
+ };
293
+ if (indexJ === 0) {
294
+ newOpeningHours.times[index] = {
295
+ ...newOpeningHours.times[index],
296
+ opens: time,
297
+ };
298
+ } else {
299
+ newOpeningHours.times[index] = {
300
+ ...newOpeningHours.times[index],
301
+ closes: time,
302
+ };
303
+ }
304
+ this.props.onOpeningHoursChange(newOpeningHours);
305
+ };
306
+
307
+ private getBottomBorder(translations: OpeningHoursDayTranslations) {
308
+ const times = (
309
+ (this.props.openingHours && this.props.openingHours.times) ||
310
+ []
311
+ ).reduce<Duration[]>((a, b) => a.concat([b.opens, b.closes]), []);
312
+ let parts = [];
313
+ let totalTime = this.fullDayMilliseconds;
314
+ if (!times.length) {
315
+ parts = parts.concat([1]);
316
+ } else {
317
+ totalTime = Math.max(
318
+ this.fullDayMilliseconds,
319
+ OpeningHoursUtil.getTimeFromMidnight(times[times.length - 1], times[0])
320
+ );
321
+ parts = parts.concat([
322
+ OpeningHoursUtil.getTimeFromMidnight(times[0]) / totalTime,
323
+ ]);
324
+ for (var index = 0; index < times.length - 1; index++) {
325
+ let start = OpeningHoursUtil.getTimeFromMidnight(
326
+ times[index],
327
+ times[0]
328
+ );
329
+ let end = OpeningHoursUtil.getTimeFromMidnight(
330
+ times[index + 1],
331
+ times[0]
332
+ );
333
+ let diff = (end - start) / totalTime;
334
+ parts = parts.concat([diff]);
335
+ }
336
+ parts = parts.concat([
337
+ (totalTime -
338
+ OpeningHoursUtil.getTimeFromMidnight(
339
+ times[times.length - 1],
340
+ times[0]
341
+ )) /
342
+ totalTime,
343
+ ]);
344
+ }
345
+ return (
346
+ <div className="openingHoursDay-input__bottom-border__container">
347
+ {parts.map((part, i) => (
348
+ <div
349
+ key={i}
350
+ className={
351
+ 'openingHoursDay-input__bottom-border ' +
352
+ (i % 2 === 0
353
+ ? 'openingHoursDay-input__bottom-border--closed'
354
+ : 'openingHoursDay-input__bottom-border--open')
355
+ }
356
+ style={{ width: part ? (part * 100).toFixed(2) + '%' : '0' }}
357
+ />
358
+ ))}
359
+ {totalTime > this.fullDayMilliseconds && (
360
+ <div
361
+ className="openingHoursDay-input__bottom-border--midnight"
362
+ style={{
363
+ left:
364
+ ((this.fullDayMilliseconds * 100) / totalTime).toString() + '%',
365
+ }}
366
+ title={translations.midnight}
367
+ />
368
+ )}
369
+ </div>
370
+ );
371
+ }
372
+
373
+ private getTime(
374
+ hours: number,
375
+ minutes: number,
376
+ nextDay: boolean = false
377
+ ): Duration {
378
+ let time = moment
379
+ .duration(0, 'millisecond')
380
+ .add(hours, 'hours')
381
+ .add(minutes, 'minutes');
382
+ if (nextDay) {
383
+ time = time.add(1, 'day');
384
+ }
385
+ return time;
386
+ }
387
+ }
388
+
389
+ export const OpeningHoursDay = withThemeContext<
390
+ OpeningHoursDayProps,
391
+ InstanceType<typeof OpeningHoursDayRaw>
392
+ >(withFormContext<OpeningHoursDayProps>(OpeningHoursDayRaw), 'openingHoursDay');
393
+
394
+ export default OpeningHoursDay;
@@ -0,0 +1,2 @@
1
+ export * from './OpeningHoursDay';
2
+ export { default } from './OpeningHoursDay';
@@ -0,0 +1,227 @@
1
+ import * as PlusIcon from 'material-design-icons/content/svg/production/ic_add_circle_outline_24px.svg';
2
+ import * as DateIcon from 'material-design-icons/action/svg/production/ic_event_24px.svg';
3
+
4
+ // Libs
5
+ import * as React from 'react';
6
+ /*try {
7
+ var DatePicker = require('react-datepicker').default;
8
+ } catch {
9
+ DatePicker = undefined;
10
+ }*/
11
+ import DatePicker from 'react-datepicker';
12
+
13
+ // Misc
14
+ import OpeningHoursUtil, {
15
+ defaultTranslations as defaultLabelTranslations,
16
+ } from '../utils/OpeningHoursUtil';
17
+ import {
18
+ OpeningHoursDayObj,
19
+ OpeningHoursDay,
20
+ defaultDayTranslations,
21
+ } from '../openingHoursDay/OpeningHoursDay';
22
+ import {
23
+ BaseInputProps,
24
+ BaseInputState,
25
+ BaseInput,
26
+ defaultBaseTranslations,
27
+ } from '../../base/input/BaseInput';
28
+ import { Button } from '../../button/Button';
29
+ import { withFormContext } from '../../form/withFormContext';
30
+ import { withThemeContext } from '../../themeProvider/withThemeContext';
31
+
32
+ export interface OpeningHoursSpecialDayObj extends OpeningHoursDayObj {
33
+ date?: Date;
34
+ children?: React.ReactNode;
35
+ }
36
+
37
+ export interface OpeningHoursSpecialProps
38
+ extends BaseInputProps<never, OpeningHoursSpecialTranslations> {
39
+ days: OpeningHoursSpecialDayObj[];
40
+ onDaysChange: (days: OpeningHoursSpecialDayObj[]) => void;
41
+ placeholder?: string;
42
+ useCapacity?: boolean;
43
+ }
44
+
45
+ export interface OpeningHoursSpecialState extends BaseInputState {}
46
+
47
+ const DAY_FORMAT = 'dd/M/yyyy';
48
+
49
+ export class DateInput extends React.PureComponent<{
50
+ value?: string;
51
+ onClick?: () => void;
52
+ children?: React.ReactNode;
53
+ }> {
54
+ public render() {
55
+ return (
56
+ <Button blank={true} type="primary" onClick={this.props.onClick}>
57
+ <div style={{ display: 'flex' }}>
58
+ <DateIcon style={{ marginRight: 4 }} />
59
+ {this.props.children ? this.props.children : this.props.value}
60
+ </div>
61
+ </Button>
62
+ );
63
+ }
64
+ }
65
+
66
+ const defaultSpecialTranslations = {
67
+ chooseDateError: 'Date not selected',
68
+ chooseDate: 'Choose date',
69
+ ...defaultBaseTranslations,
70
+ ...defaultDayTranslations,
71
+ ...defaultLabelTranslations,
72
+ };
73
+
74
+ export type OpeningHoursSpecialTranslations = Partial<
75
+ typeof defaultSpecialTranslations
76
+ >;
77
+
78
+ export class OpeningHoursSpecialRaw extends BaseInput<
79
+ OpeningHoursSpecialProps,
80
+ OpeningHoursSpecialState,
81
+ never,
82
+ OpeningHoursSpecialTranslations
83
+ > {
84
+ public static defaultProps = Object.assign({}, BaseInput.defaultProps, {
85
+ type: 'openingHoursSpecial',
86
+ placeholder: DAY_FORMAT,
87
+ });
88
+
89
+ constructor(props: OpeningHoursSpecialProps) {
90
+ super(props);
91
+ this.state = { ...this.state, ...{ touched: true } };
92
+ }
93
+
94
+ public componentDidMount() {
95
+ if (this.props.days) {
96
+ this.handleDates();
97
+ }
98
+ }
99
+
100
+ public componentDidUpdate(oldProps: OpeningHoursSpecialProps) {
101
+ if (this.props.days !== oldProps.days) {
102
+ this.handleDates();
103
+ }
104
+ }
105
+
106
+ public touch() {
107
+ return;
108
+ }
109
+
110
+ public render() {
111
+ if (!DatePicker) {
112
+ throw new Error(
113
+ 'You need to install react-datepicker in order to use special day picker'
114
+ );
115
+ }
116
+ const translations = this.getTranslations(defaultSpecialTranslations);
117
+ return (
118
+ <div
119
+ {...(this.props.id && {
120
+ id: this.props.id,
121
+ })}
122
+ className={
123
+ 'input__base openingHoursSpecial-input ' +
124
+ this.getValidationClass() +
125
+ ' ' +
126
+ (this.props.className ? this.props.className : '')
127
+ }
128
+ ref={this.containerRef}
129
+ >
130
+ {this.props.days.map((day, index) => (
131
+ <OpeningHoursDay
132
+ useCapacity={this.props.useCapacity}
133
+ {...(this.props.id && {
134
+ id: this.props.id + '-opening-hours-day-' + index.toString(),
135
+ })}
136
+ key={index}
137
+ label={
138
+ <span>
139
+ {OpeningHoursUtil.getLabelSuffix(day, this.props.translations)}
140
+ <span className="float-right">
141
+ <Button
142
+ {...(this.props.id && {
143
+ id: this.props.id + '-remove-button-' + index.toString(),
144
+ })}
145
+ className="openingHoursDay-input__button--remove line-height--0"
146
+ circular={true}
147
+ blank={true}
148
+ type="error"
149
+ onClick={this.removeDayClick(index)}
150
+ >
151
+ <PlusIcon />
152
+ </Button>
153
+ </span>
154
+ </span>
155
+ }
156
+ openingHours={{
157
+ times: day.times,
158
+ }}
159
+ onOpeningHoursChange={this.openingHoursChanged(index, day)}
160
+ title={
161
+ <DatePicker
162
+ {...(this.props.id && {
163
+ id: this.props.id + '-date-picker-' + index.toString(),
164
+ })}
165
+ customInput={
166
+ <DateInput>{!day.date && translations.chooseDate}</DateInput>
167
+ }
168
+ // placeholder={this.props.placeholder}
169
+ selected={day.date}
170
+ dateFormat={DAY_FORMAT}
171
+ onChange={this.dateChanged(index, day)}
172
+ excludeDates={this.props.days
173
+ .filter((d) => d.date)
174
+ .map((a) => a.date)}
175
+ withPortal={true}
176
+ minDate={new Date()}
177
+ />
178
+ }
179
+ translations={this.props.translations}
180
+ />
181
+ ))}
182
+ <span className="bar" />
183
+ {this.renderDefaultValidation()}
184
+ </div>
185
+ );
186
+ }
187
+
188
+ private handleDates() {
189
+ const translations = this.getTranslations(defaultSpecialTranslations);
190
+ const allDaysHaveDates =
191
+ !this.props.days || this.props.days.every((d) => Boolean(d.date));
192
+ if (allDaysHaveDates) {
193
+ this.setValid();
194
+ } else {
195
+ this.setInvalid([translations.chooseDateError]);
196
+ }
197
+ }
198
+
199
+ private removeDayClick = (index: number) => () =>
200
+ this.props.onDaysChange(
201
+ this.props.days.filter((d, indexInner) => indexInner !== index)
202
+ );
203
+
204
+ private dateChanged =
205
+ (index: number, day: OpeningHoursDayObj) => (date: Date) => {
206
+ let days = this.props.days.slice(0);
207
+ days[index] = { ...day, date };
208
+ this.props.onDaysChange(days);
209
+ };
210
+
211
+ private openingHoursChanged =
212
+ (index: number, day: OpeningHoursDayObj) => (openingHours) => {
213
+ let days = this.props.days.slice(0);
214
+ days[index] = { ...day, ...openingHours };
215
+ this.props.onDaysChange(days);
216
+ };
217
+ }
218
+
219
+ export const OpeningHoursSpecial = withThemeContext<
220
+ OpeningHoursSpecialProps,
221
+ InstanceType<typeof OpeningHoursSpecialRaw>
222
+ >(
223
+ withFormContext<OpeningHoursSpecialProps>(OpeningHoursSpecialRaw),
224
+ 'openingHoursSpecial'
225
+ );
226
+
227
+ export default OpeningHoursSpecial;
@@ -0,0 +1,2 @@
1
+ export * from './OpeningHoursSpecial';
2
+ export { default } from './OpeningHoursSpecial';