@skbkontur/react-ui 4.0.3 → 4.0.4

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 (102) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/cjs/components/Button/Button.d.ts +2 -2
  3. package/cjs/components/Button/Button.js.map +1 -1
  4. package/cjs/components/Checkbox/Checkbox.d.ts +2 -2
  5. package/cjs/components/Checkbox/Checkbox.js.map +1 -1
  6. package/cjs/components/ComboBox/ComboBox.d.ts +3 -3
  7. package/cjs/components/ComboBox/ComboBox.js.map +1 -1
  8. package/cjs/components/CurrencyInput/CurrencyInput.d.ts +1 -1
  9. package/cjs/components/CurrencyInput/CurrencyInput.js +3 -3
  10. package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
  11. package/cjs/components/DateInput/DateInput.d.ts +2 -2
  12. package/cjs/components/DateInput/DateInput.js.map +1 -1
  13. package/cjs/components/DatePicker/DatePicker.d.ts +2 -2
  14. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  15. package/cjs/components/Dropdown/Dropdown.d.ts +2 -2
  16. package/cjs/components/Dropdown/Dropdown.js.map +1 -1
  17. package/cjs/components/Hint/Hint.d.ts +1 -1
  18. package/cjs/components/Hint/Hint.js.map +1 -1
  19. package/cjs/components/Input/Input.d.ts +3 -3
  20. package/cjs/components/Input/Input.js +1 -1
  21. package/cjs/components/Input/Input.js.map +1 -1
  22. package/cjs/components/Modal/Modal.d.ts +1 -1
  23. package/cjs/components/Modal/Modal.js +1 -1
  24. package/cjs/components/Modal/Modal.js.map +1 -1
  25. package/cjs/components/Radio/Radio.d.ts +2 -2
  26. package/cjs/components/Radio/Radio.js.map +1 -1
  27. package/cjs/components/RadioGroup/RadioGroup.d.ts +1 -1
  28. package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
  29. package/cjs/components/Select/Select.d.ts +3 -3
  30. package/cjs/components/Select/Select.js.map +1 -1
  31. package/cjs/components/Tabs/Tab.d.ts +2 -2
  32. package/cjs/components/Tabs/Tab.js.map +1 -1
  33. package/cjs/components/Textarea/Textarea.d.ts +4 -4
  34. package/cjs/components/Textarea/Textarea.js.map +1 -1
  35. package/cjs/components/Toggle/Toggle.d.ts +2 -2
  36. package/cjs/components/Toggle/Toggle.js.map +1 -1
  37. package/cjs/components/Token/Token.d.ts +2 -2
  38. package/cjs/components/Token/Token.js.map +1 -1
  39. package/cjs/components/TokenInput/TokenInput.d.ts +2 -2
  40. package/cjs/components/TokenInput/TokenInput.js +1 -1
  41. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  42. package/cjs/internal/Popup/Popup.js +1 -1
  43. package/cjs/internal/Popup/Popup.js.map +1 -1
  44. package/cjs/internal/ThemePlayground/ThemeContextPlayground.js +3 -12
  45. package/cjs/internal/ThemePlayground/ThemeContextPlayground.js.map +1 -1
  46. package/cjs/lib/theming/ThemeFactory.d.ts +1 -1
  47. package/cjs/lib/theming/ThemeFactory.js +4 -3
  48. package/cjs/lib/theming/ThemeFactory.js.map +1 -1
  49. package/cjs/lib/theming/ThemeHelpers.d.ts +1 -0
  50. package/cjs/lib/theming/ThemeHelpers.js +11 -2
  51. package/cjs/lib/theming/ThemeHelpers.js.map +1 -1
  52. package/components/Button/Button/Button.js.map +1 -1
  53. package/components/Button/Button.d.ts +2 -2
  54. package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
  55. package/components/Checkbox/Checkbox.d.ts +2 -2
  56. package/components/ComboBox/ComboBox/ComboBox.js.map +1 -1
  57. package/components/ComboBox/ComboBox.d.ts +3 -3
  58. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +3 -3
  59. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
  60. package/components/CurrencyInput/CurrencyInput.d.ts +1 -1
  61. package/components/DateInput/DateInput/DateInput.js.map +1 -1
  62. package/components/DateInput/DateInput.d.ts +2 -2
  63. package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
  64. package/components/DatePicker/DatePicker.d.ts +2 -2
  65. package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
  66. package/components/Dropdown/Dropdown.d.ts +2 -2
  67. package/components/Hint/Hint/Hint.js.map +1 -1
  68. package/components/Hint/Hint.d.ts +1 -1
  69. package/components/Input/Input/Input.js +1 -1
  70. package/components/Input/Input/Input.js.map +1 -1
  71. package/components/Input/Input.d.ts +3 -3
  72. package/components/Modal/Modal/Modal.js +1 -1
  73. package/components/Modal/Modal/Modal.js.map +1 -1
  74. package/components/Modal/Modal.d.ts +1 -1
  75. package/components/Radio/Radio/Radio.js.map +1 -1
  76. package/components/Radio/Radio.d.ts +2 -2
  77. package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
  78. package/components/RadioGroup/RadioGroup.d.ts +1 -1
  79. package/components/Select/Select/Select.js.map +1 -1
  80. package/components/Select/Select.d.ts +3 -3
  81. package/components/Tabs/Tab/Tab.js.map +1 -1
  82. package/components/Tabs/Tab.d.ts +2 -2
  83. package/components/Textarea/Textarea/Textarea.js.map +1 -1
  84. package/components/Textarea/Textarea.d.ts +4 -4
  85. package/components/Toggle/Toggle/Toggle.js.map +1 -1
  86. package/components/Toggle/Toggle.d.ts +2 -2
  87. package/components/Token/Token/Token.js.map +1 -1
  88. package/components/Token/Token.d.ts +2 -2
  89. package/components/TokenInput/TokenInput/TokenInput.js +1 -1
  90. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  91. package/components/TokenInput/TokenInput.d.ts +2 -2
  92. package/internal/Popup/Popup/Popup.js +1 -1
  93. package/internal/Popup/Popup/Popup.js.map +1 -1
  94. package/internal/ThemePlayground/ThemeContextPlayground/ThemeContextPlayground.js +2 -11
  95. package/internal/ThemePlayground/ThemeContextPlayground/ThemeContextPlayground.js.map +1 -1
  96. package/lib/theming/ThemeFactory/ThemeFactory.js +3 -2
  97. package/lib/theming/ThemeFactory/ThemeFactory.js.map +1 -1
  98. package/lib/theming/ThemeFactory.d.ts +1 -1
  99. package/lib/theming/ThemeHelpers/ThemeHelpers.js +10 -1
  100. package/lib/theming/ThemeHelpers/ThemeHelpers.js.map +1 -1
  101. package/lib/theming/ThemeHelpers.d.ts +1 -0
  102. package/package.json +2 -2
@@ -13,6 +13,7 @@ var _ComboBox = require("../../components/ComboBox");
13
13
  var _Link = require("../../components/Link");
14
14
  var ColorFunctions = _interopRequireWildcard(require("../../lib/styles/ColorFunctions"));
15
15
 
16
+ var _ThemeHelpers = require("../../lib/theming/ThemeHelpers");
16
17
 
17
18
  var _ThemeEditor = require("./ThemeEditor");
18
19
  var _Playground = require("./Playground.styles");
@@ -200,7 +201,7 @@ ThemeContextPlayground = /*#__PURE__*/function (_React$Component) {(0, _inherits
200
201
  changeThemeVariable = function (theme, variableName, variableValue) {
201
202
  var result = {};
202
203
  _ThemeFactory.ThemeFactory.getKeys(theme).forEach(function (key) {
203
- var descriptor = findPropertyDescriptor(theme, key);
204
+ var descriptor = (0, _ThemeHelpers.findPropertyDescriptor)(theme, key);
204
205
  descriptor.enumerable = true;
205
206
  descriptor.configurable = true;
206
207
  if (key === variableName) {
@@ -212,14 +213,4 @@ ThemeContextPlayground = /*#__PURE__*/function (_React$Component) {(0, _inherits
212
213
  });
213
214
 
214
215
  return _ThemeFactory.ThemeFactory.create(result);
215
- };_this.state = { currentTheme: _DefaultTheme.DEFAULT_THEME, currentThemeType: _constants.ThemeType.Default, editorOpened: false, themes: { default: _DefaultTheme.DEFAULT_THEME, defaultOld: _DefaultTheme8pxOld.DEFAULT_THEME_8PX_OLD, dark: _DarkTheme.DARK_THEME, flatOld: _FlatTheme8pxOld.FLAT_THEME_8PX_OLD }, themesErrors: { default: {}, defaultOld: {}, dark: {}, flatOld: {} } };return _this;}var _proto = ThemeContextPlayground.prototype;_proto.render = function render() {var _this$state3 = this.state,currentTheme = _this$state3.currentTheme,editorOpened = _this$state3.editorOpened,currentThemeType = _this$state3.currentThemeType;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Provider, { value: currentTheme }, editorOpened && this.renderSidePage(), /*#__PURE__*/_react.default.createElement(_Playground2.Playground, { onThemeChange: this.handleThemeChange, currentThemeType: currentThemeType, onEditLinkClick: this.handleOpen }));};return ThemeContextPlayground;}(_react.default.Component);exports.ThemeContextPlayground = ThemeContextPlayground;
216
-
217
-
218
- function findPropertyDescriptor(theme, propName) {
219
- for (; theme != null; theme = Object.getPrototypeOf(theme)) {
220
- if (Object.prototype.hasOwnProperty.call(theme, propName)) {
221
- return Object.getOwnPropertyDescriptor(theme, propName) || {};
222
- }
223
- }
224
- return {};
225
- }
216
+ };_this.state = { currentTheme: _DefaultTheme.DEFAULT_THEME, currentThemeType: _constants.ThemeType.Default, editorOpened: false, themes: { default: _DefaultTheme.DEFAULT_THEME, defaultOld: _DefaultTheme8pxOld.DEFAULT_THEME_8PX_OLD, dark: _DarkTheme.DARK_THEME, flatOld: _FlatTheme8pxOld.FLAT_THEME_8PX_OLD }, themesErrors: { default: {}, defaultOld: {}, dark: {}, flatOld: {} } };return _this;}var _proto = ThemeContextPlayground.prototype;_proto.render = function render() {var _this$state3 = this.state,currentTheme = _this$state3.currentTheme,editorOpened = _this$state3.editorOpened,currentThemeType = _this$state3.currentThemeType;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Provider, { value: currentTheme }, editorOpened && this.renderSidePage(), /*#__PURE__*/_react.default.createElement(_Playground2.Playground, { onThemeChange: this.handleThemeChange, currentThemeType: currentThemeType, onEditLinkClick: this.handleOpen }));};return ThemeContextPlayground;}(_react.default.Component);exports.ThemeContextPlayground = ThemeContextPlayground;
@@ -1 +1 @@
1
- {"version":3,"sources":["ThemeContextPlayground.tsx"],"names":["ThemeContextPlayground","props","editableThemesItems","value","ThemeType","Default","label","Dark","DefaultOld","FlatOld","renderSidePage","state","currentTheme","themesErrors","editingThemeItem","themes","themeErrors","handleClose","styles","editorHeaderWrapper","getEditableThemesItems","handleEditingThemeSwitch","fontSize","marginTop","handelGetTheme","sidePageBody","handleThemeVariableChange","themeObject","ThemeFactory","getKeys","forEach","key","descriptor","Object","getOwnPropertyDescriptor","get","DEFAULT_THEME","console","log","JSON","stringify","handleOpen","setState","editorOpened","find","i","currentThemeType","handleThemeChange","themeType","variable","editingThemeType","theme","currentValue","canSetVariable","ColorFunctions","isValid","nextThemeErrors","stateUpdate","result","changeThemeVariable","query","Promise","resolve","filter","toLowerCase","includes","item","variableName","variableValue","findPropertyDescriptor","enumerable","configurable","set","defineProperty","create","default","defaultOld","DEFAULT_THEME_8PX_OLD","dark","DARK_THEME","flatOld","FLAT_THEME_8PX_OLD","render","React","Component","propName","getPrototypeOf","prototype","hasOwnProperty","call"],"mappings":"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","sourcesContent":["import React, { ReactNode } from 'react';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme, ThemeIn } from '../../lib/theming/Theme';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { FLAT_THEME_8PX_OLD } from '../../lib/theming/themes/FlatTheme8pxOld';\nimport { DEFAULT_THEME_8PX_OLD } from '../../lib/theming/themes/DefaultTheme8pxOld';\nimport { DEFAULT_THEME } from '../../lib/theming/themes/DefaultTheme';\nimport { DARK_THEME } from '../../lib/theming/themes/DarkTheme';\nimport { SidePage } from '../../components/SidePage';\nimport { Gapped } from '../../components/Gapped';\nimport { ComboBox } from '../../components/ComboBox';\nimport { Link } from '../../components/Link';\nimport * as ColorFunctions from '../../lib/styles/ColorFunctions';\nimport { Writeable } from '../../typings/utility-types';\n\nimport { ThemeEditor } from './ThemeEditor';\nimport { styles } from './Playground.styles';\nimport { Playground } from './Playground';\nimport { ThemeType } from './constants';\n\ninterface PlaygroundState {\n editorOpened: boolean;\n editingThemeItem?: EditingThemeItem;\n themes: Themes;\n themesErrors: ThemesErrors;\n currentTheme: Theme;\n currentThemeType: ThemeType;\n}\ninterface Themes {\n default: Theme;\n dark: Theme;\n defaultOld: Theme;\n flatOld: Theme;\n}\ninterface ThemesErrors {\n default: ThemeErrorsType;\n dark: ThemeErrorsType;\n defaultOld: ThemeErrorsType;\n flatOld: ThemeErrorsType;\n}\ninterface EditingThemeItem {\n value: ThemeType;\n label: string;\n}\ninterface PlaygroundProps {\n children?: ReactNode;\n}\nexport type ThemeErrorsType = Writeable<{ [key in keyof Theme]?: boolean }>;\n\nexport class ThemeContextPlayground extends React.Component<PlaygroundProps, PlaygroundState> {\n private readonly editableThemesItems = [\n { value: ThemeType.Default, label: 'Дефолтная' },\n { value: ThemeType.Dark, label: 'Темная' },\n { value: ThemeType.DefaultOld, label: 'Старая дефолтная' },\n { value: ThemeType.FlatOld, label: 'Старая плоская' },\n ];\n\n constructor(props: PlaygroundProps) {\n super(props);\n this.state = {\n currentTheme: DEFAULT_THEME,\n currentThemeType: ThemeType.Default,\n editorOpened: false,\n themes: {\n default: DEFAULT_THEME,\n defaultOld: DEFAULT_THEME_8PX_OLD,\n dark: DARK_THEME,\n flatOld: FLAT_THEME_8PX_OLD,\n },\n themesErrors: {\n default: {},\n defaultOld: {},\n dark: {},\n flatOld: {},\n },\n };\n }\n\n public render() {\n const { currentTheme, editorOpened, currentThemeType } = this.state;\n return (\n <ThemeContext.Provider value={currentTheme}>\n {editorOpened && this.renderSidePage()}\n {\n <Playground\n onThemeChange={this.handleThemeChange}\n currentThemeType={currentThemeType}\n onEditLinkClick={this.handleOpen}\n />\n }\n </ThemeContext.Provider>\n );\n }\n\n private renderSidePage = () => {\n const { currentTheme, themesErrors, editingThemeItem, themes } = this.state;\n const themeErrors = themesErrors[editingThemeItem ? editingThemeItem.value : 'default'];\n return (\n <SidePage disableAnimations ignoreBackgroundClick blockBackground width={600} onClose={this.handleClose}>\n <SidePage.Header>\n <div className={styles.editorHeaderWrapper(currentTheme)}>\n <Gapped wrap verticalAlign=\"middle\">\n <span>Тема для редактирования:</span>\n <ComboBox\n getItems={this.getEditableThemesItems}\n value={editingThemeItem}\n onValueChange={this.handleEditingThemeSwitch}\n />\n </Gapped>\n </div>\n <div style={{ fontSize: 14, marginTop: 8 }}>\n <Link onClick={this.handelGetTheme}>Вывести тему в консоль</Link>\n </div>\n </SidePage.Header>\n <SidePage.Body>\n <div className={styles.sidePageBody()}>\n <ThemeEditor\n editingTheme={themes[editingThemeItem!.value]}\n currentTheme={currentTheme}\n currentErrors={themeErrors}\n onValueChange={this.handleThemeVariableChange}\n />\n </div>\n </SidePage.Body>\n </SidePage>\n );\n };\n\n private handelGetTheme = () => {\n const currentTheme = this.state.currentTheme;\n const themeObject: Writeable<ThemeIn> = {};\n ThemeFactory.getKeys(currentTheme).forEach((key) => {\n const descriptor = Object.getOwnPropertyDescriptor(currentTheme, key);\n if (descriptor && !descriptor.get && DEFAULT_THEME[key] && currentTheme[key] !== DEFAULT_THEME[key]) {\n themeObject[key] = currentTheme[key] as keyof Theme;\n }\n });\n\n console.log(JSON.stringify(themeObject));\n };\n\n private handleOpen = () => {\n this.setState((state) => ({\n editorOpened: true,\n editingThemeItem: this.editableThemesItems.find((i) => i.value === state.currentThemeType),\n }));\n };\n\n private handleClose = () => {\n this.setState({\n editorOpened: false,\n });\n };\n\n private handleThemeChange = (value: string) => {\n const themeType = value as ThemeType;\n this.setState({\n currentThemeType: themeType,\n currentTheme: this.state.themes[themeType],\n });\n };\n\n private handleThemeVariableChange = (variable: keyof Theme, value: string) => {\n const { editingThemeItem, currentTheme, themes, themesErrors } = this.state;\n const editingThemeType = editingThemeItem!.value;\n\n const theme = themes[editingThemeType];\n const currentValue = theme[variable] as string;\n\n let canSetVariable = true;\n if (ColorFunctions.isValid(currentValue)) {\n canSetVariable = ColorFunctions.isValid(value);\n themesErrors[editingThemeType][variable] = !canSetVariable;\n }\n\n const nextThemeErrors: ThemesErrors = { ...themesErrors };\n nextThemeErrors[editingThemeType][variable] = !canSetVariable;\n const stateUpdate = { themes, currentTheme, themesErrors: nextThemeErrors };\n\n if (canSetVariable) {\n const result = this.changeThemeVariable(theme, variable, value);\n stateUpdate.themes[editingThemeType] = result;\n if (this.state.currentThemeType === editingThemeType) {\n stateUpdate.currentTheme = result;\n }\n }\n\n this.setState(stateUpdate);\n };\n\n private getEditableThemesItems = (query: string) => {\n return Promise.resolve(this.editableThemesItems.filter((i) => i.label.toLowerCase().includes(query.toLowerCase())));\n };\n\n private handleEditingThemeSwitch = (item: EditingThemeItem) => {\n this.setState({ editingThemeItem: item });\n };\n\n private changeThemeVariable = (theme: Theme, variableName: keyof Theme, variableValue: string): Theme => {\n const result: ThemeIn = {};\n ThemeFactory.getKeys(theme).forEach((key) => {\n const descriptor = findPropertyDescriptor(theme, key);\n descriptor.enumerable = true;\n descriptor.configurable = true;\n if (key === variableName) {\n delete descriptor.get;\n delete descriptor.set;\n descriptor.value = variableValue;\n }\n Object.defineProperty(result, key, descriptor);\n });\n\n return ThemeFactory.create<ThemeIn>(result);\n };\n}\n\nfunction findPropertyDescriptor(theme: Theme, propName: keyof Theme) {\n for (; theme != null; theme = Object.getPrototypeOf(theme)) {\n if (Object.prototype.hasOwnProperty.call(theme, propName)) {\n return Object.getOwnPropertyDescriptor(theme, propName) || {};\n }\n }\n return {};\n}\n"]}
1
+ {"version":3,"sources":["ThemeContextPlayground.tsx"],"names":["ThemeContextPlayground","props","editableThemesItems","value","ThemeType","Default","label","Dark","DefaultOld","FlatOld","renderSidePage","state","currentTheme","themesErrors","editingThemeItem","themes","themeErrors","handleClose","styles","editorHeaderWrapper","getEditableThemesItems","handleEditingThemeSwitch","fontSize","marginTop","handelGetTheme","sidePageBody","handleThemeVariableChange","themeObject","ThemeFactory","getKeys","forEach","key","descriptor","Object","getOwnPropertyDescriptor","get","DEFAULT_THEME","console","log","JSON","stringify","handleOpen","setState","editorOpened","find","i","currentThemeType","handleThemeChange","themeType","variable","editingThemeType","theme","currentValue","canSetVariable","ColorFunctions","isValid","nextThemeErrors","stateUpdate","result","changeThemeVariable","query","Promise","resolve","filter","toLowerCase","includes","item","variableName","variableValue","enumerable","configurable","set","defineProperty","create","default","defaultOld","DEFAULT_THEME_8PX_OLD","dark","DARK_THEME","flatOld","FLAT_THEME_8PX_OLD","render","React","Component"],"mappings":"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","sourcesContent":["import React, { ReactNode } from 'react';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme, ThemeIn } from '../../lib/theming/Theme';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { FLAT_THEME_8PX_OLD } from '../../lib/theming/themes/FlatTheme8pxOld';\nimport { DEFAULT_THEME_8PX_OLD } from '../../lib/theming/themes/DefaultTheme8pxOld';\nimport { DEFAULT_THEME } from '../../lib/theming/themes/DefaultTheme';\nimport { DARK_THEME } from '../../lib/theming/themes/DarkTheme';\nimport { SidePage } from '../../components/SidePage';\nimport { Gapped } from '../../components/Gapped';\nimport { ComboBox } from '../../components/ComboBox';\nimport { Link } from '../../components/Link';\nimport * as ColorFunctions from '../../lib/styles/ColorFunctions';\nimport { Writeable } from '../../typings/utility-types';\nimport { findPropertyDescriptor } from '../../lib/theming/ThemeHelpers';\n\nimport { ThemeEditor } from './ThemeEditor';\nimport { styles } from './Playground.styles';\nimport { Playground } from './Playground';\nimport { ThemeType } from './constants';\n\ninterface PlaygroundState {\n editorOpened: boolean;\n editingThemeItem?: EditingThemeItem;\n themes: Themes;\n themesErrors: ThemesErrors;\n currentTheme: Theme;\n currentThemeType: ThemeType;\n}\ninterface Themes {\n default: Theme;\n dark: Theme;\n defaultOld: Theme;\n flatOld: Theme;\n}\ninterface ThemesErrors {\n default: ThemeErrorsType;\n dark: ThemeErrorsType;\n defaultOld: ThemeErrorsType;\n flatOld: ThemeErrorsType;\n}\ninterface EditingThemeItem {\n value: ThemeType;\n label: string;\n}\ninterface PlaygroundProps {\n children?: ReactNode;\n}\nexport type ThemeErrorsType = Writeable<{ [key in keyof Theme]?: boolean }>;\n\nexport class ThemeContextPlayground extends React.Component<PlaygroundProps, PlaygroundState> {\n private readonly editableThemesItems = [\n { value: ThemeType.Default, label: 'Дефолтная' },\n { value: ThemeType.Dark, label: 'Темная' },\n { value: ThemeType.DefaultOld, label: 'Старая дефолтная' },\n { value: ThemeType.FlatOld, label: 'Старая плоская' },\n ];\n\n constructor(props: PlaygroundProps) {\n super(props);\n this.state = {\n currentTheme: DEFAULT_THEME,\n currentThemeType: ThemeType.Default,\n editorOpened: false,\n themes: {\n default: DEFAULT_THEME,\n defaultOld: DEFAULT_THEME_8PX_OLD,\n dark: DARK_THEME,\n flatOld: FLAT_THEME_8PX_OLD,\n },\n themesErrors: {\n default: {},\n defaultOld: {},\n dark: {},\n flatOld: {},\n },\n };\n }\n\n public render() {\n const { currentTheme, editorOpened, currentThemeType } = this.state;\n return (\n <ThemeContext.Provider value={currentTheme}>\n {editorOpened && this.renderSidePage()}\n {\n <Playground\n onThemeChange={this.handleThemeChange}\n currentThemeType={currentThemeType}\n onEditLinkClick={this.handleOpen}\n />\n }\n </ThemeContext.Provider>\n );\n }\n\n private renderSidePage = () => {\n const { currentTheme, themesErrors, editingThemeItem, themes } = this.state;\n const themeErrors = themesErrors[editingThemeItem ? editingThemeItem.value : 'default'];\n return (\n <SidePage disableAnimations ignoreBackgroundClick blockBackground width={600} onClose={this.handleClose}>\n <SidePage.Header>\n <div className={styles.editorHeaderWrapper(currentTheme)}>\n <Gapped wrap verticalAlign=\"middle\">\n <span>Тема для редактирования:</span>\n <ComboBox\n getItems={this.getEditableThemesItems}\n value={editingThemeItem}\n onValueChange={this.handleEditingThemeSwitch}\n />\n </Gapped>\n </div>\n <div style={{ fontSize: 14, marginTop: 8 }}>\n <Link onClick={this.handelGetTheme}>Вывести тему в консоль</Link>\n </div>\n </SidePage.Header>\n <SidePage.Body>\n <div className={styles.sidePageBody()}>\n <ThemeEditor\n editingTheme={themes[editingThemeItem!.value]}\n currentTheme={currentTheme}\n currentErrors={themeErrors}\n onValueChange={this.handleThemeVariableChange}\n />\n </div>\n </SidePage.Body>\n </SidePage>\n );\n };\n\n private handelGetTheme = () => {\n const currentTheme = this.state.currentTheme;\n const themeObject: Writeable<ThemeIn> = {};\n ThemeFactory.getKeys(currentTheme).forEach((key) => {\n const descriptor = Object.getOwnPropertyDescriptor(currentTheme, key);\n if (descriptor && !descriptor.get && DEFAULT_THEME[key] && currentTheme[key] !== DEFAULT_THEME[key]) {\n themeObject[key] = currentTheme[key] as keyof Theme;\n }\n });\n\n console.log(JSON.stringify(themeObject));\n };\n\n private handleOpen = () => {\n this.setState((state) => ({\n editorOpened: true,\n editingThemeItem: this.editableThemesItems.find((i) => i.value === state.currentThemeType),\n }));\n };\n\n private handleClose = () => {\n this.setState({\n editorOpened: false,\n });\n };\n\n private handleThemeChange = (value: string) => {\n const themeType = value as ThemeType;\n this.setState({\n currentThemeType: themeType,\n currentTheme: this.state.themes[themeType],\n });\n };\n\n private handleThemeVariableChange = (variable: keyof Theme, value: string) => {\n const { editingThemeItem, currentTheme, themes, themesErrors } = this.state;\n const editingThemeType = editingThemeItem!.value;\n\n const theme = themes[editingThemeType];\n const currentValue = theme[variable] as string;\n\n let canSetVariable = true;\n if (ColorFunctions.isValid(currentValue)) {\n canSetVariable = ColorFunctions.isValid(value);\n themesErrors[editingThemeType][variable] = !canSetVariable;\n }\n\n const nextThemeErrors: ThemesErrors = { ...themesErrors };\n nextThemeErrors[editingThemeType][variable] = !canSetVariable;\n const stateUpdate = { themes, currentTheme, themesErrors: nextThemeErrors };\n\n if (canSetVariable) {\n const result = this.changeThemeVariable(theme, variable, value);\n stateUpdate.themes[editingThemeType] = result;\n if (this.state.currentThemeType === editingThemeType) {\n stateUpdate.currentTheme = result;\n }\n }\n\n this.setState(stateUpdate);\n };\n\n private getEditableThemesItems = (query: string) => {\n return Promise.resolve(this.editableThemesItems.filter((i) => i.label.toLowerCase().includes(query.toLowerCase())));\n };\n\n private handleEditingThemeSwitch = (item: EditingThemeItem) => {\n this.setState({ editingThemeItem: item });\n };\n\n private changeThemeVariable = (theme: Theme, variableName: keyof Theme, variableValue: string): Theme => {\n const result: ThemeIn = {};\n ThemeFactory.getKeys(theme).forEach((key) => {\n const descriptor = findPropertyDescriptor(theme, key);\n descriptor.enumerable = true;\n descriptor.configurable = true;\n if (key === variableName) {\n delete descriptor.get;\n delete descriptor.set;\n descriptor.value = variableValue;\n }\n Object.defineProperty(result, key, descriptor);\n });\n\n return ThemeFactory.create<ThemeIn>(result);\n };\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import { Theme, ThemeIn } from './Theme';
2
2
  export declare class ThemeFactory {
3
3
  static create<T extends {}>(theme: ThemeIn & T, baseTheme?: Theme): Readonly<Theme & T>;
4
- static overrideDefaultTheme(theme: ThemeIn): void;
4
+ static overrideDefaultTheme(theme: Theme): void;
5
5
  static getKeys<T extends Theme>(theme: T): (keyof T)[];
6
6
  private static constructTheme;
7
7
  }
@@ -1,6 +1,7 @@
1
- "use strict";exports.__esModule = true;exports.ThemeFactory = void 0;var _DefaultTheme = require("../../internal/themes/DefaultTheme");var
1
+ "use strict";exports.__esModule = true;exports.ThemeFactory = void 0;var _DefaultTheme = require("../../internal/themes/DefaultTheme");
2
2
 
3
3
 
4
+ var _ThemeHelpers = require("./ThemeHelpers");var
4
5
 
5
6
  ThemeFactory = /*#__PURE__*/function () {function ThemeFactory() {}ThemeFactory.
6
7
  create = function create(theme, baseTheme) {
@@ -9,8 +10,8 @@ ThemeFactory = /*#__PURE__*/function () {function ThemeFactory() {}ThemeFactory.
9
10
  };ThemeFactory.
10
11
 
11
12
  overrideDefaultTheme = function overrideDefaultTheme(theme) {
12
- Object.keys(theme).forEach(function (variableName) {
13
- var descriptor = Object.getOwnPropertyDescriptor(theme, variableName);
13
+ ThemeFactory.getKeys(_DefaultTheme.DefaultThemeInternal).forEach(function (variableName) {
14
+ var descriptor = (0, _ThemeHelpers.findPropertyDescriptor)(theme, variableName);
14
15
  Object.defineProperty(_DefaultTheme.DefaultThemeInternal, variableName, descriptor);
15
16
  });
16
17
  };ThemeFactory.
@@ -1 +1 @@
1
- {"version":3,"sources":["ThemeFactory.ts"],"names":["ThemeFactory","create","theme","baseTheme","base","DefaultThemeInternal","constructTheme","overrideDefaultTheme","Object","keys","forEach","variableName","descriptor","getOwnPropertyDescriptor","defineProperty","getKeys","key","includes","push","getPrototypeOf","sort","newTheme","propName","freeze"],"mappings":"qEAAA,kE;;;;AAIaA,Y;AACGC,EAAAA,M,GAAd,gBAAmCC,KAAnC,EAAuDC,SAAvD,EAA+F;AAC7F,QAAMC,IAAI,GAAGD,SAAS,IAAIE,kCAA1B;AACA,WAAO,KAAKC,cAAL,CAAoBF,IAApB,EAA0BF,KAA1B,CAAP;AACD,G;;AAEaK,EAAAA,oB,GAAd,8BAAmCL,KAAnC,EAAmD;AACjDM,IAAAA,MAAM,CAACC,IAAP,CAAYP,KAAZ,EAAmBQ,OAAnB,CAA2B,UAACC,YAAD,EAAkB;AAC3C,UAAMC,UAAU,GAAGJ,MAAM,CAACK,wBAAP,CAAgCX,KAAhC,EAAuCS,YAAvC,CAAnB;AACAH,MAAAA,MAAM,CAACM,cAAP,CAAsBT,kCAAtB,EAA4CM,YAA5C,EAA0DC,UAA1D;AACD,KAHD;AAID,G;;AAEaG,EAAAA,O,GAAd,iBAAuCb,KAAvC,EAAiD;AAC/C,QAAMO,IAAoB,GAAG,EAA7B;AACA,WAAOP,KAAK,IAAI,IAAhB,EAAsB;AACnBM,MAAAA,MAAM,CAACC,IAAP,CAAYP,KAAZ,CAAD,CAAuCQ,OAAvC,CAA+C,UAACM,GAAD,EAAS;AACtD,YAAI,CAACP,IAAI,CAACQ,QAAL,CAAcD,GAAd,CAAL,EAAyB;AACvBP,UAAAA,IAAI,CAACS,IAAL,CAAUF,GAAV;AACD;AACF,OAJD;AAKAd,MAAAA,KAAK,GAAGM,MAAM,CAACW,cAAP,CAAsBjB,KAAtB,CAAR;AACD;AACD,WAAOO,IAAI,CAACW,IAAL,EAAP;AACD,G;;AAEcd,EAAAA,c,GAAf,wBAA8BF,IAA9B,EAA2CF,KAA3C,EAA2D;AACzD,QAAMmB,QAAQ,GAAGb,MAAM,CAACP,MAAP,CAAcG,IAAd,CAAjB;AACAI,IAAAA,MAAM,CAACC,IAAP,CAAYP,KAAZ,EAAmBQ,OAAnB,CAA2B,UAACY,QAAD,EAAc;AACvC,UAAMV,UAAU,GAAGJ,MAAM,CAACK,wBAAP,CAAgCX,KAAhC,EAAuCoB,QAAvC,CAAnB;AACAd,MAAAA,MAAM,CAACM,cAAP,CAAsBO,QAAtB,EAAgCC,QAAhC,EAA0CV,UAA1C;AACD,KAHD;;AAKA,WAAOJ,MAAM,CAACe,MAAP,CAAcF,QAAd,CAAP;AACD,G","sourcesContent":["import { DefaultThemeInternal } from '../../internal/themes/DefaultTheme';\n\nimport { Theme, ThemeIn } from './Theme';\n\nexport class ThemeFactory {\n public static create<T extends {}>(theme: ThemeIn & T, baseTheme?: Theme): Readonly<Theme & T> {\n const base = baseTheme || DefaultThemeInternal;\n return this.constructTheme(base, theme);\n }\n\n public static overrideDefaultTheme(theme: ThemeIn) {\n Object.keys(theme).forEach((variableName) => {\n const descriptor = Object.getOwnPropertyDescriptor(theme, variableName)!;\n Object.defineProperty(DefaultThemeInternal, variableName, descriptor);\n });\n }\n\n public static getKeys<T extends Theme>(theme: T) {\n const keys: Array<keyof T> = [];\n while (theme != null) {\n (Object.keys(theme) as Array<keyof T>).forEach((key) => {\n if (!keys.includes(key)) {\n keys.push(key);\n }\n });\n theme = Object.getPrototypeOf(theme);\n }\n return keys.sort();\n }\n\n private static constructTheme(base: Theme, theme: ThemeIn) {\n const newTheme = Object.create(base);\n Object.keys(theme).forEach((propName) => {\n const descriptor = Object.getOwnPropertyDescriptor(theme, propName)!;\n Object.defineProperty(newTheme, propName, descriptor);\n });\n\n return Object.freeze(newTheme);\n }\n}\n"]}
1
+ {"version":3,"sources":["ThemeFactory.ts"],"names":["ThemeFactory","create","theme","baseTheme","base","DefaultThemeInternal","constructTheme","overrideDefaultTheme","getKeys","forEach","variableName","descriptor","Object","defineProperty","keys","key","includes","push","getPrototypeOf","sort","newTheme","propName","getOwnPropertyDescriptor","freeze"],"mappings":"qEAAA;;;AAGA,8C;;AAEaA,Y;AACGC,EAAAA,M,GAAd,gBAAmCC,KAAnC,EAAuDC,SAAvD,EAA+F;AAC7F,QAAMC,IAAI,GAAGD,SAAS,IAAIE,kCAA1B;AACA,WAAO,KAAKC,cAAL,CAAoBF,IAApB,EAA0BF,KAA1B,CAAP;AACD,G;;AAEaK,EAAAA,oB,GAAd,8BAAmCL,KAAnC,EAAiD;AAC/CF,IAAAA,YAAY,CAACQ,OAAb,CAAqBH,kCAArB,EAA2CI,OAA3C,CAAmD,UAACC,YAAD,EAAkB;AACnE,UAAMC,UAAU,GAAG,0CAAuBT,KAAvB,EAA8BQ,YAA9B,CAAnB;AACAE,MAAAA,MAAM,CAACC,cAAP,CAAsBR,kCAAtB,EAA4CK,YAA5C,EAA0DC,UAA1D;AACD,KAHD;AAID,G;;AAEaH,EAAAA,O,GAAd,iBAAuCN,KAAvC,EAAiD;AAC/C,QAAMY,IAAoB,GAAG,EAA7B;AACA,WAAOZ,KAAK,IAAI,IAAhB,EAAsB;AACnBU,MAAAA,MAAM,CAACE,IAAP,CAAYZ,KAAZ,CAAD,CAAuCO,OAAvC,CAA+C,UAACM,GAAD,EAAS;AACtD,YAAI,CAACD,IAAI,CAACE,QAAL,CAAcD,GAAd,CAAL,EAAyB;AACvBD,UAAAA,IAAI,CAACG,IAAL,CAAUF,GAAV;AACD;AACF,OAJD;AAKAb,MAAAA,KAAK,GAAGU,MAAM,CAACM,cAAP,CAAsBhB,KAAtB,CAAR;AACD;AACD,WAAOY,IAAI,CAACK,IAAL,EAAP;AACD,G;;AAEcb,EAAAA,c,GAAf,wBAA8BF,IAA9B,EAA2CF,KAA3C,EAA2D;AACzD,QAAMkB,QAAQ,GAAGR,MAAM,CAACX,MAAP,CAAcG,IAAd,CAAjB;AACAQ,IAAAA,MAAM,CAACE,IAAP,CAAYZ,KAAZ,EAAmBO,OAAnB,CAA2B,UAACY,QAAD,EAAc;AACvC,UAAMV,UAAU,GAAGC,MAAM,CAACU,wBAAP,CAAgCpB,KAAhC,EAAuCmB,QAAvC,CAAnB;AACAT,MAAAA,MAAM,CAACC,cAAP,CAAsBO,QAAtB,EAAgCC,QAAhC,EAA0CV,UAA1C;AACD,KAHD;;AAKA,WAAOC,MAAM,CAACW,MAAP,CAAcH,QAAd,CAAP;AACD,G","sourcesContent":["import { DefaultThemeInternal } from '../../internal/themes/DefaultTheme';\n\nimport { Theme, ThemeIn } from './Theme';\nimport { findPropertyDescriptor } from './ThemeHelpers';\n\nexport class ThemeFactory {\n public static create<T extends {}>(theme: ThemeIn & T, baseTheme?: Theme): Readonly<Theme & T> {\n const base = baseTheme || DefaultThemeInternal;\n return this.constructTheme(base, theme);\n }\n\n public static overrideDefaultTheme(theme: Theme) {\n ThemeFactory.getKeys(DefaultThemeInternal).forEach((variableName) => {\n const descriptor = findPropertyDescriptor(theme, variableName);\n Object.defineProperty(DefaultThemeInternal, variableName, descriptor);\n });\n }\n\n public static getKeys<T extends Theme>(theme: T) {\n const keys: Array<keyof T> = [];\n while (theme != null) {\n (Object.keys(theme) as Array<keyof T>).forEach((key) => {\n if (!keys.includes(key)) {\n keys.push(key);\n }\n });\n theme = Object.getPrototypeOf(theme);\n }\n return keys.sort();\n }\n\n private static constructTheme(base: Theme, theme: ThemeIn) {\n const newTheme = Object.create(base);\n Object.keys(theme).forEach((propName) => {\n const descriptor = Object.getOwnPropertyDescriptor(theme, propName)!;\n Object.defineProperty(newTheme, propName, descriptor);\n });\n\n return Object.freeze(newTheme);\n }\n}\n"]}
@@ -3,3 +3,4 @@ export declare const exposeGetters: <T extends object>(theme: T) => T;
3
3
  export declare const REACT_UI_DARK_THEME_KEY = "__IS_REACT_UI_DARK_THEME__";
4
4
  export declare const isDarkTheme: (theme: Theme | ThemeIn) => boolean;
5
5
  export declare const markAsDarkTheme: <T extends object>(theme: T) => T;
6
+ export declare function findPropertyDescriptor(theme: Theme, propName: keyof Theme): PropertyDescriptor;
@@ -1,4 +1,4 @@
1
- "use strict";exports.__esModule = true;exports.markAsDarkTheme = exports.isDarkTheme = exports.exposeGetters = exports.REACT_UI_DARK_THEME_KEY = void 0;
1
+ "use strict";exports.__esModule = true;exports.exposeGetters = exports.REACT_UI_DARK_THEME_KEY = void 0;exports.findPropertyDescriptor = findPropertyDescriptor;exports.markAsDarkTheme = exports.isDarkTheme = void 0;
2
2
 
3
3
  var exposeGetters = function exposeGetters(theme) {
4
4
  var descriptors = Object.getOwnPropertyDescriptors(theme);
@@ -28,4 +28,13 @@ var markAsDarkTheme = function markAsDarkTheme(theme) {var _Object$create;
28
28
  configurable: false }, _Object$create));
29
29
 
30
30
 
31
- };exports.markAsDarkTheme = markAsDarkTheme;
31
+ };exports.markAsDarkTheme = markAsDarkTheme;
32
+
33
+ function findPropertyDescriptor(theme, propName) {
34
+ for (; theme != null; theme = Object.getPrototypeOf(theme)) {
35
+ if (Object.prototype.hasOwnProperty.call(theme, propName)) {
36
+ return Object.getOwnPropertyDescriptor(theme, propName) || {};
37
+ }
38
+ }
39
+ return {};
40
+ }
@@ -1 +1 @@
1
- {"version":3,"sources":["ThemeHelpers.ts"],"names":["exposeGetters","theme","descriptors","Object","getOwnPropertyDescriptors","keys","forEach","key","descriptor","get","configurable","enumerable","defineProperty","REACT_UI_DARK_THEME_KEY","isDarkTheme","markAsDarkTheme","create","value","writable"],"mappings":";;AAEO,IAAMA,aAAa,GAAG,SAAhBA,aAAgB,CAAmBC,KAAnB,EAAmC;AAC9D,MAAMC,WAAW,GAAGC,MAAM,CAACC,yBAAP,CAAiCH,KAAjC,CAApB;AACAE,EAAAA,MAAM,CAACE,IAAP,CAAYH,WAAZ,EAAyBI,OAAzB,CAAiC,UAACC,GAAD,EAAS;AACxC,QAAMC,UAAU,GAAGN,WAAW,CAACK,GAAD,CAA9B;AACA,QAAI,OAAOC,UAAU,CAACC,GAAlB,KAA0B,UAA1B,IAAwCD,UAAU,CAACE,YAAvD,EAAqE;AACnEF,MAAAA,UAAU,CAACG,UAAX,GAAwB,IAAxB;AACAR,MAAAA,MAAM,CAACS,cAAP,CAAsBX,KAAtB,EAA6BM,GAA7B,EAAkCC,UAAlC;AACD;AACF,GAND;AAOA,SAAOP,KAAP;AACD,CAVM,C;;AAYA,IAAMY,uBAAuB,GAAG,4BAAhC,C;;AAEA,IAAMC,WAAW,GAAG,SAAdA,WAAc,CAACb,KAAD,EAAqC;AAC9D;AACA,SAAOA,KAAK,CAACY,uBAAD,CAAL,KAAmC,IAA1C;AACD,CAHM,C;;AAKA,IAAME,eAAe,GAAG,SAAlBA,eAAkB,CAAmBd,KAAnB,EAAmC;AAChE,SAAOE,MAAM,CAACa,MAAP,CAAcf,KAAd;AACJY,EAAAA,uBADI,IACsB;AACzBI,IAAAA,KAAK,EAAE,IADkB;AAEzBC,IAAAA,QAAQ,EAAE,KAFe;AAGzBP,IAAAA,UAAU,EAAE,KAHa;AAIzBD,IAAAA,YAAY,EAAE,KAJW,EADtB,kBAAP;;;AAQD,CATM,C","sourcesContent":["import { Theme, ThemeIn } from './Theme';\n\nexport const exposeGetters = <T extends object>(theme: T): T => {\n const descriptors = Object.getOwnPropertyDescriptors(theme);\n Object.keys(descriptors).forEach((key) => {\n const descriptor = descriptors[key];\n if (typeof descriptor.get === 'function' && descriptor.configurable) {\n descriptor.enumerable = true;\n Object.defineProperty(theme, key, descriptor);\n }\n });\n return theme;\n};\n\nexport const REACT_UI_DARK_THEME_KEY = '__IS_REACT_UI_DARK_THEME__';\n\nexport const isDarkTheme = (theme: Theme | ThemeIn): boolean => {\n //@ts-ignore\n return theme[REACT_UI_DARK_THEME_KEY] === true;\n};\n\nexport const markAsDarkTheme = <T extends object>(theme: T): T => {\n return Object.create(theme, {\n [REACT_UI_DARK_THEME_KEY]: {\n value: true,\n writable: false,\n enumerable: false,\n configurable: false,\n },\n });\n};\n"]}
1
+ {"version":3,"sources":["ThemeHelpers.ts"],"names":["exposeGetters","theme","descriptors","Object","getOwnPropertyDescriptors","keys","forEach","key","descriptor","get","configurable","enumerable","defineProperty","REACT_UI_DARK_THEME_KEY","isDarkTheme","markAsDarkTheme","create","value","writable","findPropertyDescriptor","propName","getPrototypeOf","prototype","hasOwnProperty","call","getOwnPropertyDescriptor"],"mappings":";;AAEO,IAAMA,aAAa,GAAG,SAAhBA,aAAgB,CAAmBC,KAAnB,EAAmC;AAC9D,MAAMC,WAAW,GAAGC,MAAM,CAACC,yBAAP,CAAiCH,KAAjC,CAApB;AACAE,EAAAA,MAAM,CAACE,IAAP,CAAYH,WAAZ,EAAyBI,OAAzB,CAAiC,UAACC,GAAD,EAAS;AACxC,QAAMC,UAAU,GAAGN,WAAW,CAACK,GAAD,CAA9B;AACA,QAAI,OAAOC,UAAU,CAACC,GAAlB,KAA0B,UAA1B,IAAwCD,UAAU,CAACE,YAAvD,EAAqE;AACnEF,MAAAA,UAAU,CAACG,UAAX,GAAwB,IAAxB;AACAR,MAAAA,MAAM,CAACS,cAAP,CAAsBX,KAAtB,EAA6BM,GAA7B,EAAkCC,UAAlC;AACD;AACF,GAND;AAOA,SAAOP,KAAP;AACD,CAVM,C;;AAYA,IAAMY,uBAAuB,GAAG,4BAAhC,C;;AAEA,IAAMC,WAAW,GAAG,SAAdA,WAAc,CAACb,KAAD,EAAqC;AAC9D;AACA,SAAOA,KAAK,CAACY,uBAAD,CAAL,KAAmC,IAA1C;AACD,CAHM,C;;AAKA,IAAME,eAAe,GAAG,SAAlBA,eAAkB,CAAmBd,KAAnB,EAAmC;AAChE,SAAOE,MAAM,CAACa,MAAP,CAAcf,KAAd;AACJY,EAAAA,uBADI,IACsB;AACzBI,IAAAA,KAAK,EAAE,IADkB;AAEzBC,IAAAA,QAAQ,EAAE,KAFe;AAGzBP,IAAAA,UAAU,EAAE,KAHa;AAIzBD,IAAAA,YAAY,EAAE,KAJW,EADtB,kBAAP;;;AAQD,CATM,C;;AAWA,SAASS,sBAAT,CAAgClB,KAAhC,EAA8CmB,QAA9C,EAAqE;AAC1E,SAAOnB,KAAK,IAAI,IAAhB,EAAsBA,KAAK,GAAGE,MAAM,CAACkB,cAAP,CAAsBpB,KAAtB,CAA9B,EAA4D;AAC1D,QAAIE,MAAM,CAACmB,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCvB,KAArC,EAA4CmB,QAA5C,CAAJ,EAA2D;AACzD,aAAOjB,MAAM,CAACsB,wBAAP,CAAgCxB,KAAhC,EAAuCmB,QAAvC,KAAoD,EAA3D;AACD;AACF;AACD,SAAO,EAAP;AACD","sourcesContent":["import { Theme, ThemeIn } from './Theme';\n\nexport const exposeGetters = <T extends object>(theme: T): T => {\n const descriptors = Object.getOwnPropertyDescriptors(theme);\n Object.keys(descriptors).forEach((key) => {\n const descriptor = descriptors[key];\n if (typeof descriptor.get === 'function' && descriptor.configurable) {\n descriptor.enumerable = true;\n Object.defineProperty(theme, key, descriptor);\n }\n });\n return theme;\n};\n\nexport const REACT_UI_DARK_THEME_KEY = '__IS_REACT_UI_DARK_THEME__';\n\nexport const isDarkTheme = (theme: Theme | ThemeIn): boolean => {\n //@ts-ignore\n return theme[REACT_UI_DARK_THEME_KEY] === true;\n};\n\nexport const markAsDarkTheme = <T extends object>(theme: T): T => {\n return Object.create(theme, {\n [REACT_UI_DARK_THEME_KEY]: {\n value: true,\n writable: false,\n enumerable: false,\n configurable: false,\n },\n });\n};\n\nexport function findPropertyDescriptor(theme: Theme, propName: keyof Theme) {\n for (; theme != null; theme = Object.getPrototypeOf(theme)) {\n if (Object.prototype.hasOwnProperty.call(theme, propName)) {\n return Object.getOwnPropertyDescriptor(theme, propName) || {};\n }\n }\n return {};\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["Button.tsx"],"names":["React","isReactUIComponent","isIE11","isEdge","keyListener","ThemeContext","Spinner","CommonWrapper","cx","rootNode","styles","activeStyles","globalClasses","Corners","Button","state","focusedByTab","node","handleFocus","e","props","disabled","disableFocus","requestAnimationFrame","isTabPressed","setState","onFocus","handleBlur","onBlur","_ref","componentDidMount","autoFocus","focus","getDerivedStateFromProps","loading","blur","render","theme","renderMain","corners","active","borderless","checked","error","warning","arrow","narrow","icon","_noPadding","_noRightPadding","visuallyFocused","align","onMouseEnter","onMouseLeave","onMouseOver","onKeyDown","onClick","width","children","use","defaultProps","sizeClass","getSizeClassName","isFocused","isLink","rootProps","type","className","root","checkedFocused","checkedDisabled","noPadding","noRightPadding","style","borderTopLeftRadius","TOP_LEFT","undefined","borderTopRightRadius","TOP_RIGHT","borderBottomRightRadius","BOTTOM_RIGHT","borderBottomLeftRadius","BOTTOM_LEFT","textAlign","tabIndex","title","wrapProps","wrap","wrapArrow","wrapArrowLeft","getSizeWrapClassName","innerShadowNode","innerShadow","outlineNode","outline","outlineWarning","outlineError","outlineLink","outlineLinkWarning","outlineLinkError","loadingNode","getLoadingSpinner","iconNode","getSizeIconClassName","iconNoRightPadding","iconLink","arrowNode","arrowWarning","arrowError","arrowFocus","arrowLeft","arrowHelper","arrowHelperTop","arrowHelperBottom","link","linkFocus","linkDisabled","Object","assign","wrapLink","setRootNode","caption","captionTranslated","captionLink","captionDisabled","visibilityHidden","size","sizeLarge","sizeLargeIE11","sizeMedium","sizeMediumIE11","sizeSmall","sizeSmallIE11","iconLarge","iconMedium","iconSmall","wrapLarge","wrapMedium","wrapSmall","Component","__KONTUR_REACT_UI__","__BUTTON__","isButton"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { isReactUIComponent } from '../../lib/utils';\nimport { isIE11, isEdge } from '../../lib/client';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Spinner } from '../Spinner';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { styles, activeStyles, globalClasses } from './Button.styles';\nimport { Corners } from './Corners';\n\nexport type ButtonSize = 'small' | 'medium' | 'large';\nexport type ButtonType = 'button' | 'submit' | 'reset';\nexport type ButtonUse = 'default' | 'primary' | 'success' | 'danger' | 'pay' | 'link';\n\nexport interface ButtonProps extends CommonProps {\n /** @ignore */\n _noPadding?: boolean;\n\n /** @ignore */\n _noRightPadding?: boolean;\n\n /**\n * Применяет к кнопке стили псевдокласса `:active`.\n */\n active?: boolean;\n\n /**\n * CSS-свойство `text-align`.\n */\n align?: React.CSSProperties['textAlign'];\n\n /**\n * Превращает обычную кнопку в кнопку со стрелкой.\n */\n arrow?: boolean | 'left';\n\n /**\n * Даёт кнопке фокус после окончания загрузки страницы.\n */\n autoFocus?: boolean;\n\n /**\n * Убирает обводку у кнопки.\n */\n borderless?: boolean;\n\n /**\n * @ignore\n */\n checked?: boolean;\n\n children?: React.ReactNode;\n\n /** @ignore */\n corners?: number;\n\n /**\n * Отключенное состояние кнопки.\n */\n disabled?: boolean;\n\n /** @ignore */\n disableFocus?: boolean;\n\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n\n /**\n * Иконка слева от текста кнопки.\n */\n icon?: React.ReactElement<any>;\n\n /**\n * Переводит кнопку в состояние загрузки.\n */\n loading?: boolean;\n\n /**\n * Сужает кнопку.\n */\n narrow?: boolean;\n\n /**\n * HTML-событие `onblur`.\n */\n onBlur?: React.FocusEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onclick`.\n */\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onfocus`.\n */\n onFocus?: React.FocusEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `keydown`.\n */\n onKeyDown?: React.KeyboardEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onmouseenter`.\n */\n onMouseEnter?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onmouseover`.\n */\n onMouseOver?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * Задаёт размер кнопки.\n *\n * **Допустимые значения**: `\"small\"`, `\"medium\"`, `\"large\"`.\n */\n size?: ButtonSize;\n\n /**\n * HTML-атрибут `type`.\n */\n type?: ButtonType;\n\n /**\n * HTML-атрибут `title`.\n */\n title?: string;\n\n /**\n * Стиль кнопки.\n *\n * **Допустимые значения**: `\"default\"`, `\"primary\"`, `\"success\"`, `\"danger\"`, `\"pay\"`, `\"link\"`.\n */\n use?: ButtonUse;\n\n /** @ignore */\n visuallyFocused?: boolean;\n\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n\n /**\n * CSS-свойство `width`.\n */\n width?: number | string;\n}\n\nexport interface ButtonState {\n focusedByTab: boolean;\n}\n\n@rootNode\nexport class Button extends React.Component<ButtonProps, ButtonState> {\n public static __KONTUR_REACT_UI__ = 'Button';\n public static __BUTTON__ = true;\n public static TOP_LEFT = Corners.TOP_LEFT;\n public static TOP_RIGHT = Corners.TOP_RIGHT;\n public static BOTTOM_RIGHT = Corners.BOTTOM_RIGHT;\n public static BOTTOM_LEFT = Corners.BOTTOM_LEFT;\n\n public static defaultProps = {\n use: 'default' as ButtonUse,\n size: 'small' as ButtonSize,\n type: 'button' as ButtonType,\n };\n\n public state = {\n focusedByTab: false,\n };\n\n private theme!: Theme;\n private node: HTMLButtonElement | null = null;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n if (this.props.autoFocus) {\n keyListener.isTabPressed = true;\n this.focus();\n }\n }\n\n public static getDerivedStateFromProps(props: ButtonProps) {\n if (props.loading || props.disabled) {\n return { focusedByTab: false };\n }\n return null;\n }\n\n /**\n * @public\n */\n public focus() {\n this.node?.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n this.node?.blur();\n }\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const {\n corners = 0,\n active,\n disabled,\n borderless,\n checked,\n error,\n warning,\n loading,\n arrow,\n narrow,\n icon,\n _noPadding,\n _noRightPadding,\n visuallyFocused,\n align,\n disableFocus,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onKeyDown,\n onClick,\n width,\n children,\n } = this.props;\n const use = this.props.use || Button.defaultProps.use;\n const sizeClass = this.getSizeClassName();\n\n const isFocused = this.state.focusedByTab || visuallyFocused;\n const isLink = use === 'link';\n const rootProps = {\n // By default the type attribute is 'submit'. IE8 will fire a click event\n // on this button if somewhere on the page user presses Enter while some\n // input is focused. So we set type to 'button' by default.\n type: this.props.type,\n className: cx({\n [styles.root(this.theme)]: true,\n [styles[use](this.theme)]: true,\n [activeStyles[use](this.theme)]: active,\n [sizeClass]: true,\n [styles.focus(this.theme)]: isFocused,\n [styles.checked(this.theme)]: checked,\n [styles.checkedFocused(this.theme)]: checked && isFocused,\n [styles.disabled(this.theme)]: disabled || loading,\n [styles.checkedDisabled(this.theme)]: checked && disabled,\n [styles.borderless()]: borderless && !disabled && !loading && !checked && !isFocused && !active,\n [styles.narrow()]: narrow,\n [styles.noPadding()]: _noPadding,\n [styles.noRightPadding()]: _noRightPadding,\n }),\n style: {\n borderTopLeftRadius: corners & Corners.TOP_LEFT ? 0 : undefined,\n borderTopRightRadius: corners & Corners.TOP_RIGHT ? 0 : undefined,\n borderBottomRightRadius: corners & Corners.BOTTOM_RIGHT ? 0 : undefined,\n borderBottomLeftRadius: corners & Corners.BOTTOM_LEFT ? 0 : undefined,\n textAlign: align,\n },\n disabled: disabled || loading,\n onClick: onClick,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onKeyDown: onKeyDown,\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave,\n onMouseOver: onMouseOver,\n tabIndex: disableFocus ? -1 : 0,\n title: this.props.title,\n };\n\n const wrapProps = {\n className: cx({\n [styles.wrap(this.theme)]: true,\n [styles.wrapArrow()]: arrow === true,\n [styles.wrapArrowLeft()]: arrow === 'left',\n [this.getSizeWrapClassName()]: true,\n }),\n style: {\n width: width,\n },\n };\n\n const innerShadowNode = <div className={globalClasses.innerShadow} />;\n\n let outlineNode = null;\n if (!isFocused || isLink) {\n outlineNode = (\n <div\n className={cx(styles.outline(), {\n [styles.outlineWarning(this.theme)]: warning,\n [styles.outlineError(this.theme)]: error,\n [styles.outlineLink()]: isLink,\n [styles.outlineLinkWarning(this.theme)]: isLink && warning,\n [styles.outlineLinkError(this.theme)]: isLink && error,\n })}\n />\n );\n }\n\n let loadingNode = null;\n if (loading && !icon) {\n loadingNode = <div className={styles.loading()}>{this.getLoadingSpinner()}</div>;\n }\n\n let iconNode = null;\n if (icon) {\n iconNode = (\n <span\n className={cx(styles.icon(), this.getSizeIconClassName(), {\n [styles.iconNoRightPadding()]: !children,\n [styles.iconLink(this.theme)]: isLink,\n })}\n >\n {loading ? this.getLoadingSpinner() : icon}\n </span>\n );\n }\n\n let arrowNode = null;\n if (arrow) {\n arrowNode = (\n <div\n className={cx({\n [styles.arrow()]: true,\n [styles.arrowWarning(this.theme)]: !checked && warning,\n [styles.arrowError(this.theme)]: !checked && error,\n [styles.arrowFocus(this.theme)]: !checked && isFocused,\n [styles.arrowLeft()]: arrow === 'left',\n })}\n >\n <div className={cx(globalClasses.arrowHelper, globalClasses.arrowHelperTop)} />\n <div className={cx(globalClasses.arrowHelper, globalClasses.arrowHelperBottom)} />\n </div>\n );\n }\n\n // Force disable all props and features, that cannot be use with Link\n if (isLink) {\n rootProps.className = cx({\n [styles.root(this.theme)]: true,\n [sizeClass]: true,\n [styles.link(this.theme)]: true,\n [styles.linkFocus(this.theme)]: isFocused,\n [styles.linkDisabled(this.theme)]: disabled || loading,\n });\n Object.assign(wrapProps, {\n className: cx(styles.wrap(this.theme), styles.wrapLink()),\n style: { width: wrapProps.style.width },\n });\n rootProps.style.textAlign = undefined;\n arrowNode = null;\n }\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <span {...wrapProps}>\n <button ref={this._ref} {...rootProps}>\n {innerShadowNode}\n {outlineNode}\n {loadingNode}\n {arrowNode}\n <div\n className={cx(styles.caption(), globalClasses.caption, {\n [styles.captionTranslated()]: active || checked,\n [styles.captionLink()]: isLink,\n [styles.captionDisabled()]: !checked && disabled,\n })}\n >\n {iconNode}\n <span className={cx({ [styles.visibilityHidden()]: !!loadingNode })}>{children}</span>\n </div>\n </button>\n </span>\n </CommonWrapper>\n );\n }\n\n private getLoadingSpinner() {\n return <Spinner caption={null} dimmed type=\"mini\" />;\n }\n\n private getSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return cx(styles.sizeLarge(this.theme), { [styles.sizeLargeIE11(this.theme)]: isIE11 || isEdge });\n case 'medium':\n return cx(styles.sizeMedium(this.theme), { [styles.sizeMediumIE11(this.theme)]: isIE11 || isEdge });\n case 'small':\n default:\n return cx(styles.sizeSmall(this.theme), { [styles.sizeSmallIE11(this.theme)]: isIE11 || isEdge });\n }\n }\n\n private getSizeIconClassName() {\n switch (this.props.size) {\n case 'large':\n return styles.iconLarge(this.theme);\n case 'medium':\n return styles.iconMedium(this.theme);\n case 'small':\n default:\n return styles.iconSmall(this.theme);\n }\n }\n\n private getSizeWrapClassName() {\n switch (this.props.size) {\n case 'large':\n return styles.wrapLarge(this.theme);\n case 'medium':\n return styles.wrapMedium(this.theme);\n case 'small':\n default:\n return styles.wrapSmall(this.theme);\n }\n }\n\n private handleFocus = (e: React.FocusEvent<HTMLButtonElement>) => {\n if (!this.props.disabled && !this.props.disableFocus) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n this.props.onFocus?.(e);\n }\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLButtonElement>) => {\n this.setState({ focusedByTab: false });\n if (!this.props.disabled && !this.props.disableFocus) {\n this.props.onBlur?.(e);\n }\n };\n\n private _ref = (node: HTMLButtonElement | null) => {\n this.node = node;\n };\n}\n\nexport const isButton = isReactUIComponent<ButtonProps>('Button');\n"]}
1
+ {"version":3,"sources":["Button.tsx"],"names":["React","isReactUIComponent","isIE11","isEdge","keyListener","ThemeContext","Spinner","CommonWrapper","cx","rootNode","styles","activeStyles","globalClasses","Corners","Button","state","focusedByTab","node","handleFocus","e","props","disabled","disableFocus","requestAnimationFrame","isTabPressed","setState","onFocus","handleBlur","onBlur","_ref","componentDidMount","autoFocus","focus","getDerivedStateFromProps","loading","blur","render","theme","renderMain","corners","active","borderless","checked","error","warning","arrow","narrow","icon","_noPadding","_noRightPadding","visuallyFocused","align","onMouseEnter","onMouseLeave","onMouseOver","onKeyDown","onClick","width","children","use","defaultProps","sizeClass","getSizeClassName","isFocused","isLink","rootProps","type","className","root","checkedFocused","checkedDisabled","noPadding","noRightPadding","style","borderTopLeftRadius","TOP_LEFT","undefined","borderTopRightRadius","TOP_RIGHT","borderBottomRightRadius","BOTTOM_RIGHT","borderBottomLeftRadius","BOTTOM_LEFT","textAlign","tabIndex","title","wrapProps","wrap","wrapArrow","wrapArrowLeft","getSizeWrapClassName","innerShadowNode","innerShadow","outlineNode","outline","outlineWarning","outlineError","outlineLink","outlineLinkWarning","outlineLinkError","loadingNode","getLoadingSpinner","iconNode","getSizeIconClassName","iconNoRightPadding","iconLink","arrowNode","arrowWarning","arrowError","arrowFocus","arrowLeft","arrowHelper","arrowHelperTop","arrowHelperBottom","link","linkFocus","linkDisabled","Object","assign","wrapLink","setRootNode","caption","captionTranslated","captionLink","captionDisabled","visibilityHidden","size","sizeLarge","sizeLargeIE11","sizeMedium","sizeMediumIE11","sizeSmall","sizeSmallIE11","iconLarge","iconMedium","iconSmall","wrapLarge","wrapMedium","wrapSmall","Component","__KONTUR_REACT_UI__","__BUTTON__","isButton"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { isReactUIComponent } from '../../lib/utils';\nimport { isIE11, isEdge } from '../../lib/client';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Spinner } from '../Spinner';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { styles, activeStyles, globalClasses } from './Button.styles';\nimport { Corners } from './Corners';\n\nexport type ButtonSize = 'small' | 'medium' | 'large';\nexport type ButtonType = 'button' | 'submit' | 'reset';\nexport type ButtonUse = 'default' | 'primary' | 'success' | 'danger' | 'pay' | 'link';\n\nexport interface ButtonProps extends CommonProps {\n /** @ignore */\n _noPadding?: boolean;\n\n /** @ignore */\n _noRightPadding?: boolean;\n\n /**\n * Применяет к кнопке стили псевдокласса `:active`.\n */\n active?: boolean;\n\n /**\n * CSS-свойство `text-align`.\n */\n align?: React.CSSProperties['textAlign'];\n\n /**\n * Превращает обычную кнопку в кнопку со стрелкой.\n */\n arrow?: boolean | 'left';\n\n /**\n * Даёт кнопке фокус после окончания загрузки страницы.\n */\n autoFocus?: boolean;\n\n /**\n * Убирает обводку у кнопки.\n */\n borderless?: boolean;\n\n /**\n * @ignore\n */\n checked?: boolean;\n\n children?: React.ReactNode;\n\n /** @ignore */\n corners?: number;\n\n /**\n * Отключенное состояние кнопки.\n */\n disabled?: boolean;\n\n /** @ignore */\n disableFocus?: boolean;\n\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n\n /**\n * Иконка слева от текста кнопки.\n */\n icon?: React.ReactElement<any>;\n\n /**\n * Переводит кнопку в состояние загрузки.\n */\n loading?: boolean;\n\n /**\n * Сужает кнопку.\n */\n narrow?: boolean;\n\n /**\n * HTML-событие `onblur`.\n */\n onBlur?: React.FocusEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onclick`.\n */\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onfocus`.\n */\n onFocus?: React.FocusEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `keydown`.\n */\n onKeyDown?: React.KeyboardEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onmouseenter`.\n */\n onMouseEnter?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onmouseover`.\n */\n onMouseOver?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * Задаёт размер кнопки.\n *\n * **Допустимые значения**: `\"small\"`, `\"medium\"`, `\"large\"`.\n */\n size?: ButtonSize;\n\n /**\n * HTML-атрибут `type`.\n */\n type?: ButtonType;\n\n /**\n * HTML-атрибут `title`.\n */\n title?: string;\n\n /**\n * Стиль кнопки.\n *\n * **Допустимые значения**: `\"default\"`, `\"primary\"`, `\"success\"`, `\"danger\"`, `\"pay\"`, `\"link\"`.\n */\n use?: ButtonUse;\n\n /** @ignore */\n visuallyFocused?: boolean;\n\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n\n /**\n * CSS-свойство `width`.\n */\n width?: number | string;\n}\n\nexport interface ButtonState {\n focusedByTab: boolean;\n}\n\n@rootNode\nexport class Button extends React.Component<ButtonProps, ButtonState> {\n public static __KONTUR_REACT_UI__ = 'Button';\n public static __BUTTON__ = true;\n public static TOP_LEFT = Corners.TOP_LEFT;\n public static TOP_RIGHT = Corners.TOP_RIGHT;\n public static BOTTOM_RIGHT = Corners.BOTTOM_RIGHT;\n public static BOTTOM_LEFT = Corners.BOTTOM_LEFT;\n\n public static defaultProps = {\n use: 'default' as ButtonUse,\n size: 'small' as ButtonSize,\n type: 'button' as ButtonType,\n };\n\n public state = {\n focusedByTab: false,\n };\n\n private theme!: Theme;\n private node: HTMLButtonElement | null = null;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n if (this.props.autoFocus) {\n keyListener.isTabPressed = true;\n this.focus();\n }\n }\n\n public static getDerivedStateFromProps(props: ButtonProps) {\n if (props.loading || props.disabled) {\n return { focusedByTab: false };\n }\n return null;\n }\n\n /**\n * @public\n */\n public focus() {\n this.node?.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n this.node?.blur();\n }\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const {\n corners = 0,\n active,\n disabled,\n borderless,\n checked,\n error,\n warning,\n loading,\n arrow,\n narrow,\n icon,\n _noPadding,\n _noRightPadding,\n visuallyFocused,\n align,\n disableFocus,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onKeyDown,\n onClick,\n width,\n children,\n } = this.props;\n const use = this.props.use || Button.defaultProps.use;\n const sizeClass = this.getSizeClassName();\n\n const isFocused = this.state.focusedByTab || visuallyFocused;\n const isLink = use === 'link';\n const rootProps = {\n // By default the type attribute is 'submit'. IE8 will fire a click event\n // on this button if somewhere on the page user presses Enter while some\n // input is focused. So we set type to 'button' by default.\n type: this.props.type,\n className: cx({\n [styles.root(this.theme)]: true,\n [styles[use](this.theme)]: true,\n [activeStyles[use](this.theme)]: active,\n [sizeClass]: true,\n [styles.focus(this.theme)]: isFocused,\n [styles.checked(this.theme)]: checked,\n [styles.checkedFocused(this.theme)]: checked && isFocused,\n [styles.disabled(this.theme)]: disabled || loading,\n [styles.checkedDisabled(this.theme)]: checked && disabled,\n [styles.borderless()]: borderless && !disabled && !loading && !checked && !isFocused && !active,\n [styles.narrow()]: narrow,\n [styles.noPadding()]: _noPadding,\n [styles.noRightPadding()]: _noRightPadding,\n }),\n style: {\n borderTopLeftRadius: corners & Corners.TOP_LEFT ? 0 : undefined,\n borderTopRightRadius: corners & Corners.TOP_RIGHT ? 0 : undefined,\n borderBottomRightRadius: corners & Corners.BOTTOM_RIGHT ? 0 : undefined,\n borderBottomLeftRadius: corners & Corners.BOTTOM_LEFT ? 0 : undefined,\n textAlign: align,\n },\n disabled: disabled || loading,\n onClick: onClick,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onKeyDown: onKeyDown,\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave,\n onMouseOver: onMouseOver,\n tabIndex: disableFocus ? -1 : 0,\n title: this.props.title,\n };\n\n const wrapProps = {\n className: cx({\n [styles.wrap(this.theme)]: true,\n [styles.wrapArrow()]: arrow === true,\n [styles.wrapArrowLeft()]: arrow === 'left',\n [this.getSizeWrapClassName()]: true,\n }),\n style: {\n width: width,\n },\n };\n\n const innerShadowNode = <div className={globalClasses.innerShadow} />;\n\n let outlineNode = null;\n if (!isFocused || isLink) {\n outlineNode = (\n <div\n className={cx(styles.outline(), {\n [styles.outlineWarning(this.theme)]: warning,\n [styles.outlineError(this.theme)]: error,\n [styles.outlineLink()]: isLink,\n [styles.outlineLinkWarning(this.theme)]: isLink && warning,\n [styles.outlineLinkError(this.theme)]: isLink && error,\n })}\n />\n );\n }\n\n let loadingNode = null;\n if (loading && !icon) {\n loadingNode = <div className={styles.loading()}>{this.getLoadingSpinner()}</div>;\n }\n\n let iconNode = null;\n if (icon) {\n iconNode = (\n <span\n className={cx(styles.icon(), this.getSizeIconClassName(), {\n [styles.iconNoRightPadding()]: !children,\n [styles.iconLink(this.theme)]: isLink,\n })}\n >\n {loading ? this.getLoadingSpinner() : icon}\n </span>\n );\n }\n\n let arrowNode = null;\n if (arrow) {\n arrowNode = (\n <div\n className={cx({\n [styles.arrow()]: true,\n [styles.arrowWarning(this.theme)]: !checked && warning,\n [styles.arrowError(this.theme)]: !checked && error,\n [styles.arrowFocus(this.theme)]: !checked && isFocused,\n [styles.arrowLeft()]: arrow === 'left',\n })}\n >\n <div className={cx(globalClasses.arrowHelper, globalClasses.arrowHelperTop)} />\n <div className={cx(globalClasses.arrowHelper, globalClasses.arrowHelperBottom)} />\n </div>\n );\n }\n\n // Force disable all props and features, that cannot be use with Link\n if (isLink) {\n rootProps.className = cx({\n [styles.root(this.theme)]: true,\n [sizeClass]: true,\n [styles.link(this.theme)]: true,\n [styles.linkFocus(this.theme)]: isFocused,\n [styles.linkDisabled(this.theme)]: disabled || loading,\n });\n Object.assign(wrapProps, {\n className: cx(styles.wrap(this.theme), styles.wrapLink()),\n style: { width: wrapProps.style.width },\n });\n rootProps.style.textAlign = undefined;\n arrowNode = null;\n }\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <span {...wrapProps}>\n <button ref={this._ref} {...rootProps}>\n {innerShadowNode}\n {outlineNode}\n {loadingNode}\n {arrowNode}\n <div\n className={cx(styles.caption(), globalClasses.caption, {\n [styles.captionTranslated()]: active || checked,\n [styles.captionLink()]: isLink,\n [styles.captionDisabled()]: !checked && disabled,\n })}\n >\n {iconNode}\n <span className={cx({ [styles.visibilityHidden()]: !!loadingNode })}>{children}</span>\n </div>\n </button>\n </span>\n </CommonWrapper>\n );\n }\n\n private getLoadingSpinner() {\n return <Spinner caption={null} dimmed type=\"mini\" />;\n }\n\n private getSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return cx(styles.sizeLarge(this.theme), { [styles.sizeLargeIE11(this.theme)]: isIE11 || isEdge });\n case 'medium':\n return cx(styles.sizeMedium(this.theme), { [styles.sizeMediumIE11(this.theme)]: isIE11 || isEdge });\n case 'small':\n default:\n return cx(styles.sizeSmall(this.theme), { [styles.sizeSmallIE11(this.theme)]: isIE11 || isEdge });\n }\n }\n\n private getSizeIconClassName() {\n switch (this.props.size) {\n case 'large':\n return styles.iconLarge(this.theme);\n case 'medium':\n return styles.iconMedium(this.theme);\n case 'small':\n default:\n return styles.iconSmall(this.theme);\n }\n }\n\n private getSizeWrapClassName() {\n switch (this.props.size) {\n case 'large':\n return styles.wrapLarge(this.theme);\n case 'medium':\n return styles.wrapMedium(this.theme);\n case 'small':\n default:\n return styles.wrapSmall(this.theme);\n }\n }\n\n private handleFocus = (e: React.FocusEvent<HTMLButtonElement>) => {\n if (!this.props.disabled && !this.props.disableFocus) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n this.props.onFocus?.(e);\n }\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLButtonElement>) => {\n this.setState({ focusedByTab: false });\n if (!this.props.disabled && !this.props.disableFocus) {\n this.props.onBlur?.(e);\n }\n };\n\n private _ref = (node: HTMLButtonElement | null) => {\n this.node = node;\n };\n}\n\nexport const isButton = isReactUIComponent<ButtonProps>('Button');\n"]}
@@ -42,7 +42,7 @@ export interface ButtonProps extends CommonProps {
42
42
  /** @ignore */
43
43
  disableFocus?: boolean;
44
44
  /**
45
- * Cостояние валидации при ошибке.
45
+ * Состояние валидации при ошибке.
46
46
  */
47
47
  error?: boolean;
48
48
  /**
@@ -108,7 +108,7 @@ export interface ButtonProps extends CommonProps {
108
108
  /** @ignore */
109
109
  visuallyFocused?: boolean;
110
110
  /**
111
- * Cостояние валидации при предупреждении.
111
+ * Состояние валидации при предупреждении.
112
112
  */
113
113
  warning?: boolean;
114
114
  /**
@@ -1 +1 @@
1
- {"version":3,"sources":["Checkbox.tsx"],"names":["React","PropTypes","keyListener","ThemeContext","OkIcon","SquareIcon","isEdge","isIE11","CommonWrapper","cx","rootNode","fixFirefoxModifiedClickOnLabel","styles","globalClasses","Checkbox","state","focusedByTab","indeterminate","props","initialIndeterminate","input","createRef","componentDidMount","current","setIndeterminate","setState","resetIndeterminate","renderMain","error","warning","onMouseEnter","onMouseLeave","onMouseOver","onValueChange","type","rest","isIndeterminate","rootClass","root","theme","rootFallback","rootChecked","checked","disabled","Boolean","inputProps","className","onChange","handleChange","onFocus","handleFocus","onBlur","handleBlur","onClick","handleClick","ref","caption","children","captionClass","captionIE11","iconClass","icon","iconUnchecked","box","boxWrapper","boxChecked","boxFocus","boxError","boxWarning","boxDisabled","e","requestAnimationFrame","isTabPressed","event","currentTarget","undefined","componentDidUpdate","prevProps","render","setRootNode","focus","blur","PureComponent","__KONTUR_REACT_UI__","propTypes","bool","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Override } from '../../typings/utility-types';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { OkIcon, SquareIcon } from '../../internal/icons/16px';\nimport { isEdge, isIE11 } from '../../lib/client';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { fixFirefoxModifiedClickOnLabel } from '../../lib/events/fixFirefoxModifiedClickOnLabel';\n\nimport { styles, globalClasses } from './Checkbox.styles';\n\nexport interface CheckboxProps\n extends CommonProps,\n Override<\n React.InputHTMLAttributes<HTMLInputElement>,\n {\n /**\n * Контент `label`\n */\n children?: React.ReactNode;\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n /**\n * HTML-событие `mouseenter`.\n */\n onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-событие `mouseover`.\n */\n onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * Функция, вызываемая при изменении `value`.\n */\n onValueChange?: (value: boolean) => void;\n /**\n * HTML-событие `onblur`.\n */\n onBlur?: (event: React.FocusEvent<HTMLInputElement>) => void;\n /**\n * [Неопределённое состояние](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox#attr-indeterminate) чекбокса из HTML.\n */\n initialIndeterminate?: boolean;\n }\n > {}\n\nexport interface CheckboxState {\n focusedByTab: boolean;\n indeterminate: boolean;\n}\n@rootNode\nexport class Checkbox extends React.PureComponent<CheckboxProps, CheckboxState> {\n public static __KONTUR_REACT_UI__ = 'Checkbox';\n\n public static propTypes = {\n checked: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n warning: PropTypes.bool,\n onValueChange: PropTypes.func,\n onBlur: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseOver: PropTypes.func,\n };\n\n public state = {\n focusedByTab: false,\n indeterminate: this.props.initialIndeterminate || false,\n };\n\n private theme!: Theme;\n private input = React.createRef<HTMLInputElement>();\n\n public componentDidMount = () => {\n if (this.state.indeterminate && this.input.current) {\n this.input.current.indeterminate = true;\n }\n };\n private setRootNode!: TSetRootNode;\n\n public componentDidUpdate(prevProps: CheckboxProps) {\n if (prevProps.checked !== this.props.checked) {\n this.resetIndeterminate();\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * Программная установка фокуса чекбоксу.\n * @public\n */\n public focus() {\n keyListener.isTabPressed = true;\n this.input.current?.focus();\n }\n\n /**\n * Программное снятие фокуса с чекбокса.\n * @public\n */\n public blur() {\n this.input.current?.blur();\n }\n\n /**\n * Устанавливает чекбокс в HTML-состояние `indeterminate`.\n * @public\n */\n public setIndeterminate = () => {\n this.setState({\n indeterminate: true,\n });\n if (this.input.current) {\n this.input.current.indeterminate = true;\n }\n };\n\n /**\n * Снимает с чекбокса HTML-состояние `indeterminate`.\n * @public\n */\n public resetIndeterminate = () => {\n this.setState({\n indeterminate: false,\n });\n if (this.input.current) {\n this.input.current.indeterminate = false;\n }\n };\n\n private renderMain = (props: CommonWrapperRestProps<CheckboxProps>) => {\n const {\n error,\n warning,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onValueChange,\n type,\n initialIndeterminate,\n ...rest\n } = props;\n const isIndeterminate = this.state.indeterminate;\n\n const rootClass = cx({\n [styles.root(this.theme)]: true,\n [styles.rootFallback()]: isIE11 || isEdge,\n [styles.rootChecked(this.theme)]: props.checked || isIndeterminate,\n [styles.disabled(this.theme)]: Boolean(props.disabled),\n });\n\n const inputProps = {\n ...rest,\n type: 'checkbox',\n className: styles.input(),\n onChange: this.handleChange,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onClick: this.handleClick,\n ref: this.input,\n };\n\n let caption = null;\n if (this.props.children) {\n const captionClass = cx({\n [styles.caption(this.theme)]: true,\n [styles.captionIE11()]: isIE11 || isEdge,\n [styles.disabled(this.theme)]: Boolean(props.disabled),\n });\n caption = <span className={captionClass}>{this.props.children}</span>;\n }\n\n const iconClass = cx({\n [styles.icon(this.theme)]: true,\n [styles.iconUnchecked()]: !props.checked && !isIndeterminate,\n });\n\n const box = (\n <div className={cx(styles.boxWrapper(this.theme))}>\n <div\n className={cx(styles.box(this.theme), globalClasses.box, {\n [styles.boxChecked(this.theme)]: props.checked || isIndeterminate,\n [styles.boxFocus(this.theme)]: this.state.focusedByTab,\n [styles.boxError(this.theme)]: props.error,\n [styles.boxWarning(this.theme)]: props.warning,\n [styles.boxDisabled(this.theme)]: props.disabled,\n })}\n >\n {(isIndeterminate && <SquareIcon className={iconClass} />) || <OkIcon className={iconClass} />}\n </div>\n </div>\n );\n\n return (\n <label\n className={rootClass}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onMouseOver={onMouseOver}\n onClick={fixFirefoxModifiedClickOnLabel(this.input)}\n >\n <input {...inputProps} />\n {box}\n {caption}\n </label>\n );\n };\n\n private handleFocus = (e: React.FocusEvent<any>) => {\n if (!this.props.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n }\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n this.props.onBlur?.(e);\n this.setState({ focusedByTab: false });\n };\n\n private handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const checked = event.currentTarget.checked;\n this.props.onValueChange?.(checked);\n\n this.resetIndeterminate();\n\n this.props.onChange?.(event);\n };\n\n private handleClick = (e: React.MouseEvent<HTMLInputElement>) => {\n this.props.onClick?.(e);\n // support IE11's and old Edge's special behavior\n // https://github.com/jquery/jquery/issues/1698\n if (this.state.indeterminate && (isIE11 || isEdge)) {\n this.resetIndeterminate();\n // simulate correct behavior only if onValueChange is used\n // because we cant simulate real native onChange event\n if (this.props.onValueChange && this.input.current) {\n const checked = !this.input.current.checked;\n\n if (this.props.checked === undefined) {\n // in case of uncontrolled mode\n this.input.current.checked = checked;\n }\n\n this.props.onValueChange(checked);\n }\n }\n };\n}\n"]}
1
+ {"version":3,"sources":["Checkbox.tsx"],"names":["React","PropTypes","keyListener","ThemeContext","OkIcon","SquareIcon","isEdge","isIE11","CommonWrapper","cx","rootNode","fixFirefoxModifiedClickOnLabel","styles","globalClasses","Checkbox","state","focusedByTab","indeterminate","props","initialIndeterminate","input","createRef","componentDidMount","current","setIndeterminate","setState","resetIndeterminate","renderMain","error","warning","onMouseEnter","onMouseLeave","onMouseOver","onValueChange","type","rest","isIndeterminate","rootClass","root","theme","rootFallback","rootChecked","checked","disabled","Boolean","inputProps","className","onChange","handleChange","onFocus","handleFocus","onBlur","handleBlur","onClick","handleClick","ref","caption","children","captionClass","captionIE11","iconClass","icon","iconUnchecked","box","boxWrapper","boxChecked","boxFocus","boxError","boxWarning","boxDisabled","e","requestAnimationFrame","isTabPressed","event","currentTarget","undefined","componentDidUpdate","prevProps","render","setRootNode","focus","blur","PureComponent","__KONTUR_REACT_UI__","propTypes","bool","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Override } from '../../typings/utility-types';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { OkIcon, SquareIcon } from '../../internal/icons/16px';\nimport { isEdge, isIE11 } from '../../lib/client';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { fixFirefoxModifiedClickOnLabel } from '../../lib/events/fixFirefoxModifiedClickOnLabel';\n\nimport { styles, globalClasses } from './Checkbox.styles';\n\nexport interface CheckboxProps\n extends CommonProps,\n Override<\n React.InputHTMLAttributes<HTMLInputElement>,\n {\n /**\n * Контент `label`\n */\n children?: React.ReactNode;\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n /**\n * HTML-событие `mouseenter`.\n */\n onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-событие `mouseover`.\n */\n onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * Функция, вызываемая при изменении `value`.\n */\n onValueChange?: (value: boolean) => void;\n /**\n * HTML-событие `onblur`.\n */\n onBlur?: (event: React.FocusEvent<HTMLInputElement>) => void;\n /**\n * [Неопределённое состояние](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox#attr-indeterminate) чекбокса из HTML.\n */\n initialIndeterminate?: boolean;\n }\n > {}\n\nexport interface CheckboxState {\n focusedByTab: boolean;\n indeterminate: boolean;\n}\n@rootNode\nexport class Checkbox extends React.PureComponent<CheckboxProps, CheckboxState> {\n public static __KONTUR_REACT_UI__ = 'Checkbox';\n\n public static propTypes = {\n checked: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n warning: PropTypes.bool,\n onValueChange: PropTypes.func,\n onBlur: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseOver: PropTypes.func,\n };\n\n public state = {\n focusedByTab: false,\n indeterminate: this.props.initialIndeterminate || false,\n };\n\n private theme!: Theme;\n private input = React.createRef<HTMLInputElement>();\n\n public componentDidMount = () => {\n if (this.state.indeterminate && this.input.current) {\n this.input.current.indeterminate = true;\n }\n };\n private setRootNode!: TSetRootNode;\n\n public componentDidUpdate(prevProps: CheckboxProps) {\n if (prevProps.checked !== this.props.checked) {\n this.resetIndeterminate();\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * Программная установка фокуса чекбоксу.\n * @public\n */\n public focus() {\n keyListener.isTabPressed = true;\n this.input.current?.focus();\n }\n\n /**\n * Программное снятие фокуса с чекбокса.\n * @public\n */\n public blur() {\n this.input.current?.blur();\n }\n\n /**\n * Устанавливает чекбокс в HTML-состояние `indeterminate`.\n * @public\n */\n public setIndeterminate = () => {\n this.setState({\n indeterminate: true,\n });\n if (this.input.current) {\n this.input.current.indeterminate = true;\n }\n };\n\n /**\n * Снимает с чекбокса HTML-состояние `indeterminate`.\n * @public\n */\n public resetIndeterminate = () => {\n this.setState({\n indeterminate: false,\n });\n if (this.input.current) {\n this.input.current.indeterminate = false;\n }\n };\n\n private renderMain = (props: CommonWrapperRestProps<CheckboxProps>) => {\n const {\n error,\n warning,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onValueChange,\n type,\n initialIndeterminate,\n ...rest\n } = props;\n const isIndeterminate = this.state.indeterminate;\n\n const rootClass = cx({\n [styles.root(this.theme)]: true,\n [styles.rootFallback()]: isIE11 || isEdge,\n [styles.rootChecked(this.theme)]: props.checked || isIndeterminate,\n [styles.disabled(this.theme)]: Boolean(props.disabled),\n });\n\n const inputProps = {\n ...rest,\n type: 'checkbox',\n className: styles.input(),\n onChange: this.handleChange,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onClick: this.handleClick,\n ref: this.input,\n };\n\n let caption = null;\n if (this.props.children) {\n const captionClass = cx({\n [styles.caption(this.theme)]: true,\n [styles.captionIE11()]: isIE11 || isEdge,\n [styles.disabled(this.theme)]: Boolean(props.disabled),\n });\n caption = <span className={captionClass}>{this.props.children}</span>;\n }\n\n const iconClass = cx({\n [styles.icon(this.theme)]: true,\n [styles.iconUnchecked()]: !props.checked && !isIndeterminate,\n });\n\n const box = (\n <div className={cx(styles.boxWrapper(this.theme))}>\n <div\n className={cx(styles.box(this.theme), globalClasses.box, {\n [styles.boxChecked(this.theme)]: props.checked || isIndeterminate,\n [styles.boxFocus(this.theme)]: this.state.focusedByTab,\n [styles.boxError(this.theme)]: props.error,\n [styles.boxWarning(this.theme)]: props.warning,\n [styles.boxDisabled(this.theme)]: props.disabled,\n })}\n >\n {(isIndeterminate && <SquareIcon className={iconClass} />) || <OkIcon className={iconClass} />}\n </div>\n </div>\n );\n\n return (\n <label\n className={rootClass}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onMouseOver={onMouseOver}\n onClick={fixFirefoxModifiedClickOnLabel(this.input)}\n >\n <input {...inputProps} />\n {box}\n {caption}\n </label>\n );\n };\n\n private handleFocus = (e: React.FocusEvent<any>) => {\n if (!this.props.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n }\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n this.props.onBlur?.(e);\n this.setState({ focusedByTab: false });\n };\n\n private handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const checked = event.currentTarget.checked;\n this.props.onValueChange?.(checked);\n\n this.resetIndeterminate();\n\n this.props.onChange?.(event);\n };\n\n private handleClick = (e: React.MouseEvent<HTMLInputElement>) => {\n this.props.onClick?.(e);\n // support IE11's and old Edge's special behavior\n // https://github.com/jquery/jquery/issues/1698\n if (this.state.indeterminate && (isIE11 || isEdge)) {\n this.resetIndeterminate();\n // simulate correct behavior only if onValueChange is used\n // because we cant simulate real native onChange event\n if (this.props.onValueChange && this.input.current) {\n const checked = !this.input.current.checked;\n\n if (this.props.checked === undefined) {\n // in case of uncontrolled mode\n this.input.current.checked = checked;\n }\n\n this.props.onValueChange(checked);\n }\n }\n };\n}\n"]}
@@ -8,11 +8,11 @@ export interface CheckboxProps extends CommonProps, Override<React.InputHTMLAttr
8
8
  */
9
9
  children?: React.ReactNode;
10
10
  /**
11
- * Cостояние валидации при ошибке.
11
+ * Состояние валидации при ошибке.
12
12
  */
13
13
  error?: boolean;
14
14
  /**
15
- * Cостояние валидации при предупреждении.
15
+ * Состояние валидации при предупреждении.
16
16
  */
17
17
  warning?: boolean;
18
18
  /**
@@ -1 +1 @@
1
- {"version":3,"sources":["ComboBox.tsx"],"names":["React","CustomComboBox","rootNode","ComboBox","comboboxElement","customComboBoxRef","element","setRootNode","focus","blur","search","query","cancelSearch","open","close","selectInputText","reset","render","props","Component","__KONTUR_REACT_UI__","defaultProps","itemToValue","item","value","valueToString","label","renderValue","renderItem","menuAlign","searchOnFocus","drawArrow"],"mappings":"2JAAA,OAAOA,KAAP,MAAkB,OAAlB;;AAEA,SAASC,cAAT,QAA+B,+BAA/B;;;;;AAKA,SAASC,QAAT,QAAuC,oBAAvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkKA,WAAaC,QAAb,GADCD,QACD;;;;;;;;;;;;;AAaUE,IAAAA,eAbV,GAayD,IAbzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkGUC,IAAAA,iBAlGV,GAkG8B,UAACC,OAAD,EAA0C;AACpE,YAAKC,WAAL,CAAiBD,OAAjB;AACA,YAAKF,eAAL,GAAuBE,OAAvB;AACD,KArGH,gDAgBE;AACF;AACA,KAlBA,OAmBSE,KAnBT,GAmBE,iBAAe,CACb,IAAI,KAAKJ,eAAT,EAA0B,CACxB,KAAKA,eAAL,CAAqBI,KAArB,GACD,CACF,CAvBH,CAyBE;AACF;AACA,KA3BA,QA4BSC,IA5BT,GA4BE,gBAAc,CACZ,IAAI,KAAKL,eAAT,EAA0B,CACxB,KAAKA,eAAL,CAAqBK,IAArB,GACD,CACF,CAhCH,CAkCE;AACF;AACA;AACA;AACA;AACA;AACA,KAxCA,QAyCSC,MAzCT,GAyCE,gBAAcC,KAAd,EAA8B,CAC5B,IAAI,KAAKP,eAAT,EAA0B,CACxB,KAAKA,eAAL,CAAqBM,MAArB,CAA4BC,KAA5B,EACD,CACF,CA7CH,CA+CE;AACF;AACA,KAjDA,QAkDSC,YAlDT,GAkDE,wBAAsB,CACpB,IAAI,KAAKR,eAAT,EAA0B,CACxB,KAAKA,eAAL,CAAqBQ,YAArB,GACD,CACF,CAtDH,CAwDE;AACF;AACA,KA1DA,QA2DSC,IA3DT,GA2DE,gBAAc,CACZ,IAAI,KAAKT,eAAT,EAA0B,CACxB,KAAKA,eAAL,CAAqBS,IAArB,GACD,CACF,CA/DH,CAiEE;AACF;AACA,KAnEA,QAoESC,KApET,GAoEE,iBAAe,CACb,IAAI,KAAKV,eAAT,EAA0B,CACxB,KAAKA,eAAL,CAAqBU,KAArB,GACD,CACF,CAxEH,CA0EE;AACF;AACA;AACA,KA7EA,QA8ESC,eA9ET,GA8EE,2BAAyB,CACvB,IAAI,KAAKX,eAAT,EAA0B,CACxB,KAAKA,eAAL,CAAqBW,eAArB,GACD,CACF,CAlFH,CAoFE;AACF;AACA;AACA,KAvFA,QAwFSC,KAxFT,GAwFE,iBAAe,CACb,IAAI,KAAKZ,eAAT,EAA0B,CACxB,KAAKA,eAAL,CAAqBY,KAArB,GACD,CACF,CA5FH,QA8FSC,MA9FT,GA8FE,kBAAgB,CACd,oBAAO,oBAAC,cAAD,eAAoB,KAAKC,KAAzB,IAAgC,GAAG,EAAE,KAAKb,iBAA1C,IAAP,CACD,CAhGH,mBAAgDL,KAAK,CAACmB,SAAtD,WACgBC,mBADhB,GACsC,UADtC,UAGgBC,YAHhB,GAG+B,EAC3BC,WAAW,EAAE,qBAACC,IAAD,UAAwBA,IAAI,CAACC,KAA7B,EADc,EAE3BC,aAAa,EAAE,uBAACF,IAAD,UAAwBA,IAAI,CAACG,KAA7B,EAFY,EAG3BC,WAAW,EAAE,qBAACJ,IAAD,UAAwBA,IAAI,CAACG,KAA7B,EAHc,EAI3BE,UAAU,EAAE,oBAACL,IAAD,UAAwBA,IAAI,CAACG,KAA7B,EAJe,EAK3BG,SAAS,EAAE,MALgB,EAM3BC,aAAa,EAAE,IANY,EAO3BC,SAAS,EAAE,IAPgB,EAH/B","sourcesContent":["import React from 'react';\n\nimport { CustomComboBox } from '../../internal/CustomComboBox';\nimport { Nullable } from '../../typings/utility-types';\nimport { MenuItemState } from '../MenuItem';\nimport { InputIconType } from '../Input';\nimport { CommonProps } from '../../internal/CommonWrapper';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nexport interface ComboBoxProps<T> extends CommonProps {\n align?: 'left' | 'center' | 'right';\n /**\n * Вызывает функцию поиска `getItems` при фокусе и очистке поля ввода\n * @default true\n */\n searchOnFocus?: boolean;\n /**\n * Рисует справа иконку в виде стрелки\n * @default true\n */\n drawArrow?: boolean;\n\n autoFocus?: boolean;\n\n borderless?: boolean;\n\n /**\n * Не использовать Portal для рендеринга меню.\n * См. https://github.com/skbkontur/retail-ui/issues/15\n * @default false\n */\n disablePortal?: boolean;\n\n disabled?: boolean;\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n\n leftIcon?: InputIconType;\n\n rightIcon?: InputIconType;\n\n /**\n * Функция поиска элементов, должна возвращать Promise с массивом элементов.\n * По умолчанию ожидаются объекты с типом `{ value: string, label: string }`.\n *\n * Элементы могут быть любого типа. В этом случае необходимо определить\n * свойства `itemToValue`, `renderValue`, `renderItem`, `valueToString`\n */\n getItems: (query: string) => Promise<T[]>;\n\n /**\n * Необходим для сравнения полученных результатов с `value`\n * @default item => item.label\n */\n itemToValue: (item: T) => string | number;\n\n maxLength?: number;\n\n menuAlign?: 'left' | 'right';\n\n onBlur?: () => void;\n\n /** Вызывается при изменении `value` */\n onValueChange?: (value: T) => void;\n\n onFocus?: () => void;\n\n /**\n * Вызывается при изменении текста в поле ввода,\n * если результатом функции будет строка,\n * то она станет следующим состояним полем ввода\n */\n onInputValueChange?: (value: string) => Nullable<string> | void;\n\n /**\n * Функция для обработки ситуации, когда была введена\n * строка в инпут и был потерян фокус с элемента.\n *\n * Если при потере фокуса в выпадающем списке будет только один\n * элемент и результат `renderValue` с этим элементом будет\n * совпадать со значение в текстовом поле, то\n * сработает onValueChange со значением данного элемента\n *\n * Сама функция также может вернуть значение,\n * неравное `undefined`,\n * с которым будет вызван onValueChange.\n */\n onUnexpectedInput?: (value: string) => void | null | T;\n\n placeholder?: string;\n\n /**\n * Функция отрисовки элементов результата поиска.\n * Не применяется если элемент является функцией или React-элементом\n * @default item => item.label\n */\n renderItem: (item: T, state?: MenuItemState) => React.ReactNode;\n\n /**\n * Функция для отрисовки сообщения о пустом результате поиска\n * Если есть renderAddButton - не работает\n */\n renderNotFound?: () => React.ReactNode;\n\n /**\n * Функция отображающая сообщение об общем количестве элементов.\n * `found` учитывает только компонент `MenuItem`. Им \"оборачиваются\" элементы, возвращаемые `getItems()`.\n */\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n\n /**\n * Функция отрисовки выбранного значения\n * @default item => item.label\n */\n renderValue: (item: T) => React.ReactNode;\n\n /**\n * Функция отрисовки кнопки добавления в выпадающем списке\n */\n renderAddButton?: (query?: string) => React.ReactNode;\n\n /**\n * Общее количество элементов.\n * Необходим для работы `renderTotalCount`\n */\n totalCount?: number;\n\n /**\n * Выбранное значение\n * Ожидается, что `value` того же типа что и элементы в массиве,\n * возвращаемом в `getItems`\n */\n value?: Nullable<T>;\n\n /**\n * Необходим для преобразования `value` в строку при фокусировке\n * @default item => item.label\n */\n valueToString: (item: T) => string;\n\n size?: 'small' | 'medium' | 'large';\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n\n width?: string | number;\n\n maxMenuHeight?: number | string;\n\n onMouseEnter?: (e: React.MouseEvent) => void;\n\n onMouseOver?: (e: React.MouseEvent) => void;\n\n onMouseLeave?: (e: React.MouseEvent) => void;\n\n onInputKeyDown?: (e: React.KeyboardEvent<HTMLElement>) => void;\n\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode'];\n}\n\nexport interface ComboBoxItem {\n value: string;\n label: string;\n}\n\n@rootNode\nexport class ComboBox<T = ComboBoxItem> extends React.Component<ComboBoxProps<T>> {\n public static __KONTUR_REACT_UI__ = 'ComboBox';\n\n public static defaultProps = {\n itemToValue: (item: ComboBoxItem) => item.value,\n valueToString: (item: ComboBoxItem) => item.label,\n renderValue: (item: ComboBoxItem) => item.label,\n renderItem: (item: ComboBoxItem) => item.label,\n menuAlign: 'left',\n searchOnFocus: true,\n drawArrow: true,\n };\n\n private comboboxElement: Nullable<CustomComboBox<T>> = null;\n private setRootNode!: TSetRootNode;\n\n /**\n * @public\n */\n public focus() {\n if (this.comboboxElement) {\n this.comboboxElement.focus();\n }\n }\n\n /**\n * @public\n */\n public blur() {\n if (this.comboboxElement) {\n this.comboboxElement.blur();\n }\n }\n\n /**\n * Открывает выпадающий список и запускает поиск элементов\n *\n * @public\n * @param {string} [query] Текст поиска. По умолчанию берется\n * текст из инпута или результат `valueToString(value)`\n */\n public search(query?: string) {\n if (this.comboboxElement) {\n this.comboboxElement.search(query);\n }\n }\n\n /**\n * @public\n */\n public cancelSearch() {\n if (this.comboboxElement) {\n this.comboboxElement.cancelSearch();\n }\n }\n\n /**\n * @public Открывает выпадающий список\n */\n public open() {\n if (this.comboboxElement) {\n this.comboboxElement.open();\n }\n }\n\n /**\n * @public Закрывает выпадающий список\n */\n public close() {\n if (this.comboboxElement) {\n this.comboboxElement.close();\n }\n }\n\n /**\n * Выделяет текст внутри input\n * @public\n */\n public selectInputText() {\n if (this.comboboxElement) {\n this.comboboxElement.selectInputText();\n }\n }\n\n /**\n * Сбрасывает введенное пользователем значение\n * @public\n */\n public reset() {\n if (this.comboboxElement) {\n this.comboboxElement.reset();\n }\n }\n\n public render() {\n return <CustomComboBox {...this.props} ref={this.customComboBoxRef} />;\n }\n\n private customComboBoxRef = (element: Nullable<CustomComboBox<T>>) => {\n this.setRootNode(element);\n this.comboboxElement = element;\n };\n}\n"]}
1
+ {"version":3,"sources":["ComboBox.tsx"],"names":["React","CustomComboBox","rootNode","ComboBox","comboboxElement","customComboBoxRef","element","setRootNode","focus","blur","search","query","cancelSearch","open","close","selectInputText","reset","render","props","Component","__KONTUR_REACT_UI__","defaultProps","itemToValue","item","value","valueToString","label","renderValue","renderItem","menuAlign","searchOnFocus","drawArrow"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { CustomComboBox } from '../../internal/CustomComboBox';\nimport { Nullable } from '../../typings/utility-types';\nimport { MenuItemState } from '../MenuItem';\nimport { InputIconType } from '../Input';\nimport { CommonProps } from '../../internal/CommonWrapper';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nexport interface ComboBoxProps<T> extends CommonProps {\n align?: 'left' | 'center' | 'right';\n /**\n * Вызывает функцию поиска `getItems` при фокусе и очистке поля ввода\n * @default true\n */\n searchOnFocus?: boolean;\n /**\n * Рисует справа иконку в виде стрелки\n * @default true\n */\n drawArrow?: boolean;\n\n autoFocus?: boolean;\n\n borderless?: boolean;\n\n /**\n * Не использовать Portal для рендеринга меню.\n * См. https://github.com/skbkontur/retail-ui/issues/15\n * @default false\n */\n disablePortal?: boolean;\n\n disabled?: boolean;\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n\n leftIcon?: InputIconType;\n\n rightIcon?: InputIconType;\n\n /**\n * Функция поиска элементов, должна возвращать Promise с массивом элементов.\n * По умолчанию ожидаются объекты с типом `{ value: string, label: string }`.\n *\n * Элементы могут быть любого типа. В этом случае необходимо определить\n * свойства `itemToValue`, `renderValue`, `renderItem`, `valueToString`\n */\n getItems: (query: string) => Promise<T[]>;\n\n /**\n * Необходим для сравнения полученных результатов с `value`\n * @default item => item.label\n */\n itemToValue: (item: T) => string | number;\n\n maxLength?: number;\n\n menuAlign?: 'left' | 'right';\n\n onBlur?: () => void;\n\n /** Вызывается при изменении `value` */\n onValueChange?: (value: T) => void;\n\n onFocus?: () => void;\n\n /**\n * Вызывается при изменении текста в поле ввода,\n * если результатом функции будет строка,\n * то она станет следующим состоянием полем ввода\n */\n onInputValueChange?: (value: string) => Nullable<string> | void;\n\n /**\n * Функция для обработки ситуации, когда была введена\n * строка в инпут и был потерян фокус с элемента.\n *\n * Если при потере фокуса в выпадающем списке будет только один\n * элемент и результат `renderValue` с этим элементом будет\n * совпадать со значение в текстовом поле, то\n * сработает onValueChange со значением данного элемента\n *\n * Сама функция также может вернуть значение,\n * неравное `undefined`,\n * с которым будет вызван onValueChange.\n */\n onUnexpectedInput?: (value: string) => void | null | T;\n\n placeholder?: string;\n\n /**\n * Функция отрисовки элементов результата поиска.\n * Не применяется если элемент является функцией или React-элементом\n * @default item => item.label\n */\n renderItem: (item: T, state?: MenuItemState) => React.ReactNode;\n\n /**\n * Функция для отрисовки сообщения о пустом результате поиска\n * Если есть renderAddButton - не работает\n */\n renderNotFound?: () => React.ReactNode;\n\n /**\n * Функция отображающая сообщение об общем количестве элементов.\n * `found` учитывает только компонент `MenuItem`. Им \"оборачиваются\" элементы, возвращаемые `getItems()`.\n */\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n\n /**\n * Функция отрисовки выбранного значения\n * @default item => item.label\n */\n renderValue: (item: T) => React.ReactNode;\n\n /**\n * Функция отрисовки кнопки добавления в выпадающем списке\n */\n renderAddButton?: (query?: string) => React.ReactNode;\n\n /**\n * Общее количество элементов.\n * Необходим для работы `renderTotalCount`\n */\n totalCount?: number;\n\n /**\n * Выбранное значение\n * Ожидается, что `value` того же типа что и элементы в массиве,\n * возвращаемом в `getItems`\n */\n value?: Nullable<T>;\n\n /**\n * Необходим для преобразования `value` в строку при фокусировке\n * @default item => item.label\n */\n valueToString: (item: T) => string;\n\n size?: 'small' | 'medium' | 'large';\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n\n width?: string | number;\n\n maxMenuHeight?: number | string;\n\n onMouseEnter?: (e: React.MouseEvent) => void;\n\n onMouseOver?: (e: React.MouseEvent) => void;\n\n onMouseLeave?: (e: React.MouseEvent) => void;\n\n onInputKeyDown?: (e: React.KeyboardEvent<HTMLElement>) => void;\n\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode'];\n}\n\nexport interface ComboBoxItem {\n value: string;\n label: string;\n}\n\n@rootNode\nexport class ComboBox<T = ComboBoxItem> extends React.Component<ComboBoxProps<T>> {\n public static __KONTUR_REACT_UI__ = 'ComboBox';\n\n public static defaultProps = {\n itemToValue: (item: ComboBoxItem) => item.value,\n valueToString: (item: ComboBoxItem) => item.label,\n renderValue: (item: ComboBoxItem) => item.label,\n renderItem: (item: ComboBoxItem) => item.label,\n menuAlign: 'left',\n searchOnFocus: true,\n drawArrow: true,\n };\n\n private comboboxElement: Nullable<CustomComboBox<T>> = null;\n private setRootNode!: TSetRootNode;\n\n /**\n * @public\n */\n public focus() {\n if (this.comboboxElement) {\n this.comboboxElement.focus();\n }\n }\n\n /**\n * @public\n */\n public blur() {\n if (this.comboboxElement) {\n this.comboboxElement.blur();\n }\n }\n\n /**\n * Открывает выпадающий список и запускает поиск элементов\n *\n * @public\n * @param {string} [query] Текст поиска. По умолчанию берется\n * текст из инпута или результат `valueToString(value)`\n */\n public search(query?: string) {\n if (this.comboboxElement) {\n this.comboboxElement.search(query);\n }\n }\n\n /**\n * @public\n */\n public cancelSearch() {\n if (this.comboboxElement) {\n this.comboboxElement.cancelSearch();\n }\n }\n\n /**\n * @public Открывает выпадающий список\n */\n public open() {\n if (this.comboboxElement) {\n this.comboboxElement.open();\n }\n }\n\n /**\n * @public Закрывает выпадающий список\n */\n public close() {\n if (this.comboboxElement) {\n this.comboboxElement.close();\n }\n }\n\n /**\n * Выделяет текст внутри input\n * @public\n */\n public selectInputText() {\n if (this.comboboxElement) {\n this.comboboxElement.selectInputText();\n }\n }\n\n /**\n * Сбрасывает введенное пользователем значение\n * @public\n */\n public reset() {\n if (this.comboboxElement) {\n this.comboboxElement.reset();\n }\n }\n\n public render() {\n return <CustomComboBox {...this.props} ref={this.customComboBoxRef} />;\n }\n\n private customComboBoxRef = (element: Nullable<CustomComboBox<T>>) => {\n this.setRootNode(element);\n this.comboboxElement = element;\n };\n}\n"]}
@@ -25,7 +25,7 @@ export interface ComboBoxProps<T> extends CommonProps {
25
25
  disablePortal?: boolean;
26
26
  disabled?: boolean;
27
27
  /**
28
- * Cостояние валидации при ошибке.
28
+ * Состояние валидации при ошибке.
29
29
  */
30
30
  error?: boolean;
31
31
  leftIcon?: InputIconType;
@@ -52,7 +52,7 @@ export interface ComboBoxProps<T> extends CommonProps {
52
52
  /**
53
53
  * Вызывается при изменении текста в поле ввода,
54
54
  * если результатом функции будет строка,
55
- * то она станет следующим состояним полем ввода
55
+ * то она станет следующим состоянием полем ввода
56
56
  */
57
57
  onInputValueChange?: (value: string) => Nullable<string> | void;
58
58
  /**
@@ -113,7 +113,7 @@ export interface ComboBoxProps<T> extends CommonProps {
113
113
  valueToString: (item: T) => string;
114
114
  size?: 'small' | 'medium' | 'large';
115
115
  /**
116
- * Cостояние валидации при предупреждении.
116
+ * Состояние валидации при предупреждении.
117
117
  */
118
118
  warning?: boolean;
119
119
  width?: string | number;
@@ -377,10 +377,10 @@ var CurrencyInput = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (
377
377
  selectionStart = _event$target.selectionStart,
378
378
  selectionEnd = _event$target.selectionEnd,
379
379
  selectionDirection = _event$target.selectionDirection;
380
- var valueLenght = event.target.value.length;
380
+ var valueLength = event.target.value.length;
381
381
  var selection = {
382
- start: selectionStart !== selectionEnd ? selectionStart || 0 : selectionStart || valueLenght,
383
- end: selectionEnd !== selectionStart ? selectionEnd || 0 : selectionEnd || valueLenght,
382
+ start: selectionStart !== selectionEnd ? selectionStart || 0 : selectionStart || valueLength,
383
+ end: selectionEnd !== selectionStart ? selectionEnd || 0 : selectionEnd || valueLength,
384
384
  direction: selectionDirection || 'none'
385
385
  };
386
386