@skbkontur/react-ui 4.1.0 → 4.1.1

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 (368) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +1 -1
  3. package/cjs/components/Autocomplete/Autocomplete.js +8 -4
  4. package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
  5. package/cjs/components/Button/Button.d.ts +1 -5
  6. package/cjs/components/Button/Button.js +4 -12
  7. package/cjs/components/Button/Button.js.map +1 -1
  8. package/cjs/components/Checkbox/Checkbox.styles.js +4 -7
  9. package/cjs/components/Checkbox/Checkbox.styles.js.map +1 -1
  10. package/cjs/components/CurrencyInput/CurrencyHelper.js +18 -12
  11. package/cjs/components/CurrencyInput/CurrencyHelper.js.map +1 -1
  12. package/cjs/components/CurrencyInput/CurrencyInput.js +15 -7
  13. package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
  14. package/cjs/components/CurrencyInput/CurrencyInputHelper.js +7 -5
  15. package/cjs/components/CurrencyInput/CurrencyInputHelper.js.map +1 -1
  16. package/cjs/components/CurrencyInput/CursorHelper.js +19 -16
  17. package/cjs/components/CurrencyInput/CursorHelper.js.map +1 -1
  18. package/cjs/components/DateInput/helpers/InternalDateMediator.js +8 -2
  19. package/cjs/components/DateInput/helpers/InternalDateMediator.js.map +1 -1
  20. package/cjs/components/DropdownMenu/DropdownMenu.d.ts +1 -4
  21. package/cjs/components/DropdownMenu/DropdownMenu.js +2 -16
  22. package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
  23. package/cjs/components/FileUploader/FileUploader.js +3 -1
  24. package/cjs/components/FileUploader/FileUploader.js.map +1 -1
  25. package/cjs/components/Gapped/Gapped.js +2 -2
  26. package/cjs/components/Gapped/Gapped.js.map +1 -1
  27. package/cjs/components/GlobalLoader/GlobalLoader.js +3 -5
  28. package/cjs/components/GlobalLoader/GlobalLoader.js.map +1 -1
  29. package/cjs/components/Group/Group.js +74 -31
  30. package/cjs/components/Group/Group.js.map +1 -1
  31. package/cjs/components/Input/Input.js.map +1 -1
  32. package/cjs/components/Kebab/Kebab.d.ts +2 -13
  33. package/cjs/components/Kebab/Kebab.js +5 -29
  34. package/cjs/components/Kebab/Kebab.js.map +1 -1
  35. package/cjs/components/Modal/Modal.js +2 -1
  36. package/cjs/components/Modal/Modal.js.map +1 -1
  37. package/cjs/components/Modal/ModalFooter.js +1 -1
  38. package/cjs/components/Modal/ModalFooter.js.map +1 -1
  39. package/cjs/components/Modal/ModalHeader.js +1 -1
  40. package/cjs/components/Modal/ModalHeader.js.map +1 -1
  41. package/cjs/components/Paging/Paging.d.ts +1 -1
  42. package/cjs/components/Paging/Paging.js +3 -3
  43. package/cjs/components/Paging/Paging.js.map +1 -1
  44. package/cjs/components/PasswordInput/PasswordInput.js +2 -1
  45. package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
  46. package/cjs/components/Radio/Radio.styles.js +4 -7
  47. package/cjs/components/Radio/Radio.styles.js.map +1 -1
  48. package/cjs/components/RadioGroup/RadioGroup.js +1 -1
  49. package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
  50. package/cjs/components/ResponsiveLayout/ResponsiveLayout.js +1 -1
  51. package/cjs/components/ResponsiveLayout/ResponsiveLayout.js.map +1 -1
  52. package/cjs/components/ResponsiveLayout/ResponsiveLayoutEvents.js +3 -4
  53. package/cjs/components/ResponsiveLayout/ResponsiveLayoutEvents.js.map +1 -1
  54. package/cjs/components/Select/Select.js +30 -12
  55. package/cjs/components/Select/Select.js.map +1 -1
  56. package/cjs/components/SidePage/SidePage.js +2 -1
  57. package/cjs/components/SidePage/SidePage.js.map +1 -1
  58. package/cjs/components/Spinner/Spinner.d.ts +0 -1
  59. package/cjs/components/Spinner/Spinner.js +1 -5
  60. package/cjs/components/Spinner/Spinner.js.map +1 -1
  61. package/cjs/components/Spinner/SpinnerFallbackAnimation.js +16 -5
  62. package/cjs/components/Spinner/SpinnerFallbackAnimation.js.map +1 -1
  63. package/cjs/components/Textarea/Textarea.js.map +1 -1
  64. package/cjs/components/Textarea/TextareaCounter.d.ts +1 -2
  65. package/cjs/components/Textarea/TextareaCounter.js +5 -4
  66. package/cjs/components/Textarea/TextareaCounter.js.map +1 -1
  67. package/cjs/components/Toggle/Toggle.d.ts +1 -1
  68. package/cjs/components/Toggle/Toggle.js.map +1 -1
  69. package/cjs/components/Token/Token.js +14 -2
  70. package/cjs/components/Token/Token.js.map +1 -1
  71. package/cjs/components/Token/Token.styles.js +13 -6
  72. package/cjs/components/Token/Token.styles.js.map +1 -1
  73. package/cjs/components/TokenInput/TokenInput.js +13 -10
  74. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  75. package/cjs/components/Tooltip/Tooltip.js +5 -2
  76. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  77. package/cjs/components/TooltipMenu/TooltipMenu.d.ts +1 -1
  78. package/cjs/components/TooltipMenu/TooltipMenu.js +2 -0
  79. package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
  80. package/cjs/hooks/useDrop.js +3 -1
  81. package/cjs/hooks/useDrop.js.map +1 -1
  82. package/cjs/internal/Calendar/Calendar.js +3 -3
  83. package/cjs/internal/Calendar/Calendar.js.map +1 -1
  84. package/cjs/internal/Calendar/CalendarDateShape.d.ts +1 -1
  85. package/cjs/internal/Calendar/MonthViewModel.js +36 -17
  86. package/cjs/internal/Calendar/MonthViewModel.js.map +1 -1
  87. package/cjs/internal/CommonWrapper/CommonWrapper.js +3 -3
  88. package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
  89. package/cjs/internal/CustomComboBox/ComboBoxMenu.js +6 -1
  90. package/cjs/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
  91. package/cjs/internal/CustomComboBox/CustomComboBox.js +3 -2
  92. package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
  93. package/cjs/internal/CustomComboBox/CustomComboBoxReducer.d.ts +16 -16
  94. package/cjs/internal/CustomComboBox/CustomComboBoxReducer.js +35 -35
  95. package/cjs/internal/CustomComboBox/CustomComboBoxReducer.js.map +1 -1
  96. package/cjs/internal/DateSelect/DateSelect.js +22 -11
  97. package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
  98. package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js +3 -1
  99. package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js.map +1 -1
  100. package/cjs/internal/InternalMenu/InternalMenu.js +4 -7
  101. package/cjs/internal/InternalMenu/InternalMenu.js.map +1 -1
  102. package/cjs/internal/InternalMenu/addIconPaddingIfPartOfMenu.d.ts +2 -0
  103. package/cjs/internal/InternalMenu/addIconPaddingIfPartOfMenu.js +16 -0
  104. package/cjs/internal/InternalMenu/addIconPaddingIfPartOfMenu.js.map +1 -0
  105. package/cjs/internal/MaskedInput/MaskedInput.js +7 -2
  106. package/cjs/internal/MaskedInput/MaskedInput.js.map +1 -1
  107. package/cjs/internal/Menu/Menu.js +12 -13
  108. package/cjs/internal/Menu/Menu.js.map +1 -1
  109. package/cjs/internal/Popup/Popup.d.ts +1 -0
  110. package/cjs/internal/Popup/Popup.js +8 -9
  111. package/cjs/internal/Popup/Popup.js.map +1 -1
  112. package/cjs/internal/PopupMenu/PopupMenu.d.ts +4 -0
  113. package/cjs/internal/PopupMenu/PopupMenu.js +13 -0
  114. package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
  115. package/cjs/internal/PopupMenu/validatePositions.js +6 -6
  116. package/cjs/internal/PopupMenu/validatePositions.js.map +1 -1
  117. package/cjs/internal/RenderContainer/RenderInnerContainer.d.ts +1 -1
  118. package/cjs/internal/RenderContainer/RenderInnerContainer.js +2 -1
  119. package/cjs/internal/RenderContainer/RenderInnerContainer.js.map +1 -1
  120. package/cjs/internal/RenderLayer/RenderLayer.js +4 -1
  121. package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
  122. package/cjs/internal/ThemePlayground/ThemeEditor.js +6 -1
  123. package/cjs/internal/ThemePlayground/ThemeEditor.js.map +1 -1
  124. package/cjs/internal/ThemePlayground/VariableValue.js +18 -6
  125. package/cjs/internal/ThemePlayground/VariableValue.js.map +1 -1
  126. package/cjs/internal/ThemeShowcase/ThemeShowcase.js +4 -7
  127. package/cjs/internal/ThemeShowcase/ThemeShowcase.js.map +1 -1
  128. package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  129. package/cjs/internal/ThemeShowcase/VariablesCollector.js +5 -6
  130. package/cjs/internal/ThemeShowcase/VariablesCollector.js.map +1 -1
  131. package/cjs/internal/ZIndex/ZIndexStorage.d.ts +2 -1
  132. package/cjs/internal/ZIndex/ZIndexStorage.js +13 -6
  133. package/cjs/internal/ZIndex/ZIndexStorage.js.map +1 -1
  134. package/cjs/internal/icons/16px/index.d.ts +19 -19
  135. package/cjs/internal/icons/16px/index.js +37 -38
  136. package/cjs/internal/icons/16px/index.js.map +1 -1
  137. package/cjs/lib/animation/index.d.ts +1 -1
  138. package/cjs/lib/animation/index.js +3 -3
  139. package/cjs/lib/animation/index.js.map +1 -1
  140. package/cjs/lib/date/InternalDate.js +23 -9
  141. package/cjs/lib/date/InternalDate.js.map +1 -1
  142. package/cjs/lib/date/InternalDateCalculator.js +16 -2
  143. package/cjs/lib/date/InternalDateCalculator.js.map +1 -1
  144. package/cjs/lib/date/InternalDateGetter.js +23 -6
  145. package/cjs/lib/date/InternalDateGetter.js.map +1 -1
  146. package/cjs/lib/date/InternalDateTransformer.js +11 -2
  147. package/cjs/lib/date/InternalDateTransformer.js.map +1 -1
  148. package/cjs/lib/date/InternalDateValidator.js +31 -6
  149. package/cjs/lib/date/InternalDateValidator.js.map +1 -1
  150. package/cjs/lib/events/keyboard/extractCode.js +7 -5
  151. package/cjs/lib/events/keyboard/extractCode.js.map +1 -1
  152. package/cjs/lib/rootNode/getRootNode.d.ts +9 -0
  153. package/cjs/lib/rootNode/getRootNode.js +34 -6
  154. package/cjs/lib/rootNode/getRootNode.js.map +1 -1
  155. package/cjs/lib/rootNode/rootNodeDecorator.d.ts +9 -1
  156. package/cjs/lib/rootNode/rootNodeDecorator.js +9 -1
  157. package/cjs/lib/rootNode/rootNodeDecorator.js.map +1 -1
  158. package/cjs/lib/stringUtils.js +3 -1
  159. package/cjs/lib/stringUtils.js.map +1 -1
  160. package/cjs/lib/styles/ColorFactory.js +9 -9
  161. package/cjs/lib/styles/ColorFactory.js.map +1 -1
  162. package/cjs/lib/styles/ColorHelpers.d.ts +1 -0
  163. package/cjs/lib/styles/ColorHelpers.js +33 -10
  164. package/cjs/lib/styles/ColorHelpers.js.map +1 -1
  165. package/cjs/lib/styles/ColorObject.js +3 -2
  166. package/cjs/lib/styles/ColorObject.js.map +1 -1
  167. package/cjs/lib/styles/getLabGrotesqueBaselineCompensation.d.ts +1 -0
  168. package/cjs/lib/styles/getLabGrotesqueBaselineCompensation.js +9 -0
  169. package/cjs/lib/styles/getLabGrotesqueBaselineCompensation.js.map +1 -0
  170. package/cjs/lib/taskWithDelayAndMinimalDuration.js +3 -1
  171. package/cjs/lib/taskWithDelayAndMinimalDuration.js.map +1 -1
  172. package/cjs/lib/theming/Emotion.js +5 -2
  173. package/cjs/lib/theming/Emotion.js.map +1 -1
  174. package/cjs/lib/theming/ThemeFactory.js +5 -1
  175. package/cjs/lib/theming/ThemeFactory.js.map +1 -1
  176. package/cjs/lib/theming/ThemeHelpers.js +7 -2
  177. package/cjs/lib/theming/ThemeHelpers.js.map +1 -1
  178. package/cjs/lib/utils.d.ts +15 -0
  179. package/cjs/lib/utils.js +45 -9
  180. package/cjs/lib/utils.js.map +1 -1
  181. package/components/Autocomplete/Autocomplete/Autocomplete.js +6 -5
  182. package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
  183. package/components/Button/Button/Button.js +4 -10
  184. package/components/Button/Button/Button.js.map +1 -1
  185. package/components/Button/Button.d.ts +1 -5
  186. package/components/Checkbox/Checkbox.styles/Checkbox.styles.js +2 -1
  187. package/components/Checkbox/Checkbox.styles/Checkbox.styles.js.map +1 -1
  188. package/components/CurrencyInput/CurrencyHelper/CurrencyHelper.js +12 -11
  189. package/components/CurrencyInput/CurrencyHelper/CurrencyHelper.js.map +1 -1
  190. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +15 -7
  191. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
  192. package/components/CurrencyInput/CurrencyInputHelper/CurrencyInputHelper.js +7 -1
  193. package/components/CurrencyInput/CurrencyInputHelper/CurrencyInputHelper.js.map +1 -1
  194. package/components/CurrencyInput/CursorHelper/CursorHelper.js +18 -11
  195. package/components/CurrencyInput/CursorHelper/CursorHelper.js.map +1 -1
  196. package/components/DateInput/helpers/InternalDateMediator/InternalDateMediator.js +7 -7
  197. package/components/DateInput/helpers/InternalDateMediator/InternalDateMediator.js.map +1 -1
  198. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js +3 -16
  199. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
  200. package/components/DropdownMenu/DropdownMenu.d.ts +1 -4
  201. package/components/FileUploader/FileUploader/FileUploader.js +4 -1
  202. package/components/FileUploader/FileUploader/FileUploader.js.map +1 -1
  203. package/components/Gapped/Gapped/Gapped.js +2 -2
  204. package/components/Gapped/Gapped/Gapped.js.map +1 -1
  205. package/components/GlobalLoader/GlobalLoader/GlobalLoader.js +5 -7
  206. package/components/GlobalLoader/GlobalLoader/GlobalLoader.js.map +1 -1
  207. package/components/Group/Group/Group.js +62 -30
  208. package/components/Group/Group/Group.js.map +1 -1
  209. package/components/Input/Input/Input.js.map +1 -1
  210. package/components/Kebab/Kebab/Kebab.js +3 -13
  211. package/components/Kebab/Kebab/Kebab.js.map +1 -1
  212. package/components/Kebab/Kebab.d.ts +2 -13
  213. package/components/Modal/Modal/Modal.js +2 -1
  214. package/components/Modal/Modal/Modal.js.map +1 -1
  215. package/components/Modal/ModalFooter/ModalFooter.js +1 -1
  216. package/components/Modal/ModalFooter/ModalFooter.js.map +1 -1
  217. package/components/Modal/ModalHeader/ModalHeader.js +1 -1
  218. package/components/Modal/ModalHeader/ModalHeader.js.map +1 -1
  219. package/components/Paging/Paging/Paging.js +6 -5
  220. package/components/Paging/Paging/Paging.js.map +1 -1
  221. package/components/Paging/Paging.d.ts +1 -1
  222. package/components/PasswordInput/PasswordInput/PasswordInput.js +2 -1
  223. package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
  224. package/components/Radio/Radio.styles/Radio.styles.js +2 -1
  225. package/components/Radio/Radio.styles/Radio.styles.js.map +1 -1
  226. package/components/RadioGroup/RadioGroup/RadioGroup.js +2 -2
  227. package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
  228. package/components/ResponsiveLayout/ResponsiveLayout/ResponsiveLayout.js +1 -1
  229. package/components/ResponsiveLayout/ResponsiveLayout/ResponsiveLayout.js.map +1 -1
  230. package/components/ResponsiveLayout/ResponsiveLayoutEvents/ResponsiveLayoutEvents.js +3 -3
  231. package/components/ResponsiveLayout/ResponsiveLayoutEvents/ResponsiveLayoutEvents.js.map +1 -1
  232. package/components/Select/Select/Select.js +26 -12
  233. package/components/Select/Select/Select.js.map +1 -1
  234. package/components/SidePage/SidePage/SidePage.js +2 -1
  235. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  236. package/components/Spinner/Spinner/Spinner.js +6 -2
  237. package/components/Spinner/Spinner/Spinner.js.map +1 -1
  238. package/components/Spinner/Spinner.d.ts +0 -1
  239. package/components/Spinner/SpinnerFallbackAnimation/SpinnerFallbackAnimation.js +18 -4
  240. package/components/Spinner/SpinnerFallbackAnimation/SpinnerFallbackAnimation.js.map +1 -1
  241. package/components/Textarea/Textarea/Textarea.js.map +1 -1
  242. package/components/Textarea/TextareaCounter/TextareaCounter.js +2 -1
  243. package/components/Textarea/TextareaCounter/TextareaCounter.js.map +1 -1
  244. package/components/Textarea/TextareaCounter.d.ts +1 -2
  245. package/components/Toggle/Toggle/Toggle.js.map +1 -1
  246. package/components/Toggle/Toggle.d.ts +1 -1
  247. package/components/Token/Token/Token.js +12 -1
  248. package/components/Token/Token/Token.js.map +1 -1
  249. package/components/Token/Token.styles/Token.styles.js +11 -4
  250. package/components/Token/Token.styles/Token.styles.js.map +1 -1
  251. package/components/TokenInput/TokenInput/TokenInput.js +19 -14
  252. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  253. package/components/Tooltip/Tooltip/Tooltip.js +5 -2
  254. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  255. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js +2 -0
  256. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
  257. package/components/TooltipMenu/TooltipMenu.d.ts +1 -1
  258. package/hooks/useDrop/useDrop.js +5 -1
  259. package/hooks/useDrop/useDrop.js.map +1 -1
  260. package/internal/Calendar/Calendar/Calendar.js +6 -4
  261. package/internal/Calendar/Calendar/Calendar.js.map +1 -1
  262. package/internal/Calendar/CalendarDateShape.d.ts +1 -1
  263. package/internal/Calendar/MonthViewModel/MonthViewModel.js +35 -18
  264. package/internal/Calendar/MonthViewModel/MonthViewModel.js.map +1 -1
  265. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js +3 -3
  266. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
  267. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js +23 -15
  268. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js.map +1 -1
  269. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js +18 -17
  270. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
  271. package/internal/CustomComboBox/CustomComboBoxReducer/CustomComboBoxReducer.js +35 -35
  272. package/internal/CustomComboBox/CustomComboBoxReducer/CustomComboBoxReducer.js.map +1 -1
  273. package/internal/CustomComboBox/CustomComboBoxReducer.d.ts +16 -16
  274. package/internal/DateSelect/DateSelect/DateSelect.js +21 -15
  275. package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
  276. package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js +5 -1
  277. package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js.map +1 -1
  278. package/internal/InternalMenu/InternalMenu/InternalMenu.js +13 -16
  279. package/internal/InternalMenu/InternalMenu/InternalMenu.js.map +1 -1
  280. package/internal/InternalMenu/addIconPaddingIfPartOfMenu/addIconPaddingIfPartOfMenu.js +14 -0
  281. package/internal/InternalMenu/addIconPaddingIfPartOfMenu/addIconPaddingIfPartOfMenu.js.map +1 -0
  282. package/internal/InternalMenu/addIconPaddingIfPartOfMenu/package.json +6 -0
  283. package/internal/InternalMenu/addIconPaddingIfPartOfMenu.d.ts +2 -0
  284. package/internal/MaskedInput/MaskedInput/MaskedInput.js +8 -3
  285. package/internal/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
  286. package/internal/Menu/Menu/Menu.js +9 -14
  287. package/internal/Menu/Menu/Menu.js.map +1 -1
  288. package/internal/Popup/Popup/Popup.js +8 -7
  289. package/internal/Popup/Popup/Popup.js.map +1 -1
  290. package/internal/Popup/Popup.d.ts +1 -0
  291. package/internal/PopupMenu/PopupMenu/PopupMenu.js +8 -0
  292. package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
  293. package/internal/PopupMenu/PopupMenu.d.ts +4 -0
  294. package/internal/PopupMenu/validatePositions/validatePositions.js +6 -6
  295. package/internal/PopupMenu/validatePositions/validatePositions.js.map +1 -1
  296. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js +5 -2
  297. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js.map +1 -1
  298. package/internal/RenderContainer/RenderInnerContainer.d.ts +1 -1
  299. package/internal/RenderLayer/RenderLayer/RenderLayer.js +5 -1
  300. package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
  301. package/internal/ThemePlayground/ThemeEditor/ThemeEditor.js +5 -1
  302. package/internal/ThemePlayground/ThemeEditor/ThemeEditor.js.map +1 -1
  303. package/internal/ThemePlayground/VariableValue/VariableValue.js +16 -5
  304. package/internal/ThemePlayground/VariableValue/VariableValue.js.map +1 -1
  305. package/internal/ThemeShowcase/ThemeShowcase/ThemeShowcase.js +3 -6
  306. package/internal/ThemeShowcase/ThemeShowcase/ThemeShowcase.js.map +1 -1
  307. package/internal/ThemeShowcase/VariablesCollector/VariablesCollector.js +4 -6
  308. package/internal/ThemeShowcase/VariablesCollector/VariablesCollector.js.map +1 -1
  309. package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  310. package/internal/ZIndex/ZIndexStorage/ZIndexStorage.js +12 -6
  311. package/internal/ZIndex/ZIndexStorage/ZIndexStorage.js.map +1 -1
  312. package/internal/ZIndex/ZIndexStorage.d.ts +2 -1
  313. package/internal/icons/16px/index/index.js +21 -20
  314. package/internal/icons/16px/index/index.js.map +1 -1
  315. package/internal/icons/16px/index.d.ts +19 -19
  316. package/lib/animation/index/index.js +1 -1
  317. package/lib/animation/index/index.js.map +1 -1
  318. package/lib/animation/index.d.ts +1 -1
  319. package/lib/date/InternalDate/InternalDate.js +16 -1
  320. package/lib/date/InternalDate/InternalDate.js.map +1 -1
  321. package/lib/date/InternalDateCalculator/InternalDateCalculator.js +14 -2
  322. package/lib/date/InternalDateCalculator/InternalDateCalculator.js.map +1 -1
  323. package/lib/date/InternalDateGetter/InternalDateGetter.js +20 -6
  324. package/lib/date/InternalDateGetter/InternalDateGetter.js.map +1 -1
  325. package/lib/date/InternalDateTransformer/InternalDateTransformer.js +11 -1
  326. package/lib/date/InternalDateTransformer/InternalDateTransformer.js.map +1 -1
  327. package/lib/date/InternalDateValidator/InternalDateValidator.js +31 -4
  328. package/lib/date/InternalDateValidator/InternalDateValidator.js.map +1 -1
  329. package/lib/events/keyboard/extractCode/extractCode.js +5 -5
  330. package/lib/events/keyboard/extractCode/extractCode.js.map +1 -1
  331. package/lib/rootNode/getRootNode/getRootNode.js +35 -8
  332. package/lib/rootNode/getRootNode/getRootNode.js.map +1 -1
  333. package/lib/rootNode/getRootNode.d.ts +9 -0
  334. package/lib/rootNode/rootNodeDecorator/rootNodeDecorator.js +1 -1
  335. package/lib/rootNode/rootNodeDecorator/rootNodeDecorator.js.map +1 -1
  336. package/lib/rootNode/rootNodeDecorator.d.ts +9 -1
  337. package/lib/stringUtils/stringUtils.js +4 -1
  338. package/lib/stringUtils/stringUtils.js.map +1 -1
  339. package/lib/styles/ColorFactory/ColorFactory.js +9 -9
  340. package/lib/styles/ColorFactory/ColorFactory.js.map +1 -1
  341. package/lib/styles/ColorHelpers/ColorHelpers.js +26 -9
  342. package/lib/styles/ColorHelpers/ColorHelpers.js.map +1 -1
  343. package/lib/styles/ColorHelpers.d.ts +1 -0
  344. package/lib/styles/ColorObject/ColorObject.js +2 -2
  345. package/lib/styles/ColorObject/ColorObject.js.map +1 -1
  346. package/lib/styles/getLabGrotesqueBaselineCompensation/getLabGrotesqueBaselineCompensation.js +9 -0
  347. package/lib/styles/getLabGrotesqueBaselineCompensation/getLabGrotesqueBaselineCompensation.js.map +1 -0
  348. package/lib/styles/getLabGrotesqueBaselineCompensation/package.json +6 -0
  349. package/lib/styles/getLabGrotesqueBaselineCompensation.d.ts +1 -0
  350. package/lib/taskWithDelayAndMinimalDuration/taskWithDelayAndMinimalDuration.js +4 -1
  351. package/lib/taskWithDelayAndMinimalDuration/taskWithDelayAndMinimalDuration.js.map +1 -1
  352. package/lib/theming/Emotion/Emotion.js +5 -2
  353. package/lib/theming/Emotion/Emotion.js.map +1 -1
  354. package/lib/theming/ThemeFactory/ThemeFactory.js +5 -2
  355. package/lib/theming/ThemeFactory/ThemeFactory.js.map +1 -1
  356. package/lib/theming/ThemeHelpers/ThemeHelpers.js +5 -1
  357. package/lib/theming/ThemeHelpers/ThemeHelpers.js.map +1 -1
  358. package/lib/utils/utils.js +42 -6
  359. package/lib/utils/utils.js.map +1 -1
  360. package/lib/utils.d.ts +15 -0
  361. package/package.json +4 -3
  362. package/cjs/components/Button/Corners.d.ts +0 -6
  363. package/cjs/components/Button/Corners.js +0 -5
  364. package/cjs/components/Button/Corners.js.map +0 -1
  365. package/components/Button/Corners/Corners.js +0 -6
  366. package/components/Button/Corners/Corners.js.map +0 -1
  367. package/components/Button/Corners/package.json +0 -6
  368. package/components/Button/Corners.d.ts +0 -6
@@ -46,25 +46,25 @@ export declare type CustomComboBoxAction<T> = {
46
46
  export declare type CustomComboBoxEffect<T> = (dispatch: (action: CustomComboBoxAction<T>) => void, getState: () => CustomComboBoxState<T>, getProps: () => CustomComboBoxProps<T>, getInstance: () => CustomComboBox<T>) => void;
47
47
  declare type Effect = CustomComboBoxEffect<any>;
48
48
  interface EffectFactory {
49
- Search: (query: string) => Effect;
50
- DebouncedSearch: Effect & {
49
+ search: (query: string) => Effect;
50
+ debouncedSearch: Effect & {
51
51
  cancel(): void;
52
52
  flush(): void;
53
53
  };
54
- CancelRequest: Effect;
55
- Blur: Effect;
56
- Focus: Effect;
57
- ValueChange: (value: any) => Effect;
58
- UnexpectedInput: (textValue: string, items: Nullable<any[]>) => Effect;
59
- InputChange: Effect;
60
- InputFocus: Effect;
61
- HighlightMenuItem: Effect;
62
- SelectMenuItem: (event: React.KeyboardEvent<HTMLElement>) => Effect;
63
- InputKeyDown: (event: React.KeyboardEvent<HTMLElement>) => Effect;
64
- MoveMenuHighlight: (direction: 'up' | 'down') => Effect;
65
- ResetHighlightedMenuItem: Effect;
66
- Reflow: Effect;
67
- SelectInputText: Effect;
54
+ cancelRequest: Effect;
55
+ blur: Effect;
56
+ focus: Effect;
57
+ valueChange: (value: any) => Effect;
58
+ unexpectedInput: (textValue: string, items: Nullable<any[]>) => Effect;
59
+ inputChange: Effect;
60
+ inputFocus: Effect;
61
+ highlightMenuItem: Effect;
62
+ selectMenuItem: (event: React.KeyboardEvent<HTMLElement>) => Effect;
63
+ inputKeyDown: (event: React.KeyboardEvent<HTMLElement>) => Effect;
64
+ moveMenuHighlight: (direction: 'up' | 'down') => Effect;
65
+ resetHighlightedMenuItem: Effect;
66
+ reflow: Effect;
67
+ selectInputText: Effect;
68
68
  }
69
69
  export declare const Effect: EffectFactory;
70
70
  export declare function reducer<T>(state: CustomComboBoxState<T>, props: CustomComboBoxProps<T>, action: CustomComboBoxAction<T>): Pick<CustomComboBoxState<T>, never> | [Pick<CustomComboBoxState<T>, never>, Array<CustomComboBoxEffect<T>>];
@@ -71,36 +71,36 @@ var getValueString = function getValueString(value, valueToString) {
71
71
  };
72
72
 
73
73
  var Effect = {
74
- Search: function Search(query) {return function (dispatch, getState, getProps, getInstance) {
74
+ search: function search(query) {return function (dispatch, getState, getProps, getInstance) {
75
75
  getInstance().search(query);
76
76
  };},
77
- DebouncedSearch: (0, _lodash.default)(function (dispatch, getState, getProps, getInstance) {
78
- var searchEffect = Effect.Search(getState().textValue);
77
+ debouncedSearch: (0, _lodash.default)(function (dispatch, getState, getProps, getInstance) {
78
+ var searchEffect = Effect.search(getState().textValue);
79
79
  searchEffect(dispatch, getState, getProps, getInstance);
80
80
  }, DEBOUNCE_DELAY),
81
- CancelRequest: function CancelRequest(dispatch, getState, getProps, getInstance) {
82
- Effect.DebouncedSearch.cancel();
81
+ cancelRequest: function cancelRequest(dispatch, getState, getProps, getInstance) {
82
+ Effect.debouncedSearch.cancel();
83
83
  getInstance().cancelSearch();
84
84
  },
85
- Blur: function Blur(dispatch, getState, getProps) {
85
+ blur: function blur(dispatch, getState, getProps) {
86
86
  var _getProps = getProps(),onBlur = _getProps.onBlur;
87
87
  if (onBlur) {
88
88
  onBlur();
89
89
  }
90
90
  },
91
- Focus: function Focus(dispatch, getState, getProps) {
91
+ focus: function focus(dispatch, getState, getProps) {
92
92
  var _getProps2 = getProps(),onFocus = _getProps2.onFocus;
93
93
  if (onFocus) {
94
94
  onFocus();
95
95
  }
96
96
  },
97
- ValueChange: function ValueChange(value) {return function (dispatch, getState, getProps) {
97
+ valueChange: function valueChange(value) {return function (dispatch, getState, getProps) {
98
98
  var _getProps3 = getProps(),onValueChange = _getProps3.onValueChange;
99
99
  if (onValueChange) {
100
100
  onValueChange(value);
101
101
  }
102
102
  };},
103
- UnexpectedInput: function UnexpectedInput(textValue, items) {return function (dispatch, getState, getProps) {
103
+ unexpectedInput: function unexpectedInput(textValue, items) {return function (dispatch, getState, getProps) {
104
104
  var _getProps4 = getProps(),onUnexpectedInput = _getProps4.onUnexpectedInput,valueToString = _getProps4.valueToString;
105
105
 
106
106
  if (Array.isArray(items) && items.length === 1) {
@@ -120,7 +120,7 @@ var Effect = {
120
120
  }
121
121
  }
122
122
  };},
123
- InputChange: function InputChange(dispatch, getState, getProps) {
123
+ inputChange: function inputChange(dispatch, getState, getProps) {
124
124
  var _getProps5 = getProps(),onInputValueChange = _getProps5.onInputValueChange;
125
125
  var _getState = getState(),textValue = _getState.textValue;
126
126
  if (onInputValueChange) {
@@ -130,7 +130,7 @@ var Effect = {
130
130
  }
131
131
  }
132
132
  },
133
- InputFocus: function InputFocus(dispatch, getState, getProps, getInstance) {
133
+ inputFocus: function inputFocus(dispatch, getState, getProps, getInstance) {
134
134
  var _getInstance = getInstance(),input = _getInstance.input;
135
135
 
136
136
  if (!input) {
@@ -139,7 +139,7 @@ var Effect = {
139
139
 
140
140
  input.focus();
141
141
  },
142
- HighlightMenuItem: function HighlightMenuItem(dispatch, getState, getProps, getInstance) {
142
+ highlightMenuItem: function highlightMenuItem(dispatch, getState, getProps, getInstance) {
143
143
  var _getProps6 = getProps(),value = _getProps6.value,itemToValue = _getProps6.itemToValue,valueToString = _getProps6.valueToString;
144
144
  var _getState2 = getState(),items = _getState2.items,focused = _getState2.focused,textValue = _getState2.textValue,requestStatus = _getState2.requestStatus;
145
145
  var _getInstance2 = getInstance(),menu = _getInstance2.menu;
@@ -170,33 +170,33 @@ var Effect = {
170
170
  requestAnimationFrame(function () {return menu && menu.down();});
171
171
  }
172
172
  },
173
- SelectMenuItem: function SelectMenuItem(event) {return function (dispatch, getState, getProps, getInstance) {
173
+ selectMenuItem: function selectMenuItem(event) {return function (dispatch, getState, getProps, getInstance) {
174
174
  var _getInstance3 = getInstance(),menu = _getInstance3.menu;
175
175
  if (menu) {
176
176
  menu.enter(event);
177
177
  }
178
178
  };},
179
- MoveMenuHighlight: function MoveMenuHighlight(direction) {return function (dispatch, getState, getProps, getInstance) {
179
+ moveMenuHighlight: function moveMenuHighlight(direction) {return function (dispatch, getState, getProps, getInstance) {
180
180
  var _getInstance4 = getInstance(),menu = _getInstance4.menu;
181
181
  if (menu) {
182
182
  menu[direction]();
183
183
  }
184
184
  };},
185
- ResetHighlightedMenuItem: function ResetHighlightedMenuItem(dispatch, getState, getProps, getInstance) {
185
+ resetHighlightedMenuItem: function resetHighlightedMenuItem(dispatch, getState, getProps, getInstance) {
186
186
  var combobox = getInstance();
187
187
 
188
188
  if (combobox.menu && combobox.menu.hasHighlightedItem()) {
189
189
  combobox.menu.reset();
190
190
  }
191
191
  },
192
- Reflow: function Reflow() {
192
+ reflow: function reflow() {
193
193
  LayoutEvents.emit();
194
194
  },
195
- SelectInputText: function SelectInputText(dispatch, getState, getProps, getInstance) {
195
+ selectInputText: function selectInputText(dispatch, getState, getProps, getInstance) {
196
196
  var combobox = getInstance();
197
197
  combobox.selectInputText();
198
198
  },
199
- InputKeyDown: function InputKeyDown(event) {return function (dispatch, getState, getProps, getInstance) {
199
+ inputKeyDown: function inputKeyDown(event) {return function (dispatch, getState, getProps, getInstance) {
200
200
  var _getProps7 = getProps(),onInputKeyDown = _getProps7.onInputKeyDown;
201
201
  if (onInputKeyDown) {
202
202
  onInputKeyDown(event);
@@ -224,7 +224,7 @@ action)
224
224
  items: null,
225
225
  textValue: _textValue },
226
226
 
227
- [Effect.ValueChange(_value2), Effect.CancelRequest, Effect.InputFocus]];
227
+ [Effect.valueChange(_value2), Effect.cancelRequest, Effect.inputFocus]];
228
228
 
229
229
  }
230
230
  return [
@@ -235,7 +235,7 @@ action)
235
235
  items: null,
236
236
  textValue: _textValue },
237
237
 
238
- [Effect.ValueChange(_value2), Effect.CancelRequest]];
238
+ [Effect.valueChange(_value2), Effect.cancelRequest]];
239
239
 
240
240
  }
241
241
  case 'TextChange':{
@@ -250,10 +250,10 @@ action)
250
250
  opened: false,
251
251
  items: null }),
252
252
 
253
- [Effect.InputChange]];
253
+ [Effect.inputChange]];
254
254
 
255
255
  }
256
- return [newState, [Effect.DebouncedSearch, Effect.InputChange]];
256
+ return [newState, [Effect.debouncedSearch, Effect.inputChange]];
257
257
  }
258
258
  case 'KeyPress':{
259
259
  var e = action.event;
@@ -263,13 +263,13 @@ action)
263
263
  switch (true) {
264
264
  case (0, _identifiers.isKeyEnter)(e):
265
265
  e.preventDefault();
266
- effects.push(Effect.SelectMenuItem(e));
266
+ effects.push(Effect.selectMenuItem(e));
267
267
  break;
268
268
  case (0, _identifiers.isKeyArrowVertical)(e):
269
269
  e.preventDefault();
270
- effects.push(Effect.MoveMenuHighlight((0, _identifiers.isKeyArrowUp)(e) ? 'up' : 'down'));
270
+ effects.push(Effect.moveMenuHighlight((0, _identifiers.isKeyArrowUp)(e) ? 'up' : 'down'));
271
271
  if (!state.opened) {
272
- effects.push(Effect.Search(state.textValue));
272
+ effects.push(Effect.search(state.textValue));
273
273
  }
274
274
  break;
275
275
  case (0, _identifiers.isKeyEscape)(e):
@@ -280,7 +280,7 @@ action)
280
280
 
281
281
  break;}
282
282
 
283
- return [nextState, [].concat(effects, [Effect.InputKeyDown(e)])];
283
+ return [nextState, [].concat(effects, [Effect.inputKeyDown(e)])];
284
284
  }
285
285
  case 'DidUpdate':{
286
286
  if ((0, _lodash2.default)(props.value, action.prevProps.value)) {
@@ -303,16 +303,16 @@ action)
303
303
  editing: true };
304
304
 
305
305
  if (!props.searchOnFocus) {
306
- return [_newState, [Effect.Focus]];
306
+ return [_newState, [Effect.focus]];
307
307
  }
308
308
  if (state.editing) {
309
- return [_newState, [Effect.Search(state.textValue), Effect.Focus]];
309
+ return [_newState, [Effect.search(state.textValue), Effect.focus]];
310
310
  }
311
- return [_newState, [Effect.Search(''), Effect.Focus, Effect.SelectInputText]];
311
+ return [_newState, [Effect.search(''), Effect.focus, Effect.selectInputText]];
312
312
  }
313
313
  case 'InputClick':{
314
314
  if (!state.opened && props.searchOnFocus) {
315
- return [state, [Effect.Search('')]];
315
+ return [state, [Effect.search('')]];
316
316
  }
317
317
  return state;
318
318
  }
@@ -326,7 +326,7 @@ action)
326
326
  items: null,
327
327
  editing: false },
328
328
 
329
- [Effect.Blur, Effect.CancelRequest]];
329
+ [Effect.blur, Effect.cancelRequest]];
330
330
 
331
331
  }
332
332
 
@@ -336,7 +336,7 @@ action)
336
336
  opened: false,
337
337
  items: null },
338
338
 
339
- [Effect.Blur, Effect.CancelRequest, Effect.UnexpectedInput(state.textValue, _items)]];
339
+ [Effect.blur, Effect.cancelRequest, Effect.unexpectedInput(state.textValue, _items)]];
340
340
 
341
341
  }
342
342
  case 'Reset':{
@@ -349,7 +349,7 @@ action)
349
349
  return { opened: false, items: null };
350
350
  }
351
351
  case 'Search':{
352
- return [state, [Effect.Search(action.query)]];
352
+ return [state, [Effect.search(action.query)]];
353
353
  }
354
354
  case 'RequestItems':{
355
355
  return {
@@ -367,7 +367,7 @@ action)
367
367
  items: action.items,
368
368
  requestStatus: _CustomComboBoxTypes.ComboBoxRequestStatus.Success },
369
369
 
370
- [shouldResetMenuHighlight ? Effect.ResetHighlightedMenuItem : Effect.HighlightMenuItem, Effect.Reflow]];
370
+ [shouldResetMenuHighlight ? Effect.resetHighlightedMenuItem : Effect.highlightMenuItem, Effect.reflow]];
371
371
 
372
372
  }
373
373
  case 'RequestFailure':{
@@ -379,7 +379,7 @@ action)
379
379
  requestStatus: _CustomComboBoxTypes.ComboBoxRequestStatus.Failed,
380
380
  repeatRequest: action.repeatRequest },
381
381
 
382
- [Effect.HighlightMenuItem]];
382
+ [Effect.highlightMenuItem]];
383
383
 
384
384
  }
385
385
  case 'CancelRequest':{
@@ -1 +1 @@
1
- {"version":3,"sources":["CustomComboBoxReducer.tsx"],"names":["DEBOUNCE_DELAY","getValueString","value","valueToString","Effect","Search","query","dispatch","getState","getProps","getInstance","search","DebouncedSearch","searchEffect","textValue","CancelRequest","cancel","cancelSearch","Blur","onBlur","Focus","onFocus","ValueChange","onValueChange","UnexpectedInput","items","onUnexpectedInput","Array","isArray","length","singleItem","valueContent","type","keepFocus","undefined","InputChange","onInputValueChange","returnedValue","InputFocus","input","focus","HighlightMenuItem","itemToValue","focused","requestStatus","menu","valueString","index","findIndex","x","highlightItem","requestAnimationFrame","scrollToSelected","ComboBoxRequestStatus","Failed","down","SelectMenuItem","event","enter","MoveMenuHighlight","direction","ResetHighlightedMenuItem","combobox","hasHighlightedItem","reset","Reflow","LayoutEvents","emit","SelectInputText","selectInputText","InputKeyDown","onInputKeyDown","never","_","reducer","state","props","action","opened","inputChanged","editing","newState","searchOnFocus","e","effects","nextState","preventDefault","push","prevProps","DefaultState","loading","Pending","shouldResetMenuHighlight","Success","repeatRequest","Unknown"],"mappings":"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","sourcesContent":["import React from 'react';\nimport debounce from 'lodash.debounce';\nimport isEqual from 'lodash.isequal';\n\nimport { isNonNullable } from '../../lib/utils';\nimport { isKeyArrowUp, isKeyArrowVertical, isKeyEnter, isKeyEscape } from '../../lib/events/keyboard/identifiers';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { Nullable } from '../../typings/utility-types';\n\nimport { CustomComboBox, CustomComboBoxProps, CustomComboBoxState, DefaultState } from './CustomComboBox';\nimport { ComboBoxRequestStatus } from './CustomComboBoxTypes';\n\nexport type CustomComboBoxAction<T> =\n | { type: 'ValueChange'; value: T; keepFocus: boolean }\n | { type: 'TextChange'; value: string }\n | { type: 'KeyPress'; event: React.KeyboardEvent }\n | {\n type: 'DidUpdate';\n prevProps: CustomComboBoxProps<T>;\n prevState: CustomComboBoxState<T>;\n }\n | { type: 'Mount' }\n | { type: 'Focus' }\n | { type: 'InputClick' }\n | { type: 'Blur' }\n | { type: 'Reset' }\n | { type: 'Open' }\n | { type: 'Close' }\n | { type: 'Search'; query: string }\n | { type: 'RequestItems' }\n | { type: 'ReceiveItems'; items: T[] }\n | { type: 'RequestFailure'; repeatRequest: () => void }\n | { type: 'CancelRequest' };\n\nexport type CustomComboBoxEffect<T> = (\n dispatch: (action: CustomComboBoxAction<T>) => void,\n getState: () => CustomComboBoxState<T>,\n getProps: () => CustomComboBoxProps<T>,\n getInstance: () => CustomComboBox<T>,\n) => void;\n\ntype Effect = CustomComboBoxEffect<any>;\n\ninterface EffectFactory {\n Search: (query: string) => Effect;\n DebouncedSearch: Effect & {\n cancel(): void;\n flush(): void;\n };\n CancelRequest: Effect;\n Blur: Effect;\n Focus: Effect;\n\n ValueChange: (value: any) => Effect;\n UnexpectedInput: (textValue: string, items: Nullable<any[]>) => Effect;\n InputChange: Effect;\n InputFocus: Effect;\n HighlightMenuItem: Effect;\n SelectMenuItem: (event: React.KeyboardEvent<HTMLElement>) => Effect;\n InputKeyDown: (event: React.KeyboardEvent<HTMLElement>) => Effect;\n MoveMenuHighlight: (direction: 'up' | 'down') => Effect;\n ResetHighlightedMenuItem: Effect;\n Reflow: Effect;\n SelectInputText: Effect;\n}\n\nconst DEBOUNCE_DELAY = 300;\n\nconst getValueString = (value: any, valueToString: CustomComboBoxProps<any>['valueToString']) => {\n return isNonNullable(value) ? valueToString(value) : '';\n};\n\nexport const Effect: EffectFactory = {\n Search: (query) => (dispatch, getState, getProps, getInstance) => {\n getInstance().search(query);\n },\n DebouncedSearch: debounce((dispatch, getState, getProps, getInstance) => {\n const searchEffect = Effect.Search(getState().textValue);\n searchEffect(dispatch, getState, getProps, getInstance);\n }, DEBOUNCE_DELAY),\n CancelRequest: (dispatch, getState, getProps, getInstance) => {\n Effect.DebouncedSearch.cancel();\n getInstance().cancelSearch();\n },\n Blur: (dispatch, getState, getProps) => {\n const { onBlur } = getProps();\n if (onBlur) {\n onBlur();\n }\n },\n Focus: (dispatch, getState, getProps) => {\n const { onFocus } = getProps();\n if (onFocus) {\n onFocus();\n }\n },\n ValueChange: (value) => (dispatch, getState, getProps) => {\n const { onValueChange } = getProps();\n if (onValueChange) {\n onValueChange(value);\n }\n },\n UnexpectedInput: (textValue, items) => (dispatch, getState, getProps) => {\n const { onUnexpectedInput, valueToString } = getProps();\n\n if (Array.isArray(items) && items.length === 1) {\n const singleItem = items[0];\n const valueContent = getValueString(singleItem, valueToString);\n\n if (valueContent === textValue) {\n dispatch({ type: 'ValueChange', value: singleItem, keepFocus: false });\n return;\n }\n }\n\n if (onUnexpectedInput) {\n const value = onUnexpectedInput(textValue);\n if (value !== undefined) {\n dispatch({ type: 'ValueChange', value, keepFocus: false });\n }\n }\n },\n InputChange: (dispatch, getState, getProps) => {\n const { onInputValueChange } = getProps();\n const { textValue } = getState();\n if (onInputValueChange) {\n const returnedValue = onInputValueChange(textValue);\n if (typeof returnedValue === 'string' && returnedValue !== textValue) {\n dispatch({ type: 'TextChange', value: returnedValue });\n }\n }\n },\n InputFocus: (dispatch, getState, getProps, getInstance) => {\n const { input } = getInstance();\n\n if (!input) {\n return;\n }\n\n input.focus();\n },\n HighlightMenuItem: (dispatch, getState, getProps, getInstance) => {\n const { value, itemToValue, valueToString } = getProps();\n const { items, focused, textValue, requestStatus } = getState();\n const { menu } = getInstance();\n const valueString = getValueString(value, valueToString);\n\n if (!menu) {\n return;\n }\n\n if (!focused) {\n return;\n }\n\n let index = -1;\n if (items && items.length && isNonNullable(value)) {\n index = items.findIndex((x) => itemToValue(x) === itemToValue(value));\n }\n menu.highlightItem(index);\n\n if (index >= 0) {\n // FIXME: accessing private props\n // @ts-ignore\n requestAnimationFrame(() => menu && menu.scrollToSelected());\n return;\n }\n\n if (textValue !== valueString || requestStatus === ComboBoxRequestStatus.Failed) {\n requestAnimationFrame(() => menu && menu.down());\n }\n },\n SelectMenuItem: (event) => (dispatch, getState, getProps, getInstance) => {\n const { menu } = getInstance();\n if (menu) {\n menu.enter(event);\n }\n },\n MoveMenuHighlight: (direction) => (dispatch, getState, getProps, getInstance) => {\n const { menu } = getInstance();\n if (menu) {\n menu[direction]();\n }\n },\n ResetHighlightedMenuItem: (dispatch, getState, getProps, getInstance) => {\n const combobox = getInstance();\n\n if (combobox.menu && combobox.menu.hasHighlightedItem()) {\n combobox.menu.reset();\n }\n },\n Reflow: () => {\n LayoutEvents.emit();\n },\n SelectInputText: (dispatch, getState, getProps, getInstance) => {\n const combobox = getInstance();\n combobox.selectInputText();\n },\n InputKeyDown: (event) => (dispatch, getState, getProps, getInstance) => {\n const { onInputKeyDown } = getProps();\n if (onInputKeyDown) {\n onInputKeyDown(event);\n }\n },\n};\n\nconst never = (_: never) => null;\n\nexport function reducer<T>(\n state: CustomComboBoxState<T>,\n props: CustomComboBoxProps<T>,\n action: CustomComboBoxAction<T>,\n): Pick<CustomComboBoxState<T>, never> | [Pick<CustomComboBoxState<T>, never>, Array<CustomComboBoxEffect<T>>] {\n switch (action.type) {\n case 'ValueChange': {\n const { value, keepFocus } = action;\n const textValue = getValueString(value, props.valueToString);\n if (keepFocus) {\n return [\n {\n opened: false,\n inputChanged: false,\n editing: true,\n items: null,\n textValue,\n },\n [Effect.ValueChange(value), Effect.CancelRequest, Effect.InputFocus],\n ];\n }\n return [\n {\n opened: false,\n inputChanged: false,\n editing: false,\n items: null,\n textValue,\n },\n [Effect.ValueChange(value), Effect.CancelRequest],\n ];\n }\n case 'TextChange': {\n const newState = {\n inputChanged: true,\n textValue: action.value,\n };\n if (!action.value && !props.searchOnFocus) {\n return [\n {\n ...newState,\n opened: false,\n items: null,\n },\n [Effect.InputChange],\n ];\n }\n return [newState, [Effect.DebouncedSearch, Effect.InputChange]];\n }\n case 'KeyPress': {\n const e = action.event as React.KeyboardEvent<HTMLElement>;\n const effects = [];\n let nextState = state;\n\n switch (true) {\n case isKeyEnter(e):\n e.preventDefault();\n effects.push(Effect.SelectMenuItem(e));\n break;\n case isKeyArrowVertical(e):\n e.preventDefault();\n effects.push(Effect.MoveMenuHighlight(isKeyArrowUp(e) ? 'up' : 'down'));\n if (!state.opened) {\n effects.push(Effect.Search(state.textValue));\n }\n break;\n case isKeyEscape(e):\n nextState = {\n ...state,\n items: null,\n opened: false,\n };\n break;\n }\n return [nextState, [...effects, Effect.InputKeyDown(e)]];\n }\n case 'DidUpdate': {\n if (isEqual(props.value, action.prevProps.value)) {\n return state;\n }\n\n return {\n opened: false,\n textValue: state.editing ? state.textValue : getValueString(props.value, props.valueToString),\n };\n }\n case 'Mount': {\n return {\n textValue: getValueString(props.value, props.valueToString),\n };\n }\n case 'Focus': {\n const newState = {\n focused: true,\n editing: true,\n };\n if (!props.searchOnFocus) {\n return [newState, [Effect.Focus]];\n }\n if (state.editing) {\n return [newState, [Effect.Search(state.textValue), Effect.Focus]];\n }\n return [newState, [Effect.Search(''), Effect.Focus, Effect.SelectInputText]];\n }\n case 'InputClick': {\n if (!state.opened && props.searchOnFocus) {\n return [state, [Effect.Search('')]];\n }\n return state;\n }\n case 'Blur': {\n const { inputChanged, items } = state;\n if (!inputChanged) {\n return [\n {\n focused: false,\n opened: false,\n items: null,\n editing: false,\n },\n [Effect.Blur, Effect.CancelRequest],\n ];\n }\n\n return [\n {\n focused: false,\n opened: false,\n items: null,\n },\n [Effect.Blur, Effect.CancelRequest, Effect.UnexpectedInput(state.textValue, items)],\n ];\n }\n case 'Reset': {\n return DefaultState;\n }\n case 'Open': {\n return { opened: true };\n }\n case 'Close': {\n return { opened: false, items: null };\n }\n case 'Search': {\n return [state, [Effect.Search(action.query)]];\n }\n case 'RequestItems': {\n return {\n loading: true,\n opened: true,\n requestStatus: ComboBoxRequestStatus.Pending,\n };\n }\n case 'ReceiveItems': {\n const shouldResetMenuHighlight = state.textValue === '';\n return [\n {\n loading: false,\n opened: true,\n items: action.items,\n requestStatus: ComboBoxRequestStatus.Success,\n },\n [shouldResetMenuHighlight ? Effect.ResetHighlightedMenuItem : Effect.HighlightMenuItem, Effect.Reflow],\n ];\n }\n case 'RequestFailure': {\n return [\n {\n loading: false,\n opened: true,\n items: null,\n requestStatus: ComboBoxRequestStatus.Failed,\n repeatRequest: action.repeatRequest,\n },\n [Effect.HighlightMenuItem],\n ];\n }\n case 'CancelRequest': {\n return {\n loading: false,\n requestStatus: ComboBoxRequestStatus.Unknown,\n };\n }\n default: {\n never(action);\n }\n }\n return state;\n}\n"]}
1
+ {"version":3,"sources":["CustomComboBoxReducer.tsx"],"names":["DEBOUNCE_DELAY","getValueString","value","valueToString","Effect","search","query","dispatch","getState","getProps","getInstance","debouncedSearch","searchEffect","textValue","cancelRequest","cancel","cancelSearch","blur","onBlur","focus","onFocus","valueChange","onValueChange","unexpectedInput","items","onUnexpectedInput","Array","isArray","length","singleItem","valueContent","type","keepFocus","undefined","inputChange","onInputValueChange","returnedValue","inputFocus","input","highlightMenuItem","itemToValue","focused","requestStatus","menu","valueString","index","findIndex","x","highlightItem","requestAnimationFrame","scrollToSelected","ComboBoxRequestStatus","Failed","down","selectMenuItem","event","enter","moveMenuHighlight","direction","resetHighlightedMenuItem","combobox","hasHighlightedItem","reset","reflow","LayoutEvents","emit","selectInputText","inputKeyDown","onInputKeyDown","never","_","reducer","state","props","action","opened","inputChanged","editing","newState","searchOnFocus","e","effects","nextState","preventDefault","push","prevProps","DefaultState","loading","Pending","shouldResetMenuHighlight","Success","repeatRequest","Unknown"],"mappings":"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","sourcesContent":["import React from 'react';\nimport debounce from 'lodash.debounce';\nimport isEqual from 'lodash.isequal';\n\nimport { isNonNullable } from '../../lib/utils';\nimport { isKeyArrowUp, isKeyArrowVertical, isKeyEnter, isKeyEscape } from '../../lib/events/keyboard/identifiers';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { Nullable } from '../../typings/utility-types';\n\nimport { CustomComboBox, CustomComboBoxProps, CustomComboBoxState, DefaultState } from './CustomComboBox';\nimport { ComboBoxRequestStatus } from './CustomComboBoxTypes';\n\nexport type CustomComboBoxAction<T> =\n | { type: 'ValueChange'; value: T; keepFocus: boolean }\n | { type: 'TextChange'; value: string }\n | { type: 'KeyPress'; event: React.KeyboardEvent }\n | {\n type: 'DidUpdate';\n prevProps: CustomComboBoxProps<T>;\n prevState: CustomComboBoxState<T>;\n }\n | { type: 'Mount' }\n | { type: 'Focus' }\n | { type: 'InputClick' }\n | { type: 'Blur' }\n | { type: 'Reset' }\n | { type: 'Open' }\n | { type: 'Close' }\n | { type: 'Search'; query: string }\n | { type: 'RequestItems' }\n | { type: 'ReceiveItems'; items: T[] }\n | { type: 'RequestFailure'; repeatRequest: () => void }\n | { type: 'CancelRequest' };\n\nexport type CustomComboBoxEffect<T> = (\n dispatch: (action: CustomComboBoxAction<T>) => void,\n getState: () => CustomComboBoxState<T>,\n getProps: () => CustomComboBoxProps<T>,\n getInstance: () => CustomComboBox<T>,\n) => void;\n\ntype Effect = CustomComboBoxEffect<any>;\n\ninterface EffectFactory {\n search: (query: string) => Effect;\n debouncedSearch: Effect & {\n cancel(): void;\n flush(): void;\n };\n cancelRequest: Effect;\n blur: Effect;\n focus: Effect;\n\n valueChange: (value: any) => Effect;\n unexpectedInput: (textValue: string, items: Nullable<any[]>) => Effect;\n inputChange: Effect;\n inputFocus: Effect;\n highlightMenuItem: Effect;\n selectMenuItem: (event: React.KeyboardEvent<HTMLElement>) => Effect;\n inputKeyDown: (event: React.KeyboardEvent<HTMLElement>) => Effect;\n moveMenuHighlight: (direction: 'up' | 'down') => Effect;\n resetHighlightedMenuItem: Effect;\n reflow: Effect;\n selectInputText: Effect;\n}\n\nconst DEBOUNCE_DELAY = 300;\n\nconst getValueString = (value: any, valueToString: CustomComboBoxProps<any>['valueToString']) => {\n return isNonNullable(value) ? valueToString(value) : '';\n};\n\nexport const Effect: EffectFactory = {\n search: (query) => (dispatch, getState, getProps, getInstance) => {\n getInstance().search(query);\n },\n debouncedSearch: debounce((dispatch, getState, getProps, getInstance) => {\n const searchEffect = Effect.search(getState().textValue);\n searchEffect(dispatch, getState, getProps, getInstance);\n }, DEBOUNCE_DELAY),\n cancelRequest: (dispatch, getState, getProps, getInstance) => {\n Effect.debouncedSearch.cancel();\n getInstance().cancelSearch();\n },\n blur: (dispatch, getState, getProps) => {\n const { onBlur } = getProps();\n if (onBlur) {\n onBlur();\n }\n },\n focus: (dispatch, getState, getProps) => {\n const { onFocus } = getProps();\n if (onFocus) {\n onFocus();\n }\n },\n valueChange: (value) => (dispatch, getState, getProps) => {\n const { onValueChange } = getProps();\n if (onValueChange) {\n onValueChange(value);\n }\n },\n unexpectedInput: (textValue, items) => (dispatch, getState, getProps) => {\n const { onUnexpectedInput, valueToString } = getProps();\n\n if (Array.isArray(items) && items.length === 1) {\n const singleItem = items[0];\n const valueContent = getValueString(singleItem, valueToString);\n\n if (valueContent === textValue) {\n dispatch({ type: 'ValueChange', value: singleItem, keepFocus: false });\n return;\n }\n }\n\n if (onUnexpectedInput) {\n const value = onUnexpectedInput(textValue);\n if (value !== undefined) {\n dispatch({ type: 'ValueChange', value, keepFocus: false });\n }\n }\n },\n inputChange: (dispatch, getState, getProps) => {\n const { onInputValueChange } = getProps();\n const { textValue } = getState();\n if (onInputValueChange) {\n const returnedValue = onInputValueChange(textValue);\n if (typeof returnedValue === 'string' && returnedValue !== textValue) {\n dispatch({ type: 'TextChange', value: returnedValue });\n }\n }\n },\n inputFocus: (dispatch, getState, getProps, getInstance) => {\n const { input } = getInstance();\n\n if (!input) {\n return;\n }\n\n input.focus();\n },\n highlightMenuItem: (dispatch, getState, getProps, getInstance) => {\n const { value, itemToValue, valueToString } = getProps();\n const { items, focused, textValue, requestStatus } = getState();\n const { menu } = getInstance();\n const valueString = getValueString(value, valueToString);\n\n if (!menu) {\n return;\n }\n\n if (!focused) {\n return;\n }\n\n let index = -1;\n if (items && items.length && isNonNullable(value)) {\n index = items.findIndex((x) => itemToValue(x) === itemToValue(value));\n }\n menu.highlightItem(index);\n\n if (index >= 0) {\n // FIXME: accessing private props\n // @ts-ignore\n requestAnimationFrame(() => menu && menu.scrollToSelected());\n return;\n }\n\n if (textValue !== valueString || requestStatus === ComboBoxRequestStatus.Failed) {\n requestAnimationFrame(() => menu && menu.down());\n }\n },\n selectMenuItem: (event) => (dispatch, getState, getProps, getInstance) => {\n const { menu } = getInstance();\n if (menu) {\n menu.enter(event);\n }\n },\n moveMenuHighlight: (direction) => (dispatch, getState, getProps, getInstance) => {\n const { menu } = getInstance();\n if (menu) {\n menu[direction]();\n }\n },\n resetHighlightedMenuItem: (dispatch, getState, getProps, getInstance) => {\n const combobox = getInstance();\n\n if (combobox.menu && combobox.menu.hasHighlightedItem()) {\n combobox.menu.reset();\n }\n },\n reflow: () => {\n LayoutEvents.emit();\n },\n selectInputText: (dispatch, getState, getProps, getInstance) => {\n const combobox = getInstance();\n combobox.selectInputText();\n },\n inputKeyDown: (event) => (dispatch, getState, getProps, getInstance) => {\n const { onInputKeyDown } = getProps();\n if (onInputKeyDown) {\n onInputKeyDown(event);\n }\n },\n};\n\nconst never = (_: never) => null;\n\nexport function reducer<T>(\n state: CustomComboBoxState<T>,\n props: CustomComboBoxProps<T>,\n action: CustomComboBoxAction<T>,\n): Pick<CustomComboBoxState<T>, never> | [Pick<CustomComboBoxState<T>, never>, Array<CustomComboBoxEffect<T>>] {\n switch (action.type) {\n case 'ValueChange': {\n const { value, keepFocus } = action;\n const textValue = getValueString(value, props.valueToString);\n if (keepFocus) {\n return [\n {\n opened: false,\n inputChanged: false,\n editing: true,\n items: null,\n textValue,\n },\n [Effect.valueChange(value), Effect.cancelRequest, Effect.inputFocus],\n ];\n }\n return [\n {\n opened: false,\n inputChanged: false,\n editing: false,\n items: null,\n textValue,\n },\n [Effect.valueChange(value), Effect.cancelRequest],\n ];\n }\n case 'TextChange': {\n const newState = {\n inputChanged: true,\n textValue: action.value,\n };\n if (!action.value && !props.searchOnFocus) {\n return [\n {\n ...newState,\n opened: false,\n items: null,\n },\n [Effect.inputChange],\n ];\n }\n return [newState, [Effect.debouncedSearch, Effect.inputChange]];\n }\n case 'KeyPress': {\n const e = action.event as React.KeyboardEvent<HTMLElement>;\n const effects = [];\n let nextState = state;\n\n switch (true) {\n case isKeyEnter(e):\n e.preventDefault();\n effects.push(Effect.selectMenuItem(e));\n break;\n case isKeyArrowVertical(e):\n e.preventDefault();\n effects.push(Effect.moveMenuHighlight(isKeyArrowUp(e) ? 'up' : 'down'));\n if (!state.opened) {\n effects.push(Effect.search(state.textValue));\n }\n break;\n case isKeyEscape(e):\n nextState = {\n ...state,\n items: null,\n opened: false,\n };\n break;\n }\n return [nextState, [...effects, Effect.inputKeyDown(e)]];\n }\n case 'DidUpdate': {\n if (isEqual(props.value, action.prevProps.value)) {\n return state;\n }\n\n return {\n opened: false,\n textValue: state.editing ? state.textValue : getValueString(props.value, props.valueToString),\n };\n }\n case 'Mount': {\n return {\n textValue: getValueString(props.value, props.valueToString),\n };\n }\n case 'Focus': {\n const newState = {\n focused: true,\n editing: true,\n };\n if (!props.searchOnFocus) {\n return [newState, [Effect.focus]];\n }\n if (state.editing) {\n return [newState, [Effect.search(state.textValue), Effect.focus]];\n }\n return [newState, [Effect.search(''), Effect.focus, Effect.selectInputText]];\n }\n case 'InputClick': {\n if (!state.opened && props.searchOnFocus) {\n return [state, [Effect.search('')]];\n }\n return state;\n }\n case 'Blur': {\n const { inputChanged, items } = state;\n if (!inputChanged) {\n return [\n {\n focused: false,\n opened: false,\n items: null,\n editing: false,\n },\n [Effect.blur, Effect.cancelRequest],\n ];\n }\n\n return [\n {\n focused: false,\n opened: false,\n items: null,\n },\n [Effect.blur, Effect.cancelRequest, Effect.unexpectedInput(state.textValue, items)],\n ];\n }\n case 'Reset': {\n return DefaultState;\n }\n case 'Open': {\n return { opened: true };\n }\n case 'Close': {\n return { opened: false, items: null };\n }\n case 'Search': {\n return [state, [Effect.search(action.query)]];\n }\n case 'RequestItems': {\n return {\n loading: true,\n opened: true,\n requestStatus: ComboBoxRequestStatus.Pending,\n };\n }\n case 'ReceiveItems': {\n const shouldResetMenuHighlight = state.textValue === '';\n return [\n {\n loading: false,\n opened: true,\n items: action.items,\n requestStatus: ComboBoxRequestStatus.Success,\n },\n [shouldResetMenuHighlight ? Effect.resetHighlightedMenuItem : Effect.highlightMenuItem, Effect.reflow],\n ];\n }\n case 'RequestFailure': {\n return [\n {\n loading: false,\n opened: true,\n items: null,\n requestStatus: ComboBoxRequestStatus.Failed,\n repeatRequest: action.repeatRequest,\n },\n [Effect.highlightMenuItem],\n ];\n }\n case 'CancelRequest': {\n return {\n loading: false,\n requestStatus: ComboBoxRequestStatus.Unknown,\n };\n }\n default: {\n never(action);\n }\n }\n return state;\n}\n"]}
@@ -1,6 +1,7 @@
1
1
  "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.DateSelect = void 0;var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));var _react = _interopRequireDefault(require("react"));
2
2
  var _propTypes = _interopRequireDefault(require("prop-types"));
3
3
 
4
+ var _utils = require("../../lib/utils");
4
5
  var _identifiers = require("../../lib/events/keyboard/identifiers");
5
6
  var _locale = require("../../components/DatePicker/locale");
6
7
  var _decorators = require("../../lib/locale/decorators");
@@ -22,7 +23,7 @@ var visibleYearsCount = 11;
22
23
  var itemsToMoveCount = -5;
23
24
  var monthsCount = 12;
24
25
  var defaultMinYear = 1900;
25
- var defaultMaxYear = 2100;var
26
+ var defaultMaxYear = 2100;
26
27
 
27
28
 
28
29
 
@@ -44,6 +45,18 @@ var defaultMaxYear = 2100;var
44
45
 
45
46
 
46
47
 
48
+
49
+ var calculatePos = function calculatePos(pos, minPos, maxPos) {
50
+ if (maxPos <= pos) {
51
+ return maxPos;
52
+ }
53
+
54
+ if (minPos >= pos) {
55
+ return minPos;
56
+ }
57
+
58
+ return pos;
59
+ };var
47
60
 
48
61
 
49
62
  DateSelect = (_dec = (0, _decorators.locale)('DatePicker', _locale.DatePickerLocaleHelper), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_React$PureComponent) {(0, _inheritsLoose2.default)(DateSelect, _React$PureComponent);function DateSelect() {var _this;for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {args[_key] = arguments[_key];}_this = _React$PureComponent.call.apply(_React$PureComponent, [this].concat(args)) || this;_this.
@@ -331,6 +344,8 @@ DateSelect = (_dec = (0, _decorators.locale)('DatePicker', _locale.DatePickerLoc
331
344
 
332
345
 
333
346
 
347
+
348
+
334
349
 
335
350
 
336
351
 
@@ -446,7 +461,7 @@ DateSelect = (_dec = (0, _decorators.locale)('DatePicker', _locale.DatePickerLoc
446
461
  _this.setPosition(_this.state.pos + itemHeight * _this.yearStep);
447
462
  };return _this;}var _proto = DateSelect.prototype;_proto.componentDidUpdate = function componentDidUpdate() {this.setNodeTop();};_proto.componentDidMount = function componentDidMount() {this.listener = LayoutEvents.addListener(this.setNodeTop);this.setNodeTop();window.addEventListener('keydown', this.handleKey);};_proto.componentWillUnmount = function componentWillUnmount() {if (this.listener) {this.listener.remove();}if (this.timeout) {clearTimeout(this.timeout);}if (this.longClickTimer) {clearTimeout(this.longClickTimer);}if (this.setPositionRepeatTimer) {clearTimeout(this.setPositionRepeatTimer);}window.removeEventListener('keydown', this.handleKey);} /**
448
463
  * @public
449
- */;_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return _this2.renderMain();});};_proto.renderMain = function renderMain() {var _cx, _cx2;var _this$props = this.props,width = _this$props.width,disabled = _this$props.disabled;var rootProps = { className: (0, _Emotion.cx)((_cx = {}, _cx[_DateSelect.styles.root(this.theme)] = true, _cx[_DateSelect.styles.disabled()] = Boolean(disabled), _cx)), style: { width: width }, ref: this.refRoot };return /*#__PURE__*/_react.default.createElement("span", rootProps, /*#__PURE__*/_react.default.createElement("div", { "data-tid": "DateSelect__caption", className: _DateSelect.styles.caption(), onClick: this.open }, this.getItem(0), /*#__PURE__*/_react.default.createElement("div", { className: (0, _Emotion.cx)((_cx2 = {}, _cx2[_DateSelect.styles.arrow(this.theme)] = true, _cx2[_DateSelect.styles.arrowDisabled()] = Boolean(disabled), _cx2)) }, /*#__PURE__*/_react.default.createElement(_px.ArrowTriangleUpDownIcon, { size: 12 }))), this.state.opened && this.renderMenu());};_proto.disableItems = function disableItems(index) {var value = this.props.value + index;if (this.props.maxValue != null && this.props.minValue != null) {return value > this.props.maxValue || value < this.props.minValue;}if (this.props.minValue != null) {return value < this.props.minValue;}if (this.props.maxValue != null) {return value > this.props.maxValue;}};_proto.renderMenu = function renderMenu() {var _this3 = this,_cx3;var _this$state = this.state,top = _this$state.top,height = _this$state.height,nodeTop = _this$state.nodeTop;var shift = this.state.pos % itemHeight;if (shift < 0) {shift += itemHeight;}var from = (this.state.pos - shift + top) / itemHeight;var to = from + Math.ceil((height + shift) / itemHeight);var items = [];var _loop = function _loop(i) {var _cx4;var disableItems = _this3.disableItems(i) || false;var className = (0, _Emotion.cx)((_cx4 = {}, _cx4[_DateSelect.styles.menuItem(_this3.theme)] = true, _cx4[_DateSelect.styles.menuItemSelected(_this3.theme)] = i === 0, _cx4[_DateSelect.styles.menuItemActive(_this3.theme)] = i === _this3.state.current, _cx4[_DateSelect.styles.menuItemDisabled(_this3.theme)] = disableItems, _cx4));var clickHandler = { onMouseDown: preventDefault, onClick: _this3.handleItemClick(i) };items.push( /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({ "data-tid": "DateSelect__menuItem", "data-prop-disabled": disableItems, key: i, className: className, onMouseEnter: function onMouseEnter() {return _this3.setState({ current: i });}, onMouseLeave: function onMouseLeave() {return _this3.setState({ current: null });} }, clickHandler), _this3.getItem(i)));};for (var i = from; i < to; ++i) {_loop(i);}var style = { top: top - 5, left: 0, right: 0 };var shiftStyle = { position: 'relative', top: -shift };var holderClass = (0, _Emotion.cx)((_cx3 = {}, _cx3[_DateSelect.styles.menuHolder(this.theme)] = true, _cx3[_DateSelect.styles.isTopCapped()] = this.state.topCapped, _cx3[_DateSelect.styles.isBotCapped()] = this.state.botCapped, _cx3));var dropdownOffset = -itemHeight;if (nodeTop < -top) {var overflowOffsetDelta = this.state.topCapped ? 6 : 17;dropdownOffset -= nodeTop + top - overflowOffsetDelta;}return /*#__PURE__*/_react.default.createElement(_RenderLayer.RenderLayer, { onClickOutside: this.close, onFocusOutside: this.close, active: true }, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_DropdownContainer.DropdownContainer, { getParent: this.getAnchor, offsetY: dropdownOffset, offsetX: -10 }, /*#__PURE__*/_react.default.createElement("div", { className: holderClass, style: style }, !this.state.topCapped && /*#__PURE__*/_react.default.createElement("div", { className: (0, _Emotion.cx)(_DateSelect.styles.menu(this.theme), _DateSelect.styles.menuUp()), onClick: this.handleUp, onMouseDown: this.handleLongClickUp, onMouseUp: this.handleLongClickStop, onMouseLeave: this.handleLongClickStop, onTouchStart: this.handleLongClickUp, onTouchEnd: this.handleLongClickStop }, /*#__PURE__*/_react.default.createElement("span", null, /*#__PURE__*/_react.default.createElement(_px.ArrowChevronUpIcon, null))), /*#__PURE__*/_react.default.createElement("div", { className: _DateSelect.styles.itemsHolder(), style: { height: height } }, /*#__PURE__*/_react.default.createElement("div", { ref: this.refItemsContainer, style: shiftStyle }, items)), !this.state.botCapped && /*#__PURE__*/_react.default.createElement("div", { className: (0, _Emotion.cx)(_DateSelect.styles.menu(this.theme), _DateSelect.styles.menuDown()), onClick: this.handleDown, onMouseDown: this.handleLongClickDown, onMouseUp: this.handleLongClickStop, onMouseLeave: this.handleLongClickStop, onTouchStart: this.handleLongClickDown, onTouchEnd: this.handleLongClickStop }, /*#__PURE__*/_react.default.createElement("span", null, /*#__PURE__*/_react.default.createElement(_px.ArrowChevronDownIcon, null)))))));};_proto.getItem = function getItem(index) {
464
+ */;_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return _this2.renderMain();});};_proto.renderMain = function renderMain() {var _cx, _cx2;var _this$props = this.props,width = _this$props.width,disabled = _this$props.disabled;var rootProps = { className: (0, _Emotion.cx)((_cx = {}, _cx[_DateSelect.styles.root(this.theme)] = true, _cx[_DateSelect.styles.disabled()] = Boolean(disabled), _cx)), style: { width: width }, ref: this.refRoot };return /*#__PURE__*/_react.default.createElement("span", rootProps, /*#__PURE__*/_react.default.createElement("div", { "data-tid": "DateSelect__caption", className: _DateSelect.styles.caption(), onClick: this.open }, this.getItem(0), /*#__PURE__*/_react.default.createElement("div", { className: (0, _Emotion.cx)((_cx2 = {}, _cx2[_DateSelect.styles.arrow(this.theme)] = true, _cx2[_DateSelect.styles.arrowDisabled()] = Boolean(disabled), _cx2)) }, /*#__PURE__*/_react.default.createElement(_px.ArrowTriangleUpDownIcon, { size: 12 }))), this.state.opened && this.renderMenu());};_proto.disableItems = function disableItems(index) {var value = this.props.value + index;if ((0, _utils.isNonNullable)(this.props.maxValue) && (0, _utils.isNonNullable)(this.props.minValue)) {return value > this.props.maxValue || value < this.props.minValue;}if ((0, _utils.isNonNullable)(this.props.minValue)) {return value < this.props.minValue;}if ((0, _utils.isNonNullable)(this.props.maxValue)) {return value > this.props.maxValue;}};_proto.renderMenu = function renderMenu() {var _this3 = this,_cx3;var _this$state = this.state,top = _this$state.top,height = _this$state.height,nodeTop = _this$state.nodeTop;var shift = this.state.pos % itemHeight;if (shift < 0) {shift += itemHeight;}var from = (this.state.pos - shift + top) / itemHeight;var to = from + Math.ceil((height + shift) / itemHeight);var items = [];var _loop = function _loop(i) {var _cx4;var disableItems = _this3.disableItems(i) || false;var className = (0, _Emotion.cx)((_cx4 = {}, _cx4[_DateSelect.styles.menuItem(_this3.theme)] = true, _cx4[_DateSelect.styles.menuItemSelected(_this3.theme)] = i === 0, _cx4[_DateSelect.styles.menuItemActive(_this3.theme)] = i === _this3.state.current, _cx4[_DateSelect.styles.menuItemDisabled(_this3.theme)] = disableItems, _cx4));var clickHandler = { onMouseDown: preventDefault, onClick: _this3.handleItemClick(i) };items.push( /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({ "data-tid": "DateSelect__menuItem", "data-prop-disabled": disableItems, key: i, className: className, onMouseEnter: function onMouseEnter() {return _this3.setState({ current: i });}, onMouseLeave: function onMouseLeave() {return _this3.setState({ current: null });} }, clickHandler), _this3.getItem(i)));};for (var i = from; i < to; ++i) {_loop(i);}var style = { top: top - 5, left: 0, right: 0 };var shiftStyle = { position: 'relative', top: -shift };var holderClass = (0, _Emotion.cx)((_cx3 = {}, _cx3[_DateSelect.styles.menuHolder(this.theme)] = true, _cx3[_DateSelect.styles.isTopCapped()] = this.state.topCapped, _cx3[_DateSelect.styles.isBotCapped()] = this.state.botCapped, _cx3));var dropdownOffset = -itemHeight;if (nodeTop < -top) {var overflowOffsetDelta = this.state.topCapped ? 6 : 17;dropdownOffset -= nodeTop + top - overflowOffsetDelta;}return /*#__PURE__*/_react.default.createElement(_RenderLayer.RenderLayer, { onClickOutside: this.close, onFocusOutside: this.close, active: true }, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_DropdownContainer.DropdownContainer, { getParent: this.getAnchor, offsetY: dropdownOffset, offsetX: -10 }, /*#__PURE__*/_react.default.createElement("div", { className: holderClass, style: style }, !this.state.topCapped && /*#__PURE__*/_react.default.createElement("div", { className: (0, _Emotion.cx)(_DateSelect.styles.menu(this.theme), _DateSelect.styles.menuUp()), onClick: this.handleUp, onMouseDown: this.handleLongClickUp, onMouseUp: this.handleLongClickStop, onMouseLeave: this.handleLongClickStop, onTouchStart: this.handleLongClickUp, onTouchEnd: this.handleLongClickStop }, /*#__PURE__*/_react.default.createElement("span", null, /*#__PURE__*/_react.default.createElement(_px.ArrowChevronUpIcon, null))), /*#__PURE__*/_react.default.createElement("div", { className: _DateSelect.styles.itemsHolder(), style: { height: height } }, /*#__PURE__*/_react.default.createElement("div", { ref: this.refItemsContainer, style: shiftStyle }, items)), !this.state.botCapped && /*#__PURE__*/_react.default.createElement("div", { className: (0, _Emotion.cx)(_DateSelect.styles.menu(this.theme), _DateSelect.styles.menuDown()), onClick: this.handleDown, onMouseDown: this.handleLongClickDown, onMouseUp: this.handleLongClickStop, onMouseLeave: this.handleLongClickStop, onTouchStart: this.handleLongClickDown, onTouchEnd: this.handleLongClickStop }, /*#__PURE__*/_react.default.createElement("span", null, /*#__PURE__*/_react.default.createElement(_px.ArrowChevronDownIcon, null)))))));};_proto.getItem = function getItem(index) {
450
465
  var value = this.props.value + index;
451
466
  if (this.props.type === 'month') {
452
467
  return this.locale.months[value];
@@ -464,16 +479,12 @@ DateSelect = (_dec = (0, _decorators.locale)('DatePicker', _locale.DatePickerLoc
464
479
 
465
480
  var minPos = this.getMinPos() - top;
466
481
  var maxPos = this.getMaxPos() - top - height + itemHeight;
467
- if (minPos >= pos) {
468
- pos = minPos;
469
- }
470
- if (maxPos <= pos) {
471
- pos = maxPos;
472
- }
473
- var topCapped = pos <= minPos;
474
- var botCapped = pos >= maxPos;
475
482
 
476
- this.setState({ pos: pos, top: top, height: height, topCapped: topCapped, botCapped: botCapped });
483
+ var calculatedPos = calculatePos(pos, minPos, maxPos);
484
+ var topCapped = calculatedPos <= minPos;
485
+ var botCapped = calculatedPos >= maxPos;
486
+
487
+ this.setState({ pos: calculatedPos, top: top, height: height, topCapped: topCapped, botCapped: botCapped });
477
488
  };_proto.
478
489
 
479
490
  getMinPos = function getMinPos() {