@salutejs/plasma-web 1.642.0-dev.0 → 1.643.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 (198) hide show
  1. package/README.md +5 -5
  2. package/dist/css/cjs/components/Autocomplete/Autocomplete.clear.config.js +46 -0
  3. package/dist/css/cjs/components/Autocomplete/Autocomplete.clear.config.js.map +1 -0
  4. package/dist/css/cjs/components/Autocomplete/Autocomplete.clear.config_jk4e9k.css +15 -0
  5. package/dist/css/cjs/components/Autocomplete/Autocomplete.config.js +1 -1
  6. package/dist/css/cjs/components/Autocomplete/Autocomplete.config.js.map +1 -1
  7. package/dist/css/cjs/components/Autocomplete/Autocomplete.config_2qywla.css +15 -0
  8. package/dist/css/cjs/components/Autocomplete/Autocomplete.css +30 -14
  9. package/dist/css/cjs/components/Autocomplete/Autocomplete.js +10 -1
  10. package/dist/css/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
  11. package/dist/css/cjs/components/DatePicker/DatePicker.clear.config.js +1 -1
  12. package/dist/css/cjs/components/DatePicker/DatePicker.clear.config.js.map +1 -1
  13. package/dist/css/cjs/components/DatePicker/DatePicker.clear.config_g58txx.css +13 -0
  14. package/dist/css/cjs/components/DatePicker/DatePicker.config.js +1 -1
  15. package/dist/css/cjs/components/DatePicker/DatePicker.config.js.map +1 -1
  16. package/dist/css/cjs/components/DatePicker/DatePicker.config_1x1qhas.css +13 -0
  17. package/dist/css/cjs/components/DatePicker/DatePicker.css +26 -26
  18. package/dist/css/cjs/components/DateTimePicker/DateTimePicker.clear.config.js +1 -1
  19. package/dist/css/cjs/components/DateTimePicker/DateTimePicker.clear.config.js.map +1 -1
  20. package/dist/css/cjs/components/DateTimePicker/DateTimePicker.clear.config_jrnhp9.css +13 -0
  21. package/dist/css/cjs/components/DateTimePicker/DateTimePicker.config.js +1 -1
  22. package/dist/css/cjs/components/DateTimePicker/DateTimePicker.config.js.map +1 -1
  23. package/dist/css/cjs/components/DateTimePicker/DateTimePicker.config_qgrdla.css +13 -0
  24. package/dist/css/cjs/components/DateTimePicker/DateTimePicker.css +26 -26
  25. package/dist/css/cjs/components/InformationWrapper/InformationWrapper.config.js +1 -1
  26. package/dist/css/cjs/components/InformationWrapper/InformationWrapper.config.js.map +1 -1
  27. package/dist/css/cjs/components/InformationWrapper/{InformationWrapper.config_1glkttm.css → InformationWrapper.config_1iwwe6b.css} +4 -4
  28. package/dist/css/cjs/components/InformationWrapper/InformationWrapper.css +12 -12
  29. package/dist/css/cjs/components/Mask/Mask.css +42 -42
  30. package/dist/css/cjs/components/Range/Range.clear.config.js +1 -1
  31. package/dist/css/cjs/components/Range/Range.clear.config.js.map +1 -1
  32. package/dist/css/{es/components/Range/Range.clear.config_3l5zfi.css → cjs/components/Range/Range.clear.config_1e79wsw.css} +5 -5
  33. package/dist/css/cjs/components/Range/Range.config.js +1 -1
  34. package/dist/css/cjs/components/Range/Range.config.js.map +1 -1
  35. package/dist/css/{es/components/Range/Range.config_1pj7ef.css → cjs/components/Range/Range.config_1frrfla.css} +5 -5
  36. package/dist/css/cjs/components/Range/Range.css +22 -22
  37. package/dist/css/cjs/components/Select/Select.clear.config.js +60 -0
  38. package/dist/css/cjs/components/Select/Select.clear.config.js.map +1 -0
  39. package/dist/css/cjs/components/Select/Select.clear.config_2jx2ka.css +24 -0
  40. package/dist/css/cjs/components/Select/Select.config.js +1 -1
  41. package/dist/css/cjs/components/Select/Select.config.js.map +1 -1
  42. package/dist/css/cjs/components/Select/Select.config_1lai1lv.css +24 -0
  43. package/dist/css/cjs/components/Select/Select.css +48 -23
  44. package/dist/css/cjs/components/Select/Select.js +8 -1
  45. package/dist/css/cjs/components/Select/Select.js.map +1 -1
  46. package/dist/css/cjs/components/TextArea/TextArea.clear.config.js +1 -1
  47. package/dist/css/cjs/components/TextArea/TextArea.clear.config.js.map +1 -1
  48. package/dist/css/{es/components/TextArea/TextArea.clear.config_1gcop6e.css → cjs/components/TextArea/TextArea.clear.config_m125ks.css} +5 -5
  49. package/dist/css/cjs/components/TextArea/TextArea.config.js +1 -1
  50. package/dist/css/cjs/components/TextArea/TextArea.config.js.map +1 -1
  51. package/dist/css/{es/components/TextArea/TextArea.config_su04cb.css → cjs/components/TextArea/TextArea.config_7tvodc.css} +5 -5
  52. package/dist/css/cjs/components/TextArea/TextArea.css +30 -30
  53. package/dist/css/cjs/components/TextField/TextField.clear.config.js +1 -1
  54. package/dist/css/cjs/components/TextField/TextField.clear.config.js.map +1 -1
  55. package/dist/css/cjs/components/TextField/TextField.clear.config_17n2wtf.css +22 -0
  56. package/dist/css/cjs/components/TextField/TextField.config.js +1 -1
  57. package/dist/css/cjs/components/TextField/TextField.config.js.map +1 -1
  58. package/dist/css/cjs/components/TextField/{TextField.config_gm1kei.css → TextField.config_qvxjx5.css} +5 -5
  59. package/dist/css/cjs/components/TimePicker/TimePicker.config.js +1 -1
  60. package/dist/css/cjs/components/TimePicker/TimePicker.config.js.map +1 -1
  61. package/dist/css/cjs/components/TimePicker/TimePicker.config_13kwqvi.css +10 -0
  62. package/dist/css/cjs/components/TimePicker/TimePicker.css +10 -10
  63. package/dist/css/cjs/index.css +258 -217
  64. package/dist/css/es/components/Autocomplete/Autocomplete.clear.config.js +42 -0
  65. package/dist/css/es/components/Autocomplete/Autocomplete.clear.config.js.map +1 -0
  66. package/dist/css/es/components/Autocomplete/Autocomplete.clear.config_jk4e9k.css +15 -0
  67. package/dist/css/es/components/Autocomplete/Autocomplete.config.js +1 -1
  68. package/dist/css/es/components/Autocomplete/Autocomplete.config.js.map +1 -1
  69. package/dist/css/es/components/Autocomplete/Autocomplete.config_2qywla.css +15 -0
  70. package/dist/css/es/components/Autocomplete/Autocomplete.css +30 -14
  71. package/dist/css/es/components/Autocomplete/Autocomplete.js +10 -3
  72. package/dist/css/es/components/Autocomplete/Autocomplete.js.map +1 -1
  73. package/dist/css/es/components/DatePicker/DatePicker.clear.config.js +1 -1
  74. package/dist/css/es/components/DatePicker/DatePicker.clear.config.js.map +1 -1
  75. package/dist/css/es/components/DatePicker/DatePicker.clear.config_g58txx.css +13 -0
  76. package/dist/css/es/components/DatePicker/DatePicker.config.js +1 -1
  77. package/dist/css/es/components/DatePicker/DatePicker.config.js.map +1 -1
  78. package/dist/css/es/components/DatePicker/DatePicker.config_1x1qhas.css +13 -0
  79. package/dist/css/es/components/DatePicker/DatePicker.css +26 -26
  80. package/dist/css/es/components/DateTimePicker/DateTimePicker.clear.config.js +1 -1
  81. package/dist/css/es/components/DateTimePicker/DateTimePicker.clear.config.js.map +1 -1
  82. package/dist/css/es/components/DateTimePicker/DateTimePicker.clear.config_jrnhp9.css +13 -0
  83. package/dist/css/es/components/DateTimePicker/DateTimePicker.config.js +1 -1
  84. package/dist/css/es/components/DateTimePicker/DateTimePicker.config.js.map +1 -1
  85. package/dist/css/es/components/DateTimePicker/DateTimePicker.config_qgrdla.css +13 -0
  86. package/dist/css/es/components/DateTimePicker/DateTimePicker.css +26 -26
  87. package/dist/css/es/components/InformationWrapper/InformationWrapper.config.js +1 -1
  88. package/dist/css/es/components/InformationWrapper/InformationWrapper.config.js.map +1 -1
  89. package/dist/css/es/components/InformationWrapper/{InformationWrapper.config_1glkttm.css → InformationWrapper.config_1iwwe6b.css} +4 -4
  90. package/dist/css/es/components/InformationWrapper/InformationWrapper.css +12 -12
  91. package/dist/css/es/components/Mask/Mask.css +42 -42
  92. package/dist/css/es/components/Range/Range.clear.config.js +1 -1
  93. package/dist/css/es/components/Range/Range.clear.config.js.map +1 -1
  94. package/dist/css/{cjs/components/Range/Range.clear.config_3l5zfi.css → es/components/Range/Range.clear.config_1e79wsw.css} +5 -5
  95. package/dist/css/es/components/Range/Range.config.js +1 -1
  96. package/dist/css/es/components/Range/Range.config.js.map +1 -1
  97. package/dist/css/{cjs/components/Range/Range.config_1pj7ef.css → es/components/Range/Range.config_1frrfla.css} +5 -5
  98. package/dist/css/es/components/Range/Range.css +22 -22
  99. package/dist/css/es/components/Select/Select.clear.config.js +56 -0
  100. package/dist/css/es/components/Select/Select.clear.config.js.map +1 -0
  101. package/dist/css/es/components/Select/Select.clear.config_2jx2ka.css +24 -0
  102. package/dist/css/es/components/Select/Select.config.js +1 -1
  103. package/dist/css/es/components/Select/Select.config.js.map +1 -1
  104. package/dist/css/es/components/Select/Select.config_1lai1lv.css +24 -0
  105. package/dist/css/es/components/Select/Select.css +48 -23
  106. package/dist/css/es/components/Select/Select.js +9 -2
  107. package/dist/css/es/components/Select/Select.js.map +1 -1
  108. package/dist/css/es/components/TextArea/TextArea.clear.config.js +1 -1
  109. package/dist/css/es/components/TextArea/TextArea.clear.config.js.map +1 -1
  110. package/dist/css/{cjs/components/TextArea/TextArea.clear.config_1gcop6e.css → es/components/TextArea/TextArea.clear.config_m125ks.css} +5 -5
  111. package/dist/css/es/components/TextArea/TextArea.config.js +1 -1
  112. package/dist/css/es/components/TextArea/TextArea.config.js.map +1 -1
  113. package/dist/css/{cjs/components/TextArea/TextArea.config_su04cb.css → es/components/TextArea/TextArea.config_7tvodc.css} +5 -5
  114. package/dist/css/es/components/TextArea/TextArea.css +30 -30
  115. package/dist/css/es/components/TextField/TextField.clear.config.js +1 -1
  116. package/dist/css/es/components/TextField/TextField.clear.config.js.map +1 -1
  117. package/dist/css/es/components/TextField/TextField.clear.config_17n2wtf.css +22 -0
  118. package/dist/css/es/components/TextField/TextField.config.js +1 -1
  119. package/dist/css/es/components/TextField/TextField.config.js.map +1 -1
  120. package/dist/css/es/components/TextField/{TextField.config_gm1kei.css → TextField.config_qvxjx5.css} +5 -5
  121. package/dist/css/es/components/TimePicker/TimePicker.config.js +1 -1
  122. package/dist/css/es/components/TimePicker/TimePicker.config.js.map +1 -1
  123. package/dist/css/es/components/TimePicker/TimePicker.config_13kwqvi.css +10 -0
  124. package/dist/css/es/components/TimePicker/TimePicker.css +10 -10
  125. package/dist/css/es/index.css +258 -217
  126. package/dist/styled-components/cjs/components/Autocomplete/Autocomplete.clear.config.js +636 -0
  127. package/dist/styled-components/cjs/components/Autocomplete/Autocomplete.config.js +33 -0
  128. package/dist/styled-components/cjs/components/Autocomplete/Autocomplete.js +14 -1
  129. package/dist/styled-components/cjs/components/DatePicker/DatePicker.clear.config.js +5 -0
  130. package/dist/styled-components/cjs/components/DatePicker/DatePicker.config.js +5 -0
  131. package/dist/styled-components/cjs/components/DateTimePicker/DateTimePicker.clear.config.js +5 -0
  132. package/dist/styled-components/cjs/components/DateTimePicker/DateTimePicker.config.js +5 -0
  133. package/dist/styled-components/cjs/components/InformationWrapper/InformationWrapper.config.js +4 -0
  134. package/dist/styled-components/cjs/components/Modal/Modal.js +195 -0
  135. package/dist/styled-components/cjs/components/Modal/ModalView.js +59 -0
  136. package/dist/styled-components/cjs/components/Modal/ModalsContext.js +113 -0
  137. package/dist/styled-components/cjs/components/Modal/index.js +6 -4
  138. package/dist/styled-components/cjs/components/Range/Range.clear.config.js +5 -0
  139. package/dist/styled-components/cjs/components/Range/Range.config.js +5 -0
  140. package/dist/styled-components/cjs/components/Select/Select.clear.config.js +1141 -0
  141. package/dist/styled-components/cjs/components/Select/Select.config.js +32 -0
  142. package/dist/styled-components/cjs/components/Select/Select.js +8 -1
  143. package/dist/styled-components/cjs/components/TextArea/TextArea.clear.config.js +5 -0
  144. package/dist/styled-components/cjs/components/TextArea/TextArea.config.js +5 -0
  145. package/dist/styled-components/cjs/components/TextField/TextField.clear.config.js +23 -3
  146. package/dist/styled-components/cjs/components/TextField/TextField.config.js +5 -0
  147. package/dist/styled-components/cjs/components/TimePicker/TimePicker.config.js +30 -0
  148. package/dist/styled-components/es/components/Autocomplete/Autocomplete.clear.config.js +626 -0
  149. package/dist/styled-components/es/components/Autocomplete/Autocomplete.config.js +33 -0
  150. package/dist/styled-components/es/components/Autocomplete/Autocomplete.js +9 -2
  151. package/dist/styled-components/es/components/DatePicker/DatePicker.clear.config.js +5 -0
  152. package/dist/styled-components/es/components/DatePicker/DatePicker.config.js +5 -0
  153. package/dist/styled-components/es/components/DateTimePicker/DateTimePicker.clear.config.js +5 -0
  154. package/dist/styled-components/es/components/DateTimePicker/DateTimePicker.config.js +5 -0
  155. package/dist/styled-components/es/components/InformationWrapper/InformationWrapper.config.js +4 -0
  156. package/dist/styled-components/es/components/Modal/Modal.js +142 -0
  157. package/dist/styled-components/es/components/Modal/ModalView.js +46 -0
  158. package/dist/styled-components/es/components/Modal/ModalsContext.js +51 -0
  159. package/dist/styled-components/es/components/Modal/index.js +3 -1
  160. package/dist/styled-components/es/components/Range/Range.clear.config.js +5 -0
  161. package/dist/styled-components/es/components/Range/Range.config.js +5 -0
  162. package/dist/styled-components/es/components/Select/Select.clear.config.js +1131 -0
  163. package/dist/styled-components/es/components/Select/Select.config.js +32 -0
  164. package/dist/styled-components/es/components/Select/Select.js +9 -2
  165. package/dist/styled-components/es/components/TextArea/TextArea.clear.config.js +5 -0
  166. package/dist/styled-components/es/components/TextArea/TextArea.config.js +5 -0
  167. package/dist/styled-components/es/components/TextField/TextField.clear.config.js +23 -3
  168. package/dist/styled-components/es/components/TextField/TextField.config.js +5 -0
  169. package/dist/styled-components/es/components/TimePicker/TimePicker.config.js +30 -0
  170. package/package.json +16 -16
  171. package/types/components/Autocomplete/Autocomplete.clear.config.d.ts +38 -0
  172. package/types/components/Autocomplete/Autocomplete.d.ts +2000 -10
  173. package/types/components/Calendar/Calendar.d.ts +3 -1
  174. package/types/components/DatePicker/DatePicker.d.ts +36 -36
  175. package/types/components/DateTimePicker/DateTimePicker.d.ts +8 -8
  176. package/types/components/Modal/Modal.d.ts +47 -0
  177. package/types/components/Modal/ModalView.d.ts +23 -0
  178. package/types/components/Modal/ModalsContext.d.ts +15 -0
  179. package/types/components/Modal/index.d.ts +4 -2
  180. package/types/components/Select/Select.clear.config.d.ts +52 -0
  181. package/types/components/Select/Select.d.ts +36 -10
  182. package/types/components/TimePicker/TimePicker.d.ts +2 -0
  183. package/dist/css/cjs/components/Autocomplete/Autocomplete.config_1cj8j7d.css +0 -15
  184. package/dist/css/cjs/components/DatePicker/DatePicker.clear.config_ohlkzl.css +0 -13
  185. package/dist/css/cjs/components/DatePicker/DatePicker.config_ijgbnd.css +0 -13
  186. package/dist/css/cjs/components/DateTimePicker/DateTimePicker.clear.config_rsi0jy.css +0 -13
  187. package/dist/css/cjs/components/DateTimePicker/DateTimePicker.config_1ffbh7q.css +0 -13
  188. package/dist/css/cjs/components/Select/Select.config_11p7bi0.css +0 -24
  189. package/dist/css/cjs/components/TextField/TextField.clear.config_1g82q62.css +0 -22
  190. package/dist/css/cjs/components/TimePicker/TimePicker.config_vm7h1j.css +0 -10
  191. package/dist/css/es/components/Autocomplete/Autocomplete.config_1cj8j7d.css +0 -15
  192. package/dist/css/es/components/DatePicker/DatePicker.clear.config_ohlkzl.css +0 -13
  193. package/dist/css/es/components/DatePicker/DatePicker.config_ijgbnd.css +0 -13
  194. package/dist/css/es/components/DateTimePicker/DateTimePicker.clear.config_rsi0jy.css +0 -13
  195. package/dist/css/es/components/DateTimePicker/DateTimePicker.config_1ffbh7q.css +0 -13
  196. package/dist/css/es/components/Select/Select.config_11p7bi0.css +0 -24
  197. package/dist/css/es/components/TextField/TextField.clear.config_1g82q62.css +0 -22
  198. package/dist/css/es/components/TimePicker/TimePicker.config_vm7h1j.css +0 -10
@@ -23,6 +23,7 @@ export const config = {
23
23
  ${tokens.textFieldTextAfterColor}: var(--text-tertiary);
24
24
  ${tokens.textFieldLabelColor}: var(--text-primary);
25
25
  ${tokens.textFieldLeftHelperColor}: var(--text-secondary);
26
+ ${tokens.textFieldTitleCaptionColor}: var(--text-secondary);
26
27
  ${tokens.textFieldFocusColor}: var(--text-accent);
27
28
 
28
29
  ${tokens.textFieldBorderColor}: var(--outline-transparent-primary);
@@ -69,6 +70,7 @@ export const config = {
69
70
  ${tokens.textFieldTextAfterColor}: var(--text-tertiary);
70
71
  ${tokens.textFieldLabelColor}: var(--text-primary);
71
72
  ${tokens.textFieldLeftHelperColor}: var(--text-positive);
73
+ ${tokens.textFieldTitleCaptionColor}: var(--text-secondary);
72
74
  ${tokens.textFieldFocusColor}: var(--text-accent);
73
75
 
74
76
  ${tokens.textFieldBorderColor}: var(--outline-positive);
@@ -115,6 +117,7 @@ export const config = {
115
117
  ${tokens.textFieldTextAfterColor}: var(--text-tertiary);
116
118
  ${tokens.textFieldLabelColor}: var(--text-primary);
117
119
  ${tokens.textFieldLeftHelperColor}: var(--text-warning);
120
+ ${tokens.textFieldTitleCaptionColor}: var(--text-secondary);
118
121
  ${tokens.textFieldFocusColor}: var(--text-accent);
119
122
 
120
123
  ${tokens.textFieldBorderColor}: var(--outline-warning);
@@ -161,6 +164,7 @@ export const config = {
161
164
  ${tokens.textFieldTextAfterColor}: var(--text-tertiary);
162
165
  ${tokens.textFieldLabelColor}: var(--text-primary);
163
166
  ${tokens.textFieldLeftHelperColor}: var(--text-negative);
167
+ ${tokens.textFieldTitleCaptionColor}: var(--text-secondary);
164
168
  ${tokens.textFieldFocusColor}: var(--text-accent);
165
169
 
166
170
  ${tokens.textFieldBorderColor}: var(--outline-negative);
@@ -224,6 +228,13 @@ export const config = {
224
228
  ${tokens.textFieldLabelFontWeight}: var(--plasma-typo-body-l-font-weight);
225
229
  ${tokens.textFieldLabelLetterSpacing}: var(--plasma-typo-body-l-letter-spacing);
226
230
  ${tokens.textFieldLabelLineHeight}: var(--plasma-typo-body-l-line-height);
231
+ ${tokens.textFieldTitleCaptionMargin}: 0.375rem;
232
+ ${tokens.textFieldTitleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family);
233
+ ${tokens.textFieldTitleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style);
234
+ ${tokens.textFieldTitleCaptionFontSize}: var(--plasma-typo-body-xs-font-size);
235
+ ${tokens.textFieldTitleCaptionFontWeight}: var(--plasma-typo-body-xs-font-weight);
236
+ ${tokens.textFieldTitleCaptionLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing);
237
+ ${tokens.textFieldTitleCaptionLineHeight}: var(--plasma-typo-body-xs-line-height);
227
238
 
228
239
  ${tokens.textFieldHintMargin}: -0.688rem -0.5rem;
229
240
  ${tokens.textFieldHintTargetSize}: 2.375rem;
@@ -300,6 +311,13 @@ export const config = {
300
311
  ${tokens.textFieldLabelFontWeight}: var(--plasma-typo-body-m-font-weight);
301
312
  ${tokens.textFieldLabelLetterSpacing}: var(--plasma-typo-body-m-letter-spacing);
302
313
  ${tokens.textFieldLabelLineHeight}: var(--plasma-typo-body-m-line-height);
314
+ ${tokens.textFieldTitleCaptionMargin}: 0.3125rem;
315
+ ${tokens.textFieldTitleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family);
316
+ ${tokens.textFieldTitleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style);
317
+ ${tokens.textFieldTitleCaptionFontSize}: var(--plasma-typo-body-xs-font-size);
318
+ ${tokens.textFieldTitleCaptionFontWeight}: var(--plasma-typo-body-xs-font-weight);
319
+ ${tokens.textFieldTitleCaptionLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing);
320
+ ${tokens.textFieldTitleCaptionLineHeight}: var(--plasma-typo-body-xs-line-height);
303
321
 
304
322
  ${tokens.textFieldHintMargin}: -0.688rem -0.5rem;
305
323
  ${tokens.textFieldHintTargetSize}: 2.375rem;
@@ -376,6 +394,13 @@ export const config = {
376
394
  ${tokens.textFieldLabelFontWeight}: var(--plasma-typo-body-s-font-weight);
377
395
  ${tokens.textFieldLabelLetterSpacing}: var(--plasma-typo-body-s-letter-spacing);
378
396
  ${tokens.textFieldLabelLineHeight}: var(--plasma-typo-body-s-line-height);
397
+ ${tokens.textFieldTitleCaptionMargin}: 0.1875rem;
398
+ ${tokens.textFieldTitleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family);
399
+ ${tokens.textFieldTitleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style);
400
+ ${tokens.textFieldTitleCaptionFontSize}: var(--plasma-typo-body-xs-font-size);
401
+ ${tokens.textFieldTitleCaptionFontWeight}: var(--plasma-typo-body-xs-font-weight);
402
+ ${tokens.textFieldTitleCaptionLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing);
403
+ ${tokens.textFieldTitleCaptionLineHeight}: var(--plasma-typo-body-xs-line-height);
379
404
 
380
405
  ${tokens.textFieldHintMargin}: -0.688rem -0.5rem;
381
406
  ${tokens.textFieldHintTargetSize}: 2.375rem;
@@ -452,6 +477,13 @@ export const config = {
452
477
  ${tokens.textFieldLabelFontWeight}: var(--plasma-typo-body-xs-font-weight);
453
478
  ${tokens.textFieldLabelLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing);
454
479
  ${tokens.textFieldLabelLineHeight}: var(--plasma-typo-body-xs-line-height);
480
+ ${tokens.textFieldTitleCaptionMargin}: 0;
481
+ ${tokens.textFieldTitleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family);
482
+ ${tokens.textFieldTitleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style);
483
+ ${tokens.textFieldTitleCaptionFontSize}: var(--plasma-typo-body-xs-font-size);
484
+ ${tokens.textFieldTitleCaptionFontWeight}: var(--plasma-typo-body-xs-font-weight);
485
+ ${tokens.textFieldTitleCaptionLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing);
486
+ ${tokens.textFieldTitleCaptionLineHeight}: var(--plasma-typo-body-xs-line-height);
455
487
 
456
488
  ${tokens.textFieldHintMargin}: -0.75rem -0.625rem -0.75rem -0.5rem;
457
489
  ${tokens.textFieldHintTargetSize}: 2.375rem;
@@ -582,6 +614,7 @@ export const config = {
582
614
  ${tokens.textFieldBorderColorReadOnly}: var(--outline-read-only);
583
615
  ${tokens.textFieldPlaceholderColorReadOnly}: var(--text-secondary);
584
616
  ${tokens.textFieldLeftHelperColorReadOnly}: var(--text-secondary);
617
+ ${tokens.textFieldTitleCaptionColorReadOnly}: var(--text-secondary);
585
618
  ${tokens.textFieldLabelColorReadOnly}: var(--text-primary);
586
619
  ${tokens.textFieldDividerColorReadOnly}: var(--outline-read-only);
587
620
  ${tokens.textFieldBorderColor}: transparent;
@@ -1,8 +1,15 @@
1
- import { autocompleteConfig, component, mergeConfig, fixedForwardRef } from '@salutejs/plasma-new-hope/styled-components';
1
+ import { autocompleteConfig, component, createConditionalComponent, mergeConfig, fixedForwardRef } from '@salutejs/plasma-new-hope/styled-components';
2
2
  import React from 'react';
3
3
  import { config } from './Autocomplete.config';
4
+ import { config as clearConfig } from './Autocomplete.clear.config';
4
5
  const mergedConfig = mergeConfig(autocompleteConfig, config);
5
- export const AutocompleteComponent = component(mergedConfig);
6
+ export const AutocompleteDefault = component(mergedConfig);
7
+ const mergedClearConfig = mergeConfig(autocompleteConfig, clearConfig);
8
+ export const AutocompleteClear = component(mergedClearConfig);
9
+ export const AutocompleteComponent = createConditionalComponent({
10
+ default: AutocompleteDefault,
11
+ clear: AutocompleteClear
12
+ });
6
13
  const AutocompleteWithoutRef = (props, ref)=>{
7
14
  return /*#__PURE__*/ React.createElement(AutocompleteComponent, {
8
15
  ...props,
@@ -197,6 +197,7 @@ export const config = {
197
197
  ${tokens.hintInnerLabelPlacementOffset}:0.82rem -2.063rem auto auto;
198
198
 
199
199
  ${tokens.titleCaptionOffset}: 0.375rem;
200
+ ${tokens.titleCaptionMargin}: 0.375rem;
200
201
  ${tokens.titleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family);
201
202
  ${tokens.titleCaptionFontSize}: var(--plasma-typo-body-xs-font-size);
202
203
  ${tokens.titleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style);
@@ -368,6 +369,7 @@ export const config = {
368
369
  ${tokens.hintInnerLabelPlacementOffset}: 0.563rem -2.188rem auto auto;
369
370
 
370
371
  ${tokens.titleCaptionOffset}: 0.375rem;
372
+ ${tokens.titleCaptionMargin}: 0.375rem;
371
373
  ${tokens.titleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family);
372
374
  ${tokens.titleCaptionFontSize}: var(--plasma-typo-body-xs-font-size);
373
375
  ${tokens.titleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style);
@@ -539,6 +541,7 @@ export const config = {
539
541
  ${tokens.hintInnerLabelPlacementOffset}: 0.312rem -2.188rem auto auto;
540
542
 
541
543
  ${tokens.titleCaptionOffset}: 0.313rem;
544
+ ${tokens.titleCaptionMargin}: 0.3125rem;
542
545
  ${tokens.titleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family);
543
546
  ${tokens.titleCaptionFontSize}: var(--plasma-typo-body-xs-font-size);
544
547
  ${tokens.titleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style);
@@ -710,6 +713,7 @@ export const config = {
710
713
  ${tokens.hintInnerLabelPlacementOffset}: 0.062rem -2.188rem auto auto;
711
714
 
712
715
  ${tokens.titleCaptionOffset}: 0.188rem;
716
+ ${tokens.titleCaptionMargin}: 0.1875rem;
713
717
  ${tokens.titleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family);
714
718
  ${tokens.titleCaptionFontSize}: var(--plasma-typo-body-xs-font-size);
715
719
  ${tokens.titleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style);
@@ -881,6 +885,7 @@ export const config = {
881
885
  ${tokens.hintInnerLabelPlacementOffset}: -0.188rem -1.938rem auto auto;
882
886
 
883
887
  ${tokens.titleCaptionOffset}: 0;
888
+ ${tokens.titleCaptionMargin}: 0;
884
889
  ${tokens.titleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family);
885
890
  ${tokens.titleCaptionFontSize}: var(--plasma-typo-body-xs-font-size);
886
891
  ${tokens.titleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style);
@@ -171,6 +171,7 @@ export const config = {
171
171
  ${tokens.hintInnerLabelPlacementOffset}: 0.813rem -2.938rem auto auto;
172
172
 
173
173
  ${tokens.titleCaptionOffset}: 0.375rem;
174
+ ${tokens.titleCaptionMargin}: 0.375rem;
174
175
  ${tokens.titleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family);
175
176
  ${tokens.titleCaptionFontSize}: var(--plasma-typo-body-xs-font-size);
176
177
  ${tokens.titleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style);
@@ -343,6 +344,7 @@ export const config = {
343
344
  ${tokens.clearHintInnerLabelPlacementOffset}: 0.563rem -2.188rem auto auto;
344
345
 
345
346
  ${tokens.titleCaptionOffset}: 0.375rem;
347
+ ${tokens.titleCaptionMargin}: 0.375rem;
346
348
  ${tokens.titleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family);
347
349
  ${tokens.titleCaptionFontSize}: var(--plasma-typo-body-xs-font-size);
348
350
  ${tokens.titleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style);
@@ -515,6 +517,7 @@ export const config = {
515
517
  ${tokens.clearHintInnerLabelPlacementOffset}: 0.312rem -2.188rem auto auto;
516
518
 
517
519
  ${tokens.titleCaptionOffset}: 0.313rem;
520
+ ${tokens.titleCaptionMargin}: 0.3125rem;
518
521
  ${tokens.titleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family);
519
522
  ${tokens.titleCaptionFontSize}: var(--plasma-typo-body-xs-font-size);
520
523
  ${tokens.titleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style);
@@ -687,6 +690,7 @@ export const config = {
687
690
  ${tokens.clearHintInnerLabelPlacementOffset}: 0.062rem -2.188rem auto auto;
688
691
 
689
692
  ${tokens.titleCaptionOffset}: 0.188rem;
693
+ ${tokens.titleCaptionMargin}: 0.1875rem;
690
694
  ${tokens.titleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family);
691
695
  ${tokens.titleCaptionFontSize}: var(--plasma-typo-body-xs-font-size);
692
696
  ${tokens.titleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style);
@@ -859,6 +863,7 @@ export const config = {
859
863
  ${tokens.clearHintInnerLabelPlacementOffset}: -0.188rem -1.938rem auto auto;
860
864
 
861
865
  ${tokens.titleCaptionOffset}: 0;
866
+ ${tokens.titleCaptionMargin}: 0;
862
867
  ${tokens.titleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family);
863
868
  ${tokens.titleCaptionFontSize}: var(--plasma-typo-body-xs-font-size);
864
869
  ${tokens.titleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style);
@@ -150,6 +150,7 @@ export const config = {
150
150
  ${tokens.labelInnerLineHeight}: var(--plasma-typo-body-xs-line-height);
151
151
 
152
152
  ${tokens.titleCaptionOffset}: 0.375rem;
153
+ ${tokens.titleCaptionMargin}: 0.375rem;
153
154
  ${tokens.titleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family);
154
155
  ${tokens.titleCaptionFontSize}: var(--plasma-typo-body-xs-font-size);
155
156
  ${tokens.titleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style);
@@ -318,6 +319,7 @@ export const config = {
318
319
  ${tokens.labelInnerLineHeight}: var(--plasma-typo-body-xs-line-height);
319
320
 
320
321
  ${tokens.titleCaptionOffset}: 0.375rem;
322
+ ${tokens.titleCaptionMargin}: 0.375rem;
321
323
  ${tokens.titleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family);
322
324
  ${tokens.titleCaptionFontSize}: var(--plasma-typo-body-xs-font-size);
323
325
  ${tokens.titleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style);
@@ -486,6 +488,7 @@ export const config = {
486
488
  ${tokens.labelInnerLineHeight}: var(--plasma-typo-body-xs-line-height);
487
489
 
488
490
  ${tokens.titleCaptionOffset}: 0.313rem;
491
+ ${tokens.titleCaptionMargin}: 0.3125rem;
489
492
  ${tokens.titleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family);
490
493
  ${tokens.titleCaptionFontSize}: var(--plasma-typo-body-xs-font-size);
491
494
  ${tokens.titleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style);
@@ -654,6 +657,7 @@ export const config = {
654
657
  ${tokens.labelInnerLineHeight}: var(--plasma-typo-body-xs-line-height);
655
658
 
656
659
  ${tokens.titleCaptionOffset}: 0.188rem;
660
+ ${tokens.titleCaptionMargin}: 0.1875rem;
657
661
  ${tokens.titleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family);
658
662
  ${tokens.titleCaptionFontSize}: var(--plasma-typo-body-xs-font-size);
659
663
  ${tokens.titleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style);
@@ -822,6 +826,7 @@ export const config = {
822
826
  ${tokens.labelInnerLineHeight}: var(--plasma-typo-body-xs-line-height);
823
827
 
824
828
  ${tokens.titleCaptionOffset}: 0;
829
+ ${tokens.titleCaptionMargin}: 0;
825
830
  ${tokens.titleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family);
826
831
  ${tokens.titleCaptionFontSize}: var(--plasma-typo-body-xs-font-size);
827
832
  ${tokens.titleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style);
@@ -144,6 +144,7 @@ export const config = {
144
144
  ${tokens.labelInnerLineHeight}: var(--plasma-typo-body-xs-line-height);
145
145
 
146
146
  ${tokens.titleCaptionOffset}: 0.375rem;
147
+ ${tokens.titleCaptionMargin}: 0.375rem;
147
148
  ${tokens.titleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family);
148
149
  ${tokens.titleCaptionFontSize}: var(--plasma-typo-body-xs-font-size);
149
150
  ${tokens.titleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style);
@@ -312,6 +313,7 @@ export const config = {
312
313
  ${tokens.labelInnerLineHeight}: var(--plasma-typo-body-xs-line-height);
313
314
 
314
315
  ${tokens.titleCaptionOffset}: 0.375rem;
316
+ ${tokens.titleCaptionMargin}: 0.375rem;
315
317
  ${tokens.titleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family);
316
318
  ${tokens.titleCaptionFontSize}: var(--plasma-typo-body-xs-font-size);
317
319
  ${tokens.titleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style);
@@ -480,6 +482,7 @@ export const config = {
480
482
  ${tokens.labelInnerLineHeight}: var(--plasma-typo-body-xs-line-height);
481
483
 
482
484
  ${tokens.titleCaptionOffset}: 0.313rem;
485
+ ${tokens.titleCaptionMargin}: 0.3125rem;
483
486
  ${tokens.titleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family);
484
487
  ${tokens.titleCaptionFontSize}: var(--plasma-typo-body-xs-font-size);
485
488
  ${tokens.titleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style);
@@ -648,6 +651,7 @@ export const config = {
648
651
  ${tokens.labelInnerLineHeight}: var(--plasma-typo-body-xs-line-height);
649
652
 
650
653
  ${tokens.titleCaptionOffset}: 0.188rem;
654
+ ${tokens.titleCaptionMargin}: 0.1875rem;
651
655
  ${tokens.titleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family);
652
656
  ${tokens.titleCaptionFontSize}: var(--plasma-typo-body-xs-font-size);
653
657
  ${tokens.titleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style);
@@ -816,6 +820,7 @@ export const config = {
816
820
  ${tokens.labelInnerLineHeight}: var(--plasma-typo-body-xs-line-height);
817
821
 
818
822
  ${tokens.titleCaptionOffset}: 0;
823
+ ${tokens.titleCaptionMargin}: 0;
819
824
  ${tokens.titleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family);
820
825
  ${tokens.titleCaptionFontSize}: var(--plasma-typo-body-xs-font-size);
821
826
  ${tokens.titleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style);
@@ -62,6 +62,7 @@ export const config = {
62
62
  ${tokens.hintWithoutLabelPlacementOffset}: 0.438rem -2.938rem auto auto;
63
63
 
64
64
  ${tokens.titleCaptionOffset}: 0.375rem;
65
+ ${tokens.titleCaptionMargin}: 0.375rem;
65
66
  ${tokens.titleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family);
66
67
  ${tokens.titleCaptionFontSize}: var(--plasma-typo-body-xs-font-size);
67
68
  ${tokens.titleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style);
@@ -111,6 +112,7 @@ export const config = {
111
112
  ${tokens.hintWithoutLabelPlacementOffset}: 0.438rem -2.813rem auto auto;
112
113
 
113
114
  ${tokens.titleCaptionOffset}: 0.313rem;
115
+ ${tokens.titleCaptionMargin}: 0.3125rem;
114
116
  ${tokens.titleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family);
115
117
  ${tokens.titleCaptionFontSize}: var(--plasma-typo-body-xs-font-size);
116
118
  ${tokens.titleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style);
@@ -160,6 +162,7 @@ export const config = {
160
162
  ${tokens.hintWithoutLabelPlacementOffset}: 0.438rem -2.688rem auto auto;
161
163
 
162
164
  ${tokens.titleCaptionOffset}: 0.188rem;
165
+ ${tokens.titleCaptionMargin}: 0.1875rem;
163
166
  ${tokens.titleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family);
164
167
  ${tokens.titleCaptionFontSize}: var(--plasma-typo-body-xs-font-size);
165
168
  ${tokens.titleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style);
@@ -209,6 +212,7 @@ export const config = {
209
212
  ${tokens.hintWithoutLabelPlacementOffset}: 0.188rem -2.063rem auto auto;
210
213
 
211
214
  ${tokens.titleCaptionOffset}: 0;
215
+ ${tokens.titleCaptionMargin}: 0;
212
216
  ${tokens.titleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family);
213
217
  ${tokens.titleCaptionFontSize}: var(--plasma-typo-body-xs-font-size);
214
218
  ${tokens.titleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style);
@@ -0,0 +1,142 @@
1
+ import React, { useEffect, useCallback, useRef, useState, useContext } from 'react';
2
+ import ReactDOM from 'react-dom';
3
+ import styled, { css, keyframes, createGlobalStyle } from 'styled-components';
4
+ import { plasmaCore, useFocusTrap } from '@salutejs/plasma-new-hope/styled-components';
5
+ import { ModalsContext, MODALS_PORTAL_ID } from './ModalsContext';
6
+ import { ModalView } from './ModalView';
7
+ const ESCAPE_KEYCODE = 27;
8
+ const wrapperHideAnimation = keyframes([
9
+ `from{opacity:1;}to{opacity:0;}`
10
+ ]);
11
+ const bodyShowAnimation = keyframes([
12
+ `from{opacity:0;transform:translateY(-100%);}to{opacity:1;transform:translateY(0);}`
13
+ ]);
14
+ const bodyHideAnimation = keyframes([
15
+ `from{opacity:1;transform:translateY(0);}to{opacity:0;transform:translateY(-100%);}`
16
+ ]);
17
+ const StyledWrapper = styled.div.withConfig({
18
+ displayName: "Modal__StyledWrapper",
19
+ componentId: "sc-c1a3a85-0"
20
+ })([
21
+ `position:fixed;top:0;left:0;right:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;`,
22
+ ``
23
+ ], ({ isHiding })=>isHiding && css([
24
+ `animation:0.1s `,
25
+ ` ease-out;`
26
+ ], wrapperHideAnimation));
27
+ const StyledOverlay = styled.div.withConfig({
28
+ displayName: "Modal__StyledOverlay",
29
+ componentId: "sc-c1a3a85-1"
30
+ })([
31
+ `position:absolute;`,
32
+ `;width:100%;height:100%;background-color:`,
33
+ `;backdrop-filter:var(--backdrop-filter);cursor:`,
34
+ `;`
35
+ ], ({ $withBlur })=>{
36
+ return css([
37
+ `--background-color:`,
38
+ `;--backdrop-filter:`,
39
+ `;`
40
+ ], $withBlur ? 'rgba(35, 35, 35, 0.2)' : 'rgba(8, 8, 8, 0.56)', $withBlur ? 'blur(1rem)' : 'none');
41
+ }, ({ transparent })=>transparent ? 'transparent' : 'var(--background-color)', ({ clickable })=>clickable ? 'pointer' : 'default');
42
+ const StyledModal = styled.div.withConfig({
43
+ displayName: "Modal__StyledModal",
44
+ componentId: "sc-c1a3a85-2"
45
+ })([
46
+ `position:absolute;height:100%;pointer-events:none;`,
47
+ ``
48
+ ], ({ isHiding })=>css([
49
+ `animation:0.4s `,
50
+ ` ease-out;`
51
+ ], isHiding ? bodyHideAnimation : bodyShowAnimation));
52
+ const NoScroll = createGlobalStyle([
53
+ `body{overflow-y:hidden;}`
54
+ ]);
55
+ /**
56
+ * Модальное окно.
57
+ * Управляет показом/скрытием, подложкой и анимацией визуальной части модального окна.
58
+ */ export const Modal = ({ id, isOpen, opened, onClose, onOverlayClick, onEscKeyDown, closeOnEsc = true, closeOnOverlayClick = true, withBlur, initialFocusRef, focusAfterRef, ...rest })=>{
59
+ const innerIsOpen = Boolean(isOpen || opened);
60
+ const uniqId = plasmaCore.useUniqId();
61
+ const innerId = id || uniqId;
62
+ const wrapperRef = useRef(null);
63
+ const portalRef = useRef(null);
64
+ const trapRef = useFocusTrap(true, initialFocusRef, focusAfterRef);
65
+ const controller = useContext(ModalsContext);
66
+ const [, forceRender] = useState(false);
67
+ const onOverlayKeyDown = useCallback((event)=>{
68
+ if (!closeOnOverlayClick) {
69
+ return;
70
+ }
71
+ if (onOverlayClick) {
72
+ onOverlayClick(event);
73
+ return;
74
+ }
75
+ onClose?.();
76
+ }, [
77
+ closeOnOverlayClick,
78
+ onOverlayClick,
79
+ onClose
80
+ ]);
81
+ useEffect(()=>{
82
+ let portal = document.getElementById(MODALS_PORTAL_ID);
83
+ if (!portal) {
84
+ portal = document.createElement('div');
85
+ portal.setAttribute('id', MODALS_PORTAL_ID);
86
+ portal.setAttribute('aria-live', 'off');
87
+ portal.setAttribute('role', 'presentation');
88
+ portal.style.position = 'relative';
89
+ portal.style.zIndex = '9000';
90
+ document.body.appendChild(portal);
91
+ }
92
+ portalRef.current = portal;
93
+ /**
94
+ * Изменение стейта нужно для того, чтобы модальное окно
95
+ * отобразилось после записи DOM элемента в portalRef.current
96
+ */ forceRender(true);
97
+ }, []);
98
+ useEffect(()=>{
99
+ const onKeyDown = (event)=>{
100
+ if (closeOnEsc && event.keyCode === ESCAPE_KEYCODE && wrapperRef.current && portalRef.current && portalRef.current.contains(wrapperRef.current) && portalRef.current.children[portalRef.current.children.length - 1] === wrapperRef.current) {
101
+ if (onEscKeyDown) {
102
+ onEscKeyDown(event);
103
+ return;
104
+ }
105
+ onClose?.();
106
+ }
107
+ };
108
+ window.addEventListener('keydown', onKeyDown);
109
+ return ()=>{
110
+ window.removeEventListener('keydown', onKeyDown);
111
+ };
112
+ }, [
113
+ onClose,
114
+ onEscKeyDown,
115
+ closeOnEsc
116
+ ]);
117
+ useEffect(()=>{
118
+ return ()=>{
119
+ controller.unregister(innerId);
120
+ };
121
+ }, [
122
+ controller.unregister,
123
+ innerId
124
+ ]);
125
+ if (innerIsOpen) {
126
+ controller.register(innerId);
127
+ } else {
128
+ return null;
129
+ }
130
+ return /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement(NoScroll, null), portalRef.current && /*#__PURE__*/ ReactDOM.createPortal(/*#__PURE__*/ React.createElement(StyledWrapper, {
131
+ ref: wrapperRef
132
+ }, /*#__PURE__*/ React.createElement(StyledOverlay, {
133
+ transparent: controller.items.indexOf(innerId) !== 0,
134
+ clickable: closeOnOverlayClick,
135
+ onClick: onOverlayKeyDown,
136
+ $withBlur: withBlur
137
+ }), /*#__PURE__*/ React.createElement(StyledModal, null, /*#__PURE__*/ React.createElement(ModalView, {
138
+ onClose: onClose,
139
+ ref: trapRef,
140
+ ...rest
141
+ }))), portalRef.current));
142
+ };
@@ -0,0 +1,46 @@
1
+ import React from 'react';
2
+ import styled from 'styled-components';
3
+ import { IconClose } from '@salutejs/plasma-icons';
4
+ import { IconButton } from '../IconButton';
5
+ const StyledWrapper = styled.div.withConfig({
6
+ displayName: "ModalView__StyledWrapper",
7
+ componentId: "sc-e33474e6-0"
8
+ })([
9
+ `display:flex;align-items:center;height:100%;`
10
+ ]);
11
+ const StyledBody = styled.div.withConfig({
12
+ displayName: "ModalView__StyledBody",
13
+ componentId: "sc-e33474e6-1"
14
+ })([
15
+ `position:relative;width:25rem;max-width:100%;border-radius:1.25rem;background-color:var(--surface-solid-card);pointer-events:all;`
16
+ ]);
17
+ const StyledContent = styled.div.withConfig({
18
+ displayName: "ModalView__StyledContent",
19
+ componentId: "sc-e33474e6-2"
20
+ })([
21
+ `padding:2rem;`
22
+ ]);
23
+ const StyledButtonClose = styled(IconButton).withConfig({
24
+ displayName: "ModalView__StyledButtonClose",
25
+ componentId: "sc-e33474e6-3"
26
+ })([
27
+ `position:absolute;top:0;right:0;margin:2rem;width:auto;height:auto;padding:0;`
28
+ ]);
29
+ /**
30
+ * Визуальная часть модального окна.
31
+ */ export const ModalView = /*#__PURE__*/ React.forwardRef(({ role = 'dialog', closeButtonAriaLabel, children, onClose, showCloseButton = true, ...rest }, ref)=>{
32
+ return /*#__PURE__*/ React.createElement(StyledWrapper, null, /*#__PURE__*/ React.createElement(StyledBody, {
33
+ ...rest,
34
+ ref: ref,
35
+ role: role,
36
+ "aria-modal": "true"
37
+ }, /*#__PURE__*/ React.createElement(StyledContent, null, children), showCloseButton && /*#__PURE__*/ React.createElement(StyledButtonClose, {
38
+ "aria-label": closeButtonAriaLabel,
39
+ onClick: onClose,
40
+ view: "clear",
41
+ size: "s"
42
+ }, /*#__PURE__*/ React.createElement(IconClose, {
43
+ size: "s",
44
+ color: "inherit"
45
+ }))));
46
+ });
@@ -0,0 +1,51 @@
1
+ function _define_property(obj, key, value) {
2
+ if (key in obj) {
3
+ Object.defineProperty(obj, key, {
4
+ value: value,
5
+ enumerable: true,
6
+ configurable: true,
7
+ writable: true
8
+ });
9
+ } else {
10
+ obj[key] = value;
11
+ }
12
+ return obj;
13
+ }
14
+ import React, { useEffect } from 'react';
15
+ /**
16
+ * Хранилище модальных окон.
17
+ */ class ModalsController {
18
+ register(id) {
19
+ const indexOfElement = this.items.indexOf(id);
20
+ if (indexOfElement >= 0) {
21
+ return;
22
+ }
23
+ return this.items.push(id);
24
+ }
25
+ unregister(id) {
26
+ const indexOfElement = this.items.indexOf(id);
27
+ if (indexOfElement < 0) {
28
+ return;
29
+ }
30
+ this.items.splice(indexOfElement, 1);
31
+ }
32
+ constructor(){
33
+ _define_property(this, "items", []);
34
+ }
35
+ }
36
+ const controller = new ModalsController();
37
+ export const MODALS_PORTAL_ID = 'plasma-modals-root';
38
+ export const ModalsContext = /*#__PURE__*/ React.createContext(controller);
39
+ export const ModalsProvider = ({ children })=>{
40
+ useEffect(()=>{
41
+ return ()=>{
42
+ const portal = document.createElement('div');
43
+ if (portal && document.body.contains(portal)) {
44
+ document.body.removeChild(portal);
45
+ }
46
+ };
47
+ }, []);
48
+ return /*#__PURE__*/ React.createElement(ModalsContext.Provider, {
49
+ value: controller
50
+ }, children);
51
+ };
@@ -1 +1,3 @@
1
- export { Modal, ModalView, ModalsProvider } from '@salutejs/plasma-hope';
1
+ export { Modal } from './Modal';
2
+ export { ModalsProvider } from './ModalsContext';
3
+ export { ModalView } from './ModalView';
@@ -138,6 +138,7 @@ export const config = {
138
138
  ${tokens.hintPlacementInnerMargin}: 0 -0.438rem;
139
139
 
140
140
  ${tokens.titleCaptionOffset}: 0.375rem;
141
+ ${tokens.titleCaptionMargin}: 0.375rem;
141
142
  ${tokens.titleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family);
142
143
  ${tokens.titleCaptionFontSize}: var(--plasma-typo-body-xs-font-size);
143
144
  ${tokens.titleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style);
@@ -215,6 +216,7 @@ export const config = {
215
216
  ${tokens.hintPlacementInnerMargin}: 0 -0.438rem;
216
217
 
217
218
  ${tokens.titleCaptionOffset}: 0.375rem;
219
+ ${tokens.titleCaptionMargin}: 0.375rem;
218
220
  ${tokens.titleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family);
219
221
  ${tokens.titleCaptionFontSize}: var(--plasma-typo-body-xs-font-size);
220
222
  ${tokens.titleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style);
@@ -292,6 +294,7 @@ export const config = {
292
294
  ${tokens.hintPlacementInnerMargin}: 0 -0.438rem;
293
295
 
294
296
  ${tokens.titleCaptionOffset}: 0.313rem;
297
+ ${tokens.titleCaptionMargin}: 0.3125rem;
295
298
  ${tokens.titleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family);
296
299
  ${tokens.titleCaptionFontSize}: var(--plasma-typo-body-xs-font-size);
297
300
  ${tokens.titleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style);
@@ -369,6 +372,7 @@ export const config = {
369
372
  ${tokens.hintPlacementInnerMargin}: 0 -0.438rem;
370
373
 
371
374
  ${tokens.titleCaptionOffset}: 0.188rem;
375
+ ${tokens.titleCaptionMargin}: 0.1875rem;
372
376
  ${tokens.titleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family);
373
377
  ${tokens.titleCaptionFontSize}: var(--plasma-typo-body-xs-font-size);
374
378
  ${tokens.titleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style);
@@ -446,6 +450,7 @@ export const config = {
446
450
  ${tokens.hintPlacementInnerMargin}: 0 -0.688rem;
447
451
 
448
452
  ${tokens.titleCaptionOffset}: 0;
453
+ ${tokens.titleCaptionMargin}: 0;
449
454
  ${tokens.titleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family);
450
455
  ${tokens.titleCaptionFontSize}: var(--plasma-typo-body-xs-font-size);
451
456
  ${tokens.titleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style);
@@ -114,6 +114,7 @@ export const config = {
114
114
  ${tokens.hintPlacementInnerMargin}: 0 0.813rem 0 -0.438rem;
115
115
 
116
116
  ${tokens.titleCaptionOffset}: 0.375rem;
117
+ ${tokens.titleCaptionMargin}: 0.375rem;
117
118
  ${tokens.titleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family);
118
119
  ${tokens.titleCaptionFontSize}: var(--plasma-typo-body-xs-font-size);
119
120
  ${tokens.titleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style);
@@ -192,6 +193,7 @@ export const config = {
192
193
  ${tokens.hintPlacementInnerMargin}: 0 0.563rem 0 -0.438rem;
193
194
 
194
195
  ${tokens.titleCaptionOffset}: 0.375rem;
196
+ ${tokens.titleCaptionMargin}: 0.375rem;
195
197
  ${tokens.titleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family);
196
198
  ${tokens.titleCaptionFontSize}: var(--plasma-typo-body-xs-font-size);
197
199
  ${tokens.titleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style);
@@ -270,6 +272,7 @@ export const config = {
270
272
  ${tokens.hintPlacementInnerMargin}: 0 0.313rem 0 -0.438rem;
271
273
 
272
274
  ${tokens.titleCaptionOffset}: 0.313rem;
275
+ ${tokens.titleCaptionMargin}: 0.3125rem;
273
276
  ${tokens.titleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family);
274
277
  ${tokens.titleCaptionFontSize}: var(--plasma-typo-body-xs-font-size);
275
278
  ${tokens.titleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style);
@@ -348,6 +351,7 @@ export const config = {
348
351
  ${tokens.hintPlacementInnerMargin}: 0 0.063rem 0 -0.438rem;
349
352
 
350
353
  ${tokens.titleCaptionOffset}: 0.188rem;
354
+ ${tokens.titleCaptionMargin}: 0.1875rem;
351
355
  ${tokens.titleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family);
352
356
  ${tokens.titleCaptionFontSize}: var(--plasma-typo-body-xs-font-size);
353
357
  ${tokens.titleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style);
@@ -426,6 +430,7 @@ export const config = {
426
430
  ${tokens.hintPlacementInnerMargin}: 0 -0.188rem 0 -0.688rem;
427
431
 
428
432
  ${tokens.titleCaptionOffset}: 0;
433
+ ${tokens.titleCaptionMargin}: 0;
429
434
  ${tokens.titleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family);
430
435
  ${tokens.titleCaptionFontSize}: var(--plasma-typo-body-xs-font-size);
431
436
  ${tokens.titleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style);