@sima-land/ui-nucleons 45.0.0-alpha.4 → 45.0.0-alpha.6

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 (502) hide show
  1. package/_internal/custom-scrollbar/index.js +6 -27
  2. package/_internal/custom-scrollbar/index.js.map +1 -0
  3. package/_internal/dropdown-loading/index.js +3 -3
  4. package/_internal/dropdown-loading/index.js.map +1 -0
  5. package/_internal/page-scroll-lock/adapters/body-scroll-lock.js +5 -1
  6. package/_internal/page-scroll-lock/adapters/body-scroll-lock.js.map +1 -0
  7. package/_internal/page-scroll-lock/adapters/ui-nucleons.js +1 -0
  8. package/_internal/page-scroll-lock/adapters/ui-nucleons.js.map +1 -0
  9. package/_internal/page-scroll-lock/context.js +4 -25
  10. package/_internal/page-scroll-lock/context.js.map +1 -0
  11. package/_internal/page-scroll-lock/hook.js +1 -0
  12. package/_internal/page-scroll-lock/hook.js.map +1 -0
  13. package/_internal/page-scroll-lock/index.js +1 -0
  14. package/_internal/page-scroll-lock/index.js.map +1 -0
  15. package/_internal/page-scroll-lock/types.js +1 -0
  16. package/_internal/page-scroll-lock/types.js.map +1 -0
  17. package/_internal/utils/dropdown.js +1 -0
  18. package/_internal/utils/dropdown.js.map +1 -0
  19. package/alert/index.d.ts +2 -2
  20. package/alert/index.js +6 -31
  21. package/alert/index.js.map +1 -0
  22. package/arrow-button/index.js +20 -32
  23. package/arrow-button/index.js.map +1 -0
  24. package/autocomplete/autocomplete.js +60 -95
  25. package/autocomplete/autocomplete.js.map +1 -0
  26. package/autocomplete/index.js +1 -0
  27. package/autocomplete/index.js.map +1 -0
  28. package/autocomplete/types.js +1 -0
  29. package/autocomplete/types.js.map +1 -0
  30. package/autocomplete-deprecated/index.d.ts +1 -1
  31. package/autocomplete-deprecated/index.js +45 -80
  32. package/autocomplete-deprecated/index.js.map +1 -0
  33. package/avatar/avatar.module.scss +3 -1
  34. package/avatar/index.d.ts +1 -1
  35. package/avatar/index.js +12 -33
  36. package/avatar/index.js.map +1 -0
  37. package/avatar/user.d.ts +1 -1
  38. package/avatar/user.js +9 -29
  39. package/avatar/user.js.map +1 -0
  40. package/avatar/utils.js +1 -0
  41. package/avatar/utils.js.map +1 -0
  42. package/base-input/base-input.js +11 -48
  43. package/base-input/base-input.js.map +1 -0
  44. package/base-input/index.js +1 -0
  45. package/base-input/index.js.map +1 -0
  46. package/base-input/types.js +1 -0
  47. package/base-input/types.js.map +1 -0
  48. package/base-input/utils.js +2 -1
  49. package/base-input/utils.js.map +1 -0
  50. package/base-input-deprecated/index.d.ts +2 -2
  51. package/base-input-deprecated/index.js +11 -48
  52. package/base-input-deprecated/index.js.map +1 -0
  53. package/bordered-layout/index.d.ts +1 -1
  54. package/bordered-layout/index.js +3 -3
  55. package/bordered-layout/index.js.map +1 -0
  56. package/bottom-bar/bottom-bar.js +4 -16
  57. package/bottom-bar/bottom-bar.js.map +1 -0
  58. package/bottom-bar/index.js +1 -0
  59. package/bottom-bar/index.js.map +1 -0
  60. package/bottom-bar/types.js +1 -0
  61. package/bottom-bar/types.js.map +1 -0
  62. package/box/index.d.ts +1 -1
  63. package/box/index.js +3 -2
  64. package/box/index.js.map +1 -0
  65. package/button/index.d.ts +2 -2
  66. package/button/index.js +8 -45
  67. package/button/index.js.map +1 -0
  68. package/card/index.js +4 -21
  69. package/card/index.js.map +1 -0
  70. package/card/slots.d.ts +1 -1
  71. package/card/slots.js +12 -46
  72. package/card/slots.js.map +1 -0
  73. package/card/utils.js +1 -0
  74. package/card/utils.js.map +1 -0
  75. package/carousel/draggable.d.ts +1 -1
  76. package/carousel/draggable.js +6 -28
  77. package/carousel/draggable.js.map +1 -0
  78. package/carousel/helpers/draggable-event.js +1 -0
  79. package/carousel/helpers/draggable-event.js.map +1 -0
  80. package/carousel/index.d.ts +1 -1
  81. package/carousel/index.js +22 -43
  82. package/carousel/index.js.map +1 -0
  83. package/checkbox/index.d.ts +2 -2
  84. package/checkbox/index.js +6 -45
  85. package/checkbox/index.js.map +1 -0
  86. package/checkbox-field/index.d.ts +3 -2
  87. package/checkbox-field/index.js +8 -47
  88. package/checkbox-field/index.js.map +1 -0
  89. package/chips/index.d.ts +1 -1
  90. package/chips/index.js +4 -39
  91. package/chips/index.js.map +1 -0
  92. package/chips/item.d.ts +1 -1
  93. package/chips/item.js +4 -5
  94. package/chips/item.js.map +1 -0
  95. package/clean-buttons/index.d.ts +1 -0
  96. package/clean-buttons/index.js +8 -41
  97. package/clean-buttons/index.js.map +1 -0
  98. package/clean-buttons/types.js +1 -0
  99. package/clean-buttons/types.js.map +1 -0
  100. package/clean-buttons/utils.js +1 -0
  101. package/clean-buttons/utils.js.map +1 -0
  102. package/colors/index.js +1 -0
  103. package/colors/index.js.map +1 -0
  104. package/context/viewport.js +1 -0
  105. package/context/viewport.js.map +1 -0
  106. package/dot-nav/index.d.ts +1 -1
  107. package/dot-nav/index.js +13 -34
  108. package/dot-nav/index.js.map +1 -0
  109. package/dropdown/index.d.ts +2 -2
  110. package/dropdown/index.js +5 -39
  111. package/dropdown/index.js.map +1 -0
  112. package/dropdown/utils.js +1 -0
  113. package/dropdown/utils.js.map +1 -0
  114. package/dropdown-item/index.d.ts +1 -1
  115. package/dropdown-item/index.js +6 -22
  116. package/dropdown-item/index.js.map +1 -0
  117. package/dropdown-item/types.js +1 -0
  118. package/dropdown-item/types.js.map +1 -0
  119. package/dropdown-item/utils.js +1 -0
  120. package/dropdown-item/utils.js.map +1 -0
  121. package/expandable/index.d.ts +2 -2
  122. package/expandable/index.js +15 -36
  123. package/expandable/index.js.map +1 -0
  124. package/expandable/utils.js +1 -0
  125. package/expandable/utils.js.map +1 -0
  126. package/field-block/index.js +3 -9
  127. package/field-block/index.js.map +1 -0
  128. package/field-grid/index.d.ts +7 -1
  129. package/field-grid/index.js +50 -66
  130. package/field-grid/index.js.map +1 -0
  131. package/file-icon/index.d.ts +1 -1
  132. package/file-icon/index.js +7 -23
  133. package/file-icon/index.js.map +1 -0
  134. package/group-overflow/index.js +9 -44
  135. package/group-overflow/index.js.map +1 -0
  136. package/group-overflow/utils.js +1 -0
  137. package/group-overflow/utils.js.map +1 -0
  138. package/helpers/bounds-of.js +1 -0
  139. package/helpers/bounds-of.js.map +1 -0
  140. package/helpers/center-of.js +1 -0
  141. package/helpers/center-of.js.map +1 -0
  142. package/helpers/create-container.js +1 -0
  143. package/helpers/create-container.js.map +1 -0
  144. package/helpers/define-slots.d.ts +1 -1
  145. package/helpers/define-slots.js +1 -0
  146. package/helpers/define-slots.js.map +1 -0
  147. package/helpers/events.d.ts +1 -1
  148. package/helpers/events.js +1 -0
  149. package/helpers/events.js.map +1 -0
  150. package/helpers/find-child-element.js +1 -0
  151. package/helpers/find-child-element.js.map +1 -0
  152. package/helpers/find-offset-parent.js +1 -0
  153. package/helpers/find-offset-parent.js.map +1 -0
  154. package/helpers/find-sibling-index.js +1 -0
  155. package/helpers/find-sibling-index.js.map +1 -0
  156. package/helpers/fit-element-height.js +1 -0
  157. package/helpers/fit-element-height.js.map +1 -0
  158. package/helpers/format-date.js +1 -0
  159. package/helpers/format-date.js.map +1 -0
  160. package/helpers/format-number.js +1 -0
  161. package/helpers/format-number.js.map +1 -0
  162. package/helpers/get-date-interval-data.js +1 -0
  163. package/helpers/get-date-interval-data.js.map +1 -0
  164. package/helpers/get-declination.js +1 -0
  165. package/helpers/get-declination.js.map +1 -0
  166. package/helpers/get-fraction-depth.js +1 -0
  167. package/helpers/get-fraction-depth.js.map +1 -0
  168. package/helpers/get-no-index.js +1 -0
  169. package/helpers/get-no-index.js.map +1 -0
  170. package/helpers/get-relative-pos.js +1 -0
  171. package/helpers/get-relative-pos.js.map +1 -0
  172. package/helpers/get-scroll-parent.js +1 -0
  173. package/helpers/get-scroll-parent.js.map +1 -0
  174. package/helpers/is-browser.js +1 -0
  175. package/helpers/is-browser.js.map +1 -0
  176. package/helpers/is-fully-scrolled.js +1 -0
  177. package/helpers/is-fully-scrolled.js.map +1 -0
  178. package/helpers/is-touch-device.js +1 -0
  179. package/helpers/is-touch-device.js.map +1 -0
  180. package/helpers/layer.js +1 -0
  181. package/helpers/layer.js.map +1 -0
  182. package/helpers/max-index-of.js +1 -0
  183. package/helpers/max-index-of.js.map +1 -0
  184. package/helpers/media-query-list.js +1 -0
  185. package/helpers/media-query-list.js.map +1 -0
  186. package/helpers/on.d.ts +1 -1
  187. package/helpers/on.js +1 -0
  188. package/helpers/on.js.map +1 -0
  189. package/helpers/point.js +1 -0
  190. package/helpers/point.js.map +1 -0
  191. package/helpers/rename.js +1 -0
  192. package/helpers/rename.js.map +1 -0
  193. package/helpers/scroll-to-child.js +1 -0
  194. package/helpers/scroll-to-child.js.map +1 -0
  195. package/helpers/styles.js +1 -0
  196. package/helpers/styles.js.map +1 -0
  197. package/helpers/with-prevent.js +1 -0
  198. package/helpers/with-prevent.js.map +1 -0
  199. package/hint/hint-view.js +6 -18
  200. package/hint/hint-view.js.map +1 -0
  201. package/hint/hint.js +6 -23
  202. package/hint/hint.js.map +1 -0
  203. package/hint/index.js +1 -0
  204. package/hint/index.js.map +1 -0
  205. package/hint/utils.js +23 -4
  206. package/hint/utils.js.map +1 -0
  207. package/hint-deprecated/index.d.ts +2 -2
  208. package/hint-deprecated/index.js +4 -40
  209. package/hint-deprecated/index.js.map +1 -0
  210. package/hooks/breakpoint/index.js +4 -25
  211. package/hooks/breakpoint/index.js.map +1 -0
  212. package/hooks/breakpoint/types.js +1 -0
  213. package/hooks/breakpoint/types.js.map +1 -0
  214. package/hooks/breakpoint/utils.js +1 -0
  215. package/hooks/breakpoint/utils.js.map +1 -0
  216. package/hooks/identity.js +1 -0
  217. package/hooks/identity.js.map +1 -0
  218. package/hooks/index.js +1 -0
  219. package/hooks/index.js.map +1 -0
  220. package/hooks/intersection/index.js +1 -0
  221. package/hooks/intersection/index.js.map +1 -0
  222. package/hooks/intersection/test-utils.js +6 -2
  223. package/hooks/intersection/test-utils.js.map +1 -0
  224. package/hooks/keydown.js +1 -0
  225. package/hooks/keydown.js.map +1 -0
  226. package/hooks/media.js +1 -0
  227. package/hooks/media.js.map +1 -0
  228. package/hooks/styles.js +1 -0
  229. package/hooks/styles.js.map +1 -0
  230. package/info-text/index.js +16 -42
  231. package/info-text/index.js.map +1 -0
  232. package/input/index.js +34 -58
  233. package/input/index.js.map +1 -0
  234. package/input/utils.js +1 -0
  235. package/input/utils.js.map +1 -0
  236. package/layout/index.js +1 -0
  237. package/layout/index.js.map +1 -0
  238. package/layout/layout.js +4 -15
  239. package/layout/layout.js.map +1 -0
  240. package/layout/legacy.d.ts +5 -5
  241. package/layout/legacy.js +4 -39
  242. package/layout/legacy.js.map +1 -0
  243. package/layout/types.js +1 -0
  244. package/layout/types.js.map +1 -0
  245. package/link/index.d.ts +6 -3
  246. package/link/index.js +5 -38
  247. package/link/index.js.map +1 -0
  248. package/loading-overlay/index.d.ts +1 -1
  249. package/loading-overlay/index.js +3 -3
  250. package/loading-overlay/index.js.map +1 -0
  251. package/masked-field/index.d.ts +2 -2
  252. package/masked-field/index.js +11 -40
  253. package/masked-field/index.js.map +1 -0
  254. package/masked-input/hook.js +1 -0
  255. package/masked-input/hook.js.map +1 -0
  256. package/masked-input/index.js +1 -0
  257. package/masked-input/index.js.map +1 -0
  258. package/masked-input/masked-input.js +11 -41
  259. package/masked-input/masked-input.js.map +1 -0
  260. package/masked-input/types.js +1 -0
  261. package/masked-input/types.js.map +1 -0
  262. package/masked-input/utils.js +1 -0
  263. package/masked-input/utils.js.map +1 -0
  264. package/modal/index.d.ts +1 -1
  265. package/modal/index.js +4 -10
  266. package/modal/index.js.map +1 -0
  267. package/modal/slots.js +10 -45
  268. package/modal/slots.js.map +1 -0
  269. package/modal/utils.js +1 -0
  270. package/modal/utils.js.map +1 -0
  271. package/modal-overlay/index.js +8 -39
  272. package/modal-overlay/index.js.map +1 -0
  273. package/modal-overlay/utils.js +1 -0
  274. package/modal-overlay/utils.js.map +1 -0
  275. package/no-index/index.d.ts +3 -3
  276. package/no-index/index.js +5 -8
  277. package/no-index/index.js.map +1 -0
  278. package/no-index-mark/index.d.ts +2 -2
  279. package/no-index-mark/index.js +8 -6
  280. package/no-index-mark/index.js.map +1 -0
  281. package/package.json +7 -14
  282. package/pagination/index.d.ts +4 -20
  283. package/pagination/index.js +10 -15
  284. package/pagination/index.js.map +1 -0
  285. package/pagination/pagination-item.d.ts +8 -0
  286. package/pagination/pagination-item.js +20 -0
  287. package/pagination/pagination-item.js.map +1 -0
  288. package/pagination/pagination-item.module.scss +49 -0
  289. package/pagination/pagination.d.ts +8 -0
  290. package/pagination/pagination.js +98 -0
  291. package/pagination/pagination.js.map +1 -0
  292. package/pagination/pagination.module.scss +15 -70
  293. package/pagination/types.d.ts +28 -0
  294. package/pagination/types.js +3 -0
  295. package/pagination/types.js.map +1 -0
  296. package/pagination/utils.d.ts +25 -41
  297. package/pagination/utils.js +51 -85
  298. package/pagination/utils.js.map +1 -0
  299. package/{pagination → pagination-deprecated}/base-pagination.d.ts +6 -1
  300. package/{pagination → pagination-deprecated}/base-pagination.js +34 -47
  301. package/pagination-deprecated/base-pagination.js.map +1 -0
  302. package/pagination-deprecated/index.d.ts +22 -0
  303. package/pagination-deprecated/index.js +16 -0
  304. package/pagination-deprecated/index.js.map +1 -0
  305. package/{pagination → pagination-deprecated}/page-button.d.ts +2 -1
  306. package/pagination-deprecated/page-button.js +17 -0
  307. package/pagination-deprecated/page-button.js.map +1 -0
  308. package/pagination-deprecated/pagination.module.scss +76 -0
  309. package/pagination-deprecated/utils.d.ts +58 -0
  310. package/pagination-deprecated/utils.js +125 -0
  311. package/pagination-deprecated/utils.js.map +1 -0
  312. package/panel/index.js +4 -6
  313. package/panel/index.js.map +1 -0
  314. package/phone-input/images/armenia.png +0 -0
  315. package/phone-input/images/azerbaijan.png +0 -0
  316. package/phone-input/images/belarus.png +0 -0
  317. package/phone-input/images/georgia.png +0 -0
  318. package/phone-input/images/kazakhstan.png +0 -0
  319. package/phone-input/images/kyrgyzstan.png +0 -0
  320. package/phone-input/images/moldova.png +0 -0
  321. package/phone-input/images/other.png +0 -0
  322. package/phone-input/images/russia.png +0 -0
  323. package/phone-input/images/tajikistan.png +0 -0
  324. package/phone-input/images/turkmenistan.png +0 -0
  325. package/phone-input/images/ukraine.png +0 -0
  326. package/phone-input/images/uzbekistan.png +0 -0
  327. package/phone-input/index.js +1 -0
  328. package/phone-input/index.js.map +1 -0
  329. package/phone-input/phone-input.js +27 -56
  330. package/phone-input/phone-input.js.map +1 -0
  331. package/phone-input/presets.js +4 -1
  332. package/phone-input/presets.js.map +1 -0
  333. package/phone-input/types.js +1 -0
  334. package/phone-input/types.js.map +1 -0
  335. package/phone-input/utils.js +1 -0
  336. package/phone-input/utils.js.map +1 -0
  337. package/phone-input-deprecated/index.d.ts +1 -1
  338. package/phone-input-deprecated/index.js +43 -71
  339. package/phone-input-deprecated/index.js.map +1 -0
  340. package/plate/index.d.ts +2 -2
  341. package/plate/index.js +5 -38
  342. package/plate/index.js.map +1 -0
  343. package/popup/index.js +1 -0
  344. package/popup/index.js.map +1 -0
  345. package/popup/popup-view.js +5 -19
  346. package/popup/popup-view.js.map +1 -0
  347. package/popup/popup.js +11 -42
  348. package/popup/popup.js.map +1 -0
  349. package/popup/utils.js +1 -0
  350. package/popup/utils.js.map +1 -0
  351. package/portal/index.d.ts +1 -1
  352. package/portal/index.js +1 -0
  353. package/portal/index.js.map +1 -0
  354. package/price/index.js +3 -2
  355. package/price/index.js.map +1 -0
  356. package/price/utils.js +1 -0
  357. package/price/utils.js.map +1 -0
  358. package/radio-button/index.js +4 -17
  359. package/radio-button/index.js.map +1 -0
  360. package/range/index.d.ts +1 -1
  361. package/range/index.js +7 -33
  362. package/range/index.js.map +1 -0
  363. package/rating/index.d.ts +1 -1
  364. package/rating/index.js +5 -23
  365. package/rating/index.js.map +1 -0
  366. package/rating/types.js +1 -0
  367. package/rating/types.js.map +1 -0
  368. package/rating/utils.js +1 -0
  369. package/rating/utils.js.map +1 -0
  370. package/screen/index.d.ts +5 -5
  371. package/screen/index.js +12 -37
  372. package/screen/index.js.map +1 -0
  373. package/screen/slots.d.ts +3 -3
  374. package/screen/slots.js +31 -62
  375. package/screen/slots.js.map +1 -0
  376. package/screen/utils.js +1 -0
  377. package/screen/utils.js.map +1 -0
  378. package/select/index.js +1 -0
  379. package/select/index.js.map +1 -0
  380. package/select/parts/block.js +20 -32
  381. package/select/parts/block.js.map +1 -0
  382. package/select/parts/button.js +9 -42
  383. package/select/parts/button.js.map +1 -0
  384. package/select/parts/menu.js +14 -46
  385. package/select/parts/menu.js.map +1 -0
  386. package/select/select.js +28 -47
  387. package/select/select.js.map +1 -0
  388. package/select/types.js +1 -0
  389. package/select/types.js.map +1 -0
  390. package/select/utils.js +1 -0
  391. package/select/utils.js.map +1 -0
  392. package/select-deprecated/index.d.ts +1 -1
  393. package/select-deprecated/index.js +34 -69
  394. package/select-deprecated/index.js.map +1 -0
  395. package/side-page/index.js +12 -45
  396. package/side-page/index.js.map +1 -0
  397. package/side-page/slots.js +7 -19
  398. package/side-page/slots.js.map +1 -0
  399. package/spinner/index.d.ts +1 -1
  400. package/spinner/index.js +4 -5
  401. package/spinner/index.js.map +1 -0
  402. package/spinner/spinner.module.scss +3 -1
  403. package/stepper/index.d.ts +2 -2
  404. package/stepper/index.js +14 -52
  405. package/stepper/index.js.map +1 -0
  406. package/stroked-svg/index.d.ts +2 -2
  407. package/stroked-svg/index.js +4 -41
  408. package/stroked-svg/index.js.map +1 -0
  409. package/styling/borders.js +1 -0
  410. package/styling/borders.js.map +1 -0
  411. package/styling/colors.js +1 -0
  412. package/styling/colors.js.map +1 -0
  413. package/styling/fonts.js +1 -0
  414. package/styling/fonts.js.map +1 -0
  415. package/styling/shadows.js +1 -0
  416. package/styling/shadows.js.map +1 -0
  417. package/styling/shapes.js +1 -0
  418. package/styling/shapes.js.map +1 -0
  419. package/styling/sizes.js +1 -0
  420. package/styling/sizes.js.map +1 -0
  421. package/styling/sizes.module.scss +3 -1
  422. package/styling/utils.js +1 -0
  423. package/styling/utils.js.map +1 -0
  424. package/super-ellipse-clip-path/index.js +3 -8
  425. package/super-ellipse-clip-path/index.js.map +1 -0
  426. package/switcher-row/index.js +6 -10
  427. package/switcher-row/index.js.map +1 -0
  428. package/tabs/index.d.ts +1 -1
  429. package/tabs/index.js +5 -26
  430. package/tabs/index.js.map +1 -0
  431. package/text/index.d.ts +2 -2
  432. package/text/index.js +4 -25
  433. package/text/index.js.map +1 -0
  434. package/text-button/index.d.ts +2 -2
  435. package/text-button/index.js +6 -20
  436. package/text-button/index.js.map +1 -0
  437. package/text-field/index.d.ts +2 -2
  438. package/text-field/index.js +26 -55
  439. package/text-field/index.js.map +1 -0
  440. package/textarea/index.js +24 -48
  441. package/textarea/index.js.map +1 -0
  442. package/timer/index.d.ts +1 -1
  443. package/timer/index.js +4 -25
  444. package/timer/index.js.map +1 -0
  445. package/timer/types.js +1 -0
  446. package/timer/types.js.map +1 -0
  447. package/timer/utils.js +1 -0
  448. package/timer/utils.js.map +1 -0
  449. package/toggle/index.d.ts +2 -2
  450. package/toggle/index.js +6 -43
  451. package/toggle/index.js.map +1 -0
  452. package/tooltip/index.d.ts +2 -2
  453. package/tooltip/index.js +5 -28
  454. package/tooltip/index.js.map +1 -0
  455. package/top-bar/index.js +1 -0
  456. package/top-bar/index.js.map +1 -0
  457. package/top-bar/top-bar.js +11 -58
  458. package/top-bar/top-bar.js.map +1 -0
  459. package/top-bar/types.js +1 -0
  460. package/top-bar/types.js.map +1 -0
  461. package/top-bar/utils.d.ts +2 -2
  462. package/top-bar/utils.js +22 -39
  463. package/top-bar/utils.js.map +1 -0
  464. package/touch-slider/index.d.ts +1 -1
  465. package/touch-slider/index.js +3 -4
  466. package/touch-slider/index.js.map +1 -0
  467. package/types.js +1 -0
  468. package/types.js.map +1 -0
  469. package/unknown-content/index.d.ts +1 -1
  470. package/unknown-content/index.js +4 -25
  471. package/unknown-content/index.js.map +1 -0
  472. package/unknown-content/utils.js +1 -0
  473. package/unknown-content/utils.js.map +1 -0
  474. package/upload-area/index.js +1 -0
  475. package/upload-area/index.js.map +1 -0
  476. package/upload-area/types.js +1 -0
  477. package/upload-area/types.js.map +1 -0
  478. package/upload-area/upload-area.js +9 -38
  479. package/upload-area/upload-area.js.map +1 -0
  480. package/upload-area/utils.js +1 -0
  481. package/upload-area/utils.js.map +1 -0
  482. package/with-hint/index.d.ts +1 -1
  483. package/with-hint/index.js +4 -28
  484. package/with-hint/index.js.map +1 -0
  485. package/with-hint/positioning-hint.d.ts +1 -1
  486. package/with-hint/positioning-hint.js +4 -25
  487. package/with-hint/positioning-hint.js.map +1 -0
  488. package/with-hint/utils.js +1 -0
  489. package/with-hint/utils.js.map +1 -0
  490. package/with-tooltip/index.d.ts +1 -1
  491. package/with-tooltip/index.js +7 -31
  492. package/with-tooltip/index.js.map +1 -0
  493. package/with-tooltip/positioning-tooltip.d.ts +1 -1
  494. package/with-tooltip/positioning-tooltip.js +5 -26
  495. package/with-tooltip/positioning-tooltip.js.map +1 -0
  496. package/with-tooltip/utils.js +1 -0
  497. package/with-tooltip/utils.js.map +1 -0
  498. package/file-icon/unknown.svg +0 -9
  499. package/pagination/page-button.js +0 -32
  500. package/rating/star.svg +0 -3
  501. package/readme.md +0 -183
  502. package/upload-area/upload.svg +0 -6
@@ -0,0 +1,49 @@
1
+ @use '../colors';
2
+
3
+ .root {
4
+ --pagination-item-color: #{colors.$basic-gray87};
5
+ --pagination-item-background: #fff;
6
+ --pagination-item-border-color: #{colors.$basic-gray12};
7
+ --pagination-item-font-size: 14px;
8
+ --pagination-item-line-height: 20px;
9
+ width: 40px;
10
+ height: 40px;
11
+ flex-shrink: 0;
12
+ color: var(--pagination-item-color);
13
+ background: var(--pagination-item-background);
14
+ box-shadow: inset 0 0 0 1px var(--pagination-item-border-color);
15
+ font-size: var(--pagination-item-font-size);
16
+ line-height: var(--pagination-item-line-height);
17
+ font-weight: 600;
18
+ display: flex;
19
+ align-items: center;
20
+ justify-content: center;
21
+ text-align: center;
22
+ overflow: hidden;
23
+ text-decoration: none;
24
+ font-style: normal;
25
+ &.checked {
26
+ cursor: default;
27
+ --pagination-item-color: #fff;
28
+ --pagination-item-background: #{colors.$basic-gray87};
29
+ --pagination-item-border-color: #{colors.$basic-gray87};
30
+ }
31
+ &.disabled {
32
+ --pagination-item-color: #{colors.$basic-gray24};
33
+ --pagination-item-background: #fff;
34
+ --pagination-item-border-color: #{colors.$basic-gray12};
35
+ }
36
+ &:not(.checked):not(.disabled):hover {
37
+ cursor: pointer;
38
+ --pagination-item-background: #{colors.$basic-gray4};
39
+ }
40
+ &.rounds-all {
41
+ border-radius: 4px;
42
+ }
43
+ &.rounds-left {
44
+ border-radius: 4px 0 0 4px;
45
+ }
46
+ &.rounds-right {
47
+ border-radius: 0 4px 4px 0;
48
+ }
49
+ }
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ import type { PaginationProps } from './types';
3
+ /**
4
+ * Кнопки навигации по страницам.
5
+ * @param props Свойства.
6
+ * @return Элемент.
7
+ */
8
+ export declare function Pagination({ rootRef, current: currentProp, total: totalProp, onPageChange, getItems, renderItem, className, ...restProps }: PaginationProps): JSX.Element;
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Pagination = void 0;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const react_1 = require("react");
9
+ const utils_1 = require("./utils");
10
+ const pagination_item_1 = require("./pagination-item");
11
+ const Left_1 = __importDefault(require("@sima-land/ui-quarks/icons/16x16/Stroked/Arrows/Left"));
12
+ const Right_1 = __importDefault(require("@sima-land/ui-quarks/icons/16x16/Stroked/Arrows/Right"));
13
+ const bind_1 = __importDefault(require("classnames/bind"));
14
+ const pagination_module_scss_1 = __importDefault(require("./pagination.module.scss"));
15
+ const cx = bind_1.default.bind(pagination_module_scss_1.default);
16
+ /**
17
+ * Кнопки навигации по страницам.
18
+ * @param props Свойства.
19
+ * @return Элемент.
20
+ */
21
+ function Pagination({ rootRef, current: currentProp = 1, total: totalProp = 1, onPageChange, getItems = utils_1.getPaginationItems, renderItem = renderPaginationItem, className, ...restProps }) {
22
+ const { current, total } = (0, react_1.useMemo)(() => (0, utils_1.validatePaginationState)({ current: currentProp, total: totalProp }), [currentProp, totalProp]);
23
+ const items = (0, react_1.useMemo)(() => getItems({ current, total }), [current, total]);
24
+ const onChangeRef = (0, react_1.useRef)(onPageChange);
25
+ onChangeRef.current = onPageChange;
26
+ const getItemProps = (0, react_1.useCallback)((item, index, userProps = {}) => {
27
+ // eslint-disable-next-line require-jsdoc
28
+ const onClick = event => {
29
+ var _a, _b;
30
+ if (item.value !== current) {
31
+ (_a = onChangeRef.current) === null || _a === void 0 ? void 0 : _a.call(onChangeRef, event, item);
32
+ }
33
+ (_b = userProps.onClick) === null || _b === void 0 ? void 0 : _b.call(userProps, event);
34
+ };
35
+ if (item.type === 'page') {
36
+ let rounds;
37
+ if (index === 0 || items[index - 1].type === 'prev') {
38
+ rounds = total === 1 ? 'all' : 'left';
39
+ }
40
+ else if (index === items.length - 1 || items[index + 1].type === 'next') {
41
+ rounds = 'right';
42
+ }
43
+ return {
44
+ rounds,
45
+ checked: item.value === current,
46
+ 'aria-label': `Перейти на страницу ${item.value}`,
47
+ children: item.value,
48
+ ...userProps,
49
+ onClick,
50
+ className: cx('page', userProps.className, item.value > 999 && 'large'),
51
+ };
52
+ }
53
+ if (item.type === 'prev') {
54
+ return {
55
+ rounds: 'all',
56
+ disabled: current <= 1,
57
+ 'aria-label': 'Предыдущая страница',
58
+ children: (0, jsx_runtime_1.jsx)(Left_1.default, { fill: 'currentColor' }),
59
+ ...userProps,
60
+ onClick,
61
+ className: cx('prev', userProps.className),
62
+ };
63
+ }
64
+ if (item.type === 'more') {
65
+ return {
66
+ 'aria-label': `Перейти на страницу ${item.value}`,
67
+ children: '…',
68
+ ...userProps,
69
+ onClick,
70
+ className: cx('page', userProps.className),
71
+ };
72
+ }
73
+ if (item.type === 'next') {
74
+ return {
75
+ rounds: 'all',
76
+ disabled: current >= total,
77
+ 'aria-label': 'Следующая страница',
78
+ children: (0, jsx_runtime_1.jsx)(Right_1.default, { fill: 'currentColor' }),
79
+ ...userProps,
80
+ onClick,
81
+ className: cx('next', userProps.className),
82
+ };
83
+ }
84
+ return {};
85
+ }, [current, total, items]);
86
+ return ((0, jsx_runtime_1.jsx)("div", { ref: rootRef, className: cx('root', className), role: 'navigation', "aria-label": '\u041D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044F \u043F\u043E \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430\u043C', ...restProps, children: items.map((item, index) => ((0, jsx_runtime_1.jsx)(react_1.Fragment, { children: renderItem(item, userProps => getItemProps(item, index, userProps)) }, index))) }));
87
+ }
88
+ exports.Pagination = Pagination;
89
+ /**
90
+ * Рендер кнопки по умолчанию.
91
+ * @param button Данные кнопки.
92
+ * @param getProps Вернет свойства для PaginationItem.
93
+ * @return Элемент.
94
+ */
95
+ function renderPaginationItem(button, getProps) {
96
+ return (0, jsx_runtime_1.jsx)(pagination_item_1.PaginationItem, { ...getProps() });
97
+ }
98
+ //# sourceMappingURL=pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../src/pagination/pagination.tsx"],"names":[],"mappings":"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"}
@@ -1,76 +1,21 @@
1
- @use '../colors';
1
+ .root {
2
+ display: flex;
3
+ }
4
+
5
+ .prev + .page,
6
+ .prev + .next {
7
+ margin-left: 8px;
8
+ }
2
9
 
3
- .page-select-form {
4
- font-size: 12px;
5
- .page-input-wrapper {
6
- margin-left: 8px;
7
- width: 64px;
8
- .page-input {
9
- text-align: center;
10
- font-size: 16px;
11
- }
12
- }
13
- .submit-button {
14
- margin-left: 8px;
15
- }
16
- .cancel-button {
17
- margin-left: 32px;
18
- }
10
+ .page + .next {
11
+ margin-left: 8px;
19
12
  }
20
13
 
21
- .page-button {
22
- display: inline-block;
23
- width: 38px;
24
- height: 38px;
25
- background: #fff;
26
- border: 1px solid colors.$basic-gray12;
27
- font-size: 14px;
28
- outline: 0;
29
- box-sizing: border-box;
30
- padding: 0;
31
- vertical-align: top;
32
- user-select: none;
33
- &.rounds-all {
34
- border-radius: 4px;
35
- }
36
- &.rounds-left {
37
- border-radius: 4px 0 0 4px;
38
- }
39
- &.rounds-right {
40
- border-radius: 0 4px 4px 0;
41
- &:not(.rounds-all) {
42
- margin-right: 0;
43
- }
44
- }
45
- &:disabled {
46
- color: colors.$basic-gray24;
47
- }
48
- &:not(.rounds-all) {
49
- margin-right: -1px;
50
- }
51
- &:not(.selected):not(:disabled):hover {
52
- background: #f5f5f5;
53
- cursor: pointer;
54
- }
55
- &.selected {
56
- position: relative;
57
- background: colors.$basic-gray87;
58
- border-color: colors.$basic-gray87;
59
- color: #fff;
60
- cursor: default;
61
- &::after {
62
- content: '';
63
- position: absolute;
64
- top: 0;
65
- left: 0;
66
- width: 100%;
67
- height: 100%;
68
- box-shadow: inherit;
69
- border-radius: inherit;
70
- }
71
- }
14
+ .page + .page {
15
+ margin-left: -1px;
72
16
  }
73
17
 
74
- .icon {
75
- vertical-align: middle;
18
+ .large {
19
+ --pagination-item-font-size: 12px;
20
+ --pagination-item-line-height: 16px;
76
21
  }
@@ -0,0 +1,28 @@
1
+ import type { AnchorHTMLAttributes, HTMLAttributes, MouseEvent, ReactNode, Ref } from 'react';
2
+ export interface PaginationButton {
3
+ type: 'page' | 'prev' | 'next' | 'more';
4
+ value: number;
5
+ }
6
+ export interface PaginationItemProps extends AnchorHTMLAttributes<HTMLAnchorElement> {
7
+ rounds?: 'all' | 'right' | 'left';
8
+ checked?: boolean;
9
+ disabled?: boolean;
10
+ rootRef?: Ref<HTMLAnchorElement>;
11
+ }
12
+ export interface GetPaginationItemProps {
13
+ (userProps?: PaginationItemProps): PaginationItemProps;
14
+ }
15
+ export interface RenderPaginationItem {
16
+ (item: PaginationButton, getProps: GetPaginationItemProps): ReactNode;
17
+ }
18
+ export interface PaginationProps extends HTMLAttributes<HTMLDivElement> {
19
+ rootRef?: Ref<HTMLDivElement>;
20
+ current?: number;
21
+ total?: number;
22
+ onPageChange?: (event: MouseEvent<HTMLAnchorElement>, button: PaginationButton) => void;
23
+ getItems?: (payload: {
24
+ current: number;
25
+ total: number;
26
+ }) => PaginationButton[];
27
+ renderItem?: RenderPaginationItem;
28
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/pagination/types.ts"],"names":[],"mappings":""}
@@ -1,54 +1,38 @@
1
- interface IPageButton {
2
- value: number;
3
- content: string | number;
4
- }
5
- type State = {
6
- current: number;
7
- range: number;
8
- total: number;
9
- };
10
- export declare const cx: (...args: import("classnames").ArgumentArray) => string;
11
- /**
12
- * Фабрика объектов с данными о кнопке страницы.
13
- * @param value Номер целевой страницы.
14
- * @param content Содержимое кнопки.
15
- * @return Список кнопок.
16
- */
17
- export declare const PageButton: (value: number, content?: string | number) => IPageButton;
1
+ import type { PaginationButton } from './types';
18
2
  /**
19
- * Возвращает список кнопок навигации.
20
- * @param props Свойства.
21
- * @param props.current Номер текущей страницы.
22
- * @param props.total Номер последней страницы.
23
- * @param props.buttonKeys Значения, которые будут использованы для не числовых кнопок.
24
- * @param props.buttonKeys.more Значение для отображения кнопки группы пропущенных чисел.
25
- * @return Список кнопок.
3
+ * Обрабатывает состояние кнопок пагинации.
4
+ * @param state Состояние.
5
+ * @return Валидное состояние.
26
6
  */
27
- export declare const getPageButtons: ({ current, total, buttonKeys, }: {
28
- current: number;
7
+ export declare function validatePaginationState({ total, current }: {
8
+ total?: number;
9
+ current?: number;
10
+ }): {
29
11
  total: number;
30
- buttonKeys?: {
31
- more: string | number;
32
- } | undefined;
33
- }) => IPageButton[];
12
+ current: number;
13
+ };
34
14
  /**
35
- * Возвращает корректный диапазон вокруг текущего значения в соответствии с дизайнерской задумкой.
36
- * По возможности показывает начало/конец списка при смещении.
37
- * При current = 4, range = 5 вместо [2,3,4,5,6] вернет [1,2,3,4,5].
15
+ * Формирует список кнопок навигации по страницам по дизайн-гайдам.
38
16
  * @param props Свойства.
39
- * @param props.current Число вокруг которого нужно сформировать список.
40
- * @param props.range Размер списка.
41
- * @param props.total Максимальное значение.
42
- * @return Список номеров.
17
+ * @param config Конфиг.
18
+ * @return Список.
43
19
  */
44
- export declare const getCorrectRangeNumbers: ({ current, range: rangeSize, total }: State) => number[];
20
+ export declare function getPaginationItems({ total, current, }: {
21
+ total: number;
22
+ current: number;
23
+ }, { arrows, }?: {
24
+ arrows?: boolean | 'active';
25
+ }): PaginationButton[];
45
26
  /**
46
- * Возвращает список чисел вокруг заданного.
27
+ * Возвращает список натуральных чисел вокруг заданного.
47
28
  * @param props Свойства.
48
29
  * @param props.current Число вокруг которого нужно сформировать список.
49
30
  * @param props.range Размер списка.
50
31
  * @param props.total Максимальное значение.
51
32
  * @return Список номеров.
52
33
  */
53
- export declare const getRangeNumbers: ({ current, range: rangeSize, total }: State) => number[];
54
- export {};
34
+ export declare function getNumbersAround({ current, range: rangeSize, total, }: {
35
+ current: number;
36
+ range: number;
37
+ total: number;
38
+ }): number[];
@@ -1,106 +1,71 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getRangeNumbers = exports.getCorrectRangeNumbers = exports.getPageButtons = exports.PageButton = exports.cx = void 0;
7
- const bind_1 = __importDefault(require("classnames/bind"));
8
- const pagination_module_scss_1 = __importDefault(require("./pagination.module.scss"));
9
- const lodash_1 = require("lodash");
10
- exports.cx = bind_1.default.bind(pagination_module_scss_1.default);
3
+ exports.getNumbersAround = exports.getPaginationItems = exports.validatePaginationState = void 0;
11
4
  /**
12
- * Фабрика объектов с данными о кнопке страницы.
13
- * @param value Номер целевой страницы.
14
- * @param content Содержимое кнопки.
15
- * @return Список кнопок.
5
+ * Обрабатывает состояние кнопок пагинации.
6
+ * @param state Состояние.
7
+ * @return Валидное состояние.
16
8
  */
17
- const PageButton = (value, content = value) => ({
18
- value,
19
- content,
20
- });
21
- exports.PageButton = PageButton;
9
+ function validatePaginationState({ total, current }) {
10
+ return {
11
+ // если total не "конечное число" - меняем на 0 так как непонятно сколько всего страниц
12
+ total: Number.isFinite(total) ? total : 0,
13
+ // если current не "конечное число" - указываем 0, так ни одна кнопка не будет активной
14
+ current: Number.isFinite(current) ? current : 0,
15
+ };
16
+ }
17
+ exports.validatePaginationState = validatePaginationState;
22
18
  /**
23
- * Возвращает список кнопок навигации.
19
+ * Формирует список кнопок навигации по страницам по дизайн-гайдам.
24
20
  * @param props Свойства.
25
- * @param props.current Номер текущей страницы.
26
- * @param props.total Номер последней страницы.
27
- * @param props.buttonKeys Значения, которые будут использованы для не числовых кнопок.
28
- * @param props.buttonKeys.more Значение для отображения кнопки группы пропущенных чисел.
29
- * @return Список кнопок.
21
+ * @param config Конфиг.
22
+ * @return Список.
30
23
  */
31
- const getPageButtons = ({ current, total, buttonKeys = { more: '...' }, }) => {
32
- const list = (0, exports.getCorrectRangeNumbers)({ current, range: 5, total }).map(v => (0, exports.PageButton)(v));
33
- if (list.length > 0 && total > 5) {
34
- // если находимся в середине множества (многоточия с обоих сторон) - диапазон уменьшается до 4
35
- if (list[0].value > 1 && list[list.length - 1].value < total) {
36
- list.shift();
24
+ function getPaginationItems({ total, current, }, { arrows = true, } = {}) {
25
+ const items = getNumbersAround({
26
+ total,
27
+ current,
28
+ range: 7,
29
+ }).map(value => ({ type: 'page', value }));
30
+ const size = items.length;
31
+ if (total > 7) {
32
+ // если первый элемент не является первой страницей
33
+ if (items[0].value !== 1) {
34
+ items.splice(0, 2, { type: 'page', value: 1 }, { type: 'more', value: items[2].value - 1 });
37
35
  }
38
- if (list[0].value > 1) {
39
- // формируем начало диапазона
40
- if (list[0].value === 2) {
41
- list.unshift((0, exports.PageButton)(1));
42
- }
43
- else {
44
- list.unshift((0, exports.PageButton)(1),
45
- // не выводим многоточие когда вместо него можно поставить одно число
46
- list[0].value === 3 ? (0, exports.PageButton)(2) : (0, exports.PageButton)(list[0].value - 1, buttonKeys.more));
47
- }
48
- }
49
- if (list[list.length - 1].value < total) {
50
- // формируем конец диапазона
51
- if (list[list.length - 1].value === total - 1) {
52
- list.push((0, exports.PageButton)(total));
53
- }
54
- else {
55
- list.push(
56
- // не выводим многоточие когда вместо него можно поставить одно число
57
- total - list[list.length - 1].value > 2
58
- ? (0, exports.PageButton)(list[list.length - 1].value + 1, buttonKeys.more)
59
- : (0, exports.PageButton)(total - 1), (0, exports.PageButton)(total));
60
- }
36
+ // если последний элемент не является последней страницей
37
+ if (items[size - 1].value !== total) {
38
+ items.splice(-2, 2, { type: 'more', value: items[size - 2].value }, { type: 'page', value: total });
61
39
  }
62
40
  }
63
- return list;
64
- };
65
- exports.getPageButtons = getPageButtons;
66
- /**
67
- * Возвращает корректный диапазон вокруг текущего значения в соответствии с дизайнерской задумкой.
68
- * По возможности показывает начало/конец списка при смещении.
69
- * При current = 4, range = 5 вместо [2,3,4,5,6] вернет [1,2,3,4,5].
70
- * @param props Свойства.
71
- * @param props.current Число вокруг которого нужно сформировать список.
72
- * @param props.range Размер списка.
73
- * @param props.total Максимальное значение.
74
- * @return Список номеров.
75
- */
76
- const getCorrectRangeNumbers = ({ current, range: rangeSize, total }) => {
77
- let result = [
78
- ...(0, exports.getRangeNumbers)({
79
- current,
80
- range: rangeSize,
81
- total,
82
- }),
83
- ];
84
- if (total > rangeSize) {
85
- if (current < rangeSize) {
86
- result = (0, lodash_1.range)(1, rangeSize + 1);
41
+ switch (arrows) {
42
+ case true: {
43
+ items.unshift({ type: 'prev', value: Math.max(1, current - 1) });
44
+ items.push({ type: 'next', value: Math.min(total, current + 1) });
45
+ break;
87
46
  }
88
- else if (current > total - rangeSize + 1) {
89
- result = (0, lodash_1.range)(total - rangeSize + 1, total + 1);
47
+ case 'active': {
48
+ if (current !== 1) {
49
+ items.unshift({ type: 'prev', value: Math.max(1, current - 1) });
50
+ }
51
+ if (current !== total) {
52
+ items.push({ type: 'next', value: Math.min(total, current + 1) });
53
+ }
54
+ break;
90
55
  }
91
56
  }
92
- return result;
93
- };
94
- exports.getCorrectRangeNumbers = getCorrectRangeNumbers;
57
+ return items;
58
+ }
59
+ exports.getPaginationItems = getPaginationItems;
95
60
  /**
96
- * Возвращает список чисел вокруг заданного.
61
+ * Возвращает список натуральных чисел вокруг заданного.
97
62
  * @param props Свойства.
98
63
  * @param props.current Число вокруг которого нужно сформировать список.
99
64
  * @param props.range Размер списка.
100
65
  * @param props.total Максимальное значение.
101
66
  * @return Список номеров.
102
67
  */
103
- const getRangeNumbers = ({ current, range: rangeSize, total }) => {
68
+ function getNumbersAround({ current, range: rangeSize, total, }) {
104
69
  const pageNumbers = [];
105
70
  const readyRange = Math.min(rangeSize, total) || 0;
106
71
  const halfRange = Math.floor(readyRange / 2);
@@ -116,5 +81,6 @@ const getRangeNumbers = ({ current, range: rangeSize, total }) => {
116
81
  pageNumbers.push(i + 1);
117
82
  }
118
83
  return pageNumbers;
119
- };
120
- exports.getRangeNumbers = getRangeNumbers;
84
+ }
85
+ exports.getNumbersAround = getNumbersAround;
86
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/pagination/utils.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
- import React from 'react';
1
+ /// <reference types="react" />
2
2
  import { PageButtonProps } from './page-button';
3
3
  import { getPageButtons } from './utils';
4
+ /** @deprecated */
4
5
  interface RenderButtonProps extends PageButtonProps {
5
6
  type?: 'prev' | 'next' | 'more';
6
7
  isFirst?: boolean;
@@ -8,6 +9,7 @@ interface RenderButtonProps extends PageButtonProps {
8
9
  page?: number;
9
10
  selected?: boolean;
10
11
  }
12
+ /** @deprecated */
11
13
  export interface BasePaginationProps {
12
14
  total: number;
13
15
  current: number;
@@ -24,11 +26,13 @@ export interface BasePaginationProps {
24
26
  }) => boolean;
25
27
  calculateButtons?: typeof getPageButtons;
26
28
  }
29
+ /** @deprecated */
27
30
  export declare const BUTTON_TYPES: {
28
31
  readonly prev: "prev";
29
32
  readonly next: "next";
30
33
  readonly more: "more";
31
34
  };
35
+ /** @deprecated */
32
36
  export declare const BUTTON_CONTENTS: {
33
37
  readonly prev: JSX.Element;
34
38
  readonly next: JSX.Element;
@@ -46,6 +50,7 @@ export declare const BUTTON_CONTENTS: {
46
50
  * @param props.needNextButton Должна определить, нужно ла выводить кнопку "Назад".
47
51
  * @param props.calculateButtons Должна вернуть список кнопок (например ['prev', 1, 2, 3, 'next']).
48
52
  * @return Элемент.
53
+ * @deprecated
49
54
  */
50
55
  export declare const BasePagination: React.FC<BasePaginationProps>;
51
56
  export {};