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,1065 @@
1
+ import * as React from 'react';
2
+ import {
3
+ Dropdown,
4
+ Form,
5
+ Time,
6
+ Text,
7
+ Select,
8
+ Submit,
9
+ DynamicSubmit,
10
+ Checkbox,
11
+ Radio,
12
+ RadioContainer,
13
+ Money,
14
+ OpeningHoursDay,
15
+ MoneyWithCurrency,
16
+ OpeningHoursDayObj,
17
+ OpeningHoursWeek,
18
+ OpeningHoursSpecialDayObj,
19
+ OpeningHoursSpecial,
20
+ InputHeader,
21
+ Button,
22
+ ButtonTypes,
23
+ Tags,
24
+ Tag,
25
+ NumberValidator,
26
+ TextArea,
27
+ OpeningHoursWeekDayObj,
28
+ SelectValue,
29
+ TextProps,
30
+ ValidatorTypes,
31
+ IBaseValidator,
32
+ ButtonProps,
33
+ FormValidationSummary,
34
+ InputHeaderRaw,
35
+ TimeSpan,
36
+ TimeSpanUnit,
37
+ } from '../lib/index';
38
+ import moment, { Duration } from 'moment';
39
+
40
+ export interface BasicProps {}
41
+
42
+ export interface BasicState {
43
+ name: string | null;
44
+ gender: 'M' | 'F' | '';
45
+ email: string;
46
+ age: string;
47
+ min1: string;
48
+ hideNumber: boolean | undefined;
49
+ justNumber: number;
50
+ checkbox1: boolean;
51
+ checkbox2: boolean;
52
+ validateFormSubmit: boolean;
53
+ food: string;
54
+ drink: string;
55
+ touchOn: 'blur' | 'focus';
56
+ submitDisablesInputs: boolean;
57
+ simulateUnmount: boolean;
58
+ prices1: MoneyWithCurrency[];
59
+ prices2: MoneyWithCurrency[];
60
+ prices3: MoneyWithCurrency[];
61
+ time1: Duration;
62
+ time2: Duration;
63
+ timeSpan: Duration;
64
+ openingHours: OpeningHoursDayObj;
65
+ openingHoursWeek: OpeningHoursWeekDayObj[];
66
+ openingHoursWeekDay: OpeningHoursDayObj;
67
+ openingHoursSpecial: OpeningHoursSpecialDayObj[];
68
+ website: string;
69
+ tags: Tag[];
70
+ selectedValues: SelectValue[];
71
+ multipleValues: SelectValue[];
72
+ multipleReadonly: boolean;
73
+ textAreaText: string;
74
+ }
75
+
76
+ export class AgeValidator {
77
+ public static instance = new AgeValidator();
78
+ public Validate(
79
+ value: string,
80
+ isRequired: boolean,
81
+ addError: (error: string) => void
82
+ ): boolean {
83
+ let num = Number(value);
84
+ if (!isNaN(num)) {
85
+ if (num <= 0) {
86
+ addError('Not born yet?');
87
+ return false;
88
+ }
89
+ if (num > 122) {
90
+ addError('Older than Jeanne Calment? Really?');
91
+ return false;
92
+ }
93
+ return true;
94
+ } else {
95
+ addError('Invalid age');
96
+ }
97
+ return false;
98
+ }
99
+ }
100
+
101
+ const existingTags: Tag[] = [
102
+ {
103
+ id: 1,
104
+ name: 'Food',
105
+ },
106
+ {
107
+ id: 2,
108
+ name: 'Drink',
109
+ },
110
+ {
111
+ id: 3,
112
+ name: 'Beer',
113
+ },
114
+ {
115
+ id: 4,
116
+ name: 'Wine',
117
+ },
118
+ {
119
+ id: 5,
120
+ name: 'Gluten free',
121
+ },
122
+ {
123
+ id: 6,
124
+ name: 'Fruit',
125
+ },
126
+ ];
127
+
128
+ const currencies1 = [
129
+ { label: 'GBP', value: 'GBP' },
130
+ { label: 'EUR', value: 'EUR' },
131
+ ];
132
+
133
+ const currencies2 = [
134
+ { label: 'GBP', value: 'GBP' },
135
+ { label: 'EUR', value: 'EUR' },
136
+ { label: 'USD', value: 'USD' },
137
+ ];
138
+
139
+ const currencies3 = [
140
+ { label: 'GBP', value: 'GBP', forceSelected: true },
141
+ { label: 'EUR', value: 'EUR' },
142
+ { label: 'USD', value: 'USD' },
143
+ ];
144
+
145
+ const genderValues = [
146
+ { value: 'M', label: 'Male' },
147
+ { value: 'F', label: 'Female' },
148
+ ];
149
+
150
+ const tagsEmailTextProps: TextProps = {
151
+ validators: ['email'],
152
+ };
153
+
154
+ const emailValidators: ValidatorTypes[] = ['email'];
155
+
156
+ const urlValidators: ValidatorTypes[] = ['url'];
157
+
158
+ const customAgeValidator: IBaseValidator[] = [AgeValidator.instance];
159
+
160
+ const customNumberValidator: IBaseValidator[] = [
161
+ new NumberValidator({ min: 0 }),
162
+ ];
163
+
164
+ const numberValidator: TextProps['validators'] = ['number'];
165
+
166
+ const types: ButtonTypes[] = [
167
+ 'primary',
168
+ 'warning',
169
+ 'error',
170
+ 'info',
171
+ 'success',
172
+ 'gray',
173
+ 'white',
174
+ 'none',
175
+ ];
176
+ const ButtonsShowcase: React.FC<ButtonProps> = (props) => {
177
+ return (
178
+ <div
179
+ className="px-2"
180
+ style={{
181
+ backgroundColor: 'rgb(248, 247, 247)',
182
+ display: 'flex',
183
+ flexWrap: 'wrap',
184
+ }}
185
+ >
186
+ {types.map((item, index) => (
187
+ <React.Fragment key={index}>
188
+ <Button type={item} {...props}>
189
+ {item}
190
+ </Button>
191
+ <Button type={item} disabled={true} {...props}>
192
+ Disabled
193
+ </Button>
194
+ </React.Fragment>
195
+ ))}
196
+ </div>
197
+ );
198
+ };
199
+
200
+ ButtonsShowcase.defaultProps = {
201
+ className: 'my-2 mr-2',
202
+ };
203
+
204
+ export class Basic extends React.PureComponent<BasicProps, BasicState> {
205
+ private form: Form | undefined;
206
+
207
+ private specialDaysInputHeader: React.RefObject<InputHeaderRaw>;
208
+
209
+ private initialState: BasicState = {
210
+ gender: '',
211
+ name: 'Test',
212
+ email: '',
213
+ age: '',
214
+ min1: '',
215
+ checkbox1: true,
216
+ checkbox2: false,
217
+ validateFormSubmit: true,
218
+ food: 'breakfast',
219
+ drink: 'breakfast',
220
+ touchOn: 'focus',
221
+ submitDisablesInputs: true,
222
+ simulateUnmount: false,
223
+ prices1: [],
224
+ prices2: [],
225
+ prices3: [],
226
+ timeSpan: moment.duration(0),
227
+ time1: moment.duration(0),
228
+ time2: moment.duration(0),
229
+ openingHours: {
230
+ times: [],
231
+ },
232
+ openingHoursWeek: [],
233
+ openingHoursWeekDay: {
234
+ times: [],
235
+ },
236
+ openingHoursSpecial: [],
237
+ website: '',
238
+ tags: [],
239
+ selectedValues: [],
240
+ multipleValues: [
241
+ { value: 'One option' },
242
+ { value: 'Second option' },
243
+ { value: 'Third option' },
244
+ { value: 'one more option' },
245
+ { value: 'rly long last option' },
246
+ ],
247
+ multipleReadonly: false,
248
+ textAreaText: '',
249
+ justNumber: 5,
250
+ hideNumber: undefined,
251
+ };
252
+
253
+ constructor(props: BasicProps) {
254
+ super(props);
255
+ this.state = this.initialState;
256
+ this.handleGenderChange = this.handleGenderChange.bind(this);
257
+ this.submitForm = this.submitForm.bind(this);
258
+ this.dynamicSubmitSuccessForm = this.dynamicSubmitSuccessForm.bind(this);
259
+ this.dynamicSubmitErrorForm = this.dynamicSubmitErrorForm.bind(this);
260
+ this.specialDaysInputHeader = React.createRef();
261
+ }
262
+
263
+ public render() {
264
+ let time2Max = moment.duration().add(1, 'hour').add(5, 'minutes');
265
+ let time2Min = moment.duration().subtract(1, 'hour').subtract(5, 'minutes');
266
+
267
+ return (
268
+ <div className="container">
269
+ <div className="row mt-5">
270
+ <div className="col-lg-12">
271
+ <div className="card">
272
+ <div className="card-block p-0">
273
+ <Form noValidate={true} className="input__form">
274
+ <Checkbox
275
+ label="Turn form validation on or off"
276
+ onChecked={this.formValidationToggle}
277
+ checked={this.state.validateFormSubmit}
278
+ title="Validate form submit"
279
+ />
280
+ <RadioContainer title="Touch on">
281
+ <Radio
282
+ name="touch"
283
+ value="blur"
284
+ label="Blur"
285
+ result={this.state.touchOn}
286
+ onChecked={this.touchOnChecked}
287
+ />
288
+ <Radio
289
+ name="touch"
290
+ value="focus"
291
+ label="Focus"
292
+ result={this.state.touchOn}
293
+ onChecked={this.touchOnChecked}
294
+ />
295
+ </RadioContainer>
296
+ <Checkbox
297
+ label="Disables inputs"
298
+ onChecked={this.disablesInputsChecked}
299
+ checked={this.state.submitDisablesInputs}
300
+ title="Submit"
301
+ />
302
+ <Checkbox
303
+ label="Unmount"
304
+ onChecked={this.simulateUnmountChecked}
305
+ checked={this.state.simulateUnmount}
306
+ title="Simulate"
307
+ />
308
+ </Form>
309
+ </div>
310
+ </div>
311
+ </div>
312
+ </div>
313
+ <div className="row my-5">
314
+ <div className="col-lg-12">
315
+ <div className={'card '}>
316
+ <div className="card-block p-0">
317
+ {!this.state.simulateUnmount && (
318
+ <Form
319
+ noValidate={true}
320
+ ref={this.formRef}
321
+ /*extraComponents={{
322
+ test: {
323
+ // tslint:disable-next-line: no-any
324
+ componentApi: {} as any,
325
+ validation: {
326
+ isValid: false,
327
+ errors: ['Test'],
328
+ name: 'Test',
329
+ },
330
+ },
331
+ }}*/
332
+ >
333
+ <InputHeader
334
+ icon={<i className="material-icons md-48">edit</i>}
335
+ title={'Example form'}
336
+ subTitle={
337
+ "And this is subtitle. There's also icon on the left"
338
+ }
339
+ showExpandAll={true}
340
+ collapsible={true}
341
+ collapsedDefault={false}
342
+ mainButton={
343
+ <Submit
344
+ type={'primary'}
345
+ onClick={this.submitForm}
346
+ validateForm={this.state.validateFormSubmit}
347
+ >
348
+ Submit
349
+ </Submit>
350
+ }
351
+ extraButtons={[
352
+ <Button key={1} dropdown={true} onClick={this.touchAll}>
353
+ Touch all
354
+ </Button>,
355
+ <Button
356
+ key={2}
357
+ dropdown={true}
358
+ onClick={this.unTouchAll}
359
+ >
360
+ Un-touch all
361
+ </Button>,
362
+ ]}
363
+ shouldToggleCollapseOnHeaderClick={true}
364
+ >
365
+ <RadioContainer title="Drinks">
366
+ <Radio
367
+ name="drink"
368
+ value="wine"
369
+ label="Wine"
370
+ result={this.state.drink}
371
+ onChecked={this.drinksChecked}
372
+ />
373
+ <Radio
374
+ name="drink"
375
+ value="whiskey"
376
+ label="Whiskey"
377
+ result={this.state.drink}
378
+ onChecked={this.drinksChecked}
379
+ />
380
+ <Radio
381
+ name="drink"
382
+ value="water"
383
+ label="Water"
384
+ result={this.state.drink}
385
+ onChecked={this.drinksChecked}
386
+ />
387
+ </RadioContainer>
388
+ <RadioContainer
389
+ title="Drinks (horizontal)"
390
+ horizontal={true}
391
+ >
392
+ <Radio
393
+ name="drink2"
394
+ value="wine"
395
+ label="Wine"
396
+ result={this.state.drink}
397
+ onChecked={this.drinksChecked}
398
+ />
399
+ <Radio
400
+ name="drink2"
401
+ value="whiskey"
402
+ label="Whiskey"
403
+ result={this.state.drink}
404
+ onChecked={this.drinksChecked}
405
+ />
406
+ <Radio
407
+ name="drink2"
408
+ value="water"
409
+ label="Water"
410
+ result={this.state.drink}
411
+ onChecked={this.drinksChecked}
412
+ />
413
+ </RadioContainer>
414
+ <Checkbox
415
+ required={true}
416
+ label="Smart"
417
+ onChecked={this.checkbox1Checked}
418
+ checked={this.state.checkbox1}
419
+ title="Dress code"
420
+ tooltip="With tooltip"
421
+ />
422
+ <Checkbox
423
+ label="(optional)"
424
+ onChecked={this.checkbox2Checked}
425
+ checked={this.state.checkbox2}
426
+ title="Wallet parking"
427
+ />
428
+ <Text
429
+ touchOn={this.state.touchOn}
430
+ required={true}
431
+ label="Your name"
432
+ onChange={this.nameChanged}
433
+ value={this.state.name ?? ''}
434
+ title="Name"
435
+ showClearButton={true}
436
+ infoText="This is some info text"
437
+ />
438
+ <Button onClick={() => this.setState({ name: null })}>
439
+ Test
440
+ </Button>
441
+ <div className="px-3">
442
+ <Text
443
+ touchOn={this.state.touchOn}
444
+ required={true}
445
+ label="Your name (no title)"
446
+ onChange={this.nameChanged}
447
+ value={this.state.name ?? ''}
448
+ tooltip={
449
+ <p className="m-0">
450
+ This is some help text. It can also do <b>bold</b>{' '}
451
+ and other stuff.
452
+ </p>
453
+ }
454
+ />
455
+ </div>
456
+ <Text
457
+ touchOn={this.state.touchOn}
458
+ label="Your name"
459
+ onChange={this.nameChanged}
460
+ value={this.state.name ?? ''}
461
+ title="Name readonly"
462
+ readOnly={true}
463
+ />
464
+ <Select
465
+ touchOn={this.state.touchOn}
466
+ label={'Your gender'}
467
+ values={genderValues}
468
+ onChange={this.handleGenderChange}
469
+ value={this.state.gender}
470
+ title="Gender"
471
+ />
472
+ <TextArea
473
+ touchOn={this.state.touchOn}
474
+ required={true}
475
+ label="Textarea"
476
+ onChange={this.textAreaChanged}
477
+ value={this.state.textAreaText}
478
+ title="Textarea"
479
+ />
480
+ <TextArea
481
+ touchOn={this.state.touchOn}
482
+ label="Textarea"
483
+ onChange={this.textAreaChanged}
484
+ value={this.state.textAreaText}
485
+ title="Readonly"
486
+ readOnly={true}
487
+ />
488
+ <InputHeader
489
+ title={'Some collapsed stuff'}
490
+ collapsible={true}
491
+ shouldToggleCollapseOnHeaderClick={true}
492
+ subTitle={
493
+ "Helpful text that describes what's collapsed here"
494
+ }
495
+ tooltip="With tooltip"
496
+ >
497
+ <Text
498
+ touchOn={this.state.touchOn}
499
+ validators={emailValidators}
500
+ required={false}
501
+ label="Email"
502
+ value={this.state.email}
503
+ onChange={this.emailChanged}
504
+ title="Your email"
505
+ />
506
+ <Text
507
+ touchOn={this.state.touchOn}
508
+ readOnly={true}
509
+ value={'You can select me but I am readonly'}
510
+ title="Readonly"
511
+ />
512
+ <Text
513
+ touchOn={this.state.touchOn}
514
+ validators={urlValidators}
515
+ required={false}
516
+ label="Website"
517
+ value={this.state.website}
518
+ onChange={this.websiteChanged}
519
+ title="Your website"
520
+ />
521
+ <Text
522
+ touchOn={this.state.touchOn}
523
+ customValidators={customAgeValidator}
524
+ label="Your age (optional)"
525
+ value={this.state.age}
526
+ onChange={this.ageChanged}
527
+ title="Age"
528
+ type="number"
529
+ />
530
+ <Text
531
+ touchOn={this.state.touchOn}
532
+ customValidators={customNumberValidator}
533
+ label="Min 1"
534
+ value={this.state.min1}
535
+ onChange={this.min1Changed}
536
+ title="Number"
537
+ />
538
+ </InputHeader>
539
+ <Button onClick={() => this.setState({ justNumber: 5 })}>
540
+ Reset just number to 5
541
+ </Button>
542
+ <Checkbox
543
+ checked={this.state.hideNumber}
544
+ onChecked={(e) =>
545
+ this.setState({ hideNumber: e.target.checked })
546
+ }
547
+ label="Hide/show number inputs"
548
+ supportsIndeterminate={true}
549
+ />
550
+ {!this.state.hideNumber && (
551
+ <>
552
+ <Text
553
+ touchOn={this.state.touchOn}
554
+ validators={numberValidator}
555
+ label={`Just number (required) - ${this.state.justNumber}`}
556
+ number={this.state.justNumber}
557
+ onNumberChange={this.justNumberChanged}
558
+ title="Number"
559
+ required={true}
560
+ />
561
+ <Text
562
+ touchOn={this.state.touchOn}
563
+ validators={numberValidator}
564
+ label={`Just number - ${this.state.justNumber}`}
565
+ number={this.state.justNumber}
566
+ onNumberChange={this.justNumberChanged}
567
+ title="Number"
568
+ />
569
+ </>
570
+ )}
571
+ <Money
572
+ currencies={currencies1}
573
+ prices={this.state.prices1}
574
+ touchOn={this.state.touchOn}
575
+ required={true}
576
+ onPricesChange={this.prices1Changed}
577
+ title="Price"
578
+ disableDelete={true}
579
+ />
580
+ <Money
581
+ currencies={currencies2}
582
+ prices={this.state.prices2}
583
+ allowMultiple={true}
584
+ touchOn={this.state.touchOn}
585
+ required={false}
586
+ onPricesChange={this.prices2Changed}
587
+ title="Price multiple"
588
+ />
589
+ <Money
590
+ currencies={currencies3}
591
+ prices={this.state.prices3}
592
+ allowMultiple={true}
593
+ touchOn={this.state.touchOn}
594
+ required={false}
595
+ onPricesChange={this.prices3Changed}
596
+ label="Price multiple forced"
597
+ />
598
+ <Time
599
+ touchOn={this.state.touchOn}
600
+ time={this.state.time1}
601
+ timeChange={this.time1Changed}
602
+ title="Time"
603
+ />
604
+ <Time
605
+ max={time2Max}
606
+ min={time2Min}
607
+ touchOn={this.state.touchOn}
608
+ time={this.state.time2}
609
+ timeChange={this.time2Changed}
610
+ label="With Min/Max"
611
+ />
612
+ <Time
613
+ max={time2Max}
614
+ min={time2Min}
615
+ touchOn={this.state.touchOn}
616
+ time={this.state.time2}
617
+ timeChange={this.time2Changed}
618
+ label="With Min/Max"
619
+ />
620
+ <TimeSpan
621
+ touchOn={this.state.touchOn}
622
+ timeSpan={this.state.timeSpan}
623
+ timeSpanChange={this.timeSpanChanged}
624
+ title="Time span"
625
+ validUnits={TimeSpanUnit.Hour | TimeSpanUnit.Minute}
626
+ />
627
+ <TimeSpan
628
+ touchOn={this.state.touchOn}
629
+ timeSpan={this.state.timeSpan}
630
+ timeSpanChange={this.timeSpanChanged}
631
+ label="Time span"
632
+ validUnits={TimeSpanUnit.Hour | TimeSpanUnit.Minute}
633
+ />
634
+ <OpeningHoursDay
635
+ label={'Opening hours sample day'}
636
+ touchOn={this.state.touchOn}
637
+ required={false}
638
+ onOpeningHoursChange={this.openingHoursChanged}
639
+ openingHours={this.state.openingHours}
640
+ title="Opening hours"
641
+ useCapacity={true}
642
+ />
643
+ <InputHeader
644
+ title={'Opening hours'}
645
+ collapsible={true}
646
+ mainButton={
647
+ <Button type={'primary'}>Hero button</Button>
648
+ }
649
+ extraButtons={[
650
+ <Button key={1} dropdown={true}>
651
+ Extra button 1
652
+ </Button>,
653
+ <Button key={2} dropdown={true}>
654
+ Extra button 2
655
+ </Button>,
656
+ ]}
657
+ >
658
+ <OpeningHoursWeek
659
+ touchOn={this.state.touchOn}
660
+ required={false}
661
+ onDaysChange={this.openingHoursWeekChanged}
662
+ days={this.state.openingHoursWeek}
663
+ standardDay={this.state.openingHoursWeekDay}
664
+ onStandardDayChange={
665
+ this.openingHoursWeekStandardDayChanged
666
+ }
667
+ useCapacity={true}
668
+ />
669
+ </InputHeader>
670
+ <InputHeader
671
+ className={''}
672
+ title={'Special days opening hours'}
673
+ collapsible={true}
674
+ ref={this.specialDaysInputHeader}
675
+ mainButton={
676
+ <Button
677
+ type={'primary'}
678
+ onClick={this.specialDaysAddClick}
679
+ >
680
+ Add
681
+ </Button>
682
+ }
683
+ >
684
+ <OpeningHoursSpecial
685
+ touchOn={this.state.touchOn}
686
+ required={false}
687
+ onDaysChange={this.openingHoursSpecialChanged}
688
+ days={this.state.openingHoursSpecial}
689
+ placeholder="Choose date"
690
+ />
691
+ </InputHeader>
692
+ <InputHeader
693
+ className={''}
694
+ title={'Buttons'}
695
+ mainButton={
696
+ <Button type={'primary'}>Hero button</Button>
697
+ }
698
+ >
699
+ <div className="p-3 buttons-row">
700
+ <h3 className="text-center">Standard</h3>
701
+ <ButtonsShowcase />
702
+ </div>
703
+ <div className="p-3 buttons-row">
704
+ <h3 className="text-center">No shadow</h3>
705
+ <ButtonsShowcase noShadow={true} />
706
+ </div>
707
+ <div className="p-3 buttons-row">
708
+ <h3 className="text-center">Hero</h3>
709
+ <ButtonsShowcase hero={true} />
710
+ </div>
711
+ <div className="p-3 buttons-row">
712
+ <h3 className="text-center">Outlined</h3>
713
+ <ButtonsShowcase outlined={true} />
714
+ </div>
715
+ <div className="p-3 buttons-row">
716
+ <h3 className="text-center">Blank</h3>
717
+ <ButtonsShowcase blank={true} />
718
+ </div>
719
+ <div className="p-3 buttons-row">
720
+ <h3 className="text-center">Small</h3>
721
+ <ButtonsShowcase small={true} />
722
+ </div>
723
+ <div className="p-3 buttons-row">
724
+ <h3 className="text-center">Circular</h3>
725
+ <ButtonsShowcase circular={true} />
726
+ </div>
727
+ <div className="p-3 buttons-row">
728
+ <h3 className="text-center">Dropdown</h3>
729
+ <ButtonsShowcase dropdown={true} className="" />
730
+ </div>
731
+ <div className="p-3 buttons-row">
732
+ <h3 className="text-center">Unobtrusive</h3>
733
+ <ButtonsShowcase unobtrusive={true} className="" />
734
+ </div>
735
+ <div className="p-3 buttons-row">
736
+ <h3 className="text-center">Text</h3>
737
+ <ButtonsShowcase text={true} className="" />
738
+ </div>
739
+ <div className="p-3 buttons-row">
740
+ <h3 className="text-center">Disable after click</h3>
741
+ <ButtonsShowcase
742
+ disableAfterClickMs={2000}
743
+ disableAfterClick={true}
744
+ />
745
+ </div>
746
+ </InputHeader>
747
+ <InputHeader
748
+ className={''}
749
+ title={'Multiple'}
750
+ collapsible={true}
751
+ collapsedDefault={false}
752
+ >
753
+ <Checkbox
754
+ // label="Multiple readonly"
755
+ onChecked={this.multipleReadonlyChecked}
756
+ checked={this.state.multipleReadonly}
757
+ title="Multiple readonly"
758
+ />
759
+ <Tags
760
+ title="Tags example"
761
+ label="And label"
762
+ textProps={{ placeholder: 'With placeholder' }}
763
+ readOnly={this.state.multipleReadonly}
764
+ allowNew={true}
765
+ tags={this.state.tags}
766
+ onTagsChanged={this.tagsChanged}
767
+ />
768
+ <Tags
769
+ title="Tags suggestions"
770
+ label="Choose or create tags"
771
+ fetchExistingTags={(startsWith) =>
772
+ new Promise((resolve) =>
773
+ setTimeout(
774
+ () =>
775
+ resolve(
776
+ existingTags.filter((e) =>
777
+ e.name.includes(startsWith)
778
+ )
779
+ ),
780
+ 1000
781
+ )
782
+ )
783
+ }
784
+ suggestionsEmptyComponent={'Not found'}
785
+ readOnly={this.state.multipleReadonly}
786
+ tags={this.state.tags}
787
+ onTagsChanged={this.tagsChanged}
788
+ filterExistingTags={(t, tags) => tags}
789
+ />
790
+ <Tags
791
+ title="Tags suggestions"
792
+ label="Choose tags"
793
+ readOnly={this.state.multipleReadonly}
794
+ allowNew={false}
795
+ maxTags={2}
796
+ existingTags={existingTags}
797
+ tags={this.state.tags}
798
+ onTagsChanged={this.tagsChanged}
799
+ showChips={true}
800
+ />
801
+ <Tags
802
+ title="Tags max 3"
803
+ maxTags={2}
804
+ readOnly={this.state.multipleReadonly}
805
+ allowNew={true}
806
+ tags={this.state.tags}
807
+ onTagsChanged={this.tagsChanged}
808
+ showChips={true}
809
+ onTagClick={(t) => console.warn(t)}
810
+ />
811
+ <Tags
812
+ title="Tags only email"
813
+ label="With label"
814
+ maxTags={2}
815
+ allowNew={true}
816
+ readOnly={this.state.multipleReadonly}
817
+ tags={this.state.tags}
818
+ onTagsChanged={this.tagsChanged}
819
+ suggestionsEmptyComponent={null}
820
+ textProps={tagsEmailTextProps}
821
+ />
822
+ <Select
823
+ required={true}
824
+ label="One or more"
825
+ title="Multiselect"
826
+ multiple={true}
827
+ defaultEmpty={true}
828
+ readOnly={this.state.multipleReadonly}
829
+ selectedValues={this.state.selectedValues}
830
+ values={this.state.multipleValues}
831
+ onSelectedValuesChange={this.selectedValuesChanged}
832
+ />
833
+ <Button
834
+ onClick={(e) =>
835
+ this.setState({
836
+ selectedValues: [{ value: 'One option' }],
837
+ })
838
+ }
839
+ >
840
+ Test
841
+ </Button>
842
+ </InputHeader>
843
+ <InputHeader
844
+ className={''}
845
+ title={'Dropdown'}
846
+ collapsible={true}
847
+ collapsedDefault={false}
848
+ >
849
+ <div className="p-3 buttons-row d-flex">
850
+ <Dropdown
851
+ className="position-relative mr-3"
852
+ header={
853
+ <i className="material-icons">notifications</i>
854
+ }
855
+ notificationCount={5}
856
+ submenuClassName="p-2"
857
+ showArrow={false}
858
+ >
859
+ <ButtonsShowcase dropdown={true} className="" />
860
+ </Dropdown>
861
+ <Dropdown
862
+ className="position-relative mr-3"
863
+ header={'String header'}
864
+ notificationCount={5}
865
+ submenuClassName="p-2"
866
+ >
867
+ <li>Item</li>
868
+ </Dropdown>
869
+ <Dropdown
870
+ className="position-relative"
871
+ header={
872
+ <Button type="primary">Function header</Button>
873
+ }
874
+ showArrow={false}
875
+ submenuClassName="p-2"
876
+ >
877
+ <li>Item</li>
878
+ </Dropdown>
879
+ </div>
880
+ </InputHeader>
881
+ <FormValidationSummary />
882
+ <div className="row justify-content-center align-items-center my-2">
883
+ <DynamicSubmit
884
+ submitDisablesInputs={this.state.submitDisablesInputs}
885
+ className="ml-2"
886
+ type={'primary'}
887
+ normalClassName=""
888
+ errorClassName="btn-danger"
889
+ submittingClassName="btn-secondary"
890
+ errorChildren={'Error'}
891
+ submittingChildren={'Working on it'}
892
+ onClick={this.dynamicSubmitSuccessForm}
893
+ validateForm={this.state.validateFormSubmit}
894
+ >
895
+ Ajax Error
896
+ </DynamicSubmit>
897
+ <DynamicSubmit
898
+ submitDisablesInputs={this.state.submitDisablesInputs}
899
+ className="ml-2"
900
+ normalClassName=""
901
+ type={'primary'}
902
+ submittingClassName="btn-secondary"
903
+ successClassName="btn-success"
904
+ submittingChildren={'Working on it'}
905
+ successChildren={'That worked'}
906
+ onClick={this.dynamicSubmitErrorForm}
907
+ validateForm={this.state.validateFormSubmit}
908
+ >
909
+ Ajax Success
910
+ </DynamicSubmit>
911
+ </div>
912
+ </InputHeader>
913
+ </Form>
914
+ )}
915
+ </div>
916
+ </div>
917
+ </div>
918
+ </div>
919
+ </div>
920
+ );
921
+ }
922
+
923
+ private formRef = (el: Form) => (this.form = el);
924
+
925
+ private selectedValuesChanged = (selectedValues: SelectValue[]) =>
926
+ this.setState({ selectedValues });
927
+
928
+ private tagsChanged = (tags: Tag[]) => this.setState({ tags });
929
+
930
+ private multipleReadonlyChecked = () =>
931
+ this.setState({ multipleReadonly: !this.state.multipleReadonly });
932
+
933
+ private openingHoursSpecialChanged = (days: OpeningHoursSpecialDayObj[]) =>
934
+ this.setState({ openingHoursSpecial: days });
935
+
936
+ private specialDaysAddClick = () => {
937
+ this.setState(
938
+ {
939
+ openingHoursSpecial: this.state.openingHoursSpecial.concat([
940
+ { date: undefined, times: [] },
941
+ ]),
942
+ },
943
+ () => this.specialDaysInputHeader.current?.expand()
944
+ );
945
+ };
946
+
947
+ private openingHoursWeekStandardDayChanged = (day: OpeningHoursDayObj) =>
948
+ this.setState({ openingHoursWeekDay: day });
949
+
950
+ private openingHoursWeekChanged = (days: OpeningHoursWeekDayObj[]) =>
951
+ this.setState({ openingHoursWeek: days });
952
+
953
+ private openingHoursChanged = (openingHours: OpeningHoursDayObj) =>
954
+ this.setState({ openingHours: openingHours });
955
+
956
+ private time2Changed = (time: Duration) => this.setState({ time2: time });
957
+
958
+ private time1Changed = (time: Duration) => this.setState({ time1: time });
959
+
960
+ private timeSpanChanged = (timeSpan: Duration) => this.setState({ timeSpan });
961
+
962
+ private prices2Changed = (prices: MoneyWithCurrency[]) =>
963
+ this.setState({ prices2: prices });
964
+
965
+ private prices3Changed = (prices: MoneyWithCurrency[]) =>
966
+ this.setState({ prices3: prices });
967
+
968
+ private prices1Changed = (prices: MoneyWithCurrency[]) =>
969
+ this.setState({ prices1: prices });
970
+
971
+ private min1Changed = (e: React.ChangeEvent<HTMLInputElement>) =>
972
+ this.setState({ min1: e.target.value });
973
+
974
+ private justNumberChanged = (num: number) =>
975
+ this.setState({ justNumber: num });
976
+
977
+ private ageChanged = (e: React.ChangeEvent<HTMLInputElement>) =>
978
+ this.setState({ age: e.target.value });
979
+
980
+ private websiteChanged = (e: React.ChangeEvent<HTMLInputElement>) =>
981
+ this.setState({ website: e.target.value });
982
+
983
+ private emailChanged = (e: React.ChangeEvent<HTMLInputElement>) =>
984
+ this.setState({ email: e.target.value });
985
+
986
+ private textAreaChanged = (e: React.ChangeEvent<HTMLTextAreaElement>) =>
987
+ this.setState({ textAreaText: e.target.value });
988
+
989
+ private nameChanged = (e: React.ChangeEvent<HTMLInputElement>) =>
990
+ this.setState({ name: e.target.value });
991
+
992
+ private checkbox2Checked = () =>
993
+ this.setState({ checkbox2: !this.state.checkbox2 });
994
+
995
+ private checkbox1Checked = () =>
996
+ this.setState({ checkbox1: !this.state.checkbox1 });
997
+
998
+ private drinksChecked = (value: string) => this.setState({ drink: value });
999
+
1000
+ private unTouchAll = (e: React.MouseEvent<HTMLButtonElement>) => {
1001
+ e.preventDefault();
1002
+ this.form?.unTouchAll();
1003
+ };
1004
+
1005
+ private simulateUnmountChecked = () =>
1006
+ this.setState({ simulateUnmount: !this.state.simulateUnmount });
1007
+
1008
+ private disablesInputsChecked = () =>
1009
+ this.setState({ submitDisablesInputs: !this.state.submitDisablesInputs });
1010
+
1011
+ private touchOnChecked = (value: string) =>
1012
+ this.setState({ touchOn: value as 'blur' | 'focus' });
1013
+
1014
+ private formValidationToggle = () =>
1015
+ this.setState({ validateFormSubmit: !this.state.validateFormSubmit });
1016
+
1017
+ private touchAll = (e: React.MouseEvent<HTMLButtonElement>) => {
1018
+ e.preventDefault();
1019
+ this.form?.touchAll();
1020
+ };
1021
+
1022
+ private handleGenderChange(e: React.ChangeEvent<HTMLSelectElement>) {
1023
+ const val = e.target.value;
1024
+ if (val === 'M' || val === 'F') {
1025
+ this.setState({ gender: val });
1026
+ }
1027
+ }
1028
+
1029
+ private submitForm(e: React.MouseEvent) {
1030
+ e && e.preventDefault();
1031
+ this.setState(this.initialState);
1032
+ }
1033
+
1034
+ private dynamicSubmitSuccessForm(
1035
+ e: React.MouseEvent<HTMLButtonElement>,
1036
+ submitting: () => void,
1037
+ error: () => void,
1038
+ success: () => void,
1039
+ reset: () => void
1040
+ ) {
1041
+ e.preventDefault();
1042
+ submitting();
1043
+ setTimeout(() => {
1044
+ error();
1045
+ setTimeout(() => reset(), 3000);
1046
+ }, 1000);
1047
+ }
1048
+
1049
+ private dynamicSubmitErrorForm(
1050
+ e: React.MouseEvent<HTMLButtonElement>,
1051
+ submitting: () => void,
1052
+ error: () => void,
1053
+ success: () => void,
1054
+ reset: () => void
1055
+ ) {
1056
+ e.preventDefault();
1057
+ submitting();
1058
+ setTimeout(() => {
1059
+ success();
1060
+ setTimeout(() => reset(), 3000);
1061
+ }, 1000);
1062
+ }
1063
+ }
1064
+
1065
+ export default Basic;