@sima-land/ui-nucleons 44.2.10 → 45.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (376) hide show
  1. package/_internal/custom-scrollbar/index.d.ts +13 -7
  2. package/_internal/custom-scrollbar/index.js +29 -15
  3. package/_internal/dropdown-loading/index.d.ts +3 -3
  4. package/_internal/dropdown-loading/index.js +4 -2
  5. package/_internal/page-scroll-lock/adapters/body-scroll-lock.d.ts +39 -0
  6. package/_internal/page-scroll-lock/adapters/body-scroll-lock.js +62 -0
  7. package/_internal/page-scroll-lock/adapters/ui-nucleons.d.ts +25 -0
  8. package/_internal/page-scroll-lock/adapters/ui-nucleons.js +103 -0
  9. package/_internal/page-scroll-lock/context.d.ts +13 -0
  10. package/_internal/page-scroll-lock/context.js +54 -0
  11. package/_internal/page-scroll-lock/hook.d.ts +12 -0
  12. package/_internal/page-scroll-lock/hook.js +26 -0
  13. package/_internal/page-scroll-lock/index.d.ts +4 -0
  14. package/_internal/page-scroll-lock/index.js +9 -0
  15. package/_internal/page-scroll-lock/types.d.ts +22 -0
  16. package/_internal/{checkbox/index.js → page-scroll-lock/types.js} +0 -0
  17. package/_internal/readme.md +2 -0
  18. package/_internal/utils/dropdown.d.ts +1 -0
  19. package/_internal/utils/dropdown.js +1 -0
  20. package/alert/alert.module.scss +1 -24
  21. package/alert/index.d.ts +11 -17
  22. package/alert/index.js +33 -16
  23. package/arrow-button/arrow-button.module.scss +2 -0
  24. package/arrow-button/index.d.ts +2 -2
  25. package/autocomplete/autocomplete.d.ts +8 -0
  26. package/autocomplete/autocomplete.js +190 -0
  27. package/autocomplete/autocomplete.module.scss +2 -15
  28. package/autocomplete/index.d.ts +2 -27
  29. package/autocomplete/index.js +2 -126
  30. package/autocomplete/types.d.ts +19 -0
  31. package/autocomplete/types.js +2 -0
  32. package/autocomplete-deprecated/autocomplete.module.scss +20 -0
  33. package/autocomplete-deprecated/index.d.ts +28 -0
  34. package/autocomplete-deprecated/index.js +130 -0
  35. package/avatar/index.d.ts +2 -2
  36. package/avatar/user.d.ts +1 -1
  37. package/base-input/base-input.d.ts +11 -0
  38. package/base-input/base-input.js +96 -0
  39. package/base-input/base-input.module.scss +3 -3
  40. package/base-input/index.d.ts +2 -23
  41. package/base-input/index.js +2 -76
  42. package/base-input/types.d.ts +31 -0
  43. package/base-input/types.js +2 -0
  44. package/base-input/utils.d.ts +6 -0
  45. package/base-input/utils.js +14 -0
  46. package/base-input-deprecated/base-input.module.scss +66 -0
  47. package/base-input-deprecated/index.d.ts +24 -0
  48. package/base-input-deprecated/index.js +80 -0
  49. package/bordered-layout/index.d.ts +1 -0
  50. package/bordered-layout/index.js +1 -0
  51. package/bottom-bar/bottom-bar-util.scss +20 -0
  52. package/bottom-bar/bottom-bar.d.ts +12 -0
  53. package/bottom-bar/bottom-bar.js +47 -0
  54. package/bottom-bar/bottom-bar.module.scss +14 -0
  55. package/bottom-bar/index.d.ts +2 -21
  56. package/bottom-bar/index.js +5 -44
  57. package/bottom-bar/types.d.ts +10 -0
  58. package/bottom-bar/types.js +2 -0
  59. package/box/index.d.ts +1 -1
  60. package/breakpoints.scss +1 -1
  61. package/button/button.module.scss +70 -53
  62. package/button/index.d.ts +26 -41
  63. package/button/index.js +22 -46
  64. package/card/index.d.ts +2 -1
  65. package/card/index.js +23 -6
  66. package/card/slots.d.ts +17 -3
  67. package/card/slots.js +15 -13
  68. package/carousel/draggable.d.ts +7 -3
  69. package/carousel/draggable.js +10 -3
  70. package/carousel/helpers/draggable-event.d.ts +5 -2
  71. package/carousel/helpers/draggable-event.js +5 -0
  72. package/carousel/index.d.ts +1 -1
  73. package/carousel/index.js +24 -24
  74. package/checkbox/checkbox.module.scss +1 -0
  75. package/checkbox/index.d.ts +3 -3
  76. package/checkbox-field/index.d.ts +3 -0
  77. package/checkbox-field/index.js +3 -0
  78. package/clean-buttons/clean-buttons-util.scss +15 -0
  79. package/clean-buttons/clean-buttons.module.scss +5 -3
  80. package/clean-buttons/index.d.ts +16 -7
  81. package/clean-buttons/index.js +17 -14
  82. package/clean-buttons/types.d.ts +1 -1
  83. package/clean-buttons/utils.d.ts +5 -1
  84. package/clean-buttons/utils.js +4 -0
  85. package/{colors.d.ts → colors/index.d.ts} +1 -1
  86. package/{colors.js → colors/index.js} +0 -0
  87. package/dot-nav/index.d.ts +1 -1
  88. package/dropdown/index.d.ts +1 -0
  89. package/dropdown/utils.d.ts +19 -0
  90. package/dropdown/utils.js +45 -0
  91. package/dropdown-item/dropdown-item.module.scss +80 -15
  92. package/dropdown-item/index.d.ts +20 -9
  93. package/dropdown-item/index.js +12 -9
  94. package/dropdown-item/types.d.ts +3 -0
  95. package/dropdown-item/types.js +2 -0
  96. package/dropdown-item/utils.d.ts +45 -0
  97. package/dropdown-item/utils.js +89 -0
  98. package/expandable/utils.js +3 -3
  99. package/field-block/field-block.module.scss +155 -0
  100. package/field-block/index.d.ts +63 -0
  101. package/field-block/index.js +43 -0
  102. package/field-grid/index.d.ts +5 -4
  103. package/field-grid/index.js +1 -0
  104. package/helpers/bounds-of.d.ts +5 -1
  105. package/helpers/bounds-of.js +5 -0
  106. package/helpers/center-of.d.ts +4 -1
  107. package/helpers/center-of.js +8 -1
  108. package/helpers/create-container.d.ts +5 -2
  109. package/helpers/create-container.js +7 -2
  110. package/helpers/define-slots.d.ts +3 -3
  111. package/helpers/define-slots.js +5 -3
  112. package/helpers/events.d.ts +16 -8
  113. package/helpers/events.js +41 -15
  114. package/helpers/find-child-element.d.ts +12 -9
  115. package/helpers/find-child-element.js +9 -5
  116. package/helpers/find-offset-parent.d.ts +1 -2
  117. package/helpers/find-offset-parent.js +2 -2
  118. package/helpers/find-sibling-index.d.ts +11 -8
  119. package/helpers/find-sibling-index.js +8 -3
  120. package/helpers/fit-element-height.d.ts +5 -5
  121. package/helpers/fit-element-height.js +9 -7
  122. package/helpers/format-date.d.ts +11 -11
  123. package/helpers/format-date.js +15 -13
  124. package/helpers/format-number.d.ts +1 -1
  125. package/helpers/format-number.js +2 -2
  126. package/helpers/get-date-interval-data.d.ts +4 -1
  127. package/helpers/get-date-interval-data.js +7 -2
  128. package/helpers/get-declination.d.ts +5 -1
  129. package/helpers/get-declination.js +5 -0
  130. package/helpers/get-fraction-depth.d.ts +1 -1
  131. package/helpers/get-fraction-depth.js +2 -2
  132. package/helpers/get-no-index.d.ts +2 -2
  133. package/helpers/get-no-index.js +4 -3
  134. package/helpers/get-relative-pos.d.ts +4 -1
  135. package/helpers/get-relative-pos.js +7 -2
  136. package/helpers/get-scroll-parent.d.ts +1 -2
  137. package/helpers/get-scroll-parent.js +5 -5
  138. package/helpers/is-browser.d.ts +4 -1
  139. package/helpers/is-browser.js +8 -1
  140. package/helpers/is-fully-scrolled.d.ts +3 -3
  141. package/helpers/is-fully-scrolled.js +2 -2
  142. package/helpers/is-touch-device.d.ts +1 -1
  143. package/helpers/is-touch-device.js +4 -5
  144. package/helpers/layer.d.ts +1 -1
  145. package/helpers/layer.js +2 -2
  146. package/helpers/max-index-of.d.ts +4 -1
  147. package/helpers/max-index-of.js +7 -2
  148. package/helpers/media-query-list.d.ts +1 -1
  149. package/helpers/media-query-list.js +2 -2
  150. package/helpers/on.d.ts +4 -1
  151. package/helpers/on.js +7 -2
  152. package/helpers/point.d.ts +4 -1
  153. package/helpers/point.js +8 -1
  154. package/helpers/rename.d.ts +3 -1
  155. package/helpers/rename.js +1 -0
  156. package/helpers/scroll-to-child.d.ts +1 -1
  157. package/helpers/scroll-to-child.js +3 -2
  158. package/helpers/styles.d.ts +8 -2
  159. package/helpers/styles.js +18 -4
  160. package/helpers/with-prevent.d.ts +9 -6
  161. package/helpers/with-prevent.js +16 -9
  162. package/hint/hint-view.d.ts +26 -0
  163. package/hint/hint-view.js +43 -0
  164. package/hint/hint-view.module.scss +31 -0
  165. package/hint/hint.d.ts +14 -0
  166. package/hint/hint.js +41 -0
  167. package/hint/index.d.ts +5 -8
  168. package/hint/index.js +13 -48
  169. package/hint/utils.d.ts +61 -0
  170. package/hint/utils.js +161 -0
  171. package/{hint → hint-deprecated}/hint.module.scss +0 -0
  172. package/hint-deprecated/index.d.ts +11 -0
  173. package/hint-deprecated/index.js +53 -0
  174. package/hooks/breakpoint/index.d.ts +7 -4
  175. package/hooks/breakpoint/index.js +21 -13
  176. package/hooks/breakpoint/types.d.ts +3 -4
  177. package/hooks/breakpoint/utils.d.ts +2 -1
  178. package/hooks/breakpoint/utils.js +2 -1
  179. package/hooks/index.d.ts +8 -8
  180. package/hooks/index.js +27 -19
  181. package/hooks/intersection/test-utils.d.ts +1 -1
  182. package/hooks/intersection/test-utils.js +2 -1
  183. package/hooks/styles.d.ts +6 -0
  184. package/hooks/styles.js +26 -0
  185. package/info-text/index.d.ts +23 -0
  186. package/info-text/index.js +60 -0
  187. package/info-text/info-text.module.scss +28 -0
  188. package/input/index.d.ts +32 -0
  189. package/input/index.js +96 -0
  190. package/input/input.module.scss +20 -0
  191. package/input/utils.d.ts +36 -0
  192. package/input/utils.js +71 -0
  193. package/layout/index.d.ts +6 -11
  194. package/layout/index.js +6 -60
  195. package/layout/layout.d.ts +10 -0
  196. package/layout/layout.js +32 -0
  197. package/layout/layout.module.scss +33 -26
  198. package/layout/legacy.d.ts +15 -0
  199. package/layout/legacy.js +68 -0
  200. package/layout/legacy.module.scss +49 -0
  201. package/layout/types.d.ts +6 -0
  202. package/layout/types.js +2 -0
  203. package/link/index.d.ts +4 -1
  204. package/link/index.js +2 -2
  205. package/link/link.module.scss +10 -0
  206. package/loading-overlay/index.d.ts +1 -0
  207. package/loading-overlay/index.js +1 -0
  208. package/masked-field/index.d.ts +1 -0
  209. package/masked-field/index.js +1 -0
  210. package/masked-input/hook.d.ts +8 -0
  211. package/masked-input/hook.js +72 -0
  212. package/masked-input/index.d.ts +5 -0
  213. package/masked-input/index.js +7 -0
  214. package/masked-input/masked-input.d.ts +8 -0
  215. package/masked-input/masked-input.js +73 -0
  216. package/masked-input/types.d.ts +51 -0
  217. package/masked-input/types.js +2 -0
  218. package/masked-input/utils.d.ts +15 -0
  219. package/masked-input/utils.js +49 -0
  220. package/modal/index.d.ts +10 -12
  221. package/modal/index.js +27 -64
  222. package/modal/modal.module.scss +98 -55
  223. package/modal/slots.d.ts +13 -10
  224. package/modal/slots.js +30 -28
  225. package/modal/utils.d.ts +8 -10
  226. package/modal/utils.js +2 -26
  227. package/modal-overlay/index.d.ts +13 -0
  228. package/modal-overlay/index.js +60 -0
  229. package/modal-overlay/modal-overlay-util.scss +1 -0
  230. package/modal-overlay/modal-overlay.module.scss +14 -0
  231. package/modal-overlay/utils.d.ts +14 -0
  232. package/modal-overlay/utils.js +32 -0
  233. package/package.json +49 -41
  234. package/pagination/utils.d.ts +2 -2
  235. package/panel/index.d.ts +27 -13
  236. package/panel/index.js +43 -9
  237. package/panel/panel.module.scss +49 -8
  238. package/phone-input/index.d.ts +4 -28
  239. package/phone-input/index.js +2 -121
  240. package/phone-input/phone-input.d.ts +8 -0
  241. package/phone-input/phone-input.js +133 -0
  242. package/phone-input/phone-input.module.scss +8 -32
  243. package/phone-input/presets.d.ts +21 -22
  244. package/phone-input/presets.js +1 -2
  245. package/phone-input/types.d.ts +6 -0
  246. package/phone-input/types.js +2 -0
  247. package/phone-input/utils.d.ts +30 -1
  248. package/phone-input/utils.js +52 -3
  249. package/phone-input-deprecated/index.d.ts +29 -0
  250. package/phone-input-deprecated/index.js +124 -0
  251. package/phone-input-deprecated/phone-input.module.scss +41 -0
  252. package/plate/index.d.ts +3 -3
  253. package/plate/index.js +2 -2
  254. package/plate/plate.module.scss +3 -0
  255. package/popup/index.d.ts +5 -0
  256. package/popup/index.js +12 -0
  257. package/popup/popup-view.d.ts +14 -0
  258. package/popup/popup-view.js +35 -0
  259. package/popup/popup-view.module.scss +40 -0
  260. package/popup/popup.d.ts +17 -0
  261. package/popup/popup.js +73 -0
  262. package/popup/utils.d.ts +38 -0
  263. package/popup/utils.js +83 -0
  264. package/price/index.d.ts +1 -1
  265. package/price/index.js +3 -3
  266. package/price/utils.d.ts +5 -5
  267. package/price/utils.js +33 -23
  268. package/radio-button/index.d.ts +10 -0
  269. package/radio-button/index.js +33 -0
  270. package/radio-button/radio-button.module.scss +46 -0
  271. package/rating/index.d.ts +2 -1
  272. package/rating/types.d.ts +1 -1
  273. package/readme.md +34 -41
  274. package/screen/index.d.ts +4 -2
  275. package/screen/index.js +34 -3
  276. package/screen/screen.module.scss +0 -2
  277. package/screen/slots.d.ts +2 -8
  278. package/screen/slots.js +8 -9
  279. package/screen/utils.d.ts +2 -1
  280. package/select/index.d.ts +2 -33
  281. package/select/index.js +3 -109
  282. package/select/parts/block.d.ts +8 -0
  283. package/select/parts/block.js +70 -0
  284. package/select/parts/block.module.scss +3 -0
  285. package/select/parts/button.d.ts +8 -0
  286. package/select/parts/button.js +69 -0
  287. package/select/parts/menu.d.ts +8 -0
  288. package/select/parts/menu.js +105 -0
  289. package/select/parts/menu.module.scss +4 -0
  290. package/select/select.d.ts +14 -0
  291. package/select/select.js +145 -0
  292. package/select/types.d.ts +55 -0
  293. package/select/types.js +2 -0
  294. package/select/utils.d.ts +3 -0
  295. package/select/utils.js +13 -0
  296. package/select-deprecated/index.d.ts +34 -0
  297. package/select-deprecated/index.js +112 -0
  298. package/{select → select-deprecated}/select.module.scss +0 -0
  299. package/shadows.scss +18 -0
  300. package/side-page/index.d.ts +11 -26
  301. package/side-page/index.js +21 -26
  302. package/side-page/side-page.module.scss +35 -29
  303. package/side-page/slots.d.ts +12 -20
  304. package/side-page/slots.js +16 -28
  305. package/spinner/index.d.ts +18 -6
  306. package/spinner/index.js +25 -12
  307. package/spinner/spinner.module.scss +8 -0
  308. package/stepper/index.d.ts +18 -10
  309. package/stepper/index.js +17 -8
  310. package/stepper/stepper.module.scss +14 -15
  311. package/styling/fonts.d.ts +3 -3
  312. package/switcher-row/index.d.ts +42 -0
  313. package/switcher-row/index.js +59 -0
  314. package/switcher-row/switcher-row.module.scss +55 -0
  315. package/text/index.d.ts +1 -1
  316. package/text-button/index.d.ts +42 -0
  317. package/text-button/index.js +46 -0
  318. package/text-button/text-button.module.scss +99 -0
  319. package/text-field/index.d.ts +7 -6
  320. package/text-field/index.js +3 -2
  321. package/textarea/index.d.ts +21 -0
  322. package/textarea/index.js +85 -0
  323. package/textarea/textarea.module.scss +15 -0
  324. package/toggle/index.d.ts +3 -3
  325. package/toggle/toggle.module.scss +17 -8
  326. package/tooltip/index.d.ts +1 -0
  327. package/tooltip/index.js +1 -0
  328. package/top-bar/index.d.ts +3 -40
  329. package/top-bar/index.js +4 -60
  330. package/top-bar/top-bar-util.scss +29 -0
  331. package/top-bar/top-bar.d.ts +9 -0
  332. package/top-bar/top-bar.js +101 -0
  333. package/top-bar/top-bar.module.scss +129 -67
  334. package/top-bar/types.d.ts +31 -0
  335. package/top-bar/types.js +2 -0
  336. package/top-bar/utils.d.ts +14 -0
  337. package/top-bar/utils.js +56 -0
  338. package/touch-slider/index.d.ts +1 -0
  339. package/touch-slider/index.js +3 -2
  340. package/types.d.ts +18 -0
  341. package/types.js +2 -0
  342. package/unknown-content/index.d.ts +3 -3
  343. package/unknown-content/index.js +3 -3
  344. package/unknown-content/unknown-content.module.scss +16 -12
  345. package/upload-area/index.d.ts +2 -0
  346. package/upload-area/index.js +5 -0
  347. package/upload-area/types.d.ts +32 -0
  348. package/upload-area/types.js +2 -0
  349. package/upload-area/upload-area-util.scss +17 -0
  350. package/upload-area/upload-area.d.ts +8 -0
  351. package/upload-area/upload-area.js +105 -0
  352. package/upload-area/upload-area.module.scss +78 -0
  353. package/{upload → upload-area}/upload.svg +0 -0
  354. package/upload-area/utils.d.ts +17 -0
  355. package/upload-area/utils.js +48 -0
  356. package/utils.scss +74 -1
  357. package/with-hint/index.d.ts +3 -2
  358. package/with-hint/index.js +1 -0
  359. package/with-hint/positioning-hint.d.ts +1 -1
  360. package/with-hint/positioning-hint.js +2 -2
  361. package/with-tooltip/index.d.ts +2 -1
  362. package/with-tooltip/index.js +1 -0
  363. package/with-tooltip/utils.d.ts +2 -2
  364. package/_internal/body-scroll.d.ts +0 -23
  365. package/_internal/body-scroll.js +0 -41
  366. package/_internal/checkbox/index.d.ts +0 -5
  367. package/constants.d.ts +0 -6
  368. package/constants.js +0 -9
  369. package/nav-bar/index.d.ts +0 -46
  370. package/nav-bar/index.js +0 -76
  371. package/nav-bar/nav-bar.module.scss +0 -95
  372. package/upload/area.d.ts +0 -25
  373. package/upload/area.js +0 -65
  374. package/upload/area.module.scss +0 -44
  375. package/upload/utils.d.ts +0 -29
  376. package/upload/utils.js +0 -45
@@ -0,0 +1,14 @@
1
+ @use '../utils';
2
+ @use './modal-overlay-util';
3
+
4
+ .root {
5
+ position: fixed;
6
+ top: 0;
7
+ left: 0;
8
+ display: flex;
9
+ width: 100vw;
10
+ height: calc(var(--vh, 1vh) * 100);
11
+ background: modal-overlay-util.$overlay-color;
12
+ overflow: auto;
13
+ @include utils.hidden-scrollbars;
14
+ }
@@ -0,0 +1,14 @@
1
+ import { MouseEventHandler } from 'react';
2
+ /**
3
+ * Вызывает callback только если клик был начат и закончен на одном и том же элементе.
4
+ * @param onExactClick Сработает при клике.
5
+ * @param options Опции.
6
+ * @return Свойства для целевого элемента.
7
+ */
8
+ export declare function useExactClick(onExactClick: VoidFunction | undefined, { onMouseDown, onMouseUp, }?: {
9
+ onMouseDown?: MouseEventHandler;
10
+ onMouseUp?: MouseEventHandler;
11
+ }): {
12
+ onMouseUp: MouseEventHandler<Element>;
13
+ onMouseDown: MouseEventHandler<Element>;
14
+ };
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useExactClick = void 0;
4
+ const react_1 = require("react");
5
+ const identity_1 = require("../hooks/identity");
6
+ /**
7
+ * Вызывает callback только если клик был начат и закончен на одном и том же элементе.
8
+ * @param onExactClick Сработает при клике.
9
+ * @param options Опции.
10
+ * @return Свойства для целевого элемента.
11
+ */
12
+ function useExactClick(onExactClick, { onMouseDown, onMouseUp, } = {}) {
13
+ const callbackRef = (0, identity_1.useIdentityRef)(onExactClick);
14
+ const mouseDownTarget = (0, react_1.useRef)(null);
15
+ const handleMouseDown = (0, react_1.useCallback)(event => {
16
+ onMouseDown === null || onMouseDown === void 0 ? void 0 : onMouseDown(event);
17
+ if (event.button === 0) {
18
+ mouseDownTarget.current = event.target;
19
+ }
20
+ }, []);
21
+ const handleMouseUp = (0, react_1.useCallback)(event => {
22
+ const fn = callbackRef.current;
23
+ onMouseUp === null || onMouseUp === void 0 ? void 0 : onMouseUp(event);
24
+ fn &&
25
+ event.button === 0 &&
26
+ event.target === event.currentTarget &&
27
+ event.currentTarget === mouseDownTarget.current &&
28
+ fn();
29
+ }, []);
30
+ return { onMouseUp: handleMouseUp, onMouseDown: handleMouseDown };
31
+ }
32
+ exports.useExactClick = useExactClick;
package/package.json CHANGED
@@ -1,68 +1,92 @@
1
1
  {
2
2
  "name": "@sima-land/ui-nucleons",
3
- "version": "44.2.10",
3
+ "version": "45.0.0-alpha.0",
4
4
  "repository": "ssh://git@github.com:sima-land/ui-nucleons.git",
5
5
  "author": "www.sima-land.ru team",
6
6
  "license": "Apache-2.0",
7
7
  "private": false,
8
8
  "engines": {
9
- "node": ">=14.15.5"
9
+ "node": ">=16.15.1"
10
+ },
11
+ "scripts": {
12
+ "export:colors": "node .template/build.mjs",
13
+ "build:before": "rimraf build",
14
+ "build:main": "tsc --project tsconfig.build.json",
15
+ "build:after": "node dist.mjs",
16
+ "build": "npm run build:before && npm run build:main && npm run build:after",
17
+ "test": "BROWSERSLIST_ENV=\"test\" npx jest",
18
+ "coverage": "jest --clearCache && BROWSERSLIST_ENV=\"test\" npx jest --coverage",
19
+ "type-check": "tsc -p . --noEmit",
20
+ "lint": "npm run lint:scripts && npm run lint:styles",
21
+ "lint:scripts": "eslint --cache src/ --ext .js,.jsx,.ts,.tsx",
22
+ "lint:styles": "stylelint 'src/**/*.{css,scss}'",
23
+ "storybook": "BROWSERSLIST_ENV=\"storybook\" npx start-storybook -p 9009 -c .storybook",
24
+ "storybook:build": "BROWSERSLIST_ENV=\"storybook\" npx build-storybook --quiet --loglevel error -o build-storybook",
25
+ "prettier": "prettier --write \"./src/**/*.{js,jsx,ts,tsx,css,scss}\"",
26
+ "prettier:check": "prettier --check \"./src/**/*.{js,jsx,ts,tsx,css,scss}\""
10
27
  },
11
28
  "dependencies": {
12
- "@krutoo/input-mask": "^0.0.8",
13
- "@sima-land/ui-quarks": "^3.0.0",
29
+ "@floating-ui/react": "^0.17.0",
30
+ "@krutoo/input-mask": "^0.0.9",
31
+ "@sima-land/ui-quarks": "^3.6.0",
14
32
  "body-scroll-lock": "3.1.5",
15
33
  "classnames": "^2.3.1",
16
34
  "date-fns": "^2.28.0",
17
- "intersection-observer": "^0.12.0",
35
+ "focus-trap": "^7.2.0",
18
36
  "lodash": "^4.17.21",
19
- "overlayscrollbars": "^1.13.1",
20
- "overlayscrollbars-react": "^0.2.3",
21
- "react-transition-group": "^4.4.2"
37
+ "overlayscrollbars": "^1.13.3",
38
+ "overlayscrollbars-react": "^0.3.0",
39
+ "react-transition-group": "^4.4.2",
40
+ "redux": "^4.2.0"
22
41
  },
23
42
  "devDependencies": {
24
43
  "@babel/core": "^7.17.7",
25
44
  "@babel/preset-env": "^7.16.11",
26
45
  "@babel/preset-react": "^7.16.7",
27
46
  "@babel/preset-typescript": "^7.16.7",
47
+ "@playwright/test": "^1.27.1",
28
48
  "@rushstack/eslint-patch": "^1.1.1",
29
49
  "@sima-land/linters": "^2.1.2",
30
- "@storybook/addon-actions": "^6.4.19",
31
- "@storybook/addon-backgrounds": "^6.4.19",
32
- "@storybook/addon-docs": "^6.4.19",
33
- "@storybook/addon-storysource": "^6.4.19",
34
- "@storybook/addons": "^6.4.19",
35
- "@storybook/builder-webpack5": "^6.4.19",
36
- "@storybook/manager-webpack5": "^6.4.19",
37
- "@storybook/react": "^6.4.19",
38
- "@storybook/theming": "^6.4.19",
50
+ "@storybook/addon-actions": "^6.5.14",
51
+ "@storybook/addon-backgrounds": "^6.5.14",
52
+ "@storybook/addon-docs": "^6.5.14",
53
+ "@storybook/addon-storysource": "^6.5.14",
54
+ "@storybook/addons": "^6.5.14",
55
+ "@storybook/builder-webpack5": "^6.5.14",
56
+ "@storybook/manager-webpack5": "^6.5.14",
57
+ "@storybook/react": "^6.5.14",
58
+ "@storybook/theming": "^6.5.14",
39
59
  "@svgr/core": "^6.2.1",
40
60
  "@svgr/plugin-jsx": "^6.2.1",
41
61
  "@svgr/plugin-svgo": "^6.2.0",
42
62
  "@svgr/webpack": "^6.2.1",
43
63
  "@testing-library/react": "^12.1.4",
64
+ "@testing-library/user-event": "^14.4.3",
44
65
  "@types/body-scroll-lock": "^3.1.0",
45
66
  "@types/enzyme": "^3.10.11",
46
67
  "@types/jest": "^27.4.1",
47
68
  "@types/lodash": "^4.14.180",
69
+ "@types/overlayscrollbars": "^1.12.1",
48
70
  "@types/react": "^17.0.40",
49
71
  "@types/react-dom": "^17.0.13",
50
72
  "@types/react-transition-group": "^4.4.4",
51
73
  "@wojtekmaj/enzyme-adapter-react-17": "^0.6.6",
52
74
  "babel-jest": "^27.5.1",
53
- "babel-loader": "^8.2.3",
54
- "babel-preset-jest": "^27.5.1",
75
+ "clipboard": "^2.0.11",
55
76
  "copyfiles": "^2.4.1",
56
77
  "css-loader": "^6.7.1",
57
78
  "enzyme": "^3.9.0",
58
79
  "enzyme-to-json": "^3.6.2",
59
80
  "eslint": "^8.11.0",
81
+ "eslint-plugin-storybook": "^0.6.4",
60
82
  "file-loader": "^6.2.0",
61
83
  "handlebars": "^4.7.7",
62
84
  "husky": "^7.0.4",
63
- "jest": "^27.5.1",
64
- "jest-css-modules-transform": "^4.3.0",
85
+ "jest": "^29.3.1",
86
+ "jest-css-modules-transform": "^4.4.2",
87
+ "jest-environment-jsdom": "^29.3.1",
65
88
  "lint-staged": "^12.3.5",
89
+ "lorem-ipsum": "^2.0.8",
66
90
  "postcss": "^8.4.11",
67
91
  "prettier": "^2.5.1",
68
92
  "react": "^17.0.2",
@@ -73,29 +97,13 @@
73
97
  "sass-loader": "^12.6.0",
74
98
  "style-loader": "^3.3.1",
75
99
  "stylelint": "^14.5.3",
76
- "typescript": "^4.6.2",
77
- "typescript-plugin-css-modules": "^3.4.0",
78
- "webpack": "^5.70.0"
100
+ "ts-node": "^10.9.1",
101
+ "typescript": "^4.9.4",
102
+ "typescript-plugin-css-modules": "^4.1.1",
103
+ "webpack": "^5.75.0"
79
104
  },
80
105
  "peerDependencies": {
81
106
  "react": ">=17",
82
107
  "react-dom": ">=17"
83
- },
84
- "scripts": {
85
- "prepare": "",
86
- "export:colors": "node .template/build.mjs",
87
- "build:before": "rimraf build",
88
- "build:main": "tsc --project tsconfig.build.json",
89
- "build:after": "node dist.js",
90
- "build": "npm run build:before && npm run build:main && npm run build:after",
91
- "test": "BROWSERSLIST_ENV=\"test\" npx jest",
92
- "coverage": "jest --clearCache && BROWSERSLIST_ENV=\"test\" npx jest --coverage",
93
- "type-check": "tsc -p . --noEmit",
94
- "lint:scripts": "eslint --cache src/ --ext .js,.jsx,.ts,.tsx",
95
- "lint:styles": "stylelint 'src/**/*.{css,scss}'",
96
- "storybook": "BROWSERSLIST_ENV=\"storybook\" npx start-storybook -p 9009 -c .storybook",
97
- "storybook:build": "BROWSERSLIST_ENV=\"storybook\" npx build-storybook --quiet --loglevel error -o build-storybook",
98
- "prettier": "prettier --write \"./src/**/*.{js,jsx,ts,tsx,css,scss}\" --loglevel error",
99
- "prettier:check": "prettier --check \"./src/**/*.{js,jsx,ts,tsx,css,scss}\" --loglevel error"
100
108
  }
101
109
  }
@@ -2,12 +2,12 @@ interface IPageButton {
2
2
  value: number;
3
3
  content: string | number;
4
4
  }
5
- declare type State = {
5
+ type State = {
6
6
  current: number;
7
7
  range: number;
8
8
  total: number;
9
9
  };
10
- export declare const cx: (...args: import("classnames").Argument[]) => string;
10
+ export declare const cx: (...args: import("classnames").ArgumentArray) => string;
11
11
  /**
12
12
  * Фабрика объектов с данными о кнопке страницы.
13
13
  * @param value Номер целевой страницы.
package/panel/index.d.ts CHANGED
@@ -1,24 +1,38 @@
1
- import React from 'react';
2
- import { Token } from '../colors';
1
+ import { CSSProperties, ReactNode } from 'react';
2
+ import type { LinkProps } from '../link';
3
+ export type PanelType = 'info' | 'error' | 'success' | 'warning';
3
4
  export interface PanelProps {
4
- /** Наименование цвета панели. */
5
- color?: Token;
6
- /** Наименование цвета содержимого. */
7
- contentColor?: Token;
8
- /** Нужно ли стилизовать как inline-элемент. */
9
- inline?: boolean;
10
- /** Компонент иконки. */
11
- icon?: React.ComponentType<React.SVGAttributes<SVGSVGElement>>;
5
+ /** Тип панели. Влияет на отображение. */
6
+ type?: PanelType;
7
+ /** Иконка перед основным контентом. */
8
+ adornmentStart?: ReactNode;
9
+ /** Иконка после основного контента. */
10
+ adornmentEnd?: ReactNode;
12
11
  /** CSS-класс корневого элемента. */
13
12
  className?: string;
14
- /** Содержимое в виде строки с html-версткой. */
15
- html?: string;
13
+ /** Стили корневого элемента панели. */
14
+ style?: CSSProperties;
15
+ /** Содержимое. */
16
+ children?: ReactNode;
16
17
  /** Идентификатор для систем автоматизированного тестирования. */
17
18
  'data-testid'?: string;
18
19
  }
20
+ export declare const LINK_COLOR_BY_TYPE: Record<PanelType, LinkProps['color']>;
19
21
  /**
20
22
  * Компонент панели с информацией.
21
23
  * @param props Свойства.
22
24
  * @return Элемент.
23
25
  */
24
- export declare const Panel: React.FC<PanelProps>;
26
+ export declare function Panel({ type, adornmentStart, adornmentEnd, className, style, children, 'data-testid': testId, }: PanelProps): JSX.Element;
27
+ export declare namespace Panel {
28
+ var UnknownContent: typeof PanelUnknownContent;
29
+ }
30
+ /**
31
+ * Компонент для вывода неизвестной html-верстки, стилизованной по гайдам Panel.
32
+ * @param props Свойства.
33
+ * @return Элемент.
34
+ */
35
+ declare function PanelUnknownContent({ markup }: {
36
+ markup: string;
37
+ }): JSX.Element;
38
+ export {};
package/panel/index.js CHANGED
@@ -3,22 +3,56 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.Panel = void 0;
6
+ exports.Panel = exports.LINK_COLOR_BY_TYPE = void 0;
7
7
  const react_1 = __importDefault(require("react"));
8
- const bind_1 = __importDefault(require("classnames/bind"));
9
8
  const colors_1 = require("../styling/colors");
10
- const colors_2 = require("../colors");
9
+ const bind_1 = __importDefault(require("classnames/bind"));
11
10
  const panel_module_scss_1 = __importDefault(require("./panel.module.scss"));
12
11
  const cx = bind_1.default.bind(panel_module_scss_1.default);
12
+ const PANEL_COLORS_BY_TYPE = {
13
+ info: {
14
+ textColor: 'basic-gray87',
15
+ panelColor: 'basic-gray4',
16
+ },
17
+ error: {
18
+ textColor: 'basic-white',
19
+ panelColor: 'additional-deep-red',
20
+ },
21
+ success: {
22
+ textColor: 'basic-white',
23
+ panelColor: 'additional-teal',
24
+ },
25
+ warning: {
26
+ textColor: 'basic-gray87',
27
+ panelColor: 'additional-yellow',
28
+ },
29
+ };
30
+ exports.LINK_COLOR_BY_TYPE = {
31
+ info: 'basic-blue',
32
+ error: 'basic-white',
33
+ success: 'basic-white',
34
+ warning: 'basic-gray87',
35
+ };
13
36
  /**
14
37
  * Компонент панели с информацией.
15
38
  * @param props Свойства.
16
39
  * @return Элемент.
17
40
  */
18
- const Panel = ({ color: panelColor = 'basic-gray4', contentColor = 'basic-gray87', inline = false, icon: Icon, className, children, html, 'data-testid': testId = 'panel', }) => {
19
- const contentProps = html ? { dangerouslySetInnerHTML: { __html: html } } : { children };
20
- return (react_1.default.createElement("div", { className: cx('panel', inline && 'inline', (0, colors_1.bgColor)(panelColor), className), "data-testid": testId },
21
- Icon && (react_1.default.createElement(Icon, { fill: colors_2.COLORS.get(contentColor), width: 16, height: 20, className: cx('icon'), "aria-hidden": 'true' })),
22
- react_1.default.createElement("div", Object.assign({}, contentProps, { className: cx('content', (0, colors_1.color)(contentColor)) }))));
23
- };
41
+ function Panel({ type = 'info', adornmentStart, adornmentEnd, className, style, children, 'data-testid': testId = 'panel', }) {
42
+ const textColor = PANEL_COLORS_BY_TYPE[type].textColor;
43
+ const panelColor = PANEL_COLORS_BY_TYPE[type].panelColor;
44
+ return (react_1.default.createElement("div", { className: cx('root', `type-${type}`, (0, colors_1.bgColor)(panelColor), (0, colors_1.color)(textColor), className), "data-testid": testId, style: style },
45
+ adornmentStart && react_1.default.createElement("div", { className: cx('adornment') }, adornmentStart),
46
+ react_1.default.createElement("div", { className: cx('main') }, children),
47
+ adornmentEnd && react_1.default.createElement("div", { className: cx('adornment') }, adornmentEnd)));
48
+ }
24
49
  exports.Panel = Panel;
50
+ /**
51
+ * Компонент для вывода неизвестной html-верстки, стилизованной по гайдам Panel.
52
+ * @param props Свойства.
53
+ * @return Элемент.
54
+ */
55
+ function PanelUnknownContent({ markup }) {
56
+ return react_1.default.createElement("div", { className: cx('unknown-content'), dangerouslySetInnerHTML: { __html: markup } });
57
+ }
58
+ Panel.UnknownContent = PanelUnknownContent;
@@ -1,29 +1,70 @@
1
- .panel {
1
+ @use '../colors';
2
+
3
+ .root {
2
4
  display: flex;
5
+ align-items: flex-start;
3
6
  padding: 16px;
4
7
  font-size: 14px;
5
8
  line-height: 20px;
6
9
  border-radius: 4px;
7
10
  overflow: hidden;
8
11
  box-sizing: border-box;
9
- &.inline {
10
- display: inline-flex;
12
+ &.type-info .unknown-content {
13
+ a {
14
+ color: colors.$basic-blue;
15
+ text-decoration: underline;
16
+ &:hover {
17
+ color: colors.$additional-deep-blue;
18
+ }
19
+ }
20
+ }
21
+ &.type-error .unknown-content {
22
+ a {
23
+ color: colors.$basic-white;
24
+ text-decoration: underline;
25
+ &:hover {
26
+ color: colors.$basic-gray4;
27
+ }
28
+ }
29
+ }
30
+ &.type-success .unknown-content {
31
+ a {
32
+ color: colors.$basic-white;
33
+ text-decoration: underline;
34
+ &:hover {
35
+ color: colors.$basic-gray4;
36
+ }
37
+ }
38
+ }
39
+ &.type-warning .unknown-content {
40
+ a {
41
+ color: colors.$basic-gray87;
42
+ text-decoration: underline;
43
+ &:hover {
44
+ color: colors.$basic-gray54;
45
+ }
46
+ }
11
47
  }
12
48
  }
13
49
 
14
- .icon {
50
+ .adornment {
15
51
  flex-grow: 0;
16
52
  flex-shrink: 0;
53
+ svg {
54
+ display: inline-block;
55
+ fill: currentColor; // чтобы иконка подхватывала цвет текста панели
56
+ vertical-align: -3px; // чтобы иконка выравнивалась по линии первой строки текста
57
+ }
17
58
  }
18
59
 
19
- .content {
60
+ .main {
20
61
  flex-grow: 1;
21
62
  }
22
63
 
23
- .icon + .content {
64
+ .adornment + .main {
24
65
  margin-left: 16px;
25
66
  }
26
67
 
27
- .rotate-180 {
28
- transform: rotate(180deg);
68
+ .main + .adornment {
69
+ margin-left: 16px;
29
70
  }
@@ -1,28 +1,4 @@
1
- import React from 'react';
2
- import { TextFieldProps } from '../text-field';
3
- import { MaskState } from '../masked-field';
4
- import { Country } from './presets';
5
- interface PhoneInputStyle extends React.CSSProperties {
6
- '--phone-input-width'?: number | string;
7
- }
8
- export interface PhoneInputProps extends Omit<TextFieldProps, 'onChange' | 'onBlur' | 'value' | 'ref' | 'style' | 'multiline'> {
9
- /** Сработает при "blur". */
10
- onBlur?: (e: React.FocusEvent<HTMLInputElement>, s: MaskState & {
11
- ready?: boolean;
12
- }) => void;
13
- /** Сработает при изменении поля. Не рекомендуется использовать. */
14
- onChange?: React.ChangeEventHandler<HTMLInputElement>;
15
- /** Срабатывает при изменении страны. */
16
- onCountrySelect?: (c: Country) => void;
17
- /** Значение. */
18
- value?: string;
19
- /** Стили. */
20
- style?: PhoneInputStyle;
21
- }
22
- /**
23
- * Компонент поля ввода номера телефона.
24
- * @param props Параметры компонента.
25
- * @return Элемент.
26
- */
27
- export declare const PhoneInput: ({ "data-testid": testId, className, label, onBlur, onCountrySelect, style, value, onChange, ...restProps }: PhoneInputProps) => JSX.Element;
28
- export {};
1
+ import { PhoneInputProps } from './types';
2
+ import { PhoneInput } from './phone-input';
3
+ export type { PhoneInputProps };
4
+ export { PhoneInput };
@@ -1,124 +1,5 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __rest = (this && this.__rest) || function (s, e) {
26
- var t = {};
27
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
28
- t[p] = s[p];
29
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
30
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
31
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
32
- t[p[i]] = s[p[i]];
33
- }
34
- return t;
35
- };
36
- var __importDefault = (this && this.__importDefault) || function (mod) {
37
- return (mod && mod.__esModule) ? mod : { "default": mod };
38
- };
39
2
  Object.defineProperty(exports, "__esModule", { value: true });
40
3
  exports.PhoneInput = void 0;
41
- const react_1 = __importStar(require("react"));
42
- const down_1 = __importDefault(require("@sima-land/ui-quarks/icons/16x16/Stroked/Arrows/down"));
43
- const up_1 = __importDefault(require("@sima-land/ui-quarks/icons/16x16/Stroked/Arrows/up"));
44
- const dropdown_1 = require("../dropdown");
45
- const dropdown_item_1 = require("../dropdown-item");
46
- const text_field_1 = require("../text-field");
47
- const masked_field_1 = require("../masked-field");
48
- const hooks_1 = require("../hooks");
49
- const presets_1 = require("./presets");
50
- const utils_1 = require("./utils");
51
- const bind_1 = __importDefault(require("classnames/bind"));
52
- const phone_input_module_scss_1 = __importDefault(require("./phone-input.module.scss"));
53
- const cx = bind_1.default.bind(phone_input_module_scss_1.default);
54
- /**
55
- * Удаляет из значения код переданной страны.
56
- * @param value Значение.
57
- * @param country Данные страны.
58
- * @return Значение без кода.
59
- */
60
- const formatValue = (value, country) => value.replace(/\D/g, '').slice(country.codeChars.length);
61
- /**
62
- * Компонент поля ввода номера телефона.
63
- * @param props Параметры компонента.
64
- * @return Элемент.
65
- */
66
- const PhoneInput = (_a) => {
67
- var { 'data-testid': testId, className, label = 'Телефон', onBlur, onCountrySelect, style, value = '', onChange } = _a, restProps = __rest(_a, ['data-testid', "className", "label", "onBlur", "onCountrySelect", "style", "value", "onChange"]);
68
- // маску определяем автоматически только при старте
69
- const [country, setCountry] = (0, react_1.useState)((0, utils_1.defineCountry)(value));
70
- const [cleanValue, setCleanValue] = (0, react_1.useState)(formatValue(value, country));
71
- const [withMenu, toggleMenu] = (0, react_1.useState)(false);
72
- const rootRef = (0, react_1.useRef)(null);
73
- const openerRef = (0, react_1.useRef)(null);
74
- (0, react_1.useEffect)(() => {
75
- setCleanValue(formatValue(value, country));
76
- }, [value]);
77
- (0, hooks_1.useOutsideClick)(rootRef, () => {
78
- toggleMenu(false);
79
- });
80
- const AdornmentSVG = withMenu ? up_1.default : down_1.default;
81
- const commonFieldProps = Object.assign(Object.assign({}, restProps), { label, multiline: false, className: cx('field'), endAdornment: (react_1.default.createElement("div", { ref: openerRef, className: cx('adornment'), "data-testid": 'phone-input:dropdown-opener', onClick: () => {
82
- toggleMenu(a => !a);
83
- } },
84
- react_1.default.createElement("img", { alt: '', width: 24, height: 24, src: country.imageSrc }),
85
- react_1.default.createElement(AdornmentSVG, { className: cx('arrow') }))), onClick: event => {
86
- const opener = openerRef.current;
87
- if (opener instanceof Node &&
88
- event.target instanceof Node &&
89
- (opener === event.target || opener.contains(event.target))) {
90
- event.preventDefault(); // чтобы не фокусировалось на поле
91
- }
92
- else {
93
- toggleMenu(false);
94
- }
95
- } });
96
- return (react_1.default.createElement("div", { ref: rootRef, "data-testid": testId, style: style, className: cx('root', className) },
97
- country.id === presets_1.IDS.other ? (react_1.default.createElement(text_field_1.TextField, Object.assign({}, commonFieldProps, { onChange: (e) => {
98
- e.target.value = e.target.value.replace(/\D/g, '').slice(0, 20);
99
- onChange && onChange(e);
100
- }, onBlur: e => {
101
- onBlur &&
102
- onBlur(e, {
103
- value: e.target.value,
104
- cleanValue: e.target.value,
105
- ready: e.target.value.length > 0,
106
- });
107
- } }))) : (react_1.default.createElement(masked_field_1.MaskedField, Object.assign({}, commonFieldProps, {
108
- // убираем код страны, так как он уже зашит в маску
109
- value: cleanValue, mask: country.mask, onBlur: (event, state) => {
110
- onBlur &&
111
- onBlur(event, Object.assign(Object.assign({}, state), {
112
- // вставляем код страны обратно в чистое значение
113
- cleanValue: `${country.codeChars}${state.cleanValue}` }));
114
- } }))),
115
- withMenu && (react_1.default.createElement(dropdown_1.Dropdown, { role: 'menu', className: cx('menu'), "data-testid": 'phone-input:dropdown' }, presets_1.countriesList.map((item, index) => item.id === country.id ? null : (react_1.default.createElement(dropdown_item_1.DropdownItem, { key: index, size: 'l', role: 'menuitem', className: cx('menu-item'), onClick: () => {
116
- toggleMenu(false);
117
- setCountry(item);
118
- onCountrySelect && onCountrySelect(item);
119
- } },
120
- react_1.default.createElement("img", { alt: '', width: 24, height: 24, src: item.imageSrc }),
121
- react_1.default.createElement("span", { className: cx('item-name') }, item.name),
122
- react_1.default.createElement("span", { className: cx('item-code') }, item.code))))))));
123
- };
124
- exports.PhoneInput = PhoneInput;
4
+ const phone_input_1 = require("./phone-input");
5
+ Object.defineProperty(exports, "PhoneInput", { enumerable: true, get: function () { return phone_input_1.PhoneInput; } });
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ import { PhoneInputProps } from './types';
3
+ /**
4
+ * Поле ввода номера телефона.
5
+ * @param props Свойства.
6
+ * @return Элемент.
7
+ */
8
+ export declare function PhoneInput({ value, defaultValue, label, inputRef: inputRefProp, blockRef: blockRefProp, onBlur, onChange, onFocus, onCountrySelect, 'data-testid': testId, ...props }: PhoneInputProps): JSX.Element;