@skbkontur/react-ui 0.0.0-a5ba2462c5 → 0.0.0-a6f09fbded

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 (246) hide show
  1. package/CHANGELOG.md +0 -30
  2. package/cjs/components/Autocomplete/Autocomplete.md +113 -0
  3. package/cjs/components/Button/Button.md +261 -0
  4. package/cjs/components/Calendar/Calendar.md +276 -0
  5. package/cjs/components/Calendar/CalendarDay.md +70 -0
  6. package/cjs/components/Center/Center.md +26 -0
  7. package/cjs/components/Checkbox/Checkbox.md +171 -0
  8. package/cjs/components/ComboBox/ComboBox.d.ts +11 -5
  9. package/cjs/components/ComboBox/ComboBox.js +10 -1
  10. package/cjs/components/ComboBox/ComboBox.js.map +1 -1
  11. package/cjs/components/ComboBox/ComboBox.md +574 -0
  12. package/cjs/components/CurrencyInput/CurrencyInput.md +39 -0
  13. package/cjs/components/CurrencyLabel/CurrencyLabel.js +2 -2
  14. package/cjs/components/CurrencyLabel/CurrencyLabel.js.map +1 -1
  15. package/cjs/components/CurrencyLabel/CurrencyLabel.md +29 -0
  16. package/cjs/components/DateInput/DateInput.md +111 -0
  17. package/cjs/components/DatePicker/DatePicker.md +368 -0
  18. package/cjs/components/Dropdown/Dropdown.md +45 -0
  19. package/cjs/components/DropdownMenu/DropdownMenu.md +290 -0
  20. package/cjs/components/FileUploader/FileUploader.md +131 -0
  21. package/cjs/components/FxInput/FxInput.md +31 -0
  22. package/cjs/components/Gapped/Gapped.md +44 -0
  23. package/cjs/components/GlobalLoader/GlobalLoader.md +97 -0
  24. package/cjs/components/Group/Group.md +19 -0
  25. package/cjs/components/Hint/Hint.md +86 -0
  26. package/cjs/components/Input/Input.md +86 -0
  27. package/cjs/components/Input/InputLayout/InputLayout.d.ts +1 -0
  28. package/cjs/components/Input/InputLayout/InputLayout.js +4 -2
  29. package/cjs/components/Input/InputLayout/InputLayout.js.map +1 -1
  30. package/cjs/components/Kebab/Kebab.md +306 -0
  31. package/cjs/components/Link/Link.md +182 -0
  32. package/cjs/components/Loader/Loader.md +33 -0
  33. package/cjs/components/MaskedInput/MaskedInput.d.ts +0 -8
  34. package/cjs/components/MaskedInput/MaskedInput.js +2 -23
  35. package/cjs/components/MaskedInput/MaskedInput.js.map +1 -1
  36. package/cjs/components/MaskedInput/MaskedInput.md +114 -0
  37. package/cjs/components/MenuFooter/MenuFooter.md +27 -0
  38. package/cjs/components/MenuHeader/MenuHeader.md +35 -0
  39. package/cjs/components/MenuItem/MenuItem.md +139 -0
  40. package/cjs/components/MenuSeparator/MenuSeparator.md +14 -0
  41. package/cjs/components/MiniModal/MiniModal.md +231 -0
  42. package/cjs/components/Modal/Modal.md +56 -0
  43. package/cjs/components/Paging/Paging.md +57 -0
  44. package/cjs/components/PasswordInput/PasswordInput.md +29 -0
  45. package/cjs/components/Radio/Radio.md +57 -0
  46. package/cjs/components/RadioGroup/RadioGroup.md +44 -0
  47. package/cjs/components/ResponsiveLayout/ResponsiveLayout.md +75 -0
  48. package/cjs/components/ScrollContainer/ScrollContainer.md +224 -0
  49. package/cjs/components/Select/Select.md +113 -0
  50. package/cjs/components/SidePage/SidePage.md +65 -0
  51. package/cjs/components/SingleToast/SingleToast.md +36 -0
  52. package/cjs/components/Spinner/Spinner.md +36 -0
  53. package/cjs/components/Sticky/Sticky.md +28 -0
  54. package/cjs/components/Switcher/Switcher.md +111 -0
  55. package/cjs/components/Tabs/Tab.md +73 -0
  56. package/cjs/components/Tabs/Tabs.md +54 -0
  57. package/cjs/components/Textarea/Textarea.d.ts +6 -1
  58. package/cjs/components/Textarea/Textarea.js +16 -3
  59. package/cjs/components/Textarea/Textarea.js.map +1 -1
  60. package/cjs/components/Textarea/Textarea.md +58 -0
  61. package/cjs/components/Textarea/Textarea.styles.js +2 -1
  62. package/cjs/components/Textarea/Textarea.styles.js.map +1 -1
  63. package/cjs/components/Toast/Toast.md +69 -0
  64. package/cjs/components/Toggle/Toggle.md +110 -0
  65. package/cjs/components/Token/Token.md +48 -0
  66. package/cjs/components/TokenInput/TokenInput.md +277 -0
  67. package/cjs/components/Tooltip/Tooltip.d.ts +1 -1
  68. package/cjs/components/Tooltip/Tooltip.js +6 -8
  69. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  70. package/cjs/components/Tooltip/Tooltip.md +322 -0
  71. package/cjs/components/TooltipMenu/TooltipMenu.md +241 -0
  72. package/cjs/internal/ClearCrossIcon/ClearCrossIcon.d.ts +1 -0
  73. package/cjs/internal/ClearCrossIcon/ClearCrossIcon.js +16 -7
  74. package/cjs/internal/ClearCrossIcon/ClearCrossIcon.js.map +1 -1
  75. package/cjs/internal/ClearCrossIcon/ClearCrossIcon.styles.d.ts +3 -0
  76. package/cjs/internal/ClearCrossIcon/ClearCrossIcon.styles.js +27 -9
  77. package/cjs/internal/ClearCrossIcon/ClearCrossIcon.styles.js.map +1 -1
  78. package/cjs/internal/CustomComboBox/ComboBoxView.d.ts +7 -6
  79. package/cjs/internal/CustomComboBox/ComboBoxView.js +2 -7
  80. package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  81. package/cjs/internal/CustomComboBox/CustomComboBox.d.ts +6 -5
  82. package/cjs/internal/CustomComboBox/CustomComboBox.js +1 -3
  83. package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
  84. package/cjs/internal/CustomComboBox/getComboBoxTheme.d.ts +2 -1
  85. package/cjs/internal/CustomComboBox/getComboBoxTheme.js +10 -7
  86. package/cjs/internal/CustomComboBox/getComboBoxTheme.js.map +1 -1
  87. package/cjs/internal/DataTids/DATATIDS.md +12 -0
  88. package/cjs/internal/DataTids/DataTids.d.ts +12 -0
  89. package/cjs/internal/DataTids/DataTids.js +50 -0
  90. package/cjs/internal/DataTids/DataTids.js.map +1 -0
  91. package/cjs/internal/DataTids/DataTids.styles.d.ts +7 -0
  92. package/cjs/internal/DataTids/DataTids.styles.js +42 -0
  93. package/cjs/internal/DataTids/DataTids.styles.js.map +1 -0
  94. package/cjs/internal/DataTids/componentsDataTids.d.ts +5 -0
  95. package/cjs/internal/DataTids/componentsDataTids.js +15 -0
  96. package/cjs/internal/DataTids/componentsDataTids.js.map +1 -0
  97. package/cjs/internal/InputLikeText/InputLikeText.styles.d.ts +1 -0
  98. package/cjs/internal/InputLikeText/InputLikeText.styles.js +12 -4
  99. package/cjs/internal/InputLikeText/InputLikeText.styles.js.map +1 -1
  100. package/cjs/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.d.ts +37 -0
  101. package/cjs/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.js +235 -0
  102. package/cjs/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.js.map +1 -0
  103. package/cjs/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles.d.ts +3 -0
  104. package/cjs/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles.js +10 -0
  105. package/cjs/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles.js.map +1 -0
  106. package/cjs/internal/ThemePlayground/Playground.md +7 -0
  107. package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  108. package/cjs/internal/themes/BasicTheme.d.ts +2 -0
  109. package/cjs/internal/themes/BasicTheme.js +11 -6
  110. package/cjs/internal/themes/BasicTheme.js.map +1 -1
  111. package/cjs/internal/themes/DarkTheme5_4.js +10 -3
  112. package/cjs/internal/themes/DarkTheme5_4.js.map +1 -1
  113. package/cjs/internal/themes/LightTheme5_4.js +10 -3
  114. package/cjs/internal/themes/LightTheme5_4.js.map +1 -1
  115. package/cjs/internal/themes/consts.d.ts +7 -0
  116. package/cjs/internal/themes/consts.js +7 -0
  117. package/cjs/internal/themes/consts.js.map +1 -0
  118. package/cjs/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +64 -0
  119. package/cjs/lib/locale/LOCALECONTEXT.md +222 -0
  120. package/cjs/lib/theming/ThemeContext.md +265 -0
  121. package/components/Autocomplete/Autocomplete.md +113 -0
  122. package/components/Button/Button.md +261 -0
  123. package/components/Calendar/Calendar.md +276 -0
  124. package/components/Calendar/CalendarDay.md +70 -0
  125. package/components/Center/Center.md +26 -0
  126. package/components/Checkbox/Checkbox.md +171 -0
  127. package/components/ComboBox/ComboBox/ComboBox.js +2 -1
  128. package/components/ComboBox/ComboBox/ComboBox.js.map +1 -1
  129. package/components/ComboBox/ComboBox.d.ts +11 -5
  130. package/components/ComboBox/ComboBox.md +574 -0
  131. package/components/CurrencyInput/CurrencyInput.md +39 -0
  132. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js +1 -1
  133. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js.map +1 -1
  134. package/components/CurrencyLabel/CurrencyLabel.md +29 -0
  135. package/components/DateInput/DateInput.md +111 -0
  136. package/components/DatePicker/DatePicker.md +368 -0
  137. package/components/Dropdown/Dropdown.md +45 -0
  138. package/components/DropdownMenu/DropdownMenu.md +290 -0
  139. package/components/FileUploader/FileUploader.md +131 -0
  140. package/components/FxInput/FxInput.md +31 -0
  141. package/components/Gapped/Gapped.md +44 -0
  142. package/components/GlobalLoader/GlobalLoader.md +97 -0
  143. package/components/Group/Group.md +19 -0
  144. package/components/Hint/Hint.md +86 -0
  145. package/components/Input/Input.md +86 -0
  146. package/components/Input/InputLayout/InputLayout/InputLayout.js +5 -2
  147. package/components/Input/InputLayout/InputLayout/InputLayout.js.map +1 -1
  148. package/components/Input/InputLayout/InputLayout.d.ts +1 -0
  149. package/components/Kebab/Kebab.md +306 -0
  150. package/components/Link/Link.md +182 -0
  151. package/components/Loader/Loader.md +33 -0
  152. package/components/MaskedInput/MaskedInput/MaskedInput.js +1 -11
  153. package/components/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
  154. package/components/MaskedInput/MaskedInput.d.ts +0 -8
  155. package/components/MaskedInput/MaskedInput.md +114 -0
  156. package/components/MenuFooter/MenuFooter.md +27 -0
  157. package/components/MenuHeader/MenuHeader.md +35 -0
  158. package/components/MenuItem/MenuItem.md +139 -0
  159. package/components/MenuSeparator/MenuSeparator.md +14 -0
  160. package/components/MiniModal/MiniModal.md +231 -0
  161. package/components/Modal/Modal.md +56 -0
  162. package/components/Paging/Paging.md +57 -0
  163. package/components/PasswordInput/PasswordInput.md +29 -0
  164. package/components/Radio/Radio.md +57 -0
  165. package/components/RadioGroup/RadioGroup.md +44 -0
  166. package/components/ResponsiveLayout/ResponsiveLayout.md +75 -0
  167. package/components/ScrollContainer/ScrollContainer.md +224 -0
  168. package/components/Select/Select.md +113 -0
  169. package/components/SidePage/SidePage.md +65 -0
  170. package/components/SingleToast/SingleToast.md +36 -0
  171. package/components/Spinner/Spinner.md +36 -0
  172. package/components/Sticky/Sticky.md +28 -0
  173. package/components/Switcher/Switcher.md +111 -0
  174. package/components/Tabs/Tab.md +73 -0
  175. package/components/Tabs/Tabs.md +54 -0
  176. package/components/Textarea/Textarea/Textarea.js +11 -2
  177. package/components/Textarea/Textarea/Textarea.js.map +1 -1
  178. package/components/Textarea/Textarea.d.ts +6 -1
  179. package/components/Textarea/Textarea.md +58 -0
  180. package/components/Textarea/Textarea.styles/Textarea.styles.js +1 -1
  181. package/components/Textarea/Textarea.styles/Textarea.styles.js.map +1 -1
  182. package/components/Toast/Toast.md +69 -0
  183. package/components/Toggle/Toggle.md +110 -0
  184. package/components/Token/Token.md +48 -0
  185. package/components/TokenInput/TokenInput.md +277 -0
  186. package/components/Tooltip/Tooltip/Tooltip.js +4 -7
  187. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  188. package/components/Tooltip/Tooltip.d.ts +1 -1
  189. package/components/Tooltip/Tooltip.md +322 -0
  190. package/components/TooltipMenu/TooltipMenu.md +241 -0
  191. package/internal/ClearCrossIcon/ClearCrossIcon/ClearCrossIcon.js +21 -7
  192. package/internal/ClearCrossIcon/ClearCrossIcon/ClearCrossIcon.js.map +1 -1
  193. package/internal/ClearCrossIcon/ClearCrossIcon.d.ts +1 -0
  194. package/internal/ClearCrossIcon/ClearCrossIcon.styles/ClearCrossIcon.styles.js +14 -5
  195. package/internal/ClearCrossIcon/ClearCrossIcon.styles/ClearCrossIcon.styles.js.map +1 -1
  196. package/internal/ClearCrossIcon/ClearCrossIcon.styles.d.ts +3 -0
  197. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +44 -51
  198. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
  199. package/internal/CustomComboBox/ComboBoxView.d.ts +7 -6
  200. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js +3 -5
  201. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
  202. package/internal/CustomComboBox/CustomComboBox.d.ts +6 -5
  203. package/internal/CustomComboBox/getComboBoxTheme/getComboBoxTheme.js +5 -3
  204. package/internal/CustomComboBox/getComboBoxTheme/getComboBoxTheme.js.map +1 -1
  205. package/internal/CustomComboBox/getComboBoxTheme.d.ts +2 -1
  206. package/internal/DataTids/DATATIDS.md +12 -0
  207. package/internal/DataTids/DataTids/DataTids.js +69 -0
  208. package/internal/DataTids/DataTids/DataTids.js.map +1 -0
  209. package/internal/DataTids/DataTids/package.json +6 -0
  210. package/internal/DataTids/DataTids.d.ts +12 -0
  211. package/internal/DataTids/DataTids.styles/DataTids.styles.js +20 -0
  212. package/internal/DataTids/DataTids.styles/DataTids.styles.js.map +1 -0
  213. package/internal/DataTids/DataTids.styles/package.json +6 -0
  214. package/internal/DataTids/DataTids.styles.d.ts +7 -0
  215. package/internal/DataTids/componentsDataTids/componentsDataTids.js +12 -0
  216. package/internal/DataTids/componentsDataTids/componentsDataTids.js.map +1 -0
  217. package/internal/DataTids/componentsDataTids/package.json +6 -0
  218. package/internal/DataTids/componentsDataTids.d.ts +5 -0
  219. package/internal/InputLikeText/InputLikeText.styles/InputLikeText.styles.js +7 -4
  220. package/internal/InputLikeText/InputLikeText.styles/InputLikeText.styles.js.map +1 -1
  221. package/internal/InputLikeText/InputLikeText.styles.d.ts +1 -0
  222. package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout/InternalTextareaWithLayout.js +249 -0
  223. package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout/InternalTextareaWithLayout.js.map +1 -0
  224. package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout/package.json +6 -0
  225. package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.d.ts +37 -0
  226. package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles/InternalTextareaWithLayout.styles.js +8 -0
  227. package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles/InternalTextareaWithLayout.styles.js.map +1 -0
  228. package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles/package.json +6 -0
  229. package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles.d.ts +3 -0
  230. package/internal/ThemePlayground/Playground.md +7 -0
  231. package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  232. package/internal/themes/BasicTheme/BasicTheme.js +4 -4
  233. package/internal/themes/BasicTheme/BasicTheme.js.map +1 -1
  234. package/internal/themes/BasicTheme.d.ts +2 -0
  235. package/internal/themes/DarkTheme5_4/DarkTheme5_4.js +4 -2
  236. package/internal/themes/DarkTheme5_4/DarkTheme5_4.js.map +1 -1
  237. package/internal/themes/LightTheme5_4/LightTheme5_4.js +4 -2
  238. package/internal/themes/LightTheme5_4/LightTheme5_4.js.map +1 -1
  239. package/internal/themes/consts/consts.js +7 -0
  240. package/internal/themes/consts/consts.js.map +1 -0
  241. package/internal/themes/consts/package.json +6 -0
  242. package/internal/themes/consts.d.ts +7 -0
  243. package/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +64 -0
  244. package/lib/locale/LOCALECONTEXT.md +222 -0
  245. package/lib/theming/ThemeContext.md +265 -0
  246. package/package.json +6 -1
@@ -0,0 +1,241 @@
1
+ ### Базовый пример
2
+
3
+ ```jsx harmony
4
+ import { Button, MenuHeader, MenuItem, MenuSeparator } from '@skbkontur/react-ui';
5
+
6
+ <TooltipMenu caption={<Button use="primary">Открыть меню</Button>}>
7
+ <MenuHeader>Заголовок меню</MenuHeader>
8
+ <MenuSeparator />
9
+ <MenuItem>Раз</MenuItem>
10
+ <MenuItem>Два</MenuItem>
11
+ <MenuItem>Три</MenuItem>
12
+ <MenuSeparator />
13
+ <MenuItem>Раз</MenuItem>
14
+ <MenuItem>Два</MenuItem>
15
+ <MenuItem>Три</MenuItem>
16
+ </TooltipMenu>;
17
+ ```
18
+
19
+ ### Управление состоянием тултип-меню
20
+ В проп `caption` помимо компонента можно передать функцию, возвращающую компонент, с помощью которой можно управлять текущим состоянием тултип-меню.
21
+
22
+ ```jsx harmony
23
+ import { Button, MenuHeader, MenuItem, MenuSeparator } from '@skbkontur/react-ui';
24
+
25
+ <TooltipMenu caption={({ opened, openMenu, closeMenu, toggleMenu }) => {
26
+ return (
27
+ <>
28
+ <p>Сейчас тултип-меню { opened ? 'окрыто' : 'закрыто' }</p>
29
+ <Button onClick={toggleMenu}>Переключить меню</Button>
30
+ <Button onClick={openMenu}>Открыть меню</Button>
31
+ <Button onClick={closeMenu}>Закрыть меню</Button>
32
+ </>
33
+ )
34
+ }}>
35
+ <MenuHeader>Заголовок меню</MenuHeader>
36
+ <MenuSeparator />
37
+ <MenuItem>Раз</MenuItem>
38
+ <MenuItem>Два</MenuItem>
39
+ <MenuItem>Три</MenuItem>
40
+ <MenuSeparator />
41
+ <MenuItem>Раз</MenuItem>
42
+ <MenuItem>Два</MenuItem>
43
+ <MenuItem>Три</MenuItem>
44
+ </TooltipMenu>;
45
+ ```
46
+
47
+ ### Ширина
48
+
49
+ ```jsx harmony
50
+ import { Button, MenuHeader, MenuItem, MenuSeparator } from '@skbkontur/react-ui';
51
+
52
+ <TooltipMenu
53
+ caption={<Button use="primary">Открыть меню с заданной шириной</Button>}
54
+ menuWidth={350}
55
+ >
56
+ <MenuHeader>Заголовок меню</MenuHeader>
57
+ <MenuSeparator />
58
+ <MenuItem>Раз</MenuItem>
59
+ <MenuItem>Два</MenuItem>
60
+ <MenuItem>Три</MenuItem>
61
+ <MenuSeparator />
62
+ <MenuItem>Раз</MenuItem>
63
+ <MenuItem>Два</MenuItem>
64
+ <MenuItem>Три</MenuItem>
65
+ </TooltipMenu>;
66
+ ```
67
+
68
+ ### Максимальная высота
69
+
70
+ ```jsx harmony
71
+ import { Button, MenuHeader, MenuItem, MenuSeparator } from '@skbkontur/react-ui';
72
+
73
+ <TooltipMenu
74
+ caption={<Button use="primary">Открыть меню с заданной высотой</Button>}
75
+ menuMaxHeight={150}
76
+ >
77
+ <MenuHeader>Заголовок меню</MenuHeader>
78
+ <MenuSeparator />
79
+ <MenuItem>Раз</MenuItem>
80
+ <MenuItem>Два</MenuItem>
81
+ <MenuItem>Три</MenuItem>
82
+ <MenuSeparator />
83
+ <MenuItem>Раз</MenuItem>
84
+ <MenuItem>Два</MenuItem>
85
+ <MenuItem>Три</MenuItem>
86
+ </TooltipMenu>;
87
+ ```
88
+
89
+ ### Отключенная анимация
90
+
91
+ ```jsx harmony
92
+ import { Button, MenuHeader, MenuItem, MenuSeparator } from '@skbkontur/react-ui';
93
+
94
+ <TooltipMenu
95
+ disableAnimations
96
+ caption={<Button use="primary">Открыть меню без анимации</Button>}
97
+ >
98
+ <MenuHeader>Заголовок меню</MenuHeader>
99
+ <MenuSeparator />
100
+ <MenuItem>Раз</MenuItem>
101
+ <MenuItem>Два</MenuItem>
102
+ <MenuItem>Три</MenuItem>
103
+ </TooltipMenu>;
104
+ ```
105
+
106
+ ### Подпись
107
+ В `caption` можно передать любой элемент.
108
+
109
+ ```jsx harmony
110
+ import { MenuItem } from '@skbkontur/react-ui';
111
+ import { UiMenuBars3HIcon16Regular } from '@skbkontur/icons/icons/UiMenuBars3HIcon/UiMenuBars3HIcon16Regular';
112
+
113
+ <TooltipMenu
114
+ caption={
115
+ <span style={{ display: 'inline-block' }} tabIndex="0">
116
+ <UiMenuBars3HIcon16Regular size={32} />
117
+ </span>
118
+ }
119
+ menuWidth="300px"
120
+ >
121
+ <MenuItem>Раз</MenuItem>
122
+ <MenuItem>Два</MenuItem>
123
+ <MenuItem>Три</MenuItem>
124
+ </TooltipMenu>;
125
+ ```
126
+
127
+ ### Тултип-меню всегда всплывающее справа от `caption`
128
+
129
+ ```jsx harmony
130
+ import { MenuItem } from '@skbkontur/react-ui';
131
+ import { LightbulbIcon16Regular } from '@skbkontur/icons/icons/LightbulbIcon/LightbulbIcon16Regular';
132
+
133
+ <TooltipMenu
134
+ caption={
135
+ <span style={{ display: 'inline-block' }} tabIndex="0">
136
+ <LightbulbIcon16Regular size={32} />
137
+ </span>
138
+ }
139
+ menuWidth="300px"
140
+ positions={['right top', 'right middle', 'right bottom']}
141
+ >
142
+ <MenuItem>Раз</MenuItem>
143
+ <MenuItem>Два</MenuItem>
144
+ <MenuItem>Три</MenuItem>
145
+ </TooltipMenu>;
146
+ ```
147
+
148
+ ### Тултип-меню всегда всплывающее сверху от `caption` и выравненное по правому краю `caption`
149
+
150
+ ```jsx harmony
151
+ import { MenuItem } from '@skbkontur/react-ui';
152
+ import { LightbulbIcon16Regular } from '@skbkontur/icons/icons/LightbulbIcon/LightbulbIcon16Regular';
153
+
154
+ <TooltipMenu
155
+ caption={
156
+ <span style={{ display: 'inline-block' }} tabIndex="0">
157
+ <LightbulbIcon16Regular size={32} />
158
+ </span>
159
+ }
160
+ menuWidth="300px"
161
+ positions={['top right']}
162
+ >
163
+ <MenuItem>Раз</MenuItem>
164
+ <MenuItem>Два</MenuItem>
165
+ <MenuItem>Три</MenuItem>
166
+ </TooltipMenu>;
167
+ ```
168
+
169
+ ### Тултип-меню c шапкой и подвалом
170
+
171
+ ```jsx harmony
172
+ import { Button, MenuHeader, MenuItem, MenuSeparator } from '@skbkontur/react-ui';
173
+
174
+ <TooltipMenu
175
+ header={<p>Это шапка в виде обычного текста</p>}
176
+ footer={<Button>А это подвал в виде кнопки</Button>}
177
+ caption={<Button use="primary">Открыть меню</Button>}
178
+ >
179
+ <MenuItem>Раз</MenuItem>
180
+ <MenuItem>Два</MenuItem>
181
+ <MenuItem>Три</MenuItem>
182
+ </TooltipMenu>;
183
+ ```
184
+
185
+ ### Иконки и автовыравнивание
186
+
187
+ ```jsx harmony
188
+ import { Button, MenuHeader, MenuItem, MenuSeparator, TooltipMenu } from '@skbkontur/react-ui';
189
+ import { PlusIcon16Regular } from '@skbkontur/icons/icons/PlusIcon/PlusIcon16Regular';
190
+
191
+ <TooltipMenu caption={<Button use="primary">Открыть меню</Button>}>
192
+ <MenuHeader>MenuHeader</MenuHeader>
193
+ <MenuItem icon={<PlusIcon16Regular />}>MenuItem1</MenuItem>
194
+ <MenuItem icon={<PlusIcon16Regular />}>MenuItem2</MenuItem>
195
+ <MenuItem>MenuItem3</MenuItem>
196
+ </TooltipMenu>;
197
+ ```
198
+
199
+ ### Иконки и автовыравнивание
200
+
201
+ ```jsx harmony
202
+ import { Button, MenuHeader, MenuItem, MenuSeparator, TooltipMenu } from '@skbkontur/react-ui';
203
+ import { PlusIcon16Regular } from '@skbkontur/icons/icons/PlusIcon/PlusIcon16Regular';
204
+
205
+ <TooltipMenu preventIconsOffset caption={<Button use="primary">Открыть меню</Button>}>
206
+ <MenuHeader>MenuHeader</MenuHeader>
207
+ <MenuItem icon={<PlusIcon16Regular />}>MenuItem1</MenuItem>
208
+ <MenuItem icon={<PlusIcon16Regular />}>MenuItem2</MenuItem>
209
+ <MenuItem>MenuItem3</MenuItem>
210
+ </TooltipMenu>
211
+ ```
212
+
213
+ ### Условный рендер элементов тултип-меню
214
+ (с сохранением поведения [MenuItem](#/Components/MenuItem)).
215
+
216
+ ```jsx harmony
217
+ import {Button, MenuItem, Gapped, MenuSeparator} from '@skbkontur/react-ui';
218
+
219
+ const [showItems, setShowItems] = React.useState(false);
220
+
221
+ const hiddenItems = [
222
+ <MenuSeparator />,
223
+ <MenuItem>А я скрываюсь</MenuItem>,
224
+ <MenuItem>И я</MenuItem>,
225
+ <MenuItem>Я с вами</MenuItem>,
226
+ ];
227
+
228
+
229
+ <Gapped>
230
+ <Button onClick={() => setShowItems(!showItems)}>
231
+ {showItems ? 'Спрятать' : 'Показать'} элементы
232
+ </Button>
233
+
234
+ <TooltipMenu caption={<Button use="primary">Открыть меню</Button>}>
235
+ <MenuItem>Меня видно всегда</MenuItem>
236
+ <MenuItem>Меня тоже</MenuItem>
237
+ <MenuItem>Ага, и меня!</MenuItem>
238
+ {showItems && hiddenItems}
239
+ </TooltipMenu>
240
+ </Gapped>
241
+ ```
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- var _excluded = ["size", "style"];
3
+ var _excluded = ["size", "style", "data-tid"];
4
4
  import React from 'react';
5
5
  import { globalObject } from '@skbkontur/global-object';
6
6
  import { cx } from "../../../lib/theming/Emotion";
@@ -13,17 +13,27 @@ export var ClearCrossIcon = function ClearCrossIcon(_ref) {
13
13
  var _ref$size = _ref.size,
14
14
  size = _ref$size === void 0 ? 'small' : _ref$size,
15
15
  style = _ref.style,
16
+ dataTid = _ref['data-tid'],
16
17
  rest = _objectWithoutPropertiesLoose(_ref, _excluded);
17
18
  var theme = React.useContext(ThemeContext);
18
- var getSizeClassName = function getSizeClassName(size) {
19
+ var getSizeClassNames = function getSizeClassNames(size) {
19
20
  switch (size) {
20
21
  case 'large':
21
- return styles.clearCrossLarge(theme);
22
+ return {
23
+ button: styles.clearCrossLarge(theme),
24
+ span: styles.relativeWidthLarge(theme)
25
+ };
22
26
  case 'medium':
23
- return styles.clearCrossMedium(theme);
27
+ return {
28
+ button: styles.clearCrossMedium(theme),
29
+ span: styles.relativeWidthMedium(theme)
30
+ };
24
31
  case 'small':
25
32
  default:
26
- return styles.clearCrossSmall(theme);
33
+ return {
34
+ button: styles.clearCrossSmall(theme),
35
+ span: styles.relativeWidthSmall(theme)
36
+ };
27
37
  }
28
38
  };
29
39
  var _React$useState = React.useState(false),
@@ -42,12 +52,16 @@ export var ClearCrossIcon = function ClearCrossIcon(_ref) {
42
52
  };
43
53
  return /*#__PURE__*/(
44
54
  React.createElement(CommonWrapper, rest, /*#__PURE__*/
55
+ React.createElement("span", {
56
+ className: getSizeClassNames(size).span
57
+ }, /*#__PURE__*/
45
58
  React.createElement("button", _extends({
59
+ "data-tid": dataTid,
46
60
  type: "button",
47
61
  tabIndex: -1,
48
62
  className: cx(styles.root(theme),
49
63
  // Todo: use &:focus-visible on root instead styles.focus. It supported on Chrome >= 86, Firefox >= 4, Safari >= 15.4
50
- focusedByTab && styles.focus(theme), getSizeClassName(size)),
64
+ focusedByTab && styles.focus(theme), getSizeClassNames(size).button),
51
65
  style: style,
52
66
  onFocus: handleFocus,
53
67
  onBlur: handleBlur
@@ -56,7 +70,7 @@ export var ClearCrossIcon = function ClearCrossIcon(_ref) {
56
70
  React.createElement(CrossIcon, {
57
71
  size: size,
58
72
  focusable: true
59
- })))
73
+ }))))
60
74
  );
61
75
  };
62
76
  ClearCrossIcon.__KONTUR_REACT_UI__ = 'ClearCrossIcon';
@@ -1 +1 @@
1
- {"version":3,"names":["React","globalObject","cx","keyListener","ThemeContext","CommonWrapper","styles","CrossIcon","ClearCrossIcon","_ref","_ref$size","size","style","rest","_objectWithoutPropertiesLoose","_excluded","theme","useContext","getSizeClassName","clearCrossLarge","clearCrossMedium","clearCrossSmall","_React$useState","useState","focusedByTab","setFocusedByTab","handleFocus","requestAnimationFrame","isTabPressed","handleBlur","createElement","_extends","type","tabIndex","className","root","focus","onFocus","onBlur","focusable","__KONTUR_REACT_UI__","displayName"],"sources":["ClearCrossIcon.tsx"],"sourcesContent":["import type { AriaAttributes } from 'react';\nimport React from 'react';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { cx } from '../../lib/theming/Emotion';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { CommonProps } from '../CommonWrapper';\nimport { CommonWrapper } from '../CommonWrapper';\nimport type { SizeProp } from '../../lib/types/props';\nimport type { TokenSize } from '../../components/Token';\n\nimport { styles } from './ClearCrossIcon.styles';\nimport { CrossIcon } from './CrossIcon';\n\nexport interface ClearCrossIconProps\n extends Pick<AriaAttributes, 'aria-label'>,\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n CommonProps {\n /** Ширина и высота иконки крестика\n * @default small */\n size?: SizeProp;\n}\n\nexport const ClearCrossIcon: React.FunctionComponent<ClearCrossIconProps> = ({ size = 'small', style, ...rest }) => {\n const theme = React.useContext(ThemeContext);\n const getSizeClassName = (size: TokenSize) => {\n switch (size) {\n case 'large':\n return styles.clearCrossLarge(theme);\n case 'medium':\n return styles.clearCrossMedium(theme);\n case 'small':\n default:\n return styles.clearCrossSmall(theme);\n }\n };\n\n const [focusedByTab, setFocusedByTab] = React.useState<boolean>(false);\n\n const handleFocus = () => {\n // focus event fires before keyDown eventlistener so we should check tabPressed in async way\n globalObject.requestAnimationFrame?.(() => {\n if (keyListener.isTabPressed) {\n setFocusedByTab(true);\n }\n });\n };\n const handleBlur = () => setFocusedByTab(false);\n\n return (\n <CommonWrapper {...rest}>\n <button\n type=\"button\"\n tabIndex={-1}\n className={cx(\n styles.root(theme),\n // Todo: use &:focus-visible on root instead styles.focus. It supported on Chrome >= 86, Firefox >= 4, Safari >= 15.4\n focusedByTab && styles.focus(theme),\n getSizeClassName(size),\n )}\n style={style}\n onFocus={handleFocus}\n onBlur={handleBlur}\n {...rest}\n >\n <CrossIcon size={size} focusable />\n </button>\n </CommonWrapper>\n );\n};\n\nClearCrossIcon.__KONTUR_REACT_UI__ = 'ClearCrossIcon';\nClearCrossIcon.displayName = 'ClearCrossIcon';\n"],"mappings":";AACA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,YAAY,QAAQ,0BAA0B;;AAEvD,SAASC,EAAE,QAAQ,2BAA2B;AAC9C,SAASC,WAAW,QAAQ,8BAA8B;AAC1D,SAASC,YAAY,QAAQ,gCAAgC;;AAE7D,SAASC,aAAa,QAAQ,kBAAkB;;;;AAIhD,SAASC,MAAM,QAAQ,yBAAyB;AAChD,SAASC,SAAS,QAAQ,aAAa;;;;;;;;;;;AAWvC,OAAO,IAAMC,cAA4D,GAAG,SAA/DA,cAA4DA,CAAAC,IAAA,EAA2C,KAAAC,SAAA,GAAAD,IAAA,CAArCE,IAAI,CAAJA,IAAI,GAAAD,SAAA,cAAG,OAAO,GAAAA,SAAA,CAAEE,KAAK,GAAAH,IAAA,CAALG,KAAK,CAAKC,IAAI,GAAAC,6BAAA,CAAAL,IAAA,EAAAM,SAAA;EAC3G,IAAMC,KAAK,GAAGhB,KAAK,CAACiB,UAAU,CAACb,YAAY,CAAC;EAC5C,IAAMc,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAIP,IAAe,EAAK;IAC5C,QAAQA,IAAI;MACV,KAAK,OAAO;QACV,OAAOL,MAAM,CAACa,eAAe,CAACH,KAAK,CAAC;MACtC,KAAK,QAAQ;QACX,OAAOV,MAAM,CAACc,gBAAgB,CAACJ,KAAK,CAAC;MACvC,KAAK,OAAO;MACZ;QACE,OAAOV,MAAM,CAACe,eAAe,CAACL,KAAK,CAAC;IACxC;EACF,CAAC;;EAED,IAAAM,eAAA,GAAwCtB,KAAK,CAACuB,QAAQ,CAAU,KAAK,CAAC,CAA/DC,YAAY,GAAAF,eAAA,IAAEG,eAAe,GAAAH,eAAA;;EAEpC,IAAMI,WAAW,GAAG,SAAdA,WAAWA,CAAA,EAAS;IACxB;IACAzB,YAAY,CAAC0B,qBAAqB,YAAlC1B,YAAY,CAAC0B,qBAAqB,CAAG,YAAM;MACzC,IAAIxB,WAAW,CAACyB,YAAY,EAAE;QAC5BH,eAAe,CAAC,IAAI,CAAC;MACvB;IACF,CAAC,CAAC;EACJ,CAAC;EACD,IAAMI,UAAU,GAAG,SAAbA,UAAUA,CAAA,UAASJ,eAAe,CAAC,KAAK,CAAC;;EAE/C;IACEzB,KAAA,CAAA8B,aAAA,CAACzB,aAAa,EAAKQ,IAAI;IACrBb,KAAA,CAAA8B,aAAA,WAAAC,QAAA;MACEC,IAAI,EAAC,QAAQ;MACbC,QAAQ,EAAE,CAAC,CAAE;MACbC,SAAS,EAAEhC,EAAE;QACXI,MAAM,CAAC6B,IAAI,CAACnB,KAAK,CAAC;QAClB;QACAQ,YAAY,IAAIlB,MAAM,CAAC8B,KAAK,CAACpB,KAAK,CAAC;QACnCE,gBAAgB,CAACP,IAAI;MACvB,CAAE;MACFC,KAAK,EAAEA,KAAM;MACbyB,OAAO,EAAEX,WAAY;MACrBY,MAAM,EAAET,UAAW;IACfhB,IAAI;;IAERb,KAAA,CAAA8B,aAAA,CAACvB,SAAS,IAACI,IAAI,EAAEA,IAAK,EAAC4B,SAAS,QAAE;IAC5B;IACK,CAAC;;AAEpB,CAAC;;AAED/B,cAAc,CAACgC,mBAAmB,GAAG,gBAAgB;AACrDhC,cAAc,CAACiC,WAAW,GAAG,gBAAgB","ignoreList":[]}
1
+ {"version":3,"names":["React","globalObject","cx","keyListener","ThemeContext","CommonWrapper","styles","CrossIcon","ClearCrossIcon","_ref","_ref$size","size","style","dataTid","rest","_objectWithoutPropertiesLoose","_excluded","theme","useContext","getSizeClassNames","button","clearCrossLarge","span","relativeWidthLarge","clearCrossMedium","relativeWidthMedium","clearCrossSmall","relativeWidthSmall","_React$useState","useState","focusedByTab","setFocusedByTab","handleFocus","requestAnimationFrame","isTabPressed","handleBlur","createElement","className","_extends","type","tabIndex","root","focus","onFocus","onBlur","focusable","__KONTUR_REACT_UI__","displayName"],"sources":["ClearCrossIcon.tsx"],"sourcesContent":["import type { AriaAttributes } from 'react';\nimport React from 'react';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { cx } from '../../lib/theming/Emotion';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { CommonProps } from '../CommonWrapper';\nimport { CommonWrapper } from '../CommonWrapper';\nimport type { SizeProp } from '../../lib/types/props';\nimport type { TokenSize } from '../../components/Token';\n\nimport { styles } from './ClearCrossIcon.styles';\nimport { CrossIcon } from './CrossIcon';\n\nexport interface ClearCrossIconProps\n extends Pick<AriaAttributes, 'aria-label'>,\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n CommonProps {\n /** Ширина и высота иконки крестика\n * @default small */\n size?: SizeProp;\n 'data-tid'?: string;\n}\n\nexport const ClearCrossIcon: React.FunctionComponent<ClearCrossIconProps> = ({\n size = 'small',\n style,\n 'data-tid': dataTid,\n ...rest\n}) => {\n const theme = React.useContext(ThemeContext);\n const getSizeClassNames = (size: TokenSize) => {\n switch (size) {\n case 'large':\n return { button: styles.clearCrossLarge(theme), span: styles.relativeWidthLarge(theme) };\n case 'medium':\n return { button: styles.clearCrossMedium(theme), span: styles.relativeWidthMedium(theme) };\n case 'small':\n default:\n return { button: styles.clearCrossSmall(theme), span: styles.relativeWidthSmall(theme) };\n }\n };\n\n const [focusedByTab, setFocusedByTab] = React.useState<boolean>(false);\n\n const handleFocus = () => {\n // focus event fires before keyDown eventlistener so we should check tabPressed in async way\n globalObject.requestAnimationFrame?.(() => {\n if (keyListener.isTabPressed) {\n setFocusedByTab(true);\n }\n });\n };\n const handleBlur = () => setFocusedByTab(false);\n\n return (\n <CommonWrapper {...rest}>\n <span className={getSizeClassNames(size).span}>\n <button\n data-tid={dataTid}\n type=\"button\"\n tabIndex={-1}\n className={cx(\n styles.root(theme),\n // Todo: use &:focus-visible on root instead styles.focus. It supported on Chrome >= 86, Firefox >= 4, Safari >= 15.4\n focusedByTab && styles.focus(theme),\n getSizeClassNames(size).button,\n )}\n style={style}\n onFocus={handleFocus}\n onBlur={handleBlur}\n {...rest}\n >\n <CrossIcon size={size} focusable />\n </button>\n </span>\n </CommonWrapper>\n );\n};\n\nClearCrossIcon.__KONTUR_REACT_UI__ = 'ClearCrossIcon';\nClearCrossIcon.displayName = 'ClearCrossIcon';\n"],"mappings":";AACA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,YAAY,QAAQ,0BAA0B;;AAEvD,SAASC,EAAE,QAAQ,2BAA2B;AAC9C,SAASC,WAAW,QAAQ,8BAA8B;AAC1D,SAASC,YAAY,QAAQ,gCAAgC;;AAE7D,SAASC,aAAa,QAAQ,kBAAkB;;;;AAIhD,SAASC,MAAM,QAAQ,yBAAyB;AAChD,SAASC,SAAS,QAAQ,aAAa;;;;;;;;;;;;AAYvC,OAAO,IAAMC,cAA4D,GAAG,SAA/DA,cAA4DA,CAAAC,IAAA;;;;;AAKnE,KAAAC,SAAA,GAAAD,IAAA,CAJJE,IAAI,CAAJA,IAAI,GAAAD,SAAA,cAAG,OAAO,GAAAA,SAAA,CACdE,KAAK,GAAAH,IAAA,CAALG,KAAK,CACOC,OAAO,GAAAJ,IAAA,CAAnB,UAAU,EACPK,IAAI,GAAAC,6BAAA,CAAAN,IAAA,EAAAO,SAAA;EAEP,IAAMC,KAAK,GAAGjB,KAAK,CAACkB,UAAU,CAACd,YAAY,CAAC;EAC5C,IAAMe,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIR,IAAe,EAAK;IAC7C,QAAQA,IAAI;MACV,KAAK,OAAO;QACV,OAAO,EAAES,MAAM,EAAEd,MAAM,CAACe,eAAe,CAACJ,KAAK,CAAC,EAAEK,IAAI,EAAEhB,MAAM,CAACiB,kBAAkB,CAACN,KAAK,CAAC,CAAC,CAAC;MAC1F,KAAK,QAAQ;QACX,OAAO,EAAEG,MAAM,EAAEd,MAAM,CAACkB,gBAAgB,CAACP,KAAK,CAAC,EAAEK,IAAI,EAAEhB,MAAM,CAACmB,mBAAmB,CAACR,KAAK,CAAC,CAAC,CAAC;MAC5F,KAAK,OAAO;MACZ;QACE,OAAO,EAAEG,MAAM,EAAEd,MAAM,CAACoB,eAAe,CAACT,KAAK,CAAC,EAAEK,IAAI,EAAEhB,MAAM,CAACqB,kBAAkB,CAACV,KAAK,CAAC,CAAC,CAAC;IAC5F;EACF,CAAC;;EAED,IAAAW,eAAA,GAAwC5B,KAAK,CAAC6B,QAAQ,CAAU,KAAK,CAAC,CAA/DC,YAAY,GAAAF,eAAA,IAAEG,eAAe,GAAAH,eAAA;;EAEpC,IAAMI,WAAW,GAAG,SAAdA,WAAWA,CAAA,EAAS;IACxB;IACA/B,YAAY,CAACgC,qBAAqB,YAAlChC,YAAY,CAACgC,qBAAqB,CAAG,YAAM;MACzC,IAAI9B,WAAW,CAAC+B,YAAY,EAAE;QAC5BH,eAAe,CAAC,IAAI,CAAC;MACvB;IACF,CAAC,CAAC;EACJ,CAAC;EACD,IAAMI,UAAU,GAAG,SAAbA,UAAUA,CAAA,UAASJ,eAAe,CAAC,KAAK,CAAC;;EAE/C;IACE/B,KAAA,CAAAoC,aAAA,CAAC/B,aAAa,EAAKS,IAAI;IACrBd,KAAA,CAAAoC,aAAA,WAAMC,SAAS,EAAElB,iBAAiB,CAACR,IAAI,CAAC,CAACW,IAAK;IAC5CtB,KAAA,CAAAoC,aAAA,WAAAE,QAAA;MACE,YAAUzB,OAAQ;MAClB0B,IAAI,EAAC,QAAQ;MACbC,QAAQ,EAAE,CAAC,CAAE;MACbH,SAAS,EAAEnC,EAAE;QACXI,MAAM,CAACmC,IAAI,CAACxB,KAAK,CAAC;QAClB;QACAa,YAAY,IAAIxB,MAAM,CAACoC,KAAK,CAACzB,KAAK,CAAC;QACnCE,iBAAiB,CAACR,IAAI,CAAC,CAACS;MAC1B,CAAE;MACFR,KAAK,EAAEA,KAAM;MACb+B,OAAO,EAAEX,WAAY;MACrBY,MAAM,EAAET,UAAW;IACfrB,IAAI;;IAERd,KAAA,CAAAoC,aAAA,CAAC7B,SAAS,IAACI,IAAI,EAAEA,IAAK,EAACkC,SAAS,QAAE;IAC5B;IACJ;IACO,CAAC;;AAEpB,CAAC;;AAEDrC,cAAc,CAACsC,mBAAmB,GAAG,gBAAgB;AACrDtC,cAAc,CAACuC,WAAW,GAAG,gBAAgB","ignoreList":[]}
@@ -6,5 +6,6 @@ export interface ClearCrossIconProps extends Pick<AriaAttributes, 'aria-label'>,
6
6
  /** Ширина и высота иконки крестика
7
7
  * @default small */
8
8
  size?: SizeProp;
9
+ 'data-tid'?: string;
9
10
  }
10
11
  export declare const ClearCrossIcon: React.FunctionComponent<ClearCrossIconProps>;
@@ -1,21 +1,30 @@
1
1
  import _taggedTemplateLiteralLoose from "@babel/runtime/helpers/esm/taggedTemplateLiteralLoose";
2
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
2
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8;
3
3
  import { css, memoizeStyle } from "../../../lib/theming/Emotion";
4
4
  import { resetButton } from "../../../lib/styles/Mixins";
5
5
  export var styles = memoizeStyle({
6
6
  root: function root(t) {
7
- return css(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n ", "\n color: ", ";\n cursor: pointer;\n transition: color ", " ", ";\n &:hover {\n color: ", ";\n }\n display: flex;\n justify-content: center;\n align-items: center;\n "])), resetButton(), t.clearCrossIconColor, t.transitionDuration, t.transitionTimingFunction, t.clearCrossIconHoverColor);
7
+ return css(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n ", "\n color: ", ";\n cursor: pointer;\n transition: color ", " ", ";\n &:hover {\n color: ", ";\n }\n display: flex;\n justify-content: ", ";\n align-items: center;\n position: absolute;\n right: -", ";\n top: -", ";\n "])), resetButton(), t.clearCrossIconColor, t.transitionDuration, t.transitionTimingFunction, t.clearCrossIconHoverColor, t.clearCrossIconAlign, t.inputBorderWidth, t.inputBorderWidth);
8
8
  },
9
9
  focus: function focus(t) {
10
10
  return css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n color: ", ";\n "])), t.clearCrossIconHoverColor);
11
11
  },
12
12
  clearCrossSmall: function clearCrossSmall(t) {
13
- return css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose(["\n width: ", ";\n height: ", ";\n margin-right: ", ";\n border-radius: ", ";\n "])), t.clearCrossIconWidthSmall, t.clearCrossIconHeightSmall, t.clearCrossIconRightMarginSmall, t.clearCrossIconBorderRadiusSmall);
13
+ return css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose(["\n width: ", ";\n height: ", ";\n border-radius: ", ";\n "])), t.clearCrossIconWidthSmall, t.clearCrossIconHeightSmall, t.clearCrossIconBorderRadiusSmall);
14
14
  },
15
15
  clearCrossMedium: function clearCrossMedium(t) {
16
- return css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteralLoose(["\n width: ", ";\n height: ", ";\n margin-right: ", ";\n border-radius: ", ";\n "])), t.clearCrossIconWidthMedium, t.clearCrossIconHeightMedium, t.clearCrossIconRightMarginMedium, t.clearCrossIconBorderRadiusMedium);
16
+ return css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteralLoose(["\n width: ", ";\n height: ", ";\n border-radius: ", ";\n "])), t.clearCrossIconWidthMedium, t.clearCrossIconHeightMedium, t.clearCrossIconBorderRadiusMedium);
17
17
  },
18
18
  clearCrossLarge: function clearCrossLarge(t) {
19
- return css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteralLoose(["\n width: ", ";\n height: ", ";\n margin-right: ", ";\n border-radius: ", ";\n "])), t.clearCrossIconWidthLarge, t.clearCrossIconHeightLarge, t.clearCrossIconRightMarginLarge, t.clearCrossIconBorderRadiusLarge);
19
+ return css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteralLoose(["\n width: ", ";\n height: ", ";\n border-radius: ", ";\n "])), t.clearCrossIconWidthLarge, t.clearCrossIconHeightLarge, t.clearCrossIconBorderRadiusLarge);
20
+ },
21
+ relativeWidthSmall: function relativeWidthSmall(t) {
22
+ return css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteralLoose(["\n display: inline-block;\n width: ", ";\n "])), t.inputIconSizeSmall);
23
+ },
24
+ relativeWidthMedium: function relativeWidthMedium(t) {
25
+ return css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteralLoose(["\n display: inline-block;\n width: ", ";\n "])), t.inputIconSizeMedium);
26
+ },
27
+ relativeWidthLarge: function relativeWidthLarge(t) {
28
+ return css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteralLoose(["\n display: inline-block;\n width: ", ";\n "])), t.inputIconSizeLarge);
20
29
  }
21
30
  });
@@ -1 +1 @@
1
- {"version":3,"names":["css","memoizeStyle","resetButton","styles","root","t","_templateObject","_taggedTemplateLiteralLoose","clearCrossIconColor","transitionDuration","transitionTimingFunction","clearCrossIconHoverColor","focus","_templateObject2","clearCrossSmall","_templateObject3","clearCrossIconWidthSmall","clearCrossIconHeightSmall","clearCrossIconRightMarginSmall","clearCrossIconBorderRadiusSmall","clearCrossMedium","_templateObject4","clearCrossIconWidthMedium","clearCrossIconHeightMedium","clearCrossIconRightMarginMedium","clearCrossIconBorderRadiusMedium","clearCrossLarge","_templateObject5","clearCrossIconWidthLarge","clearCrossIconHeightLarge","clearCrossIconRightMarginLarge","clearCrossIconBorderRadiusLarge"],"sources":["ClearCrossIcon.styles.tsx"],"sourcesContent":["import { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { resetButton } from '../../lib/styles/Mixins';\n\nexport const styles = memoizeStyle({\n root(t: Theme) {\n return css`\n ${resetButton()}\n color: ${t.clearCrossIconColor};\n cursor: pointer;\n transition: color ${t.transitionDuration} ${t.transitionTimingFunction};\n &:hover {\n color: ${t.clearCrossIconHoverColor};\n }\n display: flex;\n justify-content: center;\n align-items: center;\n `;\n },\n\n focus(t: Theme) {\n return css`\n color: ${t.clearCrossIconHoverColor};\n `;\n },\n\n clearCrossSmall(t: Theme) {\n return css`\n width: ${t.clearCrossIconWidthSmall};\n height: ${t.clearCrossIconHeightSmall};\n margin-right: ${t.clearCrossIconRightMarginSmall};\n border-radius: ${t.clearCrossIconBorderRadiusSmall};\n `;\n },\n clearCrossMedium(t: Theme) {\n return css`\n width: ${t.clearCrossIconWidthMedium};\n height: ${t.clearCrossIconHeightMedium};\n margin-right: ${t.clearCrossIconRightMarginMedium};\n border-radius: ${t.clearCrossIconBorderRadiusMedium};\n `;\n },\n clearCrossLarge(t: Theme) {\n return css`\n width: ${t.clearCrossIconWidthLarge};\n height: ${t.clearCrossIconHeightLarge};\n margin-right: ${t.clearCrossIconRightMarginLarge};\n border-radius: ${t.clearCrossIconBorderRadiusLarge};\n `;\n },\n});\n"],"mappings":"4LAAA,SAASA,GAAG,EAAEC,YAAY,QAAQ,2BAA2B;;AAE7D,SAASC,WAAW,QAAQ,yBAAyB;;AAErD,OAAO,IAAMC,MAAM,GAAGF,YAAY,CAAC;EACjCG,IAAI,WAAAA,KAACC,CAAQ,EAAE;IACb,OAAOL,GAAG,CAAAM,eAAA,KAAAA,eAAA,GAAAC,2BAAA;IACNL,WAAW,CAAC,CAAC;IACNG,CAAC,CAACG,mBAAmB;;IAEVH,CAAC,CAACI,kBAAkB,EAAIJ,CAAC,CAACK,wBAAwB;;IAE3DL,CAAC,CAACM,wBAAwB;;;;;;EAMzC,CAAC;;EAEDC,KAAK,WAAAA,MAACP,CAAQ,EAAE;IACd,OAAOL,GAAG,CAAAa,gBAAA,KAAAA,gBAAA,GAAAN,2BAAA;IACCF,CAAC,CAACM,wBAAwB;;EAEvC,CAAC;;EAEDG,eAAe,WAAAA,gBAACT,CAAQ,EAAE;IACxB,OAAOL,GAAG,CAAAe,gBAAA,KAAAA,gBAAA,GAAAR,2BAAA;IACCF,CAAC,CAACW,wBAAwB;IACzBX,CAAC,CAACY,yBAAyB;IACrBZ,CAAC,CAACa,8BAA8B;IAC/Bb,CAAC,CAACc,+BAA+B;;EAEtD,CAAC;EACDC,gBAAgB,WAAAA,iBAACf,CAAQ,EAAE;IACzB,OAAOL,GAAG,CAAAqB,gBAAA,KAAAA,gBAAA,GAAAd,2BAAA;IACCF,CAAC,CAACiB,yBAAyB;IAC1BjB,CAAC,CAACkB,0BAA0B;IACtBlB,CAAC,CAACmB,+BAA+B;IAChCnB,CAAC,CAACoB,gCAAgC;;EAEvD,CAAC;EACDC,eAAe,WAAAA,gBAACrB,CAAQ,EAAE;IACxB,OAAOL,GAAG,CAAA2B,gBAAA,KAAAA,gBAAA,GAAApB,2BAAA;IACCF,CAAC,CAACuB,wBAAwB;IACzBvB,CAAC,CAACwB,yBAAyB;IACrBxB,CAAC,CAACyB,8BAA8B;IAC/BzB,CAAC,CAAC0B,+BAA+B;;EAEtD;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["css","memoizeStyle","resetButton","styles","root","t","_templateObject","_taggedTemplateLiteralLoose","clearCrossIconColor","transitionDuration","transitionTimingFunction","clearCrossIconHoverColor","clearCrossIconAlign","inputBorderWidth","focus","_templateObject2","clearCrossSmall","_templateObject3","clearCrossIconWidthSmall","clearCrossIconHeightSmall","clearCrossIconBorderRadiusSmall","clearCrossMedium","_templateObject4","clearCrossIconWidthMedium","clearCrossIconHeightMedium","clearCrossIconBorderRadiusMedium","clearCrossLarge","_templateObject5","clearCrossIconWidthLarge","clearCrossIconHeightLarge","clearCrossIconBorderRadiusLarge","relativeWidthSmall","_templateObject6","inputIconSizeSmall","relativeWidthMedium","_templateObject7","inputIconSizeMedium","relativeWidthLarge","_templateObject8","inputIconSizeLarge"],"sources":["ClearCrossIcon.styles.tsx"],"sourcesContent":["import { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { resetButton } from '../../lib/styles/Mixins';\n\nexport const styles = memoizeStyle({\n root(t: Theme) {\n return css`\n ${resetButton()}\n color: ${t.clearCrossIconColor};\n cursor: pointer;\n transition: color ${t.transitionDuration} ${t.transitionTimingFunction};\n &:hover {\n color: ${t.clearCrossIconHoverColor};\n }\n display: flex;\n justify-content: ${t.clearCrossIconAlign};\n align-items: center;\n position: absolute;\n right: -${t.inputBorderWidth};\n top: -${t.inputBorderWidth};\n `;\n },\n\n focus(t: Theme) {\n return css`\n color: ${t.clearCrossIconHoverColor};\n `;\n },\n\n clearCrossSmall(t: Theme) {\n return css`\n width: ${t.clearCrossIconWidthSmall};\n height: ${t.clearCrossIconHeightSmall};\n border-radius: ${t.clearCrossIconBorderRadiusSmall};\n `;\n },\n clearCrossMedium(t: Theme) {\n return css`\n width: ${t.clearCrossIconWidthMedium};\n height: ${t.clearCrossIconHeightMedium};\n border-radius: ${t.clearCrossIconBorderRadiusMedium};\n `;\n },\n clearCrossLarge(t: Theme) {\n return css`\n width: ${t.clearCrossIconWidthLarge};\n height: ${t.clearCrossIconHeightLarge};\n border-radius: ${t.clearCrossIconBorderRadiusLarge};\n `;\n },\n relativeWidthSmall(t: Theme) {\n return css`\n display: inline-block;\n width: ${t.inputIconSizeSmall};\n `;\n },\n relativeWidthMedium(t: Theme) {\n return css`\n display: inline-block;\n width: ${t.inputIconSizeMedium};\n `;\n },\n relativeWidthLarge(t: Theme) {\n return css`\n display: inline-block;\n width: ${t.inputIconSizeLarge};\n `;\n },\n});\n"],"mappings":"kPAAA,SAASA,GAAG,EAAEC,YAAY,QAAQ,2BAA2B;;AAE7D,SAASC,WAAW,QAAQ,yBAAyB;;AAErD,OAAO,IAAMC,MAAM,GAAGF,YAAY,CAAC;EACjCG,IAAI,WAAAA,KAACC,CAAQ,EAAE;IACb,OAAOL,GAAG,CAAAM,eAAA,KAAAA,eAAA,GAAAC,2BAAA;IACNL,WAAW,CAAC,CAAC;IACNG,CAAC,CAACG,mBAAmB;;IAEVH,CAAC,CAACI,kBAAkB,EAAIJ,CAAC,CAACK,wBAAwB;;IAE3DL,CAAC,CAACM,wBAAwB;;;IAGlBN,CAAC,CAACO,mBAAmB;;;IAG9BP,CAAC,CAACQ,gBAAgB;IACpBR,CAAC,CAACQ,gBAAgB;;EAE9B,CAAC;;EAEDC,KAAK,WAAAA,MAACT,CAAQ,EAAE;IACd,OAAOL,GAAG,CAAAe,gBAAA,KAAAA,gBAAA,GAAAR,2BAAA;IACCF,CAAC,CAACM,wBAAwB;;EAEvC,CAAC;;EAEDK,eAAe,WAAAA,gBAACX,CAAQ,EAAE;IACxB,OAAOL,GAAG,CAAAiB,gBAAA,KAAAA,gBAAA,GAAAV,2BAAA;IACCF,CAAC,CAACa,wBAAwB;IACzBb,CAAC,CAACc,yBAAyB;IACpBd,CAAC,CAACe,+BAA+B;;EAEtD,CAAC;EACDC,gBAAgB,WAAAA,iBAAChB,CAAQ,EAAE;IACzB,OAAOL,GAAG,CAAAsB,gBAAA,KAAAA,gBAAA,GAAAf,2BAAA;IACCF,CAAC,CAACkB,yBAAyB;IAC1BlB,CAAC,CAACmB,0BAA0B;IACrBnB,CAAC,CAACoB,gCAAgC;;EAEvD,CAAC;EACDC,eAAe,WAAAA,gBAACrB,CAAQ,EAAE;IACxB,OAAOL,GAAG,CAAA2B,gBAAA,KAAAA,gBAAA,GAAApB,2BAAA;IACCF,CAAC,CAACuB,wBAAwB;IACzBvB,CAAC,CAACwB,yBAAyB;IACpBxB,CAAC,CAACyB,+BAA+B;;EAEtD,CAAC;EACDC,kBAAkB,WAAAA,mBAAC1B,CAAQ,EAAE;IAC3B,OAAOL,GAAG,CAAAgC,gBAAA,KAAAA,gBAAA,GAAAzB,2BAAA;;IAECF,CAAC,CAAC4B,kBAAkB;;EAEjC,CAAC;EACDC,mBAAmB,WAAAA,oBAAC7B,CAAQ,EAAE;IAC5B,OAAOL,GAAG,CAAAmC,gBAAA,KAAAA,gBAAA,GAAA5B,2BAAA;;IAECF,CAAC,CAAC+B,mBAAmB;;EAElC,CAAC;EACDC,kBAAkB,WAAAA,mBAAChC,CAAQ,EAAE;IAC3B,OAAOL,GAAG,CAAAsC,gBAAA,KAAAA,gBAAA,GAAA/B,2BAAA;;IAECF,CAAC,CAACkC,kBAAkB;;EAEjC;AACF,CAAC,CAAC","ignoreList":[]}
@@ -5,4 +5,7 @@ export declare const styles: {
5
5
  clearCrossSmall(t: Theme): string;
6
6
  clearCrossMedium(t: Theme): string;
7
7
  clearCrossLarge(t: Theme): string;
8
+ relativeWidthSmall(t: Theme): string;
9
+ relativeWidthMedium(t: Theme): string;
10
+ relativeWidthLarge(t: Theme): string;
8
11
  };
@@ -17,9 +17,7 @@ import { LoadingIcon } from "../../icons2022/LoadingIcon";
17
17
  import { Popup } from "../../Popup";
18
18
  import { getMenuPositions } from "../../../lib/getMenuPositions";
19
19
  import { ZIndex } from "../../ZIndex";
20
- import { MaskedInput } from "../../../components/MaskedInput";
21
- import { styles as MaskedInputStyles } from "../../../components/MaskedInput/MaskedInput.styles";
22
- import { cx } from "../../../lib/theming/Emotion";
20
+ import { InternalTextareaWithLayout } from "../../InternalTextareaWithLayout/InternalTextareaWithLayout";
23
21
  import { ArrowDownIcon } from "../ArrowDownIcon";
24
22
  import { ComboBoxMenu } from "../ComboBoxMenu";
25
23
  import { ComboBoxRequestStatus } from "../CustomComboBoxTypes";
@@ -226,7 +224,7 @@ export var ComboBoxView = responsiveLayout(_class = rootNode(_class = (_ComboBox
226
224
  _proto.render = function render() {
227
225
  var _this2 = this;
228
226
  return /*#__PURE__*/React.createElement(ThemeContext.Consumer, null, function (theme) {
229
- _this2.theme = getComboBoxTheme(theme);
227
+ _this2.theme = getComboBoxTheme(theme, _this2.props.viewMode);
230
228
  return /*#__PURE__*/React.createElement(ThemeContext.Provider, {
231
229
  value: _this2.theme
232
230
  }, _this2.renderMain());
@@ -285,56 +283,52 @@ export var ComboBoxView = responsiveLayout(_class = rootNode(_class = (_ComboBox
285
283
  size = _this$props5.size,
286
284
  ariaDescribedby = _this$props5['aria-describedby'],
287
285
  ariaLabel = _this$props5['aria-label'],
288
- showClearIcon = _this$props5.showClearIcon,
289
- mask = _this$props5.mask,
290
- maskChar = _this$props5.maskChar,
291
- formatChars = _this$props5.formatChars,
292
- maskOnBeforePaste = _this$props5.maskOnBeforePaste;
286
+ showClearIcon = _this$props5.showClearIcon;
287
+ var _this$getProps4 = this.getProps(),
288
+ renderValue = _this$getProps4.renderValue;
293
289
  var rightIcon = this.getRightIcon();
290
+ var editingStateProps = {
291
+ id: id,
292
+ align: align,
293
+ borderless: borderless,
294
+ disabled: disabled,
295
+ error: error,
296
+ maxLength: this.props.maxLength,
297
+ onBlur: isMobile ? undefined : onInputBlur,
298
+ onValueChange: onInputValueChange,
299
+ onFocus: onInputFocus,
300
+ onClick: isMobile ? this.handleMobileFocus : onInputClick,
301
+ leftIcon: leftIcon,
302
+ rightIcon: rightIcon,
303
+ value: textValue || '',
304
+ onKeyDown: onInputKeyDown,
305
+ placeholder: placeholder,
306
+ width: '100%',
307
+ size: size,
308
+ ref: this.refInput,
309
+ warning: warning,
310
+ inputMode: inputMode,
311
+ autoComplete: 'off',
312
+ 'aria-describedby': ariaDescribedby,
313
+ 'aria-controls': this.menuId,
314
+ 'aria-label': ariaLabel,
315
+ showClearIcon: showClearIcon
316
+ };
317
+ var multilineTextareaProps = {
318
+ autoResize: true,
319
+ rows: 1,
320
+ extraRow: false,
321
+ maxRows: this.props.maxRows
322
+ };
323
+ if (this.props.viewMode === 'multiline') {
324
+ return /*#__PURE__*/React.createElement(InternalTextareaWithLayout, _extends({}, editingStateProps, multilineTextareaProps));
325
+ }
294
326
  if (editing) {
295
- var inputProps = {
296
- id: id,
297
- align: align,
298
- borderless: borderless,
299
- disabled: disabled,
300
- error: error,
301
- onBlur: isMobile ? undefined : onInputBlur,
302
- onValueChange: onInputValueChange,
303
- onFocus: onInputFocus,
304
- onClick: isMobile ? this.handleMobileFocus : onInputClick,
305
- leftIcon: leftIcon,
306
- rightIcon: rightIcon,
307
- value: textValue || '',
308
- onKeyDown: onInputKeyDown,
309
- placeholder: placeholder,
310
- width: '100%',
311
- size: size,
312
- warning: warning,
313
- inputMode: inputMode,
314
- autoComplete: 'off',
315
- 'aria-describedby': ariaDescribedby,
316
- 'aria-controls': this.menuId,
317
- 'aria-label': ariaLabel,
318
- showClearIcon: showClearIcon
319
- };
320
- if (mask) {
321
- return /*#__PURE__*/React.createElement(MaskedInput, _extends({
322
- ref: this.refInput
323
- }, inputProps, {
324
- type: "text",
325
- mask: mask,
326
- maskChar: maskChar,
327
- formatChars: formatChars,
328
- onBeforePasteValue: maskOnBeforePaste
329
- }));
327
+ if (this.props.viewMode === 'multiline-editing') {
328
+ return /*#__PURE__*/React.createElement(InternalTextareaWithLayout, _extends({}, editingStateProps, multilineTextareaProps));
330
329
  }
331
- return /*#__PURE__*/React.createElement(Input, _extends({
332
- ref: this.refInput,
333
- maxLength: this.props.maxLength
334
- }, inputProps));
330
+ return /*#__PURE__*/React.createElement(Input, editingStateProps);
335
331
  }
336
- var _this$getProps4 = this.getProps(),
337
- renderValue = _this$getProps4.renderValue;
338
332
  return /*#__PURE__*/React.createElement(InputLikeText, {
339
333
  id: id,
340
334
  align: align,
@@ -352,7 +346,6 @@ export var ComboBoxView = responsiveLayout(_class = rootNode(_class = (_ComboBox
352
346
  "aria-describedby": ariaDescribedby,
353
347
  "aria-controls": this.menuId,
354
348
  showClearIcon: showClearIcon,
355
- className: cx(mask && MaskedInputStyles.root(this.theme)),
356
349
  onClearCrossClick: this.props.onClearCrossClick
357
350
  }, isNonNullable(value) && renderValue ? renderValue(value) : null);
358
351
  };