@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
@@ -1 +1 @@
1
- {"version":3,"sources":["useDrop.ts"],"names":["useDrop","props","onDrop","droppableRef","overRef","timerId","isDraggable","setIsDraggable","clearTimer","current","clearTimeout","handleDragOver","event","preventDefault","setTimeout","stopPropagation","handleDrop","ref","addEventListener","removeEventListener"],"mappings":"gEAAA;;;;;;;;;;;;;AAaO,IAAMA,OAAO,GAAG,SAAVA,OAAU,CAAwCC,KAAxC,EAAgG,KAAxDA,KAAwD,cAAxDA,KAAwD,GAAjC,EAAiC;AACrH,eAAmBA,KAAnB,CAAQC,MAAR,UAAQA,MAAR;;AAEA,MAAMC,YAAY,GAAG,mBAAiB,IAAjB,CAArB;AACA,MAAMC,OAAO,GAAG,mBAAgB,KAAhB,CAAhB;AACA,MAAMC,OAAO,GAAG,oBAAhB;AACA,kBAAsC,qBAAkB,KAAlB,CAAtC,CAAOC,WAAP,gBAAoBC,cAApB;;AAEA,MAAMC,UAAU,GAAG,wBAAY,YAAM;AACnCH,IAAAA,OAAO,CAACI,OAAR,IAAmBC,YAAY,CAACL,OAAO,CAACI,OAAT,CAA/B;AACD,GAFkB,EAEhB,EAFgB,CAAnB;;AAIA,MAAME,cAAc,GAAG;AACrB,YAACC,KAAD,EAAW;AACTA,IAAAA,KAAK,CAACC,cAAN;AACAN,IAAAA,cAAc,CAAC,IAAD,CAAd;;AAEAC,IAAAA,UAAU;AACVH,IAAAA,OAAO,CAACI,OAAR,GAAkBK,UAAU,CAAC,YAAM;AACjCV,MAAAA,OAAO,CAACK,OAAR,GAAkB,KAAlB;AACAF,MAAAA,cAAc,CAAC,KAAD,CAAd;AACD,KAH2B,EAGzB,GAHyB,CAA5B;AAID,GAVoB;AAWrB,GAACC,UAAD,CAXqB,CAAvB;;;AAcA,MAAMK,cAAc,GAAG,wBAAY,UAACD,KAAD,EAAW;AAC5CA,IAAAA,KAAK,CAACC,cAAN;AACAD,IAAAA,KAAK,CAACG,eAAN;AACD,GAHsB,EAGpB,EAHoB,CAAvB;;AAKA,MAAMC,UAAU,GAAG;AACjB,YAACJ,KAAD,EAAkB;AAChBC,IAAAA,cAAc,CAACD,KAAD,CAAd;AACAL,IAAAA,cAAc,CAAC,KAAD,CAAd;AACAH,IAAAA,OAAO,CAACK,OAAR,GAAkB,KAAlB;;AAEAP,IAAAA,MAAM,QAAN,YAAAA,MAAM,CAAGU,KAAH,CAAN;AACD,GAPgB;AAQjB,GAACC,cAAD,EAAiBX,MAAjB,CARiB,CAAnB;;;AAWA,wBAAU,YAAM;AACd,QAAMe,GAAG,GAAGd,YAAY,CAACM,OAAzB;;AAEA,QAAI,CAACQ,GAAL,EAAU;;AAEVA,IAAAA,GAAG,CAACC,gBAAJ,CAAqB,WAArB,EAAkCL,cAAlC;AACAI,IAAAA,GAAG,CAACC,gBAAJ,CAAqB,WAArB,EAAkCL,cAAlC;AACAI,IAAAA,GAAG,CAACC,gBAAJ,CAAqB,UAArB,EAAiCP,cAAjC;AACAM,IAAAA,GAAG,CAACC,gBAAJ,CAAqB,MAArB,EAA6BF,UAA7B;;AAEA,WAAO,YAAM;AACXC,MAAAA,GAAG,CAACE,mBAAJ,CAAwB,WAAxB,EAAqCN,cAArC;AACAI,MAAAA,GAAG,CAACE,mBAAJ,CAAwB,WAAxB,EAAqCN,cAArC;AACAI,MAAAA,GAAG,CAACE,mBAAJ,CAAwB,UAAxB,EAAoCR,cAApC;AACAM,MAAAA,GAAG,CAACE,mBAAJ,CAAwB,MAAxB,EAAgCH,UAAhC;AACD,KALD;AAMD,GAhBD,EAgBG,CAACA,UAAD,EAAaL,cAAb,EAA6BE,cAA7B,CAhBH;;AAkBA,SAAO,EAAEP,WAAW,EAAXA,WAAF,EAAeW,GAAG,EAAEd,YAApB,EAAP;AACD,CA7DM,C","sourcesContent":["import { MutableRefObject, useCallback, useEffect, useRef, useState } from 'react';\n\ninterface IUseDropProps {\n onDrop?: (event: Event) => void;\n}\n\ntype IElementWithListener = Pick<HTMLElement, 'addEventListener' | 'removeEventListener'>;\n\ninterface IUseDropResult<TElement extends IElementWithListener> {\n isDraggable: boolean;\n ref: MutableRefObject<TElement | null>;\n}\n\nexport const useDrop = <TElement extends IElementWithListener>(props: IUseDropProps = {}): IUseDropResult<TElement> => {\n const { onDrop } = props;\n\n const droppableRef = useRef<TElement>(null);\n const overRef = useRef<boolean>(false);\n const timerId = useRef<NodeJS.Timeout>();\n const [isDraggable, setIsDraggable] = useState<boolean>(false);\n\n const clearTimer = useCallback(() => {\n timerId.current && clearTimeout(timerId.current);\n }, []);\n\n const handleDragOver = useCallback(\n (event) => {\n event.preventDefault();\n setIsDraggable(true);\n\n clearTimer();\n timerId.current = setTimeout(() => {\n overRef.current = false;\n setIsDraggable(false);\n }, 200);\n },\n [clearTimer],\n );\n\n const preventDefault = useCallback((event) => {\n event.preventDefault();\n event.stopPropagation();\n }, []);\n\n const handleDrop = useCallback(\n (event: Event) => {\n preventDefault(event);\n setIsDraggable(false);\n overRef.current = false;\n\n onDrop?.(event);\n },\n [preventDefault, onDrop],\n );\n\n useEffect(() => {\n const ref = droppableRef.current;\n\n if (!ref) return;\n\n ref.addEventListener('dragenter', preventDefault);\n ref.addEventListener('dragleave', preventDefault);\n ref.addEventListener('dragover', handleDragOver);\n ref.addEventListener('drop', handleDrop);\n\n return () => {\n ref.removeEventListener('dragenter', preventDefault);\n ref.removeEventListener('dragleave', preventDefault);\n ref.removeEventListener('dragover', handleDragOver);\n ref.removeEventListener('drop', handleDrop);\n };\n }, [handleDrop, handleDragOver, preventDefault]);\n\n return { isDraggable, ref: droppableRef };\n};\n"]}
1
+ {"version":3,"sources":["useDrop.ts"],"names":["useDrop","props","onDrop","droppableRef","overRef","timerId","isDraggable","setIsDraggable","clearTimer","current","clearTimeout","handleDragOver","event","preventDefault","setTimeout","stopPropagation","handleDrop","ref","addEventListener","removeEventListener"],"mappings":"gEAAA;;;;;;;;;;;;;AAaO,IAAMA,OAAO,GAAG,SAAVA,OAAU,CAAwCC,KAAxC,EAAgG,KAAxDA,KAAwD,cAAxDA,KAAwD,GAAjC,EAAiC;AACrH,eAAmBA,KAAnB,CAAQC,MAAR,UAAQA,MAAR;;AAEA,MAAMC,YAAY,GAAG,mBAAiB,IAAjB,CAArB;AACA,MAAMC,OAAO,GAAG,mBAAgB,KAAhB,CAAhB;AACA,MAAMC,OAAO,GAAG,oBAAhB;AACA,kBAAsC,qBAAkB,KAAlB,CAAtC,CAAOC,WAAP,gBAAoBC,cAApB;;AAEA,MAAMC,UAAU,GAAG,wBAAY,YAAM;AACnCH,IAAAA,OAAO,CAACI,OAAR,IAAmBC,YAAY,CAACL,OAAO,CAACI,OAAT,CAA/B;AACD,GAFkB,EAEhB,EAFgB,CAAnB;;AAIA,MAAME,cAAc,GAAG;AACrB,YAACC,KAAD,EAAW;AACTA,IAAAA,KAAK,CAACC,cAAN;AACAN,IAAAA,cAAc,CAAC,IAAD,CAAd;;AAEAC,IAAAA,UAAU;AACVH,IAAAA,OAAO,CAACI,OAAR,GAAkBK,UAAU,CAAC,YAAM;AACjCV,MAAAA,OAAO,CAACK,OAAR,GAAkB,KAAlB;AACAF,MAAAA,cAAc,CAAC,KAAD,CAAd;AACD,KAH2B,EAGzB,GAHyB,CAA5B;AAID,GAVoB;AAWrB,GAACC,UAAD,CAXqB,CAAvB;;;AAcA,MAAMK,cAAc,GAAG,wBAAY,UAACD,KAAD,EAAW;AAC5CA,IAAAA,KAAK,CAACC,cAAN;AACAD,IAAAA,KAAK,CAACG,eAAN;AACD,GAHsB,EAGpB,EAHoB,CAAvB;;AAKA,MAAMC,UAAU,GAAG;AACjB,YAACJ,KAAD,EAAkB;AAChBC,IAAAA,cAAc,CAACD,KAAD,CAAd;AACAL,IAAAA,cAAc,CAAC,KAAD,CAAd;AACAH,IAAAA,OAAO,CAACK,OAAR,GAAkB,KAAlB;;AAEAP,IAAAA,MAAM,QAAN,YAAAA,MAAM,CAAGU,KAAH,CAAN;AACD,GAPgB;AAQjB,GAACC,cAAD,EAAiBX,MAAjB,CARiB,CAAnB;;;AAWA,wBAAU,YAAM;AACd,QAAMe,GAAG,GAAGd,YAAY,CAACM,OAAzB;;AAEA,QAAI,CAACQ,GAAL,EAAU;AACR;AACD;;AAEDA,IAAAA,GAAG,CAACC,gBAAJ,CAAqB,WAArB,EAAkCL,cAAlC;AACAI,IAAAA,GAAG,CAACC,gBAAJ,CAAqB,WAArB,EAAkCL,cAAlC;AACAI,IAAAA,GAAG,CAACC,gBAAJ,CAAqB,UAArB,EAAiCP,cAAjC;AACAM,IAAAA,GAAG,CAACC,gBAAJ,CAAqB,MAArB,EAA6BF,UAA7B;;AAEA,WAAO,YAAM;AACXC,MAAAA,GAAG,CAACE,mBAAJ,CAAwB,WAAxB,EAAqCN,cAArC;AACAI,MAAAA,GAAG,CAACE,mBAAJ,CAAwB,WAAxB,EAAqCN,cAArC;AACAI,MAAAA,GAAG,CAACE,mBAAJ,CAAwB,UAAxB,EAAoCR,cAApC;AACAM,MAAAA,GAAG,CAACE,mBAAJ,CAAwB,MAAxB,EAAgCH,UAAhC;AACD,KALD;AAMD,GAlBD,EAkBG,CAACA,UAAD,EAAaL,cAAb,EAA6BE,cAA7B,CAlBH;;AAoBA,SAAO,EAAEP,WAAW,EAAXA,WAAF,EAAeW,GAAG,EAAEd,YAApB,EAAP;AACD,CA/DM,C","sourcesContent":["import { MutableRefObject, useCallback, useEffect, useRef, useState } from 'react';\n\ninterface IUseDropProps {\n onDrop?: (event: Event) => void;\n}\n\ntype IElementWithListener = Pick<HTMLElement, 'addEventListener' | 'removeEventListener'>;\n\ninterface IUseDropResult<TElement extends IElementWithListener> {\n isDraggable: boolean;\n ref: MutableRefObject<TElement | null>;\n}\n\nexport const useDrop = <TElement extends IElementWithListener>(props: IUseDropProps = {}): IUseDropResult<TElement> => {\n const { onDrop } = props;\n\n const droppableRef = useRef<TElement>(null);\n const overRef = useRef<boolean>(false);\n const timerId = useRef<NodeJS.Timeout>();\n const [isDraggable, setIsDraggable] = useState<boolean>(false);\n\n const clearTimer = useCallback(() => {\n timerId.current && clearTimeout(timerId.current);\n }, []);\n\n const handleDragOver = useCallback(\n (event) => {\n event.preventDefault();\n setIsDraggable(true);\n\n clearTimer();\n timerId.current = setTimeout(() => {\n overRef.current = false;\n setIsDraggable(false);\n }, 200);\n },\n [clearTimer],\n );\n\n const preventDefault = useCallback((event) => {\n event.preventDefault();\n event.stopPropagation();\n }, []);\n\n const handleDrop = useCallback(\n (event: Event) => {\n preventDefault(event);\n setIsDraggable(false);\n overRef.current = false;\n\n onDrop?.(event);\n },\n [preventDefault, onDrop],\n );\n\n useEffect(() => {\n const ref = droppableRef.current;\n\n if (!ref) {\n return;\n }\n\n ref.addEventListener('dragenter', preventDefault);\n ref.addEventListener('dragleave', preventDefault);\n ref.addEventListener('dragover', handleDragOver);\n ref.addEventListener('drop', handleDrop);\n\n return () => {\n ref.removeEventListener('dragenter', preventDefault);\n ref.removeEventListener('dragleave', preventDefault);\n ref.removeEventListener('dragover', handleDragOver);\n ref.removeEventListener('drop', handleDrop);\n };\n }, [handleDrop, handleDragOver, preventDefault]);\n\n return { isDraggable, ref: droppableRef };\n};\n"]}
@@ -68,8 +68,8 @@ Calendar = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default
68
68
 
69
69
 
70
70
 
71
- function Calendar(props) {var _this;
72
- _this = _React$Component.call(this, props) || this;_this.animation = (0, _animation.Animation)();_this.touchStartY = null;_this.
71
+ function Calendar(props) {var _props$initialMonth, _props$initialYear;var _this;
72
+ _this = _React$Component.call(this, props) || this;_this.animation = (0, _animation.animation)();_this.touchStartY = null;_this.
73
73
 
74
74
 
75
75
 
@@ -369,7 +369,7 @@ Calendar = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default
369
369
 
370
370
  onEnd);
371
371
 
372
- };var today = getTodayDate();var initialMonth = props.initialMonth == null ? today.month : props.initialMonth;var initialYear = props.initialYear == null ? today.year : props.initialYear;_this.state = { scrollPosition: 0, months: CalendarUtils.getMonths(initialMonth, initialYear), today: today, scrollDirection: 1, scrollTarget: 0, touchStart: 0 };return _this;}var _proto = Calendar.prototype;_proto.componentWillUnmount = function componentWillUnmount() {if (this.animation.inProgress()) {this.animation.cancel();}};_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return _this2.renderMain();});} /**
372
+ };var today = getTodayDate();var initialMonth = (_props$initialMonth = props.initialMonth) != null ? _props$initialMonth : today.month;var initialYear = (_props$initialYear = props.initialYear) != null ? _props$initialYear : today.year;_this.state = { scrollPosition: 0, months: CalendarUtils.getMonths(initialMonth, initialYear), today: today, scrollDirection: 1, scrollTarget: 0, touchStart: 0 };return _this;}var _proto = Calendar.prototype;_proto.componentWillUnmount = function componentWillUnmount() {if (this.animation.inProgress()) {this.animation.cancel();}};_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return _this2.renderMain();});} /**
373
373
  * Scrolls calendar to given date
374
374
  * @public
375
375
  */;_proto.renderMonth = function renderMonth(_ref5) {var top = _ref5[0],month = _ref5[1];return /*#__PURE__*/_react.default.createElement(_Month.Month, { key: month.month + '-' + month.year, top: top, month: month, maxDate: this.props.maxDate, minDate: this.props.minDate, today: this.state.today, value: this.props.value, onDateClick: this.props.onSelect, onMonthYearChange: this.handleMonthYearChange, isHoliday: this.props.isHoliday });};_proto.getMonthPositions = function getMonthPositions() {var _this$state2 = this.state,scrollPosition = _this$state2.scrollPosition,months = _this$state2.months;var positions = [scrollPosition - months[0].getHeight(this.theme)];for (var i = 1; i < months.length; i++) {var position = positions[i - 1] + months[i - 1].getHeight(this.theme);positions.push(position);}return positions;};return Calendar;}(_react.default.Component);exports.Calendar = Calendar;Calendar.__KONTUR_REACT_UI__ = 'Calendar';Calendar.defaultProps = { holidays: [], minDate: { year: _constants.MIN_YEAR, month: _constants.MIN_MONTH, date: _constants.MIN_DATE }, maxDate: { year: _constants.MAX_YEAR, month: _constants.MAX_MONTH, date: _constants.MAX_DATE } };
@@ -1 +1 @@
1
- {"version":3,"sources":["Calendar.tsx"],"names":["getTodayDate","date","Date","getDate","month","getMonth","year","getFullYear","Calendar","props","animation","touchStartY","scrollToMonth","inProgress","finish","Promise","r","setTimeout","minDate","maxDate","currentMonth","state","months","diffInMonths","scrollTo","maxMonthsToAdd","theme","MAX_MONTHS_TO_APPEND_ON_SCROLL","onEnd","setState","CalendarUtils","getMonths","scrollPosition","isYearChanges","Math","abs","monthsToPrependCount","min","monthsToPrepend","Array","from","length","_","index","MonthViewModel","create","yearChanges","isFirstInYear","isLastInYear","concat","getMonthsHeight","targetPosition","getHeight","monthsToAppendCount","monthsToAppend","slice","renderMain","positions","getMonthPositions","wrapperStyle","height","WRAPPER_HEIGHT","refRoot","styles","root","wrapper","map","x","i","filter","top","isMonthVisible","renderMonth","element","isMobile","addEventListener","handleTouchStart","throttledHandleTouchMove","handleWheel","passive","removeEventListener","handleMonthYearChange","executeAnimations","pixelY","calculateScrollPosition","scrollTarget","handleWheelEnd","animate","deltaY","applyDelta","CalendarScrollEvents","emit","event","TouchEvent","clientY","targetTouches","handleTouchMove","changedTouches","WheelEvent","preventDefault","wheelEndTimeout","clearTimeout","window","scrollToNearestWeek","scrollDirection","trasholdHeight","MONTH_TITLE_OFFSET_HEIGHT","DAY_SIZE","amount","pos","scrollAmmount","scrollAmount","today","initialMonth","initialYear","touchStart","componentWillUnmount","cancel","render","value","onSelect","isHoliday","position","push","React","Component","__KONTUR_REACT_UI__","defaultProps","holidays","MIN_YEAR","MIN_MONTH","MIN_DATE","MAX_YEAR","MAX_MONTH","MAX_DATE"],"mappings":"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","sourcesContent":["import React from 'react';\nimport normalizeWheel from 'normalize-wheel';\nimport throttle from 'lodash.throttle';\n\nimport { MAX_DATE, MAX_MONTH, MAX_YEAR, MIN_DATE, MIN_MONTH, MIN_YEAR } from '../../lib/date/constants';\nimport { Nullable } from '../../typings/utility-types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Animation } from '../../lib/animation';\nimport { isMobile } from '../../lib/client';\n\nimport { themeConfig } from './config';\nimport * as CalendarUtils from './CalendarUtils';\nimport { MonthViewModel } from './MonthViewModel';\nimport * as CalendarScrollEvents from './CalendarScrollEvents';\nimport { Month } from './Month';\nimport { styles } from './Calendar.styles';\nimport { CalendarDateShape, create, isGreater, isLess } from './CalendarDateShape';\n\nexport interface CalendarProps {\n initialMonth?: number;\n initialYear?: number;\n onSelect?: (date: CalendarDateShape) => void;\n value?: Nullable<CalendarDateShape>;\n maxDate?: CalendarDateShape;\n minDate?: CalendarDateShape;\n isHoliday?: (day: CalendarDateShape & { isWeekend: boolean }) => boolean;\n}\n\nexport interface CalendarState {\n scrollPosition: number;\n months: MonthViewModel[];\n today: CalendarDateShape;\n scrollDirection: number;\n scrollTarget: number;\n touchStart: number;\n}\n\nconst getTodayDate = () => {\n const date = new Date();\n return {\n date: date.getDate(),\n month: date.getMonth(),\n year: date.getFullYear(),\n };\n};\n\nexport class Calendar extends React.Component<CalendarProps, CalendarState> {\n public static __KONTUR_REACT_UI__ = 'Calendar';\n\n public static defaultProps = {\n holidays: [],\n minDate: {\n year: MIN_YEAR,\n month: MIN_MONTH,\n date: MIN_DATE,\n },\n maxDate: {\n year: MAX_YEAR,\n month: MAX_MONTH,\n date: MAX_DATE,\n },\n };\n\n private theme!: Theme;\n private wheelEndTimeout: Nullable<number>;\n private root: Nullable<HTMLElement>;\n private animation = Animation();\n private touchStartY: Nullable<number> = null;\n\n constructor(props: CalendarProps) {\n super(props);\n\n const today = getTodayDate();\n\n const initialMonth = props.initialMonth == null ? today.month : props.initialMonth;\n const initialYear = props.initialYear == null ? today.year : props.initialYear;\n\n this.state = {\n scrollPosition: 0,\n months: CalendarUtils.getMonths(initialMonth, initialYear),\n today,\n scrollDirection: 1,\n scrollTarget: 0,\n touchStart: 0,\n };\n }\n\n public componentWillUnmount() {\n if (this.animation.inProgress()) {\n this.animation.cancel();\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * Scrolls calendar to given date\n * @public\n */\n public scrollToMonth = async (month: number, year: number) => {\n if (this.animation.inProgress()) {\n this.animation.finish();\n // FIXME: Dirty hack to await batched updates\n await new Promise((r) => setTimeout(r));\n }\n\n const { minDate, maxDate } = this.props;\n\n if (minDate && isGreater(minDate, create(32, month, year))) {\n this.scrollToMonth(minDate.month, minDate.year);\n return;\n }\n\n if (maxDate && isLess(maxDate, create(0, month, year))) {\n this.scrollToMonth(maxDate.month, maxDate.year);\n return;\n }\n\n const currentMonth = this.state.months[1];\n const diffInMonths = currentMonth.month + currentMonth.year * 12 - month - year * 12;\n\n if (diffInMonths === 0) {\n this.scrollTo(0);\n return;\n }\n\n const maxMonthsToAdd = themeConfig(this.theme).MAX_MONTHS_TO_APPEND_ON_SCROLL;\n\n const onEnd = () =>\n this.setState({\n months: CalendarUtils.getMonths(month, year),\n scrollPosition: 0,\n });\n\n const isYearChanges = (state: CalendarState) =>\n state.months[1].year !== year &&\n // if diff in months is 2 or less,\n // either year is not changing either months already\n // have right isFirstInYear/isLastInYear flags\n Math.abs(diffInMonths) > 2;\n\n // If scrolling upwards, prepend maximum maxMonthsToAdd months\n // and scroll to the first month\n if (diffInMonths > 0) {\n const monthsToPrependCount = Math.min(Math.abs(diffInMonths) - 1, maxMonthsToAdd);\n const monthsToPrepend = Array.from({ length: monthsToPrependCount }, (_, index) =>\n MonthViewModel.create(month + index, year),\n );\n this.setState(\n (state) => {\n const yearChanges = isYearChanges(state);\n if (yearChanges) {\n // Mutating here can lead to some unexpected bugs\n // but we couldn't find any yet\n state.months[0].isFirstInYear = true;\n if (monthsToPrepend.length) {\n // Mutating item here is safe as it was just created\n monthsToPrepend[monthsToPrepend.length - 1].isLastInYear = true;\n }\n }\n return {\n months: monthsToPrepend.concat(state.months),\n scrollPosition: -CalendarUtils.getMonthsHeight(monthsToPrepend, this.theme),\n };\n },\n () => {\n const targetPosition = this.state.months[0].getHeight(this.theme);\n this.scrollTo(targetPosition, onEnd);\n },\n );\n }\n\n // If scrolling downwards, append maximum maxMonthsToAdd months\n // and scroll to the last but one month\n if (diffInMonths < 0) {\n const monthsToAppendCount = Math.min(Math.abs(diffInMonths), maxMonthsToAdd);\n const monthsToAppend = Array.from({ length: monthsToAppendCount }, (_, index) =>\n MonthViewModel.create(month + index - monthsToAppendCount + 2, year),\n );\n this.setState(\n (state) => {\n if (isYearChanges(state)) {\n // Mutating here can lead to some unexpected bugs\n // but we couldn't find any yet\n state.months[state.months.length - 1].isLastInYear = true;\n // Mutating item here is safe as it was just created\n if (monthsToAppend[0]) {\n monthsToAppend[0].isFirstInYear = true;\n }\n }\n return { months: state.months.concat(monthsToAppend) };\n },\n () => {\n const targetPosition = -1 * CalendarUtils.getMonthsHeight(this.state.months.slice(1, -2), this.theme);\n this.scrollTo(targetPosition, onEnd);\n },\n );\n }\n };\n\n private renderMain = () => {\n const positions = this.getMonthPositions();\n const wrapperStyle = { height: themeConfig(this.theme).WRAPPER_HEIGHT };\n return (\n <div ref={this.refRoot} className={styles.root(this.theme)} data-tid=\"Calendar\">\n <div style={wrapperStyle} className={styles.wrapper()}>\n {this.state.months\n .map<[number, MonthViewModel]>((x, i) => [positions[i], x])\n .filter(([top, month]) => CalendarUtils.isMonthVisible(top, month, this.theme))\n .map(this.renderMonth, this)}\n </div>\n </div>\n );\n };\n\n private refRoot = (element: HTMLElement | null) => {\n if (!this.root && element) {\n if (isMobile) {\n element.addEventListener('touchstart', this.handleTouchStart);\n element.addEventListener('touchmove', this.throttledHandleTouchMove);\n } else {\n element.addEventListener('wheel', this.handleWheel, { passive: false });\n }\n }\n if (this.root && !element) {\n if (isMobile) {\n this.root.removeEventListener('touchstart', this.handleTouchStart);\n this.root.removeEventListener('touchmove', this.throttledHandleTouchMove);\n } else {\n this.root.removeEventListener('wheel', this.handleWheel);\n }\n }\n this.root = element;\n };\n\n private renderMonth([top, month]: [number, MonthViewModel]) {\n return (\n <Month\n key={month.month + '-' + month.year}\n top={top}\n month={month}\n maxDate={this.props.maxDate}\n minDate={this.props.minDate}\n today={this.state.today}\n value={this.props.value}\n onDateClick={this.props.onSelect}\n onMonthYearChange={this.handleMonthYearChange}\n isHoliday={this.props.isHoliday}\n />\n );\n }\n\n private getMonthPositions() {\n const { scrollPosition, months } = this.state;\n\n const positions = [scrollPosition - months[0].getHeight(this.theme)];\n for (let i = 1; i < months.length; i++) {\n const position = positions[i - 1] + months[i - 1].getHeight(this.theme);\n positions.push(position);\n }\n return positions;\n }\n\n private handleMonthYearChange = (month: number, year: number) => {\n this.scrollToMonth(month, year);\n };\n\n private executeAnimations = (pixelY: number) => {\n this.setState(({ months, scrollPosition }) => {\n const targetPosition = CalendarUtils.calculateScrollPosition(\n months,\n scrollPosition,\n pixelY,\n this.theme,\n ).scrollPosition;\n return { scrollTarget: targetPosition };\n }, this.handleWheelEnd);\n\n this.animation.animate(pixelY, (deltaY) =>\n // FIXME: Typescript not resolving setState cb type\n this.setState(CalendarUtils.applyDelta(deltaY, this.theme) as any),\n );\n\n CalendarScrollEvents.emit();\n };\n\n private handleTouchStart = (event: Event) => {\n if (!(event instanceof TouchEvent)) {\n return;\n }\n\n const clientY = event.targetTouches[0].clientY;\n this.touchStartY = clientY;\n };\n\n private handleTouchMove = (event: Event) => {\n if (!(event instanceof TouchEvent)) {\n return;\n }\n\n const { clientY } = event.changedTouches[0];\n\n const deltaY = (this.touchStartY || 0) - clientY;\n this.touchStartY = clientY;\n\n this.executeAnimations(deltaY);\n };\n\n private throttledHandleTouchMove = throttle(this.handleTouchMove, 10);\n\n private handleWheel = (event: Event) => {\n if (!(event instanceof WheelEvent)) {\n return;\n }\n event.preventDefault();\n const { pixelY } = normalizeWheel(event);\n\n this.executeAnimations(pixelY);\n };\n\n private handleWheelEnd = () => {\n if (this.wheelEndTimeout) {\n clearTimeout(this.wheelEndTimeout);\n }\n this.wheelEndTimeout = window.setTimeout(this.scrollToNearestWeek, 300);\n };\n private scrollToNearestWeek = () => {\n const { scrollTarget, scrollDirection } = this.state;\n\n const trasholdHeight = themeConfig(this.theme).MONTH_TITLE_OFFSET_HEIGHT + themeConfig(this.theme).DAY_SIZE;\n\n if (scrollTarget < trasholdHeight) {\n let targetPosition = 0;\n if (scrollDirection < 0) {\n targetPosition = trasholdHeight;\n }\n\n this.setState({ scrollTarget: targetPosition }, () => {\n const amount = scrollTarget - targetPosition;\n this.animation.animate(amount, (deltaY) =>\n // FIXME: Typescript not resolving setState cb type\n this.setState(CalendarUtils.applyDelta(deltaY, this.theme) as any),\n );\n });\n }\n };\n\n private scrollTo = (pos: number, onEnd?: () => void) => {\n const scrollAmmount = pos - this.state.scrollPosition;\n return this.scrollAmount(scrollAmmount, onEnd);\n };\n\n private scrollAmount = (scrollAmmount: number, onEnd?: () => void) => {\n return this.animation.animate(\n scrollAmmount,\n (deltaY) =>\n this.setState(({ scrollPosition }) => ({\n scrollPosition: scrollPosition + deltaY,\n })),\n onEnd,\n );\n };\n}\n"]}
1
+ {"version":3,"sources":["Calendar.tsx"],"names":["getTodayDate","date","Date","getDate","month","getMonth","year","getFullYear","Calendar","props","animation","touchStartY","scrollToMonth","inProgress","finish","Promise","r","setTimeout","minDate","maxDate","currentMonth","state","months","diffInMonths","scrollTo","maxMonthsToAdd","theme","MAX_MONTHS_TO_APPEND_ON_SCROLL","onEnd","setState","CalendarUtils","getMonths","scrollPosition","isYearChanges","Math","abs","monthsToPrependCount","min","monthsToPrepend","Array","from","length","_","index","MonthViewModel","create","yearChanges","isFirstInYear","isLastInYear","concat","getMonthsHeight","targetPosition","getHeight","monthsToAppendCount","monthsToAppend","slice","renderMain","positions","getMonthPositions","wrapperStyle","height","WRAPPER_HEIGHT","refRoot","styles","root","wrapper","map","x","i","filter","top","isMonthVisible","renderMonth","element","isMobile","addEventListener","handleTouchStart","throttledHandleTouchMove","handleWheel","passive","removeEventListener","handleMonthYearChange","executeAnimations","pixelY","calculateScrollPosition","scrollTarget","handleWheelEnd","animate","deltaY","applyDelta","CalendarScrollEvents","emit","event","TouchEvent","clientY","targetTouches","handleTouchMove","changedTouches","WheelEvent","preventDefault","wheelEndTimeout","clearTimeout","window","scrollToNearestWeek","scrollDirection","trasholdHeight","MONTH_TITLE_OFFSET_HEIGHT","DAY_SIZE","amount","pos","scrollAmmount","scrollAmount","today","initialMonth","initialYear","touchStart","componentWillUnmount","cancel","render","value","onSelect","isHoliday","position","push","React","Component","__KONTUR_REACT_UI__","defaultProps","holidays","MIN_YEAR","MIN_MONTH","MIN_DATE","MAX_YEAR","MAX_MONTH","MAX_DATE"],"mappings":"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","sourcesContent":["import React from 'react';\nimport normalizeWheel from 'normalize-wheel';\nimport throttle from 'lodash.throttle';\n\nimport { MAX_DATE, MAX_MONTH, MAX_YEAR, MIN_DATE, MIN_MONTH, MIN_YEAR } from '../../lib/date/constants';\nimport { Nullable } from '../../typings/utility-types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { animation } from '../../lib/animation';\nimport { isMobile } from '../../lib/client';\n\nimport { themeConfig } from './config';\nimport * as CalendarUtils from './CalendarUtils';\nimport { MonthViewModel } from './MonthViewModel';\nimport * as CalendarScrollEvents from './CalendarScrollEvents';\nimport { Month } from './Month';\nimport { styles } from './Calendar.styles';\nimport { CalendarDateShape, create, isGreater, isLess } from './CalendarDateShape';\n\nexport interface CalendarProps {\n initialMonth?: number;\n initialYear?: number;\n onSelect?: (date: CalendarDateShape) => void;\n value?: Nullable<CalendarDateShape>;\n maxDate?: CalendarDateShape;\n minDate?: CalendarDateShape;\n isHoliday?: (day: CalendarDateShape & { isWeekend: boolean }) => boolean;\n}\n\nexport interface CalendarState {\n scrollPosition: number;\n months: MonthViewModel[];\n today: CalendarDateShape;\n scrollDirection: number;\n scrollTarget: number;\n touchStart: number;\n}\n\nconst getTodayDate = () => {\n const date = new Date();\n return {\n date: date.getDate(),\n month: date.getMonth(),\n year: date.getFullYear(),\n };\n};\n\nexport class Calendar extends React.Component<CalendarProps, CalendarState> {\n public static __KONTUR_REACT_UI__ = 'Calendar';\n\n public static defaultProps = {\n holidays: [],\n minDate: {\n year: MIN_YEAR,\n month: MIN_MONTH,\n date: MIN_DATE,\n },\n maxDate: {\n year: MAX_YEAR,\n month: MAX_MONTH,\n date: MAX_DATE,\n },\n };\n\n private theme!: Theme;\n private wheelEndTimeout: Nullable<number>;\n private root: Nullable<HTMLElement>;\n private animation = animation();\n private touchStartY: Nullable<number> = null;\n\n constructor(props: CalendarProps) {\n super(props);\n\n const today = getTodayDate();\n\n const initialMonth = props.initialMonth ?? today.month;\n const initialYear = props.initialYear ?? today.year;\n\n this.state = {\n scrollPosition: 0,\n months: CalendarUtils.getMonths(initialMonth, initialYear),\n today,\n scrollDirection: 1,\n scrollTarget: 0,\n touchStart: 0,\n };\n }\n\n public componentWillUnmount() {\n if (this.animation.inProgress()) {\n this.animation.cancel();\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * Scrolls calendar to given date\n * @public\n */\n public scrollToMonth = async (month: number, year: number) => {\n if (this.animation.inProgress()) {\n this.animation.finish();\n // FIXME: Dirty hack to await batched updates\n await new Promise((r) => setTimeout(r));\n }\n\n const { minDate, maxDate } = this.props;\n\n if (minDate && isGreater(minDate, create(32, month, year))) {\n this.scrollToMonth(minDate.month, minDate.year);\n return;\n }\n\n if (maxDate && isLess(maxDate, create(0, month, year))) {\n this.scrollToMonth(maxDate.month, maxDate.year);\n return;\n }\n\n const currentMonth = this.state.months[1];\n const diffInMonths = currentMonth.month + currentMonth.year * 12 - month - year * 12;\n\n if (diffInMonths === 0) {\n this.scrollTo(0);\n return;\n }\n\n const maxMonthsToAdd = themeConfig(this.theme).MAX_MONTHS_TO_APPEND_ON_SCROLL;\n\n const onEnd = () =>\n this.setState({\n months: CalendarUtils.getMonths(month, year),\n scrollPosition: 0,\n });\n\n const isYearChanges = (state: CalendarState) =>\n state.months[1].year !== year &&\n // if diff in months is 2 or less,\n // either year is not changing either months already\n // have right isFirstInYear/isLastInYear flags\n Math.abs(diffInMonths) > 2;\n\n // If scrolling upwards, prepend maximum maxMonthsToAdd months\n // and scroll to the first month\n if (diffInMonths > 0) {\n const monthsToPrependCount = Math.min(Math.abs(diffInMonths) - 1, maxMonthsToAdd);\n const monthsToPrepend = Array.from({ length: monthsToPrependCount }, (_, index) =>\n MonthViewModel.create(month + index, year),\n );\n this.setState(\n (state) => {\n const yearChanges = isYearChanges(state);\n if (yearChanges) {\n // Mutating here can lead to some unexpected bugs\n // but we couldn't find any yet\n state.months[0].isFirstInYear = true;\n if (monthsToPrepend.length) {\n // Mutating item here is safe as it was just created\n monthsToPrepend[monthsToPrepend.length - 1].isLastInYear = true;\n }\n }\n return {\n months: monthsToPrepend.concat(state.months),\n scrollPosition: -CalendarUtils.getMonthsHeight(monthsToPrepend, this.theme),\n };\n },\n () => {\n const targetPosition = this.state.months[0].getHeight(this.theme);\n this.scrollTo(targetPosition, onEnd);\n },\n );\n }\n\n // If scrolling downwards, append maximum maxMonthsToAdd months\n // and scroll to the last but one month\n if (diffInMonths < 0) {\n const monthsToAppendCount = Math.min(Math.abs(diffInMonths), maxMonthsToAdd);\n const monthsToAppend = Array.from({ length: monthsToAppendCount }, (_, index) =>\n MonthViewModel.create(month + index - monthsToAppendCount + 2, year),\n );\n this.setState(\n (state) => {\n if (isYearChanges(state)) {\n // Mutating here can lead to some unexpected bugs\n // but we couldn't find any yet\n state.months[state.months.length - 1].isLastInYear = true;\n // Mutating item here is safe as it was just created\n if (monthsToAppend[0]) {\n monthsToAppend[0].isFirstInYear = true;\n }\n }\n return { months: state.months.concat(monthsToAppend) };\n },\n () => {\n const targetPosition = -1 * CalendarUtils.getMonthsHeight(this.state.months.slice(1, -2), this.theme);\n this.scrollTo(targetPosition, onEnd);\n },\n );\n }\n };\n\n private renderMain = () => {\n const positions = this.getMonthPositions();\n const wrapperStyle = { height: themeConfig(this.theme).WRAPPER_HEIGHT };\n return (\n <div ref={this.refRoot} className={styles.root(this.theme)} data-tid=\"Calendar\">\n <div style={wrapperStyle} className={styles.wrapper()}>\n {this.state.months\n .map<[number, MonthViewModel]>((x, i) => [positions[i], x])\n .filter(([top, month]) => CalendarUtils.isMonthVisible(top, month, this.theme))\n .map(this.renderMonth, this)}\n </div>\n </div>\n );\n };\n\n private refRoot = (element: HTMLElement | null) => {\n if (!this.root && element) {\n if (isMobile) {\n element.addEventListener('touchstart', this.handleTouchStart);\n element.addEventListener('touchmove', this.throttledHandleTouchMove);\n } else {\n element.addEventListener('wheel', this.handleWheel, { passive: false });\n }\n }\n if (this.root && !element) {\n if (isMobile) {\n this.root.removeEventListener('touchstart', this.handleTouchStart);\n this.root.removeEventListener('touchmove', this.throttledHandleTouchMove);\n } else {\n this.root.removeEventListener('wheel', this.handleWheel);\n }\n }\n this.root = element;\n };\n\n private renderMonth([top, month]: [number, MonthViewModel]) {\n return (\n <Month\n key={month.month + '-' + month.year}\n top={top}\n month={month}\n maxDate={this.props.maxDate}\n minDate={this.props.minDate}\n today={this.state.today}\n value={this.props.value}\n onDateClick={this.props.onSelect}\n onMonthYearChange={this.handleMonthYearChange}\n isHoliday={this.props.isHoliday}\n />\n );\n }\n\n private getMonthPositions() {\n const { scrollPosition, months } = this.state;\n\n const positions = [scrollPosition - months[0].getHeight(this.theme)];\n for (let i = 1; i < months.length; i++) {\n const position = positions[i - 1] + months[i - 1].getHeight(this.theme);\n positions.push(position);\n }\n return positions;\n }\n\n private handleMonthYearChange = (month: number, year: number) => {\n this.scrollToMonth(month, year);\n };\n\n private executeAnimations = (pixelY: number) => {\n this.setState(({ months, scrollPosition }) => {\n const targetPosition = CalendarUtils.calculateScrollPosition(\n months,\n scrollPosition,\n pixelY,\n this.theme,\n ).scrollPosition;\n return { scrollTarget: targetPosition };\n }, this.handleWheelEnd);\n\n this.animation.animate(pixelY, (deltaY) =>\n // FIXME: Typescript not resolving setState cb type\n this.setState(CalendarUtils.applyDelta(deltaY, this.theme) as any),\n );\n\n CalendarScrollEvents.emit();\n };\n\n private handleTouchStart = (event: Event) => {\n if (!(event instanceof TouchEvent)) {\n return;\n }\n\n const clientY = event.targetTouches[0].clientY;\n this.touchStartY = clientY;\n };\n\n private handleTouchMove = (event: Event) => {\n if (!(event instanceof TouchEvent)) {\n return;\n }\n\n const { clientY } = event.changedTouches[0];\n\n const deltaY = (this.touchStartY || 0) - clientY;\n this.touchStartY = clientY;\n\n this.executeAnimations(deltaY);\n };\n\n private throttledHandleTouchMove = throttle(this.handleTouchMove, 10);\n\n private handleWheel = (event: Event) => {\n if (!(event instanceof WheelEvent)) {\n return;\n }\n event.preventDefault();\n const { pixelY } = normalizeWheel(event);\n\n this.executeAnimations(pixelY);\n };\n\n private handleWheelEnd = () => {\n if (this.wheelEndTimeout) {\n clearTimeout(this.wheelEndTimeout);\n }\n this.wheelEndTimeout = window.setTimeout(this.scrollToNearestWeek, 300);\n };\n private scrollToNearestWeek = () => {\n const { scrollTarget, scrollDirection } = this.state;\n\n const trasholdHeight = themeConfig(this.theme).MONTH_TITLE_OFFSET_HEIGHT + themeConfig(this.theme).DAY_SIZE;\n\n if (scrollTarget < trasholdHeight) {\n let targetPosition = 0;\n if (scrollDirection < 0) {\n targetPosition = trasholdHeight;\n }\n\n this.setState({ scrollTarget: targetPosition }, () => {\n const amount = scrollTarget - targetPosition;\n this.animation.animate(amount, (deltaY) =>\n // FIXME: Typescript not resolving setState cb type\n this.setState(CalendarUtils.applyDelta(deltaY, this.theme) as any),\n );\n });\n }\n };\n\n private scrollTo = (pos: number, onEnd?: () => void) => {\n const scrollAmmount = pos - this.state.scrollPosition;\n return this.scrollAmount(scrollAmmount, onEnd);\n };\n\n private scrollAmount = (scrollAmmount: number, onEnd?: () => void) => {\n return this.animation.animate(\n scrollAmmount,\n (deltaY) =>\n this.setState(({ scrollPosition }) => ({\n scrollPosition: scrollPosition + deltaY,\n })),\n onEnd,\n );\n };\n}\n"]}
@@ -5,7 +5,7 @@ export interface CalendarDateShape {
5
5
  date: number;
6
6
  }
7
7
  export declare const isEqual: (a: Nullable<CalendarDateShape>, b: Nullable<CalendarDateShape>) => boolean | null | undefined;
8
- export declare const comparator: (a: CalendarDateShape, b: CalendarDateShape) => 1 | 0 | -1;
8
+ export declare const comparator: (a: CalendarDateShape, b: CalendarDateShape) => 0 | 1 | -1;
9
9
  export declare const create: (date: number, month: number, year: number) => CalendarDateShape;
10
10
  export declare const isLess: (left: CalendarDateShape, right: CalendarDateShape) => boolean;
11
11
  export declare const isLessOrEqual: (left: CalendarDateShape, right: CalendarDateShape) => boolean | null | undefined;
@@ -2,7 +2,31 @@
2
2
 
3
3
 
4
4
  var _config = require("./config");
5
- var _DayCellViewModel = require("./DayCellViewModel");var
5
+ var _DayCellViewModel = require("./DayCellViewModel");
6
+
7
+ var getCurrentYear = function getCurrentYear(month, year) {
8
+ if (month < 0) {
9
+ return year - Math.ceil(-month / 12);
10
+ }
11
+
12
+ if (month > 11) {
13
+ return year + Math.floor(month / 12);
14
+ }
15
+
16
+ return year;
17
+ };
18
+
19
+ var getCurrentMonth = function getCurrentMonth(month) {
20
+ if (month < 0) {
21
+ return 12 + month % 12;
22
+ }
23
+
24
+ if (month > 11) {
25
+ return month % 12;
26
+ }
27
+
28
+ return month;
29
+ };var
6
30
 
7
31
  MonthViewModel = /*#__PURE__*/function () {var _proto = MonthViewModel.prototype;_proto.
8
32
 
@@ -29,25 +53,20 @@ MonthViewModel = /*#__PURE__*/function () {var _proto = MonthViewModel.prototype
29
53
  };
30
54
 
31
55
  function MonthViewModel(month, year) {
32
- if (month < 0) {
33
- year -= Math.ceil(-month / 12);
34
- month = 12 + month % 12;
35
- }
36
- if (month > 11) {
37
- year += Math.floor(month / 12);
38
- month %= 12;
39
- }
40
- var daysCount = getMonthsDays(month, year);
41
- var offset = getMonthOffset(month, year);
56
+ var currentYear = getCurrentYear(month, year);
57
+ var currentMonth = getCurrentMonth(month);
58
+
59
+ var daysCount = getMonthsDays(currentMonth, currentYear);
60
+ var offset = getMonthOffset(currentMonth, currentYear);
42
61
  this.daysCount = daysCount;
43
62
  this.offset = offset;
44
- this.month = month;
45
- this.year = year;
46
- this.isLastInYear = month === 11;
47
- this.isFirstInYear = month === 0;
63
+ this.month = currentMonth;
64
+ this.year = currentYear;
65
+ this.isLastInYear = currentMonth === 11;
66
+ this.isFirstInYear = currentMonth === 0;
48
67
  this.days = Array.from({ length: daysCount }, function (_, i) {
49
- var isWeekend = (i + getMonthOffset(month, year)) % 7 >= 5;
50
- return _DayCellViewModel.DayCellViewModel.create(i + 1, month, year, isWeekend);
68
+ var isWeekend = (i + getMonthOffset(currentMonth, currentYear)) % 7 >= 5;
69
+ return _DayCellViewModel.DayCellViewModel.create(i + 1, currentMonth, currentYear, isWeekend);
51
70
  });
52
71
  }return MonthViewModel;}();exports.MonthViewModel = MonthViewModel;MonthViewModel.create = (0, _memo.memo)(function (month, year) {return new MonthViewModel(month, year);});
53
72
 
@@ -1 +1 @@
1
- {"version":3,"sources":["MonthViewModel.ts"],"names":["MonthViewModel","getHeight","theme","DAY_SIZE","MONTH_TITLE_OFFSET_HEIGHT","MONTH_BOTTOM_MARGIN","getMonthHeight","daysCount","offset","month","year","Math","ceil","floor","getMonthsDays","getMonthOffset","isLastInYear","isFirstInYear","days","Array","from","length","_","i","isWeekend","DayCellViewModel","create","dayHeight","titleHeight","marginBottom","Date","getDate","day","getDay"],"mappings":"uEAAA;;;AAGA;AACA,sD;;AAEaA,c;;;;;;;;;;;;;;;;;;;AAmBJC,EAAAA,S,GAAP,mBAAiBC,KAAjB,EAAuC;AACrC,uBAAqE,yBAAYA,KAAZ,CAArE,CAAQC,QAAR,gBAAQA,QAAR,CAAkBC,yBAAlB,gBAAkBA,yBAAlB,CAA6CC,mBAA7C,gBAA6CA,mBAA7C;AACA,WAAOC,cAAc,CAAC,KAAKC,SAAN,EAAiB,KAAKC,MAAtB,EAA8BL,QAA9B,EAAwCC,yBAAxC,EAAmEC,mBAAnE,CAArB;AACD,G;;AAED,0BAAoBI,KAApB,EAAmCC,IAAnC,EAAiD;AAC/C,QAAID,KAAK,GAAG,CAAZ,EAAe;AACbC,MAAAA,IAAI,IAAIC,IAAI,CAACC,IAAL,CAAU,CAACH,KAAD,GAAS,EAAnB,CAAR;AACAA,MAAAA,KAAK,GAAG,KAAMA,KAAK,GAAG,EAAtB;AACD;AACD,QAAIA,KAAK,GAAG,EAAZ,EAAgB;AACdC,MAAAA,IAAI,IAAIC,IAAI,CAACE,KAAL,CAAWJ,KAAK,GAAG,EAAnB,CAAR;AACAA,MAAAA,KAAK,IAAI,EAAT;AACD;AACD,QAAMF,SAAS,GAAGO,aAAa,CAACL,KAAD,EAAQC,IAAR,CAA/B;AACA,QAAMF,MAAM,GAAGO,cAAc,CAACN,KAAD,EAAQC,IAAR,CAA7B;AACA,SAAKH,SAAL,GAAiBA,SAAjB;AACA,SAAKC,MAAL,GAAcA,MAAd;AACA,SAAKC,KAAL,GAAaA,KAAb;AACA,SAAKC,IAAL,GAAYA,IAAZ;AACA,SAAKM,YAAL,GAAoBP,KAAK,KAAK,EAA9B;AACA,SAAKQ,aAAL,GAAqBR,KAAK,KAAK,CAA/B;AACA,SAAKS,IAAL,GAAYC,KAAK,CAACC,IAAN,CAAW,EAAEC,MAAM,EAAEd,SAAV,EAAX,EAAkC,UAACe,CAAD,EAAIC,CAAJ,EAAU;AACtD,UAAMC,SAAS,GAAG,CAACD,CAAC,GAAGR,cAAc,CAACN,KAAD,EAAQC,IAAR,CAAnB,IAAoC,CAApC,IAAyC,CAA3D;AACA,aAAOe,mCAAiBC,MAAjB,CAAwBH,CAAC,GAAG,CAA5B,EAA+Bd,KAA/B,EAAsCC,IAAtC,EAA4Cc,SAA5C,CAAP;AACD,KAHW,CAAZ;AAID,G,kEA7CUxB,c,CACG0B,M,GAAS,gBAAK,UAACjB,KAAD,EAAgBC,IAAhB,UAAiD,IAAIV,cAAJ,CAAmBS,KAAnB,EAA0BC,IAA1B,CAAjD,EAAL,C;;;AA+CzB,IAAMJ,cAAc,GAAG;AACrB,UAACC,SAAD,EAAoBC,MAApB,EAAoCmB,SAApC,EAAuDC,WAAvD,EAA4EC,YAA5E;AACElB,IAAAA,IAAI,CAACC,IAAL,CAAU,CAACL,SAAS,GAAGC,MAAb,IAAuB,CAAjC,IAAsCmB,SAAtC,GAAkDC,WAAlD,GAAgEC,YADlE,GADqB,CAAvB;;AAIA,IAAMf,aAAa,GAAG,gBAAK,UAACL,KAAD,EAAgBC,IAAhB,UAAiC,IAAIoB,IAAJ,CAASpB,IAAT,EAAeD,KAAK,GAAG,CAAvB,EAA0B,CAA1B,EAA6BsB,OAA7B,EAAjC,EAAL,CAAtB;;AAEA,IAAMhB,cAAc,GAAG,gBAAK,UAACN,KAAD,EAAgBC,IAAhB,EAAiC;AAC3D,MAAMsB,GAAG,GAAG,IAAIF,IAAJ,CAASpB,IAAT,EAAeD,KAAf,EAAsB,CAAtB,EAAyBwB,MAAzB,KAAoC,CAAhD;AACA,MAAID,GAAG,KAAK,CAAC,CAAb,EAAgB;AACd,WAAO,CAAP;AACD;AACD,SAAOA,GAAP;AACD,CANsB,CAAvB","sourcesContent":["import { memo } from '../../lib/memo';\nimport { Theme } from '../../lib/theming/Theme';\n\nimport { themeConfig } from './config';\nimport { DayCellViewModel } from './DayCellViewModel';\n\nexport class MonthViewModel {\n public static create = memo((month: number, year: number): MonthViewModel => new MonthViewModel(month, year));\n\n public readonly daysCount: number;\n\n public readonly offset: number;\n\n public readonly month: number;\n\n public readonly year: number;\n\n public readonly days: DayCellViewModel[];\n\n // FIXME: shouldbe readonly\n public isLastInYear: boolean;\n\n // FIXME: shouldbe readonly\n public isFirstInYear: boolean;\n\n public getHeight(theme: Theme): number {\n const { DAY_SIZE, MONTH_TITLE_OFFSET_HEIGHT, MONTH_BOTTOM_MARGIN } = themeConfig(theme);\n return getMonthHeight(this.daysCount, this.offset, DAY_SIZE, MONTH_TITLE_OFFSET_HEIGHT, MONTH_BOTTOM_MARGIN);\n }\n\n private constructor(month: number, year: number) {\n if (month < 0) {\n year -= Math.ceil(-month / 12);\n month = 12 + (month % 12);\n }\n if (month > 11) {\n year += Math.floor(month / 12);\n month %= 12;\n }\n const daysCount = getMonthsDays(month, year);\n const offset = getMonthOffset(month, year);\n this.daysCount = daysCount;\n this.offset = offset;\n this.month = month;\n this.year = year;\n this.isLastInYear = month === 11;\n this.isFirstInYear = month === 0;\n this.days = Array.from({ length: daysCount }, (_, i) => {\n const isWeekend = (i + getMonthOffset(month, year)) % 7 >= 5;\n return DayCellViewModel.create(i + 1, month, year, isWeekend);\n });\n }\n}\n\nconst getMonthHeight = memo(\n (daysCount: number, offset: number, dayHeight: number, titleHeight: number, marginBottom: number) =>\n Math.ceil((daysCount + offset) / 7) * dayHeight + titleHeight + marginBottom,\n);\nconst getMonthsDays = memo((month: number, year: number) => new Date(year, month + 1, 0).getDate());\n\nconst getMonthOffset = memo((month: number, year: number) => {\n const day = new Date(year, month, 1).getDay() - 1;\n if (day === -1) {\n return 6;\n }\n return day;\n});\n"]}
1
+ {"version":3,"sources":["MonthViewModel.ts"],"names":["getCurrentYear","month","year","Math","ceil","floor","getCurrentMonth","MonthViewModel","getHeight","theme","DAY_SIZE","MONTH_TITLE_OFFSET_HEIGHT","MONTH_BOTTOM_MARGIN","getMonthHeight","daysCount","offset","currentYear","currentMonth","getMonthsDays","getMonthOffset","isLastInYear","isFirstInYear","days","Array","from","length","_","i","isWeekend","DayCellViewModel","create","dayHeight","titleHeight","marginBottom","Date","getDate","day","getDay"],"mappings":"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","sourcesContent":["import { memo } from '../../lib/memo';\nimport { Theme } from '../../lib/theming/Theme';\n\nimport { themeConfig } from './config';\nimport { DayCellViewModel } from './DayCellViewModel';\n\nconst getCurrentYear = (month: number, year: number) => {\n if (month < 0) {\n return year - Math.ceil(-month / 12);\n }\n\n if (month > 11) {\n return year + Math.floor(month / 12);\n }\n\n return year;\n};\n\nconst getCurrentMonth = (month: number) => {\n if (month < 0) {\n return 12 + (month % 12);\n }\n\n if (month > 11) {\n return month % 12;\n }\n\n return month;\n};\n\nexport class MonthViewModel {\n public static create = memo((month: number, year: number): MonthViewModel => new MonthViewModel(month, year));\n\n public readonly daysCount: number;\n\n public readonly offset: number;\n\n public readonly month: number;\n\n public readonly year: number;\n\n public readonly days: DayCellViewModel[];\n\n // FIXME: shouldbe readonly\n public isLastInYear: boolean;\n\n // FIXME: shouldbe readonly\n public isFirstInYear: boolean;\n\n public getHeight(theme: Theme): number {\n const { DAY_SIZE, MONTH_TITLE_OFFSET_HEIGHT, MONTH_BOTTOM_MARGIN } = themeConfig(theme);\n return getMonthHeight(this.daysCount, this.offset, DAY_SIZE, MONTH_TITLE_OFFSET_HEIGHT, MONTH_BOTTOM_MARGIN);\n }\n\n private constructor(month: number, year: number) {\n const currentYear = getCurrentYear(month, year);\n const currentMonth = getCurrentMonth(month);\n\n const daysCount = getMonthsDays(currentMonth, currentYear);\n const offset = getMonthOffset(currentMonth, currentYear);\n this.daysCount = daysCount;\n this.offset = offset;\n this.month = currentMonth;\n this.year = currentYear;\n this.isLastInYear = currentMonth === 11;\n this.isFirstInYear = currentMonth === 0;\n this.days = Array.from({ length: daysCount }, (_, i) => {\n const isWeekend = (i + getMonthOffset(currentMonth, currentYear)) % 7 >= 5;\n return DayCellViewModel.create(i + 1, currentMonth, currentYear, isWeekend);\n });\n }\n}\n\nconst getMonthHeight = memo(\n (daysCount: number, offset: number, dayHeight: number, titleHeight: number, marginBottom: number) =>\n Math.ceil((daysCount + offset) / 7) * dayHeight + titleHeight + marginBottom,\n);\nconst getMonthsDays = memo((month: number, year: number) => new Date(year, month + 1, 0).getDate());\n\nconst getMonthOffset = memo((month: number, year: number) => {\n const day = new Date(year, month, 1).getDay() - 1;\n if (day === -1) {\n return 6;\n }\n return day;\n});\n"]}
@@ -98,9 +98,9 @@ props)
98
98
 
99
99
  var isCommonProp = function isCommonProp(name) {
100
100
  switch (true) {
101
- case name == 'className':
102
- case name == 'style':
103
- case name == 'rootNodeRef':
101
+ case name === 'className':
102
+ case name === 'style':
103
+ case name === 'rootNodeRef':
104
104
  case name.indexOf('data-') === 0: // все data-атрибуты
105
105
  return true;
106
106
  default:
@@ -1 +1 @@
1
- {"version":3,"sources":["CommonWrapper.tsx"],"names":["CommonWrapper","rootNode","rootNodeSubscription","ref","instance","setRootNode","props","rootNodeRef","remove","addRootNodeChangeListener","node","originalRef","child","render","extractCommonProps","className","style","dataProps","children","rest","isValidElement","React","cloneElement","Component","common","key","isCommonProp","name","indexOf"],"mappings":"ucAAA;;AAEA;AACA;;AAEA;AACA,mE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BaA,a,OADZC,kB;;;;;AAMSC,IAAAA,oB,GAAwD,I;;;;;;;;;;;;;;;;;;AAkBxDC,IAAAA,G,GAAM,UAACC,QAAD,EAA6C;AACzD,YAAKC,WAAL,CAAiBD,QAAjB;AACA,YAAKE,KAAL,CAAWC,WAAX,0BAAKD,KAAL,CAAWC,WAAX,CAAyB,2BAAYH,QAAZ,CAAzB;;AAEA;AACA;AACA,qCAAKF,oBAAL,2CAA2BM,MAA3B;AACA,YAAKN,oBAAL,GAA4B,IAA5B;;AAEA,UAAIE,QAAQ,IAAI,sCAAuBA,QAAvB,CAAhB,EAAkD;AAChD,cAAKF,oBAAL,GAA4BE,QAAQ,CAACK,yBAArC,oBAA4BL,QAAQ,CAACK,yBAAT,CAAqC,UAACC,IAAD,EAAU;AACzE,gBAAKL,WAAL,CAAiBK,IAAjB;AACA,gBAAKJ,KAAL,CAAWC,WAAX,0BAAKD,KAAL,CAAWC,WAAX,CAAyBG,IAAzB;AACD,SAH2B,CAA5B;AAID;;AAED,UAAMC,WAAW,kBAAI,MAAKC,KAAT,qBAAG,YAA0CT,GAA9D;AACAQ,MAAAA,WAAW,IAAI,gCAAaA,WAAb,EAA0BP,QAA1B,CAAf;AACD,K,2DAlCDS,M,GAAA,kBAAS,CACP,0BAAiFC,kBAAkB,CAAC,KAAKR,KAAN,CAAnG,+CAASS,SAAT,wBAASA,SAAT,CAAoBC,KAApB,wBAAoBA,KAApB,CAA2BT,WAA3B,wBAA2BA,WAA3B,CAA2CU,SAA3C,+HAA0DC,QAA1D,yBAA0DA,QAA1D,CAAuEC,IAAvE,kFACA,KAAKP,KAAL,GAAa,uBAAWM,QAAX,IAAuBA,QAAQ,CAACC,IAAD,CAA/B,GAAwCD,QAArD,CACA,OAAO,4BAAME,cAAN,CAA6D,KAAKR,KAAlE,iBACHS,eAAMC,YAAN,CAAmB,KAAKV,KAAxB,2BACET,GAAG,EAAE,6BAAiB,KAAKS,KAAtB,IAA+B,KAAKT,GAApC,GAA0C,IADjD,EAEEY,SAAS,EAAE,iBAAG,KAAKH,KAAL,CAAWN,KAAX,CAAiBS,SAApB,EAA+BA,SAA/B,CAFb,EAGEC,KAAK,6BACA,KAAKJ,KAAL,CAAWN,KAAX,CAAiBU,KADjB,EAEAA,KAFA,CAHP,IAOKC,SAPL,EADG,GAUH,KAAKL,KAVT,CAWD,C,wBArBgFS,eAAME,S;;;AA4CzF,IAAMT,kBAAkB,GAAG,SAArBA,kBAAqB;AACzBR,KADyB;AAEqC;AAC9D,MAAMkB,MAAM,GAAG,EAAf;AACA,MAAML,IAAI,GAAG,EAAb;;AAEA,OAAK,IAAMM,GAAX,IAAkBnB,KAAlB,EAAyB;AACvB,QAAIoB,YAAY,CAACD,GAAD,CAAhB,EAAuB;AACrB;AACAD,MAAAA,MAAM,CAACC,GAAD,CAAN,GAAcnB,KAAK,CAACmB,GAAD,CAAnB;AACD,KAHD,MAGO;AACL;AACAN,MAAAA,IAAI,CAACM,GAAD,CAAJ,GAAYnB,KAAK,CAACmB,GAAD,CAAjB;AACD;AACF;;AAED,SAAO,CAACD,MAAD,EAASL,IAAT,CAAP;AACD,CAjBD;;AAmBA,IAAMO,YAAY,GAAG,SAAfA,YAAe,CAACC,IAAD,EAAkB;AACrC,UAAQ,IAAR;AACE,SAAKA,IAAI,IAAI,WAAb;AACA,SAAKA,IAAI,IAAI,OAAb;AACA,SAAKA,IAAI,IAAI,aAAb;AACA,SAAKA,IAAI,CAACC,OAAL,CAAa,OAAb,MAA0B,CAA/B,EAAkC;AAChC,aAAO,IAAP;AACF;AACE,aAAO,KAAP,CAPJ;;AASD,CAVD","sourcesContent":["import React from 'react';\n\nimport { isFunction, isRefableElement } from '../../lib/utils';\nimport { cx } from '../../lib/theming/Emotion';\nimport { Nullable } from '../../typings/utility-types';\nimport { getRootNode, rootNode, TSetRootNode, TRootNodeSubscription, isInstanceWithRootNode } from '../../lib/rootNode';\nimport { callChildRef } from '../../lib/callChildRef/callChildRef';\n\nexport interface CommonProps {\n /**\n * HTML-атрибут `class`.\n */\n className?: React.HTMLAttributes<HTMLElement>['className'];\n /**\n * HTML-атрибут `style`.\n */\n style?: React.HTMLAttributes<HTMLElement>['style'];\n /**\n * На равне с data-tid транслируются любые data-атрибуты. Они попадают на корневой элемент.\n */\n 'data-tid'?: string;\n}\n\ninterface CommonPropsRootNodeRef {\n rootNodeRef?: (instance: Nullable<HTMLElement>) => void;\n}\n\nexport type NotCommonProps<P> = Omit<P, keyof CommonProps>;\n\nexport type CommonWrapperProps<P> = P & {\n children: React.ReactNode | ((rest: CommonWrapperRestProps<P>) => React.ReactNode);\n};\nexport type CommonWrapperRestProps<P> = Omit<NotCommonProps<P>, 'children'>;\n\n@rootNode\nexport class CommonWrapper<P extends CommonProps & CommonPropsRootNodeRef> extends React.Component<\n CommonWrapperProps<P> & CommonPropsRootNodeRef\n> {\n private child: React.ReactNode;\n private setRootNode!: TSetRootNode;\n private rootNodeSubscription: Nullable<TRootNodeSubscription> = null;\n\n render() {\n const [{ className, style, rootNodeRef, ...dataProps }, { children, ...rest }] = extractCommonProps(this.props);\n this.child = isFunction(children) ? children(rest) : children;\n return React.isValidElement<CommonProps & React.RefAttributes<any>>(this.child)\n ? React.cloneElement(this.child, {\n ref: isRefableElement(this.child) ? this.ref : null,\n className: cx(this.child.props.className, className),\n style: {\n ...this.child.props.style,\n ...style,\n },\n ...dataProps,\n })\n : this.child;\n }\n\n private ref = (instance: Nullable<React.ReactInstance>) => {\n this.setRootNode(instance);\n this.props.rootNodeRef?.(getRootNode(instance));\n\n // refs are called when instances change\n // so we have to renew or remove old subscription\n this.rootNodeSubscription?.remove();\n this.rootNodeSubscription = null;\n\n if (instance && isInstanceWithRootNode(instance)) {\n this.rootNodeSubscription = instance.addRootNodeChangeListener?.((node) => {\n this.setRootNode(node);\n this.props.rootNodeRef?.(node);\n });\n }\n\n const originalRef = (this.child as React.RefAttributes<any>)?.ref;\n originalRef && callChildRef(originalRef, instance);\n };\n}\n\nconst extractCommonProps = <P extends CommonProps & CommonPropsRootNodeRef>(\n props: P,\n): [CommonProps & CommonPropsRootNodeRef, NotCommonProps<P>] => {\n const common = {} as CommonProps & CommonPropsRootNodeRef;\n const rest = {} as NotCommonProps<P>;\n\n for (const key in props) {\n if (isCommonProp(key)) {\n // @ts-ignore\n common[key] = props[key];\n } else {\n // @ts-ignore\n rest[key] = props[key];\n }\n }\n\n return [common, rest];\n};\n\nconst isCommonProp = (name: string) => {\n switch (true) {\n case name == 'className':\n case name == 'style':\n case name == 'rootNodeRef':\n case name.indexOf('data-') === 0: // все data-атрибуты\n return true;\n default:\n return false;\n }\n};\n"]}
1
+ {"version":3,"sources":["CommonWrapper.tsx"],"names":["CommonWrapper","rootNode","rootNodeSubscription","ref","instance","setRootNode","props","rootNodeRef","remove","addRootNodeChangeListener","node","originalRef","child","render","extractCommonProps","className","style","dataProps","children","rest","isValidElement","React","cloneElement","Component","common","key","isCommonProp","name","indexOf"],"mappings":"ucAAA;;AAEA;AACA;;AAEA;AACA,mE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BaA,a,OADZC,kB;;;;;AAMSC,IAAAA,oB,GAAwD,I;;;;;;;;;;;;;;;;;;AAkBxDC,IAAAA,G,GAAM,UAACC,QAAD,EAA6C;AACzD,YAAKC,WAAL,CAAiBD,QAAjB;AACA,YAAKE,KAAL,CAAWC,WAAX,0BAAKD,KAAL,CAAWC,WAAX,CAAyB,2BAAYH,QAAZ,CAAzB;;AAEA;AACA;AACA,qCAAKF,oBAAL,2CAA2BM,MAA3B;AACA,YAAKN,oBAAL,GAA4B,IAA5B;;AAEA,UAAIE,QAAQ,IAAI,sCAAuBA,QAAvB,CAAhB,EAAkD;AAChD,cAAKF,oBAAL,GAA4BE,QAAQ,CAACK,yBAArC,oBAA4BL,QAAQ,CAACK,yBAAT,CAAqC,UAACC,IAAD,EAAU;AACzE,gBAAKL,WAAL,CAAiBK,IAAjB;AACA,gBAAKJ,KAAL,CAAWC,WAAX,0BAAKD,KAAL,CAAWC,WAAX,CAAyBG,IAAzB;AACD,SAH2B,CAA5B;AAID;;AAED,UAAMC,WAAW,kBAAI,MAAKC,KAAT,qBAAG,YAA0CT,GAA9D;AACAQ,MAAAA,WAAW,IAAI,gCAAaA,WAAb,EAA0BP,QAA1B,CAAf;AACD,K,2DAlCDS,M,GAAA,kBAAS,CACP,0BAAiFC,kBAAkB,CAAC,KAAKR,KAAN,CAAnG,+CAASS,SAAT,wBAASA,SAAT,CAAoBC,KAApB,wBAAoBA,KAApB,CAA2BT,WAA3B,wBAA2BA,WAA3B,CAA2CU,SAA3C,+HAA0DC,QAA1D,yBAA0DA,QAA1D,CAAuEC,IAAvE,kFACA,KAAKP,KAAL,GAAa,uBAAWM,QAAX,IAAuBA,QAAQ,CAACC,IAAD,CAA/B,GAAwCD,QAArD,CACA,OAAO,4BAAME,cAAN,CAA6D,KAAKR,KAAlE,iBACHS,eAAMC,YAAN,CAAmB,KAAKV,KAAxB,2BACET,GAAG,EAAE,6BAAiB,KAAKS,KAAtB,IAA+B,KAAKT,GAApC,GAA0C,IADjD,EAEEY,SAAS,EAAE,iBAAG,KAAKH,KAAL,CAAWN,KAAX,CAAiBS,SAApB,EAA+BA,SAA/B,CAFb,EAGEC,KAAK,6BACA,KAAKJ,KAAL,CAAWN,KAAX,CAAiBU,KADjB,EAEAA,KAFA,CAHP,IAOKC,SAPL,EADG,GAUH,KAAKL,KAVT,CAWD,C,wBArBgFS,eAAME,S;;;AA4CzF,IAAMT,kBAAkB,GAAG,SAArBA,kBAAqB;AACzBR,KADyB;AAEqC;AAC9D,MAAMkB,MAAM,GAAG,EAAf;AACA,MAAML,IAAI,GAAG,EAAb;;AAEA,OAAK,IAAMM,GAAX,IAAkBnB,KAAlB,EAAyB;AACvB,QAAIoB,YAAY,CAACD,GAAD,CAAhB,EAAuB;AACrB;AACAD,MAAAA,MAAM,CAACC,GAAD,CAAN,GAAcnB,KAAK,CAACmB,GAAD,CAAnB;AACD,KAHD,MAGO;AACL;AACAN,MAAAA,IAAI,CAACM,GAAD,CAAJ,GAAYnB,KAAK,CAACmB,GAAD,CAAjB;AACD;AACF;;AAED,SAAO,CAACD,MAAD,EAASL,IAAT,CAAP;AACD,CAjBD;;AAmBA,IAAMO,YAAY,GAAG,SAAfA,YAAe,CAACC,IAAD,EAAkB;AACrC,UAAQ,IAAR;AACE,SAAKA,IAAI,KAAK,WAAd;AACA,SAAKA,IAAI,KAAK,OAAd;AACA,SAAKA,IAAI,KAAK,aAAd;AACA,SAAKA,IAAI,CAACC,OAAL,CAAa,OAAb,MAA0B,CAA/B,EAAkC;AAChC,aAAO,IAAP;AACF;AACE,aAAO,KAAP,CAPJ;;AASD,CAVD","sourcesContent":["import React from 'react';\n\nimport { isFunction, isRefableElement } from '../../lib/utils';\nimport { cx } from '../../lib/theming/Emotion';\nimport { Nullable } from '../../typings/utility-types';\nimport { getRootNode, rootNode, TSetRootNode, TRootNodeSubscription, isInstanceWithRootNode } from '../../lib/rootNode';\nimport { callChildRef } from '../../lib/callChildRef/callChildRef';\n\nexport interface CommonProps {\n /**\n * HTML-атрибут `class`.\n */\n className?: React.HTMLAttributes<HTMLElement>['className'];\n /**\n * HTML-атрибут `style`.\n */\n style?: React.HTMLAttributes<HTMLElement>['style'];\n /**\n * На равне с data-tid транслируются любые data-атрибуты. Они попадают на корневой элемент.\n */\n 'data-tid'?: string;\n}\n\ninterface CommonPropsRootNodeRef {\n rootNodeRef?: (instance: Nullable<HTMLElement>) => void;\n}\n\nexport type NotCommonProps<P> = Omit<P, keyof CommonProps>;\n\nexport type CommonWrapperProps<P> = P & {\n children: React.ReactNode | ((rest: CommonWrapperRestProps<P>) => React.ReactNode);\n};\nexport type CommonWrapperRestProps<P> = Omit<NotCommonProps<P>, 'children'>;\n\n@rootNode\nexport class CommonWrapper<P extends CommonProps & CommonPropsRootNodeRef> extends React.Component<\n CommonWrapperProps<P> & CommonPropsRootNodeRef\n> {\n private child: React.ReactNode;\n private setRootNode!: TSetRootNode;\n private rootNodeSubscription: Nullable<TRootNodeSubscription> = null;\n\n render() {\n const [{ className, style, rootNodeRef, ...dataProps }, { children, ...rest }] = extractCommonProps(this.props);\n this.child = isFunction(children) ? children(rest) : children;\n return React.isValidElement<CommonProps & React.RefAttributes<any>>(this.child)\n ? React.cloneElement(this.child, {\n ref: isRefableElement(this.child) ? this.ref : null,\n className: cx(this.child.props.className, className),\n style: {\n ...this.child.props.style,\n ...style,\n },\n ...dataProps,\n })\n : this.child;\n }\n\n private ref = (instance: Nullable<React.ReactInstance>) => {\n this.setRootNode(instance);\n this.props.rootNodeRef?.(getRootNode(instance));\n\n // refs are called when instances change\n // so we have to renew or remove old subscription\n this.rootNodeSubscription?.remove();\n this.rootNodeSubscription = null;\n\n if (instance && isInstanceWithRootNode(instance)) {\n this.rootNodeSubscription = instance.addRootNodeChangeListener?.((node) => {\n this.setRootNode(node);\n this.props.rootNodeRef?.(node);\n });\n }\n\n const originalRef = (this.child as React.RefAttributes<any>)?.ref;\n originalRef && callChildRef(originalRef, instance);\n };\n}\n\nconst extractCommonProps = <P extends CommonProps & CommonPropsRootNodeRef>(\n props: P,\n): [CommonProps & CommonPropsRootNodeRef, NotCommonProps<P>] => {\n const common = {} as CommonProps & CommonPropsRootNodeRef;\n const rest = {} as NotCommonProps<P>;\n\n for (const key in props) {\n if (isCommonProp(key)) {\n // @ts-ignore\n common[key] = props[key];\n } else {\n // @ts-ignore\n rest[key] = props[key];\n }\n }\n\n return [common, rest];\n};\n\nconst isCommonProp = (name: string) => {\n switch (true) {\n case name === 'className':\n case name === 'style':\n case name === 'rootNodeRef':\n case name.indexOf('data-') === 0: // все data-атрибуты\n return true;\n default:\n return false;\n }\n};\n"]}
@@ -1,5 +1,6 @@
1
1
  "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.ComboBoxMenu = void 0;var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));var _react = _interopRequireWildcard(require("react"));
2
2
 
3
+ var _utils = require("../../lib/utils");
3
4
  var _decorators = require("../../lib/locale/decorators");
4
5
  var _Menu = require("../Menu");
5
6
  var _MenuItem = require("../../components/MenuItem");
@@ -125,6 +126,10 @@ ComboBoxMenu = (_dec = (0, _decorators.locale)('ComboBox', _locale.CustomComboBo
125
126
 
126
127
 
127
128
 
129
+
130
+
131
+
132
+
128
133
 
129
134
 
130
135
 
@@ -157,5 +162,5 @@ ComboBoxMenu = (_dec = (0, _decorators.locale)('ComboBox', _locale.CustomComboBo
157
162
  function (state) {return renderItem(item, state);}));
158
163
 
159
164
 
160
- };return _this;}var _proto = ComboBoxMenu.prototype;_proto.render = function render() {var _this$props2 = this.props,opened = _this$props2.opened,items = _this$props2.items,totalCount = _this$props2.totalCount,loading = _this$props2.loading,refMenu = _this$props2.refMenu,_this$props2$renderNo = _this$props2.renderNotFound,renderNotFound = _this$props2$renderNo === void 0 ? function () {return notFound;} : _this$props2$renderNo,renderTotalCount = _this$props2.renderTotalCount,maxMenuHeight = _this$props2.maxMenuHeight,requestStatus = _this$props2.requestStatus,isMobile = _this$props2.isMobile;var _this$locale = this.locale,notFound = _this$locale.notFound,errorNetworkButton = _this$locale.errorNetworkButton,errorNetworkMessage = _this$locale.errorNetworkMessage;if (!opened) {return null;}var renderAddButton = null;if (this.props.renderAddButton) {renderAddButton = this.props.renderAddButton();}var maxHeight = isMobile ? 'auto' : maxMenuHeight;if (loading && (!items || !items.length)) {return /*#__PURE__*/_react.default.createElement(_Menu.Menu, { maxHeight: maxHeight, ref: refMenu, disableScrollContainer: isMobile, "data-tid": "ComboBoxMenu__loading" }, /*#__PURE__*/_react.default.createElement(_MenuItem.MenuItem, { disabled: true, isMobile: isMobile }, /*#__PURE__*/_react.default.createElement(_Spinner.Spinner, { type: "mini", dimmed: true })));}if (items === null && requestStatus === _CustomComboBoxTypes.ComboBoxRequestStatus.Failed) {return /*#__PURE__*/_react.default.createElement(_Menu.Menu, { ref: refMenu, maxHeight: maxHeight, disableScrollContainer: isMobile, "data-tid": "ComboBoxMenu__failed" }, /*#__PURE__*/_react.default.createElement(_MenuItem.MenuItem, { disabled: true, key: "message", isMobile: isMobile }, /*#__PURE__*/_react.default.createElement("div", { style: { maxWidth: 300, whiteSpace: 'normal' } }, errorNetworkMessage)), /*#__PURE__*/_react.default.createElement(_MenuItem.MenuItem, { link: true, onClick: this.props.repeatRequest, key: "retry", isMobile: isMobile }, errorNetworkButton));}if ((items == null || items.length === 0) && renderNotFound) {var notFoundValue = renderNotFound();if (renderAddButton) return /*#__PURE__*/_react.default.createElement(_Menu.Menu, { maxHeight: maxHeight, ref: refMenu, disableScrollContainer: isMobile }, renderAddButton);if (notFoundValue) return /*#__PURE__*/_react.default.createElement(_Menu.Menu, { maxHeight: maxHeight, ref: refMenu, disableScrollContainer: isMobile }, /*#__PURE__*/_react.default.createElement(_MenuItem.MenuItem, { "data-tid": "ComboBoxMenu__notFound", disabled: true, isMobile: isMobile }, notFoundValue));return null;}var total = null;var renderedItems = items && items.map(this.renderItem); // @ts-ignore // todo fix checking
165
+ };return _this;}var _proto = ComboBoxMenu.prototype;_proto.render = function render() {var _this$props2 = this.props,opened = _this$props2.opened,items = _this$props2.items,totalCount = _this$props2.totalCount,loading = _this$props2.loading,refMenu = _this$props2.refMenu,_this$props2$renderNo = _this$props2.renderNotFound,renderNotFound = _this$props2$renderNo === void 0 ? function () {return notFound;} : _this$props2$renderNo,renderTotalCount = _this$props2.renderTotalCount,maxMenuHeight = _this$props2.maxMenuHeight,requestStatus = _this$props2.requestStatus,isMobile = _this$props2.isMobile;var _this$locale = this.locale,notFound = _this$locale.notFound,errorNetworkButton = _this$locale.errorNetworkButton,errorNetworkMessage = _this$locale.errorNetworkMessage;if (!opened) {return null;}var renderAddButton = null;if (this.props.renderAddButton) {renderAddButton = this.props.renderAddButton();}var maxHeight = isMobile ? 'auto' : maxMenuHeight;if (loading && (!items || !items.length)) {return /*#__PURE__*/_react.default.createElement(_Menu.Menu, { maxHeight: maxHeight, ref: refMenu, disableScrollContainer: isMobile, "data-tid": "ComboBoxMenu__loading" }, /*#__PURE__*/_react.default.createElement(_MenuItem.MenuItem, { disabled: true, isMobile: isMobile }, /*#__PURE__*/_react.default.createElement(_Spinner.Spinner, { type: "mini", dimmed: true })));}if (items === null && requestStatus === _CustomComboBoxTypes.ComboBoxRequestStatus.Failed) {return /*#__PURE__*/_react.default.createElement(_Menu.Menu, { ref: refMenu, maxHeight: maxHeight, disableScrollContainer: isMobile, "data-tid": "ComboBoxMenu__failed" }, /*#__PURE__*/_react.default.createElement(_MenuItem.MenuItem, { disabled: true, key: "message", isMobile: isMobile }, /*#__PURE__*/_react.default.createElement("div", { style: { maxWidth: 300, whiteSpace: 'normal' } }, errorNetworkMessage)), /*#__PURE__*/_react.default.createElement(_MenuItem.MenuItem, { link: true, onClick: this.props.repeatRequest, key: "retry", isMobile: isMobile }, errorNetworkButton));}if (((0, _utils.isNullable)(items) || items.length === 0) && renderNotFound) {var notFoundValue = renderNotFound();if (renderAddButton) {return /*#__PURE__*/_react.default.createElement(_Menu.Menu, { maxHeight: maxHeight, ref: refMenu, disableScrollContainer: isMobile }, renderAddButton);}if (notFoundValue) {return /*#__PURE__*/_react.default.createElement(_Menu.Menu, { maxHeight: maxHeight, ref: refMenu, disableScrollContainer: isMobile }, /*#__PURE__*/_react.default.createElement(_MenuItem.MenuItem, { "data-tid": "ComboBoxMenu__notFound", disabled: true, isMobile: isMobile }, notFoundValue));}return null;}var total = null;var renderedItems = items && items.map(this.renderItem); // @ts-ignore // todo fix checking
161
166
  var countItems = renderedItems == null ? void 0 : renderedItems.filter(function (item) {var _item$type;return (item == null ? void 0 : (_item$type = item.type) == null ? void 0 : _item$type.__KONTUR_REACT_UI__) === 'MenuItem';}).length;if (countItems && renderTotalCount && totalCount && countItems < totalCount) {total = /*#__PURE__*/_react.default.createElement(_MenuItem.MenuItem, { disabled: true, key: "total", isMobile: isMobile }, /*#__PURE__*/_react.default.createElement("div", { style: { fontSize: 12 } }, renderTotalCount(countItems, totalCount)));}return /*#__PURE__*/_react.default.createElement(_Menu.Menu, { "data-tid": "ComboBoxMenu__items", ref: refMenu, maxHeight: maxHeight, disableScrollContainer: isMobile }, renderedItems, total, renderAddButton && [/*#__PURE__*/_react.default.createElement(_MenuSeparator.MenuSeparator, { key: "separator" }), renderAddButton]);};return ComboBoxMenu;}(_react.Component), _class2.__KONTUR_REACT_UI__ = 'ComboBoxMenu', _class2.defaultProps = { repeatRequest: function repeatRequest() {return undefined;}, requestStatus: _CustomComboBoxTypes.ComboBoxRequestStatus.Unknown }, _temp)) || _class);exports.ComboBoxMenu = ComboBoxMenu;
@@ -1 +1 @@
1
- {"version":3,"sources":["ComboBoxMenu.tsx"],"names":["ComboBoxMenu","CustomComboBoxLocaleHelper","renderItem","item","index","props","onValueChange","React","isValidElement","element","Object","assign","key","onClick","cloneElement","isMobile","state","render","opened","items","totalCount","loading","refMenu","renderNotFound","notFound","renderTotalCount","maxMenuHeight","requestStatus","locale","errorNetworkButton","errorNetworkMessage","renderAddButton","maxHeight","length","ComboBoxRequestStatus","Failed","maxWidth","whiteSpace","repeatRequest","notFoundValue","total","renderedItems","map","countItems","filter","type","__KONTUR_REACT_UI__","fontSize","Component","defaultProps","undefined","Unknown"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\n\nimport { locale } from '../../lib/locale/decorators';\nimport { Menu } from '../Menu';\nimport { MenuItem, MenuItemState } from '../../components/MenuItem';\nimport { Spinner } from '../../components/Spinner';\nimport { Nullable } from '../../typings/utility-types';\nimport { MenuSeparator } from '../../components/MenuSeparator';\n\nimport { ComboBoxRequestStatus } from './CustomComboBoxTypes';\nimport { ComboBoxLocale, CustomComboBoxLocaleHelper } from './locale';\n\nexport interface ComboBoxMenuProps<T> {\n opened?: boolean;\n items?: Nullable<T[]>;\n totalCount?: number;\n loading?: boolean;\n maxMenuHeight?: number | string;\n refMenu?: (menu: Nullable<Menu>) => void;\n renderNotFound?: () => React.ReactNode;\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n renderItem: (item: T, state: MenuItemState) => React.ReactNode;\n onValueChange: (value: T) => any;\n renderAddButton?: () => React.ReactNode;\n caption?: React.ReactNode;\n repeatRequest?: () => void;\n requestStatus?: ComboBoxRequestStatus;\n isMobile?: boolean;\n}\n\n@locale('ComboBox', CustomComboBoxLocaleHelper)\nexport class ComboBoxMenu<T> extends Component<ComboBoxMenuProps<T>> {\n public static __KONTUR_REACT_UI__ = 'ComboBoxMenu';\n\n public static defaultProps = {\n repeatRequest: () => undefined,\n requestStatus: ComboBoxRequestStatus.Unknown,\n };\n\n private readonly locale!: ComboBoxLocale;\n\n public render() {\n const {\n opened,\n items,\n totalCount,\n loading,\n refMenu,\n renderNotFound = () => notFound,\n renderTotalCount,\n maxMenuHeight,\n requestStatus,\n isMobile,\n } = this.props;\n\n const { notFound, errorNetworkButton, errorNetworkMessage } = this.locale;\n\n if (!opened) {\n return null;\n }\n\n let renderAddButton = null;\n if (this.props.renderAddButton) {\n renderAddButton = this.props.renderAddButton();\n }\n\n const maxHeight = isMobile ? 'auto' : maxMenuHeight;\n\n if (loading && (!items || !items.length)) {\n return (\n <Menu maxHeight={maxHeight} ref={refMenu} disableScrollContainer={isMobile} data-tid=\"ComboBoxMenu__loading\">\n <MenuItem disabled isMobile={isMobile}>\n <Spinner type=\"mini\" dimmed />\n </MenuItem>\n </Menu>\n );\n }\n\n if (items === null && requestStatus === ComboBoxRequestStatus.Failed) {\n return (\n <Menu ref={refMenu} maxHeight={maxHeight} disableScrollContainer={isMobile} data-tid=\"ComboBoxMenu__failed\">\n <MenuItem disabled key=\"message\" isMobile={isMobile}>\n <div style={{ maxWidth: 300, whiteSpace: 'normal' }}>{errorNetworkMessage}</div>\n </MenuItem>\n <MenuItem link onClick={this.props.repeatRequest} key=\"retry\" isMobile={isMobile}>\n {errorNetworkButton}\n </MenuItem>\n </Menu>\n );\n }\n\n if ((items == null || items.length === 0) && renderNotFound) {\n const notFoundValue = renderNotFound();\n if (renderAddButton)\n return (\n <Menu maxHeight={maxHeight} ref={refMenu} disableScrollContainer={isMobile}>\n {renderAddButton}\n </Menu>\n );\n if (notFoundValue)\n return (\n <Menu maxHeight={maxHeight} ref={refMenu} disableScrollContainer={isMobile}>\n <MenuItem data-tid=\"ComboBoxMenu__notFound\" disabled isMobile={isMobile}>\n {notFoundValue}\n </MenuItem>\n </Menu>\n );\n return null;\n }\n\n let total = null;\n const renderedItems = items && items.map(this.renderItem);\n // @ts-ignore // todo fix checking\n const countItems = renderedItems?.filter((item) => item?.type?.__KONTUR_REACT_UI__ === 'MenuItem').length;\n\n if (countItems && renderTotalCount && totalCount && countItems < totalCount) {\n total = (\n <MenuItem disabled key=\"total\" isMobile={isMobile}>\n <div style={{ fontSize: 12 }}>{renderTotalCount(countItems, totalCount)}</div>\n </MenuItem>\n );\n }\n\n return (\n <Menu data-tid=\"ComboBoxMenu__items\" ref={refMenu} maxHeight={maxHeight} disableScrollContainer={isMobile}>\n {renderedItems}\n {total}\n {renderAddButton && [<MenuSeparator key=\"separator\" />, renderAddButton]}\n </Menu>\n );\n }\n\n private renderItem = (item: T, index: number): React.ReactNode => {\n // NOTE this is undesireable feature, better\n // to remove it from further versions\n const { renderItem, onValueChange } = this.props;\n if (typeof item === 'function' || React.isValidElement(item)) {\n // @ts-ignore\n const element = typeof item === 'function' ? item() : item;\n const props = Object.assign(\n {\n key: index,\n onClick: () => onValueChange(element.props),\n },\n element.props,\n );\n return React.cloneElement(element, props);\n }\n\n return (\n <MenuItem\n data-tid=\"ComboBoxMenu__item\"\n onClick={() => onValueChange(item)}\n key={index}\n isMobile={this.props.isMobile}\n >\n {(state) => renderItem(item, state)}\n </MenuItem>\n );\n };\n}\n"]}
1
+ {"version":3,"sources":["ComboBoxMenu.tsx"],"names":["ComboBoxMenu","CustomComboBoxLocaleHelper","renderItem","item","index","props","onValueChange","React","isValidElement","element","Object","assign","key","onClick","cloneElement","isMobile","state","render","opened","items","totalCount","loading","refMenu","renderNotFound","notFound","renderTotalCount","maxMenuHeight","requestStatus","locale","errorNetworkButton","errorNetworkMessage","renderAddButton","maxHeight","length","ComboBoxRequestStatus","Failed","maxWidth","whiteSpace","repeatRequest","notFoundValue","total","renderedItems","map","countItems","filter","type","__KONTUR_REACT_UI__","fontSize","Component","defaultProps","undefined","Unknown"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\n\nimport { isNullable } from '../../lib/utils';\nimport { locale } from '../../lib/locale/decorators';\nimport { Menu } from '../Menu';\nimport { MenuItem, MenuItemState } from '../../components/MenuItem';\nimport { Spinner } from '../../components/Spinner';\nimport { Nullable } from '../../typings/utility-types';\nimport { MenuSeparator } from '../../components/MenuSeparator';\n\nimport { ComboBoxRequestStatus } from './CustomComboBoxTypes';\nimport { ComboBoxLocale, CustomComboBoxLocaleHelper } from './locale';\n\nexport interface ComboBoxMenuProps<T> {\n opened?: boolean;\n items?: Nullable<T[]>;\n totalCount?: number;\n loading?: boolean;\n maxMenuHeight?: number | string;\n refMenu?: (menu: Nullable<Menu>) => void;\n renderNotFound?: () => React.ReactNode;\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n renderItem: (item: T, state: MenuItemState) => React.ReactNode;\n onValueChange: (value: T) => any;\n renderAddButton?: () => React.ReactNode;\n caption?: React.ReactNode;\n repeatRequest?: () => void;\n requestStatus?: ComboBoxRequestStatus;\n isMobile?: boolean;\n}\n\n@locale('ComboBox', CustomComboBoxLocaleHelper)\nexport class ComboBoxMenu<T> extends Component<ComboBoxMenuProps<T>> {\n public static __KONTUR_REACT_UI__ = 'ComboBoxMenu';\n\n public static defaultProps = {\n repeatRequest: () => undefined,\n requestStatus: ComboBoxRequestStatus.Unknown,\n };\n\n private readonly locale!: ComboBoxLocale;\n\n public render() {\n const {\n opened,\n items,\n totalCount,\n loading,\n refMenu,\n renderNotFound = () => notFound,\n renderTotalCount,\n maxMenuHeight,\n requestStatus,\n isMobile,\n } = this.props;\n\n const { notFound, errorNetworkButton, errorNetworkMessage } = this.locale;\n\n if (!opened) {\n return null;\n }\n\n let renderAddButton = null;\n if (this.props.renderAddButton) {\n renderAddButton = this.props.renderAddButton();\n }\n\n const maxHeight = isMobile ? 'auto' : maxMenuHeight;\n\n if (loading && (!items || !items.length)) {\n return (\n <Menu maxHeight={maxHeight} ref={refMenu} disableScrollContainer={isMobile} data-tid=\"ComboBoxMenu__loading\">\n <MenuItem disabled isMobile={isMobile}>\n <Spinner type=\"mini\" dimmed />\n </MenuItem>\n </Menu>\n );\n }\n\n if (items === null && requestStatus === ComboBoxRequestStatus.Failed) {\n return (\n <Menu ref={refMenu} maxHeight={maxHeight} disableScrollContainer={isMobile} data-tid=\"ComboBoxMenu__failed\">\n <MenuItem disabled key=\"message\" isMobile={isMobile}>\n <div style={{ maxWidth: 300, whiteSpace: 'normal' }}>{errorNetworkMessage}</div>\n </MenuItem>\n <MenuItem link onClick={this.props.repeatRequest} key=\"retry\" isMobile={isMobile}>\n {errorNetworkButton}\n </MenuItem>\n </Menu>\n );\n }\n\n if ((isNullable(items) || items.length === 0) && renderNotFound) {\n const notFoundValue = renderNotFound();\n if (renderAddButton) {\n return (\n <Menu maxHeight={maxHeight} ref={refMenu} disableScrollContainer={isMobile}>\n {renderAddButton}\n </Menu>\n );\n }\n\n if (notFoundValue) {\n return (\n <Menu maxHeight={maxHeight} ref={refMenu} disableScrollContainer={isMobile}>\n <MenuItem data-tid=\"ComboBoxMenu__notFound\" disabled isMobile={isMobile}>\n {notFoundValue}\n </MenuItem>\n </Menu>\n );\n }\n\n return null;\n }\n\n let total = null;\n const renderedItems = items && items.map(this.renderItem);\n // @ts-ignore // todo fix checking\n const countItems = renderedItems?.filter((item) => item?.type?.__KONTUR_REACT_UI__ === 'MenuItem').length;\n\n if (countItems && renderTotalCount && totalCount && countItems < totalCount) {\n total = (\n <MenuItem disabled key=\"total\" isMobile={isMobile}>\n <div style={{ fontSize: 12 }}>{renderTotalCount(countItems, totalCount)}</div>\n </MenuItem>\n );\n }\n\n return (\n <Menu data-tid=\"ComboBoxMenu__items\" ref={refMenu} maxHeight={maxHeight} disableScrollContainer={isMobile}>\n {renderedItems}\n {total}\n {renderAddButton && [<MenuSeparator key=\"separator\" />, renderAddButton]}\n </Menu>\n );\n }\n\n private renderItem = (item: T, index: number): React.ReactNode => {\n // NOTE this is undesireable feature, better\n // to remove it from further versions\n const { renderItem, onValueChange } = this.props;\n if (typeof item === 'function' || React.isValidElement(item)) {\n // @ts-ignore\n const element = typeof item === 'function' ? item() : item;\n const props = Object.assign(\n {\n key: index,\n onClick: () => onValueChange(element.props),\n },\n element.props,\n );\n return React.cloneElement(element, props);\n }\n\n return (\n <MenuItem\n data-tid=\"ComboBoxMenu__item\"\n onClick={() => onValueChange(item)}\n key={index}\n isMobile={this.props.isMobile}\n >\n {(state) => renderItem(item, state)}\n </MenuItem>\n );\n };\n}\n"]}
@@ -315,6 +315,7 @@ CustomComboBox = (0, _decorator.responsiveLayout)(_class = (0, _rootNode.rootNod
315
315
 
316
316
 
317
317
 
318
+
318
319
 
319
320
 
320
321
  dispatch = function (action) {
@@ -347,7 +348,7 @@ CustomComboBox = (0, _decorator.responsiveLayout)(_class = (0, _rootNode.rootNod
347
348
  _this.dispatch({
348
349
  type: 'ValueChange',
349
350
  value: value,
350
- keepFocus: _this.isMobileLayout ? false : true });
351
+ keepFocus: !_this.isMobileLayout });
351
352
 
352
353
  };_this.
353
354
 
@@ -400,7 +401,7 @@ CustomComboBox = (0, _decorator.responsiveLayout)(_class = (0, _rootNode.rootNod
400
401
  }
401
402
  };return _this;}var _proto = CustomComboBox.prototype; /**
402
403
  * @public
403
- */_proto.search = /*#__PURE__*/function () {var _search = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(query) {var _this2 = this;var getItems, cancelPromise, expectingId, items;return _regenerator.default.wrap(function _callee$(_context) {while (1) {switch (_context.prev = _context.next) {case 0:if (query === void 0) {query = this.state.textValue;}getItems = this.props.getItems;cancelPromise = new Promise(function (_, reject) {return _this2.cancelationToken = reject;});expectingId = this.requestId += 1;if (!this.loaderShowDelay) {this.loaderShowDelay = new Promise(function (resolve) {var cancelLoader = (0, _utils.taskWithDelay)(function () {_this2.dispatch({ type: 'RequestItems' });setTimeout(resolve, LOADER_SHOW_TIME);}, DELAY_BEFORE_SHOW_LOADER);cancelPromise.catch(function () {return cancelLoader();});_this2.cancelLoaderDelay = function () {cancelLoader();resolve();};});}_context.prev = 5;_context.next = 8;return Promise.race([getItems(query), cancelPromise]);case 8:items = _context.sent;if (!this.state.loading) {_context.next = 12;break;}_context.next = 12;return Promise.race([this.loaderShowDelay, cancelPromise]);case 12:if (expectingId === this.requestId) {this.dispatch({ type: 'ReceiveItems', items: items });}_context.next = 18;break;case 15:_context.prev = 15;_context.t0 = _context["catch"](5);if (_context.t0 && _context.t0.code === 'CancelationError') {this.dispatch({ type: 'CancelRequest' });} else if (expectingId === this.requestId) {this.dispatch({ type: 'RequestFailure', repeatRequest: function repeatRequest() {_this2.search(query);if (_this2.input) {_this2.input.focus();}} });}case 18:_context.prev = 18;if (expectingId === this.requestId) {if (!this.state.loading) {this.cancelLoaderDelay();}this.cancelationToken = null;this.loaderShowDelay = null;}return _context.finish(18);case 21:case "end":return _context.stop();}}}, _callee, this, [[5, 15, 18, 21]]);}));function search(_x) {return _search.apply(this, arguments);}return search;}() /**
404
+ */_proto.search = /*#__PURE__*/function () {var _search = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(query) {var _this2 = this;var getItems, cancelPromise, expectingId, items;return _regenerator.default.wrap(function _callee$(_context) {while (1) {switch (_context.prev = _context.next) {case 0:if (query === void 0) {query = this.state.textValue;}getItems = this.props.getItems;cancelPromise = new Promise(function (_, reject) {return _this2.cancelationToken = reject;});this.requestId += 1;expectingId = this.requestId;if (!this.loaderShowDelay) {this.loaderShowDelay = new Promise(function (resolve) {var cancelLoader = (0, _utils.taskWithDelay)(function () {_this2.dispatch({ type: 'RequestItems' });setTimeout(resolve, LOADER_SHOW_TIME);}, DELAY_BEFORE_SHOW_LOADER);cancelPromise.catch(function () {return cancelLoader();});_this2.cancelLoaderDelay = function () {cancelLoader();resolve();};});}_context.prev = 6;_context.next = 9;return Promise.race([getItems(query), cancelPromise]);case 9:items = _context.sent;if (!this.state.loading) {_context.next = 13;break;}_context.next = 13;return Promise.race([this.loaderShowDelay, cancelPromise]);case 13:if (expectingId === this.requestId) {this.dispatch({ type: 'ReceiveItems', items: items });}_context.next = 19;break;case 16:_context.prev = 16;_context.t0 = _context["catch"](6);if (_context.t0 && _context.t0.code === 'CancelationError') {this.dispatch({ type: 'CancelRequest' });} else if (expectingId === this.requestId) {this.dispatch({ type: 'RequestFailure', repeatRequest: function repeatRequest() {_this2.search(query);if (_this2.input) {_this2.input.focus();}} });}case 19:_context.prev = 19;if (expectingId === this.requestId) {if (!this.state.loading) {this.cancelLoaderDelay();}this.cancelationToken = null;this.loaderShowDelay = null;}return _context.finish(19);case 22:case "end":return _context.stop();}}}, _callee, this, [[6, 16, 19, 22]]);}));function search(_x) {return _search.apply(this, arguments);}return search;}() /**
404
405
  * @public
405
406
  */;_proto.cancelSearch = function cancelSearch() {if (this.cancelationToken) {this.cancelationToken(new _utils.CancelationError());}} /**
406
407
  * @public
@@ -1 +1 @@
1
- {"version":3,"sources":["CustomComboBox.tsx"],"names":["DELAY_BEFORE_SHOW_LOADER","LOADER_SHOW_TIME","DefaultState","inputChanged","editing","items","loading","opened","focused","textValue","repeatRequest","undefined","requestStatus","ComboBoxRequestStatus","Unknown","CustomComboBox","responsiveLayout","rootNode","state","requestId","cancelationToken","reducer","cancelLoaderDelay","focus","props","disabled","input","inputLikeText","selectInputText","selectAll","blur","handleBlur","dispatch","action","effects","nextState","setState","stateAndEffect","Array","forEach","handleEffect","effect","getState","getProps","handleValueChange","value","type","keepFocus","isMobileLayout","handleFocus","handleClickOutside","e","close","setTimeout","handleInputBlur","handleInputClick","search","query","getItems","cancelPromise","Promise","_","reject","expectingId","loaderShowDelay","resolve","cancelLoader","catch","race","code","cancelSearch","CancelationError","open","render","viewProps","align","borderless","disablePortal","error","menuAlign","drawArrow","placeholder","size","totalCount","warning","width","maxLength","maxMenuHeight","leftIcon","rightIcon","inputMode","onValueChange","onClickOutside","onFocus","onFocusOutside","onInputBlur","onInputValueChange","onInputFocus","onInputClick","onInputKeyDown","event","persist","onMouseEnter","onMouseOver","onMouseLeave","renderItem","renderNotFound","renderValue","renderTotalCount","renderAddButton","refInput","refMenu","menu","refInputLikeText","setRootNode","componentDidMount","autoFocus","componentDidUpdate","prevProps","prevState","reset","React","PureComponent","__KONTUR_REACT_UI__"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { Nullable } from '../../typings/utility-types';\nimport { Input, InputIconType } from '../../components/Input';\nimport { Menu } from '../Menu';\nimport { InputLikeText } from '../InputLikeText';\nimport { MenuItemState } from '../../components/MenuItem';\nimport { CancelationError, taskWithDelay } from '../../lib/utils';\nimport { fixClickFocusIE } from '../../lib/events/fixClickFocusIE';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { ComboBoxRequestStatus } from './CustomComboBoxTypes';\nimport { CustomComboBoxAction, CustomComboBoxEffect, reducer } from './CustomComboBoxReducer';\nimport { ComboBoxView } from './ComboBoxView';\n\nexport interface CustomComboBoxProps<T> extends CommonProps {\n align?: 'left' | 'center' | 'right';\n autoFocus?: boolean;\n borderless?: boolean;\n disablePortal?: boolean;\n disabled?: boolean;\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n maxLength?: number;\n menuAlign?: 'left' | 'right';\n drawArrow?: boolean;\n leftIcon?: InputIconType;\n rightIcon?: InputIconType;\n searchOnFocus?: boolean;\n onValueChange?: (value: T) => void;\n onInputValueChange?: (value: string) => Nullable<string> | void;\n onUnexpectedInput?: (value: string) => void | null | T;\n onFocus?: () => void;\n onBlur?: () => void;\n onMouseEnter?: (e: React.MouseEvent) => void;\n onMouseOver?: (e: React.MouseEvent) => void;\n onMouseLeave?: (e: React.MouseEvent) => void;\n onInputKeyDown?: (e: React.KeyboardEvent<HTMLElement>) => void;\n placeholder?: string;\n size?: 'small' | 'medium' | 'large';\n totalCount?: number;\n value?: Nullable<T>;\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n width?: string | number;\n maxMenuHeight?: number | string;\n renderNotFound?: () => React.ReactNode;\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n renderItem: (item: T, state?: MenuItemState) => React.ReactNode;\n renderValue: (value: T) => React.ReactNode;\n renderAddButton?: (query?: string) => React.ReactNode;\n valueToString: (value: T) => string;\n itemToValue: (item: T) => string | number;\n getItems: (query: string) => Promise<T[]>;\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode'];\n}\n\nexport interface CustomComboBoxState<T> {\n editing: boolean;\n loading: boolean;\n opened: boolean;\n textValue: string;\n items: Nullable<T[]>;\n inputChanged: boolean;\n focused: boolean;\n repeatRequest: () => void;\n requestStatus: ComboBoxRequestStatus;\n}\n\nexport const DELAY_BEFORE_SHOW_LOADER = 300;\nexport const LOADER_SHOW_TIME = 1000;\n\nexport const DefaultState = {\n inputChanged: false,\n editing: false,\n items: null,\n loading: false,\n opened: false,\n focused: false,\n textValue: '',\n repeatRequest: () => undefined,\n requestStatus: ComboBoxRequestStatus.Unknown,\n};\n\n@responsiveLayout\n@rootNode\nexport class CustomComboBox<T> extends React.PureComponent<CustomComboBoxProps<T>, CustomComboBoxState<T>> {\n public static __KONTUR_REACT_UI__ = 'CustomComboBox';\n\n public state: CustomComboBoxState<T> = DefaultState;\n public input: Nullable<Input>;\n public menu: Nullable<Menu>;\n public inputLikeText: Nullable<InputLikeText>;\n public requestId = 0;\n public loaderShowDelay: Nullable<Promise<void>>;\n private focused = false;\n private cancelationToken: Nullable<(reason?: Error) => void> = null;\n private isMobileLayout!: boolean;\n\n private reducer = reducer;\n public cancelLoaderDelay: () => void = () => null;\n\n /**\n * @public\n */\n public focus = () => {\n if (this.props.disabled) {\n return;\n }\n\n if (this.input) {\n this.input.focus();\n } else if (this.inputLikeText) {\n this.inputLikeText.focus();\n }\n };\n\n /**\n * @public\n */\n public selectInputText = () => {\n if (this.props.disabled) {\n return;\n }\n if (this.input) {\n this.input.selectAll();\n }\n };\n\n /**\n * @public\n */\n public blur = () => {\n if (this.props.disabled) {\n return;\n }\n\n this.handleBlur();\n };\n private setRootNode!: TSetRootNode;\n\n /**\n * @public\n */\n public async search(query: string = this.state.textValue) {\n const { getItems } = this.props;\n\n const cancelPromise: Promise<never> = new Promise((_, reject) => (this.cancelationToken = reject));\n const expectingId = (this.requestId += 1);\n\n if (!this.loaderShowDelay) {\n this.loaderShowDelay = new Promise<void>((resolve) => {\n const cancelLoader = taskWithDelay(() => {\n this.dispatch({ type: 'RequestItems' });\n setTimeout(resolve, LOADER_SHOW_TIME);\n }, DELAY_BEFORE_SHOW_LOADER);\n\n cancelPromise.catch(() => cancelLoader());\n\n this.cancelLoaderDelay = () => {\n cancelLoader();\n resolve();\n };\n });\n }\n\n try {\n const items = await Promise.race([getItems(query), cancelPromise]);\n if (this.state.loading) {\n await Promise.race([this.loaderShowDelay, cancelPromise]);\n }\n if (expectingId === this.requestId) {\n this.dispatch({\n type: 'ReceiveItems',\n items,\n });\n }\n } catch (error) {\n if (error && error.code === 'CancelationError') {\n this.dispatch({ type: 'CancelRequest' });\n } else if (expectingId === this.requestId) {\n this.dispatch({\n type: 'RequestFailure',\n repeatRequest: () => {\n this.search(query);\n if (this.input) {\n this.input.focus();\n }\n },\n });\n }\n } finally {\n if (expectingId === this.requestId) {\n if (!this.state.loading) {\n this.cancelLoaderDelay();\n }\n this.cancelationToken = null;\n this.loaderShowDelay = null;\n }\n }\n }\n\n /**\n * @public\n */\n public cancelSearch() {\n if (this.cancelationToken) {\n this.cancelationToken(new CancelationError());\n }\n }\n\n /**\n * @public\n */\n public open() {\n this.dispatch({ type: 'Open' });\n }\n\n /**\n * @public\n */\n public close() {\n this.dispatch({ type: 'Close' });\n }\n\n public render() {\n const viewProps = {\n align: this.props.align,\n borderless: this.props.borderless,\n disabled: this.props.disabled,\n disablePortal: this.props.disablePortal,\n editing: this.state.editing,\n error: this.props.error,\n items: this.state.items,\n loading: this.state.loading,\n menuAlign: this.props.menuAlign,\n opened: this.state.opened,\n drawArrow: this.props.drawArrow,\n placeholder: this.props.placeholder,\n size: this.props.size,\n textValue: this.state.textValue,\n totalCount: this.props.totalCount,\n value: this.props.value,\n warning: this.props.warning,\n width: this.props.width,\n maxLength: this.props.maxLength,\n maxMenuHeight: this.props.maxMenuHeight,\n leftIcon: this.props.leftIcon,\n rightIcon: this.props.rightIcon,\n inputMode: this.props.inputMode,\n\n onValueChange: this.handleValueChange,\n onClickOutside: this.handleClickOutside,\n onFocus: this.handleFocus,\n onFocusOutside: this.handleBlur,\n onInputBlur: this.handleInputBlur,\n onInputValueChange: (value: string) => this.dispatch({ type: 'TextChange', value }),\n onInputFocus: this.handleFocus,\n onInputClick: this.handleInputClick,\n onInputKeyDown: (event: React.KeyboardEvent) => {\n event.persist();\n this.dispatch({ type: 'KeyPress', event });\n },\n onMouseEnter: this.props.onMouseEnter,\n onMouseOver: this.props.onMouseOver,\n onMouseLeave: this.props.onMouseLeave,\n renderItem: this.props.renderItem,\n renderNotFound: this.props.renderNotFound,\n renderValue: this.props.renderValue,\n renderTotalCount: this.props.renderTotalCount,\n renderAddButton: this.props.renderAddButton,\n repeatRequest: this.state.repeatRequest,\n requestStatus: this.state.requestStatus,\n\n refInput: (input: Nullable<Input>) => {\n this.input = input;\n },\n refMenu: (menu: Nullable<Menu>) => {\n this.menu = menu;\n },\n refInputLikeText: (inputLikeText: Nullable<InputLikeText>) => {\n this.inputLikeText = inputLikeText;\n },\n };\n\n return (\n <CommonWrapper {...this.props}>\n <ComboBoxView {...viewProps} ref={this.setRootNode} />\n </CommonWrapper>\n );\n }\n\n public componentDidMount() {\n this.dispatch({ type: 'Mount' });\n if (this.props.autoFocus) {\n this.focus();\n }\n }\n\n public componentDidUpdate(prevProps: CustomComboBoxProps<T>, prevState: CustomComboBoxState<T>) {\n if (prevState.editing && !this.state.editing) {\n this.handleBlur();\n }\n this.dispatch({ type: 'DidUpdate', prevProps, prevState });\n }\n\n /**\n * @public\n */\n public reset() {\n this.dispatch({ type: 'Reset' });\n }\n\n private dispatch = (action: CustomComboBoxAction<T>) => {\n let effects: Array<CustomComboBoxEffect<T>>;\n let nextState: Pick<CustomComboBoxState<T>, never>;\n\n this.setState(\n (state) => {\n const stateAndEffect = this.reducer(state, this.props, action);\n\n [nextState, effects] = stateAndEffect instanceof Array ? stateAndEffect : [stateAndEffect, []];\n\n return nextState;\n },\n () => {\n effects.forEach(this.handleEffect);\n },\n );\n };\n\n private handleEffect = (effect: CustomComboBoxEffect<T>) => {\n effect(this.dispatch, this.getState, this.getProps, () => this);\n };\n\n private getProps = () => this.props;\n\n private getState = () => this.state;\n\n private handleValueChange = (value: T) => {\n this.dispatch({\n type: 'ValueChange',\n value,\n keepFocus: this.isMobileLayout ? false : true,\n });\n };\n\n private handleFocus = () => {\n if (this.focused) {\n return;\n }\n this.focused = true;\n this.dispatch({ type: 'Focus' });\n };\n\n private handleClickOutside = (e: Event) => {\n fixClickFocusIE(e);\n this.handleBlur();\n };\n\n private handleBlur = () => {\n if (!this.focused) {\n if (this.state.opened) {\n this.close();\n }\n return;\n }\n\n this.focused = false;\n // workaround for the similar bug with focusout\n // in Firefox, Chrome and IE\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1363964\n setTimeout(() => {\n this.dispatch({ type: 'Blur' });\n });\n };\n\n private handleInputBlur = () => {\n // If menu opened, RenderLayer is active and\n // it would call handleFocusOutside\n // In that way handleBlur would be called\n\n // TODO: add check for mobile layout, to call `handleBlur`\n\n if (this.state.opened) {\n return;\n }\n this.handleBlur();\n };\n\n private handleInputClick = () => {\n if (!this.cancelationToken) {\n this.dispatch({ type: 'InputClick' });\n }\n };\n}\n"]}
1
+ {"version":3,"sources":["CustomComboBox.tsx"],"names":["DELAY_BEFORE_SHOW_LOADER","LOADER_SHOW_TIME","DefaultState","inputChanged","editing","items","loading","opened","focused","textValue","repeatRequest","undefined","requestStatus","ComboBoxRequestStatus","Unknown","CustomComboBox","responsiveLayout","rootNode","state","requestId","cancelationToken","reducer","cancelLoaderDelay","focus","props","disabled","input","inputLikeText","selectInputText","selectAll","blur","handleBlur","dispatch","action","effects","nextState","setState","stateAndEffect","Array","forEach","handleEffect","effect","getState","getProps","handleValueChange","value","type","keepFocus","isMobileLayout","handleFocus","handleClickOutside","e","close","setTimeout","handleInputBlur","handleInputClick","search","query","getItems","cancelPromise","Promise","_","reject","expectingId","loaderShowDelay","resolve","cancelLoader","catch","race","code","cancelSearch","CancelationError","open","render","viewProps","align","borderless","disablePortal","error","menuAlign","drawArrow","placeholder","size","totalCount","warning","width","maxLength","maxMenuHeight","leftIcon","rightIcon","inputMode","onValueChange","onClickOutside","onFocus","onFocusOutside","onInputBlur","onInputValueChange","onInputFocus","onInputClick","onInputKeyDown","event","persist","onMouseEnter","onMouseOver","onMouseLeave","renderItem","renderNotFound","renderValue","renderTotalCount","renderAddButton","refInput","refMenu","menu","refInputLikeText","setRootNode","componentDidMount","autoFocus","componentDidUpdate","prevProps","prevState","reset","React","PureComponent","__KONTUR_REACT_UI__"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { Nullable } from '../../typings/utility-types';\nimport { Input, InputIconType } from '../../components/Input';\nimport { Menu } from '../Menu';\nimport { InputLikeText } from '../InputLikeText';\nimport { MenuItemState } from '../../components/MenuItem';\nimport { CancelationError, taskWithDelay } from '../../lib/utils';\nimport { fixClickFocusIE } from '../../lib/events/fixClickFocusIE';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { ComboBoxRequestStatus } from './CustomComboBoxTypes';\nimport { CustomComboBoxAction, CustomComboBoxEffect, reducer } from './CustomComboBoxReducer';\nimport { ComboBoxView } from './ComboBoxView';\n\nexport interface CustomComboBoxProps<T> extends CommonProps {\n align?: 'left' | 'center' | 'right';\n autoFocus?: boolean;\n borderless?: boolean;\n disablePortal?: boolean;\n disabled?: boolean;\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n maxLength?: number;\n menuAlign?: 'left' | 'right';\n drawArrow?: boolean;\n leftIcon?: InputIconType;\n rightIcon?: InputIconType;\n searchOnFocus?: boolean;\n onValueChange?: (value: T) => void;\n onInputValueChange?: (value: string) => Nullable<string> | void;\n onUnexpectedInput?: (value: string) => void | null | T;\n onFocus?: () => void;\n onBlur?: () => void;\n onMouseEnter?: (e: React.MouseEvent) => void;\n onMouseOver?: (e: React.MouseEvent) => void;\n onMouseLeave?: (e: React.MouseEvent) => void;\n onInputKeyDown?: (e: React.KeyboardEvent<HTMLElement>) => void;\n placeholder?: string;\n size?: 'small' | 'medium' | 'large';\n totalCount?: number;\n value?: Nullable<T>;\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n width?: string | number;\n maxMenuHeight?: number | string;\n renderNotFound?: () => React.ReactNode;\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n renderItem: (item: T, state?: MenuItemState) => React.ReactNode;\n renderValue: (value: T) => React.ReactNode;\n renderAddButton?: (query?: string) => React.ReactNode;\n valueToString: (value: T) => string;\n itemToValue: (item: T) => string | number;\n getItems: (query: string) => Promise<T[]>;\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode'];\n}\n\nexport interface CustomComboBoxState<T> {\n editing: boolean;\n loading: boolean;\n opened: boolean;\n textValue: string;\n items: Nullable<T[]>;\n inputChanged: boolean;\n focused: boolean;\n repeatRequest: () => void;\n requestStatus: ComboBoxRequestStatus;\n}\n\nexport const DELAY_BEFORE_SHOW_LOADER = 300;\nexport const LOADER_SHOW_TIME = 1000;\n\nexport const DefaultState = {\n inputChanged: false,\n editing: false,\n items: null,\n loading: false,\n opened: false,\n focused: false,\n textValue: '',\n repeatRequest: () => undefined,\n requestStatus: ComboBoxRequestStatus.Unknown,\n};\n\n@responsiveLayout\n@rootNode\nexport class CustomComboBox<T> extends React.PureComponent<CustomComboBoxProps<T>, CustomComboBoxState<T>> {\n public static __KONTUR_REACT_UI__ = 'CustomComboBox';\n\n public state: CustomComboBoxState<T> = DefaultState;\n public input: Nullable<Input>;\n public menu: Nullable<Menu>;\n public inputLikeText: Nullable<InputLikeText>;\n public requestId = 0;\n public loaderShowDelay: Nullable<Promise<void>>;\n private focused = false;\n private cancelationToken: Nullable<(reason?: Error) => void> = null;\n private isMobileLayout!: boolean;\n\n private reducer = reducer;\n public cancelLoaderDelay: () => void = () => null;\n\n /**\n * @public\n */\n public focus = () => {\n if (this.props.disabled) {\n return;\n }\n\n if (this.input) {\n this.input.focus();\n } else if (this.inputLikeText) {\n this.inputLikeText.focus();\n }\n };\n\n /**\n * @public\n */\n public selectInputText = () => {\n if (this.props.disabled) {\n return;\n }\n if (this.input) {\n this.input.selectAll();\n }\n };\n\n /**\n * @public\n */\n public blur = () => {\n if (this.props.disabled) {\n return;\n }\n\n this.handleBlur();\n };\n private setRootNode!: TSetRootNode;\n\n /**\n * @public\n */\n public async search(query: string = this.state.textValue) {\n const { getItems } = this.props;\n\n const cancelPromise: Promise<never> = new Promise((_, reject) => (this.cancelationToken = reject));\n this.requestId += 1;\n const expectingId = this.requestId;\n\n if (!this.loaderShowDelay) {\n this.loaderShowDelay = new Promise<void>((resolve) => {\n const cancelLoader = taskWithDelay(() => {\n this.dispatch({ type: 'RequestItems' });\n setTimeout(resolve, LOADER_SHOW_TIME);\n }, DELAY_BEFORE_SHOW_LOADER);\n\n cancelPromise.catch(() => cancelLoader());\n\n this.cancelLoaderDelay = () => {\n cancelLoader();\n resolve();\n };\n });\n }\n\n try {\n const items = await Promise.race([getItems(query), cancelPromise]);\n if (this.state.loading) {\n await Promise.race([this.loaderShowDelay, cancelPromise]);\n }\n if (expectingId === this.requestId) {\n this.dispatch({\n type: 'ReceiveItems',\n items,\n });\n }\n } catch (error) {\n if (error && error.code === 'CancelationError') {\n this.dispatch({ type: 'CancelRequest' });\n } else if (expectingId === this.requestId) {\n this.dispatch({\n type: 'RequestFailure',\n repeatRequest: () => {\n this.search(query);\n if (this.input) {\n this.input.focus();\n }\n },\n });\n }\n } finally {\n if (expectingId === this.requestId) {\n if (!this.state.loading) {\n this.cancelLoaderDelay();\n }\n this.cancelationToken = null;\n this.loaderShowDelay = null;\n }\n }\n }\n\n /**\n * @public\n */\n public cancelSearch() {\n if (this.cancelationToken) {\n this.cancelationToken(new CancelationError());\n }\n }\n\n /**\n * @public\n */\n public open() {\n this.dispatch({ type: 'Open' });\n }\n\n /**\n * @public\n */\n public close() {\n this.dispatch({ type: 'Close' });\n }\n\n public render() {\n const viewProps = {\n align: this.props.align,\n borderless: this.props.borderless,\n disabled: this.props.disabled,\n disablePortal: this.props.disablePortal,\n editing: this.state.editing,\n error: this.props.error,\n items: this.state.items,\n loading: this.state.loading,\n menuAlign: this.props.menuAlign,\n opened: this.state.opened,\n drawArrow: this.props.drawArrow,\n placeholder: this.props.placeholder,\n size: this.props.size,\n textValue: this.state.textValue,\n totalCount: this.props.totalCount,\n value: this.props.value,\n warning: this.props.warning,\n width: this.props.width,\n maxLength: this.props.maxLength,\n maxMenuHeight: this.props.maxMenuHeight,\n leftIcon: this.props.leftIcon,\n rightIcon: this.props.rightIcon,\n inputMode: this.props.inputMode,\n\n onValueChange: this.handleValueChange,\n onClickOutside: this.handleClickOutside,\n onFocus: this.handleFocus,\n onFocusOutside: this.handleBlur,\n onInputBlur: this.handleInputBlur,\n onInputValueChange: (value: string) => this.dispatch({ type: 'TextChange', value }),\n onInputFocus: this.handleFocus,\n onInputClick: this.handleInputClick,\n onInputKeyDown: (event: React.KeyboardEvent) => {\n event.persist();\n this.dispatch({ type: 'KeyPress', event });\n },\n onMouseEnter: this.props.onMouseEnter,\n onMouseOver: this.props.onMouseOver,\n onMouseLeave: this.props.onMouseLeave,\n renderItem: this.props.renderItem,\n renderNotFound: this.props.renderNotFound,\n renderValue: this.props.renderValue,\n renderTotalCount: this.props.renderTotalCount,\n renderAddButton: this.props.renderAddButton,\n repeatRequest: this.state.repeatRequest,\n requestStatus: this.state.requestStatus,\n\n refInput: (input: Nullable<Input>) => {\n this.input = input;\n },\n refMenu: (menu: Nullable<Menu>) => {\n this.menu = menu;\n },\n refInputLikeText: (inputLikeText: Nullable<InputLikeText>) => {\n this.inputLikeText = inputLikeText;\n },\n };\n\n return (\n <CommonWrapper {...this.props}>\n <ComboBoxView {...viewProps} ref={this.setRootNode} />\n </CommonWrapper>\n );\n }\n\n public componentDidMount() {\n this.dispatch({ type: 'Mount' });\n if (this.props.autoFocus) {\n this.focus();\n }\n }\n\n public componentDidUpdate(prevProps: CustomComboBoxProps<T>, prevState: CustomComboBoxState<T>) {\n if (prevState.editing && !this.state.editing) {\n this.handleBlur();\n }\n this.dispatch({ type: 'DidUpdate', prevProps, prevState });\n }\n\n /**\n * @public\n */\n public reset() {\n this.dispatch({ type: 'Reset' });\n }\n\n private dispatch = (action: CustomComboBoxAction<T>) => {\n let effects: Array<CustomComboBoxEffect<T>>;\n let nextState: Pick<CustomComboBoxState<T>, never>;\n\n this.setState(\n (state) => {\n const stateAndEffect = this.reducer(state, this.props, action);\n\n [nextState, effects] = stateAndEffect instanceof Array ? stateAndEffect : [stateAndEffect, []];\n\n return nextState;\n },\n () => {\n effects.forEach(this.handleEffect);\n },\n );\n };\n\n private handleEffect = (effect: CustomComboBoxEffect<T>) => {\n effect(this.dispatch, this.getState, this.getProps, () => this);\n };\n\n private getProps = () => this.props;\n\n private getState = () => this.state;\n\n private handleValueChange = (value: T) => {\n this.dispatch({\n type: 'ValueChange',\n value,\n keepFocus: !this.isMobileLayout,\n });\n };\n\n private handleFocus = () => {\n if (this.focused) {\n return;\n }\n this.focused = true;\n this.dispatch({ type: 'Focus' });\n };\n\n private handleClickOutside = (e: Event) => {\n fixClickFocusIE(e);\n this.handleBlur();\n };\n\n private handleBlur = () => {\n if (!this.focused) {\n if (this.state.opened) {\n this.close();\n }\n return;\n }\n\n this.focused = false;\n // workaround for the similar bug with focusout\n // in Firefox, Chrome and IE\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1363964\n setTimeout(() => {\n this.dispatch({ type: 'Blur' });\n });\n };\n\n private handleInputBlur = () => {\n // If menu opened, RenderLayer is active and\n // it would call handleFocusOutside\n // In that way handleBlur would be called\n\n // TODO: add check for mobile layout, to call `handleBlur`\n\n if (this.state.opened) {\n return;\n }\n this.handleBlur();\n };\n\n private handleInputClick = () => {\n if (!this.cancelationToken) {\n this.dispatch({ type: 'InputClick' });\n }\n };\n}\n"]}