@skbkontur/react-ui 4.25.2 → 4.26.0-MaskedInput-2nd.7

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 (191) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/LICENSE +21 -21
  3. package/README.md +41 -13
  4. package/cjs/components/Autocomplete/Autocomplete.md +76 -3
  5. package/cjs/components/Button/Button.md +38 -11
  6. package/cjs/components/Calendar/Calendar.md +40 -0
  7. package/cjs/components/DropdownMenu/DropdownMenu.md +39 -0
  8. package/cjs/components/FileUploader/FileUploader.d.ts +2 -0
  9. package/cjs/components/FileUploader/FileUploader.js +32 -9
  10. package/cjs/components/FileUploader/FileUploader.js.map +1 -1
  11. package/cjs/components/FileUploader/FileUploader.md +29 -0
  12. package/cjs/components/Gapped/Gapped.md +43 -43
  13. package/cjs/components/Input/Input.d.ts +3 -2
  14. package/cjs/components/Input/Input.js +7 -4
  15. package/cjs/components/Input/Input.js.map +1 -1
  16. package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.d.ts +10 -0
  17. package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.js +158 -0
  18. package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.js.map +1 -0
  19. package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.styles.d.ts +3 -0
  20. package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.styles.js +8 -0
  21. package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.styles.js.map +1 -0
  22. package/cjs/components/MaskedInput/ColorableInputElement/index.d.ts +1 -0
  23. package/cjs/components/MaskedInput/ColorableInputElement/index.js +1 -0
  24. package/cjs/components/MaskedInput/ColorableInputElement/index.js.map +1 -0
  25. package/cjs/components/MaskedInput/FixedIMaskInput.d.ts +9 -0
  26. package/cjs/components/MaskedInput/FixedIMaskInput.js +215 -0
  27. package/cjs/components/MaskedInput/FixedIMaskInput.js.map +1 -0
  28. package/cjs/components/MaskedInput/MaskedInput.d.ts +43 -4
  29. package/cjs/components/MaskedInput/MaskedInput.helpers.d.ts +10 -0
  30. package/cjs/components/MaskedInput/MaskedInput.helpers.js +30 -0
  31. package/cjs/components/MaskedInput/MaskedInput.helpers.js.map +1 -0
  32. package/cjs/components/MaskedInput/MaskedInput.js +172 -23
  33. package/cjs/components/MaskedInput/MaskedInput.js.map +1 -1
  34. package/cjs/components/MaskedInput/MaskedInput.md +100 -9
  35. package/cjs/components/MaskedInput/MaskedInput.styles.d.ts +3 -0
  36. package/cjs/components/MaskedInput/MaskedInput.styles.js +4 -0
  37. package/cjs/components/MaskedInput/MaskedInput.styles.js.map +1 -0
  38. package/cjs/components/RadioGroup/RadioGroup.md +43 -43
  39. package/cjs/components/ScrollContainer/ScrollContainer.d.ts +1 -0
  40. package/cjs/components/ScrollContainer/ScrollContainer.js +6 -0
  41. package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
  42. package/cjs/hooks/useDrop.d.ts +1 -1
  43. package/cjs/hooks/useDrop.js.map +1 -1
  44. package/cjs/index.d.ts +1 -0
  45. package/cjs/index.js +1 -0
  46. package/cjs/index.js.map +1 -1
  47. package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.d.ts +5 -2
  48. package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js +16 -3
  49. package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js.map +1 -1
  50. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +1 -0
  51. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js +4 -2
  52. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js.map +1 -1
  53. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +1 -0
  54. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js +3 -2
  55. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js.map +1 -1
  56. package/cjs/internal/RenderContainer/RenderContainer.d.ts +2 -0
  57. package/cjs/internal/RenderContainer/RenderContainer.js +6 -3
  58. package/cjs/internal/RenderContainer/RenderContainer.js.map +1 -1
  59. package/cjs/internal/RenderContainer/RenderInnerContainer.js +3 -2
  60. package/cjs/internal/RenderContainer/RenderInnerContainer.js.map +1 -1
  61. package/cjs/internal/ThemeShowcase/ThemeShowcase.md +13 -13
  62. package/cjs/internal/ZIndex/ZIndex.d.ts +7 -3
  63. package/cjs/internal/ZIndex/ZIndex.js +41 -3
  64. package/cjs/internal/ZIndex/ZIndex.js.map +1 -1
  65. package/cjs/internal/themes/Theme2022Dark.js +1 -1
  66. package/cjs/internal/themes/Theme2022Dark.js.map +1 -1
  67. package/cjs/lib/events/MouseDrag.d.ts +1 -1
  68. package/cjs/lib/events/MouseDrag.js.map +1 -1
  69. package/cjs/lib/events/keyboard/identifiers.d.ts +3 -0
  70. package/cjs/lib/events/keyboard/identifiers.js +5 -1
  71. package/cjs/lib/events/keyboard/identifiers.js.map +1 -1
  72. package/cjs/lib/listenFocusOutside.js +4 -2
  73. package/cjs/lib/listenFocusOutside.js.map +1 -1
  74. package/cjs/lib/styles/HoldSelectionColor.js +1 -1
  75. package/cjs/lib/styles/HoldSelectionColor.js.map +1 -1
  76. package/cjs/lib/styles/UiFont.d.ts +4 -0
  77. package/cjs/lib/styles/UiFont.js +61 -0
  78. package/cjs/lib/styles/UiFont.js.map +1 -0
  79. package/components/Autocomplete/Autocomplete.md +76 -3
  80. package/components/Button/Button.md +38 -11
  81. package/components/Calendar/Calendar.md +40 -0
  82. package/components/DropdownMenu/DropdownMenu.md +39 -0
  83. package/components/FileUploader/FileUploader/FileUploader.js +30 -8
  84. package/components/FileUploader/FileUploader/FileUploader.js.map +1 -1
  85. package/components/FileUploader/FileUploader.d.ts +2 -0
  86. package/components/FileUploader/FileUploader.md +29 -0
  87. package/components/Gapped/Gapped.md +43 -43
  88. package/components/Input/Input/Input.js +8 -4
  89. package/components/Input/Input/Input.js.map +1 -1
  90. package/components/Input/Input.d.ts +3 -2
  91. package/components/MaskedInput/ColorableInputElement/ColorableInputElement/ColorableInputElement.js +152 -0
  92. package/components/MaskedInput/ColorableInputElement/ColorableInputElement/ColorableInputElement.js.map +1 -0
  93. package/components/MaskedInput/ColorableInputElement/ColorableInputElement/package.json +6 -0
  94. package/components/MaskedInput/ColorableInputElement/ColorableInputElement.d.ts +10 -0
  95. package/components/MaskedInput/ColorableInputElement/ColorableInputElement.styles/ColorableInputElement.styles.js +9 -0
  96. package/components/MaskedInput/ColorableInputElement/ColorableInputElement.styles/ColorableInputElement.styles.js.map +1 -0
  97. package/components/MaskedInput/ColorableInputElement/ColorableInputElement.styles/package.json +6 -0
  98. package/components/MaskedInput/ColorableInputElement/ColorableInputElement.styles.d.ts +3 -0
  99. package/components/MaskedInput/ColorableInputElement/index/index.js +1 -0
  100. package/components/MaskedInput/ColorableInputElement/index/index.js.map +1 -0
  101. package/components/MaskedInput/ColorableInputElement/index/package.json +6 -0
  102. package/components/MaskedInput/ColorableInputElement/index.d.ts +1 -0
  103. package/components/MaskedInput/ColorableInputElement/package.json +6 -0
  104. package/components/MaskedInput/FixedIMaskInput/FixedIMaskInput.js +231 -0
  105. package/components/MaskedInput/FixedIMaskInput/FixedIMaskInput.js.map +1 -0
  106. package/components/MaskedInput/FixedIMaskInput/package.json +6 -0
  107. package/components/MaskedInput/FixedIMaskInput.d.ts +9 -0
  108. package/components/MaskedInput/MaskedInput/MaskedInput.js +134 -26
  109. package/components/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
  110. package/components/MaskedInput/MaskedInput.d.ts +43 -4
  111. package/components/MaskedInput/MaskedInput.helpers/MaskedInput.helpers.js +27 -0
  112. package/components/MaskedInput/MaskedInput.helpers/MaskedInput.helpers.js.map +1 -0
  113. package/components/MaskedInput/MaskedInput.helpers/package.json +6 -0
  114. package/components/MaskedInput/MaskedInput.helpers.d.ts +10 -0
  115. package/components/MaskedInput/MaskedInput.md +100 -9
  116. package/components/MaskedInput/MaskedInput.styles/MaskedInput.styles.js +4 -0
  117. package/components/MaskedInput/MaskedInput.styles/MaskedInput.styles.js.map +1 -0
  118. package/components/MaskedInput/MaskedInput.styles/package.json +6 -0
  119. package/components/MaskedInput/MaskedInput.styles.d.ts +3 -0
  120. package/components/RadioGroup/RadioGroup.md +43 -43
  121. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +5 -0
  122. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
  123. package/components/ScrollContainer/ScrollContainer.d.ts +1 -0
  124. package/hooks/useDrop/useDrop.js.map +1 -1
  125. package/hooks/useDrop.d.ts +1 -1
  126. package/index.d.ts +1 -0
  127. package/index.js +1 -0
  128. package/index.js.map +1 -1
  129. package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js +12 -3
  130. package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js.map +1 -1
  131. package/internal/FileUploaderControl/FileUploaderControlProvider.d.ts +5 -2
  132. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js +4 -2
  133. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js.map +1 -1
  134. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +1 -0
  135. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js +4 -2
  136. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js.map +1 -1
  137. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +1 -0
  138. package/internal/RenderContainer/RenderContainer/RenderContainer.js +3 -1
  139. package/internal/RenderContainer/RenderContainer/RenderContainer.js.map +1 -1
  140. package/internal/RenderContainer/RenderContainer.d.ts +2 -0
  141. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js +5 -4
  142. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js.map +1 -1
  143. package/internal/ThemeShowcase/ThemeShowcase.md +13 -13
  144. package/internal/ZIndex/ZIndex/ZIndex.js +55 -7
  145. package/internal/ZIndex/ZIndex/ZIndex.js.map +1 -1
  146. package/internal/ZIndex/ZIndex.d.ts +7 -3
  147. package/internal/themes/Theme2022Dark/Theme2022Dark.js +1 -1
  148. package/internal/themes/Theme2022Dark/Theme2022Dark.js.map +1 -1
  149. package/lib/events/MouseDrag/MouseDrag.js.map +1 -1
  150. package/lib/events/MouseDrag.d.ts +1 -1
  151. package/lib/events/keyboard/identifiers/identifiers.js +13 -0
  152. package/lib/events/keyboard/identifiers/identifiers.js.map +1 -1
  153. package/lib/events/keyboard/identifiers.d.ts +3 -0
  154. package/lib/listenFocusOutside/listenFocusOutside.js +3 -2
  155. package/lib/listenFocusOutside/listenFocusOutside.js.map +1 -1
  156. package/lib/styles/HoldSelectionColor/HoldSelectionColor.js +1 -1
  157. package/lib/styles/HoldSelectionColor/HoldSelectionColor.js.map +1 -1
  158. package/lib/styles/UiFont/UiFont.js +27 -0
  159. package/lib/styles/UiFont/UiFont.js.map +1 -0
  160. package/lib/styles/UiFont/package.json +6 -0
  161. package/lib/styles/UiFont.d.ts +4 -0
  162. package/package.json +2 -5
  163. package/cjs/internal/MaskedInputElement/MaskedInputElement.d.ts +0 -14
  164. package/cjs/internal/MaskedInputElement/MaskedInputElement.helpers.d.ts +0 -16
  165. package/cjs/internal/MaskedInputElement/MaskedInputElement.helpers.js +0 -52
  166. package/cjs/internal/MaskedInputElement/MaskedInputElement.helpers.js.map +0 -1
  167. package/cjs/internal/MaskedInputElement/MaskedInputElement.js +0 -196
  168. package/cjs/internal/MaskedInputElement/MaskedInputElement.js.map +0 -1
  169. package/cjs/internal/MaskedInputElement/MaskedInputElement.styles.d.ts +0 -6
  170. package/cjs/internal/MaskedInputElement/MaskedInputElement.styles.js +0 -29
  171. package/cjs/internal/MaskedInputElement/MaskedInputElement.styles.js.map +0 -1
  172. package/cjs/internal/MaskedInputElement/index.d.ts +0 -1
  173. package/cjs/internal/MaskedInputElement/index.js +0 -1
  174. package/cjs/internal/MaskedInputElement/index.js.map +0 -1
  175. package/internal/MaskedInputElement/MaskedInputElement/MaskedInputElement.js +0 -206
  176. package/internal/MaskedInputElement/MaskedInputElement/MaskedInputElement.js.map +0 -1
  177. package/internal/MaskedInputElement/MaskedInputElement/package.json +0 -6
  178. package/internal/MaskedInputElement/MaskedInputElement.d.ts +0 -14
  179. package/internal/MaskedInputElement/MaskedInputElement.helpers/MaskedInputElement.helpers.js +0 -43
  180. package/internal/MaskedInputElement/MaskedInputElement.helpers/MaskedInputElement.helpers.js.map +0 -1
  181. package/internal/MaskedInputElement/MaskedInputElement.helpers/package.json +0 -6
  182. package/internal/MaskedInputElement/MaskedInputElement.helpers.d.ts +0 -16
  183. package/internal/MaskedInputElement/MaskedInputElement.styles/MaskedInputElement.styles.js +0 -16
  184. package/internal/MaskedInputElement/MaskedInputElement.styles/MaskedInputElement.styles.js.map +0 -1
  185. package/internal/MaskedInputElement/MaskedInputElement.styles/package.json +0 -6
  186. package/internal/MaskedInputElement/MaskedInputElement.styles.d.ts +0 -6
  187. package/internal/MaskedInputElement/index/index.js +0 -1
  188. package/internal/MaskedInputElement/index/index.js.map +0 -1
  189. package/internal/MaskedInputElement/index/package.json +0 -6
  190. package/internal/MaskedInputElement/index.d.ts +0 -1
  191. package/internal/MaskedInputElement/package.json +0 -6
@@ -1 +1 @@
1
- {"version":3,"sources":["identifiers.ts"],"names":["getChar","e","globalObject","KeyboardEvent","char","nativeEvent","isShortcutCopy","isMac","metaKey","ctrlKey","Codes","KeyC","isKeyInsert","key","isShortcutPaste","KeyV","shiftKey","isShortcutCut","KeyX","isKeyDelete","isShortcutSelectAll","KeyA","isKeyEscape","isKeyHome","isKeyEnd","isKeyMeta","isKeyControl","isKeyShift","isKeyAlt","isKeyBackspace","isKeyCapsLock","isKeyTab","isKeyEnter","isKeyArrowUp","isKeyArrowRight","isKeyArrowDown","isKeyArrowLeft","isKeySpace","isKeyComma","isCodeMinus","Minus","isCodeNumpadDecimal","NumpadDecimal","isCodeNumpadDivide","NumpadDivide","isCodeNumpadSubtract","NumpadSubtract","isCodeSlash","Slash","isCodeBackslash","Backslash","isCodeIntlBackslash","IntlBackslash","isCodeComma","Comma","isCodePeriod","Period","isKeyArrowHorizontal","isKeyArrowVertical","isKeyArrow","isKeyNumber","test","isKeyChar","trim","length","isKeyFs","isModified","is","altKey","isUnmodified","isModShift","someKeys","iss","some"],"mappings":"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","sourcesContent":["import { globalObject } from '@skbkontur/global-object';\n\nimport { isMac } from '../../client';\nimport { isInstanceOf } from '../../isInstanceOf';\n\nimport { extractCode } from './extractCode';\nimport { KeyboardEventCodes as Codes } from './KeyboardEventCodes';\n\ntype E = React.KeyboardEvent<HTMLElement> | KeyboardEvent;\ntype IS = (e: E) => boolean;\ntype ISMod = (is?: IS) => IS;\ntype ISSome = (...is: IS[]) => IS;\n\n// IE 9+ supports char attribute\n// https://developer.mozilla.org/ru/docs/Web/API/KeyboardEvent\nconst getChar = (e: E & { char?: string; nativeEvent?: { char?: string } }) =>\n isInstanceOf(e, globalObject.KeyboardEvent) ? e.char : e.nativeEvent?.char;\n\nexport const isShortcutCopy: IS = (e) =>\n ((isMac ? e.metaKey : e.ctrlKey) && extractCode(e) === Codes.KeyC) ||\n (!isMac && e.ctrlKey && isKeyInsert(e)) ||\n e.key === 'Copy';\n\nexport const isShortcutPaste: IS = (e) =>\n ((isMac ? e.metaKey : e.ctrlKey) && extractCode(e) === Codes.KeyV) ||\n (!isMac && e.shiftKey && isKeyInsert(e)) ||\n e.key === 'Paste';\n\nexport const isShortcutCut: IS = (e) =>\n ((isMac ? e.metaKey : e.ctrlKey) && extractCode(e) === Codes.KeyX) ||\n (!isMac && e.shiftKey && isKeyDelete(e)) ||\n e.key === 'Cut';\n\nexport const isShortcutSelectAll: IS = (e) => (isMac ? e.metaKey : e.ctrlKey) && extractCode(e) === Codes.KeyA;\n\nexport const isKeyEscape: IS = (e) => e.key === 'Escape' || e.key === 'Esc';\nexport const isKeyHome: IS = (e) => e.key === 'Home';\nexport const isKeyEnd: IS = (e) => e.key === 'End';\nexport const isKeyMeta: IS = (e) => e.key === 'Meta' || e.key === 'Win';\nexport const isKeyControl: IS = (e) => e.key === 'Control';\nexport const isKeyShift: IS = (e) => e.key === 'Shift';\nexport const isKeyAlt: IS = (e) => e.key === 'Alt';\nexport const isKeyDelete: IS = (e) => e.key === 'Delete' || e.key === 'Del';\nexport const isKeyBackspace: IS = (e) => e.key === 'Backspace';\nexport const isKeyCapsLock: IS = (e) => e.key === 'CapsLock';\nexport const isKeyInsert: IS = (e) => e.key === 'Insert';\nexport const isKeyTab: IS = (e) => e.key === 'Tab';\nexport const isKeyEnter: IS = (e) => e.key === 'Enter';\nexport const isKeyArrowUp: IS = (e) => e.key === 'ArrowUp' || e.key === 'Up';\nexport const isKeyArrowRight: IS = (e) => e.key === 'ArrowRight' || e.key === 'Right';\nexport const isKeyArrowDown: IS = (e) => e.key === 'ArrowDown' || e.key === 'Down';\nexport const isKeyArrowLeft: IS = (e) => e.key === 'ArrowLeft' || e.key === 'Left';\nexport const isKeySpace: IS = (e) => e.key === ' ' || e.key === 'Spacebar';\nexport const isKeyComma: IS = (e) => e.key === ',' || getChar(e) === ',';\n\nexport const isCodeMinus: IS = (e) => extractCode(e) === Codes.Minus;\nexport const isCodeNumpadDecimal: IS = (e) => extractCode(e) === Codes.NumpadDecimal;\nexport const isCodeNumpadDivide: IS = (e) => extractCode(e) === Codes.NumpadDivide;\nexport const isCodeNumpadSubtract: IS = (e) => extractCode(e) === Codes.NumpadSubtract;\nexport const isCodeSlash: IS = (e) => extractCode(e) === Codes.Slash;\nexport const isCodeBackslash: IS = (e) => extractCode(e) === Codes.Backslash;\nexport const isCodeIntlBackslash: IS = (e) => extractCode(e) === Codes.IntlBackslash;\nexport const isCodeComma: IS = (e) => extractCode(e) === Codes.Comma;\nexport const isCodePeriod: IS = (e) => extractCode(e) === Codes.Period;\n\nexport const isKeyArrowHorizontal: IS = (e) => isKeyArrowRight(e) || isKeyArrowLeft(e);\nexport const isKeyArrowVertical: IS = (e) => isKeyArrowUp(e) || isKeyArrowDown(e);\nexport const isKeyArrow: IS = (e) => isKeyArrowHorizontal(e) || isKeyArrowVertical(e);\nexport const isKeyNumber: IS = (e) => /^\\d+$/.test(e.key);\nexport const isKeyChar: IS = (e) => e.key.trim().length === 1;\nexport const isKeyFs: IS = (e) => /^(?:F[1-9]|F1[0-2]|Soft[1-4])$/.test(e.key);\n\nexport const isModified: ISMod = (is) => (e) =>\n (e.shiftKey || e.metaKey || e.ctrlKey || e.altKey) && (is ? is(e) : true);\nexport const isUnmodified: ISMod = (is) => (e) => !isModified()(e) && (is ? is(e) : true);\nexport const isModShift: ISMod = (is) => (e) => e.shiftKey && (is ? is(e) : true);\n\nexport const someKeys: ISSome =\n (...iss) =>\n (e) =>\n iss.some((is) => is(e));\n"]}
1
+ {"version":3,"sources":["identifiers.ts"],"names":["getChar","e","globalObject","KeyboardEvent","char","nativeEvent","isShortcutCopy","isMac","metaKey","ctrlKey","Codes","KeyC","isKeyInsert","key","isShortcutPaste","KeyV","shiftKey","isShortcutCut","KeyX","isKeyDelete","isShortcutSelectAll","KeyA","isShortcutJumpCaret","altKey","isKeyArrowHorizontal","isKeyEscape","isKeyHome","isKeyEnd","isKeyMeta","isKeyControl","isKeyShift","isKeyAlt","isKeyBackspace","isKeyCapsLock","isKeyTab","isKeyEnter","isKeyArrowUp","isKeyArrowRight","isKeyArrowDown","isKeyArrowLeft","isKeySpace","isKeyComma","isCodeMinus","Minus","isCodeNumpadDecimal","NumpadDecimal","isCodeNumpadDivide","NumpadDivide","isCodeNumpadSubtract","NumpadSubtract","isCodeSlash","Slash","isCodeBackslash","Backslash","isCodeIntlBackslash","IntlBackslash","isCodeComma","Comma","isCodePeriod","Period","isKeyArrowVertical","isKeyArrow","isKeyNumber","test","isKeyChar","trim","length","isKeyFs","isModified","is","isUnmodified","isModShift","isModCtrl","isModAlt","someKeys","iss","some"],"mappings":"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","sourcesContent":["import { globalObject } from '@skbkontur/global-object';\n\nimport { isMac } from '../../client';\nimport { isInstanceOf } from '../../isInstanceOf';\n\nimport { extractCode } from './extractCode';\nimport { KeyboardEventCodes as Codes } from './KeyboardEventCodes';\n\ntype E = React.KeyboardEvent<HTMLElement> | KeyboardEvent;\ntype IS = (e: E) => boolean;\ntype ISMod = (is?: IS) => IS;\ntype ISSome = (...is: IS[]) => IS;\n\n// IE 9+ supports char attribute\n// https://developer.mozilla.org/ru/docs/Web/API/KeyboardEvent\nconst getChar = (e: E & { char?: string; nativeEvent?: { char?: string } }) =>\n isInstanceOf(e, globalObject.KeyboardEvent) ? e.char : e.nativeEvent?.char;\n\nexport const isShortcutCopy: IS = (e) =>\n ((isMac ? e.metaKey : e.ctrlKey) && extractCode(e) === Codes.KeyC) ||\n (!isMac && e.ctrlKey && isKeyInsert(e)) ||\n e.key === 'Copy';\n\nexport const isShortcutPaste: IS = (e) =>\n ((isMac ? e.metaKey : e.ctrlKey) && extractCode(e) === Codes.KeyV) ||\n (!isMac && e.shiftKey && isKeyInsert(e)) ||\n e.key === 'Paste';\n\nexport const isShortcutCut: IS = (e) =>\n ((isMac ? e.metaKey : e.ctrlKey) && extractCode(e) === Codes.KeyX) ||\n (!isMac && e.shiftKey && isKeyDelete(e)) ||\n e.key === 'Cut';\n\nexport const isShortcutSelectAll: IS = (e) => (isMac ? e.metaKey : e.ctrlKey) && extractCode(e) === Codes.KeyA;\n\nexport const isShortcutJumpCaret: IS = (e) => (isMac ? e.altKey : e.ctrlKey) && isKeyArrowHorizontal(e);\n\nexport const isKeyEscape: IS = (e) => e.key === 'Escape' || e.key === 'Esc';\nexport const isKeyHome: IS = (e) => e.key === 'Home';\nexport const isKeyEnd: IS = (e) => e.key === 'End';\nexport const isKeyMeta: IS = (e) => e.key === 'Meta' || e.key === 'Win';\nexport const isKeyControl: IS = (e) => e.key === 'Control';\nexport const isKeyShift: IS = (e) => e.key === 'Shift';\nexport const isKeyAlt: IS = (e) => e.key === 'Alt';\nexport const isKeyDelete: IS = (e) => e.key === 'Delete' || e.key === 'Del';\nexport const isKeyBackspace: IS = (e) => e.key === 'Backspace';\nexport const isKeyCapsLock: IS = (e) => e.key === 'CapsLock';\nexport const isKeyInsert: IS = (e) => e.key === 'Insert';\nexport const isKeyTab: IS = (e) => e.key === 'Tab';\nexport const isKeyEnter: IS = (e) => e.key === 'Enter';\nexport const isKeyArrowUp: IS = (e) => e.key === 'ArrowUp' || e.key === 'Up';\nexport const isKeyArrowRight: IS = (e) => e.key === 'ArrowRight' || e.key === 'Right';\nexport const isKeyArrowDown: IS = (e) => e.key === 'ArrowDown' || e.key === 'Down';\nexport const isKeyArrowLeft: IS = (e) => e.key === 'ArrowLeft' || e.key === 'Left';\nexport const isKeySpace: IS = (e) => e.key === ' ' || e.key === 'Spacebar';\nexport const isKeyComma: IS = (e) => e.key === ',' || getChar(e) === ',';\n\nexport const isCodeMinus: IS = (e) => extractCode(e) === Codes.Minus;\nexport const isCodeNumpadDecimal: IS = (e) => extractCode(e) === Codes.NumpadDecimal;\nexport const isCodeNumpadDivide: IS = (e) => extractCode(e) === Codes.NumpadDivide;\nexport const isCodeNumpadSubtract: IS = (e) => extractCode(e) === Codes.NumpadSubtract;\nexport const isCodeSlash: IS = (e) => extractCode(e) === Codes.Slash;\nexport const isCodeBackslash: IS = (e) => extractCode(e) === Codes.Backslash;\nexport const isCodeIntlBackslash: IS = (e) => extractCode(e) === Codes.IntlBackslash;\nexport const isCodeComma: IS = (e) => extractCode(e) === Codes.Comma;\nexport const isCodePeriod: IS = (e) => extractCode(e) === Codes.Period;\n\nexport const isKeyArrowHorizontal: IS = (e) => isKeyArrowRight(e) || isKeyArrowLeft(e);\nexport const isKeyArrowVertical: IS = (e) => isKeyArrowUp(e) || isKeyArrowDown(e);\nexport const isKeyArrow: IS = (e) => isKeyArrowHorizontal(e) || isKeyArrowVertical(e);\nexport const isKeyNumber: IS = (e) => /^\\d+$/.test(e.key);\nexport const isKeyChar: IS = (e) => e.key.trim().length === 1;\nexport const isKeyFs: IS = (e) => /^(?:F[1-9]|F1[0-2]|Soft[1-4])$/.test(e.key);\n\nexport const isModified: ISMod = (is) => (e) =>\n (e.shiftKey || e.metaKey || e.ctrlKey || e.altKey) && (is ? is(e) : true);\nexport const isUnmodified: ISMod = (is) => (e) => !isModified()(e) && (is ? is(e) : true);\nexport const isModShift: ISMod = (is) => (e) => e.shiftKey && (is ? is(e) : true);\nexport const isModCtrl: ISMod = (is) => (e) => e.ctrlKey && (is ? is(e) : true);\nexport const isModAlt: ISMod = (is) => (e) => e.altKey && (is ? is(e) : true);\n\nexport const someKeys: ISSome =\n (...iss) =>\n (e) =>\n iss.some((is) => is(e));\n"]}
@@ -2,6 +2,8 @@
2
2
  var _lodash = _interopRequireDefault(require("lodash.debounce"));
3
3
  var _globalObject = require("@skbkontur/global-object");
4
4
 
5
+ var _RenderContainer = require("../internal/RenderContainer");
6
+
5
7
  var _isInstanceOf = require("./isInstanceOf");
6
8
  var _client = require("./client");var _globalObject$documen2;
7
9
 
@@ -80,9 +82,9 @@ function findRenderContainer(node, rootNode, container) {var _globalObject$docum
80
82
  return container ? container : null;
81
83
  }
82
84
 
83
- var newContainerId = currentNode.getAttribute('data-rendered-container-id');
85
+ var newContainerId = currentNode.getAttribute(_RenderContainer.PORTAL_OUTLET_ATTR);
84
86
  if (newContainerId) {var _globalObject$documen5;
85
- var nextNode = (_globalObject$documen5 = _globalObject.globalObject.document) == null ? void 0 : _globalObject$documen5.querySelector("[data-render-container-id~=\"" + newContainerId + "\"]");
87
+ var nextNode = (_globalObject$documen5 = _globalObject.globalObject.document) == null ? void 0 : _globalObject$documen5.querySelector("[" + _RenderContainer.PORTAL_INLET_ATTR + "~=\"" + newContainerId + "\"]");
86
88
 
87
89
  if (!nextNode) {
88
90
  throw Error("Origin node for render container was not found");
@@ -1 +1 @@
1
- {"version":3,"sources":["listenFocusOutside.ts"],"names":["handlers","addHandleEvent","document","body","addEventListener","isFirefox","handleNativeFocus","leading","trailing","capture","readyState","globalObject","event","target","srcElement","forEach","handler","elements","some","containsTargetOrRenderContainer","ReactDOM","unstable_batchedUpdates","callback","element","contains","container","findRenderContainer","node","rootNode","currentNode","parentNode","documentElement","Element","newContainerId","getAttribute","nextNode","querySelector","Error","listen","push","remove","index","indexOf","splice"],"mappings":"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","sourcesContent":["import ReactDOM from 'react-dom';\nimport debounce from 'lodash.debounce';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { isInstanceOf } from './isInstanceOf';\nimport { isFirefox } from './client';\n\ninterface FocusOutsideEventHandler {\n elements: Element[] | (() => Element[]);\n callback: (event: Event) => void;\n}\n\nconst handlers: FocusOutsideEventHandler[] = [];\n\nfunction addHandleEvent() {\n /**\n * Firefox do not supports 'focusin' event.\n * Focus events bubbles multiple time\n * without possibilty to cancell bubbling.\n * Using debounce to capture only first focus event\n * Mozilla Firefix\n * ¯\\_(ツ)_/¯\n */\n globalObject.document?.body.addEventListener(\n isFirefox ? 'focus' : ('focusin' as 'focus'),\n isFirefox ? debounce(handleNativeFocus, 0, { leading: true, trailing: false }) : handleNativeFocus,\n { capture: true },\n );\n}\n\nif (globalObject.document?.readyState === 'complete') {\n addHandleEvent();\n} else {\n globalObject.addEventListener?.('load', addHandleEvent);\n}\n\nfunction handleNativeFocus(event: UIEvent) {\n // FIXME: not safe casting\n const target: Element = (event.target || event.srcElement) as Element;\n\n handlers.forEach((handler) => {\n let elements = handler.elements;\n if (typeof elements === 'function') {\n elements = elements();\n }\n\n if (elements.some(containsTargetOrRenderContainer(target))) {\n return;\n }\n ReactDOM.unstable_batchedUpdates(() => handler.callback(event));\n });\n}\n\nexport function containsTargetOrRenderContainer(target: Element) {\n return (element: Element) => {\n if (!element) {\n return false;\n }\n if (element.contains(target)) {\n return true;\n }\n const container = findRenderContainer(target, element);\n return !!container && element.contains(container);\n };\n}\n\n/**\n * Searches RenderContainer placed in \"rootNode\" for \"node\"\n */\nexport function findRenderContainer(node: Element, rootNode: Element, container?: Element): Element | null {\n const currentNode = node.parentNode;\n if (\n !currentNode ||\n node === rootNode ||\n currentNode === rootNode ||\n currentNode === globalObject.document?.body ||\n currentNode === globalObject.document?.documentElement ||\n !isInstanceOf(currentNode, globalObject.Element)\n ) {\n return container ? container : null;\n }\n\n const newContainerId = currentNode.getAttribute('data-rendered-container-id');\n if (newContainerId) {\n const nextNode = globalObject.document?.querySelector(`[data-render-container-id~=\"${newContainerId}\"]`);\n\n if (!nextNode) {\n throw Error(`Origin node for render container was not found`);\n }\n\n return findRenderContainer(nextNode, rootNode, nextNode);\n }\n\n return findRenderContainer(currentNode, rootNode, container);\n}\n\nexport function listen(elements: Element[] | (() => Element[]), callback: (event: Event) => void) {\n const handler = {\n elements,\n callback,\n };\n handlers.push(handler);\n\n return {\n remove() {\n const index = handlers.indexOf(handler);\n if (index > -1) {\n handlers.splice(index, 1);\n }\n },\n };\n}\n"]}
1
+ {"version":3,"sources":["listenFocusOutside.ts"],"names":["handlers","addHandleEvent","document","body","addEventListener","isFirefox","handleNativeFocus","leading","trailing","capture","readyState","globalObject","event","target","srcElement","forEach","handler","elements","some","containsTargetOrRenderContainer","ReactDOM","unstable_batchedUpdates","callback","element","contains","container","findRenderContainer","node","rootNode","currentNode","parentNode","documentElement","Element","newContainerId","getAttribute","PORTAL_OUTLET_ATTR","nextNode","querySelector","PORTAL_INLET_ATTR","Error","listen","push","remove","index","indexOf","splice"],"mappings":"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","sourcesContent":["import ReactDOM from 'react-dom';\nimport debounce from 'lodash.debounce';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { PORTAL_INLET_ATTR, PORTAL_OUTLET_ATTR } from '../internal/RenderContainer';\n\nimport { isInstanceOf } from './isInstanceOf';\nimport { isFirefox } from './client';\n\ninterface FocusOutsideEventHandler {\n elements: Element[] | (() => Element[]);\n callback: (event: Event) => void;\n}\n\nconst handlers: FocusOutsideEventHandler[] = [];\n\nfunction addHandleEvent() {\n /**\n * Firefox do not supports 'focusin' event.\n * Focus events bubbles multiple time\n * without possibilty to cancell bubbling.\n * Using debounce to capture only first focus event\n * Mozilla Firefix\n * ¯\\_(ツ)_/¯\n */\n globalObject.document?.body.addEventListener(\n isFirefox ? 'focus' : ('focusin' as 'focus'),\n isFirefox ? debounce(handleNativeFocus, 0, { leading: true, trailing: false }) : handleNativeFocus,\n { capture: true },\n );\n}\n\nif (globalObject.document?.readyState === 'complete') {\n addHandleEvent();\n} else {\n globalObject.addEventListener?.('load', addHandleEvent);\n}\n\nfunction handleNativeFocus(event: UIEvent) {\n // FIXME: not safe casting\n const target: Element = (event.target || event.srcElement) as Element;\n\n handlers.forEach((handler) => {\n let elements = handler.elements;\n if (typeof elements === 'function') {\n elements = elements();\n }\n\n if (elements.some(containsTargetOrRenderContainer(target))) {\n return;\n }\n ReactDOM.unstable_batchedUpdates(() => handler.callback(event));\n });\n}\n\nexport function containsTargetOrRenderContainer(target: Element) {\n return (element: Element) => {\n if (!element) {\n return false;\n }\n if (element.contains(target)) {\n return true;\n }\n const container = findRenderContainer(target, element);\n return !!container && element.contains(container);\n };\n}\n\n/**\n * Searches RenderContainer placed in \"rootNode\" for \"node\"\n */\nexport function findRenderContainer(node: Element, rootNode: Element, container?: Element): Element | null {\n const currentNode = node.parentNode;\n if (\n !currentNode ||\n node === rootNode ||\n currentNode === rootNode ||\n currentNode === globalObject.document?.body ||\n currentNode === globalObject.document?.documentElement ||\n !isInstanceOf(currentNode, globalObject.Element)\n ) {\n return container ? container : null;\n }\n\n const newContainerId = currentNode.getAttribute(PORTAL_OUTLET_ATTR);\n if (newContainerId) {\n const nextNode = globalObject.document?.querySelector(`[${PORTAL_INLET_ATTR}~=\"${newContainerId}\"]`);\n\n if (!nextNode) {\n throw Error(`Origin node for render container was not found`);\n }\n\n return findRenderContainer(nextNode, rootNode, nextNode);\n }\n\n return findRenderContainer(currentNode, rootNode, container);\n}\n\nexport function listen(elements: Element[] | (() => Element[]), callback: (event: Event) => void) {\n const handler = {\n elements,\n callback,\n };\n handlers.push(handler);\n\n return {\n remove() {\n const index = handlers.indexOf(handler);\n if (index > -1) {\n handlers.splice(index, 1);\n }\n },\n };\n}\n"]}
@@ -4,6 +4,6 @@ var _client = require("../client");var _templateObject;
4
4
  // This is for screenshot tests
5
5
  var Highlight = _client.isChrome ? '#3390ff' : '#3399ff';
6
6
 
7
- (0, _Emotion.injectGlobal)(_templateObject || (_templateObject = (0, _taggedTemplateLiteralLoose2.default)(["\n *::selection {\n background-color: ", ";\n }\n input::selection,\n textarea::selection {\n color: white;\n }\n"])),
7
+ (0, _Emotion.injectGlobal)(_templateObject || (_templateObject = (0, _taggedTemplateLiteralLoose2.default)(["\n *::selection {\n background-color: ", ";\n }\n input::selection,\n textarea::selection {\n color: white;\n -webkit-text-fill-color: white;\n }\n"])),
8
8
 
9
9
  Highlight);
@@ -1 +1 @@
1
- {"version":3,"sources":["HoldSelectionColor.ts"],"names":["Highlight","isChrome"],"mappings":"kOAAA;AACA,mC;;AAEA;AACA,IAAMA,SAAS,GAAGC,mBAAW,SAAX,GAAuB,SAAzC;;AAEA;;AAEwBD,SAFxB","sourcesContent":["import { injectGlobal } from '../theming/Emotion';\nimport { isChrome } from '../client';\n\n// This is for screenshot tests\nconst Highlight = isChrome ? '#3390ff' : '#3399ff';\n\ninjectGlobal`\n *::selection {\n background-color: ${Highlight};\n }\n input::selection,\n textarea::selection {\n color: white;\n }\n`;\n"]}
1
+ {"version":3,"sources":["HoldSelectionColor.ts"],"names":["Highlight","isChrome"],"mappings":"kOAAA;AACA,mC;;AAEA;AACA,IAAMA,SAAS,GAAGC,mBAAW,SAAX,GAAuB,SAAzC;;AAEA;;AAEwBD,SAFxB","sourcesContent":["import { injectGlobal } from '../theming/Emotion';\nimport { isChrome } from '../client';\n\n// This is for screenshot tests\nconst Highlight = isChrome ? '#3390ff' : '#3399ff';\n\ninjectGlobal`\n *::selection {\n background-color: ${Highlight};\n }\n input::selection,\n textarea::selection {\n color: white;\n -webkit-text-fill-color: white;\n }\n`;\n"]}
@@ -0,0 +1,4 @@
1
+ export declare const uiFontGlobalClasses: {
2
+ root: string;
3
+ element: string;
4
+ };
@@ -0,0 +1,61 @@
1
+ "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;exports.__esModule = true;exports.uiFontGlobalClasses = void 0;var _taggedTemplateLiteralLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteralLoose"));var _globalObject = require("@skbkontur/global-object");
2
+
3
+ var _Emotion = require("../theming/Emotion");var _templateObject, _templateObject2;
4
+
5
+ var uiFontGlobalClasses = (0, _Emotion.prefix)('ui-font')({
6
+ root: 'root',
7
+ element: 'element' });exports.uiFontGlobalClasses = uiFontGlobalClasses;
8
+
9
+
10
+ var uiFontName = 'ui';
11
+
12
+ var uiFontWoff2 =
13
+ 'd09GMk9UVE8AAAM0AAkAAAAABOwAAALtAAEZmQAAAAAAAAAAAAAAAAAAAAAAAAAADYNHBmAATAE2AiQDEAQGBYJHByAbSQTIHodxLLFkxvCafPI36w' +
14
+ 'UCtbTOiShd0zOVLzXnVD3Mprf8381PJXqgZb2jFq3JN9rLLMKAEi2lMG8HzqkL4rRGmlAlSFHfIhL0YtdjFEbbAPDD2JUXUURAJRBjl6txH54vKxuX' +
15
+ 'HP/FwmZOmLmImVsys1HRh8nnGD0jMldklFN+ebnk32ymBCATYs9eUNfDZcK63rHvdC91WW2od/d1rYdytB4ACDwoN9HVhJLspIz5RfRs95ndG4zTxu' +
16
+ '3dG6+tN0Ly/p5bjC179u3ZfKvxOMDp6+i3YZ4iUvhUwYyOfKYo5+ZXruz7oHVcM0dmlNMivlyinulTxYFn2m7b8zNK/G7eqhMX4hso3Eu3ilY8XuO5' +
17
+ 'eCuRyxYDne7OaZTk7IwtqKJCx5F9atBVXuFM5GzWGqcZPOaxIRi9+roWJEcV4/H+ZIO36ojjbYJxXeN+4MY/7jDOb7pm2ILwjHq8P9XgLTrito87qk' +
18
+ 'Ef7CLmfwstiPJxdjqjM48An8/cQb1yxj7tl46qhw/xmMX4tAfkDF/mP/g07YE4zeY5k9ycI+PNf7K5QjTQzkXUEz2Dl5pzl/LqS9U8KxsELOaYwly3' +
19
+ 'nS/t5+cy9nI2c4OSS2QmFNilyVIzAGr660kbyLBgcFdC+l4OaAguNq6ZufAiH9rKWzMjgPsMoflAVgCABOkcgHxIlAIygBC0iN9OkQDACXsjQagsjb' +
20
+ 'Z4LKu1EndYL6271lqrPVQNEX1Ksi/K1yM4o6035S9k+QMAvEqtx/19iZkRySVvBWCbVeohr26j1AwKEiTXeAUAoKWtE36AzEVifNwB1ANQAG6sbhkQ' +
21
+ 'OGevBSTY4ETLtAxRkA1+WD0mg1AHCEIoDhEJHqQiMkqg5jKtRxTo6LesomUfNP1jDP2SljAv944saTKsxwF9qtLkKpVVq96UW3Q0xgCOHAtWMIxYiB' +
22
+ 'HqxBI7OpBSCWUQhm52JqMxLGRwwwl9nBSD9eoApB6rAhMqLNTYSkMdMgw+qyIwAAAAAA==';
23
+
24
+ var uiFontWoff =
25
+ 'd09GRk9UVE8AAARUAAkAAAAABOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDRkYgAAACpAAAAa4AAAHHJkH54k9TLzIAAAFMAAAAUgAAAGCNA2InY2' +
26
+ '1hcAAAAlQAAAA5AAAATAE1AKRoZWFkAAAA6AAAADIAAAA2JdX/E2hoZWEAAAEsAAAAHwAAACQF8gGRaG10eAAAARwAAAAQAAAAEAcrAPZtYXhwAAAA' +
27
+ '4AAAAAYAAAAGAARQAG5hbWUAAAGgAAAAtAAAAUd8gS+xcG9zdAAAApAAAAATAAAAIP9GADsAAFAAAAQAAHgBY2BkYGBglJypkKVQHc9v85WBmfkFAx' +
28
+ 'A8sg34Dqct//1h4mZeA+SyMzCBRAFVTwwrAAACWABwAOcAAAGUADkCWABNeAFjYGRgYF7z7w8DA1MEgyWDBRM3UAQVsAAAY1wDiAB4AWNgYTzFOIGB' +
29
+ 'lYGDqYspgoGBwRtCM8YxGDH8Z0ACCxiY3jswKFTD+KHe4X4MBxgUGOKZ1/z7w8DAvIaRRYGBcT5IjomB6RiQUmBgAADLYg8MAAB4AW2MNWKEUAAFJ+' +
30
+ '6uJWU8/7dxd9c2Buwii18oF43i0D0dYIhP2gBoox9i3U4P/bHuzOVdzDIW6+6/vIO2zj7amGQ+1u0MsxnrDhY4j3VnbtOFIIp1dy4fzemxX85j60P1' +
31
+ 'g3fHV+9UPbJe/acf23RailyRQqwfHe6eN8MfI3ikxQcqPgHvOPio3KGiE2Hxio9kBYlAsM4j5zxzxXrt7yn2TRxaKOSfRxyyyzlNwrgR31v9JsZ4AW' +
32
+ 'NgYGACYmYgFgGSjGCahcECSHMxcDAwAaECgy5DPMOC//+BYnD2/4f/r/5f8j8RqAMOAEsaDdAAAAB4AWNgZgCD/84M1gxYAAAjQQGBAHgBTRADkBxB' +
33
+ 'cGYx+8nN7u3dVWzbNoopxXZmP7Zt21Yh9s7Xx0Yx/Ni21VPfH7z/etruocTQCKU00HawFzt8hBgyPDbFLKHyEZWfqgKaym3gYK5f4sYFXKu2JDY2vw' +
34
+ 'dBC+1W9cNEpzQmT7HKlatUrFK5shgydNzwfn36jiw8qN+IEf0G94nqmAyUOKRx+jBq0Dy0ovqIax/7F/wd8rxM8Hde2S53yMMD9sg9cfFxu+Vh+SAM' +
35
+ 'xotqr6pAfawPC5FLAUuxcTJvXOlN5N/pHGpqYuMcSW5+bKFchkce5/CtJxfMWj508TxWq5UJQY9hF6iVA/JDF8xvJeteDsgnywG/YEUYaSqGiCssEm' +
36
+ 'hiAsd8Kak1c0io/kAiT869miNCT5ryweF6ErqIerUs5FA5B4SA13rQKzmebEgrQpxpDw43kNBJ1Ov+QLCIS2Kw+p9OOZKVwsDPpzk4ixDXVQeMZNFY' +
37
+ 'xqdagjkwwVGlYdFdegEO6/AVFuW4i4cbWk7yv7S6RGer37ragq1yXEpq1cJyxm9UKzdCs42s4NZW4X882wIeSMj+LJCwkvNny7n9H30nvLcAAA==';
38
+
39
+ (0, _Emotion.injectGlobal)(_templateObject || (_templateObject = (0, _taggedTemplateLiteralLoose2.default)(["\n @font-face {\n font-family: ", ";\n src: url(data:font/woff2;base64,", ") format('woff2'),\n url(data:font/woff;base64,", ") format('woff');\n }\n"])),
40
+
41
+ uiFontName,
42
+ uiFontWoff2,
43
+ uiFontWoff);
44
+
45
+
46
+
47
+ var $this = _globalObject.globalObject;
48
+
49
+ if ((0, _globalObject.isBrowser)($this)) {
50
+ var baseFont = function baseFont() {return $this.getComputedStyle($this.document.body).fontFamily;};
51
+
52
+ var injectFont = function injectFont() {return (0, _Emotion.injectGlobal)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteralLoose2.default)(["\n .", ",\n .", " > *,\n .", " {\n font-family: ", ", ", ";\n }\n "])),
53
+ uiFontGlobalClasses.root,
54
+ uiFontGlobalClasses.root,
55
+ uiFontGlobalClasses.element,
56
+ uiFontName, baseFont());};
57
+
58
+
59
+
60
+ setTimeout(injectFont);
61
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["UiFont.ts"],"names":["uiFontGlobalClasses","root","element","uiFontName","uiFontWoff2","uiFontWoff","$this","globalObject","baseFont","getComputedStyle","document","body","fontFamily","injectFont","injectGlobal","setTimeout"],"mappings":"iSAAA;;AAEA,6C;;AAEO,IAAMA,mBAAmB,GAAG,qBAAO,SAAP,EAAkB;AACnDC,EAAAA,IAAI,EAAE,MAD6C;AAEnDC,EAAAA,OAAO,EAAE,SAF0C,EAAlB,CAA5B,C;;;AAKP,IAAMC,UAAU,GAAG,IAAnB;;AAEA,IAAMC,WAAW;AACf;AACA,oHADA;AAEA,oHAFA;AAGA,oHAHA;AAIA,oHAJA;AAKA,oHALA;AAMA,oHANA;AAOA,oHAPA;AAQA,oHARA;AASA,wEAVF;;AAYA,IAAMC,UAAU;AACd;AACA,oHADA;AAEA,oHAFA;AAGA,oHAHA;AAIA,oHAJA;AAKA,oHALA;AAMA,oHANA;AAOA,oHAPA;AAQA,oHARA;AASA,oHATA;AAUA,oHAVA;AAWA,oHAXA;AAYA,kHAbF;;AAeA;;AAEmBF,UAFnB;AAGsCC,WAHtC;AAIgCC,UAJhC;;;;AAQA,IAAMC,KAAK,GAAGC,0BAAd;;AAEA,IAAI,6BAAUD,KAAV,CAAJ,EAAsB;AACpB,MAAME,QAAQ,GAAG,SAAXA,QAAW,WAAMF,KAAK,CAACG,gBAAN,CAAuBH,KAAK,CAACI,QAAN,CAAeC,IAAtC,EAA4CC,UAAlD,EAAjB;;AAEA,MAAMC,UAAU,GAAG,SAAbA,UAAa,eAAMC,qBAAN;AACdd,IAAAA,mBAAmB,CAACC,IADN;AAEdD,IAAAA,mBAAmB,CAACC,IAFN;AAGdD,IAAAA,mBAAmB,CAACE,OAHN;AAIAC,IAAAA,UAJA,EAIeK,QAAQ,EAJvB,GAAnB;;;;AAQAO,EAAAA,UAAU,CAACF,UAAD,CAAV;AACD","sourcesContent":["import { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport { injectGlobal, prefix } from '../theming/Emotion';\n\nexport const uiFontGlobalClasses = prefix('ui-font')({\n root: 'root',\n element: 'element',\n});\n\nconst uiFontName = 'ui';\n\nconst uiFontWoff2 =\n 'd09GMk9UVE8AAAM0AAkAAAAABOwAAALtAAEZmQAAAAAAAAAAAAAAAAAAAAAAAAAADYNHBmAATAE2AiQDEAQGBYJHByAbSQTIHodxLLFkxvCafPI36w' +\n 'UCtbTOiShd0zOVLzXnVD3Mprf8381PJXqgZb2jFq3JN9rLLMKAEi2lMG8HzqkL4rRGmlAlSFHfIhL0YtdjFEbbAPDD2JUXUURAJRBjl6txH54vKxuX' +\n 'HP/FwmZOmLmImVsys1HRh8nnGD0jMldklFN+ebnk32ymBCATYs9eUNfDZcK63rHvdC91WW2od/d1rYdytB4ACDwoN9HVhJLspIz5RfRs95ndG4zTxu' +\n '3dG6+tN0Ly/p5bjC179u3ZfKvxOMDp6+i3YZ4iUvhUwYyOfKYo5+ZXruz7oHVcM0dmlNMivlyinulTxYFn2m7b8zNK/G7eqhMX4hso3Eu3ilY8XuO5' +\n 'eCuRyxYDne7OaZTk7IwtqKJCx5F9atBVXuFM5GzWGqcZPOaxIRi9+roWJEcV4/H+ZIO36ojjbYJxXeN+4MY/7jDOb7pm2ILwjHq8P9XgLTrito87qk' +\n 'Ef7CLmfwstiPJxdjqjM48An8/cQb1yxj7tl46qhw/xmMX4tAfkDF/mP/g07YE4zeY5k9ycI+PNf7K5QjTQzkXUEz2Dl5pzl/LqS9U8KxsELOaYwly3' +\n 'nS/t5+cy9nI2c4OSS2QmFNilyVIzAGr660kbyLBgcFdC+l4OaAguNq6ZufAiH9rKWzMjgPsMoflAVgCABOkcgHxIlAIygBC0iN9OkQDACXsjQagsjb' +\n 'Z4LKu1EndYL6271lqrPVQNEX1Ksi/K1yM4o6035S9k+QMAvEqtx/19iZkRySVvBWCbVeohr26j1AwKEiTXeAUAoKWtE36AzEVifNwB1ANQAG6sbhkQ' +\n 'OGevBSTY4ETLtAxRkA1+WD0mg1AHCEIoDhEJHqQiMkqg5jKtRxTo6LesomUfNP1jDP2SljAv944saTKsxwF9qtLkKpVVq96UW3Q0xgCOHAtWMIxYiB' +\n 'HqxBI7OpBSCWUQhm52JqMxLGRwwwl9nBSD9eoApB6rAhMqLNTYSkMdMgw+qyIwAAAAAA==';\n\nconst uiFontWoff =\n 'd09GRk9UVE8AAARUAAkAAAAABOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDRkYgAAACpAAAAa4AAAHHJkH54k9TLzIAAAFMAAAAUgAAAGCNA2InY2' +\n '1hcAAAAlQAAAA5AAAATAE1AKRoZWFkAAAA6AAAADIAAAA2JdX/E2hoZWEAAAEsAAAAHwAAACQF8gGRaG10eAAAARwAAAAQAAAAEAcrAPZtYXhwAAAA' +\n '4AAAAAYAAAAGAARQAG5hbWUAAAGgAAAAtAAAAUd8gS+xcG9zdAAAApAAAAATAAAAIP9GADsAAFAAAAQAAHgBY2BkYGBglJypkKVQHc9v85WBmfkFAx' +\n 'A8sg34Dqct//1h4mZeA+SyMzCBRAFVTwwrAAACWABwAOcAAAGUADkCWABNeAFjYGRgYF7z7w8DA1MEgyWDBRM3UAQVsAAAY1wDiAB4AWNgYTzFOIGB' +\n 'lYGDqYspgoGBwRtCM8YxGDH8Z0ACCxiY3jswKFTD+KHe4X4MBxgUGOKZ1/z7w8DAvIaRRYGBcT5IjomB6RiQUmBgAADLYg8MAAB4AW2MNWKEUAAFJ+' +\n '6uJWU8/7dxd9c2Buwii18oF43i0D0dYIhP2gBoox9i3U4P/bHuzOVdzDIW6+6/vIO2zj7amGQ+1u0MsxnrDhY4j3VnbtOFIIp1dy4fzemxX85j60P1' +\n 'g3fHV+9UPbJe/acf23RailyRQqwfHe6eN8MfI3ikxQcqPgHvOPio3KGiE2Hxio9kBYlAsM4j5zxzxXrt7yn2TRxaKOSfRxyyyzlNwrgR31v9JsZ4AW' +\n 'NgYGACYmYgFgGSjGCahcECSHMxcDAwAaECgy5DPMOC//+BYnD2/4f/r/5f8j8RqAMOAEsaDdAAAAB4AWNgZgCD/84M1gxYAAAjQQGBAHgBTRADkBxB' +\n 'cGYx+8nN7u3dVWzbNoopxXZmP7Zt21Yh9s7Xx0Yx/Ni21VPfH7z/etruocTQCKU00HawFzt8hBgyPDbFLKHyEZWfqgKaym3gYK5f4sYFXKu2JDY2vw' +\n 'dBC+1W9cNEpzQmT7HKlatUrFK5shgydNzwfn36jiw8qN+IEf0G94nqmAyUOKRx+jBq0Dy0ovqIax/7F/wd8rxM8Hde2S53yMMD9sg9cfFxu+Vh+SAM' +\n 'xotqr6pAfawPC5FLAUuxcTJvXOlN5N/pHGpqYuMcSW5+bKFchkce5/CtJxfMWj508TxWq5UJQY9hF6iVA/JDF8xvJeteDsgnywG/YEUYaSqGiCssEm' +\n 'hiAsd8Kak1c0io/kAiT869miNCT5ryweF6ErqIerUs5FA5B4SA13rQKzmebEgrQpxpDw43kNBJ1Ov+QLCIS2Kw+p9OOZKVwsDPpzk4ixDXVQeMZNFY' +\n 'xqdagjkwwVGlYdFdegEO6/AVFuW4i4cbWk7yv7S6RGer37ragq1yXEpq1cJyxm9UKzdCs42s4NZW4X882wIeSMj+LJCwkvNny7n9H30nvLcAAA==';\n\ninjectGlobal`\n @font-face {\n font-family: ${uiFontName};\n src: url(data:font/woff2;base64,${uiFontWoff2}) format('woff2'),\n url(data:font/woff;base64,${uiFontWoff}) format('woff');\n }\n`;\n\nconst $this = globalObject;\n\nif (isBrowser($this)) {\n const baseFont = () => $this.getComputedStyle($this.document.body).fontFamily;\n\n const injectFont = () => injectGlobal`\n .${uiFontGlobalClasses.root},\n .${uiFontGlobalClasses.root} > *,\n .${uiFontGlobalClasses.element} {\n font-family: ${uiFontName}, ${baseFont()};\n }\n `;\n\n setTimeout(injectFont);\n}\n"]}
@@ -1,4 +1,6 @@
1
1
  ```jsx harmony
2
+ import { Autocomplete } from '@skbkontur/react-ui';
3
+
2
4
  const items = ['Grey Face', 'Grey Space', 'Kappa', 'Keepo', 'Resident Sleeper'];
3
5
 
4
6
  const [value, setValue] = React.useState('Kappa');
@@ -6,9 +8,9 @@ const [value, setValue] = React.useState('Kappa');
6
8
  <Autocomplete source={items} value={value} onValueChange={setValue} />;
7
9
  ```
8
10
 
9
- Очистить значение в `Autocomplete` можно только с помощью пустой строки
11
+ Очистить значение в `Autocomplete` можно только с помощью пустой строки.
10
12
  ```jsx harmony
11
- import { Button, Group } from '@skbkontur/react-ui';
13
+ import { Autocomplete, Button, Group } from '@skbkontur/react-ui';
12
14
 
13
15
  const items = ['Grey Face', 'Grey Space', 'Kappa', 'Keepo', 'Resident Sleeper'];
14
16
 
@@ -22,7 +24,7 @@ const [value, setValue] = React.useState('Kappa');
22
24
 
23
25
  У Autocomplete есть 3 стандартных размера.
24
26
  ```jsx harmony
25
- import { Gapped } from '@skbkontur/react-ui';
27
+ import { Autocomplete, Gapped } from '@skbkontur/react-ui';
26
28
 
27
29
  const items = ['Маленький', 'Средний', 'Большой'];
28
30
 
@@ -36,3 +38,74 @@ const [valueLarge, setValueLarge] = React.useState('Большой');
36
38
  <Autocomplete source={items} value={valueLarge} onValueChange={setValueLarge} size={'large'} />
37
39
  </Gapped>
38
40
  ```
41
+
42
+ Можно выделять введеное значение при фокусе.
43
+ ```jsx harmony
44
+ import { Autocomplete } from '@skbkontur/react-ui';
45
+
46
+ const items = ['Grey Face', 'Grey Space', 'Kappa', 'Keepo', 'Resident Sleeper'];
47
+
48
+ const [value, setValue] = React.useState('');
49
+
50
+ <Autocomplete source={items} value={value} onValueChange={setValue} selectAllOnFocus />
51
+ ```
52
+
53
+ Расположение иконки слева и справа.
54
+ ```jsx harmony
55
+ import { Autocomplete, Gapped } from '@skbkontur/react-ui';
56
+ import { SearchLoupeIcon16Regular } from '@skbkontur/icons/SearchLoupeIcon16Regular';
57
+
58
+ const items = ['Grey Face', 'Grey Space', 'Kappa', 'Keepo', 'Resident Sleeper'];
59
+
60
+ const [valueLeft, setValueLeft] = React.useState('');
61
+ const [valueRight, setValueRight] = React.useState('');
62
+
63
+ <Gapped>
64
+ <Autocomplete source={items} value={valueLeft} onValueChange={setValueLeft} leftIcon={<SearchLoupeIcon16Regular />} />
65
+ <Autocomplete source={items} value={valueRight} onValueChange={setValueRight} rightIcon={<SearchLoupeIcon16Regular />} />
66
+ </Gapped>
67
+ ```
68
+
69
+ Изменение ширины меню.
70
+ ```jsx harmony
71
+ import { Autocomplete } from '@skbkontur/react-ui';
72
+
73
+ const items = ['Grey Face', 'Grey Space', 'Kappa', 'Keepo', 'Resident Sleeper'];
74
+
75
+ const [value, setValue] = React.useState('');
76
+
77
+ <Autocomplete source={items} value={value} onValueChange={setValue} menuWidth={'80%'} />
78
+ ```
79
+
80
+ Расположение выпадающего окна Autocomplete.
81
+ ```jsx harmony
82
+ import { Autocomplete } from '@skbkontur/react-ui';
83
+
84
+ const items = ['Grey Face', 'Grey Space', 'Kappa', 'Keepo', 'Resident Sleeper'];
85
+
86
+ const [value, setValue] = React.useState('');
87
+
88
+ <Autocomplete source={items} value={value} onValueChange={setValue} menuPos={'top'} />
89
+ ```
90
+
91
+ Отрисовка тени у выпадающего меню.
92
+ ```jsx harmony
93
+ import { Autocomplete } from '@skbkontur/react-ui';
94
+
95
+ const items = ['Grey Face', 'Grey Space', 'Kappa', 'Keepo', 'Resident Sleeper'];
96
+
97
+ const [value, setValue] = React.useState('');
98
+
99
+ <Autocomplete source={items} value={value} onValueChange={setValue} hasShadow />
100
+ ```
101
+
102
+ Использование режима прозрачной рамки.
103
+ ```jsx harmony
104
+ import { Autocomplete } from '@skbkontur/react-ui';
105
+
106
+ const items = ['Grey Face', 'Grey Space', 'Kappa', 'Keepo', 'Resident Sleeper'];
107
+
108
+ const [value, setValue] = React.useState('Kappa');
109
+
110
+ <Autocomplete source={items} value={value} onValueChange={setValue} borderless />
111
+ ```
@@ -60,15 +60,15 @@ import { XIcon16Regular } from '@skbkontur/icons/XIcon16Regular';
60
60
 
61
61
  ```jsx harmony
62
62
  <div
63
- style={{
64
- display: "flex",
65
- alignItems: "end",
66
- gap: '10px',
67
- }}
68
- >
69
- <Button size="small">Маленькая</Button>
70
- <Button size="medium">Средняя</Button>
71
- <Button size="large">Большая</Button>
63
+ style={{
64
+ display: "flex",
65
+ alignItems: "end",
66
+ gap: '10px',
67
+ }}
68
+ >
69
+ <Button size="small">Маленькая</Button>
70
+ <Button size="medium">Средняя</Button>
71
+ <Button size="large">Большая</Button>
72
72
  </div>
73
73
  ```
74
74
 
@@ -133,7 +133,7 @@ const handleClick = () => {
133
133
 
134
134
  ```
135
135
 
136
- Пример кнопки с пропом `theme`
136
+ Пример кнопки с пропом `theme`.
137
137
 
138
138
  ```jsx harmony
139
139
  import { Button, Gapped } from '@skbkontur/react-ui';
@@ -146,7 +146,7 @@ import { Button, Gapped } from '@skbkontur/react-ui';
146
146
  ```
147
147
 
148
148
 
149
- Пример кастомизации кнопки-ссылки
149
+ Пример кастомизации кнопки-ссылки.
150
150
 
151
151
  ```jsx harmony
152
152
  import { Toast } from "@skbkontur/react-ui";
@@ -212,3 +212,30 @@ const renderExampleRow = (title, styles, index) => {
212
212
  {renderExampleRow('Изменение цвета ссылки', differentColorStyles)}
213
213
  </table>
214
214
  ```
215
+
216
+
217
+ Кнопка может быть узкой.
218
+
219
+ ```jsx harmony
220
+ import { Button } from '@skbkontur/react-ui';
221
+
222
+ <Button narrow>
223
+ Создать отчет
224
+ </Button>
225
+ ```
226
+
227
+
228
+ У кнопки есть состояния валидации.
229
+
230
+ ```jsx harmony
231
+ import { Button, Gapped } from '@skbkontur/react-ui';
232
+
233
+ <Gapped gap={5}>
234
+ <Button warning>
235
+ Warning
236
+ </Button>
237
+ <Button error>
238
+ Error
239
+ </Button>
240
+ </Gapped>
241
+ ```
@@ -106,6 +106,8 @@ const theme = React.useContext(ThemeContext);
106
106
 
107
107
  ### Кастомный рендер дня
108
108
 
109
+ Для кастомнизации дней в календаре используется метод `renderDay` и компонент [Calendar.Day](#/Components/Calendar/Calendar.Day)
110
+
109
111
  ```jsx harmony
110
112
  import { Tooltip, Hint, CalendarDay } from '@skbkontur/react-ui';
111
113
 
@@ -144,6 +146,44 @@ const renderDay = (props) => {
144
146
  />;
145
147
  ```
146
148
 
149
+ ### Календарь с ценами
150
+
151
+ Пример с кастомизацией темы и кастомным рендером дня
152
+
153
+ ```jsx harmony
154
+ import { ThemeContext, ThemeFactory, CalendarDay } from '@skbkontur/react-ui';
155
+
156
+ const theme = React.useContext(ThemeContext);
157
+
158
+ function renderDay(props) {
159
+ const [date, month] = props.date.split('.').map(Number);
160
+ const randomDay = date % 6 === 0 || date % 7 === 0 || date % 8 === 0;
161
+ const randomPrice = Math.round((date / month) * 1000);
162
+
163
+ return (
164
+ <CalendarDay {...props}>
165
+ <div style={{ fontSize: theme.calendarCellFontSize }}>{date}</div>
166
+ <div style={{ fontSize: '11px', fontFeatureSettings: 'tnum', fontVariantNumeric: 'tabular-nums' }}>
167
+ {randomDay ? <>{randomPrice}&thinsp;₽</> : <span style={{ color: theme.tokenTextColorDisabled }}>—</span>}
168
+ </div>
169
+ </CalendarDay>
170
+ );
171
+ }
172
+
173
+ const [value, setValue] = React.useState(null);
174
+
175
+ <ThemeContext.Provider
176
+ value={ThemeFactory.create({
177
+ calendarCellSize: '56px',
178
+ calendarCellLineHeight: '1.5',
179
+ calendarWrapperHeight: '600px',
180
+ calendarCellBorderRadius: '8px'
181
+ }, theme)}
182
+ >
183
+ <Calendar value={value} renderDay={renderDay} onValueChange={setValue} />
184
+ </ThemeContext.Provider>
185
+ ```
186
+
147
187
  #### Локали по умолчанию
148
188
 
149
189
  ```typescript static
@@ -247,3 +247,42 @@ const hiddenItems = [
247
247
  </DropdownMenu>
248
248
  </Gapped>
249
249
  ```
250
+
251
+ С использованием фиче-флага menuItemsAtAnyLevel. Mожно использовать различные обертки для пунктов меню.
252
+
253
+ ```jsx harmony
254
+ import {
255
+ DropdownMenu,
256
+ Button,
257
+ MenuHeader,
258
+ MenuItem,
259
+ MenuSeparator,
260
+ ReactUIFeatureFlagsContext,
261
+ Gapped
262
+ } from '@skbkontur/react-ui';
263
+
264
+ const groupedMenuItems = (
265
+ <div>
266
+ <MenuItem>MenuItem1</MenuItem>
267
+ <MenuItem>MenuItem2</MenuItem>
268
+ <MenuItem isNotSelectable>Not Selectable</MenuItem>
269
+ </div>
270
+ );
271
+
272
+ <Gapped>
273
+ <ReactUIFeatureFlagsContext.Provider value={{ menuItemsAtAnyLevel: true }}>
274
+ <DropdownMenu caption={<Button use="primary">Открыть меню</Button>}>
275
+ <>
276
+ <MenuHeader>Заголовок меню</MenuHeader>
277
+ <MenuSeparator />
278
+ <div>
279
+ {groupedMenuItems}
280
+ </div>
281
+ </>
282
+ <MenuItem>MenuItem3</MenuItem>
283
+ </DropdownMenu>
284
+ </ReactUIFeatureFlagsContext.Provider>
285
+ </Gapped>;
286
+ ```
287
+
288
+
@@ -1,7 +1,7 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
3
3
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
4
- var _excluded = ["disabled", "error", "warning", "multiple", "width", "hideFiles", "onBlur", "onFocus", "onChange", "request", "validateBeforeUpload", "onRequestSuccess", "onRequestError", "size", "renderFile"];
4
+ var _excluded = ["initialFiles", "disabled", "error", "warning", "multiple", "width", "hideFiles", "onBlur", "onFocus", "onChange", "request", "validateBeforeUpload", "onRequestSuccess", "onRequestError", "size", "renderFile"];
5
5
  import _regeneratorRuntime from "@babel/runtime/regenerator";
6
6
  import React, { useCallback, useContext, useEffect, useImperativeHandle, useRef, useState } from 'react';
7
7
  import { globalObject, isBrowser } from '@skbkontur/global-object';
@@ -53,7 +53,8 @@ var _FileUploader = forwardRefAndName('FileUploader', function (props, ref) {
53
53
 
54
54
  var _isTheme2022 = isTheme2022(theme);
55
55
 
56
- var disabled = props.disabled,
56
+ var initialFiles = props.initialFiles,
57
+ disabled = props.disabled,
57
58
  error = props.error,
58
59
  warning = props.warning,
59
60
  _props$multiple = props.multiple,
@@ -155,7 +156,7 @@ var _FileUploader = forwardRefAndName('FileUploader', function (props, ref) {
155
156
  /** common part **/
156
157
 
157
158
  var handleChange = useCallback(function (newFiles) {
158
- if (!newFiles) {
159
+ if (!newFiles || !newFiles.length) {
159
160
  return;
160
161
  }
161
162
 
@@ -256,6 +257,16 @@ var _FileUploader = forwardRefAndName('FileUploader', function (props, ref) {
256
257
  }
257
258
  };
258
259
 
260
+ var handleRemoveFile = useCallback(function (fileId) {
261
+ var dataTransfer = new DataTransfer();
262
+ files.filter(function (f) {
263
+ return f.id !== fileId;
264
+ }).forEach(function (file) {
265
+ dataTransfer.items.add(file.originalFile);
266
+ });
267
+ inputRef.current && (inputRef.current.files = dataTransfer.files);
268
+ }, []);
269
+
259
270
  var _useState3 = useState(false),
260
271
  hovered = _useState3[0],
261
272
  setHovered = _useState3[1];
@@ -271,6 +282,17 @@ var _FileUploader = forwardRefAndName('FileUploader', function (props, ref) {
271
282
  useEffect(function () {
272
283
  setIsLinkVisible(hasOneFileForSingle ? !isMinLengthReached : true);
273
284
  }, [isMinLengthReached, hasOneFileForSingle]);
285
+ useEffect(function () {
286
+ if (!files || !files.length || !inputRef.current) {
287
+ return;
288
+ }
289
+
290
+ var dataTransfer = new DataTransfer();
291
+ files.forEach(function (file) {
292
+ return dataTransfer.items.add(file.originalFile);
293
+ });
294
+ inputRef.current.files = dataTransfer.files;
295
+ }, []);
274
296
  var rootNodeRef = useRef(null);
275
297
  var iconSizes = {
276
298
  small: parseInt(theme.btnIconSizeSmall),
@@ -289,7 +311,8 @@ var _FileUploader = forwardRefAndName('FileUploader', function (props, ref) {
289
311
  ref: rootNodeRef
290
312
  }, !hideFiles && !isSingleMode && !!files.length && /*#__PURE__*/React.createElement(FileUploaderFileList, {
291
313
  renderFile: renderFile,
292
- size: size
314
+ size: size,
315
+ onRemove: handleRemoveFile
293
316
  }), /*#__PURE__*/React.createElement("div", {
294
317
  className: uploadButtonWrapperClassNames
295
318
  }, /*#__PURE__*/React.createElement("label", {
@@ -316,7 +339,8 @@ var _FileUploader = forwardRefAndName('FileUploader', function (props, ref) {
316
339
  className: jsStyles.singleFile()
317
340
  }, renderFile(files[0], /*#__PURE__*/React.createElement(FileUploaderFile, {
318
341
  file: files[0],
319
- size: size
342
+ size: size,
343
+ onRemove: handleRemoveFile
320
344
  }))) : /*#__PURE__*/React.createElement(React.Fragment, null, locale.orDragHere, "\xA0", /*#__PURE__*/React.createElement("div", {
321
345
  className: uploadButtonIconClassNames
322
346
  }, icon)))), /*#__PURE__*/React.createElement(FocusControlWrapper, {
@@ -334,9 +358,7 @@ var _FileUploader = forwardRefAndName('FileUploader', function (props, ref) {
334
358
  onClick: stopPropagation,
335
359
  onChange: handleInputChange,
336
360
  onFocus: handleFocus,
337
- onBlur: handleBlur // для того, чтобы срабатывало событие change при выборе одного и того же файла подряд
338
- ,
339
- value: ''
361
+ onBlur: handleBlur
340
362
  })))))));
341
363
  });
342
364