@coopdigital/react 0.49.0 → 0.50.0

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 (299) hide show
  1. package/dist/components/Button/Button.js +2 -2
  2. package/dist/components/Button/index.js +5 -0
  3. package/dist/components/Card/Card.js +4 -4
  4. package/dist/components/Checkbox/Checkbox.d.ts +7 -1
  5. package/dist/components/Checkbox/Checkbox.js +4 -0
  6. package/dist/components/DatePicker/DatePicker.d.ts +61 -0
  7. package/dist/components/DatePicker/DatePicker.js +135 -0
  8. package/dist/components/DatePicker/datepicker-utils.d.ts +68 -0
  9. package/dist/components/DatePicker/datepicker-utils.js +215 -0
  10. package/dist/components/DatePicker/index.d.ts +4 -0
  11. package/dist/components/Field/Field.js +29 -26
  12. package/dist/components/Field/index.js +6 -0
  13. package/dist/components/Pill/Pill.js +2 -2
  14. package/dist/components/Popover/Popover.d.ts +74 -0
  15. package/dist/components/Popover/Popover.js +75 -0
  16. package/dist/components/Popover/index.d.ts +4 -0
  17. package/dist/components/Popover/index.js +5 -0
  18. package/dist/components/Radio/Radio.d.ts +7 -1
  19. package/dist/components/Radio/Radio.js +4 -0
  20. package/dist/components/Searchbox/Searchbox.js +4 -3
  21. package/dist/components/Select/Select.d.ts +3 -0
  22. package/dist/components/Select/Select.js +4 -1
  23. package/dist/components/Signpost/Signpost.js +2 -2
  24. package/dist/components/Tag/Tag.js +2 -2
  25. package/dist/components/TextInput/TextInput.d.ts +6 -1
  26. package/dist/components/TextInput/TextInput.js +3 -0
  27. package/dist/components/Textarea/Textarea.d.ts +8 -5
  28. package/dist/components/Textarea/Textarea.js +5 -4
  29. package/dist/hooks/useSlots.js +3 -3
  30. package/dist/index.d.ts +2 -0
  31. package/dist/index.js +2 -0
  32. package/dist/node_modules/@date-fns/tz/date/index.js +83 -0
  33. package/dist/node_modules/@date-fns/tz/date/mini.js +235 -0
  34. package/dist/node_modules/@date-fns/tz/tzName/index.js +39 -0
  35. package/dist/node_modules/@date-fns/tz/tzOffset/index.js +44 -0
  36. package/dist/node_modules/@floating-ui/core/dist/floating-ui.core.js +814 -0
  37. package/dist/node_modules/@floating-ui/dom/dist/floating-ui.dom.js +751 -0
  38. package/dist/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.js +350 -0
  39. package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.js +161 -0
  40. package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.js +137 -0
  41. package/dist/node_modules/@radix-ui/primitive/dist/index.js +11 -0
  42. package/dist/node_modules/@radix-ui/react-arrow/dist/index.js +25 -0
  43. package/dist/node_modules/@radix-ui/react-compose-refs/dist/index.js +39 -0
  44. package/dist/node_modules/@radix-ui/react-context/dist/index.js +63 -0
  45. package/dist/node_modules/@radix-ui/react-dismissable-layer/dist/index.js +213 -0
  46. package/dist/node_modules/@radix-ui/react-focus-guards/dist/index.js +31 -0
  47. package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.js +209 -0
  48. package/dist/node_modules/@radix-ui/react-id/dist/index.js +15 -0
  49. package/dist/node_modules/@radix-ui/react-popover/dist/index.js +303 -0
  50. package/dist/node_modules/@radix-ui/react-popper/dist/index.js +285 -0
  51. package/dist/node_modules/@radix-ui/react-portal/dist/index.js +19 -0
  52. package/dist/node_modules/@radix-ui/react-presence/dist/index.js +132 -0
  53. package/dist/node_modules/@radix-ui/react-primitive/dist/index.js +43 -0
  54. package/dist/node_modules/@radix-ui/react-slot/dist/index.js +89 -0
  55. package/dist/node_modules/@radix-ui/react-use-callback-ref/dist/index.js +12 -0
  56. package/dist/node_modules/@radix-ui/react-use-controllable-state/dist/index.js +70 -0
  57. package/dist/node_modules/@radix-ui/react-use-escape-keydown/dist/index.js +18 -0
  58. package/dist/node_modules/@radix-ui/react-use-layout-effect/dist/index.js +7 -0
  59. package/dist/node_modules/@radix-ui/react-use-size/dist/index.js +40 -0
  60. package/dist/node_modules/aria-hidden/dist/es2015/index.js +137 -0
  61. package/dist/node_modules/date-fns/_lib/addLeadingZeros.js +7 -0
  62. package/dist/node_modules/date-fns/_lib/defaultOptions.js +7 -0
  63. package/dist/node_modules/date-fns/_lib/format/formatters.js +775 -0
  64. package/dist/node_modules/date-fns/_lib/format/lightFormatters.js +94 -0
  65. package/dist/node_modules/date-fns/_lib/format/longFormatters.js +66 -0
  66. package/dist/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js +31 -0
  67. package/dist/node_modules/date-fns/_lib/normalizeDates.js +11 -0
  68. package/dist/node_modules/date-fns/_lib/normalizeInterval.js +8 -0
  69. package/dist/node_modules/date-fns/_lib/protectedTokens.js +25 -0
  70. package/dist/node_modules/date-fns/addDays.js +41 -0
  71. package/dist/node_modules/date-fns/addMonths.js +75 -0
  72. package/dist/node_modules/date-fns/addWeeks.js +33 -0
  73. package/dist/node_modules/date-fns/addYears.js +33 -0
  74. package/dist/node_modules/date-fns/constants.js +67 -0
  75. package/dist/node_modules/date-fns/constructFrom.js +49 -0
  76. package/dist/node_modules/date-fns/differenceInCalendarDays.js +62 -0
  77. package/dist/node_modules/date-fns/differenceInCalendarMonths.js +42 -0
  78. package/dist/node_modules/date-fns/eachMonthOfInterval.js +65 -0
  79. package/dist/node_modules/date-fns/eachYearOfInterval.js +65 -0
  80. package/dist/node_modules/date-fns/endOfISOWeek.js +35 -0
  81. package/dist/node_modules/date-fns/endOfMonth.js +37 -0
  82. package/dist/node_modules/date-fns/endOfWeek.js +53 -0
  83. package/dist/node_modules/date-fns/endOfYear.js +37 -0
  84. package/dist/node_modules/date-fns/format.js +423 -0
  85. package/dist/node_modules/date-fns/getDayOfYear.js +34 -0
  86. package/dist/node_modules/date-fns/getDaysInMonth.js +36 -0
  87. package/dist/node_modules/date-fns/getDefaultOptions.js +31 -0
  88. package/dist/node_modules/date-fns/getISODay.js +33 -0
  89. package/dist/node_modules/date-fns/getISOWeek.js +40 -0
  90. package/dist/node_modules/date-fns/getISOWeekYear.js +52 -0
  91. package/dist/node_modules/date-fns/getMonth.js +29 -0
  92. package/dist/node_modules/date-fns/getWeek.js +54 -0
  93. package/dist/node_modules/date-fns/getWeekYear.js +75 -0
  94. package/dist/node_modules/date-fns/getYear.js +29 -0
  95. package/dist/node_modules/date-fns/isAfter.js +25 -0
  96. package/dist/node_modules/date-fns/isBefore.js +25 -0
  97. package/dist/node_modules/date-fns/isDate.js +41 -0
  98. package/dist/node_modules/date-fns/isSameDay.js +46 -0
  99. package/dist/node_modules/date-fns/isSameMonth.js +43 -0
  100. package/dist/node_modules/date-fns/isSameYear.js +35 -0
  101. package/dist/node_modules/date-fns/isValid.js +39 -0
  102. package/dist/node_modules/date-fns/locale/_lib/buildFormatLongFn.js +10 -0
  103. package/dist/node_modules/date-fns/locale/_lib/buildLocalizeFn.js +64 -0
  104. package/dist/node_modules/date-fns/locale/_lib/buildMatchFn.js +59 -0
  105. package/dist/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js +22 -0
  106. package/dist/node_modules/date-fns/locale/en-US/_lib/formatDistance.js +103 -0
  107. package/dist/node_modules/date-fns/locale/en-US/_lib/formatLong.js +41 -0
  108. package/dist/node_modules/date-fns/locale/en-US/_lib/formatRelative.js +13 -0
  109. package/dist/node_modules/date-fns/locale/en-US/_lib/localize.js +189 -0
  110. package/dist/node_modules/date-fns/locale/en-US/_lib/match.js +134 -0
  111. package/dist/node_modules/date-fns/locale/en-US.js +28 -0
  112. package/dist/node_modules/date-fns/max.js +49 -0
  113. package/dist/node_modules/date-fns/min.js +49 -0
  114. package/dist/node_modules/date-fns/parse/_lib/Parser.js +27 -0
  115. package/dist/node_modules/date-fns/parse/_lib/Setter.js +59 -0
  116. package/dist/node_modules/date-fns/parse/_lib/constants.js +33 -0
  117. package/dist/node_modules/date-fns/parse/_lib/parsers/AMPMMidnightParser.js +55 -0
  118. package/dist/node_modules/date-fns/parse/_lib/parsers/AMPMParser.js +55 -0
  119. package/dist/node_modules/date-fns/parse/_lib/parsers/DateParser.js +59 -0
  120. package/dist/node_modules/date-fns/parse/_lib/parsers/DayOfYearParser.js +57 -0
  121. package/dist/node_modules/date-fns/parse/_lib/parsers/DayParser.js +64 -0
  122. package/dist/node_modules/date-fns/parse/_lib/parsers/DayPeriodParser.js +56 -0
  123. package/dist/node_modules/date-fns/parse/_lib/parsers/EraParser.js +41 -0
  124. package/dist/node_modules/date-fns/parse/_lib/parsers/ExtendedYearParser.js +24 -0
  125. package/dist/node_modules/date-fns/parse/_lib/parsers/FractionOfSecondParser.js +21 -0
  126. package/dist/node_modules/date-fns/parse/_lib/parsers/Hour0To11Parser.js +36 -0
  127. package/dist/node_modules/date-fns/parse/_lib/parsers/Hour0to23Parser.js +31 -0
  128. package/dist/node_modules/date-fns/parse/_lib/parsers/Hour1To24Parser.js +32 -0
  129. package/dist/node_modules/date-fns/parse/_lib/parsers/Hour1to12Parser.js +38 -0
  130. package/dist/node_modules/date-fns/parse/_lib/parsers/ISODayParser.js +118 -0
  131. package/dist/node_modules/date-fns/parse/_lib/parsers/ISOTimezoneParser.js +47 -0
  132. package/dist/node_modules/date-fns/parse/_lib/parsers/ISOTimezoneWithZParser.js +47 -0
  133. package/dist/node_modules/date-fns/parse/_lib/parsers/ISOWeekParser.js +48 -0
  134. package/dist/node_modules/date-fns/parse/_lib/parsers/ISOWeekYearParser.js +44 -0
  135. package/dist/node_modules/date-fns/parse/_lib/parsers/LocalDayParser.js +96 -0
  136. package/dist/node_modules/date-fns/parse/_lib/parsers/LocalWeekParser.js +47 -0
  137. package/dist/node_modules/date-fns/parse/_lib/parsers/LocalWeekYearParser.js +76 -0
  138. package/dist/node_modules/date-fns/parse/_lib/parsers/MinuteParser.js +31 -0
  139. package/dist/node_modules/date-fns/parse/_lib/parsers/MonthParser.js +86 -0
  140. package/dist/node_modules/date-fns/parse/_lib/parsers/QuarterParser.js +83 -0
  141. package/dist/node_modules/date-fns/parse/_lib/parsers/SecondParser.js +31 -0
  142. package/dist/node_modules/date-fns/parse/_lib/parsers/StandAloneLocalDayParser.js +97 -0
  143. package/dist/node_modules/date-fns/parse/_lib/parsers/StandAloneMonthParser.js +86 -0
  144. package/dist/node_modules/date-fns/parse/_lib/parsers/StandAloneQuarterParser.js +83 -0
  145. package/dist/node_modules/date-fns/parse/_lib/parsers/TimestampMillisecondsParser.js +19 -0
  146. package/dist/node_modules/date-fns/parse/_lib/parsers/TimestampSecondsParser.js +19 -0
  147. package/dist/node_modules/date-fns/parse/_lib/parsers/YearParser.js +62 -0
  148. package/dist/node_modules/date-fns/parse/_lib/parsers.js +110 -0
  149. package/dist/node_modules/date-fns/parse/_lib/utils.js +135 -0
  150. package/dist/node_modules/date-fns/parse.js +497 -0
  151. package/dist/node_modules/date-fns/setDay.js +59 -0
  152. package/dist/node_modules/date-fns/setISODay.js +40 -0
  153. package/dist/node_modules/date-fns/setISOWeek.js +39 -0
  154. package/dist/node_modules/date-fns/setMonth.js +46 -0
  155. package/dist/node_modules/date-fns/setWeek.js +53 -0
  156. package/dist/node_modules/date-fns/setYear.js +40 -0
  157. package/dist/node_modules/date-fns/startOfDay.js +35 -0
  158. package/dist/node_modules/date-fns/startOfISOWeek.js +35 -0
  159. package/dist/node_modules/date-fns/startOfISOWeekYear.js +42 -0
  160. package/dist/node_modules/date-fns/startOfMonth.js +37 -0
  161. package/dist/node_modules/date-fns/startOfWeek.js +53 -0
  162. package/dist/node_modules/date-fns/startOfWeekYear.js +64 -0
  163. package/dist/node_modules/date-fns/startOfYear.js +36 -0
  164. package/dist/node_modules/date-fns/toDate.js +46 -0
  165. package/dist/node_modules/date-fns/transpose.js +52 -0
  166. package/dist/node_modules/get-nonce/dist/es2015/index.js +8 -0
  167. package/dist/node_modules/react-day-picker/dist/esm/DayPicker.js +320 -0
  168. package/dist/node_modules/react-day-picker/dist/esm/UI.js +122 -0
  169. package/dist/node_modules/react-day-picker/dist/esm/classes/CalendarDay.js +33 -0
  170. package/dist/node_modules/react-day-picker/dist/esm/classes/CalendarMonth.js +14 -0
  171. package/dist/node_modules/react-day-picker/dist/esm/classes/CalendarWeek.js +13 -0
  172. package/dist/node_modules/react-day-picker/dist/esm/classes/DateLib.js +604 -0
  173. package/dist/node_modules/react-day-picker/dist/esm/components/Button.js +13 -0
  174. package/dist/node_modules/react-day-picker/dist/esm/components/CaptionLabel.js +13 -0
  175. package/dist/node_modules/react-day-picker/dist/esm/components/Chevron.js +20 -0
  176. package/dist/node_modules/react-day-picker/dist/esm/components/Day.js +18 -0
  177. package/dist/node_modules/react-day-picker/dist/esm/components/DayButton.js +19 -0
  178. package/dist/node_modules/react-day-picker/dist/esm/components/Dropdown.js +21 -0
  179. package/dist/node_modules/react-day-picker/dist/esm/components/DropdownNav.js +13 -0
  180. package/dist/node_modules/react-day-picker/dist/esm/components/Footer.js +13 -0
  181. package/dist/node_modules/react-day-picker/dist/esm/components/Month.js +15 -0
  182. package/dist/node_modules/react-day-picker/dist/esm/components/MonthCaption.js +14 -0
  183. package/dist/node_modules/react-day-picker/dist/esm/components/MonthGrid.js +13 -0
  184. package/dist/node_modules/react-day-picker/dist/esm/components/Months.js +13 -0
  185. package/dist/node_modules/react-day-picker/dist/esm/components/MonthsDropdown.js +15 -0
  186. package/dist/node_modules/react-day-picker/dist/esm/components/Nav.js +31 -0
  187. package/dist/node_modules/react-day-picker/dist/esm/components/NextMonthButton.js +15 -0
  188. package/dist/node_modules/react-day-picker/dist/esm/components/Option.js +13 -0
  189. package/dist/node_modules/react-day-picker/dist/esm/components/PreviousMonthButton.js +15 -0
  190. package/dist/node_modules/react-day-picker/dist/esm/components/Root.js +14 -0
  191. package/dist/node_modules/react-day-picker/dist/esm/components/Select.js +13 -0
  192. package/dist/node_modules/react-day-picker/dist/esm/components/Week.js +14 -0
  193. package/dist/node_modules/react-day-picker/dist/esm/components/WeekNumber.js +14 -0
  194. package/dist/node_modules/react-day-picker/dist/esm/components/WeekNumberHeader.js +13 -0
  195. package/dist/node_modules/react-day-picker/dist/esm/components/Weekday.js +13 -0
  196. package/dist/node_modules/react-day-picker/dist/esm/components/Weekdays.js +14 -0
  197. package/dist/node_modules/react-day-picker/dist/esm/components/Weeks.js +13 -0
  198. package/dist/node_modules/react-day-picker/dist/esm/components/YearsDropdown.js +15 -0
  199. package/dist/node_modules/react-day-picker/dist/esm/components/custom-components.js +26 -0
  200. package/dist/node_modules/react-day-picker/dist/esm/formatters/formatCaption.js +26 -0
  201. package/dist/node_modules/react-day-picker/dist/esm/formatters/formatDay.js +19 -0
  202. package/dist/node_modules/react-day-picker/dist/esm/formatters/formatMonthDropdown.js +18 -0
  203. package/dist/node_modules/react-day-picker/dist/esm/formatters/formatWeekNumber.js +21 -0
  204. package/dist/node_modules/react-day-picker/dist/esm/formatters/formatWeekNumberHeader.js +13 -0
  205. package/dist/node_modules/react-day-picker/dist/esm/formatters/formatWeekdayName.js +19 -0
  206. package/dist/node_modules/react-day-picker/dist/esm/formatters/formatYearDropdown.js +23 -0
  207. package/dist/node_modules/react-day-picker/dist/esm/formatters/index.js +7 -0
  208. package/dist/node_modules/react-day-picker/dist/esm/helpers/calculateFocusTarget.js +73 -0
  209. package/dist/node_modules/react-day-picker/dist/esm/helpers/createGetModifiers.js +95 -0
  210. package/dist/node_modules/react-day-picker/dist/esm/helpers/endOfBroadcastWeek.js +22 -0
  211. package/dist/node_modules/react-day-picker/dist/esm/helpers/getBroadcastWeeksInMonth.js +28 -0
  212. package/dist/node_modules/react-day-picker/dist/esm/helpers/getClassNamesForModifiers.js +33 -0
  213. package/dist/node_modules/react-day-picker/dist/esm/helpers/getComponents.js +20 -0
  214. package/dist/node_modules/react-day-picker/dist/esm/helpers/getDataAttributes.js +27 -0
  215. package/dist/node_modules/react-day-picker/dist/esm/helpers/getDates.js +59 -0
  216. package/dist/node_modules/react-day-picker/dist/esm/helpers/getDays.js +19 -0
  217. package/dist/node_modules/react-day-picker/dist/esm/helpers/getDefaultClassNames.js +33 -0
  218. package/dist/node_modules/react-day-picker/dist/esm/helpers/getDisplayMonths.js +24 -0
  219. package/dist/node_modules/react-day-picker/dist/esm/helpers/getFocusableDate.js +46 -0
  220. package/dist/node_modules/react-day-picker/dist/esm/helpers/getFormatters.js +24 -0
  221. package/dist/node_modules/react-day-picker/dist/esm/helpers/getInitialMonth.js +27 -0
  222. package/dist/node_modules/react-day-picker/dist/esm/helpers/getLabels.js +53 -0
  223. package/dist/node_modules/react-day-picker/dist/esm/helpers/getMonthOptions.js +33 -0
  224. package/dist/node_modules/react-day-picker/dist/esm/helpers/getMonths.js +69 -0
  225. package/dist/node_modules/react-day-picker/dist/esm/helpers/getNavMonth.js +51 -0
  226. package/dist/node_modules/react-day-picker/dist/esm/helpers/getNextFocus.js +40 -0
  227. package/dist/node_modules/react-day-picker/dist/esm/helpers/getNextMonth.js +36 -0
  228. package/dist/node_modules/react-day-picker/dist/esm/helpers/getPreviousMonth.js +37 -0
  229. package/dist/node_modules/react-day-picker/dist/esm/helpers/getStyleForModifiers.js +27 -0
  230. package/dist/node_modules/react-day-picker/dist/esm/helpers/getWeekdays.js +26 -0
  231. package/dist/node_modules/react-day-picker/dist/esm/helpers/getWeeks.js +14 -0
  232. package/dist/node_modules/react-day-picker/dist/esm/helpers/getYearOptions.js +36 -0
  233. package/dist/node_modules/react-day-picker/dist/esm/helpers/startOfBroadcastWeek.js +27 -0
  234. package/dist/node_modules/react-day-picker/dist/esm/helpers/useControlledValue.js +31 -0
  235. package/dist/node_modules/react-day-picker/dist/esm/labels/index.js +11 -0
  236. package/dist/node_modules/react-day-picker/dist/esm/labels/labelDayButton.js +32 -0
  237. package/dist/node_modules/react-day-picker/dist/esm/labels/labelGrid.js +25 -0
  238. package/dist/node_modules/react-day-picker/dist/esm/labels/labelGridcell.js +22 -0
  239. package/dist/node_modules/react-day-picker/dist/esm/labels/labelMonthDropdown.js +14 -0
  240. package/dist/node_modules/react-day-picker/dist/esm/labels/labelNav.js +13 -0
  241. package/dist/node_modules/react-day-picker/dist/esm/labels/labelNext.js +16 -0
  242. package/dist/node_modules/react-day-picker/dist/esm/labels/labelPrevious.js +15 -0
  243. package/dist/node_modules/react-day-picker/dist/esm/labels/labelWeekNumber.js +15 -0
  244. package/dist/node_modules/react-day-picker/dist/esm/labels/labelWeekNumberHeader.js +14 -0
  245. package/dist/node_modules/react-day-picker/dist/esm/labels/labelWeekday.js +18 -0
  246. package/dist/node_modules/react-day-picker/dist/esm/labels/labelYearDropdown.js +14 -0
  247. package/dist/node_modules/react-day-picker/dist/esm/locale/en-US.js +67 -0
  248. package/dist/node_modules/react-day-picker/dist/esm/selection/useMulti.js +57 -0
  249. package/dist/node_modules/react-day-picker/dist/esm/selection/useRange.js +45 -0
  250. package/dist/node_modules/react-day-picker/dist/esm/selection/useSingle.js +44 -0
  251. package/dist/node_modules/react-day-picker/dist/esm/useAnimation.js +174 -0
  252. package/dist/node_modules/react-day-picker/dist/esm/useCalendar.js +113 -0
  253. package/dist/node_modules/react-day-picker/dist/esm/useDayPicker.js +25 -0
  254. package/dist/node_modules/react-day-picker/dist/esm/useFocus.js +56 -0
  255. package/dist/node_modules/react-day-picker/dist/esm/useSelection.js +31 -0
  256. package/dist/node_modules/react-day-picker/dist/esm/utils/addToRange.js +95 -0
  257. package/dist/node_modules/react-day-picker/dist/esm/utils/convertMatchersToTimeZone.js +57 -0
  258. package/dist/node_modules/react-day-picker/dist/esm/utils/dateMatchModifiers.js +62 -0
  259. package/dist/node_modules/react-day-picker/dist/esm/utils/rangeContainsDayOfWeek.js +30 -0
  260. package/dist/node_modules/react-day-picker/dist/esm/utils/rangeContainsModifiers.js +74 -0
  261. package/dist/node_modules/react-day-picker/dist/esm/utils/rangeIncludesDate.js +35 -0
  262. package/dist/node_modules/react-day-picker/dist/esm/utils/rangeOverlaps.js +21 -0
  263. package/dist/node_modules/react-day-picker/dist/esm/utils/toTimeZone.js +16 -0
  264. package/dist/node_modules/react-day-picker/dist/esm/utils/typeguards.js +66 -0
  265. package/dist/node_modules/react-remove-scroll/dist/es2015/Combination.js +9 -0
  266. package/dist/node_modules/react-remove-scroll/dist/es2015/SideEffect.js +167 -0
  267. package/dist/node_modules/react-remove-scroll/dist/es2015/UI.js +38 -0
  268. package/dist/node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js +21 -0
  269. package/dist/node_modules/react-remove-scroll/dist/es2015/handleScroll.js +110 -0
  270. package/dist/node_modules/react-remove-scroll/dist/es2015/medium.js +5 -0
  271. package/dist/node_modules/react-remove-scroll/dist/es2015/sidecar.js +7 -0
  272. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/component.js +56 -0
  273. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/constants.js +10 -0
  274. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/utils.js +31 -0
  275. package/dist/node_modules/react-style-singleton/dist/es2015/component.js +19 -0
  276. package/dist/node_modules/react-style-singleton/dist/es2015/hook.js +25 -0
  277. package/dist/node_modules/react-style-singleton/dist/es2015/singleton.js +51 -0
  278. package/dist/node_modules/tslib/tslib.es6.js +56 -0
  279. package/dist/node_modules/use-callback-ref/dist/es2015/assignRef.js +24 -0
  280. package/dist/node_modules/use-callback-ref/dist/es2015/useMergeRef.js +48 -0
  281. package/dist/node_modules/use-callback-ref/dist/es2015/useRef.js +42 -0
  282. package/dist/node_modules/use-sidecar/dist/es2015/exports.js +21 -0
  283. package/dist/node_modules/use-sidecar/dist/es2015/medium.js +77 -0
  284. package/dist/types/index.d.ts +10 -0
  285. package/package.json +17 -13
  286. package/src/components/Checkbox/Checkbox.tsx +6 -1
  287. package/src/components/DatePicker/DatePicker.tsx +372 -0
  288. package/src/components/DatePicker/datepicker-utils.ts +269 -0
  289. package/src/components/DatePicker/index.ts +5 -0
  290. package/src/components/Field/Field.tsx +30 -28
  291. package/src/components/Popover/Popover.tsx +198 -0
  292. package/src/components/Popover/index.ts +5 -0
  293. package/src/components/Radio/Radio.tsx +6 -1
  294. package/src/components/Searchbox/Searchbox.tsx +4 -1
  295. package/src/components/Select/Select.tsx +7 -2
  296. package/src/components/TextInput/TextInput.tsx +5 -1
  297. package/src/components/Textarea/Textarea.tsx +9 -13
  298. package/src/index.ts +2 -0
  299. package/src/types/index.ts +15 -0
@@ -2,7 +2,7 @@ import type { InputHTMLAttributes, JSX, Ref } from "react"
2
2
 
3
3
  import clsx from "clsx"
4
4
 
5
- import { StandardSizes } from "../../../src/types"
5
+ import { ComponentConfig, StandardSizes } from "../../../src/types"
6
6
  import { useId } from "../../hooks/useId"
7
7
 
8
8
  export interface CheckboxProps extends Omit<
@@ -50,4 +50,9 @@ export const Checkbox = ({
50
50
  return <input {...componentProps} ref={ref} />
51
51
  }
52
52
 
53
+ Checkbox.config = {
54
+ isField: true,
55
+ isInline: true,
56
+ } satisfies ComponentConfig
57
+
53
58
  export default Checkbox
@@ -0,0 +1,372 @@
1
+ import type { FormEvent, InputHTMLAttributes, JSX, Ref } from "react"
2
+ import type {
3
+ DayPickerProps,
4
+ Formatters,
5
+ Mode,
6
+ PropsMulti,
7
+ PropsRange,
8
+ PropsSingle,
9
+ } from "react-day-picker"
10
+
11
+ import clsx from "clsx"
12
+ import { useCallback, useMemo, useReducer } from "react"
13
+ import { DayPicker } from "react-day-picker"
14
+
15
+ import type { ComponentConfig, StandardSizes } from "../../types"
16
+ import type {
17
+ DateRange,
18
+ DateType,
19
+ TDateMultiple,
20
+ TDateRange,
21
+ TDateSingle,
22
+ } from "./datepicker-utils"
23
+
24
+ import { useId } from "../../hooks/useId"
25
+ import Button from "../Button"
26
+ import { CloseIcon, TickIcon } from "../Icon"
27
+ import Popover from "../Popover"
28
+ import TextInput from "../TextInput"
29
+ import {
30
+ getDateValues,
31
+ getDefaultMonth,
32
+ getEndDate,
33
+ getInitialDate,
34
+ getStartDate,
35
+ shouldClose,
36
+ shouldSkipParsing,
37
+ } from "./datepicker-utils"
38
+
39
+ type OnDateSelectHandler = (
40
+ selected: string | string[] | { from?: string; to?: string } | undefined
41
+ ) => void
42
+
43
+ interface PickerState {
44
+ message?: string
45
+ multiple?: TDateMultiple
46
+ open?: boolean
47
+ range?: TDateRange
48
+ single?: TDateSingle
49
+ validated: boolean
50
+ view?: Date
51
+ }
52
+
53
+ export interface DatePickerProps extends Omit<
54
+ InputHTMLAttributes<HTMLInputElement>,
55
+ "onSelect" | "onChange" | "onChangeCapture" | "size" | "type"
56
+ > {
57
+ /** **(Optional)** Specify additional CSS classes to be applied to the wrapper. */
58
+ className?: string
59
+ /** **(Optional)** Specify whether the picker should close when selecting a date. Has no effect in range mode. */
60
+ closeOnSelect?: boolean
61
+ /** **(Optional)** Specify the date format. This affects the values displayed to users and the accepted format for manual inputs. */
62
+ dateFormat?: string
63
+ /** **(Optional)** Specify whether the Date Picker should be disabled. Refer to Experience Library guidance on disabled form controls and accessibility. */
64
+ disabled?: boolean
65
+ /** **(Optional)** Specify dates to be disabled. Refer to react-daypicker docs for full configuration. */
66
+ disabledDates?: DayPickerProps["disabled"]
67
+ /** **(Optional)** Specify the upper bound for the picker.
68
+ *
69
+ * Default: today plus one year.
70
+ */
71
+ endDate?: Date
72
+ /** **(Optional)** Specify the Date Picker error state. */
73
+ error?: boolean
74
+ /** **(Optional)** Specify the Date Picker id. Will be auto-generated if not set. */
75
+ id?: string
76
+ /** **(Optional)** Specify the initial month view for the picker.
77
+ *
78
+ * Default: today.
79
+ */
80
+ initialDate?: Date | DateRange
81
+
82
+ initialSelected?: boolean
83
+
84
+ /** **(Optional)** Specify the picker mode. */
85
+ mode?: Mode
86
+ /** Specify the Datepicker name. */
87
+ name: string
88
+ /** Provided only for compatibility with form libraries. Use `onSelect` instead. */
89
+ onChange?: OnDateSelectHandler
90
+ /** **(Optional)** Callback to run when a date is selected and validated.
91
+ *
92
+ * Contains the selected value, which is either an ISO-8601 formatted date string, or an object with from and to values. */
93
+ onSelect?: OnDateSelectHandler
94
+ /** **(Optional)** Specify a custom React ref for this component. */
95
+ ref?: Ref<HTMLInputElement>
96
+ /** **(Optional)** Specify whether this is a required field. */
97
+ required?: boolean
98
+ /** **(Optional)** Specify the DatePicker size. */
99
+ size?: StandardSizes
100
+ /** **(Optional)** Specify the lower bound for the picker.
101
+ *
102
+ * Default: today minus one year.
103
+ */
104
+ startDate?: Date
105
+ }
106
+
107
+ const now = new Date()
108
+
109
+ const componentConfig: ComponentConfig = {
110
+ fieldSuffix: "_display",
111
+ isField: true,
112
+ }
113
+
114
+ const baseValueProps = {
115
+ readOnly: true,
116
+ type: "hidden",
117
+ }
118
+
119
+ const footerMessage = {
120
+ multiple: "Pick one or more dates.",
121
+ range: "Pick a date range.",
122
+ single: "Pick a date.",
123
+ }
124
+
125
+ const initialState: PickerState = {
126
+ message: undefined,
127
+ validated: false,
128
+ }
129
+
130
+ const defaultFormatters: Partial<Formatters> = {
131
+ formatWeekdayName: (d) => d.toLocaleDateString("default", { weekday: "short" }).slice(0, 2),
132
+ }
133
+
134
+ const Calendar = ({
135
+ captionLayout = "label",
136
+ className,
137
+ disabled,
138
+ endMonth,
139
+ formatters,
140
+ showOutsideDays = true,
141
+ startMonth,
142
+ ...props
143
+ }: DayPickerProps) => {
144
+ return (
145
+ <DayPicker
146
+ captionLayout={captionLayout}
147
+ className={className}
148
+ disabled={disabled}
149
+ endMonth={endMonth}
150
+ formatters={{
151
+ ...defaultFormatters,
152
+ ...formatters,
153
+ }}
154
+ navLayout="around"
155
+ showOutsideDays={showOutsideDays}
156
+ startMonth={startMonth}
157
+ weekStartsOn={1}
158
+ {...props}
159
+ />
160
+ )
161
+ }
162
+
163
+ export const DatePicker = ({
164
+ className,
165
+ closeOnSelect = true,
166
+ dateFormat = "dd/MM/yyyy",
167
+ disabled,
168
+ disabledDates,
169
+ endDate,
170
+ error = false,
171
+ id,
172
+ initialDate = now,
173
+ initialSelected = false,
174
+ mode = "single",
175
+ name,
176
+ onChange,
177
+ onSelect,
178
+ ref,
179
+ required = false,
180
+ size = "md",
181
+ startDate,
182
+ ...props
183
+ }: DatePickerProps): JSX.Element => {
184
+ const uid = useId(id)
185
+
186
+ initialDate = getInitialDate(mode, initialDate)
187
+
188
+ startDate = useMemo(() => startDate ?? getStartDate(initialDate), [initialDate, startDate])
189
+ endDate = useMemo(() => endDate ?? getEndDate(initialDate), [initialDate, endDate])
190
+
191
+ const defaultMonth = useMemo(() => getDefaultMonth(initialDate), [initialDate])
192
+
193
+ let initialValues: { state?: TDateSingle | TDateRange | TDateMultiple; view?: Date } = {
194
+ state: undefined,
195
+ view: defaultMonth,
196
+ }
197
+
198
+ if (initialSelected) {
199
+ initialValues = getDateValues(mode, initialDate, dateFormat, now) ?? {}
200
+ }
201
+
202
+ const [state, setState] = useReducer(
203
+ (stale: PickerState, fresh: Partial<PickerState>) => ({ ...stale, ...fresh }),
204
+ { ...initialState, [mode]: initialValues.state, open: false, view: initialValues.view }
205
+ )
206
+
207
+ const updateValues = useCallback(
208
+ (selected: DateType) => {
209
+ const values = getDateValues(mode, selected, dateFormat, now)
210
+
211
+ if (values) {
212
+ setState({
213
+ message: values.message,
214
+ [mode]: values.state,
215
+ validated: values.validated,
216
+ view: values.view,
217
+ ...(shouldClose(mode, values.state?.value, closeOnSelect) && {
218
+ open: false,
219
+ }),
220
+ })
221
+
222
+ if (values.validated && values.state) {
223
+ typeof onChange === "function" && onChange(values.state.field)
224
+ typeof onSelect === "function" && onSelect(values.state.field)
225
+ }
226
+ }
227
+ },
228
+ [dateFormat, mode, onChange, onSelect, closeOnSelect]
229
+ )
230
+
231
+ const updateFromInput = useCallback(
232
+ (e: FormEvent<HTMLInputElement>) => {
233
+ if (shouldSkipParsing(e.currentTarget.value)) {
234
+ setState({
235
+ message: undefined,
236
+ [mode]: { input: e.currentTarget.value },
237
+ validated: false,
238
+ })
239
+ } else {
240
+ updateValues(e.currentTarget?.value)
241
+ }
242
+ },
243
+ [updateValues, mode]
244
+ )
245
+
246
+ const setOpen = useCallback((open: boolean) => setState({ open }), [])
247
+ const setView = useCallback((view: Date) => setState({ view }), [])
248
+ const resetState = useCallback(() => setState({ ...initialState, [mode]: undefined }), [mode])
249
+
250
+ const componentProps = {
251
+ className: clsx("coop-datepicker", className),
252
+ "data-error": error || undefined,
253
+ "data-mode": mode,
254
+ ...props,
255
+ }
256
+
257
+ const calendarProps: {
258
+ multiple: PropsMulti
259
+ range: PropsRange
260
+ single: PropsSingle
261
+ } = {
262
+ multiple: { mode: "multiple", selected: state.multiple?.value },
263
+ range: { mode: "range", selected: state.range?.value },
264
+ single: { mode: "single", selected: state.single?.value },
265
+ }
266
+
267
+ const valueProps = {
268
+ ...baseValueProps,
269
+ id: uid,
270
+ name: name,
271
+ }
272
+
273
+ const getPlaceholder = () => {
274
+ const lowerCaseDateFormat = dateFormat.toLowerCase()
275
+ switch (mode) {
276
+ case "range":
277
+ return lowerCaseDateFormat + " - " + lowerCaseDateFormat
278
+ case "multiple":
279
+ return lowerCaseDateFormat + ", " + lowerCaseDateFormat
280
+ default:
281
+ return lowerCaseDateFormat
282
+ }
283
+ }
284
+
285
+ return (
286
+ <div {...componentProps}>
287
+ <Popover onOpenChange={setOpen} open={state.open}>
288
+ <Popover.Anchor className="coop-datepicker-inner">
289
+ <TextInput
290
+ autoComplete="off"
291
+ className="coop-datepicker-input"
292
+ disabled={disabled}
293
+ id={uid + componentConfig.fieldSuffix}
294
+ //maxLength={dateFormat.length}
295
+ name={name + componentConfig.fieldSuffix}
296
+ onChange={updateFromInput}
297
+ placeholder={getPlaceholder()}
298
+ ref={ref}
299
+ required={required}
300
+ size={size}
301
+ value={state?.[mode]?.input ?? ""}
302
+ />
303
+ <Popover.Trigger asChild>
304
+ <Button className="coop-datepicker-button" disabled={disabled} size={size}>
305
+ Select
306
+ </Button>
307
+ </Popover.Trigger>
308
+ </Popover.Anchor>
309
+ <Popover.Content
310
+ aria-label="Date picker"
311
+ className="coop-datepicker-calendar bg-white"
312
+ collisionPadding={16}
313
+ sideOffset={4}
314
+ >
315
+ <Calendar
316
+ // jsx-ally throws here because we set autoFocus, but this
317
+ // is not a standard element. Daypicker uses this value to
318
+ // focus the day rather than the nav when it renders.
319
+ // eslint-disable-next-line jsx-a11y/no-autofocus
320
+ autoFocus
321
+ captionLayout="dropdown"
322
+ //defaultMonth={defaultMonth}
323
+ disabled={disabledDates}
324
+ endMonth={endDate}
325
+ month={state.view}
326
+ onMonthChange={setView}
327
+ onSelect={updateValues}
328
+ startMonth={startDate}
329
+ {...calendarProps[mode]}
330
+ />
331
+ <div className="coop-datepicker-actions">
332
+ <Button aria-label="Cancel" onClick={resetState} size="sm" variant="grey">
333
+ Clear <CloseIcon stroke="black" strokeWidth={1} />
334
+ </Button>
335
+ <Popover.Close asChild>
336
+ <Button aria-label="Accept" size="sm">
337
+ OK <TickIcon stroke="white" strokeWidth={1} />
338
+ </Button>
339
+ </Popover.Close>
340
+ </div>
341
+ </Popover.Content>
342
+ </Popover>
343
+
344
+ <div aria-live="assertive" className="sr-only coop-datepicker-status" role="status">
345
+ {state.message ?? footerMessage[mode]}
346
+ </div>
347
+
348
+ {mode === "single" && <input {...valueProps} value={state.single?.field ?? ""} />}
349
+ {mode === "multiple" && <input {...valueProps} value={state.multiple?.field ?? ""} />}
350
+ {mode === "range" && (
351
+ <>
352
+ <input
353
+ {...baseValueProps}
354
+ id={`${uid}_start`}
355
+ name={`${name}_start`}
356
+ value={state.range?.field?.from ?? ""}
357
+ />
358
+ <input
359
+ {...baseValueProps}
360
+ id={`${uid}_end`}
361
+ name={`${name}_end`}
362
+ value={state.range?.field?.to ?? ""}
363
+ />
364
+ </>
365
+ )}
366
+ </div>
367
+ )
368
+ }
369
+
370
+ DatePicker.config = componentConfig
371
+
372
+ export default DatePicker
@@ -0,0 +1,269 @@
1
+ import { addYears, format, isBefore, isValid, parse } from "date-fns"
2
+ import { Mode } from "react-day-picker"
3
+
4
+ interface DateRangeStr {
5
+ from?: string
6
+ to?: string
7
+ }
8
+
9
+ export interface DateRange {
10
+ from: Date | undefined
11
+ to?: Date | undefined
12
+ }
13
+
14
+ interface DateReturn {
15
+ message?: string
16
+ validated?: boolean
17
+ view?: Date
18
+ }
19
+
20
+ export type DateBase = string | undefined
21
+ export type DateType = Date | Date[] | DateRange | string | undefined
22
+
23
+ export interface TDateSingle {
24
+ event?: string
25
+ field?: string
26
+ input: string
27
+ value?: Date
28
+ }
29
+
30
+ export interface TDateMultiple {
31
+ event?: string[]
32
+ field?: string
33
+ input: string
34
+ value?: Date[]
35
+ }
36
+
37
+ export interface TDateRange {
38
+ event?: DateRangeStr
39
+ field?: DateRangeStr
40
+ input: string
41
+ value?: DateRange
42
+ }
43
+
44
+ type RDateSingle = DateReturn & { state?: TDateSingle }
45
+ type RDateMultiple = DateReturn & { state?: TDateMultiple }
46
+ type RDateRange = DateReturn & { state?: TDateRange }
47
+
48
+ export function isValidDate(date: unknown): date is Date {
49
+ return !!date && typeof date !== "string" && typeof date !== "number" && isValid(date)
50
+ }
51
+
52
+ export function isValidRangeFrom(date: unknown): date is { from: Date; to?: Date } {
53
+ return !!date && typeof date === "object" && "from" in date && isValid(date.from)
54
+ }
55
+
56
+ export function isValidRangeTo(date: unknown): date is { from?: Date; to: Date } {
57
+ return !!date && typeof date === "object" && "to" in date && isValid(date.to)
58
+ }
59
+
60
+ export function getISODateString(date: Date): string {
61
+ return format(date, "yyyy-MM-dd")
62
+ }
63
+
64
+ export function getRangeFromString(input: string): DateRangeStr {
65
+ if (input.includes("-")) {
66
+ const [from, to] = input.split("-")
67
+
68
+ return { from: from.trim(), to: to.trim() }
69
+ }
70
+
71
+ return { from: undefined, to: undefined }
72
+ }
73
+
74
+ export const getStartDate = (date: Date | Partial<DateRange>): Date | undefined => {
75
+ if (isValidDate(date)) return addYears(date, -1)
76
+ else if (isValidRangeFrom(date)) return addYears(date.from, -1)
77
+ return undefined
78
+ }
79
+
80
+ export const getEndDate = (date: Date | Partial<DateRange>): Date | undefined => {
81
+ if (isValidDate(date)) return addYears(date, 1)
82
+ else if (isValidRangeTo(date)) return addYears(date.to, 1)
83
+ return undefined
84
+ }
85
+
86
+ export const getDefaultMonth = (date: Date | DateRange): Date | undefined => {
87
+ if (isValid(date)) return date as Date
88
+ else if (isValidRangeFrom(date)) return date.from
89
+ return undefined
90
+ }
91
+
92
+ export const getInitialDate = (mode: Mode, date: Date | DateRange): Date | DateRange => {
93
+ let initialDate = date
94
+
95
+ if (mode === "range") {
96
+ let from, to
97
+ if ("from" in date) {
98
+ from = date.from
99
+ to = date.to ?? date.from
100
+ } else {
101
+ from = to = date
102
+ }
103
+
104
+ initialDate = { from, to }
105
+ }
106
+
107
+ return initialDate
108
+ }
109
+
110
+ /**
111
+ * Each getter returns an object with the following shape:
112
+ *
113
+ * message ........... read out by screen readers in the picker live region
114
+ * state.event ....... attached to the onChange / onSelect event when it fires
115
+ * state.field ....... value(s) for the hidden input field(s)
116
+ * state.input ....... value for the visible input field
117
+ * state.value ....... parsed date object(s)
118
+ * validated ......... boolean indicating dates are valid
119
+ * view .............. date (month) to show in the picker window
120
+ */
121
+
122
+ const initialState = {
123
+ state: { input: "" },
124
+ validated: false,
125
+ }
126
+
127
+ export function getSingleDate(date: Date | DateBase, df: string, now: Date): RDateSingle {
128
+ if (!date) return initialState
129
+
130
+ let parsed: Date
131
+ let input = ""
132
+
133
+ if (typeof date === "string") {
134
+ input = date.toString() ?? ""
135
+ parsed = parse(date, df, now)
136
+ } else if (isValidDate(date)) {
137
+ input = format(date, df)
138
+ parsed = date
139
+ } else {
140
+ return initialState
141
+ }
142
+
143
+ if (isValidDate(parsed)) {
144
+ const isoString = getISODateString(parsed)
145
+
146
+ return {
147
+ message: `Selected ${input}`,
148
+ state: { event: isoString, field: isoString, input, value: parsed },
149
+ validated: true,
150
+ view: parsed,
151
+ }
152
+ }
153
+
154
+ return { state: { input: date.toString() }, validated: false }
155
+ }
156
+
157
+ export function getMultipleDate(date: Date[] | DateBase, df: string, now: Date): RDateMultiple {
158
+ if (!date) return initialState
159
+
160
+ let parsed: Date[] = []
161
+ let input = ""
162
+
163
+ if (typeof date === "string") {
164
+ parsed = date
165
+ .split(",")
166
+ .map((d) => parse(d.trim(), df, now))
167
+ .filter((d) => isValid(d))
168
+ input = date
169
+ } else if (Array.isArray(date)) {
170
+ parsed = date.filter((d) => isValid(d))
171
+ input = parsed.map((d) => format(d, df)).join(", ")
172
+ }
173
+
174
+ if (parsed.length > 0) {
175
+ const formattedArray = parsed.map((d) => format(d, df))
176
+ const isoString = parsed.map((d) => getISODateString(d))
177
+ return {
178
+ message: `Selected ${formattedArray.join(", ")}`,
179
+ state: {
180
+ event: isoString,
181
+ field: isoString.join(","),
182
+ input,
183
+ value: parsed,
184
+ },
185
+ validated: true,
186
+ view: parsed.at(-1),
187
+ }
188
+ }
189
+
190
+ return { state: { input }, validated: false }
191
+ }
192
+
193
+ export function getRangeDate(date: DateRange | DateBase, df: string, now: Date): RDateRange {
194
+ if (!date) return initialState
195
+
196
+ const parsed: DateRange = { from: undefined, to: undefined }
197
+ const formatted: DateRangeStr = {}
198
+
199
+ let input = ""
200
+
201
+ if (typeof date === "string") {
202
+ if (date.includes("-")) {
203
+ const { from, to } = getRangeFromString(date)
204
+ if (from && to) {
205
+ parsed.from = parse(from, df, now)
206
+ parsed.to = parse(to, df, now)
207
+
208
+ formatted.from = from
209
+ formatted.to = to
210
+ }
211
+ input = `${from} - ${to}`
212
+ } else {
213
+ input = date
214
+ }
215
+ } else if (date?.from && date?.to && isValid(date.from) && isValid(date.to)) {
216
+ parsed.from = date.from
217
+ parsed.to = date.to
218
+
219
+ formatted.from = format(parsed.from, df)
220
+ formatted.to = format(parsed.to, df)
221
+
222
+ input = `${formatted.from} - ${formatted.to}`
223
+ } else {
224
+ return initialState
225
+ }
226
+
227
+ if (isValidDate(parsed.from) && isValidDate(parsed.to)) {
228
+ if (isBefore(parsed.to, parsed.from)) {
229
+ const { from: pf, to: pt } = parsed
230
+ parsed.from = pt
231
+ parsed.to = pf
232
+ }
233
+
234
+ const isoString = {
235
+ from: getISODateString(parsed.from),
236
+ to: getISODateString(parsed.to),
237
+ }
238
+
239
+ return {
240
+ message: `Selected ${formatted.from} to ${formatted.to}`,
241
+ state: { event: isoString, field: isoString, input, value: parsed },
242
+ validated: true,
243
+ view: parsed.to,
244
+ }
245
+ }
246
+
247
+ return { state: { input }, validated: false }
248
+ }
249
+
250
+ export const getDateValues = (mode: Mode, selected: DateType, dateFormat: string, now: Date) => {
251
+ if (isSingle(mode, selected)) return getSingleDate(selected, dateFormat, now)
252
+ else if (isMultiple(mode, selected)) return getMultipleDate(selected, dateFormat, now)
253
+ else if (isRange(mode, selected)) return getRangeDate(selected, dateFormat, now)
254
+ }
255
+
256
+ export const shouldSkipParsing = (value: string): boolean => {
257
+ return typeof value !== "string" ? true : !!(value.length < 8 || value.split("/").length < 3)
258
+ }
259
+
260
+ export const shouldClose = (mode: Mode, value: DateType, closeOnSelect?: boolean): boolean => {
261
+ if (!closeOnSelect || !value) return false
262
+ else if (isSingle(mode, value)) return true
263
+ else if (isRange(mode, value) && value?.to?.getTime() !== value?.from?.getTime()) return true
264
+ else return false
265
+ }
266
+
267
+ export const isSingle = (m: Mode, d: DateType): d is Date & DateBase => m === "single"
268
+ export const isMultiple = (m: Mode, d: DateType): d is Date[] & DateBase => m === "multiple"
269
+ export const isRange = (m: Mode, d: DateType): d is DateRange & DateBase => m === "range"
@@ -0,0 +1,5 @@
1
+ import DatePicker from "./DatePicker"
2
+
3
+ export default DatePicker
4
+ export { DatePicker }
5
+ export * from "./DatePicker"