@skbkontur/react-ui 4.17.0 → 4.17.2

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 (54) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/cjs/components/Button/Button.md +68 -0
  3. package/cjs/components/Button/getInnerLinkTheme.js +1 -0
  4. package/cjs/components/Button/getInnerLinkTheme.js.map +1 -1
  5. package/cjs/components/Dropdown/getDropdownTheme.js +21 -22
  6. package/cjs/components/Dropdown/getDropdownTheme.js.map +1 -1
  7. package/cjs/components/FileUploader/FileUploader.js +1 -1
  8. package/cjs/components/FileUploader/FileUploader.js.map +1 -1
  9. package/cjs/components/FileUploader/FileUploader.styles.d.ts +1 -1
  10. package/cjs/components/FileUploader/FileUploader.styles.js +10 -2
  11. package/cjs/components/FileUploader/FileUploader.styles.js.map +1 -1
  12. package/cjs/components/Link/Link.js +9 -5
  13. package/cjs/components/Link/Link.js.map +1 -1
  14. package/cjs/components/Link/Link.md +69 -0
  15. package/cjs/components/Link/Link.styles.d.ts +1 -0
  16. package/cjs/components/Link/Link.styles.js +28 -20
  17. package/cjs/components/Link/Link.styles.js.map +1 -1
  18. package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  19. package/cjs/internal/themes/DefaultTheme.d.ts +24 -2
  20. package/cjs/internal/themes/DefaultTheme.js +77 -6
  21. package/cjs/internal/themes/DefaultTheme.js.map +1 -1
  22. package/cjs/internal/themes/Theme2022.d.ts +3 -2
  23. package/cjs/internal/themes/Theme2022.js +13 -4
  24. package/cjs/internal/themes/Theme2022.js.map +1 -1
  25. package/cjs/internal/themes/Theme2022Dark.d.ts +3 -3
  26. package/cjs/internal/themes/Theme2022Dark.js +6 -4
  27. package/cjs/internal/themes/Theme2022Dark.js.map +1 -1
  28. package/components/Button/Button.md +68 -0
  29. package/components/Button/getInnerLinkTheme/getInnerLinkTheme.js +1 -0
  30. package/components/Button/getInnerLinkTheme/getInnerLinkTheme.js.map +1 -1
  31. package/components/Dropdown/getDropdownTheme/getDropdownTheme.js +21 -22
  32. package/components/Dropdown/getDropdownTheme/getDropdownTheme.js.map +1 -1
  33. package/components/FileUploader/FileUploader/FileUploader.js +1 -1
  34. package/components/FileUploader/FileUploader/FileUploader.js.map +1 -1
  35. package/components/FileUploader/FileUploader.styles/FileUploader.styles.js +2 -2
  36. package/components/FileUploader/FileUploader.styles/FileUploader.styles.js.map +1 -1
  37. package/components/FileUploader/FileUploader.styles.d.ts +1 -1
  38. package/components/Link/Link/Link.js +3 -3
  39. package/components/Link/Link/Link.js.map +1 -1
  40. package/components/Link/Link.md +69 -0
  41. package/components/Link/Link.styles/Link.styles.js +23 -20
  42. package/components/Link/Link.styles/Link.styles.js.map +1 -1
  43. package/components/Link/Link.styles.d.ts +1 -0
  44. package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  45. package/internal/themes/DefaultTheme/DefaultTheme.js +123 -5
  46. package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
  47. package/internal/themes/DefaultTheme.d.ts +24 -2
  48. package/internal/themes/Theme2022/Theme2022.js +17 -3
  49. package/internal/themes/Theme2022/Theme2022.js.map +1 -1
  50. package/internal/themes/Theme2022.d.ts +3 -2
  51. package/internal/themes/Theme2022Dark/Theme2022Dark.js +8 -3
  52. package/internal/themes/Theme2022Dark/Theme2022Dark.js.map +1 -1
  53. package/internal/themes/Theme2022Dark.d.ts +3 -3
  54. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -3,6 +3,28 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [4.17.2](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@4.17.1...@skbkontur/react-ui@4.17.2) (2023-11-13)
7
+
8
+ **Note:** Version bump only for package @skbkontur/react-ui
9
+
10
+
11
+
12
+
13
+
14
+ ## [4.17.1](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@4.17.0...@skbkontur/react-ui@4.17.1) (2023-11-09)
15
+
16
+
17
+ ### Bug Fixes
18
+
19
+ * **Dropdown:** add 21 theme variables ([#3310](https://github.com/skbkontur/retail-ui/issues/3310)) ([47b69ad](https://github.com/skbkontur/retail-ui/commit/47b69adf48fbbdce93d73ee8bb2a8ab61f7e8534))
20
+ * **FileUploader:** hide native input in Safari ([#3309](https://github.com/skbkontur/retail-ui/issues/3309)) ([3454e50](https://github.com/skbkontur/retail-ui/commit/3454e500cd8b0ac434f7417bbf9fbbb973d251f6))
21
+ * **Link:** fix link underline on focus ([#3311](https://github.com/skbkontur/retail-ui/issues/3311)) ([7be897e](https://github.com/skbkontur/retail-ui/commit/7be897eb57a66d3966d442f1a4a0bc6b37b8924a))
22
+ * **Toggle:** link toggleContainerBg to toggleBg variables ([#3303](https://github.com/skbkontur/retail-ui/issues/3303)) ([d881c90](https://github.com/skbkontur/retail-ui/commit/d881c904bc6074ef85065038cc0b62d8cd22a183))
23
+
24
+
25
+
26
+
27
+
6
28
  # [4.17.0](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@4.16.2...@skbkontur/react-ui@4.17.0) (2023-11-01)
7
29
 
8
30
 
@@ -136,3 +136,71 @@ import { Button, Gapped } from '@skbkontur/react-ui';
136
136
  <Button>Ok</Button>
137
137
  </Gapped>
138
138
  ```
139
+
140
+
141
+ Пример кастомизации кнопки-ссылки
142
+
143
+ ```jsx harmony
144
+ import { Toast } from "@skbkontur/react-ui";
145
+ import { Copy } from "@skbkontur/react-icons"
146
+
147
+ const textDecorationStyles = {
148
+ btnLinkLineBorderBottomWidth: '0',
149
+ btnLinkHoverTextDecoration: 'underline'
150
+ }
151
+
152
+ const underlineOnHoverStyles = {
153
+ btnLinkLineBorderBottomColor: 'transparent',
154
+ }
155
+
156
+ const differentColorStyles = {
157
+ btnLinkColor: 'blue',
158
+ btnLinkHoverColor: 'blue',
159
+ btnLinkActiveColor: 'blue',
160
+ }
161
+
162
+ const stringify = (styles) => {
163
+ return `${Object.entries(styles).map(([key, value]) => `${key}: "${value}"`).join(", ")}`
164
+ }
165
+
166
+ const copyStyles = (styles) => {
167
+ navigator.clipboard.writeText(stringify(styles));
168
+ Toast.push('Copied');
169
+ }
170
+
171
+ const tableStyle = {
172
+ borderCollapse: 'collapse',
173
+ width: '100%',
174
+ };
175
+
176
+ const tdStyle = {
177
+ border: '1px solid',
178
+ padding: '8px',
179
+ };
180
+
181
+ const renderExampleRow = (title, styles, index) => {
182
+ return (
183
+ <tr>
184
+ <td style={tdStyle}>{title}</td>
185
+ <td style={tdStyle}><Button use={'link'} theme={styles}>Button-link</Button></td>
186
+ <td style={tdStyle}>
187
+ <div style={{display: 'flex'}}>
188
+ <div style={{width: '80%', whiteSpace: 'pre-line'}}>{stringify(styles).replace(/, /g, '\n')}</div>
189
+ <Button icon={<Copy />} use={'text'} onClick={() => copyStyles(styles)}/>
190
+ </div>
191
+ </td>
192
+ </tr>
193
+ )
194
+ }
195
+
196
+ <table style={tableStyle}>
197
+ <tr style={{textAlign: 'left'}}>
198
+ <th style={tdStyle}></th>
199
+ <th style={tdStyle}>Пример</th>
200
+ <th style={tdStyle}>Переменные темы</th>
201
+ </tr>
202
+ {renderExampleRow('Ссылка с подчеркиванием через text-decoration', textDecorationStyles)}
203
+ {renderExampleRow('Ссылка с подчеркиванием при наведении', underlineOnHoverStyles)}
204
+ {renderExampleRow('Изменение цвета ссылки', differentColorStyles)}
205
+ </table>
206
+ ```
@@ -7,6 +7,7 @@ var getInnerLinkTheme = function getInnerLinkTheme(theme) {
7
7
  linkLineBorderBottomStyle: theme.btnLinkLineBorderBottomStyle,
8
8
  linkLineHoverBorderBottomStyle: theme.btnLinkHoverLineBorderBottomStyle,
9
9
  linkLineBorderBottomOpacity: theme.btnLinkLineBorderBottomOpacity,
10
+ linkLineBorderBottomColor: theme.btnLinkLineBorderBottomColor,
10
11
  linkLineBorderBottomWidth: theme.btnLinkLineBorderBottomWidth,
11
12
  linkDisabledColor: theme.btnLinkDisabledColor,
12
13
  linkColor: theme.btnLinkColor,
@@ -1 +1 @@
1
- {"version":3,"sources":["getInnerLinkTheme.ts"],"names":["getInnerLinkTheme","theme","ThemeFactory","create","linkLineBorderBottomStyle","btnLinkLineBorderBottomStyle","linkLineHoverBorderBottomStyle","btnLinkHoverLineBorderBottomStyle","linkLineBorderBottomOpacity","btnLinkLineBorderBottomOpacity","linkLineBorderBottomWidth","btnLinkLineBorderBottomWidth","linkDisabledColor","btnLinkDisabledColor","linkColor","btnLinkColor","linkHoverColor","btnLinkHoverColor","linkActiveColor","btnLinkActiveColor","linkHoverTextDecoration","btnLinkHoverTextDecoration","linkIconMarginRight","btnLinkIconMarginRight","linkBorderRadius","btnLinkBorderRadius"],"mappings":"0EAAA;;;AAGO,IAAMA,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,KAAD,EAAyB;AACxD,SAAOC,2BAAaC,MAAb;AACL;AACEC,IAAAA,yBAAyB,EAAEH,KAAK,CAACI,4BADnC;AAEEC,IAAAA,8BAA8B,EAAEL,KAAK,CAACM,iCAFxC;AAGEC,IAAAA,2BAA2B,EAAEP,KAAK,CAACQ,8BAHrC;AAIEC,IAAAA,yBAAyB,EAAET,KAAK,CAACU,4BAJnC;AAKEC,IAAAA,iBAAiB,EAAEX,KAAK,CAACY,oBAL3B;AAMEC,IAAAA,SAAS,EAAEb,KAAK,CAACc,YANnB;AAOEC,IAAAA,cAAc,EAAEf,KAAK,CAACgB,iBAPxB;AAQEC,IAAAA,eAAe,EAAEjB,KAAK,CAACkB,kBARzB;AASEC,IAAAA,uBAAuB,EAAEnB,KAAK,CAACoB,0BATjC;AAUEC,IAAAA,mBAAmB,EAAErB,KAAK,CAACsB,sBAV7B;AAWEC,IAAAA,gBAAgB,EAAEvB,KAAK,CAACwB,mBAX1B,EADK;;AAcLxB,EAAAA,KAdK,CAAP;;AAgBD,CAjBM,C","sourcesContent":["import { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const getInnerLinkTheme = (theme: Theme): Theme => {\n return ThemeFactory.create(\n {\n linkLineBorderBottomStyle: theme.btnLinkLineBorderBottomStyle,\n linkLineHoverBorderBottomStyle: theme.btnLinkHoverLineBorderBottomStyle,\n linkLineBorderBottomOpacity: theme.btnLinkLineBorderBottomOpacity,\n linkLineBorderBottomWidth: theme.btnLinkLineBorderBottomWidth,\n linkDisabledColor: theme.btnLinkDisabledColor,\n linkColor: theme.btnLinkColor,\n linkHoverColor: theme.btnLinkHoverColor,\n linkActiveColor: theme.btnLinkActiveColor,\n linkHoverTextDecoration: theme.btnLinkHoverTextDecoration,\n linkIconMarginRight: theme.btnLinkIconMarginRight,\n linkBorderRadius: theme.btnLinkBorderRadius,\n },\n theme,\n );\n};\n"]}
1
+ {"version":3,"sources":["getInnerLinkTheme.ts"],"names":["getInnerLinkTheme","theme","ThemeFactory","create","linkLineBorderBottomStyle","btnLinkLineBorderBottomStyle","linkLineHoverBorderBottomStyle","btnLinkHoverLineBorderBottomStyle","linkLineBorderBottomOpacity","btnLinkLineBorderBottomOpacity","linkLineBorderBottomColor","btnLinkLineBorderBottomColor","linkLineBorderBottomWidth","btnLinkLineBorderBottomWidth","linkDisabledColor","btnLinkDisabledColor","linkColor","btnLinkColor","linkHoverColor","btnLinkHoverColor","linkActiveColor","btnLinkActiveColor","linkHoverTextDecoration","btnLinkHoverTextDecoration","linkIconMarginRight","btnLinkIconMarginRight","linkBorderRadius","btnLinkBorderRadius"],"mappings":"0EAAA;;;AAGO,IAAMA,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,KAAD,EAAyB;AACxD,SAAOC,2BAAaC,MAAb;AACL;AACEC,IAAAA,yBAAyB,EAAEH,KAAK,CAACI,4BADnC;AAEEC,IAAAA,8BAA8B,EAAEL,KAAK,CAACM,iCAFxC;AAGEC,IAAAA,2BAA2B,EAAEP,KAAK,CAACQ,8BAHrC;AAIEC,IAAAA,yBAAyB,EAAET,KAAK,CAACU,4BAJnC;AAKEC,IAAAA,yBAAyB,EAAEX,KAAK,CAACY,4BALnC;AAMEC,IAAAA,iBAAiB,EAAEb,KAAK,CAACc,oBAN3B;AAOEC,IAAAA,SAAS,EAAEf,KAAK,CAACgB,YAPnB;AAQEC,IAAAA,cAAc,EAAEjB,KAAK,CAACkB,iBARxB;AASEC,IAAAA,eAAe,EAAEnB,KAAK,CAACoB,kBATzB;AAUEC,IAAAA,uBAAuB,EAAErB,KAAK,CAACsB,0BAVjC;AAWEC,IAAAA,mBAAmB,EAAEvB,KAAK,CAACwB,sBAX7B;AAYEC,IAAAA,gBAAgB,EAAEzB,KAAK,CAAC0B,mBAZ1B,EADK;;AAeL1B,EAAAA,KAfK,CAAP;;AAiBD,CAlBM,C","sourcesContent":["import { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const getInnerLinkTheme = (theme: Theme): Theme => {\n return ThemeFactory.create(\n {\n linkLineBorderBottomStyle: theme.btnLinkLineBorderBottomStyle,\n linkLineHoverBorderBottomStyle: theme.btnLinkHoverLineBorderBottomStyle,\n linkLineBorderBottomOpacity: theme.btnLinkLineBorderBottomOpacity,\n linkLineBorderBottomColor: theme.btnLinkLineBorderBottomColor,\n linkLineBorderBottomWidth: theme.btnLinkLineBorderBottomWidth,\n linkDisabledColor: theme.btnLinkDisabledColor,\n linkColor: theme.btnLinkColor,\n linkHoverColor: theme.btnLinkHoverColor,\n linkActiveColor: theme.btnLinkActiveColor,\n linkHoverTextDecoration: theme.btnLinkHoverTextDecoration,\n linkIconMarginRight: theme.btnLinkIconMarginRight,\n linkBorderRadius: theme.btnLinkBorderRadius,\n },\n theme,\n );\n};\n"]}
@@ -1,42 +1,41 @@
1
1
  "use strict";exports.__esModule = true;exports.getDropdownTheme = void 0;var _ThemeFactory = require("../../lib/theming/ThemeFactory");
2
2
 
3
- var _ThemeHelpers = require("../../lib/theming/ThemeHelpers");
4
3
 
5
4
  var getDropdownTheme = function getDropdownTheme(theme) {
6
5
  return _ThemeFactory.ThemeFactory.create(
7
6
  {
8
- selectDefaultBg: theme.btnDefaultBg,
7
+ selectDefaultBg: theme.dropdownDefaultBg,
9
8
  selectMenuOffsetY: theme.dropdownMenuOffsetY,
10
9
  selectBorderColorHover: theme.dropdownMenuHoverBorderColor,
11
10
  selectBorderColorTransition: theme.dropdownMenuBorderColorTransition,
12
11
 
13
- selectBorderWidth: theme.btnBorderWidth,
14
- selectOutlineWidth: theme.btnOutlineWidth,
12
+ selectBorderWidth: theme.dropdownBorderWidth,
13
+ selectOutlineWidth: theme.dropdownOutlineWidth,
15
14
 
16
- selectLineHeightSmall: theme.btnLineHeightSmall,
17
- selectFontSizeSmall: theme.btnFontSizeSmall,
18
- selectPaddingXSmall: (0, _ThemeHelpers.isTheme2022)(theme) ? theme.btnPaddingXSmall : theme.selectPaddingXSmall,
19
- selectPaddingYSmall: theme.btnPaddingYSmall,
20
- selectIconSizeSmall: theme.btnIconSizeSmall,
15
+ selectLineHeightSmall: theme.dropdownLineHeightSmall,
16
+ selectFontSizeSmall: theme.dropdownFontSizeSmall,
17
+ selectPaddingXSmall: theme.dropdownPaddingXSmall,
18
+ selectPaddingYSmall: theme.dropdownPaddingYSmall,
19
+ selectIconSizeSmall: theme.dropdownIconSizeSmall,
21
20
  selectBorderRadiusSmall: theme.dropdownButtonBorderRadiusSmall,
22
21
 
23
- selectLineHeightMedium: theme.btnLineHeightMedium,
24
- selectFontSizeMedium: theme.btnFontSizeMedium,
25
- selectPaddingXMedium: (0, _ThemeHelpers.isTheme2022)(theme) ? theme.btnPaddingXMedium : theme.selectPaddingXMedium,
26
- selectPaddingYMedium: theme.btnPaddingYMedium,
27
- selectIconSizeMedium: theme.btnIconSizeMedium,
22
+ selectLineHeightMedium: theme.dropdownLineHeightMedium,
23
+ selectFontSizeMedium: theme.dropdownFontSizeMedium,
24
+ selectPaddingXMedium: theme.dropdownPaddingXMedium,
25
+ selectPaddingYMedium: theme.dropdownPaddingYMedium,
26
+ selectIconSizeMedium: theme.dropdownIconSizeMedium,
28
27
  selectBorderRadiusMedium: theme.dropdownButtonBorderRadiusMedium,
29
28
 
30
- selectLineHeightLarge: theme.btnLineHeightLarge,
31
- selectFontSizeLarge: theme.btnFontSizeLarge,
32
- selectPaddingXLarge: (0, _ThemeHelpers.isTheme2022)(theme) ? theme.btnPaddingXLarge : theme.selectPaddingXLarge,
33
- selectPaddingYLarge: theme.btnPaddingYLarge,
34
- selectIconSizeLarge: theme.btnIconSizeLarge,
29
+ selectLineHeightLarge: theme.dropdownLineHeightLarge,
30
+ selectFontSizeLarge: theme.dropdownFontSizeLarge,
31
+ selectPaddingXLarge: theme.dropdownPaddingXLarge,
32
+ selectPaddingYLarge: theme.dropdownPaddingYLarge,
33
+ selectIconSizeLarge: theme.dropdownIconSizeLarge,
35
34
  selectBorderRadiusLarge: theme.dropdownButtonBorderRadiusLarge,
36
35
 
37
- selectBgDisabled: theme.btnDisabledBg,
38
- selectBorderColorDisabled: theme.btnDisabledBorderColor,
39
- selectTextColorDisabled: theme.btnDisabledTextColor },
36
+ selectBgDisabled: theme.dropdownBgDisabled,
37
+ selectBorderColorDisabled: theme.dropdownBorderColorDisabled,
38
+ selectTextColorDisabled: theme.dropdownTextColorDisabled },
40
39
 
41
40
  theme);
42
41
 
@@ -1 +1 @@
1
- {"version":3,"sources":["getDropdownTheme.ts"],"names":["getDropdownTheme","theme","ThemeFactory","create","selectDefaultBg","btnDefaultBg","selectMenuOffsetY","dropdownMenuOffsetY","selectBorderColorHover","dropdownMenuHoverBorderColor","selectBorderColorTransition","dropdownMenuBorderColorTransition","selectBorderWidth","btnBorderWidth","selectOutlineWidth","btnOutlineWidth","selectLineHeightSmall","btnLineHeightSmall","selectFontSizeSmall","btnFontSizeSmall","selectPaddingXSmall","btnPaddingXSmall","selectPaddingYSmall","btnPaddingYSmall","selectIconSizeSmall","btnIconSizeSmall","selectBorderRadiusSmall","dropdownButtonBorderRadiusSmall","selectLineHeightMedium","btnLineHeightMedium","selectFontSizeMedium","btnFontSizeMedium","selectPaddingXMedium","btnPaddingXMedium","selectPaddingYMedium","btnPaddingYMedium","selectIconSizeMedium","btnIconSizeMedium","selectBorderRadiusMedium","dropdownButtonBorderRadiusMedium","selectLineHeightLarge","btnLineHeightLarge","selectFontSizeLarge","btnFontSizeLarge","selectPaddingXLarge","btnPaddingXLarge","selectPaddingYLarge","btnPaddingYLarge","selectIconSizeLarge","btnIconSizeLarge","selectBorderRadiusLarge","dropdownButtonBorderRadiusLarge","selectBgDisabled","btnDisabledBg","selectBorderColorDisabled","btnDisabledBorderColor","selectTextColorDisabled","btnDisabledTextColor"],"mappings":"yEAAA;;AAEA;;AAEO,IAAMA,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,KAAD,EAAyB;AACvD,SAAOC,2BAAaC,MAAb;AACL;AACEC,IAAAA,eAAe,EAAEH,KAAK,CAACI,YADzB;AAEEC,IAAAA,iBAAiB,EAAEL,KAAK,CAACM,mBAF3B;AAGEC,IAAAA,sBAAsB,EAAEP,KAAK,CAACQ,4BAHhC;AAIEC,IAAAA,2BAA2B,EAAET,KAAK,CAACU,iCAJrC;;AAMEC,IAAAA,iBAAiB,EAAEX,KAAK,CAACY,cAN3B;AAOEC,IAAAA,kBAAkB,EAAEb,KAAK,CAACc,eAP5B;;AASEC,IAAAA,qBAAqB,EAAEf,KAAK,CAACgB,kBAT/B;AAUEC,IAAAA,mBAAmB,EAAEjB,KAAK,CAACkB,gBAV7B;AAWEC,IAAAA,mBAAmB,EAAE,+BAAYnB,KAAZ,IAAqBA,KAAK,CAACoB,gBAA3B,GAA8CpB,KAAK,CAACmB,mBAX3E;AAYEE,IAAAA,mBAAmB,EAAErB,KAAK,CAACsB,gBAZ7B;AAaEC,IAAAA,mBAAmB,EAAEvB,KAAK,CAACwB,gBAb7B;AAcEC,IAAAA,uBAAuB,EAAEzB,KAAK,CAAC0B,+BAdjC;;AAgBEC,IAAAA,sBAAsB,EAAE3B,KAAK,CAAC4B,mBAhBhC;AAiBEC,IAAAA,oBAAoB,EAAE7B,KAAK,CAAC8B,iBAjB9B;AAkBEC,IAAAA,oBAAoB,EAAE,+BAAY/B,KAAZ,IAAqBA,KAAK,CAACgC,iBAA3B,GAA+ChC,KAAK,CAAC+B,oBAlB7E;AAmBEE,IAAAA,oBAAoB,EAAEjC,KAAK,CAACkC,iBAnB9B;AAoBEC,IAAAA,oBAAoB,EAAEnC,KAAK,CAACoC,iBApB9B;AAqBEC,IAAAA,wBAAwB,EAAErC,KAAK,CAACsC,gCArBlC;;AAuBEC,IAAAA,qBAAqB,EAAEvC,KAAK,CAACwC,kBAvB/B;AAwBEC,IAAAA,mBAAmB,EAAEzC,KAAK,CAAC0C,gBAxB7B;AAyBEC,IAAAA,mBAAmB,EAAE,+BAAY3C,KAAZ,IAAqBA,KAAK,CAAC4C,gBAA3B,GAA8C5C,KAAK,CAAC2C,mBAzB3E;AA0BEE,IAAAA,mBAAmB,EAAE7C,KAAK,CAAC8C,gBA1B7B;AA2BEC,IAAAA,mBAAmB,EAAE/C,KAAK,CAACgD,gBA3B7B;AA4BEC,IAAAA,uBAAuB,EAAEjD,KAAK,CAACkD,+BA5BjC;;AA8BEC,IAAAA,gBAAgB,EAAEnD,KAAK,CAACoD,aA9B1B;AA+BEC,IAAAA,yBAAyB,EAAErD,KAAK,CAACsD,sBA/BnC;AAgCEC,IAAAA,uBAAuB,EAAEvD,KAAK,CAACwD,oBAhCjC,EADK;;AAmCLxD,EAAAA,KAnCK,CAAP;;AAqCD,CAtCM,C","sourcesContent":["import { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { Theme } from '../../lib/theming/Theme';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\n\nexport const getDropdownTheme = (theme: Theme): Theme => {\n return ThemeFactory.create(\n {\n selectDefaultBg: theme.btnDefaultBg,\n selectMenuOffsetY: theme.dropdownMenuOffsetY,\n selectBorderColorHover: theme.dropdownMenuHoverBorderColor,\n selectBorderColorTransition: theme.dropdownMenuBorderColorTransition,\n\n selectBorderWidth: theme.btnBorderWidth,\n selectOutlineWidth: theme.btnOutlineWidth,\n\n selectLineHeightSmall: theme.btnLineHeightSmall,\n selectFontSizeSmall: theme.btnFontSizeSmall,\n selectPaddingXSmall: isTheme2022(theme) ? theme.btnPaddingXSmall : theme.selectPaddingXSmall,\n selectPaddingYSmall: theme.btnPaddingYSmall,\n selectIconSizeSmall: theme.btnIconSizeSmall,\n selectBorderRadiusSmall: theme.dropdownButtonBorderRadiusSmall,\n\n selectLineHeightMedium: theme.btnLineHeightMedium,\n selectFontSizeMedium: theme.btnFontSizeMedium,\n selectPaddingXMedium: isTheme2022(theme) ? theme.btnPaddingXMedium : theme.selectPaddingXMedium,\n selectPaddingYMedium: theme.btnPaddingYMedium,\n selectIconSizeMedium: theme.btnIconSizeMedium,\n selectBorderRadiusMedium: theme.dropdownButtonBorderRadiusMedium,\n\n selectLineHeightLarge: theme.btnLineHeightLarge,\n selectFontSizeLarge: theme.btnFontSizeLarge,\n selectPaddingXLarge: isTheme2022(theme) ? theme.btnPaddingXLarge : theme.selectPaddingXLarge,\n selectPaddingYLarge: theme.btnPaddingYLarge,\n selectIconSizeLarge: theme.btnIconSizeLarge,\n selectBorderRadiusLarge: theme.dropdownButtonBorderRadiusLarge,\n\n selectBgDisabled: theme.btnDisabledBg,\n selectBorderColorDisabled: theme.btnDisabledBorderColor,\n selectTextColorDisabled: theme.btnDisabledTextColor,\n },\n theme,\n );\n};\n"]}
1
+ {"version":3,"sources":["getDropdownTheme.ts"],"names":["getDropdownTheme","theme","ThemeFactory","create","selectDefaultBg","dropdownDefaultBg","selectMenuOffsetY","dropdownMenuOffsetY","selectBorderColorHover","dropdownMenuHoverBorderColor","selectBorderColorTransition","dropdownMenuBorderColorTransition","selectBorderWidth","dropdownBorderWidth","selectOutlineWidth","dropdownOutlineWidth","selectLineHeightSmall","dropdownLineHeightSmall","selectFontSizeSmall","dropdownFontSizeSmall","selectPaddingXSmall","dropdownPaddingXSmall","selectPaddingYSmall","dropdownPaddingYSmall","selectIconSizeSmall","dropdownIconSizeSmall","selectBorderRadiusSmall","dropdownButtonBorderRadiusSmall","selectLineHeightMedium","dropdownLineHeightMedium","selectFontSizeMedium","dropdownFontSizeMedium","selectPaddingXMedium","dropdownPaddingXMedium","selectPaddingYMedium","dropdownPaddingYMedium","selectIconSizeMedium","dropdownIconSizeMedium","selectBorderRadiusMedium","dropdownButtonBorderRadiusMedium","selectLineHeightLarge","dropdownLineHeightLarge","selectFontSizeLarge","dropdownFontSizeLarge","selectPaddingXLarge","dropdownPaddingXLarge","selectPaddingYLarge","dropdownPaddingYLarge","selectIconSizeLarge","dropdownIconSizeLarge","selectBorderRadiusLarge","dropdownButtonBorderRadiusLarge","selectBgDisabled","dropdownBgDisabled","selectBorderColorDisabled","dropdownBorderColorDisabled","selectTextColorDisabled","dropdownTextColorDisabled"],"mappings":"yEAAA;;;AAGO,IAAMA,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,KAAD,EAAyB;AACvD,SAAOC,2BAAaC,MAAb;AACL;AACEC,IAAAA,eAAe,EAAEH,KAAK,CAACI,iBADzB;AAEEC,IAAAA,iBAAiB,EAAEL,KAAK,CAACM,mBAF3B;AAGEC,IAAAA,sBAAsB,EAAEP,KAAK,CAACQ,4BAHhC;AAIEC,IAAAA,2BAA2B,EAAET,KAAK,CAACU,iCAJrC;;AAMEC,IAAAA,iBAAiB,EAAEX,KAAK,CAACY,mBAN3B;AAOEC,IAAAA,kBAAkB,EAAEb,KAAK,CAACc,oBAP5B;;AASEC,IAAAA,qBAAqB,EAAEf,KAAK,CAACgB,uBAT/B;AAUEC,IAAAA,mBAAmB,EAAEjB,KAAK,CAACkB,qBAV7B;AAWEC,IAAAA,mBAAmB,EAAEnB,KAAK,CAACoB,qBAX7B;AAYEC,IAAAA,mBAAmB,EAAErB,KAAK,CAACsB,qBAZ7B;AAaEC,IAAAA,mBAAmB,EAAEvB,KAAK,CAACwB,qBAb7B;AAcEC,IAAAA,uBAAuB,EAAEzB,KAAK,CAAC0B,+BAdjC;;AAgBEC,IAAAA,sBAAsB,EAAE3B,KAAK,CAAC4B,wBAhBhC;AAiBEC,IAAAA,oBAAoB,EAAE7B,KAAK,CAAC8B,sBAjB9B;AAkBEC,IAAAA,oBAAoB,EAAE/B,KAAK,CAACgC,sBAlB9B;AAmBEC,IAAAA,oBAAoB,EAAEjC,KAAK,CAACkC,sBAnB9B;AAoBEC,IAAAA,oBAAoB,EAAEnC,KAAK,CAACoC,sBApB9B;AAqBEC,IAAAA,wBAAwB,EAAErC,KAAK,CAACsC,gCArBlC;;AAuBEC,IAAAA,qBAAqB,EAAEvC,KAAK,CAACwC,uBAvB/B;AAwBEC,IAAAA,mBAAmB,EAAEzC,KAAK,CAAC0C,qBAxB7B;AAyBEC,IAAAA,mBAAmB,EAAE3C,KAAK,CAAC4C,qBAzB7B;AA0BEC,IAAAA,mBAAmB,EAAE7C,KAAK,CAAC8C,qBA1B7B;AA2BEC,IAAAA,mBAAmB,EAAE/C,KAAK,CAACgD,qBA3B7B;AA4BEC,IAAAA,uBAAuB,EAAEjD,KAAK,CAACkD,+BA5BjC;;AA8BEC,IAAAA,gBAAgB,EAAEnD,KAAK,CAACoD,kBA9B1B;AA+BEC,IAAAA,yBAAyB,EAAErD,KAAK,CAACsD,2BA/BnC;AAgCEC,IAAAA,uBAAuB,EAAEvD,KAAK,CAACwD,yBAhCjC,EADK;;AAmCLxD,EAAAA,KAnCK,CAAP;;AAqCD,CAtCM,C","sourcesContent":["import { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const getDropdownTheme = (theme: Theme): Theme => {\n return ThemeFactory.create(\n {\n selectDefaultBg: theme.dropdownDefaultBg,\n selectMenuOffsetY: theme.dropdownMenuOffsetY,\n selectBorderColorHover: theme.dropdownMenuHoverBorderColor,\n selectBorderColorTransition: theme.dropdownMenuBorderColorTransition,\n\n selectBorderWidth: theme.dropdownBorderWidth,\n selectOutlineWidth: theme.dropdownOutlineWidth,\n\n selectLineHeightSmall: theme.dropdownLineHeightSmall,\n selectFontSizeSmall: theme.dropdownFontSizeSmall,\n selectPaddingXSmall: theme.dropdownPaddingXSmall,\n selectPaddingYSmall: theme.dropdownPaddingYSmall,\n selectIconSizeSmall: theme.dropdownIconSizeSmall,\n selectBorderRadiusSmall: theme.dropdownButtonBorderRadiusSmall,\n\n selectLineHeightMedium: theme.dropdownLineHeightMedium,\n selectFontSizeMedium: theme.dropdownFontSizeMedium,\n selectPaddingXMedium: theme.dropdownPaddingXMedium,\n selectPaddingYMedium: theme.dropdownPaddingYMedium,\n selectIconSizeMedium: theme.dropdownIconSizeMedium,\n selectBorderRadiusMedium: theme.dropdownButtonBorderRadiusMedium,\n\n selectLineHeightLarge: theme.dropdownLineHeightLarge,\n selectFontSizeLarge: theme.dropdownFontSizeLarge,\n selectPaddingXLarge: theme.dropdownPaddingXLarge,\n selectPaddingYLarge: theme.dropdownPaddingYLarge,\n selectIconSizeLarge: theme.dropdownIconSizeLarge,\n selectBorderRadiusLarge: theme.dropdownButtonBorderRadiusLarge,\n\n selectBgDisabled: theme.dropdownBgDisabled,\n selectBorderColorDisabled: theme.dropdownBorderColorDisabled,\n selectTextColorDisabled: theme.dropdownTextColorDisabled,\n },\n theme,\n );\n};\n"]}
@@ -350,7 +350,7 @@ var _FileUploader = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
350
350
  type: "file",
351
351
  disabled: disabled,
352
352
  multiple: multiple,
353
- className: _FileUploader2.jsStyles.fileInput(),
353
+ className: _FileUploader2.jsStyles.visuallyHidden(),
354
354
  onClick: stopPropagation,
355
355
  onChange: handleInputChange,
356
356
  onFocus: handleFocus,
@@ -1 +1 @@
1
- {"version":3,"sources":["FileUploader.tsx"],"names":["stopPropagation","e","FileUploaderDataTids","root","content","link","input","defaultRenderFile","file","fileNode","_FileUploader","React","forwardRef","props","ref","theme","ThemeContext","_isTheme2022","disabled","error","warning","multiple","width","fileUploaderWidth","hideFiles","onBlur","onFocus","onChange","request","validateBeforeUpload","onRequestSuccess","onRequestError","size","renderFile","inputProps","FileUploaderControlContext","files","setFiles","removeFile","reset","setFileValidationResult","isMinLengthReached","locale","inputRef","fileDivRef","isAsync","isSingleMode","isLinkVisible","setIsLinkVisible","upload","tryValidateAndUpload","forEach","validationMessage","id","FileUploaderFileValidationResult","sizeClassName","small","jsStyles","sizeSmall","medium","sizeMedium","large","sizeLarge","sizeIconClass","iconSmall","iconMedium","iconLarge","contentInnerClass","contentInnerSmall","contentInnerMedium","contentInnerLarge","handleChange","newFiles","filesArray","Array","from","attachedFiles","map","getAttachedFile","length","handleDrop","event","dataTransfer","clearData","onDrop","isDraggable","labelRef","isWindowDraggable","windowRef","globalObject","current","document","focus","keyListener","isTabPressed","blur","getRootNode","rootNodeRef","focusedByTab","setFocusedByTab","handleInputChange","target","handleFocus","requestAnimationFrame","handleBlur","hovered","setHovered","uploadButtonClassNames","uploadButton","uploadButtonFocus","dragOver","canDrop","uploadButtonWrapperClassNames","windowDragOver","windowDragOver2022","uploadButtonIconClassNames","icon","iconDisabled","hasOneFile","hasOneFileForSingle","contentClassNames","contentWithFiles","linkClassNames","linkHovered","linkDisabled","iconSizes","parseInt","btnIconSizeSmall","btnIconSizeMedium","btnIconSizeLarge","choosedFile","chooseFile","String","fromCharCode","globalClasses","afterLinkText","afterLinkText_HasFiles","singleFile","orDragHere","fileInput","FileUploader","memo","displayName"],"mappings":"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","sourcesContent":["import React, { useCallback, useContext, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport { FileUploaderAttachedFile, getAttachedFile } from '../../internal/FileUploaderControl/fileUtils';\nimport { cx } from '../../lib/theming/Emotion';\nimport { InstanceWithRootNode } from '../../lib/rootNode';\nimport { useMemoObject } from '../../hooks/useMemoObject';\nimport { FileUploaderControlContext } from '../../internal/FileUploaderControl/FileUploaderControlContext';\nimport { useControlLocale } from '../../internal/FileUploaderControl/hooks/useControlLocale';\nimport { useUpload } from '../../internal/FileUploaderControl/hooks/useUpload';\nimport { useDrop } from '../../hooks/useDrop';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { UploadIcon } from '../../internal/icons/16px';\nimport { FileUploaderControlProviderProps } from '../../internal/FileUploaderControl/FileUploaderControlProvider';\nimport { withFileUploaderControlProvider } from '../../internal/FileUploaderControl/withFileUploaderControlProvider';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { FileUploaderFile } from '../../internal/FileUploaderControl/FileUploaderFile/FileUploaderFile';\nimport { FileUploaderFileList } from '../../internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { Nullable } from '../../typings/utility-types';\nimport { FileUploaderFileValidationResult } from '../../internal/FileUploaderControl/FileUploaderFileValidationResult';\nimport { useFileUploaderSize } from '../../internal/FileUploaderControl/hooks/useFileUploaderSize';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { SizeProp } from '../../lib/types/props';\n\nimport { UploadIcon as UploadIcon2022 } from './UploadIcon';\nimport { globalClasses, jsStyles } from './FileUploader.styles';\n\nconst stopPropagation: React.ReactEventHandler = (e) => e.stopPropagation();\n\n/**\n * @deprecated use SizeProp\n */\nexport type FileUploaderSize = SizeProp;\n\ntype FileUploaderOverriddenProps = 'size';\n\ninterface _FileUploaderProps\n extends CommonProps,\n Omit<React.InputHTMLAttributes<HTMLInputElement>, FileUploaderOverriddenProps> {\n /** Состояние ошибки всего контрола */\n error?: boolean;\n /** Состояние предупреждения всего контрола */\n warning?: boolean;\n /** Свойство ширины. */\n width?: React.CSSProperties['width'];\n /**\n * Задаёт размер контрола.\n *\n * **Допустимые значения**: `\"small\"`, `\"medium\"`, `\"large\"`.\n */\n size?: SizeProp;\n /** Свойство, скрывающее отображение файлов. */\n hideFiles?: boolean;\n\n /** Функция, через которую отправляем файлы. Используется для отслеживания статуса загрузки файла. */\n request?: (file: FileUploaderAttachedFile) => Promise<void>;\n /** Срабатывает при удачной попытке отправки через request */\n onRequestSuccess?: (fileId: string) => void;\n /** Срабатывает при неудачной попытке отправки через request */\n onRequestError?: (fileId: string) => void;\n\n /**\n * Функция валидации каждого файла.\n * Срабатывает после выбора файлов и перед попыткой отправить в request.\n * Чтобы вывести валидацию ошибки, промис должен вернуть строку.\n * */\n validateBeforeUpload?: (file: FileUploaderAttachedFile) => Promise<Nullable<string>>;\n\n /**\n * Функция, позволяющая кастомизировать файлы.\n * Через нее можно вешать кастомные валидации на каждый файл.\n * */\n renderFile?: (file: FileUploaderAttachedFile, fileNode: React.ReactElement) => React.ReactNode;\n}\n\nexport interface FileUploaderRef extends InstanceWithRootNode {\n focus: () => void;\n blur: () => void;\n /** Сбрасывает выбранные файлы */\n reset: () => void;\n}\n\nexport const FileUploaderDataTids = {\n root: 'FileUploader__root',\n content: 'FileUploader__content',\n link: 'FileUploader__link',\n input: 'FileUploader__input',\n} as const;\n\nconst defaultRenderFile = (file: FileUploaderAttachedFile, fileNode: React.ReactElement) => fileNode;\n\nconst _FileUploader = React.forwardRef<FileUploaderRef, _FileUploaderProps>((props: _FileUploaderProps, ref) => {\n const theme = useContext(ThemeContext);\n const _isTheme2022 = isTheme2022(theme);\n\n const {\n disabled,\n error,\n warning,\n multiple = false,\n width = theme.fileUploaderWidth,\n hideFiles = false,\n onBlur,\n onFocus,\n onChange,\n request,\n validateBeforeUpload,\n onRequestSuccess,\n onRequestError,\n size = 'small',\n renderFile = defaultRenderFile,\n ...inputProps\n } = props;\n\n const { files, setFiles, removeFile, reset, setFileValidationResult, isMinLengthReached } =\n useContext(FileUploaderControlContext);\n\n const locale = useControlLocale();\n\n const inputRef = useRef<HTMLInputElement>(null);\n const fileDivRef = useRef<HTMLDivElement>(null);\n\n const isAsync = !!request;\n const isSingleMode = !multiple;\n\n const [isLinkVisible, setIsLinkVisible] = useState(true);\n const upload = useUpload(request, onRequestSuccess, onRequestError);\n\n const tryValidateAndUpload = useCallback(\n (files: FileUploaderAttachedFile[]) => {\n files.forEach(async (file) => {\n const validationMessage = validateBeforeUpload && (await validateBeforeUpload(file));\n\n if (!validationMessage) {\n isAsync && upload(file);\n } else {\n setFileValidationResult(file.id, FileUploaderFileValidationResult.error(validationMessage));\n }\n });\n },\n [validateBeforeUpload, isAsync, upload, setFileValidationResult],\n );\n\n const sizeClassName = useFileUploaderSize(size, {\n small: jsStyles.sizeSmall(theme),\n medium: jsStyles.sizeMedium(theme),\n large: jsStyles.sizeLarge(theme),\n });\n\n const sizeIconClass = useFileUploaderSize(size, {\n small: jsStyles.iconSmall(theme),\n medium: jsStyles.iconMedium(theme),\n large: jsStyles.iconLarge(theme),\n });\n\n const contentInnerClass = useFileUploaderSize(size, {\n small: jsStyles.contentInnerSmall(theme),\n medium: jsStyles.contentInnerMedium(theme),\n large: jsStyles.contentInnerLarge(theme),\n });\n\n /** common part **/\n const handleChange = useCallback(\n (newFiles: FileList | null) => {\n if (!newFiles) {\n return;\n }\n\n let filesArray = Array.from(newFiles);\n\n if (isSingleMode) {\n filesArray = [filesArray[0]];\n }\n\n const attachedFiles = filesArray.map(getAttachedFile);\n\n if (isSingleMode && attachedFiles.length && files.length) {\n removeFile(files[0].id);\n }\n\n if (attachedFiles.length) {\n setFiles(attachedFiles);\n tryValidateAndUpload(attachedFiles);\n }\n },\n [tryValidateAndUpload, setFiles, isSingleMode, files, removeFile],\n );\n\n const handleDrop = useCallback(\n (event) => {\n if (disabled) {\n return;\n }\n\n const { dataTransfer } = event;\n const { files } = dataTransfer;\n\n if (files?.length > 0) {\n handleChange(files);\n dataTransfer.clearData();\n }\n },\n [handleChange, disabled],\n );\n\n const { isDraggable, ref: labelRef } = useDrop<HTMLLabelElement>({ onDrop: handleDrop });\n const { isDraggable: isWindowDraggable, ref: windowRef } = useDrop<Document>();\n\n if (isBrowser(globalObject)) {\n windowRef.current = globalObject.document;\n }\n\n const focus = useCallback(() => {\n keyListener.isTabPressed = true;\n inputRef.current?.focus();\n }, []);\n\n const blur = useCallback(() => {\n inputRef.current?.blur();\n }, []);\n\n useImperativeHandle(ref, () => ({ focus, blur, reset, getRootNode: () => rootNodeRef.current }), [\n ref,\n blur,\n focus,\n reset,\n ]);\n\n const [focusedByTab, setFocusedByTab] = useState(false);\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(event);\n handleChange(event.target.files);\n };\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n if (!disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n globalObject.requestAnimationFrame?.(() => {\n if (keyListener.isTabPressed) {\n setFocusedByTab(true);\n }\n });\n onFocus?.(e);\n }\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n setFocusedByTab(false);\n if (!disabled) {\n onBlur?.(e);\n }\n };\n\n const [hovered, setHovered] = useState(false);\n\n const uploadButtonClassNames = cx(\n jsStyles.uploadButton(theme),\n sizeClassName,\n focusedByTab && jsStyles.uploadButtonFocus(theme),\n disabled && jsStyles.disabled(theme),\n !disabled && hovered && jsStyles.hovered(theme),\n !!warning && jsStyles.warning(theme),\n !!error && jsStyles.error(theme),\n isDraggable && !disabled && jsStyles.dragOver(theme),\n );\n\n const canDrop = isWindowDraggable && !disabled;\n const uploadButtonWrapperClassNames = cx(\n !_isTheme2022 && canDrop && jsStyles.windowDragOver(theme),\n _isTheme2022 && canDrop && jsStyles.windowDragOver2022(theme),\n );\n\n const uploadButtonIconClassNames = cx(jsStyles.icon(theme), sizeIconClass, disabled && jsStyles.iconDisabled(theme));\n\n const hasOneFile = files.length === 1;\n const hasOneFileForSingle = isSingleMode && hasOneFile && !hideFiles;\n\n const contentClassNames = cx(jsStyles.content(), hasOneFileForSingle && jsStyles.contentWithFiles());\n\n const linkClassNames = cx(\n jsStyles.link(theme),\n !disabled && hovered && jsStyles.linkHovered(theme),\n disabled && jsStyles.linkDisabled(theme),\n );\n\n useEffect(() => {\n setIsLinkVisible(hasOneFileForSingle ? !isMinLengthReached : true);\n }, [isMinLengthReached, hasOneFileForSingle]);\n\n const rootNodeRef = useRef(null);\n\n const iconSizes: Record<SizeProp, number> = {\n small: parseInt(theme.btnIconSizeSmall),\n medium: parseInt(theme.btnIconSizeMedium),\n large: parseInt(theme.btnIconSizeLarge),\n };\n const icon = _isTheme2022 ? <UploadIcon2022 size={iconSizes[size]} /> : <UploadIcon />;\n\n return (\n <CommonWrapper {...props}>\n <div\n data-tid={FileUploaderDataTids.root}\n className={jsStyles.root(theme)}\n style={useMemoObject({ width })}\n ref={rootNodeRef}\n >\n {!hideFiles && !isSingleMode && !!files.length && <FileUploaderFileList renderFile={renderFile} size={size} />}\n <div className={uploadButtonWrapperClassNames}>\n <label\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n ref={labelRef}\n className={uploadButtonClassNames}\n >\n <div\n data-tid={FileUploaderDataTids.content}\n className={cx(contentClassNames, { [contentInnerClass]: !files.length || !isSingleMode })}\n >\n {isLinkVisible && (\n <span data-tid={FileUploaderDataTids.link} className={linkClassNames}>\n {hasOneFileForSingle ? locale.choosedFile : locale.chooseFile}\n </span>\n )}\n {isLinkVisible && String.fromCharCode(0xa0) /* &nbsp; */}\n <div\n className={cx(\n globalClasses.afterLinkText,\n hasOneFileForSingle ? jsStyles.afterLinkText_HasFiles(theme) : jsStyles.afterLinkText(theme),\n )}\n >\n {hasOneFileForSingle ? (\n <div ref={fileDivRef} className={jsStyles.singleFile()}>\n {renderFile(files[0], <FileUploaderFile file={files[0]} size={size} />)}\n </div>\n ) : (\n <>\n {locale.orDragHere}&nbsp;\n <div className={uploadButtonIconClassNames}>{icon}</div>\n </>\n )}\n </div>\n </div>\n <input\n {...inputProps}\n data-tid={FileUploaderDataTids.input}\n ref={inputRef}\n tabIndex={disabled ? -1 : 0}\n type=\"file\"\n disabled={disabled}\n multiple={multiple}\n className={jsStyles.fileInput()}\n onClick={stopPropagation}\n onChange={handleInputChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n // для того, чтобы срабатывало событие change при выборе одного и того же файла подряд\n value={''}\n />\n </label>\n </div>\n </div>\n </CommonWrapper>\n );\n});\n\nexport interface FileUploaderProps extends _FileUploaderProps, FileUploaderControlProviderProps {}\n\nexport const FileUploader = withFileUploaderControlProvider<FileUploaderProps, FileUploaderRef>(\n React.memo(_FileUploader),\n);\nFileUploader.displayName = 'FileUploader';\n"]}
1
+ {"version":3,"sources":["FileUploader.tsx"],"names":["stopPropagation","e","FileUploaderDataTids","root","content","link","input","defaultRenderFile","file","fileNode","_FileUploader","React","forwardRef","props","ref","theme","ThemeContext","_isTheme2022","disabled","error","warning","multiple","width","fileUploaderWidth","hideFiles","onBlur","onFocus","onChange","request","validateBeforeUpload","onRequestSuccess","onRequestError","size","renderFile","inputProps","FileUploaderControlContext","files","setFiles","removeFile","reset","setFileValidationResult","isMinLengthReached","locale","inputRef","fileDivRef","isAsync","isSingleMode","isLinkVisible","setIsLinkVisible","upload","tryValidateAndUpload","forEach","validationMessage","id","FileUploaderFileValidationResult","sizeClassName","small","jsStyles","sizeSmall","medium","sizeMedium","large","sizeLarge","sizeIconClass","iconSmall","iconMedium","iconLarge","contentInnerClass","contentInnerSmall","contentInnerMedium","contentInnerLarge","handleChange","newFiles","filesArray","Array","from","attachedFiles","map","getAttachedFile","length","handleDrop","event","dataTransfer","clearData","onDrop","isDraggable","labelRef","isWindowDraggable","windowRef","globalObject","current","document","focus","keyListener","isTabPressed","blur","getRootNode","rootNodeRef","focusedByTab","setFocusedByTab","handleInputChange","target","handleFocus","requestAnimationFrame","handleBlur","hovered","setHovered","uploadButtonClassNames","uploadButton","uploadButtonFocus","dragOver","canDrop","uploadButtonWrapperClassNames","windowDragOver","windowDragOver2022","uploadButtonIconClassNames","icon","iconDisabled","hasOneFile","hasOneFileForSingle","contentClassNames","contentWithFiles","linkClassNames","linkHovered","linkDisabled","iconSizes","parseInt","btnIconSizeSmall","btnIconSizeMedium","btnIconSizeLarge","choosedFile","chooseFile","String","fromCharCode","globalClasses","afterLinkText","afterLinkText_HasFiles","singleFile","orDragHere","visuallyHidden","FileUploader","memo","displayName"],"mappings":"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","sourcesContent":["import React, { useCallback, useContext, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport { FileUploaderAttachedFile, getAttachedFile } from '../../internal/FileUploaderControl/fileUtils';\nimport { cx } from '../../lib/theming/Emotion';\nimport { InstanceWithRootNode } from '../../lib/rootNode';\nimport { useMemoObject } from '../../hooks/useMemoObject';\nimport { FileUploaderControlContext } from '../../internal/FileUploaderControl/FileUploaderControlContext';\nimport { useControlLocale } from '../../internal/FileUploaderControl/hooks/useControlLocale';\nimport { useUpload } from '../../internal/FileUploaderControl/hooks/useUpload';\nimport { useDrop } from '../../hooks/useDrop';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { UploadIcon } from '../../internal/icons/16px';\nimport { FileUploaderControlProviderProps } from '../../internal/FileUploaderControl/FileUploaderControlProvider';\nimport { withFileUploaderControlProvider } from '../../internal/FileUploaderControl/withFileUploaderControlProvider';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { FileUploaderFile } from '../../internal/FileUploaderControl/FileUploaderFile/FileUploaderFile';\nimport { FileUploaderFileList } from '../../internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { Nullable } from '../../typings/utility-types';\nimport { FileUploaderFileValidationResult } from '../../internal/FileUploaderControl/FileUploaderFileValidationResult';\nimport { useFileUploaderSize } from '../../internal/FileUploaderControl/hooks/useFileUploaderSize';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { SizeProp } from '../../lib/types/props';\n\nimport { UploadIcon as UploadIcon2022 } from './UploadIcon';\nimport { globalClasses, jsStyles } from './FileUploader.styles';\n\nconst stopPropagation: React.ReactEventHandler = (e) => e.stopPropagation();\n\n/**\n * @deprecated use SizeProp\n */\nexport type FileUploaderSize = SizeProp;\n\ntype FileUploaderOverriddenProps = 'size';\n\ninterface _FileUploaderProps\n extends CommonProps,\n Omit<React.InputHTMLAttributes<HTMLInputElement>, FileUploaderOverriddenProps> {\n /** Состояние ошибки всего контрола */\n error?: boolean;\n /** Состояние предупреждения всего контрола */\n warning?: boolean;\n /** Свойство ширины. */\n width?: React.CSSProperties['width'];\n /**\n * Задаёт размер контрола.\n *\n * **Допустимые значения**: `\"small\"`, `\"medium\"`, `\"large\"`.\n */\n size?: SizeProp;\n /** Свойство, скрывающее отображение файлов. */\n hideFiles?: boolean;\n\n /** Функция, через которую отправляем файлы. Используется для отслеживания статуса загрузки файла. */\n request?: (file: FileUploaderAttachedFile) => Promise<void>;\n /** Срабатывает при удачной попытке отправки через request */\n onRequestSuccess?: (fileId: string) => void;\n /** Срабатывает при неудачной попытке отправки через request */\n onRequestError?: (fileId: string) => void;\n\n /**\n * Функция валидации каждого файла.\n * Срабатывает после выбора файлов и перед попыткой отправить в request.\n * Чтобы вывести валидацию ошибки, промис должен вернуть строку.\n * */\n validateBeforeUpload?: (file: FileUploaderAttachedFile) => Promise<Nullable<string>>;\n\n /**\n * Функция, позволяющая кастомизировать файлы.\n * Через нее можно вешать кастомные валидации на каждый файл.\n * */\n renderFile?: (file: FileUploaderAttachedFile, fileNode: React.ReactElement) => React.ReactNode;\n}\n\nexport interface FileUploaderRef extends InstanceWithRootNode {\n focus: () => void;\n blur: () => void;\n /** Сбрасывает выбранные файлы */\n reset: () => void;\n}\n\nexport const FileUploaderDataTids = {\n root: 'FileUploader__root',\n content: 'FileUploader__content',\n link: 'FileUploader__link',\n input: 'FileUploader__input',\n} as const;\n\nconst defaultRenderFile = (file: FileUploaderAttachedFile, fileNode: React.ReactElement) => fileNode;\n\nconst _FileUploader = React.forwardRef<FileUploaderRef, _FileUploaderProps>((props: _FileUploaderProps, ref) => {\n const theme = useContext(ThemeContext);\n const _isTheme2022 = isTheme2022(theme);\n\n const {\n disabled,\n error,\n warning,\n multiple = false,\n width = theme.fileUploaderWidth,\n hideFiles = false,\n onBlur,\n onFocus,\n onChange,\n request,\n validateBeforeUpload,\n onRequestSuccess,\n onRequestError,\n size = 'small',\n renderFile = defaultRenderFile,\n ...inputProps\n } = props;\n\n const { files, setFiles, removeFile, reset, setFileValidationResult, isMinLengthReached } =\n useContext(FileUploaderControlContext);\n\n const locale = useControlLocale();\n\n const inputRef = useRef<HTMLInputElement>(null);\n const fileDivRef = useRef<HTMLDivElement>(null);\n\n const isAsync = !!request;\n const isSingleMode = !multiple;\n\n const [isLinkVisible, setIsLinkVisible] = useState(true);\n const upload = useUpload(request, onRequestSuccess, onRequestError);\n\n const tryValidateAndUpload = useCallback(\n (files: FileUploaderAttachedFile[]) => {\n files.forEach(async (file) => {\n const validationMessage = validateBeforeUpload && (await validateBeforeUpload(file));\n\n if (!validationMessage) {\n isAsync && upload(file);\n } else {\n setFileValidationResult(file.id, FileUploaderFileValidationResult.error(validationMessage));\n }\n });\n },\n [validateBeforeUpload, isAsync, upload, setFileValidationResult],\n );\n\n const sizeClassName = useFileUploaderSize(size, {\n small: jsStyles.sizeSmall(theme),\n medium: jsStyles.sizeMedium(theme),\n large: jsStyles.sizeLarge(theme),\n });\n\n const sizeIconClass = useFileUploaderSize(size, {\n small: jsStyles.iconSmall(theme),\n medium: jsStyles.iconMedium(theme),\n large: jsStyles.iconLarge(theme),\n });\n\n const contentInnerClass = useFileUploaderSize(size, {\n small: jsStyles.contentInnerSmall(theme),\n medium: jsStyles.contentInnerMedium(theme),\n large: jsStyles.contentInnerLarge(theme),\n });\n\n /** common part **/\n const handleChange = useCallback(\n (newFiles: FileList | null) => {\n if (!newFiles) {\n return;\n }\n\n let filesArray = Array.from(newFiles);\n\n if (isSingleMode) {\n filesArray = [filesArray[0]];\n }\n\n const attachedFiles = filesArray.map(getAttachedFile);\n\n if (isSingleMode && attachedFiles.length && files.length) {\n removeFile(files[0].id);\n }\n\n if (attachedFiles.length) {\n setFiles(attachedFiles);\n tryValidateAndUpload(attachedFiles);\n }\n },\n [tryValidateAndUpload, setFiles, isSingleMode, files, removeFile],\n );\n\n const handleDrop = useCallback(\n (event) => {\n if (disabled) {\n return;\n }\n\n const { dataTransfer } = event;\n const { files } = dataTransfer;\n\n if (files?.length > 0) {\n handleChange(files);\n dataTransfer.clearData();\n }\n },\n [handleChange, disabled],\n );\n\n const { isDraggable, ref: labelRef } = useDrop<HTMLLabelElement>({ onDrop: handleDrop });\n const { isDraggable: isWindowDraggable, ref: windowRef } = useDrop<Document>();\n\n if (isBrowser(globalObject)) {\n windowRef.current = globalObject.document;\n }\n\n const focus = useCallback(() => {\n keyListener.isTabPressed = true;\n inputRef.current?.focus();\n }, []);\n\n const blur = useCallback(() => {\n inputRef.current?.blur();\n }, []);\n\n useImperativeHandle(ref, () => ({ focus, blur, reset, getRootNode: () => rootNodeRef.current }), [\n ref,\n blur,\n focus,\n reset,\n ]);\n\n const [focusedByTab, setFocusedByTab] = useState(false);\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(event);\n handleChange(event.target.files);\n };\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n if (!disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n globalObject.requestAnimationFrame?.(() => {\n if (keyListener.isTabPressed) {\n setFocusedByTab(true);\n }\n });\n onFocus?.(e);\n }\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n setFocusedByTab(false);\n if (!disabled) {\n onBlur?.(e);\n }\n };\n\n const [hovered, setHovered] = useState(false);\n\n const uploadButtonClassNames = cx(\n jsStyles.uploadButton(theme),\n sizeClassName,\n focusedByTab && jsStyles.uploadButtonFocus(theme),\n disabled && jsStyles.disabled(theme),\n !disabled && hovered && jsStyles.hovered(theme),\n !!warning && jsStyles.warning(theme),\n !!error && jsStyles.error(theme),\n isDraggable && !disabled && jsStyles.dragOver(theme),\n );\n\n const canDrop = isWindowDraggable && !disabled;\n const uploadButtonWrapperClassNames = cx(\n !_isTheme2022 && canDrop && jsStyles.windowDragOver(theme),\n _isTheme2022 && canDrop && jsStyles.windowDragOver2022(theme),\n );\n\n const uploadButtonIconClassNames = cx(jsStyles.icon(theme), sizeIconClass, disabled && jsStyles.iconDisabled(theme));\n\n const hasOneFile = files.length === 1;\n const hasOneFileForSingle = isSingleMode && hasOneFile && !hideFiles;\n\n const contentClassNames = cx(jsStyles.content(), hasOneFileForSingle && jsStyles.contentWithFiles());\n\n const linkClassNames = cx(\n jsStyles.link(theme),\n !disabled && hovered && jsStyles.linkHovered(theme),\n disabled && jsStyles.linkDisabled(theme),\n );\n\n useEffect(() => {\n setIsLinkVisible(hasOneFileForSingle ? !isMinLengthReached : true);\n }, [isMinLengthReached, hasOneFileForSingle]);\n\n const rootNodeRef = useRef(null);\n\n const iconSizes: Record<SizeProp, number> = {\n small: parseInt(theme.btnIconSizeSmall),\n medium: parseInt(theme.btnIconSizeMedium),\n large: parseInt(theme.btnIconSizeLarge),\n };\n const icon = _isTheme2022 ? <UploadIcon2022 size={iconSizes[size]} /> : <UploadIcon />;\n\n return (\n <CommonWrapper {...props}>\n <div\n data-tid={FileUploaderDataTids.root}\n className={jsStyles.root(theme)}\n style={useMemoObject({ width })}\n ref={rootNodeRef}\n >\n {!hideFiles && !isSingleMode && !!files.length && <FileUploaderFileList renderFile={renderFile} size={size} />}\n <div className={uploadButtonWrapperClassNames}>\n <label\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n ref={labelRef}\n className={uploadButtonClassNames}\n >\n <div\n data-tid={FileUploaderDataTids.content}\n className={cx(contentClassNames, { [contentInnerClass]: !files.length || !isSingleMode })}\n >\n {isLinkVisible && (\n <span data-tid={FileUploaderDataTids.link} className={linkClassNames}>\n {hasOneFileForSingle ? locale.choosedFile : locale.chooseFile}\n </span>\n )}\n {isLinkVisible && String.fromCharCode(0xa0) /* &nbsp; */}\n <div\n className={cx(\n globalClasses.afterLinkText,\n hasOneFileForSingle ? jsStyles.afterLinkText_HasFiles(theme) : jsStyles.afterLinkText(theme),\n )}\n >\n {hasOneFileForSingle ? (\n <div ref={fileDivRef} className={jsStyles.singleFile()}>\n {renderFile(files[0], <FileUploaderFile file={files[0]} size={size} />)}\n </div>\n ) : (\n <>\n {locale.orDragHere}&nbsp;\n <div className={uploadButtonIconClassNames}>{icon}</div>\n </>\n )}\n </div>\n </div>\n <input\n {...inputProps}\n data-tid={FileUploaderDataTids.input}\n ref={inputRef}\n tabIndex={disabled ? -1 : 0}\n type=\"file\"\n disabled={disabled}\n multiple={multiple}\n className={jsStyles.visuallyHidden()}\n onClick={stopPropagation}\n onChange={handleInputChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n // для того, чтобы срабатывало событие change при выборе одного и того же файла подряд\n value={''}\n />\n </label>\n </div>\n </div>\n </CommonWrapper>\n );\n});\n\nexport interface FileUploaderProps extends _FileUploaderProps, FileUploaderControlProviderProps {}\n\nexport const FileUploader = withFileUploaderControlProvider<FileUploaderProps, FileUploaderRef>(\n React.memo(_FileUploader),\n);\nFileUploader.displayName = 'FileUploader';\n"]}
@@ -16,7 +16,7 @@ export declare const jsStyles: {
16
16
  contentInnerSmall(t: Theme): string;
17
17
  contentInnerMedium(t: Theme): string;
18
18
  contentInnerLarge(t: Theme): string;
19
- fileInput(): string;
19
+ visuallyHidden(): string;
20
20
  afterLinkText(t: Theme): string;
21
21
  afterLinkText_HasFiles(t: Theme): string;
22
22
  warning(t: Theme): string;
@@ -136,8 +136,16 @@ var styles = {
136
136
 
137
137
  },
138
138
 
139
- fileInput: function fileInput() {
140
- return (0, _Emotion.css)(_templateObject14 || (_templateObject14 = (0, _taggedTemplateLiteralLoose2.default)(["\n width: 0;\n height: 0;\n "])));
139
+ visuallyHidden: function visuallyHidden() {
140
+ return (0, _Emotion.css)(_templateObject14 || (_templateObject14 = (0, _taggedTemplateLiteralLoose2.default)(["\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n border: 0;\n padding: 0;\n white-space: nowrap;\n clip-path: inset(100%);\n clip: rect(0 0 0 0);\n overflow: hidden;\n "])));
141
+
142
+
143
+
144
+
145
+
146
+
147
+
148
+
141
149
 
142
150
 
143
151
 
@@ -1 +1 @@
1
- {"version":3,"sources":["FileUploader.styles.ts"],"names":["globalClasses","afterLinkText","styles","calcPulse","t","keyframes","ColorFunctions","fade","inputBlinkColor","pulse","root","css","fileUploaderLineHeight","fileUploaderFontSize","fileUploaderTextColorDefault","fileUploaderBg","uploadButton","fileUploaderBorderWidth","fileUploaderBorderStyle","fileUploaderBorderColor","fileUploaderBorderRadius","fileUploaderPaddingY","fileUploaderPaddingX","transitionDuration","transitionTimingFunction","fileUploaderUploadButtonBg","uploadButtonFocus","fileUploaderBorderColorFocus","dragOver","fileUploaderDragOverBorderColor","fileUploaderDragOverShadow","windowDragOver","windowDragOver2022","content","contentWithFiles","contentInnerSmall","inputIconSizeSmall","fileUploaderIconGapSmall","contentInnerMedium","inputIconSizeMedium","fileUploaderIconGapMedium","contentInnerLarge","inputIconSizeLarge","fileUploaderIconGapLarge","fileInput","fileUploaderAfterLinkColor","afterLinkText_HasFiles","warning","fileUploaderBorderColorWarning","error","fileUploaderBorderColorError","hovered","fileUploaderHoveredBg","fileUploaderHoveredBorderColor","linkHovered","fileUploaderLinkHoverTextDecoration","disabled","fileUploaderDisabledBg","fileUploaderDisabledBorder","fileUploaderDisabledTextColor","fileUploaderDisabledBgClip","icon","fileUploaderIconColor","iconDisabled","fileUploaderDisabledIconColor","link","fileUploaderLinkColor","linkDisabled","fileUploaderDisabledLinkColor","singleFile","sizeSmall","fileUploaderFontSizeSmall","fileUploaderLineHeightSmall","fileUploaderPaddingXSmall","fileUploaderPaddingYSmall","sizeMedium","fileUploaderFontSizeMedium","fileUploaderLineHeightMedium","fileUploaderPaddingXMedium","fileUploaderPaddingYMedium","sizeLarge","fileUploaderFontSizeLarge","fileUploaderLineHeightLarge","fileUploaderPaddingXLarge","fileUploaderPaddingYLarge","iconSmall","iconMedium","iconLarge","jsStyles"],"mappings":"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","sourcesContent":["import { css, keyframes, memoizeStyle, prefix } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\nimport * as ColorFunctions from '../../lib/styles/ColorFunctions';\n\nimport { fileUploaderSizeMixin } from './FileUploader.mixins';\n\nexport const globalClasses = prefix('file-uploader')({\n afterLinkText: 'after-link-text',\n});\n\nconst styles = {\n calcPulse(t: Theme) {\n return keyframes`\n 0% {\n box-shadow: 0 0 0 1px ${ColorFunctions.fade(t.inputBlinkColor, 0.6)};\n }\n 95% {\n box-shadow: 0 0 0 10px ${ColorFunctions.fade(t.inputBlinkColor, 0.1)};\n }\n 100% {\n box-shadow: 0 0 0 1px ${ColorFunctions.fade(t.inputBlinkColor, 0.0)};\n }\n `;\n },\n pulse() {\n return keyframes`\n 0% {\n box-shadow:\n 0px 0px 0px 0px #2DA4F9,\n 0px 0px 0px 1px rgba(45,164,249,0.7);\n }\n 95% {\n box-shadow:\n 0px 0px 0px 0px #2DA4F9,\n 0px 0px 0px 10px rgba(45,164,249,0);\n }\n 100% {\n box-shadow:\n 0px 0px 0px 0px #2DA4F9,\n 0px 0px 0px 1px rgba(45,164,249,0);\n }\n `;\n },\n\n root(t: Theme) {\n return css`\n display: inline-block;\n position: relative;\n line-height: ${t.fileUploaderLineHeight};\n font-size: ${t.fileUploaderFontSize};\n color: ${t.fileUploaderTextColorDefault};\n background-color: ${t.fileUploaderBg};\n `;\n },\n\n uploadButton(t: Theme) {\n return css`\n width: 100%;\n display: inline-flex;\n align-items: center;\n justify-content: space-between;\n border: ${t.fileUploaderBorderWidth} ${t.fileUploaderBorderStyle} ${t.fileUploaderBorderColor};\n box-sizing: border-box;\n border-radius: ${t.fileUploaderBorderRadius};\n outline: none;\n cursor: pointer;\n padding: ${t.fileUploaderPaddingY} ${t.fileUploaderPaddingX};\n transition: background-color ${t.transitionDuration} ${t.transitionTimingFunction},\n border-color ${t.transitionDuration} ${t.transitionTimingFunction};\n background-color: ${t.fileUploaderUploadButtonBg};\n `;\n },\n\n uploadButtonFocus(t: Theme) {\n return css`\n border: ${t.fileUploaderBorderWidth} solid ${t.fileUploaderBorderColorFocus};\n box-shadow: 0px 0px 0px 1px ${t.fileUploaderBorderColorFocus};\n `;\n },\n\n dragOver(t: Theme) {\n return css`\n border: 1px solid ${t.fileUploaderDragOverBorderColor};\n border-radius: ${t.fileUploaderBorderRadius};\n box-shadow: ${t.fileUploaderDragOverShadow};\n `;\n },\n\n windowDragOver(t: Theme) {\n return css`\n border-radius: ${t.fileUploaderBorderRadius};\n animation: ${styles.pulse()} 1.5s infinite;\n `;\n },\n\n windowDragOver2022(t: Theme) {\n return css`\n border-radius: ${t.fileUploaderBorderRadius};\n animation: ${styles.calcPulse(t)} 1.5s infinite;\n `;\n },\n\n content() {\n return css`\n display: block;\n width: 100%;\n height: 100%;\n\n overflow: hidden;\n text-overflow: ellipsis;\n `;\n },\n\n contentWithFiles() {\n return css`\n display: flex;\n align-items: center;\n `;\n },\n\n contentInnerSmall(t: Theme) {\n return css`\n width: calc(100% - ${t.inputIconSizeSmall} - ${t.fileUploaderIconGapSmall});\n `;\n },\n\n contentInnerMedium(t: Theme) {\n return css`\n width: calc(100% - ${t.inputIconSizeMedium} - ${t.fileUploaderIconGapMedium});\n `;\n },\n\n contentInnerLarge(t: Theme) {\n return css`\n width: calc(100% - ${t.inputIconSizeLarge} - ${t.fileUploaderIconGapLarge});\n `;\n },\n\n fileInput() {\n return css`\n width: 0;\n height: 0;\n `;\n },\n\n afterLinkText(t: Theme) {\n return css`\n display: inline;\n color: ${t.fileUploaderAfterLinkColor};\n `;\n },\n\n afterLinkText_HasFiles(t: Theme) {\n return css`\n display: flex;\n justify-content: space-between;\n flex: 1 1 auto;\n color: ${t.fileUploaderAfterLinkColor};\n `;\n },\n\n warning(t: Theme) {\n return css`\n border: ${t.fileUploaderBorderWidth} solid ${t.fileUploaderBorderColorWarning};\n box-shadow: 0px 0px 0px 1px ${t.fileUploaderBorderColorWarning};\n `;\n },\n\n error(t: Theme) {\n return css`\n border: ${t.fileUploaderBorderWidth} solid ${t.fileUploaderBorderColorError};\n box-shadow: 0px 0px 0px 1px ${t.fileUploaderBorderColorError};\n `;\n },\n\n hovered(t: Theme) {\n return css`\n background: ${t.fileUploaderHoveredBg};\n border-color: ${t.fileUploaderHoveredBorderColor};\n `;\n },\n\n linkHovered(t: Theme) {\n return css`\n text-decoration: ${t.fileUploaderLinkHoverTextDecoration};\n `;\n },\n\n disabled(t: Theme) {\n return css`\n cursor: default;\n background: ${t.fileUploaderDisabledBg};\n border: ${t.fileUploaderDisabledBorder};\n color: ${t.fileUploaderDisabledTextColor};\n box-shadow: none;\n background-clip: ${t.fileUploaderDisabledBgClip};\n\n .${globalClasses.afterLinkText} {\n color: ${t.fileUploaderDisabledTextColor};\n }\n `;\n },\n\n icon(t: Theme) {\n return css`\n display: inline-block;\n position: absolute;\n color: ${t.fileUploaderIconColor};\n text-align: right;\n `;\n },\n\n iconDisabled(t: Theme) {\n return css`\n color: ${t.fileUploaderDisabledIconColor};\n `;\n },\n\n link(t: Theme) {\n return css`\n outline: none;\n text-decoration: none;\n color: ${t.fileUploaderLinkColor};\n `;\n },\n\n linkDisabled(t: Theme) {\n return css`\n color: ${t.fileUploaderDisabledLinkColor};\n &:hover {\n text-decoration: none;\n }\n `;\n },\n\n singleFile() {\n return css`\n width: 100%;\n `;\n },\n\n sizeSmall(t: Theme) {\n return css`\n ${fileUploaderSizeMixin(\n t.fileUploaderFontSizeSmall,\n t.fileUploaderLineHeightSmall,\n t.fileUploaderPaddingXSmall,\n t.fileUploaderPaddingYSmall,\n )};\n `;\n },\n\n sizeMedium(t: Theme) {\n return css`\n ${fileUploaderSizeMixin(\n t.fileUploaderFontSizeMedium,\n t.fileUploaderLineHeightMedium,\n t.fileUploaderPaddingXMedium,\n t.fileUploaderPaddingYMedium,\n )};\n `;\n },\n\n sizeLarge(t: Theme) {\n return css`\n ${fileUploaderSizeMixin(\n t.fileUploaderFontSizeLarge,\n t.fileUploaderLineHeightLarge,\n t.fileUploaderPaddingXLarge,\n t.fileUploaderPaddingYLarge,\n )};\n `;\n },\n\n iconSmall(t: Theme) {\n return css`\n font-size: ${t.fileUploaderFontSizeSmall};\n line-height: ${t.fileUploaderLineHeightSmall};\n width: ${t.inputIconSizeSmall};\n bottom: ${t.fileUploaderPaddingYSmall};\n right: ${t.fileUploaderPaddingXSmall};\n `;\n },\n iconMedium(t: Theme) {\n return css`\n font-size: ${t.fileUploaderFontSizeMedium};\n line-height: ${t.fileUploaderLineHeightMedium};\n width: ${t.inputIconSizeMedium};\n bottom: ${t.fileUploaderPaddingYMedium};\n right: ${t.fileUploaderPaddingXMedium};\n `;\n },\n iconLarge(t: Theme) {\n return css`\n font-size: ${t.fileUploaderFontSizeLarge};\n line-height: ${t.fileUploaderLineHeightLarge};\n width: ${t.inputIconSizeLarge};\n bottom: ${t.fileUploaderPaddingYLarge};\n right: ${t.fileUploaderPaddingXLarge};\n `;\n },\n};\n\nexport const jsStyles = memoizeStyle(styles);\n"]}
1
+ {"version":3,"sources":["FileUploader.styles.ts"],"names":["globalClasses","afterLinkText","styles","calcPulse","t","keyframes","ColorFunctions","fade","inputBlinkColor","pulse","root","css","fileUploaderLineHeight","fileUploaderFontSize","fileUploaderTextColorDefault","fileUploaderBg","uploadButton","fileUploaderBorderWidth","fileUploaderBorderStyle","fileUploaderBorderColor","fileUploaderBorderRadius","fileUploaderPaddingY","fileUploaderPaddingX","transitionDuration","transitionTimingFunction","fileUploaderUploadButtonBg","uploadButtonFocus","fileUploaderBorderColorFocus","dragOver","fileUploaderDragOverBorderColor","fileUploaderDragOverShadow","windowDragOver","windowDragOver2022","content","contentWithFiles","contentInnerSmall","inputIconSizeSmall","fileUploaderIconGapSmall","contentInnerMedium","inputIconSizeMedium","fileUploaderIconGapMedium","contentInnerLarge","inputIconSizeLarge","fileUploaderIconGapLarge","visuallyHidden","fileUploaderAfterLinkColor","afterLinkText_HasFiles","warning","fileUploaderBorderColorWarning","error","fileUploaderBorderColorError","hovered","fileUploaderHoveredBg","fileUploaderHoveredBorderColor","linkHovered","fileUploaderLinkHoverTextDecoration","disabled","fileUploaderDisabledBg","fileUploaderDisabledBorder","fileUploaderDisabledTextColor","fileUploaderDisabledBgClip","icon","fileUploaderIconColor","iconDisabled","fileUploaderDisabledIconColor","link","fileUploaderLinkColor","linkDisabled","fileUploaderDisabledLinkColor","singleFile","sizeSmall","fileUploaderFontSizeSmall","fileUploaderLineHeightSmall","fileUploaderPaddingXSmall","fileUploaderPaddingYSmall","sizeMedium","fileUploaderFontSizeMedium","fileUploaderLineHeightMedium","fileUploaderPaddingXMedium","fileUploaderPaddingYMedium","sizeLarge","fileUploaderFontSizeLarge","fileUploaderLineHeightLarge","fileUploaderPaddingXLarge","fileUploaderPaddingYLarge","iconSmall","iconMedium","iconLarge","jsStyles"],"mappings":"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","sourcesContent":["import { css, keyframes, memoizeStyle, prefix } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\nimport * as ColorFunctions from '../../lib/styles/ColorFunctions';\n\nimport { fileUploaderSizeMixin } from './FileUploader.mixins';\n\nexport const globalClasses = prefix('file-uploader')({\n afterLinkText: 'after-link-text',\n});\n\nconst styles = {\n calcPulse(t: Theme) {\n return keyframes`\n 0% {\n box-shadow: 0 0 0 1px ${ColorFunctions.fade(t.inputBlinkColor, 0.6)};\n }\n 95% {\n box-shadow: 0 0 0 10px ${ColorFunctions.fade(t.inputBlinkColor, 0.1)};\n }\n 100% {\n box-shadow: 0 0 0 1px ${ColorFunctions.fade(t.inputBlinkColor, 0.0)};\n }\n `;\n },\n pulse() {\n return keyframes`\n 0% {\n box-shadow:\n 0px 0px 0px 0px #2DA4F9,\n 0px 0px 0px 1px rgba(45,164,249,0.7);\n }\n 95% {\n box-shadow:\n 0px 0px 0px 0px #2DA4F9,\n 0px 0px 0px 10px rgba(45,164,249,0);\n }\n 100% {\n box-shadow:\n 0px 0px 0px 0px #2DA4F9,\n 0px 0px 0px 1px rgba(45,164,249,0);\n }\n `;\n },\n\n root(t: Theme) {\n return css`\n display: inline-block;\n position: relative;\n line-height: ${t.fileUploaderLineHeight};\n font-size: ${t.fileUploaderFontSize};\n color: ${t.fileUploaderTextColorDefault};\n background-color: ${t.fileUploaderBg};\n `;\n },\n\n uploadButton(t: Theme) {\n return css`\n width: 100%;\n display: inline-flex;\n align-items: center;\n justify-content: space-between;\n border: ${t.fileUploaderBorderWidth} ${t.fileUploaderBorderStyle} ${t.fileUploaderBorderColor};\n box-sizing: border-box;\n border-radius: ${t.fileUploaderBorderRadius};\n outline: none;\n cursor: pointer;\n padding: ${t.fileUploaderPaddingY} ${t.fileUploaderPaddingX};\n transition: background-color ${t.transitionDuration} ${t.transitionTimingFunction},\n border-color ${t.transitionDuration} ${t.transitionTimingFunction};\n background-color: ${t.fileUploaderUploadButtonBg};\n `;\n },\n\n uploadButtonFocus(t: Theme) {\n return css`\n border: ${t.fileUploaderBorderWidth} solid ${t.fileUploaderBorderColorFocus};\n box-shadow: 0px 0px 0px 1px ${t.fileUploaderBorderColorFocus};\n `;\n },\n\n dragOver(t: Theme) {\n return css`\n border: 1px solid ${t.fileUploaderDragOverBorderColor};\n border-radius: ${t.fileUploaderBorderRadius};\n box-shadow: ${t.fileUploaderDragOverShadow};\n `;\n },\n\n windowDragOver(t: Theme) {\n return css`\n border-radius: ${t.fileUploaderBorderRadius};\n animation: ${styles.pulse()} 1.5s infinite;\n `;\n },\n\n windowDragOver2022(t: Theme) {\n return css`\n border-radius: ${t.fileUploaderBorderRadius};\n animation: ${styles.calcPulse(t)} 1.5s infinite;\n `;\n },\n\n content() {\n return css`\n display: block;\n width: 100%;\n height: 100%;\n\n overflow: hidden;\n text-overflow: ellipsis;\n `;\n },\n\n contentWithFiles() {\n return css`\n display: flex;\n align-items: center;\n `;\n },\n\n contentInnerSmall(t: Theme) {\n return css`\n width: calc(100% - ${t.inputIconSizeSmall} - ${t.fileUploaderIconGapSmall});\n `;\n },\n\n contentInnerMedium(t: Theme) {\n return css`\n width: calc(100% - ${t.inputIconSizeMedium} - ${t.fileUploaderIconGapMedium});\n `;\n },\n\n contentInnerLarge(t: Theme) {\n return css`\n width: calc(100% - ${t.inputIconSizeLarge} - ${t.fileUploaderIconGapLarge});\n `;\n },\n\n visuallyHidden() {\n return css`\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n border: 0;\n padding: 0;\n white-space: nowrap;\n clip-path: inset(100%);\n clip: rect(0 0 0 0);\n overflow: hidden;\n `;\n },\n\n afterLinkText(t: Theme) {\n return css`\n display: inline;\n color: ${t.fileUploaderAfterLinkColor};\n `;\n },\n\n afterLinkText_HasFiles(t: Theme) {\n return css`\n display: flex;\n justify-content: space-between;\n flex: 1 1 auto;\n color: ${t.fileUploaderAfterLinkColor};\n `;\n },\n\n warning(t: Theme) {\n return css`\n border: ${t.fileUploaderBorderWidth} solid ${t.fileUploaderBorderColorWarning};\n box-shadow: 0px 0px 0px 1px ${t.fileUploaderBorderColorWarning};\n `;\n },\n\n error(t: Theme) {\n return css`\n border: ${t.fileUploaderBorderWidth} solid ${t.fileUploaderBorderColorError};\n box-shadow: 0px 0px 0px 1px ${t.fileUploaderBorderColorError};\n `;\n },\n\n hovered(t: Theme) {\n return css`\n background: ${t.fileUploaderHoveredBg};\n border-color: ${t.fileUploaderHoveredBorderColor};\n `;\n },\n\n linkHovered(t: Theme) {\n return css`\n text-decoration: ${t.fileUploaderLinkHoverTextDecoration};\n `;\n },\n\n disabled(t: Theme) {\n return css`\n cursor: default;\n background: ${t.fileUploaderDisabledBg};\n border: ${t.fileUploaderDisabledBorder};\n color: ${t.fileUploaderDisabledTextColor};\n box-shadow: none;\n background-clip: ${t.fileUploaderDisabledBgClip};\n\n .${globalClasses.afterLinkText} {\n color: ${t.fileUploaderDisabledTextColor};\n }\n `;\n },\n\n icon(t: Theme) {\n return css`\n display: inline-block;\n position: absolute;\n color: ${t.fileUploaderIconColor};\n text-align: right;\n `;\n },\n\n iconDisabled(t: Theme) {\n return css`\n color: ${t.fileUploaderDisabledIconColor};\n `;\n },\n\n link(t: Theme) {\n return css`\n outline: none;\n text-decoration: none;\n color: ${t.fileUploaderLinkColor};\n `;\n },\n\n linkDisabled(t: Theme) {\n return css`\n color: ${t.fileUploaderDisabledLinkColor};\n &:hover {\n text-decoration: none;\n }\n `;\n },\n\n singleFile() {\n return css`\n width: 100%;\n `;\n },\n\n sizeSmall(t: Theme) {\n return css`\n ${fileUploaderSizeMixin(\n t.fileUploaderFontSizeSmall,\n t.fileUploaderLineHeightSmall,\n t.fileUploaderPaddingXSmall,\n t.fileUploaderPaddingYSmall,\n )};\n `;\n },\n\n sizeMedium(t: Theme) {\n return css`\n ${fileUploaderSizeMixin(\n t.fileUploaderFontSizeMedium,\n t.fileUploaderLineHeightMedium,\n t.fileUploaderPaddingXMedium,\n t.fileUploaderPaddingYMedium,\n )};\n `;\n },\n\n sizeLarge(t: Theme) {\n return css`\n ${fileUploaderSizeMixin(\n t.fileUploaderFontSizeLarge,\n t.fileUploaderLineHeightLarge,\n t.fileUploaderPaddingXLarge,\n t.fileUploaderPaddingYLarge,\n )};\n `;\n },\n\n iconSmall(t: Theme) {\n return css`\n font-size: ${t.fileUploaderFontSizeSmall};\n line-height: ${t.fileUploaderLineHeightSmall};\n width: ${t.inputIconSizeSmall};\n bottom: ${t.fileUploaderPaddingYSmall};\n right: ${t.fileUploaderPaddingXSmall};\n `;\n },\n iconMedium(t: Theme) {\n return css`\n font-size: ${t.fileUploaderFontSizeMedium};\n line-height: ${t.fileUploaderLineHeightMedium};\n width: ${t.inputIconSizeMedium};\n bottom: ${t.fileUploaderPaddingYMedium};\n right: ${t.fileUploaderPaddingXMedium};\n `;\n },\n iconLarge(t: Theme) {\n return css`\n font-size: ${t.fileUploaderFontSizeLarge};\n line-height: ${t.fileUploaderLineHeightLarge};\n width: ${t.inputIconSizeLarge};\n bottom: ${t.fileUploaderPaddingYLarge};\n right: ${t.fileUploaderPaddingXLarge};\n `;\n },\n};\n\nexport const jsStyles = memoizeStyle(styles);\n"]}
@@ -191,14 +191,18 @@ Link = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/function
191
191
 
192
192
 
193
193
  var child = _this.props.children;
194
- if (_isTheme2022) {var _cx;
194
+ if (_isTheme2022) {var _cx, _cx2;
195
195
  // lineTextWrapper нужен для реализации transition у подчеркивания
196
196
  child = /*#__PURE__*/
197
- _react.default.createElement("span", { className: (0, _Emotion.cx)(_Link.styles.lineTextWrapper(_this.theme)) }, /*#__PURE__*/
198
197
  _react.default.createElement("span", {
199
- className: (0, _Emotion.cx)(_Link.globalClasses.text, (_cx = {}, _cx[
200
- _Link.styles.lineText(_this.theme)] = !_client.isIE11, _cx[
201
- _Link.styles.lineTextIE11(_this.theme)] = _client.isIE11, _cx)) },
198
+ className: (0, _Emotion.cx)(_Link.styles.lineTextWrapper(_this.theme), (_cx = {}, _cx[
199
+ _Link.styles.lineTextWrapperFocused(_this.theme)] = isFocused, _cx)) }, /*#__PURE__*/
200
+
201
+
202
+ _react.default.createElement("span", {
203
+ className: (0, _Emotion.cx)(_Link.globalClasses.text, (_cx2 = {}, _cx2[
204
+ _Link.styles.lineText(_this.theme)] = !_client.isIE11, _cx2[
205
+ _Link.styles.lineTextIE11(_this.theme)] = _client.isIE11, _cx2)) },
202
206
 
203
207
 
204
208
  _this.props.children));
@@ -1 +1 @@
1
- {"version":3,"sources":["Link.tsx"],"names":["LinkDataTids","root","Link","rootNode","getProps","defaultProps","state","focusedByTab","renderMain","props","disabled","href","icon","use","loading","_button","_buttonOpened","relOrigin","rel","Component","as","focused","rest","_isTheme2022","theme","iconElement","styles","arrow","isFocused","linkProps","className","useRoot","useDefault","useSuccess","useDanger","useGrayed","button","buttonOpened","getLinkClassName","Boolean","onClick","handleClick","onFocus","handleFocus","onBlur","handleBlur","tabIndex","child","children","lineTextWrapper","globalClasses","text","lineText","isIE11","lineTextIE11","globalObject","requestAnimationFrame","keyListener","isTabPressed","setState","event","preventDefault","render","ThemeFactory","create","setRootNode","isBorderBottom","parseInt","linkLineBorderBottomWidth","focus","useGrayedFocus","lineRoot","disabledDark22Theme","lineFocus","lineFocusSuccess","lineFocusDanger","lineFocusGrayed","React","__KONTUR_REACT_UI__","propTypes","PropTypes","bool","string","node","oneOf"],"mappings":"qdAAA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkEO,IAAMA,YAAY,GAAG;AAC1BC,EAAAA,IAAI,EAAE,YADoB,EAArB,C;;;;;;AAOP;AACA;AACA,G;;AAEaC,I,OADZC,kB;;;;;;;;;;;;;;;;;;;AAoBSC,IAAAA,Q,GAAW,0CAAkBF,IAAI,CAACG,YAAvB,C;;AAEZC,IAAAA,K,GAAmB;AACxBC,MAAAA,YAAY,EAAE,KADU,E;;;;;;;;;;;;;;;;;;;;;AAsBlBC,IAAAA,U,GAAa,UAACC,KAAD,EAAyD;AAC5E;AACEC,MAAAA,QADF;;;;;;;;;;;AAYID,MAAAA,KAZJ,CACEC,QADF,CAEEC,IAFF,GAYIF,KAZJ,CAEEE,IAFF,CAGEC,IAHF,GAYIH,KAZJ,CAGEG,IAHF,CAIEC,GAJF,GAYIJ,KAZJ,CAIEI,GAJF,CAKEC,OALF,GAYIL,KAZJ,CAKEK,OALF,CAMEC,OANF,GAYIN,KAZJ,CAMEM,OANF,CAOEC,aAPF,GAYIP,KAZJ,CAOEO,aAPF,CAQOC,SARP,GAYIR,KAZJ,CAQES,GARF,CASMC,SATN,GAYIV,KAZJ,CASEW,EATF,kBAYIX,KAZJ,CAUEY,OAVF,CAUEA,OAVF,+BAUY,KAVZ,kBAWKC,IAXL,+CAYIb,KAZJ;AAaA,UAAMc,YAAY,GAAG,+BAAY,MAAKC,KAAjB,CAArB;;AAEA,UAAIC,WAAW,GAAG,IAAlB;AACA,UAAIb,IAAJ,EAAU;AACRa,QAAAA,WAAW;AACT,+CAAM,SAAS,EAAEC,aAAOd,IAAP,CAAY,MAAKY,KAAjB,CAAjB,IAA2CV,OAAO,gBAAG,6BAAC,gBAAD,IAAS,OAAO,EAAE,IAAlB,EAAwB,MAAM,MAA9B,EAA+B,MAAM,MAArC,GAAH,GAA8CF,IAAhG,CADF;;AAGD;;AAED,UAAIe,KAAK,GAAG,IAAZ;AACA,UAAIZ,OAAJ,EAAa;AACXY,QAAAA,KAAK,gBAAG,uCAAM,SAAS,EAAED,aAAOC,KAAP,EAAjB,GAAR;AACD;;AAED,UAAIT,GAAG,GAAGD,SAAV;AACA,UAAI,OAAOC,GAAP,KAAe,WAAf,IAA8BP,IAAlC,EAAwC;AACtCO,QAAAA,GAAG,iBAAc,2BAAeP,IAAf,IAAuB,aAAvB,GAAuC,EAArD,CAAH;AACD;;AAED,UAAMiB,SAAS,GAAG,CAAClB,QAAD,KAAc,MAAKJ,KAAL,CAAWC,YAAX,IAA2Bc,OAAzC,CAAlB;;AAEA,UAAMQ,SAAS,GAAG;AAChBC,QAAAA,SAAS,EAAE;AACTJ,qBAAOK,OAAP,EADS;AAETlB,QAAAA,GAAG,KAAK,SAAR,IAAqBa,aAAOM,UAAP,CAAkB,MAAKR,KAAvB,CAFZ;AAGTX,QAAAA,GAAG,KAAK,SAAR,IAAqBa,aAAOO,UAAP,CAAkB,MAAKT,KAAvB,CAHZ;AAITX,QAAAA,GAAG,KAAK,QAAR,IAAoBa,aAAOQ,SAAP,CAAiB,MAAKV,KAAtB,CAJX;AAKTX,QAAAA,GAAG,KAAK,QAAR,IAAoBa,aAAOS,SAAP,CAAiB,MAAKX,KAAtB,CALX;AAMT,SAAC,CAACT,OAAF,IAAaW,aAAOU,MAAP,CAAc,MAAKZ,KAAnB,CANJ;AAOT,SAAC,CAACR,aAAF,IAAmBU,aAAOW,YAAP,CAAoB,MAAKb,KAAzB,CAPV;AAQT,cAAKc,gBAAL,CAAsBV,SAAtB,EAAiCW,OAAO,CAAC7B,QAAQ,IAAII,OAAb,CAAxC,EAA+DS,YAA/D,CARS,CADK;;AAWhBZ,QAAAA,IAAI,EAAJA,IAXgB;AAYhBO,QAAAA,GAAG,EAAHA,GAZgB;AAahBsB,QAAAA,OAAO,EAAE,MAAKC,WAbE;AAchBC,QAAAA,OAAO,EAAE,MAAKC,WAdE;AAehBC,QAAAA,MAAM,EAAE,MAAKC,UAfG;AAgBhBC,QAAAA,QAAQ,EAAEpC,QAAQ,IAAII,OAAZ,GAAsB,CAAC,CAAvB,GAA2B,MAAKL,KAAL,CAAWqC,QAhBhC,EAAlB;;;AAmBA,UAAIC,KAAK,GAAG,MAAKtC,KAAL,CAAWuC,QAAvB;AACA,UAAIzB,YAAJ,EAAkB;AAChB;AACAwB,QAAAA,KAAK;AACH,+CAAM,SAAS,EAAE,iBAAGrB,aAAOuB,eAAP,CAAuB,MAAKzB,KAA5B,CAAH,CAAjB;AACE;AACE,UAAA,SAAS,EAAE,iBAAG0B,oBAAcC,IAAjB;AACRzB,uBAAO0B,QAAP,CAAgB,MAAK5B,KAArB,CADQ,IACsB,CAAC6B,cADvB;AAER3B,uBAAO4B,YAAP,CAAoB,MAAK9B,KAAzB,CAFQ,IAE0B6B,cAF1B,OADb;;;AAMG,cAAK5C,KAAL,CAAWuC,QANd,CADF,CADF;;;;AAYD;;AAED;AACE,qCAAC,SAAD,2BAAW,YAAUhD,YAAY,CAACC,IAAlC,IAA4CqB,IAA5C,EAAsDO,SAAtD;AACGJ,QAAAA,WADH;AAEGsB,QAAAA,KAFH;AAGGpB,QAAAA,KAHH,CADF;;;AAOD,K;;AAEOgB,IAAAA,W,GAAc,YAAM;AAC1B,UAAI,CAAC,MAAKlC,KAAL,CAAWC,QAAhB,EAA0B;AACxB;AACA;AACA6C,mCAAaC,qBAAb,+CAAaA,qBAAb,CAAqC,YAAM;AACzC,cAAIC,yBAAYC,YAAhB,EAA8B;AAC5B,kBAAKC,QAAL,CAAc,EAAEpD,YAAY,EAAE,IAAhB,EAAd;AACD;AACF,SAJD;AAKD;AACF,K;;AAEOsC,IAAAA,U,GAAa,YAAM;AACzB,YAAKc,QAAL,CAAc,EAAEpD,YAAY,EAAE,KAAhB,EAAd;AACD,K;;AAEOkC,IAAAA,W,GAAc,UAACmB,KAAD,EAAgD;AACpE,wBAAuC,MAAKnD,KAA5C,CAAQ+B,OAAR,eAAQA,OAAR,CAAiB9B,QAAjB,eAAiBA,QAAjB,CAA2BI,OAA3B,eAA2BA,OAA3B;AACA,UAAMH,IAAI,GAAG,MAAKP,QAAL,GAAgBO,IAA7B;AACA,UAAI,CAACA,IAAL,EAAW;AACTiD,QAAAA,KAAK,CAACC,cAAN;AACD;AACD,UAAIrB,OAAO,IAAI,CAAC9B,QAAZ,IAAwB,CAACI,OAA7B,EAAsC;AACpC0B,QAAAA,OAAO,CAACoB,KAAD,CAAP;AACD;AACF,K,kDAxHME,M,GAAP,kBAA6B,mBAC3B,oBACE,6BAAC,0BAAD,CAAc,QAAd,QACG,UAACtC,KAAD,EAAW,CACV,MAAI,CAACA,KAAL,GAAa,MAAI,CAACf,KAAL,CAAWe,KAAX,GAAmBuC,2BAAaC,MAAb,CAAoB,MAAI,CAACvD,KAAL,CAAWe,KAA/B,EAA+CA,KAA/C,CAAnB,GAA2EA,KAAxF,CACA,oBACE,6BAAC,4BAAD,2BAAe,WAAW,EAAE,MAAI,CAACyC,WAAjC,IAAkD,MAAI,CAAC7D,QAAL,EAAlD,GACG,MAAI,CAACI,UADR,CADF,CAKD,CARH,CADF,CAYD,C;;AA6GO8B,EAAAA,gB,GAAR,0BAAyBjB,OAAzB,EAA2CX,QAA3C,EAA8Da,YAA9D,EAA6F;AAC3F,yBAAgB,KAAKnB,QAAL,EAAhB,CAAQS,GAAR,kBAAQA,GAAR;AACA,QAAMqD,cAAc,GAAGC,QAAQ,CAAC,KAAK3C,KAAL,CAAW4C,yBAAZ,CAAR,GAAiD,CAAxE;AACA,QAAMxC,SAAS,GAAGP,OAAO,IAAI,CAACX,QAA9B;;AAEA,WAAO,CAACwD,cAAD;AACH;AACExC,iBAAOzB,IAAP,CAAY,KAAKuB,KAAjB,CADF;AAEEI,IAAAA,SAAS,IAAIF,aAAO2C,KAAP,CAAa,KAAK7C,KAAlB,CAFf;AAGEd,IAAAA,QAAQ,IAAIgB,aAAOhB,QAAP,CAAgB,KAAKc,KAArB,CAHd;AAIEX,IAAAA,GAAG,KAAK,QAAR,IAAoBQ,OAApB,IAA+BK,aAAO4C,cAAP,CAAsB,KAAK9C,KAA3B,CAJjC,CADG;;AAOH;AACEE,iBAAO6C,QAAP,EADF;AAEE7D,IAAAA,QAAQ,IAAIgB,aAAOhB,QAAP,CAAgB,KAAKc,KAArB,CAFd;AAGEd,IAAAA,QAAQ,IAAIa,YAAZ,IAA4B,+BAAY,KAAKC,KAAjB,CAA5B,IAAuDE,aAAO8C,mBAAP,CAA2B,KAAKhD,KAAhC,CAHzD;AAIEI,IAAAA,SAAS,IAAIf,GAAG,KAAK,SAArB,IAAkCa,aAAO+C,SAAP,CAAiB,KAAKjD,KAAtB,CAJpC;AAKEI,IAAAA,SAAS,IAAIf,GAAG,KAAK,SAArB,IAAkCa,aAAOgD,gBAAP,CAAwB,KAAKlD,KAA7B,CALpC;AAMEI,IAAAA,SAAS,IAAIf,GAAG,KAAK,QAArB,IAAiCa,aAAOiD,eAAP,CAAuB,KAAKnD,KAA5B,CANnC;AAOEI,IAAAA,SAAS,IAAIf,GAAG,KAAK,QAArB,IAAiCa,aAAOkD,eAAP,CAAuB,KAAKpD,KAA5B,CAPnC,CAPJ;;AAgBD,G,eA3KuBqD,eAAM1D,S,WAChB2D,mB,GAAsB,M,UAEtBC,S,GAAY,EACxBrE,QAAQ,EAAEsE,mBAAUC,IADI,EAGxBtE,IAAI,EAAEqE,mBAAUE,MAHQ,EAKxBtE,IAAI,EAAEoE,mBAAUG,IALQ,EAOxBtE,GAAG,EAAEmE,mBAAUI,KAAV,CAAgB,CAAC,SAAD,EAAY,SAAZ,EAAuB,QAAvB,EAAiC,QAAjC,CAAhB,CAPmB,E,UAUZ/E,Y,GAA6B,EACzCM,IAAI,EAAE,EADmC,EAEzCE,GAAG,EAAE,SAFoC,EAGzCO,EAAE,EAAE,GAHqC,E","sourcesContent":["import React, { AriaAttributes } from 'react';\nimport PropTypes from 'prop-types';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { Override } from '../../typings/utility-types';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme, ThemeIn } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { isExternalLink } from '../../lib/utils';\nimport { Spinner } from '../Spinner';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter, DefaultizedProps } from '../../lib/createPropsGetter';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { isDarkTheme, isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { isIE11 } from '../../lib/client';\n\nimport { globalClasses, styles } from './Link.styles';\n\nexport interface LinkProps\n extends Pick<AriaAttributes, 'aria-label'>,\n CommonProps,\n Override<\n React.AnchorHTMLAttributes<HTMLAnchorElement>,\n {\n /**\n * Отключенное состояние.\n */\n disabled?: boolean;\n /**\n * HTML-атрибут `href`.\n */\n href?: string;\n /**\n * Добавляет ссылке иконку.\n */\n icon?: React.ReactElement<any>;\n /**\n * Тема ссылки.\n */\n use?: 'default' | 'success' | 'danger' | 'grayed';\n /**\n * @ignore\n */\n _button?: boolean;\n /**\n * @ignore\n */\n _buttonOpened?: boolean;\n /**\n * HTML-атрибут `tabindex`.\n */\n tabIndex?: number;\n /**\n * Переводит ссылку в состояние загрузки.\n */\n loading?: boolean;\n /**\n * HTML-событие `onclick`.\n */\n onClick?: (event: React.MouseEvent<HTMLAnchorElement>) => void;\n\n /**\n * Обычный объект с переменными темы.\n * Он будет объединён с темой из контекста.\n */\n theme?: ThemeIn;\n /**\n * Компонент, используемый в качестве корневого узла.\n * @ignore\n */\n as?: React.ElementType | keyof React.ReactHTML;\n /**\n * @ignore\n */\n focused?: boolean;\n }\n > {}\n\nexport interface LinkState {\n focusedByTab: boolean;\n}\n\nexport const LinkDataTids = {\n root: 'Link__root',\n} as const;\n\ntype DefaultProps = Required<Pick<LinkProps, 'href' | 'use' | 'as'>>;\ntype DefaultizedLinkProps = DefaultizedProps<LinkProps, DefaultProps>;\n\n/**\n * Элемент ссылки из HTML.\n */\n@rootNode\nexport class Link extends React.Component<LinkProps, LinkState> {\n public static __KONTUR_REACT_UI__ = 'Link';\n\n public static propTypes = {\n disabled: PropTypes.bool,\n\n href: PropTypes.string,\n\n icon: PropTypes.node,\n\n use: PropTypes.oneOf(['default', 'success', 'danger', 'grayed']),\n };\n\n public static defaultProps: DefaultProps = {\n href: '',\n use: 'default',\n as: 'a',\n };\n\n private getProps = createPropsGetter(Link.defaultProps);\n\n public state: LinkState = {\n focusedByTab: false,\n };\n\n private theme!: Theme;\n private setRootNode!: TSetRootNode;\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = this.props.theme ? ThemeFactory.create(this.props.theme as Theme, theme) : theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.getProps()}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain = (props: CommonWrapperRestProps<DefaultizedLinkProps>) => {\n const {\n disabled,\n href,\n icon,\n use,\n loading,\n _button,\n _buttonOpened,\n rel: relOrigin,\n as: Component,\n focused = false,\n ...rest\n } = props;\n const _isTheme2022 = isTheme2022(this.theme);\n\n let iconElement = null;\n if (icon) {\n iconElement = (\n <span className={styles.icon(this.theme)}>{loading ? <Spinner caption={null} dimmed inline /> : icon}</span>\n );\n }\n\n let arrow = null;\n if (_button) {\n arrow = <span className={styles.arrow()} />;\n }\n\n let rel = relOrigin;\n if (typeof rel === 'undefined' && href) {\n rel = `noopener${isExternalLink(href) ? ' noreferrer' : ''}`;\n }\n\n const isFocused = !disabled && (this.state.focusedByTab || focused);\n\n const linkProps = {\n className: cx(\n styles.useRoot(),\n use === 'default' && styles.useDefault(this.theme),\n use === 'success' && styles.useSuccess(this.theme),\n use === 'danger' && styles.useDanger(this.theme),\n use === 'grayed' && styles.useGrayed(this.theme),\n !!_button && styles.button(this.theme),\n !!_buttonOpened && styles.buttonOpened(this.theme),\n this.getLinkClassName(isFocused, Boolean(disabled || loading), _isTheme2022),\n ),\n href,\n rel,\n onClick: this.handleClick,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n tabIndex: disabled || loading ? -1 : this.props.tabIndex,\n };\n\n let child = this.props.children;\n if (_isTheme2022) {\n // lineTextWrapper нужен для реализации transition у подчеркивания\n child = (\n <span className={cx(styles.lineTextWrapper(this.theme))}>\n <span\n className={cx(globalClasses.text, {\n [styles.lineText(this.theme)]: !isIE11,\n [styles.lineTextIE11(this.theme)]: isIE11,\n })}\n >\n {this.props.children}\n </span>\n </span>\n );\n }\n\n return (\n <Component data-tid={LinkDataTids.root} {...rest} {...linkProps}>\n {iconElement}\n {child}\n {arrow}\n </Component>\n );\n };\n\n private handleFocus = () => {\n if (!this.props.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n globalObject.requestAnimationFrame?.(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n }\n };\n\n private handleBlur = () => {\n this.setState({ focusedByTab: false });\n };\n\n private handleClick = (event: React.MouseEvent<HTMLAnchorElement>) => {\n const { onClick, disabled, loading } = this.props;\n const href = this.getProps().href;\n if (!href) {\n event.preventDefault();\n }\n if (onClick && !disabled && !loading) {\n onClick(event);\n }\n };\n\n private getLinkClassName(focused: boolean, disabled: boolean, _isTheme2022: boolean): string {\n const { use } = this.getProps();\n const isBorderBottom = parseInt(this.theme.linkLineBorderBottomWidth) > 0;\n const isFocused = focused && !disabled;\n\n return !isBorderBottom\n ? cx(\n styles.root(this.theme),\n isFocused && styles.focus(this.theme),\n disabled && styles.disabled(this.theme),\n use === 'grayed' && focused && styles.useGrayedFocus(this.theme),\n )\n : cx(\n styles.lineRoot(),\n disabled && styles.disabled(this.theme),\n disabled && _isTheme2022 && isDarkTheme(this.theme) && styles.disabledDark22Theme(this.theme),\n isFocused && use === 'default' && styles.lineFocus(this.theme),\n isFocused && use === 'success' && styles.lineFocusSuccess(this.theme),\n isFocused && use === 'danger' && styles.lineFocusDanger(this.theme),\n isFocused && use === 'grayed' && styles.lineFocusGrayed(this.theme),\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["Link.tsx"],"names":["LinkDataTids","root","Link","rootNode","getProps","defaultProps","state","focusedByTab","renderMain","props","disabled","href","icon","use","loading","_button","_buttonOpened","relOrigin","rel","Component","as","focused","rest","_isTheme2022","theme","iconElement","styles","arrow","isFocused","linkProps","className","useRoot","useDefault","useSuccess","useDanger","useGrayed","button","buttonOpened","getLinkClassName","Boolean","onClick","handleClick","onFocus","handleFocus","onBlur","handleBlur","tabIndex","child","children","lineTextWrapper","lineTextWrapperFocused","globalClasses","text","lineText","isIE11","lineTextIE11","globalObject","requestAnimationFrame","keyListener","isTabPressed","setState","event","preventDefault","render","ThemeFactory","create","setRootNode","isBorderBottom","parseInt","linkLineBorderBottomWidth","focus","useGrayedFocus","lineRoot","disabledDark22Theme","lineFocus","lineFocusSuccess","lineFocusDanger","lineFocusGrayed","React","__KONTUR_REACT_UI__","propTypes","PropTypes","bool","string","node","oneOf"],"mappings":"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","sourcesContent":["import React, { AriaAttributes } from 'react';\nimport PropTypes from 'prop-types';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { Override } from '../../typings/utility-types';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme, ThemeIn } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { isExternalLink } from '../../lib/utils';\nimport { Spinner } from '../Spinner';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter, DefaultizedProps } from '../../lib/createPropsGetter';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { isDarkTheme, isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { isIE11 } from '../../lib/client';\n\nimport { globalClasses, styles } from './Link.styles';\n\nexport interface LinkProps\n extends Pick<AriaAttributes, 'aria-label'>,\n CommonProps,\n Override<\n React.AnchorHTMLAttributes<HTMLAnchorElement>,\n {\n /**\n * Отключенное состояние.\n */\n disabled?: boolean;\n /**\n * HTML-атрибут `href`.\n */\n href?: string;\n /**\n * Добавляет ссылке иконку.\n */\n icon?: React.ReactElement<any>;\n /**\n * Тема ссылки.\n */\n use?: 'default' | 'success' | 'danger' | 'grayed';\n /**\n * @ignore\n */\n _button?: boolean;\n /**\n * @ignore\n */\n _buttonOpened?: boolean;\n /**\n * HTML-атрибут `tabindex`.\n */\n tabIndex?: number;\n /**\n * Переводит ссылку в состояние загрузки.\n */\n loading?: boolean;\n /**\n * HTML-событие `onclick`.\n */\n onClick?: (event: React.MouseEvent<HTMLAnchorElement>) => void;\n\n /**\n * Обычный объект с переменными темы.\n * Он будет объединён с темой из контекста.\n */\n theme?: ThemeIn;\n /**\n * Компонент, используемый в качестве корневого узла.\n * @ignore\n */\n as?: React.ElementType | keyof React.ReactHTML;\n /**\n * @ignore\n */\n focused?: boolean;\n }\n > {}\n\nexport interface LinkState {\n focusedByTab: boolean;\n}\n\nexport const LinkDataTids = {\n root: 'Link__root',\n} as const;\n\ntype DefaultProps = Required<Pick<LinkProps, 'href' | 'use' | 'as'>>;\ntype DefaultizedLinkProps = DefaultizedProps<LinkProps, DefaultProps>;\n\n/**\n * Элемент ссылки из HTML.\n */\n@rootNode\nexport class Link extends React.Component<LinkProps, LinkState> {\n public static __KONTUR_REACT_UI__ = 'Link';\n\n public static propTypes = {\n disabled: PropTypes.bool,\n\n href: PropTypes.string,\n\n icon: PropTypes.node,\n\n use: PropTypes.oneOf(['default', 'success', 'danger', 'grayed']),\n };\n\n public static defaultProps: DefaultProps = {\n href: '',\n use: 'default',\n as: 'a',\n };\n\n private getProps = createPropsGetter(Link.defaultProps);\n\n public state: LinkState = {\n focusedByTab: false,\n };\n\n private theme!: Theme;\n private setRootNode!: TSetRootNode;\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = this.props.theme ? ThemeFactory.create(this.props.theme as Theme, theme) : theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.getProps()}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain = (props: CommonWrapperRestProps<DefaultizedLinkProps>) => {\n const {\n disabled,\n href,\n icon,\n use,\n loading,\n _button,\n _buttonOpened,\n rel: relOrigin,\n as: Component,\n focused = false,\n ...rest\n } = props;\n const _isTheme2022 = isTheme2022(this.theme);\n\n let iconElement = null;\n if (icon) {\n iconElement = (\n <span className={styles.icon(this.theme)}>{loading ? <Spinner caption={null} dimmed inline /> : icon}</span>\n );\n }\n\n let arrow = null;\n if (_button) {\n arrow = <span className={styles.arrow()} />;\n }\n\n let rel = relOrigin;\n if (typeof rel === 'undefined' && href) {\n rel = `noopener${isExternalLink(href) ? ' noreferrer' : ''}`;\n }\n\n const isFocused = !disabled && (this.state.focusedByTab || focused);\n\n const linkProps = {\n className: cx(\n styles.useRoot(),\n use === 'default' && styles.useDefault(this.theme),\n use === 'success' && styles.useSuccess(this.theme),\n use === 'danger' && styles.useDanger(this.theme),\n use === 'grayed' && styles.useGrayed(this.theme),\n !!_button && styles.button(this.theme),\n !!_buttonOpened && styles.buttonOpened(this.theme),\n this.getLinkClassName(isFocused, Boolean(disabled || loading), _isTheme2022),\n ),\n href,\n rel,\n onClick: this.handleClick,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n tabIndex: disabled || loading ? -1 : this.props.tabIndex,\n };\n\n let child = this.props.children;\n if (_isTheme2022) {\n // lineTextWrapper нужен для реализации transition у подчеркивания\n child = (\n <span\n className={cx(styles.lineTextWrapper(this.theme), {\n [styles.lineTextWrapperFocused(this.theme)]: isFocused,\n })}\n >\n <span\n className={cx(globalClasses.text, {\n [styles.lineText(this.theme)]: !isIE11,\n [styles.lineTextIE11(this.theme)]: isIE11,\n })}\n >\n {this.props.children}\n </span>\n </span>\n );\n }\n\n return (\n <Component data-tid={LinkDataTids.root} {...rest} {...linkProps}>\n {iconElement}\n {child}\n {arrow}\n </Component>\n );\n };\n\n private handleFocus = () => {\n if (!this.props.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n globalObject.requestAnimationFrame?.(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n }\n };\n\n private handleBlur = () => {\n this.setState({ focusedByTab: false });\n };\n\n private handleClick = (event: React.MouseEvent<HTMLAnchorElement>) => {\n const { onClick, disabled, loading } = this.props;\n const href = this.getProps().href;\n if (!href) {\n event.preventDefault();\n }\n if (onClick && !disabled && !loading) {\n onClick(event);\n }\n };\n\n private getLinkClassName(focused: boolean, disabled: boolean, _isTheme2022: boolean): string {\n const { use } = this.getProps();\n const isBorderBottom = parseInt(this.theme.linkLineBorderBottomWidth) > 0;\n const isFocused = focused && !disabled;\n\n return !isBorderBottom\n ? cx(\n styles.root(this.theme),\n isFocused && styles.focus(this.theme),\n disabled && styles.disabled(this.theme),\n use === 'grayed' && focused && styles.useGrayedFocus(this.theme),\n )\n : cx(\n styles.lineRoot(),\n disabled && styles.disabled(this.theme),\n disabled && _isTheme2022 && isDarkTheme(this.theme) && styles.disabledDark22Theme(this.theme),\n isFocused && use === 'default' && styles.lineFocus(this.theme),\n isFocused && use === 'success' && styles.lineFocusSuccess(this.theme),\n isFocused && use === 'danger' && styles.lineFocusDanger(this.theme),\n isFocused && use === 'grayed' && styles.lineFocusGrayed(this.theme),\n );\n }\n}\n"]}