@steroidsjs/core 2.1.0-beta.3 → 2.1.0-beta.33

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 (584) hide show
  1. package/README.md +3 -1
  2. package/actions/form.d.ts +9 -0
  3. package/actions/form.js +11 -1
  4. package/actions/list.d.ts +1 -0
  5. package/actions/list.js +1 -0
  6. package/actions/modal.d.ts +3 -2
  7. package/components/ClientStorageComponent.d.ts +3 -3
  8. package/components/ClientStorageComponent.js +28 -22
  9. package/components/HttpComponent.js +32 -15
  10. package/components/LocaleComponent.js +9 -9
  11. package/components/MetricsComponent.js +3 -1
  12. package/components/SocialComponent.d.ts +1 -1
  13. package/components/SocialComponent.js +12 -10
  14. package/components/StoreComponent.d.ts +6 -0
  15. package/components/StoreComponent.js +6 -7
  16. package/components/UiComponent.d.ts +1 -1
  17. package/components/WebSocketComponent.d.ts +1 -1
  18. package/components/social/FacebookProvider.d.ts +1 -1
  19. package/components/social/FacebookProvider.js +5 -6
  20. package/components/social/GitlabProvider.d.ts +8 -0
  21. package/components/social/GitlabProvider.js +98 -0
  22. package/components/social/GoogleProvider.d.ts +1 -1
  23. package/components/social/GoogleProvider.js +2 -2
  24. package/components/social/SteamProvider.d.ts +1 -1
  25. package/components/social/SteamProvider.js +8 -9
  26. package/components/social/VkProvider.d.ts +1 -1
  27. package/components/social/VkProvider.js +8 -9
  28. package/hoc/components.d.ts +1 -1
  29. package/hoc/components.js +1 -1
  30. package/hoc/file.d.ts +1 -0
  31. package/hooks/index.d.ts +2 -1
  32. package/hooks/index.js +3 -1
  33. package/hooks/useAbsolutePositioning.d.ts +5 -0
  34. package/hooks/useAbsolutePositioning.js +6 -6
  35. package/hooks/useApplication.d.ts +29 -26
  36. package/hooks/useApplication.js +17 -82
  37. package/hooks/useComponents.d.ts +1 -14
  38. package/hooks/useComponents.js +4 -5
  39. package/hooks/useDataProvider.d.ts +1 -0
  40. package/hooks/useDataProvider.js +6 -4
  41. package/hooks/useDataSelect.d.ts +15 -8
  42. package/hooks/useDataSelect.js +60 -11
  43. package/hooks/useDispatch.d.ts +1 -1
  44. package/hooks/useFetch.d.ts +11 -3
  45. package/hooks/useFetch.js +37 -31
  46. package/hooks/useFile.js +13 -2
  47. package/hooks/useLayout.d.ts +9 -0
  48. package/hooks/useLayout.js +85 -56
  49. package/hooks/useList.d.ts +56 -1
  50. package/hooks/useList.js +89 -54
  51. package/hooks/useModel.js +1 -1
  52. package/hooks/useScreen.d.ts +1 -1
  53. package/hooks/useScreen.js +2 -2
  54. package/hooks/useSsr.d.ts +2 -0
  55. package/hooks/useSsr.js +8 -0
  56. package/index.d.ts +8 -2
  57. package/package.json +7 -4
  58. package/providers/ComponentsProvider.d.ts +26 -0
  59. package/providers/ComponentsProvider.js +28 -0
  60. package/providers/ScreenProvider.d.ts +20 -0
  61. package/providers/ScreenProvider.js +87 -0
  62. package/providers/SsrProvider.d.ts +17 -0
  63. package/providers/SsrProvider.js +32 -0
  64. package/providers/index.d.ts +4 -0
  65. package/providers/index.js +12 -0
  66. package/reducers/form.d.ts +2 -1
  67. package/reducers/form.js +6 -2
  68. package/reducers/index.js +1 -1
  69. package/reducers/list.js +1 -3
  70. package/reducers/router.js +8 -4
  71. package/ui/content/Alert/Alert.d.ts +60 -0
  72. package/ui/content/Alert/Alert.js +38 -0
  73. package/ui/content/Alert/demo/description.d.ts +9 -0
  74. package/ui/content/Alert/demo/description.js +43 -0
  75. package/ui/content/Alert/demo/icon.d.ts +8 -0
  76. package/ui/content/Alert/demo/icon.js +42 -0
  77. package/ui/content/Alert/demo/text.d.ts +8 -0
  78. package/ui/content/Alert/demo/text.js +42 -0
  79. package/ui/content/Alert/index.d.ts +2 -0
  80. package/ui/content/Alert/index.js +7 -0
  81. package/ui/content/Avatar/Avatar.d.ts +54 -13
  82. package/ui/content/Avatar/Avatar.js +25 -4
  83. package/ui/content/Avatar/AvatarGroup.d.ts +3 -5
  84. package/ui/content/Avatar/AvatarGroup.js +27 -11
  85. package/ui/{form/TimeField/demo/show-remove.d.ts → content/Avatar/demo/custome size.d.ts } +2 -2
  86. package/ui/content/Avatar/demo/custome size.js +35 -0
  87. package/ui/{form/SwitcherField/demo/sizes.d.ts → content/Avatar/demo/group.d.ts} +1 -1
  88. package/ui/content/Avatar/demo/group.js +49 -0
  89. package/ui/content/Avatar/demo/shape.d.ts +8 -0
  90. package/ui/content/Avatar/demo/shape.js +41 -0
  91. package/ui/content/Avatar/demo/size.d.ts +8 -0
  92. package/ui/content/Avatar/demo/size.js +41 -0
  93. package/ui/content/Avatar/demo/title.d.ts +8 -0
  94. package/ui/content/Avatar/demo/title.js +41 -0
  95. package/ui/content/Avatar/index.d.ts +6 -1
  96. package/ui/content/Avatar/index.js +4 -0
  97. package/ui/content/Calendar/demo/basic.d.ts +8 -0
  98. package/ui/{form/FieldLayout → content/Calendar}/demo/basic.js +3 -3
  99. package/ui/content/Card/Card.d.ts +62 -14
  100. package/ui/content/Card/Card.js +3 -2
  101. package/ui/{form/FieldLayout/demo/hint.d.ts → content/Card/demo/basic.d.ts} +2 -2
  102. package/ui/{form/SwitcherField/demo/sizes.js → content/Card/demo/basic.js} +6 -12
  103. package/ui/content/Card/demo/border color.d.ts +3 -0
  104. package/ui/content/Card/demo/border color.js +47 -0
  105. package/ui/content/Card/demo/color.d.ts +3 -0
  106. package/ui/content/Card/demo/color.js +47 -0
  107. package/ui/{form/DateTimeField/demo/sizes.d.ts → content/Card/demo/header.d.ts} +2 -2
  108. package/ui/content/Card/demo/header.js +42 -0
  109. package/ui/content/Card/demo/hover.d.ts +8 -0
  110. package/ui/content/Card/demo/hover.js +37 -0
  111. package/ui/content/Card/demo/link.d.ts +8 -0
  112. package/ui/content/Card/demo/link.js +38 -0
  113. package/ui/content/Card/demo/orientation.d.ts +3 -0
  114. package/ui/content/Card/demo/orientation.js +41 -0
  115. package/ui/content/Collapse/Collapse.d.ts +63 -0
  116. package/ui/content/Collapse/Collapse.js +80 -0
  117. package/ui/content/Collapse/CollapseItem.d.ts +67 -0
  118. package/ui/content/Collapse/CollapseItem.js +22 -0
  119. package/ui/content/Collapse/demo/accordion.d.ts +8 -0
  120. package/ui/content/Collapse/demo/accordion.js +37 -0
  121. package/ui/{form/FieldLayout → content/Collapse}/demo/basic.d.ts +0 -0
  122. package/ui/content/Collapse/demo/basic.js +37 -0
  123. package/ui/{form/SliderField/demo/required.d.ts → content/Collapse/demo/borderless.d.ts} +2 -2
  124. package/ui/content/Collapse/demo/borderless.js +37 -0
  125. package/ui/content/Collapse/demo/disable.d.ts +8 -0
  126. package/ui/content/Collapse/demo/disable.js +37 -0
  127. package/ui/content/Collapse/demo/icon position.d.ts +8 -0
  128. package/ui/content/Collapse/demo/icon position.js +37 -0
  129. package/ui/{form/SliderField/demo/size.d.ts → content/Collapse/demo/icon.d.ts} +1 -1
  130. package/ui/content/Collapse/demo/icon.js +52 -0
  131. package/ui/content/Collapse/demo/onChange.d.ts +8 -0
  132. package/ui/content/Collapse/demo/onChange.js +47 -0
  133. package/ui/content/Collapse/demo/show icon.d.ts +8 -0
  134. package/ui/content/Collapse/demo/show icon.js +37 -0
  135. package/ui/content/Collapse/index.d.ts +7 -0
  136. package/ui/content/Collapse/index.js +8 -0
  137. package/ui/content/Detail/Detail.d.ts +102 -0
  138. package/ui/content/Detail/Detail.js +155 -0
  139. package/ui/content/Detail/DetailItem.d.ts +43 -0
  140. package/ui/content/Detail/DetailItem.js +10 -0
  141. package/ui/content/Detail/demo/basic.d.ts +8 -0
  142. package/ui/content/Detail/demo/basic.js +56 -0
  143. package/ui/content/Detail/demo/colors.d.ts +3 -0
  144. package/ui/content/Detail/demo/colors.js +39 -0
  145. package/ui/content/Detail/demo/controls.d.ts +8 -0
  146. package/ui/content/Detail/demo/controls.js +56 -0
  147. package/ui/content/Detail/demo/layout.d.ts +8 -0
  148. package/ui/content/Detail/demo/layout.js +56 -0
  149. package/ui/content/Detail/demo/responsive.d.ts +8 -0
  150. package/ui/content/Detail/demo/responsive.js +71 -0
  151. package/ui/content/Detail/demo/sizes.d.ts +8 -0
  152. package/ui/content/Detail/demo/sizes.js +61 -0
  153. package/ui/content/Detail/index.d.ts +3 -0
  154. package/ui/content/Detail/index.js +10 -0
  155. package/ui/content/DropDown/DropDown.d.ts +1 -0
  156. package/ui/content/DropDown/DropDown.js +1 -0
  157. package/ui/content/index.d.ts +13 -0
  158. package/ui/content/index.js +22 -0
  159. package/ui/crud/Crud/Crud.d.ts +1 -1
  160. package/ui/crud/Crud/Crud.js +5 -3
  161. package/ui/crud/Crud/CrudContent.d.ts +5 -1
  162. package/ui/crud/Crud/CrudContent.js +5 -5
  163. package/ui/crud/index.d.ts +2 -0
  164. package/ui/form/AutoCompleteField/AutoCompleteField.d.ts +1 -6
  165. package/ui/form/AutoCompleteField/demo/basic.d.ts +5 -5
  166. package/ui/form/AutoCompleteField/demo/basic.js +5 -5
  167. package/ui/form/AutoCompleteField/demo/disabled.d.ts +1 -1
  168. package/ui/form/AutoCompleteField/demo/disabled.js +1 -1
  169. package/ui/form/AutoCompleteField/demo/errors.d.ts +1 -1
  170. package/ui/form/AutoCompleteField/demo/errors.js +2 -2
  171. package/ui/form/AutoCompleteField/demo/placeholder.d.ts +1 -1
  172. package/ui/form/AutoCompleteField/demo/placeholder.js +1 -1
  173. package/ui/form/AutoCompleteField/demo/required.d.ts +1 -1
  174. package/ui/form/AutoCompleteField/demo/required.js +1 -1
  175. package/ui/form/AutoCompleteField/demo/sizes.d.ts +0 -5
  176. package/ui/form/AutoCompleteField/demo/sizes.js +5 -5
  177. package/ui/form/BlankField/BlankField.d.ts +6 -7
  178. package/ui/form/BlankField/demo/basic.d.ts +12 -0
  179. package/ui/form/BlankField/demo/basic.js +51 -0
  180. package/ui/form/Button/Button.d.ts +1 -0
  181. package/ui/form/Button/Button.js +1 -0
  182. package/ui/form/Button/demo/badge.d.ts +1 -1
  183. package/ui/form/Button/demo/badge.js +1 -1
  184. package/ui/form/Button/demo/basic.d.ts +1 -1
  185. package/ui/form/Button/demo/basic.js +1 -1
  186. package/ui/form/Button/demo/block.d.ts +1 -1
  187. package/ui/form/Button/demo/block.js +1 -1
  188. package/ui/form/Button/demo/colors.d.ts +1 -1
  189. package/ui/form/Button/demo/colors.js +3 -3
  190. package/ui/form/Button/demo/confirm.d.ts +1 -1
  191. package/ui/form/Button/demo/confirm.js +2 -2
  192. package/ui/form/Button/demo/disabled.d.ts +1 -1
  193. package/ui/form/Button/demo/disabled.js +1 -1
  194. package/ui/form/Button/demo/hint.d.ts +1 -1
  195. package/ui/form/Button/demo/hint.js +1 -1
  196. package/ui/form/Button/demo/icon.d.ts +1 -1
  197. package/ui/form/Button/demo/icon.js +1 -1
  198. package/ui/form/Button/demo/link.d.ts +1 -1
  199. package/ui/form/Button/demo/link.js +1 -1
  200. package/ui/form/Button/demo/sizes.d.ts +0 -5
  201. package/ui/form/Button/demo/sizes.js +5 -5
  202. package/ui/form/Button/demo/tags.d.ts +1 -1
  203. package/ui/form/Button/demo/tags.js +1 -1
  204. package/ui/form/CheckboxField/CheckboxField.d.ts +1 -6
  205. package/ui/form/CheckboxField/demo/basic.d.ts +1 -1
  206. package/ui/form/CheckboxField/demo/basic.js +1 -1
  207. package/ui/form/CheckboxField/demo/disabled.d.ts +1 -1
  208. package/ui/form/CheckboxField/demo/disabled.js +1 -1
  209. package/ui/form/CheckboxField/demo/errors.d.ts +1 -1
  210. package/ui/form/CheckboxField/demo/errors.js +2 -2
  211. package/ui/form/CheckboxField/demo/required.d.ts +1 -1
  212. package/ui/form/CheckboxField/demo/required.js +1 -1
  213. package/ui/form/CheckboxListField/CheckboxListField.d.ts +1 -6
  214. package/ui/form/CheckboxListField/demo/basic.d.ts +3 -3
  215. package/ui/form/CheckboxListField/demo/basic.js +5 -5
  216. package/ui/form/CheckboxListField/demo/disabled.d.ts +1 -1
  217. package/ui/form/CheckboxListField/demo/disabled.js +1 -1
  218. package/ui/form/CheckboxListField/demo/errors.d.ts +1 -1
  219. package/ui/form/CheckboxListField/demo/errors.js +2 -2
  220. package/ui/form/CheckboxListField/demo/required.d.ts +1 -1
  221. package/ui/form/CheckboxListField/demo/required.js +1 -1
  222. package/ui/form/DateField/DateField.d.ts +1 -7
  223. package/ui/form/DateField/DateField.js +1 -1
  224. package/ui/form/DateField/demo/basic.d.ts +1 -1
  225. package/ui/form/DateField/demo/basic.js +1 -1
  226. package/ui/form/DateField/demo/disabled.d.ts +1 -1
  227. package/ui/form/DateField/demo/disabled.js +1 -1
  228. package/ui/form/DateField/demo/errors.d.ts +1 -1
  229. package/ui/form/DateField/demo/errors.js +1 -1
  230. package/ui/form/DateField/demo/icon.d.ts +1 -1
  231. package/ui/form/DateField/demo/icon.js +2 -2
  232. package/ui/form/DateField/demo/placeholder.d.ts +1 -1
  233. package/ui/form/DateField/demo/placeholder.js +1 -1
  234. package/ui/form/DateField/demo/required.d.ts +1 -1
  235. package/ui/form/DateField/demo/required.js +1 -1
  236. package/ui/form/DateField/demo/sizes.d.ts +1 -1
  237. package/ui/form/DateField/demo/sizes.js +1 -1
  238. package/ui/form/DateField/useDateInputState.d.ts +4 -0
  239. package/ui/form/DateField/useDateInputState.js +3 -3
  240. package/ui/form/DateField/useDateTime.js +9 -7
  241. package/ui/form/DateRangeField/DateRangeField.d.ts +1 -7
  242. package/ui/form/DateRangeField/DateRangeField.js +3 -2
  243. package/ui/form/DateRangeField/demo/basic.d.ts +1 -1
  244. package/ui/form/DateRangeField/demo/basic.js +1 -1
  245. package/ui/form/DateRangeField/demo/disabled.d.ts +8 -0
  246. package/ui/form/DateRangeField/demo/disabled.js +33 -0
  247. package/ui/form/DateRangeField/demo/errors.d.ts +8 -0
  248. package/ui/form/DateRangeField/demo/errors.js +33 -0
  249. package/ui/form/DateRangeField/demo/icon.d.ts +8 -0
  250. package/ui/form/DateRangeField/demo/icon.js +35 -0
  251. package/ui/form/DateRangeField/demo/placeholder.d.ts +8 -0
  252. package/ui/form/DateRangeField/demo/placeholder.js +33 -0
  253. package/ui/form/DateRangeField/demo/required.d.ts +8 -0
  254. package/ui/form/DateRangeField/demo/required.js +33 -0
  255. package/ui/form/DateTimeField/DateTimeField.d.ts +1 -7
  256. package/ui/form/DateTimeField/DateTimeField.js +3 -2
  257. package/ui/form/DateTimeField/demo/basic.d.ts +1 -1
  258. package/ui/form/DateTimeField/demo/basic.js +1 -1
  259. package/ui/form/DateTimeField/demo/disabled.d.ts +1 -1
  260. package/ui/form/DateTimeField/demo/disabled.js +1 -1
  261. package/ui/form/DateTimeField/demo/errors.d.ts +1 -1
  262. package/ui/form/DateTimeField/demo/errors.js +2 -2
  263. package/ui/form/DateTimeField/demo/icon.d.ts +1 -1
  264. package/ui/form/DateTimeField/demo/icon.js +2 -2
  265. package/ui/form/DateTimeField/demo/placeholder.d.ts +1 -1
  266. package/ui/form/DateTimeField/demo/placeholder.js +2 -6
  267. package/ui/form/DateTimeField/demo/required.d.ts +1 -1
  268. package/ui/form/DateTimeField/demo/required.js +1 -1
  269. package/ui/form/DateTimeField/demo/showRemove.d.ts +8 -0
  270. package/ui/form/DateTimeField/demo/showRemove.js +32 -0
  271. package/ui/form/DateTimeRangeField/DateTimeRangeField.d.ts +1 -7
  272. package/ui/form/DateTimeRangeField/DateTimeRangeField.js +11 -2
  273. package/ui/form/DateTimeRangeField/demo/basic.d.ts +8 -0
  274. package/ui/form/DateTimeRangeField/demo/basic.js +32 -0
  275. package/ui/form/DateTimeRangeField/demo/disabled.d.ts +8 -0
  276. package/ui/form/{FieldLayout/demo/hint.js → DateTimeRangeField/demo/disabled.js} +4 -5
  277. package/ui/form/DateTimeRangeField/demo/errors.d.ts +8 -0
  278. package/ui/form/DateTimeRangeField/demo/errors.js +33 -0
  279. package/ui/form/DateTimeRangeField/demo/icon.d.ts +8 -0
  280. package/ui/form/DateTimeRangeField/demo/icon.js +32 -0
  281. package/ui/form/DateTimeRangeField/demo/placeholder.d.ts +8 -0
  282. package/ui/form/DateTimeRangeField/demo/placeholder.js +33 -0
  283. package/ui/form/DateTimeRangeField/demo/required.d.ts +8 -0
  284. package/ui/form/DateTimeRangeField/demo/required.js +33 -0
  285. package/ui/form/DateTimeRangeField/demo/showRemove.d.ts +8 -0
  286. package/ui/form/DateTimeRangeField/demo/showRemove.js +32 -0
  287. package/ui/form/DropDownField/DropDownField.d.ts +3 -8
  288. package/ui/form/DropDownField/DropDownField.js +20 -11
  289. package/ui/form/DropDownField/demo/auto-complete.d.ts +1 -1
  290. package/ui/form/DropDownField/demo/auto-complete.js +1 -1
  291. package/ui/form/DropDownField/demo/basic.d.ts +5 -5
  292. package/ui/form/DropDownField/demo/basic.js +6 -6
  293. package/ui/form/DropDownField/demo/disabled.d.ts +1 -1
  294. package/ui/form/DropDownField/demo/disabled.js +1 -1
  295. package/ui/form/DropDownField/demo/errors.d.ts +1 -1
  296. package/ui/form/DropDownField/demo/errors.js +2 -2
  297. package/ui/form/DropDownField/demo/multiple.d.ts +1 -1
  298. package/ui/form/DropDownField/demo/multiple.js +1 -1
  299. package/ui/form/DropDownField/demo/no-border.d.ts +1 -1
  300. package/ui/form/DropDownField/demo/no-border.js +1 -1
  301. package/ui/form/DropDownField/demo/placeholder.d.ts +1 -1
  302. package/ui/form/DropDownField/demo/placeholder.js +1 -1
  303. package/ui/form/DropDownField/demo/required.d.ts +1 -1
  304. package/ui/form/DropDownField/demo/required.js +1 -1
  305. package/ui/form/DropDownField/demo/show-reset.d.ts +1 -1
  306. package/ui/form/DropDownField/demo/show-reset.js +1 -1
  307. package/ui/form/DropDownField/demo/size.d.ts +1 -1
  308. package/ui/form/DropDownField/demo/size.js +1 -1
  309. package/ui/form/Field/demo/basic.d.ts +1 -1
  310. package/ui/form/Field/demo/basic.js +1 -1
  311. package/ui/form/Field/demo/component.d.ts +1 -1
  312. package/ui/form/Field/demo/component.js +1 -1
  313. package/ui/form/Field/demo/model.d.ts +1 -1
  314. package/ui/form/Field/demo/model.js +1 -1
  315. package/ui/form/Field/fieldWrapper.d.ts +4 -4
  316. package/ui/form/FieldLayout/demo/errors.d.ts +1 -1
  317. package/ui/form/FieldLayout/demo/errors.js +4 -3
  318. package/ui/form/FieldLayout/demo/layouts.d.ts +1 -1
  319. package/ui/form/FieldLayout/demo/layouts.js +4 -3
  320. package/ui/form/FieldLayout/demo/required.d.ts +1 -1
  321. package/ui/form/FieldLayout/demo/required.js +3 -2
  322. package/ui/form/FieldList/FieldList.d.ts +1 -6
  323. package/ui/form/FieldList/demo/basic.d.ts +1 -1
  324. package/ui/form/FieldList/demo/basic.js +1 -1
  325. package/ui/form/FieldList/demo/disabled.d.ts +8 -0
  326. package/ui/form/FieldList/demo/disabled.js +58 -0
  327. package/ui/form/FieldSet/demo/basic.d.ts +1 -1
  328. package/ui/form/FieldSet/demo/basic.js +1 -1
  329. package/ui/form/FileField/FileField.d.ts +1 -6
  330. package/ui/form/FileField/demo/basic.d.ts +8 -0
  331. package/ui/form/FileField/demo/basic.js +33 -0
  332. package/ui/form/Form/Form.d.ts +6 -0
  333. package/ui/form/Form/Form.js +119 -107
  334. package/ui/form/Form/demo/basic.d.ts +1 -1
  335. package/ui/form/Form/demo/basic.js +2 -2
  336. package/ui/form/Form/demo/border.d.ts +8 -0
  337. package/ui/form/Form/demo/border.js +58 -0
  338. package/ui/form/Form/demo/horizontal.d.ts +8 -0
  339. package/ui/form/Form/demo/horizontal.js +51 -0
  340. package/ui/form/Form/demo/inline.d.ts +8 -0
  341. package/ui/form/Form/demo/inline.js +49 -0
  342. package/ui/form/HtmlField/HtmlField.d.ts +1 -7
  343. package/ui/form/HtmlField/demo/basic.d.ts +1 -1
  344. package/ui/form/HtmlField/demo/basic.js +1 -1
  345. package/ui/form/ImageField/ImageField.d.ts +81 -0
  346. package/ui/form/ImageField/ImageField.js +145 -0
  347. package/ui/form/ImageField/index.d.ts +2 -0
  348. package/ui/form/ImageField/index.js +7 -0
  349. package/ui/form/InputField/InputField.d.ts +8 -6
  350. package/ui/form/InputField/InputField.js +26 -22
  351. package/ui/form/InputField/demo/addons.d.ts +3 -3
  352. package/ui/form/InputField/demo/addons.js +3 -3
  353. package/ui/form/InputField/demo/basic.d.ts +1 -1
  354. package/ui/form/InputField/demo/basic.js +2 -3
  355. package/ui/form/InputField/demo/disabled.d.ts +1 -1
  356. package/ui/form/InputField/demo/disabled.js +2 -3
  357. package/ui/form/InputField/demo/errors.d.ts +2 -2
  358. package/ui/form/InputField/demo/errors.js +3 -3
  359. package/ui/form/InputField/demo/mask.d.ts +2 -2
  360. package/ui/form/InputField/demo/mask.js +2 -2
  361. package/ui/form/InputField/demo/placeholder.d.ts +1 -1
  362. package/ui/form/InputField/demo/placeholder.js +1 -1
  363. package/ui/form/InputField/demo/required.d.ts +1 -1
  364. package/ui/form/InputField/demo/required.js +1 -1
  365. package/ui/form/InputField/demo/sizes.d.ts +0 -5
  366. package/ui/form/InputField/demo/sizes.js +5 -5
  367. package/ui/form/InputField/demo/textAddons.d.ts +3 -3
  368. package/ui/form/InputField/demo/textAddons.js +3 -3
  369. package/ui/form/InputField/demo/types.d.ts +0 -5
  370. package/ui/form/InputField/demo/types.js +7 -7
  371. package/ui/form/NavField/NavField.d.ts +2 -8
  372. package/ui/form/NavField/NavField.js +6 -3
  373. package/ui/form/NavField/demo/basic.d.ts +5 -5
  374. package/ui/form/NavField/demo/basic.js +6 -6
  375. package/ui/form/NavField/demo/disabled.d.ts +2 -2
  376. package/ui/form/NavField/demo/disabled.js +3 -3
  377. package/ui/form/NavField/demo/errors.d.ts +2 -2
  378. package/ui/form/NavField/demo/errors.js +4 -4
  379. package/ui/form/NavField/demo/layouts.d.ts +12 -0
  380. package/ui/form/NavField/demo/layouts.js +57 -0
  381. package/ui/form/NavField/demo/required.d.ts +2 -2
  382. package/ui/form/NavField/demo/required.js +3 -3
  383. package/ui/form/NumberField/NumberField.d.ts +1 -6
  384. package/ui/form/NumberField/demo/basic.d.ts +1 -1
  385. package/ui/form/NumberField/demo/basic.js +1 -1
  386. package/ui/form/NumberField/demo/disabled.d.ts +1 -1
  387. package/ui/form/NumberField/demo/disabled.js +1 -1
  388. package/ui/form/NumberField/demo/errors.d.ts +1 -1
  389. package/ui/form/NumberField/demo/errors.js +2 -2
  390. package/ui/form/NumberField/demo/placeholder.d.ts +1 -1
  391. package/ui/form/NumberField/demo/placeholder.js +1 -1
  392. package/ui/form/NumberField/demo/required.d.ts +1 -1
  393. package/ui/form/NumberField/demo/required.js +1 -1
  394. package/ui/form/NumberField/demo/sizes.d.ts +2 -2
  395. package/ui/form/NumberField/demo/sizes.js +2 -2
  396. package/ui/form/PasswordField/PasswordField.d.ts +1 -6
  397. package/ui/form/PasswordField/demo/basic.d.ts +1 -1
  398. package/ui/form/PasswordField/demo/basic.js +1 -1
  399. package/ui/form/PasswordField/demo/disabled.d.ts +1 -1
  400. package/ui/form/PasswordField/demo/disabled.js +1 -1
  401. package/ui/form/PasswordField/demo/errors.d.ts +1 -1
  402. package/ui/form/PasswordField/demo/errors.js +2 -2
  403. package/ui/form/PasswordField/demo/placeholder.d.ts +1 -1
  404. package/ui/form/PasswordField/demo/placeholder.js +1 -1
  405. package/ui/form/PasswordField/demo/required.d.ts +1 -1
  406. package/ui/form/PasswordField/demo/required.js +1 -1
  407. package/ui/form/PasswordField/demo/security.d.ts +1 -1
  408. package/ui/form/PasswordField/demo/security.js +1 -1
  409. package/ui/form/PasswordField/demo/sizes.d.ts +2 -2
  410. package/ui/form/PasswordField/demo/sizes.js +2 -2
  411. package/ui/form/RadioListField/RadioListField.d.ts +1 -6
  412. package/ui/form/RadioListField/demo/basic.d.ts +5 -5
  413. package/ui/form/RadioListField/demo/basic.js +5 -5
  414. package/ui/form/RadioListField/demo/disabled.d.ts +1 -1
  415. package/ui/form/RadioListField/demo/disabled.js +1 -1
  416. package/ui/form/RadioListField/demo/errors.d.ts +1 -1
  417. package/ui/form/RadioListField/demo/errors.js +2 -2
  418. package/ui/form/RadioListField/demo/required.d.ts +1 -1
  419. package/ui/form/RadioListField/demo/required.js +1 -1
  420. package/ui/form/RateField/RateField.d.ts +2 -8
  421. package/ui/form/RateField/demo/allow-clear.d.ts +1 -1
  422. package/ui/form/RateField/demo/allow-clear.js +1 -1
  423. package/ui/form/RateField/demo/basic.d.ts +1 -1
  424. package/ui/form/RateField/demo/basic.js +1 -1
  425. package/ui/form/RateField/demo/default-value.d.ts +1 -1
  426. package/ui/form/RateField/demo/default-value.js +1 -1
  427. package/ui/form/RateField/demo/disabled.d.ts +1 -1
  428. package/ui/form/RateField/demo/disabled.js +1 -1
  429. package/ui/form/RateField/demo/errors.d.ts +1 -1
  430. package/ui/form/RateField/demo/errors.js +2 -2
  431. package/ui/form/RateField/demo/items-count.d.ts +1 -1
  432. package/ui/form/RateField/demo/items-count.js +1 -1
  433. package/ui/form/RateField/demo/required.d.ts +1 -1
  434. package/ui/form/RateField/demo/required.js +1 -1
  435. package/ui/form/ReCaptchaField/ReCaptchaField.d.ts +1 -7
  436. package/ui/form/ReCaptchaField/demo/basic.d.ts +1 -1
  437. package/ui/form/ReCaptchaField/demo/basic.js +1 -1
  438. package/ui/form/SliderField/SliderField.d.ts +42 -15
  439. package/ui/form/SliderField/SliderField.js +18 -9
  440. package/ui/form/SliderField/demo/basic.d.ts +1 -1
  441. package/ui/form/SliderField/demo/basic.js +2 -2
  442. package/ui/form/SliderField/demo/disabled.d.ts +1 -1
  443. package/ui/form/SliderField/demo/disabled.js +2 -2
  444. package/ui/form/SliderField/demo/errors.d.ts +2 -2
  445. package/ui/form/SliderField/demo/errors.js +4 -4
  446. package/ui/form/SliderField/demo/marks.d.ts +3 -0
  447. package/ui/form/SliderField/demo/marks.js +45 -0
  448. package/ui/form/SliderField/demo/min-max.d.ts +2 -2
  449. package/ui/form/SliderField/demo/min-max.js +3 -3
  450. package/ui/form/SliderField/demo/onAfterChange.d.ts +8 -0
  451. package/ui/form/SliderField/demo/onAfterChange.js +39 -0
  452. package/ui/form/SliderField/demo/onChange.d.ts +8 -0
  453. package/ui/form/SliderField/demo/onChange.js +39 -0
  454. package/ui/form/SliderField/demo/range.d.ts +8 -0
  455. package/ui/form/SliderField/demo/{size.js → range.js} +5 -10
  456. package/ui/form/SwitcherField/SwitcherField.d.ts +1 -7
  457. package/ui/form/SwitcherField/demo/basic.d.ts +5 -5
  458. package/ui/form/SwitcherField/demo/basic.js +5 -5
  459. package/ui/form/SwitcherField/demo/disabled.d.ts +1 -1
  460. package/ui/form/SwitcherField/demo/disabled.js +2 -2
  461. package/ui/form/SwitcherField/demo/errors.d.ts +1 -1
  462. package/ui/form/SwitcherField/demo/errors.js +3 -3
  463. package/ui/form/SwitcherField/demo/required.d.ts +1 -1
  464. package/ui/form/SwitcherField/demo/required.js +2 -2
  465. package/ui/form/TextField/TextField.d.ts +3 -7
  466. package/ui/form/TextField/TextField.js +1 -1
  467. package/ui/form/TextField/demo/basic.d.ts +1 -1
  468. package/ui/form/TextField/demo/basic.js +1 -1
  469. package/ui/form/TextField/demo/disabled.d.ts +1 -1
  470. package/ui/form/TextField/demo/disabled.js +1 -1
  471. package/ui/form/TextField/demo/errors.d.ts +1 -1
  472. package/ui/form/TextField/demo/errors.js +2 -2
  473. package/ui/form/TextField/demo/placeholder.d.ts +1 -1
  474. package/ui/form/TextField/demo/placeholder.js +1 -1
  475. package/ui/form/TextField/demo/required.d.ts +1 -1
  476. package/ui/form/TextField/demo/required.js +1 -1
  477. package/ui/form/TextField/demo/sizes.d.ts +0 -5
  478. package/ui/form/TextField/demo/sizes.js +5 -5
  479. package/ui/form/TextField/demo/submit.d.ts +2 -2
  480. package/ui/form/TextField/demo/submit.js +2 -2
  481. package/ui/form/TimeField/TimeField.d.ts +1 -7
  482. package/ui/form/TimeField/TimeField.js +1 -1
  483. package/ui/form/TimeField/demo/basic.d.ts +1 -1
  484. package/ui/form/TimeField/demo/basic.js +1 -1
  485. package/ui/form/TimeField/demo/disabled.d.ts +1 -1
  486. package/ui/form/TimeField/demo/disabled.js +1 -1
  487. package/ui/form/TimeField/demo/errors.d.ts +1 -1
  488. package/ui/form/TimeField/demo/errors.js +2 -2
  489. package/ui/form/TimeField/demo/icon.d.ts +8 -0
  490. package/ui/form/TimeField/demo/icon.js +33 -0
  491. package/ui/form/TimeField/demo/{no-border.d.ts → noBorder.d.ts} +1 -1
  492. package/ui/form/TimeField/demo/{no-border.js → noBorder.js} +1 -1
  493. package/ui/form/TimeField/demo/placeholder.d.ts +1 -1
  494. package/ui/form/TimeField/demo/placeholder.js +1 -1
  495. package/ui/form/TimeField/demo/required.d.ts +1 -1
  496. package/ui/form/TimeField/demo/required.js +1 -1
  497. package/ui/form/TimeField/demo/showRemove.d.ts +8 -0
  498. package/ui/form/TimeField/demo/{show-remove.js → showRemove.js} +1 -1
  499. package/ui/form/index.d.ts +22 -132
  500. package/ui/format/EnumFormatter/EnumFormatter.js +1 -1
  501. package/ui/icon/Icon/Icon.js +3 -0
  502. package/ui/icon/Icon/demo/icon.d.ts +3 -0
  503. package/ui/{form/SliderField/demo/required.js → icon/Icon/demo/icon.js} +2 -7
  504. package/ui/layout/Meta/Meta.d.ts +56 -0
  505. package/ui/layout/Meta/Meta.js +38 -0
  506. package/ui/layout/Meta/index.d.ts +2 -0
  507. package/ui/layout/Meta/index.js +7 -0
  508. package/ui/layout/Notifications/Notifications.d.ts +14 -0
  509. package/ui/layout/Notifications/Notifications.js +1 -1
  510. package/ui/layout/Notifications/demo/basic.d.ts +8 -0
  511. package/ui/layout/Notifications/demo/basic.js +53 -0
  512. package/ui/layout/Notifications/demo/position.d.ts +3 -0
  513. package/ui/layout/Notifications/demo/position.js +45 -0
  514. package/ui/layout/Notifications/demo/timeOut.d.ts +3 -0
  515. package/ui/layout/Notifications/demo/timeOut.js +45 -0
  516. package/ui/layout/Portal.js +3 -0
  517. package/ui/layout/ProgressBar/ProgressBar.d.ts +55 -0
  518. package/ui/layout/ProgressBar/ProgressBar.js +53 -0
  519. package/ui/layout/ProgressBar/demo/percent.d.ts +8 -0
  520. package/ui/layout/ProgressBar/demo/percent.js +49 -0
  521. package/ui/layout/ProgressBar/demo/showLabel.d.ts +8 -0
  522. package/ui/layout/ProgressBar/demo/showLabel.js +40 -0
  523. package/ui/{form/TimeField → layout/ProgressBar}/demo/sizes.d.ts +1 -1
  524. package/ui/layout/ProgressBar/demo/sizes.js +40 -0
  525. package/ui/layout/ProgressBar/demo/status.d.ts +8 -0
  526. package/ui/{form/DateTimeField/demo/sizes.js → layout/ProgressBar/demo/status.js} +8 -12
  527. package/ui/layout/ProgressBar/demo/type.d.ts +8 -0
  528. package/ui/layout/ProgressBar/demo/type.js +40 -0
  529. package/ui/layout/ProgressBar/index.d.ts +2 -0
  530. package/ui/layout/ProgressBar/index.js +7 -0
  531. package/ui/layout/Skeleton/Skeleton.d.ts +25 -0
  532. package/ui/layout/Skeleton/Skeleton.js +11 -0
  533. package/ui/layout/Skeleton/demo/animations.d.ts +8 -0
  534. package/ui/layout/Skeleton/demo/animations.js +49 -0
  535. package/ui/layout/Skeleton/demo/width height.d.ts +8 -0
  536. package/ui/layout/Skeleton/demo/width height.js +38 -0
  537. package/ui/layout/Skeleton/index.d.ts +2 -0
  538. package/ui/layout/Skeleton/index.js +7 -0
  539. package/ui/layout/Tooltip/demo/basic.d.ts +5 -0
  540. package/ui/layout/Tooltip/demo/basic.js +20 -9
  541. package/ui/list/Grid/Grid.js +3 -1
  542. package/ui/list/Grid/demo/inner-search-form.d.ts +1 -6
  543. package/ui/list/LayoutNames/LayoutNames.js +4 -3
  544. package/ui/list/List/List.js +4 -6
  545. package/ui/list/PaginationSize/PaginationSize.d.ts +2 -2
  546. package/ui/list/Steps/Steps.d.ts +32 -0
  547. package/ui/list/Steps/Steps.js +23 -0
  548. package/ui/list/Steps/index.d.ts +2 -0
  549. package/ui/list/Steps/index.js +7 -0
  550. package/ui/modal/Modal/Modal.d.ts +52 -32
  551. package/ui/modal/Modal/Modal.js +3 -1
  552. package/ui/modal/Modal/demo/basic.d.ts +1 -1
  553. package/ui/modal/Modal/demo/basic.js +16 -7
  554. package/ui/modal/Modal/demo/closeTimeout.d.ts +8 -0
  555. package/ui/modal/Modal/demo/closeTimeout.js +60 -0
  556. package/ui/modal/Modal/demo/closing.d.ts +9 -0
  557. package/ui/modal/Modal/demo/closing.js +63 -0
  558. package/ui/modal/Modal/demo/component.d.ts +10 -0
  559. package/ui/modal/Modal/demo/component.js +51 -0
  560. package/ui/modal/Modal/demo/controls.d.ts +8 -0
  561. package/ui/modal/Modal/demo/controls.js +62 -0
  562. package/ui/modal/Modal/demo/size.d.ts +8 -0
  563. package/ui/modal/Modal/demo/size.js +66 -0
  564. package/ui/modal/ModalPortal/ModalPortal.d.ts +8 -0
  565. package/ui/modal/ModalPortal/ModalPortal.js +7 -9
  566. package/ui/nav/Breadcrumbs/Breadcrumbs.d.ts +10 -4
  567. package/ui/nav/Breadcrumbs/demo/basic.d.ts +1 -1
  568. package/ui/nav/Breadcrumbs/demo/basic.js +1 -1
  569. package/ui/nav/Breadcrumbs/demo/items.d.ts +8 -0
  570. package/ui/{form/TimeField/demo/sizes.js → nav/Breadcrumbs/demo/items.js} +9 -10
  571. package/ui/nav/Breadcrumbs/demo/page-title.d.ts +1 -1
  572. package/ui/nav/Breadcrumbs/demo/page-title.js +1 -1
  573. package/ui/nav/Nav/Nav.js +1 -1
  574. package/ui/nav/Router/Router.d.ts +18 -0
  575. package/ui/nav/Router/Router.js +1 -3
  576. package/utils/calendar.d.ts +1 -1
  577. package/utils/calendar.js +8 -1
  578. package/utils/form.d.ts +2 -7
  579. package/components/social/index.d.ts +0 -11
  580. package/components/social/index.js +0 -15
  581. package/ui/content/Avatar/SizeContext.d.ts +0 -1
  582. package/ui/content/Avatar/SizeContext.js +0 -14
  583. package/ui/nav/Router/SsrProvider.d.ts +0 -15
  584. package/ui/nav/Router/SsrProvider.js +0 -55
@@ -21,7 +21,8 @@ function useDataSelect(config) {
21
21
  var primaryKey = config.primaryKey || defaultProps.primaryKey;
22
22
  // Initial select
23
23
  var initialSelectedIds = react_1.useMemo(function () {
24
- if (config.selectedIds) {
24
+ var _a;
25
+ if (((_a = config.selectedIds) === null || _a === void 0 ? void 0 : _a.length) > 0) {
25
26
  return [].concat(config.selectedIds || []);
26
27
  }
27
28
  if (!isNil_1["default"](config.inputValue)) {
@@ -31,11 +32,18 @@ function useDataSelect(config) {
31
32
  ? [config.items[0][primaryKey]]
32
33
  : [];
33
34
  }, [config.items, config.selectFirst, config.selectedIds, primaryKey, config.inputValue]);
35
+ var initialSelectedItems = react_1.useMemo(function () { return config.items.length > 0
36
+ && initialSelectedIds.length > 0
37
+ ? initialSelectedIds
38
+ .map(function (selectedId) { return config.items.find(function (item) { return item.id === selectedId; }); })
39
+ .filter(Boolean)
40
+ : []; }, [initialSelectedIds, config.items]);
34
41
  // State
35
42
  var _a = react_1.useState(false), isOpened = _a[0], setIsOpened = _a[1];
36
43
  var _b = react_1.useState(false), isFocused = _b[0], setIsFocused = _b[1];
37
44
  var _c = react_1.useState(null), hoveredId = _c[0], setHoveredId = _c[1];
38
45
  var _d = react_1.useState(initialSelectedIds), selectedIds = _d[0], setSelectedIdsInternal = _d[1];
46
+ var _e = react_1.useState(initialSelectedItems), selectedItems = _e[0], setSelectedItemsInternal = _e[1];
39
47
  // Handler for select/toggle item by id
40
48
  var setSelectedIds = react_1.useCallback(function (ids, skipToggle) {
41
49
  if (skipToggle === void 0) { skipToggle = false; }
@@ -43,7 +51,7 @@ function useDataSelect(config) {
43
51
  if (!config.multiple && ids.length > 1) {
44
52
  ids = [ids[0]];
45
53
  }
46
- setSelectedIdsInternal(ids);
54
+ setSelectedIdsInternal(ids.sort());
47
55
  }
48
56
  else {
49
57
  var id_1 = ids;
@@ -53,11 +61,11 @@ function useDataSelect(config) {
53
61
  else if (config.multiple) {
54
62
  if (selectedIds.indexOf(id_1) !== -1) {
55
63
  if (!skipToggle) {
56
- setSelectedIdsInternal(selectedIds.filter(function (itemValue) { return itemValue !== id_1; }));
64
+ setSelectedIdsInternal(selectedIds.filter(function (itemValue) { return itemValue !== id_1; }).sort());
57
65
  }
58
66
  }
59
67
  else {
60
- setSelectedIdsInternal(__spreadArray(__spreadArray([], selectedIds), [id_1]));
68
+ setSelectedIdsInternal(__spreadArray(__spreadArray([], selectedIds), [id_1]).sort());
61
69
  }
62
70
  }
63
71
  else {
@@ -68,6 +76,29 @@ function useDataSelect(config) {
68
76
  }
69
77
  }
70
78
  }, [config.multiple, selectedIds]);
79
+ // Update selected items on change selectedIds or items or source items
80
+ var prevSelectedIdsLength = react_use_1.usePrevious(selectedIds.length);
81
+ react_use_1.useUpdateEffect(function () {
82
+ var newSelectedItems = [];
83
+ var hasChanges = false;
84
+ selectedIds.forEach(function (selectedId) {
85
+ var finedItem = config.items.find(function (item) { return item[primaryKey] === selectedId; });
86
+ if (!finedItem && config.sourceItems) {
87
+ finedItem = config.sourceItems.find(function (item) { return item[primaryKey] === selectedId; });
88
+ }
89
+ var selectedItem = selectedItems.find(function (item) { return item[primaryKey] === selectedId; });
90
+ if (finedItem || selectedItem) {
91
+ newSelectedItems.push(finedItem || selectedItem);
92
+ }
93
+ if (finedItem
94
+ && (!selectedItem || selectedItem !== finedItem)) {
95
+ hasChanges = true;
96
+ }
97
+ });
98
+ if (hasChanges || prevSelectedIdsLength !== selectedIds.length) {
99
+ setSelectedItemsInternal(newSelectedItems);
100
+ }
101
+ }, [config.items, config.sourceItems, primaryKey, selectedIds, selectedItems, prevSelectedIdsLength]);
71
102
  // Select first after fetch data
72
103
  var prevItemsLength = react_use_1.usePrevious(config.items.length);
73
104
  react_use_1.useUpdateEffect(function () {
@@ -78,20 +109,29 @@ function useDataSelect(config) {
78
109
  // Update selected items on change value
79
110
  var prevConfigSelectedIds = react_use_1.usePrevious(config.selectedIds || []);
80
111
  react_use_1.useUpdateEffect(function () {
81
- // console.log(config.selectedIds, prevConfigSelectedIds);
112
+ var itemsForSelect = config.sourceItems || config.items;
82
113
  var newSelectedIds = config.selectedIds && config.selectedIds.length > 0
83
- ? config.items.map(function (item) { return item[primaryKey]; }).filter(function (id) { return config.selectedIds.includes(id); })
114
+ ? itemsForSelect.map(function (item) { return item[primaryKey]; }).filter(function (id) { return config.selectedIds.includes(id); })
84
115
  : [];
85
- if (!isEqual_1["default"](prevConfigSelectedIds, newSelectedIds) && newSelectedIds.length !== 0) {
116
+ selectedItems.forEach(function (selectedItem) {
117
+ if (!newSelectedIds.includes(selectedItem.id) && config.selectedIds
118
+ && config.selectedIds.includes(selectedItem.id)) {
119
+ newSelectedIds.push(selectedItem.id);
120
+ }
121
+ });
122
+ if (!isEqual_1["default"](prevConfigSelectedIds.sort(), newSelectedIds.sort())
123
+ && !isEqual_1["default"](selectedIds.sort(), newSelectedIds.sort()) && newSelectedIds.length !== 0) {
86
124
  setSelectedIdsInternal(newSelectedIds);
87
125
  }
88
- }, [config.items, config.selectedIds, primaryKey, prevConfigSelectedIds]);
126
+ }, [config.items, config.selectedIds, primaryKey, prevConfigSelectedIds,
127
+ selectedItems, config.sourceItems, selectedIds]);
89
128
  // Global key down handler for navigate on items
90
129
  // Support keys:
91
130
  // - tab
92
131
  // - esc
93
132
  // - enter
94
133
  // - up/down arrows
134
+ // - space
95
135
  var onKeyDown = react_1.useCallback(function (e) {
96
136
  // Skip no active
97
137
  if (!isFocused && !isOpened) {
@@ -101,9 +141,8 @@ function useDataSelect(config) {
101
141
  if ([9, 27].includes(e.which)) {
102
142
  e.preventDefault();
103
143
  setIsOpened(false);
104
- return;
105
144
  }
106
- // Keys: enter
145
+ // Keys: enter (select and close)
107
146
  if (e.which === 13 && isOpened) {
108
147
  e.preventDefault();
109
148
  if (hoveredId) {
@@ -118,6 +157,15 @@ function useDataSelect(config) {
118
157
  // Select first result
119
158
  setSelectedIds(config.items[0], true);
120
159
  }
160
+ setIsOpened(false);
161
+ }
162
+ // Keys: space (toggle select)
163
+ if (e.which === 32 && isOpened) {
164
+ e.preventDefault();
165
+ if (hoveredId) {
166
+ // Select hovered
167
+ setSelectedIds(hoveredId);
168
+ }
121
169
  }
122
170
  // Keys: arrow up, arrow down
123
171
  if ([38, 40].includes(e.which)) {
@@ -156,7 +204,8 @@ function useDataSelect(config) {
156
204
  hoveredId: hoveredId,
157
205
  setHoveredId: setHoveredId,
158
206
  selectedIds: selectedIds,
159
- setSelectedIds: setSelectedIds
207
+ setSelectedIds: setSelectedIds,
208
+ selectedItems: selectedItems
160
209
  };
161
210
  }
162
211
  exports["default"] = useDataSelect;
@@ -1 +1 @@
1
- export default function useDispatch(): import("redux").Dispatch<any>;
1
+ export default function useDispatch(): any;
@@ -1,5 +1,10 @@
1
- import { IComponents } from './useComponents';
1
+ import { IComponents } from '../providers/ComponentsProvider';
2
2
  import { IApiMethod } from '../components/ApiComponent';
3
+ declare global {
4
+ interface Window {
5
+ APP_PRELOADED_DATA: any;
6
+ }
7
+ }
3
8
  export interface IFetchConfig {
4
9
  id?: string | number;
5
10
  url?: string | IApiMethod;
@@ -18,6 +23,10 @@ export interface IFetchResult {
18
23
  isLoading: boolean;
19
24
  fetch?: (newParams?: Record<string, unknown>) => void;
20
25
  }
26
+ export declare const normalizeConfig: (config: any) => any;
27
+ export declare const getConfigId: (config: any) => any;
28
+ export declare const defaultFetchHandler: (config: any, components: any, addCancelToken: any) => any;
29
+ export declare const fetchData: (config: any, components: any, addCancelToken: any) => any;
21
30
  /**
22
31
  * Fetch
23
32
  * Используется для подгрузки данных с бекенда перед рендером компонента, на котором он применяется.
@@ -25,7 +34,6 @@ export interface IFetchResult {
25
34
  * которые описывают откуда нужно подтянуть данные.
26
35
  *
27
36
  * В процесс загрузки HOC будет отображать "Загрузка...", а после уже отрендерит компонент, передав данные в указанный
28
- * ключ `key`. Все данные сохраняются в Redux Store, что позволяет избежать дополнительных запросов при использовании
29
- * SSR.
37
+ * ключ `key`.
30
38
  */
31
39
  export default function useFetch(rawConfig?: IFetchConfig): IFetchResult;
package/hooks/useFetch.js CHANGED
@@ -50,12 +50,27 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
50
50
  return (mod && mod.__esModule) ? mod : { "default": mod };
51
51
  };
52
52
  exports.__esModule = true;
53
+ exports.fetchData = exports.defaultFetchHandler = exports.getConfigId = exports.normalizeConfig = void 0;
53
54
  var react_1 = require("react");
54
55
  var react_use_1 = require("react-use");
56
+ var trim_1 = __importDefault(require("lodash-es/trim"));
55
57
  var axios_1 = __importDefault(require("axios"));
56
58
  var index_1 = require("./index");
57
59
  var normalizeConfig = function (config) { return (config
58
60
  ? __assign({ id: null, url: '', method: 'get', params: {}, options: null, onFetch: null }, config) : null); };
61
+ exports.normalizeConfig = normalizeConfig;
62
+ var getConfigId = function (config) {
63
+ if (config === null) {
64
+ return null;
65
+ }
66
+ var result = trim_1["default"](config.id || config.url, '/');
67
+ if (!result) {
68
+ // eslint-disable-next-line no-console
69
+ console.warn('Please set id for fetch config, it`s necessary for SSR to work properly');
70
+ }
71
+ return result;
72
+ };
73
+ exports.getConfigId = getConfigId;
59
74
  var defaultFetchHandler = function (config, components, addCancelToken) {
60
75
  var cancelToken = new axios_1["default"].CancelToken(function (cancel) {
61
76
  addCancelToken(cancel);
@@ -67,6 +82,9 @@ var defaultFetchHandler = function (config, components, addCancelToken) {
67
82
  .send(config.method, config.url, config.params, __assign(__assign({}, config.options), { cancelToken: cancelToken }))
68
83
  .then(function (result) { return result.data; });
69
84
  };
85
+ exports.defaultFetchHandler = defaultFetchHandler;
86
+ var fetchData = function (config, components, addCancelToken) { return ((config.onFetch || exports.defaultFetchHandler).call(null, config, components, addCancelToken)); };
87
+ exports.fetchData = fetchData;
70
88
  /**
71
89
  * Fetch
72
90
  * Используется для подгрузки данных с бекенда перед рендером компонента, на котором он применяется.
@@ -74,26 +92,26 @@ var defaultFetchHandler = function (config, components, addCancelToken) {
74
92
  * которые описывают откуда нужно подтянуть данные.
75
93
  *
76
94
  * В процесс загрузки HOC будет отображать "Загрузка...", а после уже отрендерит компонент, передав данные в указанный
77
- * ключ `key`. Все данные сохраняются в Redux Store, что позволяет избежать дополнительных запросов при использовании
78
- * SSR.
95
+ * ключ `key`.
79
96
  */
80
97
  function useFetch(rawConfig) {
81
98
  var _this = this;
82
99
  if (rawConfig === void 0) { rawConfig = null; }
83
100
  var components = index_1.useComponents();
84
101
  // Store config in state
85
- var _a = react_1.useState(normalizeConfig(rawConfig)), config = _a[0], setConfig = _a[1];
102
+ var _a = react_1.useState(exports.normalizeConfig(rawConfig)), config = _a[0], setConfig = _a[1];
86
103
  // Update config in state on raw config updated
87
104
  react_use_1.useUpdateEffect(function () {
88
105
  setConfig(rawConfig);
89
106
  }, [rawConfig]);
90
- // Resolve config id
91
- // TODO Get initial state from HttpComponent (for SSR) by configId
92
- //const idRef = useRef(_uniqueId('fetch'));
93
- //const configId = config ? _trim(config.id || config.url || idRef.current, '/') : null;
107
+ // Get preloaded data
108
+ var configId = exports.getConfigId(config);
109
+ var ssrValueContext = index_1.useSsr();
110
+ var preloadedData = process.env.IS_SSR ? ssrValueContext.preloadedData : window.APP_PRELOADED_DATA;
111
+ var preloadedDataByConfigId = (preloadedData && configId) ? preloadedData[configId] : null;
94
112
  // State for data and loading flag
95
- var _b = react_1.useState(null), data = _b[0], setData = _b[1];
96
- var _c = react_1.useState(!!config), isLoading = _c[0], setIsLoading = _c[1];
113
+ var _b = react_1.useState(preloadedDataByConfigId || null), data = _b[0], setData = _b[1];
114
+ var _c = react_1.useState(!!config && !data), isLoading = _c[0], setIsLoading = _c[1];
97
115
  // Cancel tokens
98
116
  var cancelTokens = react_1.useRef([]);
99
117
  var addCancelToken = function (token) { return cancelTokens.current.push(token); };
@@ -109,10 +127,11 @@ function useFetch(rawConfig) {
109
127
  if (newConfig) {
110
128
  setConfig(__assign(__assign(__assign({}, config), newConfig), { params: __assign(__assign({}, config === null || config === void 0 ? void 0 : config.params), newConfig === null || newConfig === void 0 ? void 0 : newConfig.params) }));
111
129
  }
130
+ setData(null);
112
131
  if (!config) return [3 /*break*/, 2];
113
132
  setIsLoading(true);
114
133
  _a = setData;
115
- return [4 /*yield*/, (config.onFetch || defaultFetchHandler).call(null, config, components, addCancelToken)];
134
+ return [4 /*yield*/, exports.fetchData(config, components, addCancelToken)];
116
135
  case 1:
117
136
  _a.apply(void 0, [_b.sent()]);
118
137
  setIsLoading(false);
@@ -122,28 +141,15 @@ function useFetch(rawConfig) {
122
141
  });
123
142
  });
124
143
  }, [components, config]);
144
+ react_use_1.useEffectOnce(function () {
145
+ if (!data) {
146
+ fetch();
147
+ }
148
+ });
125
149
  // Fetch data on config update
126
- react_1.useLayoutEffect(function () {
127
- var fetchData = function () { return __awaiter(_this, void 0, void 0, function () {
128
- var _a;
129
- return __generator(this, function (_b) {
130
- switch (_b.label) {
131
- case 0:
132
- setData(null);
133
- if (!config) return [3 /*break*/, 2];
134
- setIsLoading(true);
135
- _a = setData;
136
- return [4 /*yield*/, (config.onFetch || defaultFetchHandler).call(null, config, components, addCancelToken)];
137
- case 1:
138
- _a.apply(void 0, [_b.sent()]);
139
- setIsLoading(false);
140
- _b.label = 2;
141
- case 2: return [2 /*return*/];
142
- }
143
- });
144
- }); };
145
- fetchData();
146
- }, [components, config]);
150
+ react_use_1.useUpdateEffect(function () {
151
+ fetch();
152
+ }, [fetch]);
147
153
  return { data: data, isLoading: isLoading, fetch: fetch };
148
154
  }
149
155
  exports["default"] = useFetch;
package/hooks/useFile.js CHANGED
@@ -178,18 +178,29 @@ function useFile(props) {
178
178
  /**
179
179
  * Remove selected file from uploader
180
180
  * @param {File} fileToRemove
181
- * @private
182
181
  */
183
182
  var onRemove = function (fileToRemove) {
184
183
  uploader.queue.remove([fileToRemove]);
185
184
  forceUpdate();
186
185
  };
187
186
  var files = [].concat(uploader.queue.getFiles());
187
+ /**
188
+ * Add file to uploader
189
+ * @param {File} newFile
190
+ */
191
+ var onAdd = function (newFile) {
192
+ if (!props.multiple) {
193
+ uploader.queue.remove(files);
194
+ }
195
+ uploader.queue.add([newFile]);
196
+ forceUpdate();
197
+ };
188
198
  return {
189
199
  uploader: uploader,
190
200
  files: files,
191
201
  onBrowse: onBrowse,
192
- onRemove: onRemove
202
+ onRemove: onRemove,
203
+ onAdd: onAdd
193
204
  };
194
205
  }
195
206
  exports["default"] = useFile;
@@ -1,3 +1,5 @@
1
+ import { Dispatch } from 'redux';
2
+ import { IComponents } from '../providers/ComponentsProvider';
1
3
  export interface ILayout {
2
4
  status?: string;
3
5
  error?: any;
@@ -9,4 +11,11 @@ export declare const STATUS_RENDER_ERROR = "render_error";
9
11
  export declare const STATUS_HTTP_ERROR = "render_error";
10
12
  export declare const STATUS_ACCESS_DENIED = "access_denied";
11
13
  export declare const STATUS_OK = "ok";
14
+ export declare const HTTP_STATUS_CODES: {
15
+ not_found: number;
16
+ access_denied: number;
17
+ ok: number;
18
+ render_error: number;
19
+ };
20
+ export declare const runInitAction: (initAction: (...args: any[]) => Promise<any>, components: IComponents, dispatch: Dispatch<any>) => Promise<void>;
12
21
  export default function useLayout(initAction?: any): ILayout;
@@ -2,8 +2,9 @@
2
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
+ var _a;
5
6
  exports.__esModule = true;
6
- exports.STATUS_OK = exports.STATUS_ACCESS_DENIED = exports.STATUS_HTTP_ERROR = exports.STATUS_RENDER_ERROR = exports.STATUS_NOT_FOUND = exports.STATUS_LOADING = void 0;
7
+ exports.runInitAction = exports.HTTP_STATUS_CODES = exports.STATUS_OK = exports.STATUS_ACCESS_DENIED = exports.STATUS_HTTP_ERROR = exports.STATUS_RENDER_ERROR = exports.STATUS_NOT_FOUND = exports.STATUS_LOADING = void 0;
7
8
  var react_1 = require("react");
8
9
  var isFunction_1 = __importDefault(require("lodash-es/isFunction"));
9
10
  var isObject_1 = __importDefault(require("lodash-es/isObject"));
@@ -11,6 +12,7 @@ var upperFirst_1 = __importDefault(require("lodash-es/upperFirst"));
11
12
  var merge_1 = __importDefault(require("lodash-es/merge"));
12
13
  var intersection_1 = __importDefault(require("lodash-es/intersection"));
13
14
  var react_use_1 = require("react-use");
15
+ var useSsr_1 = __importDefault(require("./useSsr"));
14
16
  var useComponents_1 = __importDefault(require("./useComponents"));
15
17
  var router_1 = require("../reducers/router");
16
18
  var auth_1 = require("../reducers/auth");
@@ -25,16 +27,72 @@ exports.STATUS_RENDER_ERROR = 'render_error';
25
27
  exports.STATUS_HTTP_ERROR = 'render_error';
26
28
  exports.STATUS_ACCESS_DENIED = 'access_denied';
27
29
  exports.STATUS_OK = 'ok';
30
+ exports.HTTP_STATUS_CODES = (_a = {},
31
+ _a[exports.STATUS_NOT_FOUND] = 404,
32
+ _a[exports.STATUS_ACCESS_DENIED] = 403,
33
+ _a[exports.STATUS_OK] = 200,
34
+ _a[exports.STATUS_RENDER_ERROR] = 500,
35
+ _a[exports.STATUS_HTTP_ERROR] = 500,
36
+ _a);
37
+ var runInitAction = function (initAction, components, dispatch) { return (initAction(null, dispatch, components)
38
+ .then(function (result) {
39
+ // Configure components
40
+ if (isObject_1["default"](result.config)) {
41
+ Object.keys(result.config).forEach(function (name) {
42
+ if (!components[name]) {
43
+ return;
44
+ }
45
+ Object.keys(result.config[name]).forEach(function (key) {
46
+ var value = result.config[name][key];
47
+ var setter = 'set' + upperFirst_1["default"](key);
48
+ if (isFunction_1["default"](components[name][setter])) {
49
+ components[name][setter](value);
50
+ }
51
+ else if (isObject_1["default"](components[name][key])
52
+ && isObject_1["default"](value)) {
53
+ merge_1["default"](components[name][key], value);
54
+ }
55
+ else {
56
+ components[name][key] = value;
57
+ }
58
+ });
59
+ });
60
+ }
61
+ var resultMeta = result.meta;
62
+ var resultUser = result.user;
63
+ delete result.user;
64
+ delete result.meta;
65
+ if (resultMeta) {
66
+ Object.keys(resultMeta).forEach(function (modelName) {
67
+ if (resultMeta[modelName].attributes) {
68
+ components.meta.setModel(modelName, resultMeta[modelName]);
69
+ }
70
+ });
71
+ }
72
+ dispatch([
73
+ // Meta models & enums
74
+ Boolean(resultMeta) && fields_1.setMeta(resultMeta),
75
+ // User auth
76
+ auth_2.setData(result),
77
+ // User auth
78
+ auth_2.setUser(resultUser),
79
+ ].filter(Boolean));
80
+ })); };
81
+ exports.runInitAction = runInitAction;
28
82
  function useLayout(initAction) {
29
83
  if (initAction === void 0) { initAction = null; }
30
- var _a = useSelector_1["default"](function (state) { return ({
31
- route: router_1.getRoute(state),
32
- user: auth_1.getUser(state),
33
- data: auth_1.getData(state),
34
- isInitialized: auth_1.isInitialized(state),
35
- initializeCounter: auth_1.getInitializeCounter(state),
36
- redirectPageId: state.auth.redirectPageId
37
- }); }), route = _a.route, user = _a.user, data = _a.data, isInitialized = _a.isInitialized, initializeCounter = _a.initializeCounter, redirectPageId = _a.redirectPageId;
84
+ var _a = useSelector_1["default"](function (state) {
85
+ var routesMap = router_1.getRoutesMap(state);
86
+ return {
87
+ route: router_1.getRoute(state),
88
+ user: auth_1.getUser(state),
89
+ data: auth_1.getData(state),
90
+ isInitialized: auth_1.isInitialized(state),
91
+ initializeCounter: auth_1.getInitializeCounter(state),
92
+ redirectPageId: state.auth.redirectPageId,
93
+ loginRouteId: Object.keys(routesMap).find(function (name) { return routesMap[name].role === 'login'; })
94
+ };
95
+ }), route = _a.route, user = _a.user, data = _a.data, isInitialized = _a.isInitialized, initializeCounter = _a.initializeCounter, redirectPageId = _a.redirectPageId, loginRouteId = _a.loginRouteId;
38
96
  var _b = react_1.useState(null), error = _b[0], setError = _b[1];
39
97
  var dispatch = useDispatch_1["default"]();
40
98
  var components = useComponents_1["default"]();
@@ -52,50 +110,11 @@ function useLayout(initAction) {
52
110
  if (!isFunction_1["default"](initAction) || initializeCounter <= initializeCounterPrev) {
53
111
  return;
54
112
  }
55
- initAction(null, dispatch)
56
- .then(function (result) {
57
- // Configure components
58
- if (isObject_1["default"](result.config)) {
59
- Object.keys(result.config).forEach(function (name) {
60
- if (!components[name]) {
61
- return;
62
- }
63
- Object.keys(result.config[name]).forEach(function (key) {
64
- var value = result.config[name][key];
65
- var setter = 'set' + upperFirst_1["default"](key);
66
- if (isFunction_1["default"](components[name][setter])) {
67
- components[name][setter](value);
68
- }
69
- else if (isObject_1["default"](components[name][key])
70
- && isObject_1["default"](value)) {
71
- merge_1["default"](components[name][key], value);
72
- }
73
- else {
74
- components[name][key] = value;
75
- }
76
- });
77
- });
78
- }
79
- var resultMeta = result.meta;
80
- var resultUser = result.user;
81
- delete result.user;
82
- delete result.meta;
83
- if (resultMeta) {
84
- Object.keys(resultMeta).forEach(function (modelName) {
85
- if (resultMeta[modelName].attributes) {
86
- components.meta.setModel(modelName, resultMeta[modelName]);
87
- }
88
- });
113
+ exports.runInitAction(initAction, components, dispatch)
114
+ .then(function () {
115
+ if (redirectPageId) {
116
+ dispatch(router_2.goToRoute(redirectPageId));
89
117
  }
90
- dispatch([
91
- // Meta models & enums
92
- Boolean(resultMeta) && fields_1.setMeta(resultMeta),
93
- // User auth
94
- auth_2.setData(result),
95
- // User auth
96
- auth_2.setUser(resultUser),
97
- redirectPageId && router_2.goToRoute(redirectPageId),
98
- ].filter(Boolean));
99
118
  })["catch"](function (e) {
100
119
  setError(e);
101
120
  throw e;
@@ -118,13 +137,23 @@ function useLayout(initAction) {
118
137
  userRoles.push(null); // Guest
119
138
  }
120
139
  if (intersection_1["default"](pageRoles, userRoles).length === 0) {
121
- status = exports.STATUS_ACCESS_DENIED;
122
- if (process.env.NODE_ENV !== 'production') {
123
- // eslint-disable-next-line no-console
124
- console.log('Access denied. Page roles: ', pageRoles, 'User roles:', userRoles.join(), 'Route:', route);
140
+ if (loginRouteId && route.id !== loginRouteId) {
141
+ dispatch(router_2.goToRoute(loginRouteId));
142
+ }
143
+ else {
144
+ status = exports.STATUS_ACCESS_DENIED;
145
+ if (process.env.NODE_ENV !== 'production') {
146
+ // eslint-disable-next-line no-console
147
+ console.log('Access denied. Page roles: ', pageRoles, 'User roles:', userRoles.join(), 'Route:', route);
148
+ }
125
149
  }
126
150
  }
127
151
  }
152
+ //save status code for ssr
153
+ var ssrContextValue = useSsr_1["default"]();
154
+ if (process.env.IS_SSR) {
155
+ ssrContextValue.staticContext.statusCode = exports.HTTP_STATUS_CODES[status];
156
+ }
128
157
  return {
129
158
  status: status,
130
159
  error: error,
@@ -1,3 +1,4 @@
1
+ import { IApiMethod } from '../components/ApiComponent';
1
2
  import { IList } from '../actions/list';
2
3
  import { ILayoutNamesProps } from '../ui/list/LayoutNames/LayoutNames';
3
4
  import { IPaginationProps } from '../ui/list/Pagination/Pagination';
@@ -50,7 +51,7 @@ export interface IListConfig {
50
51
  * Url, который вернет коллекцию элементов
51
52
  * @example api/v1/articles
52
53
  */
53
- action?: string;
54
+ action?: string | IApiMethod;
54
55
  /**
55
56
  * Тип HTTP запроса (GET | POST | PUT | DELETE)
56
57
  * @example GET
@@ -128,6 +129,15 @@ export interface IListConfig {
128
129
  * Элементы коллекции
129
130
  */
130
131
  items?: Array<any>;
132
+ /**
133
+ * Начальные элементы. Используется для подгрузки нескольких списков в один запрос, при этом не отменяя пагинацию
134
+ * и последующие запросы на бекенд для 2-й и следующих страниц
135
+ */
136
+ initialItems?: Array<any>;
137
+ /**
138
+ * Количество элементов всего в списке (для отрисовки пагинации), заданное вручную
139
+ */
140
+ initialTotal?: number;
131
141
  }
132
142
  export interface IListOutput {
133
143
  list: IList;
@@ -145,6 +155,51 @@ export interface IListOutput {
145
155
  onFetch: (params?: Record<string, unknown>) => void;
146
156
  onSort: (value: any) => void;
147
157
  }
158
+ export declare const defaultConfig: {
159
+ actionMethod: string;
160
+ primaryKey: string;
161
+ autoDestroy: boolean;
162
+ sort: {
163
+ enable: boolean;
164
+ attribute: string;
165
+ defaultValue: any;
166
+ };
167
+ addressBar: {
168
+ enable: boolean;
169
+ useHash: boolean;
170
+ };
171
+ };
172
+ export declare const normalizeSortProps: (props: IListConfig['sort']) => {
173
+ enable: boolean;
174
+ attribute: string;
175
+ defaultValue: any;
176
+ };
177
+ export declare const getDefaultSearchModel: ({ paginationProps, paginationSizeProps, sort, layoutNamesProps, }: {
178
+ paginationProps: any;
179
+ paginationSizeProps: any;
180
+ sort: any;
181
+ layoutNamesProps: any;
182
+ }) => {
183
+ attributes: ({
184
+ type: string;
185
+ attribute: any;
186
+ defaultValue: any;
187
+ jsType?: undefined;
188
+ } | {
189
+ type: string;
190
+ jsType: string;
191
+ attribute: any;
192
+ defaultValue: any;
193
+ })[];
194
+ };
195
+ export declare const createInitialValues: ({ paginationProps, paginationSizeProps, sort, layoutNamesProps, initialQuery, configQuery, }: {
196
+ paginationProps: any;
197
+ paginationSizeProps: any;
198
+ sort: any;
199
+ layoutNamesProps: any;
200
+ initialQuery: any;
201
+ configQuery: any;
202
+ }) => any;
148
203
  /**
149
204
  * useList
150
205
  * Добавляет массу возможностей для взаимодействия с коллекциями. Коллекции можно получать как с бекенда,