@skbkontur/react-ui 3.8.4 → 3.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/cjs/components/Button/Button.d.ts +66 -10
  3. package/cjs/components/Button/Button.js +55 -0
  4. package/cjs/components/Button/Button.js.map +1 -1
  5. package/cjs/components/Button/Button.md +42 -30
  6. package/cjs/components/Checkbox/Checkbox.d.ts +31 -14
  7. package/cjs/components/Checkbox/Checkbox.js +26 -7
  8. package/cjs/components/Checkbox/Checkbox.js.map +1 -1
  9. package/cjs/components/Checkbox/Checkbox.md +92 -51
  10. package/cjs/components/ComboBox/ComboBox.d.ts +6 -0
  11. package/cjs/components/ComboBox/ComboBox.js +4 -0
  12. package/cjs/components/ComboBox/ComboBox.js.map +1 -1
  13. package/cjs/components/DateInput/DateInput.d.ts +6 -0
  14. package/cjs/components/DateInput/DateInput.js +6 -0
  15. package/cjs/components/DateInput/DateInput.js.map +1 -1
  16. package/cjs/components/DatePicker/DatePicker.d.ts +6 -0
  17. package/cjs/components/DatePicker/DatePicker.js +6 -0
  18. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  19. package/cjs/components/Dropdown/Dropdown.d.ts +2 -2
  20. package/cjs/components/Dropdown/Dropdown.js.map +1 -1
  21. package/cjs/components/Hint/Hint.d.ts +38 -0
  22. package/cjs/components/Hint/Hint.js +39 -1
  23. package/cjs/components/Hint/Hint.js.map +1 -1
  24. package/cjs/components/Hint/Hint.md +40 -1
  25. package/cjs/components/Input/Input.d.ts +6 -2
  26. package/cjs/components/Input/Input.js +4 -0
  27. package/cjs/components/Input/Input.js.map +1 -1
  28. package/cjs/components/Link/Link.d.ts +28 -10
  29. package/cjs/components/Link/Link.js +25 -10
  30. package/cjs/components/Link/Link.js.map +1 -1
  31. package/cjs/components/Link/Link.md +73 -7
  32. package/cjs/components/Link/Link.mixins.js +2 -1
  33. package/cjs/components/Link/Link.mixins.js.map +1 -1
  34. package/cjs/components/MenuItem/MenuItem.d.ts +42 -7
  35. package/cjs/components/MenuItem/MenuItem.js +30 -0
  36. package/cjs/components/MenuItem/MenuItem.js.map +1 -1
  37. package/cjs/components/Radio/Radio.d.ts +27 -11
  38. package/cjs/components/Radio/Radio.js +19 -6
  39. package/cjs/components/Radio/Radio.js.map +1 -1
  40. package/cjs/components/Radio/Radio.md +36 -12
  41. package/cjs/components/RadioGroup/RadioGroup.d.ts +2 -2
  42. package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
  43. package/cjs/components/Select/Select.d.ts +4 -1
  44. package/cjs/components/Select/Select.js +3 -0
  45. package/cjs/components/Select/Select.js.map +1 -1
  46. package/cjs/components/SidePage/SidePage.d.ts +5 -1
  47. package/cjs/components/SidePage/SidePage.js +11 -16
  48. package/cjs/components/SidePage/SidePage.js.map +1 -1
  49. package/cjs/components/SidePage/SidePage.styles.d.ts +5 -2
  50. package/cjs/components/SidePage/SidePage.styles.js +52 -35
  51. package/cjs/components/SidePage/SidePage.styles.js.map +1 -1
  52. package/cjs/components/SidePage/SidePageFooter.js +1 -1
  53. package/cjs/components/SidePage/SidePageFooter.js.map +1 -1
  54. package/cjs/components/SidePage/SidePageHeader.js +1 -1
  55. package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
  56. package/cjs/components/Tabs/Tab.d.ts +2 -2
  57. package/cjs/components/Tabs/Tab.js.map +1 -1
  58. package/cjs/components/Textarea/Textarea.d.ts +6 -2
  59. package/cjs/components/Textarea/Textarea.js +9 -2
  60. package/cjs/components/Textarea/Textarea.js.map +1 -1
  61. package/cjs/components/Textarea/Textarea.styles.d.ts +1 -0
  62. package/cjs/components/Textarea/Textarea.styles.js +22 -19
  63. package/cjs/components/Textarea/Textarea.styles.js.map +1 -1
  64. package/cjs/components/Toggle/Toggle.d.ts +2 -2
  65. package/cjs/components/Toggle/Toggle.js.map +1 -1
  66. package/cjs/components/Token/Token.d.ts +6 -0
  67. package/cjs/components/Token/Token.js +6 -0
  68. package/cjs/components/Token/Token.js.map +1 -1
  69. package/cjs/components/TokenInput/TokenInput.d.ts +6 -0
  70. package/cjs/components/TokenInput/TokenInput.js +23 -17
  71. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  72. package/cjs/components/TokenInput/TokenInputMenu.js +1 -1
  73. package/cjs/components/TokenInput/TokenInputMenu.js.map +1 -1
  74. package/cjs/components/Tooltip/Tooltip.d.ts +3 -2
  75. package/cjs/components/Tooltip/Tooltip.js +3 -1
  76. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  77. package/cjs/internal/Calendar/Calendar.js +1 -1
  78. package/cjs/internal/Calendar/Calendar.js.map +1 -1
  79. package/cjs/internal/CustomComboBox/ComboBoxMenu.js +1 -1
  80. package/cjs/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
  81. package/cjs/internal/CustomComboBox/ComboBoxView.d.ts +6 -0
  82. package/cjs/internal/CustomComboBox/ComboBoxView.js +6 -0
  83. package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  84. package/cjs/internal/CustomComboBox/CustomComboBox.d.ts +6 -0
  85. package/cjs/internal/CustomComboBox/CustomComboBox.js +11 -9
  86. package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
  87. package/cjs/internal/InputLikeText/InputLikeText.js +2 -2
  88. package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
  89. package/cjs/internal/Popup/Popup.d.ts +13 -0
  90. package/cjs/internal/Popup/Popup.js +34 -6
  91. package/cjs/internal/Popup/Popup.js.map +1 -1
  92. package/cjs/internal/Popup/PopupHelper.js +1 -0
  93. package/cjs/internal/Popup/PopupHelper.js.map +1 -1
  94. package/cjs/internal/PopupMenu/PopupMenu.d.ts +0 -1
  95. package/cjs/internal/PopupMenu/PopupMenu.js +1 -2
  96. package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
  97. package/cjs/lib/forwardRefAndName.d.ts +5 -0
  98. package/cjs/lib/forwardRefAndName.js +23 -0
  99. package/cjs/lib/forwardRefAndName.js.map +1 -0
  100. package/components/Button/Button/Button.js.map +1 -1
  101. package/components/Button/Button.d.ts +66 -10
  102. package/components/Button/Button.md +42 -30
  103. package/components/Checkbox/Checkbox/Checkbox.js +4 -6
  104. package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
  105. package/components/Checkbox/Checkbox.d.ts +31 -14
  106. package/components/Checkbox/Checkbox.md +92 -51
  107. package/components/ComboBox/ComboBox/ComboBox.js.map +1 -1
  108. package/components/ComboBox/ComboBox.d.ts +6 -0
  109. package/components/DateInput/DateInput/DateInput.js.map +1 -1
  110. package/components/DateInput/DateInput.d.ts +6 -0
  111. package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
  112. package/components/DatePicker/DatePicker.d.ts +6 -0
  113. package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
  114. package/components/Dropdown/Dropdown.d.ts +2 -2
  115. package/components/Hint/Hint/Hint.js +4 -0
  116. package/components/Hint/Hint/Hint.js.map +1 -1
  117. package/components/Hint/Hint.d.ts +38 -0
  118. package/components/Hint/Hint.md +40 -1
  119. package/components/Input/Input/Input.js.map +1 -1
  120. package/components/Input/Input.d.ts +6 -2
  121. package/components/Link/Link/Link.js +5 -12
  122. package/components/Link/Link/Link.js.map +1 -1
  123. package/components/Link/Link.d.ts +28 -10
  124. package/components/Link/Link.md +73 -7
  125. package/components/Link/Link.mixins/Link.mixins.js +1 -1
  126. package/components/Link/Link.mixins/Link.mixins.js.map +1 -1
  127. package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
  128. package/components/MenuItem/MenuItem.d.ts +42 -7
  129. package/components/Radio/Radio/Radio.js +6 -5
  130. package/components/Radio/Radio/Radio.js.map +1 -1
  131. package/components/Radio/Radio.d.ts +27 -11
  132. package/components/Radio/Radio.md +36 -12
  133. package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
  134. package/components/RadioGroup/RadioGroup.d.ts +2 -2
  135. package/components/Select/Select/Select.js.map +1 -1
  136. package/components/Select/Select.d.ts +4 -1
  137. package/components/SidePage/SidePage/SidePage.js +16 -28
  138. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  139. package/components/SidePage/SidePage.d.ts +5 -1
  140. package/components/SidePage/SidePage.styles/SidePage.styles.js +39 -30
  141. package/components/SidePage/SidePage.styles/SidePage.styles.js.map +1 -1
  142. package/components/SidePage/SidePage.styles.d.ts +5 -2
  143. package/components/SidePage/SidePageFooter/SidePageFooter.js +1 -0
  144. package/components/SidePage/SidePageFooter/SidePageFooter.js.map +1 -1
  145. package/components/SidePage/SidePageHeader/SidePageHeader.js +2 -1
  146. package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
  147. package/components/Tabs/Tab/Tab.js.map +1 -1
  148. package/components/Tabs/Tab.d.ts +2 -2
  149. package/components/Textarea/Textarea/Textarea.js +5 -3
  150. package/components/Textarea/Textarea/Textarea.js.map +1 -1
  151. package/components/Textarea/Textarea.d.ts +6 -2
  152. package/components/Textarea/Textarea.styles/Textarea.styles.js +12 -9
  153. package/components/Textarea/Textarea.styles/Textarea.styles.js.map +1 -1
  154. package/components/Textarea/Textarea.styles.d.ts +1 -0
  155. package/components/Toggle/Toggle/Toggle.js.map +1 -1
  156. package/components/Toggle/Toggle.d.ts +2 -2
  157. package/components/Token/Token/Token.js.map +1 -1
  158. package/components/Token/Token.d.ts +6 -0
  159. package/components/TokenInput/TokenInput/TokenInput.js +30 -19
  160. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  161. package/components/TokenInput/TokenInput.d.ts +6 -0
  162. package/components/TokenInput/TokenInputMenu/TokenInputMenu.js +2 -2
  163. package/components/TokenInput/TokenInputMenu/TokenInputMenu.js.map +1 -1
  164. package/components/Tooltip/Tooltip/Tooltip.js +2 -1
  165. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  166. package/components/Tooltip/Tooltip.d.ts +3 -2
  167. package/internal/Calendar/Calendar/Calendar.js +2 -1
  168. package/internal/Calendar/Calendar/Calendar.js.map +1 -1
  169. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js +4 -2
  170. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js.map +1 -1
  171. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
  172. package/internal/CustomComboBox/ComboBoxView.d.ts +6 -0
  173. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js +5 -12
  174. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
  175. package/internal/CustomComboBox/CustomComboBox.d.ts +6 -0
  176. package/internal/InputLikeText/InputLikeText/InputLikeText.js +1 -1
  177. package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
  178. package/internal/Popup/Popup/Popup.js +15 -6
  179. package/internal/Popup/Popup/Popup.js.map +1 -1
  180. package/internal/Popup/Popup.d.ts +13 -0
  181. package/internal/Popup/PopupHelper/PopupHelper.js +2 -1
  182. package/internal/Popup/PopupHelper/PopupHelper.js.map +1 -1
  183. package/internal/PopupMenu/PopupMenu/PopupMenu.js +0 -1
  184. package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
  185. package/internal/PopupMenu/PopupMenu.d.ts +0 -1
  186. package/lib/forwardRefAndName/forwardRefAndName.js +11 -0
  187. package/lib/forwardRefAndName/forwardRefAndName.js.map +1 -0
  188. package/lib/forwardRefAndName/package.json +6 -0
  189. package/lib/forwardRefAndName.d.ts +5 -0
  190. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["DatePicker.tsx"],"names":["PropTypes","React","findDOMNode","InternalDate","InternalDateTransformer","MAX_FULLDATE","MIN_FULLDATE","InternalDateOrder","InternalDateSeparator","InternalDateValidateCheck","DateInput","DropdownContainer","filterProps","CommonWrapper","isMobile","NativeDateInput","isNonNullable","Picker","styles","INPUT_PASS_PROPS","autoFocus","disabled","warning","error","size","onKeyDown","MIN_WIDTH","DatePicker","state","opened","canUseMobileNativeDatePicker","input","focused","internalDate","parseValueToDate","props","value","minDate","maxDate","renderMain","picker","date","toNativeFormat","menuAlign","undefined","handlePick","handleSelect","enableTodayLink","isHoliday","root","getRootStyle","onMouseEnter","onMouseLeave","onMouseOver","getInputRef","handleBlur","handleFocus","onValueChange","width","minWidth","ref","setState","onFocus","close","onBlur","dateShape","blur","month","year","dateToInternalString","isWeekend","dateString","componentDidMount","useMobileNativeDatePicker","focus","UNSAFE_componentWillReceiveProps","nextProps","render","validate","checks","NotNull","Native","Component","__KONTUR_REACT_UI__","propTypes","bool","string","isRequired","oneOf","oneOfType","number","func","defaultProps","_day","range","order","DMY","separator","Dot","setRangeStart","setRangeEnd","parseValue","Number","Limits","Range"],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\nimport { findDOMNode } from 'react-dom';\n\nimport { InternalDate } from '../../lib/date/InternalDate';\nimport { InternalDateTransformer } from '../../lib/date/InternalDateTransformer';\nimport { MAX_FULLDATE, MIN_FULLDATE } from '../../lib/date/constants';\nimport { InternalDateOrder, InternalDateSeparator, InternalDateValidateCheck } from '../../lib/date/types';\nimport { Nullable } from '../../typings/utility-types';\nimport { CalendarDateShape } from '../../internal/Calendar';\nimport { DateInput } from '../DateInput';\nimport { DropdownContainer } from '../../internal/DropdownContainer';\nimport { filterProps } from '../../lib/filterProps';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { isMobile } from '../../lib/client';\nimport { NativeDateInput } from '../../internal/NativeDateInput';\nimport { isNonNullable } from '../../lib/utils';\n\nimport { Picker } from './Picker';\nimport { styles } from './DatePicker.styles';\n\nconst INPUT_PASS_PROPS = {\n autoFocus: true,\n disabled: true,\n warning: true,\n error: true,\n size: true,\n onKeyDown: true,\n};\n\nexport const MIN_WIDTH = 120;\n\nexport interface DatePickerProps<T> extends CommonProps {\n autoFocus?: boolean;\n disabled?: boolean;\n enableTodayLink?: boolean;\n error?: boolean;\n minDate: T;\n maxDate: T;\n menuAlign?: 'left' | 'right';\n size?: 'small' | 'medium' | 'large';\n value?: T | null;\n warning?: boolean;\n width?: number | string;\n onBlur?: () => void;\n /**\n * Вызывается при изменении `value`\n *\n * @param value - строка в формате `dd.mm.yyyy`.\n */\n onValueChange: (value: T) => void;\n onFocus?: () => void;\n onKeyDown?: (e: React.KeyboardEvent<any>) => void;\n onMouseEnter?: (e: React.MouseEvent<any>) => void;\n onMouseLeave?: (e: React.MouseEvent<any>) => void;\n onMouseOver?: (e: React.MouseEvent<any>) => void;\n /**\n * Использовать на мобильных устройствах нативный календарь для выбора дат.\n *\n * - На iOS нативный календарь не умеет работать с minDate и maxDate\n */\n useMobileNativeDatePicker?: boolean;\n\n /**\n * Функция для определения праздничных дней\n * @default (_day, isWeekend) => isWeekend\n * @param {T} day - строка в формате `dd.mm.yyyy`\n * @param {boolean} isWeekend - флаг выходного (суббота или воскресенье)\n *\n * @returns {boolean} `true` для выходного или `false` для рабочего дня\n */\n isHoliday: (day: T, isWeekend: boolean) => boolean;\n}\n\nexport interface DatePickerState {\n opened: boolean;\n canUseMobileNativeDatePicker: boolean;\n}\n\ntype DatePickerValue = string;\n\nexport class DatePicker extends React.Component<DatePickerProps<DatePickerValue>, DatePickerState> {\n public static __KONTUR_REACT_UI__ = 'DatePicker';\n\n public static propTypes = {\n autoFocus: PropTypes.bool,\n\n disabled: PropTypes.bool,\n\n /**\n * Включает кнопку сегодня в календаре\n */\n enableTodayLink: PropTypes.bool,\n\n error: PropTypes.bool,\n\n /**\n * Максимальная дата в календаре.\n */\n maxDate: PropTypes.string.isRequired,\n\n menuAlign: PropTypes.oneOf(['left', 'right'] as Array<'left' | 'right'>),\n\n /**\n * Минимальная дата в календаре.\n */\n minDate: PropTypes.string.isRequired,\n\n /**\n * Строка формата `dd.mm.yyyy`\n */\n value: PropTypes.string,\n\n warning: PropTypes.bool,\n\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n\n onBlur: PropTypes.func,\n\n onValueChange: PropTypes.func.isRequired,\n\n onFocus: PropTypes.func,\n\n onKeyDown: PropTypes.func,\n\n onMouseEnter: PropTypes.func,\n\n onMouseLeave: PropTypes.func,\n\n onMouseOver: PropTypes.func,\n\n isHoliday: PropTypes.func.isRequired,\n };\n\n public static defaultProps = {\n minDate: MIN_FULLDATE,\n maxDate: MAX_FULLDATE,\n isHoliday: (_day: DatePickerValue, isWeekend: boolean) => isWeekend,\n };\n\n public static validate = (value: Nullable<string>, range: { minDate?: string; maxDate?: string } = {}) => {\n if (!value) {\n return false;\n }\n\n const { minDate = MIN_FULLDATE, maxDate = MAX_FULLDATE } = range;\n const internalDate = new InternalDate({\n order: InternalDateOrder.DMY,\n separator: InternalDateSeparator.Dot,\n })\n .setRangeStart(new InternalDate({ value: minDate }))\n .setRangeEnd(new InternalDate({ value: maxDate }))\n .parseValue(value);\n\n return internalDate.validate({\n checks: [\n InternalDateValidateCheck.NotNull,\n InternalDateValidateCheck.Number,\n InternalDateValidateCheck.Native,\n InternalDateValidateCheck.Limits,\n InternalDateValidateCheck.Range,\n ],\n });\n };\n\n public state: DatePickerState = { opened: false, canUseMobileNativeDatePicker: false };\n\n private input: DateInput | null = null;\n private focused = false;\n private internalDate?: InternalDate = this.parseValueToDate(this.props.value);\n private minDate?: InternalDate = this.parseValueToDate(this.props.minDate);\n private maxDate?: InternalDate = this.parseValueToDate(this.props.maxDate);\n\n public componentDidMount() {\n if (this.props.useMobileNativeDatePicker && isMobile) {\n this.setState({\n canUseMobileNativeDatePicker: true,\n });\n }\n if (this.props.autoFocus) {\n this.focus();\n }\n }\n\n public UNSAFE_componentWillReceiveProps(nextProps: DatePickerProps<DatePickerValue>) {\n const { disabled } = nextProps;\n const { opened } = this.state;\n if (disabled && opened) {\n this.close();\n }\n this.internalDate = this.parseValueToDate(nextProps.value);\n this.minDate = this.parseValueToDate(nextProps.minDate);\n this.maxDate = this.parseValueToDate(nextProps.maxDate);\n }\n\n /**\n * @public\n */\n public blur() {\n if (this.input) {\n this.input.blur();\n }\n this.handleBlur();\n }\n\n /**\n * @public\n */\n public focus() {\n if (this.props.disabled) {\n return;\n }\n if (this.input) {\n this.input.focus();\n }\n this.handleFocus();\n }\n\n /**\n * Закрывает выпадашку выбора дня\n * @public\n */\n public close() {\n this.setState({ opened: false });\n }\n\n public render() {\n return <CommonWrapper {...this.props}>{this.renderMain}</CommonWrapper>;\n }\n\n public renderMain = (props: CommonWrapperRestProps<DatePickerProps<DatePickerValue>>) => {\n let picker = null;\n const date = this.internalDate ? this.internalDate.toNativeFormat() : null;\n if (this.state.opened) {\n picker = (\n <DropdownContainer getParent={() => findDOMNode(this)} offsetY={2} align={this.props.menuAlign}>\n <Picker\n value={date}\n minDate={(this.minDate && this.minDate.toNativeFormat()) || undefined}\n maxDate={(this.maxDate && this.maxDate.toNativeFormat()) || undefined}\n onPick={this.handlePick}\n onSelect={this.handleSelect}\n enableTodayLink={this.props.enableTodayLink}\n isHoliday={this.isHoliday}\n />\n </DropdownContainer>\n );\n }\n\n return (\n <label\n className={styles.root()}\n style={this.getRootStyle()}\n onMouseEnter={this.props.onMouseEnter}\n onMouseLeave={this.props.onMouseLeave}\n onMouseOver={this.props.onMouseOver}\n >\n <DateInput\n {...filterProps(props, INPUT_PASS_PROPS)}\n ref={this.getInputRef}\n value={this.props.value || ''}\n width=\"100%\"\n withIcon\n minDate={this.props.minDate}\n maxDate={this.props.maxDate}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onValueChange={this.props.onValueChange}\n />\n {this.state.canUseMobileNativeDatePicker && (\n <NativeDateInput\n onValueChange={this.props.onValueChange}\n value={this.props.value || ''}\n minDate={this.props.minDate}\n maxDate={this.props.maxDate}\n disabled={this.props.disabled}\n />\n )}\n {!this.state.canUseMobileNativeDatePicker && picker}\n </label>\n );\n };\n\n private getRootStyle = () => {\n const { width } = this.props;\n return isNonNullable(width) ? { width } : { minWidth: MIN_WIDTH };\n };\n\n private getInputRef = (ref: DateInput | null) => {\n this.input = ref;\n };\n\n private parseValueToDate(value?: Nullable<string>): InternalDate | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n const date = new InternalDate({ value });\n if (date.validate({ checks: [InternalDateValidateCheck.NotNull, InternalDateValidateCheck.Native] })) {\n return date;\n }\n return undefined;\n }\n\n private handleFocus = () => {\n if (this.focused) {\n return;\n }\n\n this.focused = true;\n\n this.setState({ opened: true });\n\n if (this.props.onFocus) {\n this.props.onFocus();\n }\n };\n\n private handleBlur = () => {\n if (!this.focused) {\n return;\n }\n\n this.focused = false;\n this.close();\n\n if (this.props.onBlur) {\n this.props.onBlur();\n }\n };\n\n private handlePick = (dateShape: CalendarDateShape) => {\n this.handleSelect(dateShape);\n this.blur();\n };\n\n private handleSelect = ({ date, month, year }: CalendarDateShape) => {\n const value = InternalDateTransformer.dateToInternalString({ date, month: month + 1, year });\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n\n private isHoliday = ({ date, month, year, isWeekend }: CalendarDateShape & { isWeekend: boolean }) => {\n const dateString = InternalDateTransformer.dateToInternalString({ date, month: month + 1, year });\n return this.props.isHoliday(dateString, isWeekend);\n };\n}\n"]}
1
+ {"version":3,"sources":["DatePicker.tsx"],"names":["PropTypes","React","findDOMNode","InternalDate","InternalDateTransformer","MAX_FULLDATE","MIN_FULLDATE","InternalDateOrder","InternalDateSeparator","InternalDateValidateCheck","DateInput","DropdownContainer","filterProps","CommonWrapper","isMobile","NativeDateInput","isNonNullable","Picker","styles","INPUT_PASS_PROPS","autoFocus","disabled","warning","error","size","onKeyDown","MIN_WIDTH","DatePicker","state","opened","canUseMobileNativeDatePicker","input","focused","internalDate","parseValueToDate","props","value","minDate","maxDate","renderMain","picker","date","toNativeFormat","menuAlign","undefined","handlePick","handleSelect","enableTodayLink","isHoliday","root","getRootStyle","onMouseEnter","onMouseLeave","onMouseOver","getInputRef","handleBlur","handleFocus","onValueChange","width","minWidth","ref","setState","onFocus","close","onBlur","dateShape","blur","month","year","dateToInternalString","isWeekend","dateString","componentDidMount","useMobileNativeDatePicker","focus","UNSAFE_componentWillReceiveProps","nextProps","render","validate","checks","NotNull","Native","Component","__KONTUR_REACT_UI__","propTypes","bool","string","isRequired","oneOf","oneOfType","number","func","defaultProps","_day","range","order","DMY","separator","Dot","setRangeStart","setRangeEnd","parseValue","Number","Limits","Range"],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\nimport { findDOMNode } from 'react-dom';\n\nimport { InternalDate } from '../../lib/date/InternalDate';\nimport { InternalDateTransformer } from '../../lib/date/InternalDateTransformer';\nimport { MAX_FULLDATE, MIN_FULLDATE } from '../../lib/date/constants';\nimport { InternalDateOrder, InternalDateSeparator, InternalDateValidateCheck } from '../../lib/date/types';\nimport { Nullable } from '../../typings/utility-types';\nimport { CalendarDateShape } from '../../internal/Calendar';\nimport { DateInput } from '../DateInput';\nimport { DropdownContainer } from '../../internal/DropdownContainer';\nimport { filterProps } from '../../lib/filterProps';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { isMobile } from '../../lib/client';\nimport { NativeDateInput } from '../../internal/NativeDateInput';\nimport { isNonNullable } from '../../lib/utils';\n\nimport { Picker } from './Picker';\nimport { styles } from './DatePicker.styles';\n\nconst INPUT_PASS_PROPS = {\n autoFocus: true,\n disabled: true,\n warning: true,\n error: true,\n size: true,\n onKeyDown: true,\n};\n\nexport const MIN_WIDTH = 120;\n\nexport interface DatePickerProps<T> extends CommonProps {\n autoFocus?: boolean;\n disabled?: boolean;\n enableTodayLink?: boolean;\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n minDate: T;\n maxDate: T;\n menuAlign?: 'left' | 'right';\n size?: 'small' | 'medium' | 'large';\n value?: T | null;\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n width?: number | string;\n onBlur?: () => void;\n /**\n * Вызывается при изменении `value`\n *\n * @param value - строка в формате `dd.mm.yyyy`.\n */\n onValueChange: (value: T) => void;\n onFocus?: () => void;\n onKeyDown?: (e: React.KeyboardEvent<any>) => void;\n onMouseEnter?: (e: React.MouseEvent<any>) => void;\n onMouseLeave?: (e: React.MouseEvent<any>) => void;\n onMouseOver?: (e: React.MouseEvent<any>) => void;\n /**\n * Использовать на мобильных устройствах нативный календарь для выбора дат.\n *\n * - На iOS нативный календарь не умеет работать с minDate и maxDate\n */\n useMobileNativeDatePicker?: boolean;\n\n /**\n * Функция для определения праздничных дней\n * @default (_day, isWeekend) => isWeekend\n * @param {T} day - строка в формате `dd.mm.yyyy`\n * @param {boolean} isWeekend - флаг выходного (суббота или воскресенье)\n *\n * @returns {boolean} `true` для выходного или `false` для рабочего дня\n */\n isHoliday: (day: T, isWeekend: boolean) => boolean;\n}\n\nexport interface DatePickerState {\n opened: boolean;\n canUseMobileNativeDatePicker: boolean;\n}\n\ntype DatePickerValue = string;\n\nexport class DatePicker extends React.Component<DatePickerProps<DatePickerValue>, DatePickerState> {\n public static __KONTUR_REACT_UI__ = 'DatePicker';\n\n public static propTypes = {\n autoFocus: PropTypes.bool,\n\n disabled: PropTypes.bool,\n\n /**\n * Включает кнопку сегодня в календаре\n */\n enableTodayLink: PropTypes.bool,\n\n error: PropTypes.bool,\n\n /**\n * Максимальная дата в календаре.\n */\n maxDate: PropTypes.string.isRequired,\n\n menuAlign: PropTypes.oneOf(['left', 'right'] as Array<'left' | 'right'>),\n\n /**\n * Минимальная дата в календаре.\n */\n minDate: PropTypes.string.isRequired,\n\n /**\n * Строка формата `dd.mm.yyyy`\n */\n value: PropTypes.string,\n\n warning: PropTypes.bool,\n\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n\n onBlur: PropTypes.func,\n\n onValueChange: PropTypes.func.isRequired,\n\n onFocus: PropTypes.func,\n\n onKeyDown: PropTypes.func,\n\n onMouseEnter: PropTypes.func,\n\n onMouseLeave: PropTypes.func,\n\n onMouseOver: PropTypes.func,\n\n isHoliday: PropTypes.func.isRequired,\n };\n\n public static defaultProps = {\n minDate: MIN_FULLDATE,\n maxDate: MAX_FULLDATE,\n isHoliday: (_day: DatePickerValue, isWeekend: boolean) => isWeekend,\n };\n\n public static validate = (value: Nullable<string>, range: { minDate?: string; maxDate?: string } = {}) => {\n if (!value) {\n return false;\n }\n\n const { minDate = MIN_FULLDATE, maxDate = MAX_FULLDATE } = range;\n const internalDate = new InternalDate({\n order: InternalDateOrder.DMY,\n separator: InternalDateSeparator.Dot,\n })\n .setRangeStart(new InternalDate({ value: minDate }))\n .setRangeEnd(new InternalDate({ value: maxDate }))\n .parseValue(value);\n\n return internalDate.validate({\n checks: [\n InternalDateValidateCheck.NotNull,\n InternalDateValidateCheck.Number,\n InternalDateValidateCheck.Native,\n InternalDateValidateCheck.Limits,\n InternalDateValidateCheck.Range,\n ],\n });\n };\n\n public state: DatePickerState = { opened: false, canUseMobileNativeDatePicker: false };\n\n private input: DateInput | null = null;\n private focused = false;\n private internalDate?: InternalDate = this.parseValueToDate(this.props.value);\n private minDate?: InternalDate = this.parseValueToDate(this.props.minDate);\n private maxDate?: InternalDate = this.parseValueToDate(this.props.maxDate);\n\n public componentDidMount() {\n if (this.props.useMobileNativeDatePicker && isMobile) {\n this.setState({\n canUseMobileNativeDatePicker: true,\n });\n }\n if (this.props.autoFocus) {\n this.focus();\n }\n }\n\n public UNSAFE_componentWillReceiveProps(nextProps: DatePickerProps<DatePickerValue>) {\n const { disabled } = nextProps;\n const { opened } = this.state;\n if (disabled && opened) {\n this.close();\n }\n this.internalDate = this.parseValueToDate(nextProps.value);\n this.minDate = this.parseValueToDate(nextProps.minDate);\n this.maxDate = this.parseValueToDate(nextProps.maxDate);\n }\n\n /**\n * @public\n */\n public blur() {\n if (this.input) {\n this.input.blur();\n }\n this.handleBlur();\n }\n\n /**\n * @public\n */\n public focus() {\n if (this.props.disabled) {\n return;\n }\n if (this.input) {\n this.input.focus();\n }\n this.handleFocus();\n }\n\n /**\n * Закрывает выпадашку выбора дня\n * @public\n */\n public close() {\n this.setState({ opened: false });\n }\n\n public render() {\n return <CommonWrapper {...this.props}>{this.renderMain}</CommonWrapper>;\n }\n\n public renderMain = (props: CommonWrapperRestProps<DatePickerProps<DatePickerValue>>) => {\n let picker = null;\n const date = this.internalDate ? this.internalDate.toNativeFormat() : null;\n if (this.state.opened) {\n picker = (\n <DropdownContainer getParent={() => findDOMNode(this)} offsetY={2} align={this.props.menuAlign}>\n <Picker\n value={date}\n minDate={(this.minDate && this.minDate.toNativeFormat()) || undefined}\n maxDate={(this.maxDate && this.maxDate.toNativeFormat()) || undefined}\n onPick={this.handlePick}\n onSelect={this.handleSelect}\n enableTodayLink={this.props.enableTodayLink}\n isHoliday={this.isHoliday}\n />\n </DropdownContainer>\n );\n }\n\n return (\n <label\n className={styles.root()}\n style={this.getRootStyle()}\n onMouseEnter={this.props.onMouseEnter}\n onMouseLeave={this.props.onMouseLeave}\n onMouseOver={this.props.onMouseOver}\n >\n <DateInput\n {...filterProps(props, INPUT_PASS_PROPS)}\n ref={this.getInputRef}\n value={this.props.value || ''}\n width=\"100%\"\n withIcon\n minDate={this.props.minDate}\n maxDate={this.props.maxDate}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onValueChange={this.props.onValueChange}\n />\n {this.state.canUseMobileNativeDatePicker && (\n <NativeDateInput\n onValueChange={this.props.onValueChange}\n value={this.props.value || ''}\n minDate={this.props.minDate}\n maxDate={this.props.maxDate}\n disabled={this.props.disabled}\n />\n )}\n {!this.state.canUseMobileNativeDatePicker && picker}\n </label>\n );\n };\n\n private getRootStyle = () => {\n const { width } = this.props;\n return isNonNullable(width) ? { width } : { minWidth: MIN_WIDTH };\n };\n\n private getInputRef = (ref: DateInput | null) => {\n this.input = ref;\n };\n\n private parseValueToDate(value?: Nullable<string>): InternalDate | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n const date = new InternalDate({ value });\n if (date.validate({ checks: [InternalDateValidateCheck.NotNull, InternalDateValidateCheck.Native] })) {\n return date;\n }\n return undefined;\n }\n\n private handleFocus = () => {\n if (this.focused) {\n return;\n }\n\n this.focused = true;\n\n this.setState({ opened: true });\n\n if (this.props.onFocus) {\n this.props.onFocus();\n }\n };\n\n private handleBlur = () => {\n if (!this.focused) {\n return;\n }\n\n this.focused = false;\n this.close();\n\n if (this.props.onBlur) {\n this.props.onBlur();\n }\n };\n\n private handlePick = (dateShape: CalendarDateShape) => {\n this.handleSelect(dateShape);\n this.blur();\n };\n\n private handleSelect = ({ date, month, year }: CalendarDateShape) => {\n const value = InternalDateTransformer.dateToInternalString({ date, month: month + 1, year });\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n\n private isHoliday = ({ date, month, year, isWeekend }: CalendarDateShape & { isWeekend: boolean }) => {\n const dateString = InternalDateTransformer.dateToInternalString({ date, month: month + 1, year });\n return this.props.isHoliday(dateString, isWeekend);\n };\n}\n"]}
@@ -7,12 +7,18 @@ export interface DatePickerProps<T> extends CommonProps {
7
7
  autoFocus?: boolean;
8
8
  disabled?: boolean;
9
9
  enableTodayLink?: boolean;
10
+ /**
11
+ * Cостояние валидации при ошибке.
12
+ */
10
13
  error?: boolean;
11
14
  minDate: T;
12
15
  maxDate: T;
13
16
  menuAlign?: 'left' | 'right';
14
17
  size?: 'small' | 'medium' | 'large';
15
18
  value?: T | null;
19
+ /**
20
+ * Cостояние валидации при предупреждении.
21
+ */
16
22
  warning?: boolean;
17
23
  width?: number | string;
18
24
  onBlur?: () => void;
@@ -1 +1 @@
1
- {"version":3,"sources":["Dropdown.tsx"],"names":["React","PropTypes","filterProps","MenuHeader","MenuItem","MenuSeparator","Select","CommonWrapper","PASS_PROPS","_renderButton","error","disabled","disablePortal","menuAlign","menuWidth","maxMenuHeight","use","size","warning","width","onOpen","onClose","onMouseEnter","onMouseLeave","onMouseOver","Dropdown","_select","renderMain","caption","icon","props","items","Children","map","children","item","_refSelect","renderValue","element","render","open","close","Component","__KONTUR_REACT_UI__","Header","Separator","propTypes","node","isRequired","bool","number","oneOf","oneOfType","string","any","func","value"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { filterProps } from '../../lib/filterProps';\nimport { MenuHeader } from '../MenuHeader';\nimport { MenuItem } from '../MenuItem';\nimport { MenuSeparator } from '../MenuSeparator';\nimport { Select } from '../Select';\nimport { Nullable } from '../../typings/utility-types';\nimport { ButtonSize, ButtonUse } from '../Button';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\n\nconst PASS_PROPS = {\n _renderButton: true,\n error: true,\n disabled: true,\n disablePortal: true,\n menuAlign: true,\n menuWidth: true,\n maxMenuHeight: true,\n use: true,\n size: true,\n warning: true,\n width: true,\n onOpen: true,\n onClose: true,\n onMouseEnter: true,\n onMouseLeave: true,\n onMouseOver: true,\n};\n\nexport interface DropdownProps extends CommonProps {\n /**\n * Подпись на кнопке.\n */\n caption: React.ReactNode;\n /**\n * Иконка слева от текста кнопки\n */\n icon?: React.ReactElement<any>;\n width?: React.CSSProperties['width'];\n\n /** @ignore */\n _renderButton?: (params: any) => JSX.Element;\n\n /**\n * Отключает использование портала\n */\n disablePortal?: boolean;\n\n /**\n * Визуально отключает Dropdown\n */\n disabled?: boolean;\n\n /**\n * Визуально показать наличие ошибки.\n */\n error?: boolean;\n /**\n * Визуально показать наличие предупреждения.\n */\n warning?: boolean;\n maxMenuHeight?: number;\n menuAlign?: 'left' | 'right';\n menuWidth?: number | string;\n size?: ButtonSize;\n\n /**\n * Смотри Button.\n */\n use?: ButtonUse;\n\n /**\n * Вызывается при закрытии меню.\n */\n onClose?: () => void;\n /**\n * Вызывается при открытии меню.\n */\n onOpen?: () => void;\n onMouseEnter?: (event: React.MouseEvent<HTMLElement>) => void;\n onMouseLeave?: (event: React.MouseEvent<HTMLElement>) => void;\n onMouseOver?: (event: React.MouseEvent<HTMLElement>) => void;\n}\n\ntype DropdownSelectType = Select<React.ReactNode, React.ReactNode>;\n\n/**\n * Выпадающее меню.\n *\n */\nexport class Dropdown extends React.Component<DropdownProps> {\n public static __KONTUR_REACT_UI__ = 'Dropdown';\n\n public static Header = MenuHeader;\n public static MenuItem = MenuItem;\n public static Separator = MenuSeparator;\n\n public static propTypes = {\n /**\n * Подпись на кнопке.\n */\n caption: PropTypes.node.isRequired,\n\n /**\n * Отключает использование портала\n */\n disablePortal: PropTypes.bool,\n\n /**\n * Визуально отключает Dropdown\n */\n disabled: PropTypes.bool,\n\n /**\n * Визуально показать наличие ошибки.\n */\n error: PropTypes.bool,\n\n /**\n * Иконка слева от текста кнопки\n */\n icon: PropTypes.node,\n\n maxMenuHeight: PropTypes.number,\n\n menuAlign: PropTypes.oneOf(['left', 'right']),\n\n menuWidth: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n size: PropTypes.oneOf(['small', 'medium', 'large']),\n\n /**\n * Смотри Button.\n */\n use: PropTypes.any,\n\n /**\n * Визуально показать наличие предупреждения.\n */\n warning: PropTypes.bool,\n\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /**\n * Вызывается при закрытии меню.\n */\n onClose: PropTypes.func,\n\n onMouseEnter: PropTypes.func,\n\n onMouseLeave: PropTypes.func,\n\n onMouseOver: PropTypes.func,\n\n /**\n * Вызывается при открытии меню.\n */\n onOpen: PropTypes.func,\n };\n\n private _select: Nullable<DropdownSelectType>;\n\n public render() {\n return <CommonWrapper {...this.props}>{this.renderMain}</CommonWrapper>;\n }\n\n public renderMain = ({ caption, icon, ...props }: CommonWrapperRestProps<DropdownProps>) => {\n const items = React.Children.map(this.props.children, (item) => item) || [];\n\n return (\n <Select<React.ReactNode, React.ReactNode>\n ref={this._refSelect}\n {...filterProps(props, PASS_PROPS)}\n value={caption}\n items={items}\n _icon={icon}\n renderValue={renderValue}\n />\n );\n };\n\n /**\n * @public\n */\n public open() {\n if (this._select) {\n this._select.open();\n }\n }\n\n /**\n * @public\n */\n public close() {\n if (this._select) {\n this._select.close();\n }\n }\n\n private _refSelect = (element: DropdownSelectType): void => {\n this._select = element;\n };\n}\n\nfunction renderValue(value: any) {\n return value;\n}\n"]}
1
+ {"version":3,"sources":["Dropdown.tsx"],"names":["React","PropTypes","filterProps","MenuHeader","MenuItem","MenuSeparator","Select","CommonWrapper","PASS_PROPS","_renderButton","error","disabled","disablePortal","menuAlign","menuWidth","maxMenuHeight","use","size","warning","width","onOpen","onClose","onMouseEnter","onMouseLeave","onMouseOver","Dropdown","_select","renderMain","caption","icon","props","items","Children","map","children","item","_refSelect","renderValue","element","render","open","close","Component","__KONTUR_REACT_UI__","Header","Separator","propTypes","node","isRequired","bool","number","oneOf","oneOfType","string","any","func","value"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { filterProps } from '../../lib/filterProps';\nimport { MenuHeader } from '../MenuHeader';\nimport { MenuItem } from '../MenuItem';\nimport { MenuSeparator } from '../MenuSeparator';\nimport { Select } from '../Select';\nimport { Nullable } from '../../typings/utility-types';\nimport { ButtonSize, ButtonUse } from '../Button';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\n\nconst PASS_PROPS = {\n _renderButton: true,\n error: true,\n disabled: true,\n disablePortal: true,\n menuAlign: true,\n menuWidth: true,\n maxMenuHeight: true,\n use: true,\n size: true,\n warning: true,\n width: true,\n onOpen: true,\n onClose: true,\n onMouseEnter: true,\n onMouseLeave: true,\n onMouseOver: true,\n};\n\nexport interface DropdownProps extends CommonProps {\n /**\n * Подпись на кнопке.\n */\n caption: React.ReactNode;\n /**\n * Иконка слева от текста кнопки\n */\n icon?: React.ReactElement<any>;\n width?: React.CSSProperties['width'];\n\n /** @ignore */\n _renderButton?: (params: any) => JSX.Element;\n\n /**\n * Отключает использование портала\n */\n disablePortal?: boolean;\n\n /**\n * Визуально отключает Dropdown\n */\n disabled?: boolean;\n\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n maxMenuHeight?: number;\n menuAlign?: 'left' | 'right';\n menuWidth?: number | string;\n size?: ButtonSize;\n\n /**\n * Смотри Button.\n */\n use?: ButtonUse;\n\n /**\n * Вызывается при закрытии меню.\n */\n onClose?: () => void;\n /**\n * Вызывается при открытии меню.\n */\n onOpen?: () => void;\n onMouseEnter?: (event: React.MouseEvent<HTMLElement>) => void;\n onMouseLeave?: (event: React.MouseEvent<HTMLElement>) => void;\n onMouseOver?: (event: React.MouseEvent<HTMLElement>) => void;\n}\n\ntype DropdownSelectType = Select<React.ReactNode, React.ReactNode>;\n\n/**\n * Выпадающее меню.\n *\n */\nexport class Dropdown extends React.Component<DropdownProps> {\n public static __KONTUR_REACT_UI__ = 'Dropdown';\n\n public static Header = MenuHeader;\n public static MenuItem = MenuItem;\n public static Separator = MenuSeparator;\n\n public static propTypes = {\n /**\n * Подпись на кнопке.\n */\n caption: PropTypes.node.isRequired,\n\n /**\n * Отключает использование портала\n */\n disablePortal: PropTypes.bool,\n\n /**\n * Визуально отключает Dropdown\n */\n disabled: PropTypes.bool,\n\n /**\n * Визуально показать наличие ошибки.\n */\n error: PropTypes.bool,\n\n /**\n * Иконка слева от текста кнопки\n */\n icon: PropTypes.node,\n\n maxMenuHeight: PropTypes.number,\n\n menuAlign: PropTypes.oneOf(['left', 'right']),\n\n menuWidth: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n size: PropTypes.oneOf(['small', 'medium', 'large']),\n\n /**\n * Смотри Button.\n */\n use: PropTypes.any,\n\n /**\n * Визуально показать наличие предупреждения.\n */\n warning: PropTypes.bool,\n\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /**\n * Вызывается при закрытии меню.\n */\n onClose: PropTypes.func,\n\n onMouseEnter: PropTypes.func,\n\n onMouseLeave: PropTypes.func,\n\n onMouseOver: PropTypes.func,\n\n /**\n * Вызывается при открытии меню.\n */\n onOpen: PropTypes.func,\n };\n\n private _select: Nullable<DropdownSelectType>;\n\n public render() {\n return <CommonWrapper {...this.props}>{this.renderMain}</CommonWrapper>;\n }\n\n public renderMain = ({ caption, icon, ...props }: CommonWrapperRestProps<DropdownProps>) => {\n const items = React.Children.map(this.props.children, (item) => item) || [];\n\n return (\n <Select<React.ReactNode, React.ReactNode>\n ref={this._refSelect}\n {...filterProps(props, PASS_PROPS)}\n value={caption}\n items={items}\n _icon={icon}\n renderValue={renderValue}\n />\n );\n };\n\n /**\n * @public\n */\n public open() {\n if (this._select) {\n this._select.open();\n }\n }\n\n /**\n * @public\n */\n public close() {\n if (this._select) {\n this._select.close();\n }\n }\n\n private _refSelect = (element: DropdownSelectType): void => {\n this._select = element;\n };\n}\n\nfunction renderValue(value: any) {\n return value;\n}\n"]}
@@ -26,11 +26,11 @@ export interface DropdownProps extends CommonProps {
26
26
  */
27
27
  disabled?: boolean;
28
28
  /**
29
- * Визуально показать наличие ошибки.
29
+ * Cостояние валидации при ошибке.
30
30
  */
31
31
  error?: boolean;
32
32
  /**
33
- * Визуально показать наличие предупреждения.
33
+ * Cостояние валидации при предупреждении.
34
34
  */
35
35
  warning?: boolean;
36
36
  maxMenuHeight?: number;
@@ -9,6 +9,10 @@ import { cx } from "../../../lib/theming/Emotion";
9
9
  import { styles } from "../Hint.styles";
10
10
  var HINT_BORDER_COLOR = 'transparent';
11
11
  var Positions = ['top center', 'top left', 'top right', 'bottom center', 'bottom left', 'bottom right', 'left middle', 'left top', 'left bottom', 'right middle', 'right top', 'right bottom'];
12
+ /**
13
+ * Всплывающая подсказка, которая по умолчанию отображается при наведении на элемент. <br/> Можно задать другие условия отображения.
14
+ */
15
+
12
16
  export var Hint = /*#__PURE__*/function (_React$Component) {
13
17
  _inheritsLoose(Hint, _React$Component);
14
18
 
@@ -1 +1 @@
1
- {"version":3,"sources":["Hint.tsx"],"names":["React","ThemeContext","ThemeFactory","Popup","isTestEnv","CommonWrapper","cx","styles","HINT_BORDER_COLOR","Positions","Hint","state","opened","props","manual","timer","theme","getPositions","filter","x","startsWith","pos","handleMouseEnter","e","window","setTimeout","open","onMouseEnter","handleMouseLeave","clearTimeout","setState","onMouseLeave","UNSAFE_componentWillReceiveProps","nextProps","componentWillUnmount","render","create","popupPinOffset","hintPinOffset","popupMargin","hintMargin","popupBorder","hintBorder","popupBorderRadius","hintBorderRadius","renderMain","children","hintBgColor","disableAnimations","useWrapper","renderContent","text","maxWidth","className","content","contentCenter","Component","__KONTUR_REACT_UI__","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { Theme } from '../../lib/theming/Theme';\nimport { Popup, PopupPosition } from '../../internal/Popup';\nimport { Nullable } from '../../typings/utility-types';\nimport { MouseEventType } from '../../typings/event-types';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './Hint.styles';\n\nconst HINT_BORDER_COLOR = 'transparent';\n\nexport interface HintProps extends CommonProps {\n children?: React.ReactNode;\n manual?: boolean;\n maxWidth?: React.CSSProperties['maxWidth'];\n onMouseEnter?: (event: MouseEventType) => void;\n onMouseLeave?: (event: MouseEventType) => void;\n opened?: boolean;\n pos:\n | 'top'\n | 'right'\n | 'bottom'\n | 'left'\n | 'top left'\n | 'top center'\n | 'top right'\n | 'bottom left'\n | 'bottom center'\n | 'bottom right'\n | 'left top'\n | 'left middle'\n | 'left bottom'\n | 'right top'\n | 'right middle'\n | 'right bottom';\n text: React.ReactNode;\n disableAnimations: boolean;\n useWrapper: boolean;\n}\n\nexport interface HintState {\n opened: boolean;\n}\n\nconst Positions: PopupPosition[] = [\n 'top center',\n 'top left',\n 'top right',\n 'bottom center',\n 'bottom left',\n 'bottom right',\n 'left middle',\n 'left top',\n 'left bottom',\n 'right middle',\n 'right top',\n 'right bottom',\n];\n\nexport class Hint extends React.Component<HintProps, HintState> {\n public static __KONTUR_REACT_UI__ = 'Hint';\n\n public static defaultProps = {\n pos: 'top',\n manual: false,\n opened: false,\n maxWidth: 200,\n disableAnimations: isTestEnv,\n useWrapper: false,\n };\n\n public state: HintState = {\n opened: this.props.manual ? !!this.props.opened : false,\n };\n\n private timer: Nullable<number> = null;\n private theme!: Theme;\n\n public UNSAFE_componentWillReceiveProps(nextProps: HintProps) {\n if (!nextProps.manual) {\n return;\n }\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n if (nextProps.opened !== this.props.opened) {\n this.setState({ opened: !!nextProps.opened });\n }\n }\n\n public componentWillUnmount() {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupPinOffset: theme.hintPinOffset,\n popupMargin: theme.hintMargin,\n popupBorder: theme.hintBorder,\n popupBorderRadius: theme.hintBorderRadius,\n },\n this.theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n return (\n <CommonWrapper {...this.props}>\n <Popup\n hasPin\n opened={this.state.opened}\n anchorElement={this.props.children}\n positions={this.getPositions()}\n backgroundColor={this.theme.hintBgColor}\n borderColor={HINT_BORDER_COLOR}\n disableAnimations={this.props.disableAnimations}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n useWrapper={this.props.useWrapper}\n >\n {this.renderContent()}\n </Popup>\n </CommonWrapper>\n );\n }\n\n private renderContent() {\n if (!this.props.text) {\n return null;\n }\n\n const { pos, maxWidth } = this.props;\n const className = cx({\n [styles.content(this.theme)]: true,\n [styles.contentCenter(this.theme)]: pos === 'top' || pos === 'bottom',\n });\n return (\n <div className={className} style={{ maxWidth }}>\n {this.props.text}\n </div>\n );\n }\n\n private getPositions = (): PopupPosition[] => {\n return Positions.filter((x) => x.startsWith(this.props.pos));\n };\n\n private handleMouseEnter = (e: MouseEventType) => {\n if (!this.props.manual && !this.timer) {\n this.timer = window.setTimeout(this.open, 400);\n }\n\n if (this.props.onMouseEnter) {\n this.props.onMouseEnter(e);\n }\n };\n\n private handleMouseLeave = (e: MouseEventType) => {\n if (!this.props.manual && this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n this.setState({ opened: false });\n }\n\n if (this.props.onMouseLeave) {\n this.props.onMouseLeave(e);\n }\n };\n\n private open = () => {\n this.setState({ opened: true });\n };\n}\n"]}
1
+ {"version":3,"sources":["Hint.tsx"],"names":["React","ThemeContext","ThemeFactory","Popup","isTestEnv","CommonWrapper","cx","styles","HINT_BORDER_COLOR","Positions","Hint","state","opened","props","manual","timer","theme","getPositions","filter","x","startsWith","pos","handleMouseEnter","e","window","setTimeout","open","onMouseEnter","handleMouseLeave","clearTimeout","setState","onMouseLeave","UNSAFE_componentWillReceiveProps","nextProps","componentWillUnmount","render","create","popupPinOffset","hintPinOffset","popupMargin","hintMargin","popupBorder","hintBorder","popupBorderRadius","hintBorderRadius","renderMain","children","hintBgColor","disableAnimations","useWrapper","renderContent","text","maxWidth","className","content","contentCenter","Component","__KONTUR_REACT_UI__","defaultProps"],"mappings":"sEAAA,OAAOA,KAAP,MAAkB,OAAlB;;AAEA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAASC,YAAT,QAA6B,gCAA7B;;AAEA,SAASC,KAAT,QAAqC,sBAArC;;;AAGA,SAASC,SAAT,QAA0B,8BAA1B;AACA,SAASC,aAAT,QAA2C,8BAA3C;AACA,SAASC,EAAT,QAAmB,2BAAnB;;AAEA,SAASC,MAAT,QAAuB,eAAvB;;AAEA,IAAMC,iBAAiB,GAAG,aAA1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsEA,IAAMC,SAA0B,GAAG;AACjC,YADiC;AAEjC,UAFiC;AAGjC,WAHiC;AAIjC,eAJiC;AAKjC,aALiC;AAMjC,cANiC;AAOjC,aAPiC;AAQjC,UARiC;AASjC,aATiC;AAUjC,cAViC;AAWjC,WAXiC;AAYjC,cAZiC,CAAnC;;;AAeA;AACA;AACA;AACA,WAAaC,IAAb;;;;;;;;;;;;AAYSC,IAAAA,KAZT,GAY4B;AACxBC,MAAAA,MAAM,EAAE,MAAKC,KAAL,CAAWC,MAAX,GAAoB,CAAC,CAAC,MAAKD,KAAL,CAAWD,MAAjC,GAA0C,KAD1B,EAZ5B;;;AAgBUG,IAAAA,KAhBV,GAgBoC,IAhBpC;AAiBUC,IAAAA,KAjBV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsGUC,IAAAA,YAtGV,GAsGyB,YAAuB;AAC5C,aAAOR,SAAS,CAACS,MAAV,CAAiB,UAACC,CAAD,UAAOA,CAAC,CAACC,UAAF,CAAa,MAAKP,KAAL,CAAWQ,GAAxB,CAAP,EAAjB,CAAP;AACD,KAxGH;;AA0GUC,IAAAA,gBA1GV,GA0G6B,UAACC,CAAD,EAAuB;AAChD,UAAI,CAAC,MAAKV,KAAL,CAAWC,MAAZ,IAAsB,CAAC,MAAKC,KAAhC,EAAuC;AACrC,cAAKA,KAAL,GAAaS,MAAM,CAACC,UAAP,CAAkB,MAAKC,IAAvB,EAA6B,GAA7B,CAAb;AACD;;AAED,UAAI,MAAKb,KAAL,CAAWc,YAAf,EAA6B;AAC3B,cAAKd,KAAL,CAAWc,YAAX,CAAwBJ,CAAxB;AACD;AACF,KAlHH;;AAoHUK,IAAAA,gBApHV,GAoH6B,UAACL,CAAD,EAAuB;AAChD,UAAI,CAAC,MAAKV,KAAL,CAAWC,MAAZ,IAAsB,MAAKC,KAA/B,EAAsC;AACpCc,QAAAA,YAAY,CAAC,MAAKd,KAAN,CAAZ;AACA,cAAKA,KAAL,GAAa,IAAb;AACA,cAAKe,QAAL,CAAc,EAAElB,MAAM,EAAE,KAAV,EAAd;AACD;;AAED,UAAI,MAAKC,KAAL,CAAWkB,YAAf,EAA6B;AAC3B,cAAKlB,KAAL,CAAWkB,YAAX,CAAwBR,CAAxB;AACD;AACF,KA9HH;;AAgIUG,IAAAA,IAhIV,GAgIiB,YAAM;AACnB,YAAKI,QAAL,CAAc,EAAElB,MAAM,EAAE,IAAV,EAAd;AACD,KAlIH,kDAmBSoB,gCAnBT,GAmBE,0CAAwCC,SAAxC,EAA8D,CAC5D,IAAI,CAACA,SAAS,CAACnB,MAAf,EAAuB,CACrB,OACD,CACD,IAAI,KAAKC,KAAT,EAAgB,CACdc,YAAY,CAAC,KAAKd,KAAN,CAAZ,CACA,KAAKA,KAAL,GAAa,IAAb,CACD,CACD,IAAIkB,SAAS,CAACrB,MAAV,KAAqB,KAAKC,KAAL,CAAWD,MAApC,EAA4C,CAC1C,KAAKkB,QAAL,CAAc,EAAElB,MAAM,EAAE,CAAC,CAACqB,SAAS,CAACrB,MAAtB,EAAd,EACD,CACF,CA9BH,QAgCSsB,oBAhCT,GAgCE,gCAA8B,CAC5B,IAAI,KAAKnB,KAAT,EAAgB,CACdc,YAAY,CAAC,KAAKd,KAAN,CAAZ,CACA,KAAKA,KAAL,GAAa,IAAb,CACD,CACF,CArCH,QAuCSoB,MAvCT,GAuCE,kBAAgB,mBACd,oBACE,oBAAC,YAAD,CAAc,QAAd,QACG,UAACnB,KAAD,EAAW,CACV,MAAI,CAACA,KAAL,GAAaA,KAAb,CACA,oBACE,oBAAC,YAAD,CAAc,QAAd,IACE,KAAK,EAAEd,YAAY,CAACkC,MAAb,CACL,EACEC,cAAc,EAAErB,KAAK,CAACsB,aADxB,EAEEC,WAAW,EAAEvB,KAAK,CAACwB,UAFrB,EAGEC,WAAW,EAAEzB,KAAK,CAAC0B,UAHrB,EAIEC,iBAAiB,EAAE3B,KAAK,CAAC4B,gBAJ3B,EADK,EAOL,MAAI,CAAC5B,KAPA,CADT,IAWG,MAAI,CAAC6B,UAAL,EAXH,CADF,CAeD,CAlBH,CADF,CAsBD,CA9DH,QAgESA,UAhET,GAgEE,sBAAoB,CAClB,oBACE,oBAAC,aAAD,EAAmB,KAAKhC,KAAxB,eACE,oBAAC,KAAD,IACE,MAAM,MADR,EAEE,MAAM,EAAE,KAAKF,KAAL,CAAWC,MAFrB,EAGE,aAAa,EAAE,KAAKC,KAAL,CAAWiC,QAH5B,EAIE,SAAS,EAAE,KAAK7B,YAAL,EAJb,EAKE,eAAe,EAAE,KAAKD,KAAL,CAAW+B,WAL9B,EAME,WAAW,EAAEvC,iBANf,EAOE,iBAAiB,EAAE,KAAKK,KAAL,CAAWmC,iBAPhC,EAQE,YAAY,EAAE,KAAK1B,gBARrB,EASE,YAAY,EAAE,KAAKM,gBATrB,EAUE,UAAU,EAAE,KAAKf,KAAL,CAAWoC,UAVzB,IAYG,KAAKC,aAAL,EAZH,CADF,CADF,CAkBD,CAnFH,QAqFUA,aArFV,GAqFE,yBAAwB,SACtB,IAAI,CAAC,KAAKrC,KAAL,CAAWsC,IAAhB,EAAsB,CACpB,OAAO,IAAP,CACD,CAHqB,kBAKI,KAAKtC,KALT,CAKdQ,GALc,eAKdA,GALc,CAKT+B,QALS,eAKTA,QALS,CAMtB,IAAMC,SAAS,GAAG/C,EAAE,gBACjBC,MAAM,CAAC+C,OAAP,CAAe,KAAKtC,KAApB,CADiB,IACY,IADZ,MAEjBT,MAAM,CAACgD,aAAP,CAAqB,KAAKvC,KAA1B,CAFiB,IAEkBK,GAAG,KAAK,KAAR,IAAiBA,GAAG,KAAK,QAF3C,OAApB,CAIA,oBACE,6BAAK,SAAS,EAAEgC,SAAhB,EAA2B,KAAK,EAAE,EAAED,QAAQ,EAARA,QAAF,EAAlC,IACG,KAAKvC,KAAL,CAAWsC,IADd,CADF,CAKD,CApGH,eAA0BnD,KAAK,CAACwD,SAAhC,EAAa9C,I,CACG+C,mB,GAAsB,M,CADzB/C,I,CAGGgD,Y,GAAe,EAC3BrC,GAAG,EAAE,KADsB,EAE3BP,MAAM,EAAE,KAFmB,EAG3BF,MAAM,EAAE,KAHmB,EAI3BwC,QAAQ,EAAE,GAJiB,EAK3BJ,iBAAiB,EAAE5C,SALQ,EAM3B6C,UAAU,EAAE,KANe,E","sourcesContent":["import React from 'react';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { Theme } from '../../lib/theming/Theme';\nimport { Popup, PopupPosition } from '../../internal/Popup';\nimport { Nullable } from '../../typings/utility-types';\nimport { MouseEventType } from '../../typings/event-types';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './Hint.styles';\n\nconst HINT_BORDER_COLOR = 'transparent';\n\nexport interface HintProps extends CommonProps {\n children?: React.ReactNode;\n /**\n * Переводит отображение подсказки в _\"ручной режим\"_.\n *\n * В _\"ручном режиме\"_ подcказку можно активировать только задав значение пропу `opened`.\n */\n manual?: boolean;\n /**\n * Задаёт максимальную ширину подсказки.\n */\n maxWidth?: React.CSSProperties['maxWidth'];\n /**\n * HTML-событие `mouseenter`.\n */\n onMouseEnter?: (event: MouseEventType) => void;\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: (event: MouseEventType) => void;\n /**\n * Если `true` - подсказка будет открыта.\n *\n * _Примечание_: работает только при `manual=true`.\n */\n opened?: boolean;\n /**\n * Расположение подсказки относительно текста.\n *\n * **Допустимые значения**: `\"top\"`, `\"right\"`, `\"bottom\"`, `\"left\"`, `\"top left\"`, `\"top center\"`, `\"top right\"`, `\"right top\"`, `\"right middle\"`, `\"right bottom\"`, `\"bottom left\"`, `\"bottom center\"`, `\"bottom right\"`, `\"left top\"`, `\"left middle\"`, `\"left bottom\"`.\n */\n pos:\n | 'top'\n | 'right'\n | 'bottom'\n | 'left'\n | 'top left'\n | 'top center'\n | 'top right'\n | 'bottom left'\n | 'bottom center'\n | 'bottom right'\n | 'left top'\n | 'left middle'\n | 'left bottom'\n | 'right top'\n | 'right middle'\n | 'right bottom';\n /**\n * Текст подсказки.\n */\n text: React.ReactNode;\n /**\n * Отключает анимацию.\n */\n disableAnimations: boolean;\n /**\n * Явно указывает, что вложенные элементы должны быть обёрнуты в `<span/>`. <br/> Используется для корректного позиционирования тултипа при двух и более вложенных элементах.\n *\n * _Примечание_: при **двух и более** вложенных элементах обёртка будет добавлена автоматически.\n */\n useWrapper: boolean;\n}\n\nexport interface HintState {\n opened: boolean;\n}\n\nconst Positions: PopupPosition[] = [\n 'top center',\n 'top left',\n 'top right',\n 'bottom center',\n 'bottom left',\n 'bottom right',\n 'left middle',\n 'left top',\n 'left bottom',\n 'right middle',\n 'right top',\n 'right bottom',\n];\n\n/**\n * Всплывающая подсказка, которая по умолчанию отображается при наведении на элемент. <br/> Можно задать другие условия отображения.\n */\nexport class Hint extends React.Component<HintProps, HintState> {\n public static __KONTUR_REACT_UI__ = 'Hint';\n\n public static defaultProps = {\n pos: 'top',\n manual: false,\n opened: false,\n maxWidth: 200,\n disableAnimations: isTestEnv,\n useWrapper: false,\n };\n\n public state: HintState = {\n opened: this.props.manual ? !!this.props.opened : false,\n };\n\n private timer: Nullable<number> = null;\n private theme!: Theme;\n\n public UNSAFE_componentWillReceiveProps(nextProps: HintProps) {\n if (!nextProps.manual) {\n return;\n }\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n if (nextProps.opened !== this.props.opened) {\n this.setState({ opened: !!nextProps.opened });\n }\n }\n\n public componentWillUnmount() {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupPinOffset: theme.hintPinOffset,\n popupMargin: theme.hintMargin,\n popupBorder: theme.hintBorder,\n popupBorderRadius: theme.hintBorderRadius,\n },\n this.theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n return (\n <CommonWrapper {...this.props}>\n <Popup\n hasPin\n opened={this.state.opened}\n anchorElement={this.props.children}\n positions={this.getPositions()}\n backgroundColor={this.theme.hintBgColor}\n borderColor={HINT_BORDER_COLOR}\n disableAnimations={this.props.disableAnimations}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n useWrapper={this.props.useWrapper}\n >\n {this.renderContent()}\n </Popup>\n </CommonWrapper>\n );\n }\n\n private renderContent() {\n if (!this.props.text) {\n return null;\n }\n\n const { pos, maxWidth } = this.props;\n const className = cx({\n [styles.content(this.theme)]: true,\n [styles.contentCenter(this.theme)]: pos === 'top' || pos === 'bottom',\n });\n return (\n <div className={className} style={{ maxWidth }}>\n {this.props.text}\n </div>\n );\n }\n\n private getPositions = (): PopupPosition[] => {\n return Positions.filter((x) => x.startsWith(this.props.pos));\n };\n\n private handleMouseEnter = (e: MouseEventType) => {\n if (!this.props.manual && !this.timer) {\n this.timer = window.setTimeout(this.open, 400);\n }\n\n if (this.props.onMouseEnter) {\n this.props.onMouseEnter(e);\n }\n };\n\n private handleMouseLeave = (e: MouseEventType) => {\n if (!this.props.manual && this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n this.setState({ opened: false });\n }\n\n if (this.props.onMouseLeave) {\n this.props.onMouseLeave(e);\n }\n };\n\n private open = () => {\n this.setState({ opened: true });\n };\n}\n"]}
@@ -3,19 +3,57 @@ import { MouseEventType } from '../../typings/event-types';
3
3
  import { CommonProps } from '../../internal/CommonWrapper';
4
4
  export interface HintProps extends CommonProps {
5
5
  children?: React.ReactNode;
6
+ /**
7
+ * Переводит отображение подсказки в _"ручной режим"_.
8
+ *
9
+ * В _"ручном режиме"_ подcказку можно активировать только задав значение пропу `opened`.
10
+ */
6
11
  manual?: boolean;
12
+ /**
13
+ * Задаёт максимальную ширину подсказки.
14
+ */
7
15
  maxWidth?: React.CSSProperties['maxWidth'];
16
+ /**
17
+ * HTML-событие `mouseenter`.
18
+ */
8
19
  onMouseEnter?: (event: MouseEventType) => void;
20
+ /**
21
+ * HTML-событие `mouseleave`.
22
+ */
9
23
  onMouseLeave?: (event: MouseEventType) => void;
24
+ /**
25
+ * Если `true` - подсказка будет открыта.
26
+ *
27
+ * _Примечание_: работает только при `manual=true`.
28
+ */
10
29
  opened?: boolean;
30
+ /**
31
+ * Расположение подсказки относительно текста.
32
+ *
33
+ * **Допустимые значения**: `"top"`, `"right"`, `"bottom"`, `"left"`, `"top left"`, `"top center"`, `"top right"`, `"right top"`, `"right middle"`, `"right bottom"`, `"bottom left"`, `"bottom center"`, `"bottom right"`, `"left top"`, `"left middle"`, `"left bottom"`.
34
+ */
11
35
  pos: 'top' | 'right' | 'bottom' | 'left' | 'top left' | 'top center' | 'top right' | 'bottom left' | 'bottom center' | 'bottom right' | 'left top' | 'left middle' | 'left bottom' | 'right top' | 'right middle' | 'right bottom';
36
+ /**
37
+ * Текст подсказки.
38
+ */
12
39
  text: React.ReactNode;
40
+ /**
41
+ * Отключает анимацию.
42
+ */
13
43
  disableAnimations: boolean;
44
+ /**
45
+ * Явно указывает, что вложенные элементы должны быть обёрнуты в `<span/>`. <br/> Используется для корректного позиционирования тултипа при двух и более вложенных элементах.
46
+ *
47
+ * _Примечание_: при **двух и более** вложенных элементах обёртка будет добавлена автоматически.
48
+ */
14
49
  useWrapper: boolean;
15
50
  }
16
51
  export interface HintState {
17
52
  opened: boolean;
18
53
  }
54
+ /**
55
+ * Всплывающая подсказка, которая по умолчанию отображается при наведении на элемент. <br/> Можно задать другие условия отображения.
56
+ */
19
57
  export declare class Hint extends React.Component<HintProps, HintState> {
20
58
  static __KONTUR_REACT_UI__: string;
21
59
  static defaultProps: {
@@ -1,3 +1,42 @@
1
+ Базовый пример всплывающей подсказки.
2
+
1
3
  ```jsx harmony
2
- <Hint text="World">Hello</Hint>
4
+ <Hint text="Подсказка">Базовая</Hint>
5
+ ```
6
+
7
+ Пример подсказки, всегда всплывающей слева.
8
+
9
+ ```jsx harmony
10
+ <Hint pos={"left"} text="Подсказка слева">Всегда всплывает слева</Hint>
11
+ ```
12
+
13
+ Пример всплывающей подсказки с ограниченной шириной.
14
+ ```jsx harmony
15
+ <Hint
16
+ maxWidth="150px"
17
+ text="Очень много текста, рассказывающего про этот очень непонятный элемент"
18
+ >
19
+ Очень непонятный элемент
20
+ </Hint>
21
+ ```
22
+
23
+ Пример всплывающей подсказки, открытие которой контролируется кнопкой.
24
+
25
+ ```jsx harmony
26
+ import { Button, Gapped } from '@skbkontur/react-ui';
27
+
28
+ const [isOpen, setIsOpen] = React.useState(false);
29
+
30
+ <Gapped>
31
+ <Hint opened={isOpen} manual text="Подсказка">Управляемая удалённо</Hint>
32
+ <Button onClick={() => setIsOpen(!isOpen)}>
33
+ {isOpen ? "Закрыть подсказку" : "Открыть подсказку"}
34
+ </Button>
35
+ </Gapped>
36
+ ```
37
+
38
+ Пример подсказки, всплывающей без анимации.
39
+
40
+ ```jsx harmony
41
+ <Hint disableAnimations text={"Нет анимации :("}>Есть анимация?</Hint>
3
42
  ```
@@ -1 +1 @@
1
- {"version":3,"sources":["Input.tsx"],"names":["invariant","React","raf","isIE11","isEdge","isKeyBackspace","isKeyDelete","someKeys","polyfillPlaceholder","MaskedInput","ThemeContext","CommonWrapper","cx","styles","Input","state","blinking","focused","selectAllId","theme","blinkTimeout","input","selectAll","setSelectionRange","value","length","delaySelectAll","cancelDelayedSelectAll","cancel","cancelBlink","callback","clearTimeout","setState","renderMain","props","onMouseEnter","onMouseLeave","onMouseOver","onKeyDown","onKeyPress","onValueChange","width","error","warning","leftIcon","rightIcon","borderless","align","type","mask","maskChar","alwaysShowMask","size","placeholder","selectAllOnFocus","disabled","onUnexpectedInput","prefix","suffix","formatChars","rest","labelProps","className","root","getSizeClassName","focus","blink","focusFallback","warningFallback","errorFallback","style","inputProps","inputFocus","inputDisabled","onChange","handleChange","onFocus","handleFocus","handleKeyDown","handleKeyPress","onBlur","handleBlur","textAlign","ref","refInput","isMaskVisible","undefined","renderMaskedInput","createElement","sideContainer","renderLeftIcon","renderPrefix","wrapper","renderPlaceholder","rightContainer","renderSuffix","renderRightIcon","element","event","fieldIsEmpty","target","e","isDeleteKey","currentTarget","repeat","handleUnexpectedInput","maxLength","handleMaskedValueChange","prefixDisabled","suffixDisabled","componentDidMount","componentWillUnmount","UNSAFE_componentWillReceiveProps","nextProps","blur","offsetWidth","window","setTimeout","start","end","Error","document","activeElement","render","getIconSizeClassname","right","rightIconLarge","leftIconLarge","rightIconMedium","leftIconMedium","rightIconSmall","leftIconSmall","renderIcon","icon","sizeClassName","iconNode","Function","useDefaultColor","iconDisabled","placeholderDisabled","placeholderFocus","sizeLarge","sizeLargeFallback","sizeMedium","sizeMediumFallback","sizeSmall","sizeSmallFallback","Boolean","Component","__KONTUR_REACT_UI__","defaultProps"],"mappings":"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","sourcesContent":["import invariant from 'invariant';\nimport React from 'react';\nimport raf from 'raf';\n\nimport { isIE11, isEdge } from '../../lib/client';\nimport { isKeyBackspace, isKeyDelete, someKeys } from '../../lib/events/keyboard/identifiers';\nimport { polyfillPlaceholder } from '../../lib/polyfillPlaceholder';\nimport { Nullable, Override } from '../../typings/utility-types';\nimport { MaskedInput } from '../../internal/MaskedInput';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './Input.styles';\n\nexport type InputSize = 'small' | 'medium' | 'large';\nexport type InputAlign = 'left' | 'center' | 'right';\nexport type InputType = 'password' | 'text';\nexport type InputIconType = React.ReactNode | (() => React.ReactNode);\n\nexport interface InputProps\n extends CommonProps,\n Override<\n React.InputHTMLAttributes<HTMLInputElement>,\n {\n /**\n * Иконка слева\n * Если `ReactNode` применяются дефолтные стили для иконки\n * Если `() => ReactNode` применяются только стили для позиционирование\n */\n leftIcon?: InputIconType;\n /**\n * Иконка справа\n * Если `ReactNode` применяются дефолтные стили для иконки\n * Если `() => ReactNode` применяются только стили для позиционирование\n */\n rightIcon?: InputIconType;\n /** Состояние ошибки */\n error?: boolean;\n /** Состояние предупреждения */\n warning?: boolean;\n /** Режим прозрачной рамки */\n borderless?: boolean;\n /** Выравнивание текста */\n align?: InputAlign;\n /** Паттерн маски */\n mask?: Nullable<string>;\n /** Символ маски */\n maskChar?: Nullable<string>;\n /**\n * Словарь символов-регулярок для задания маски\n * @default { '9': '[0-9]', 'a': '[A-Za-z]', '*': '[A-Za-z0-9]' }\n */\n formatChars?: Record<string, string>;\n /** Показывать символы маски */\n alwaysShowMask?: boolean;\n /** Размер */\n size?: InputSize;\n /** onValueChange */\n onValueChange?: (value: string) => void;\n /** Вызывается на label */\n onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;\n /** Вызывается на label */\n onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;\n /** Вызывается на label */\n onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;\n /** Тип */\n type?: InputType;\n /** Значение */\n value?: string;\n capture?: boolean;\n\n /**\n * Префикс\n * `ReactNode` перед значением, но после иконки\n */\n prefix?: React.ReactNode;\n /**\n * Суффикс\n * `ReactNode` после значения, но перед правой иконкой\n */\n suffix?: React.ReactNode;\n /** Выделять введенное значение при фокусе */\n selectAllOnFocus?: boolean;\n /**\n * Обработчик неправильного ввода.\n * По-умолчанию, инпут вспыхивает синим.\n * Если передан - вызывается переданный обработчик,\n * в таком случае вспыхивание можно вызвать\n * публичным методом инстанса `blink()`.\n *\n * @param value значение инпута.\n */\n onUnexpectedInput?: (value: string) => void;\n }\n > {}\n\nexport interface InputState {\n blinking: boolean;\n focused: boolean;\n polyfillPlaceholder: boolean;\n}\n\n/**\n * Интерфес пропсов наследуется от `React.InputHTMLAttributes<HTMLInputElement>`.\n * Все пропсы кроме перечисленных, `className` и `style` передаются в `<input>`\n */\nexport class Input extends React.Component<InputProps, InputState> {\n public static __KONTUR_REACT_UI__ = 'Input';\n\n public static defaultProps: {\n size: InputSize;\n } = {\n size: 'small',\n };\n\n public state: InputState = {\n polyfillPlaceholder: false,\n blinking: false,\n focused: false,\n };\n\n private selectAllId: number | null = null;\n private theme!: Theme;\n private blinkTimeout = 0;\n private input: HTMLInputElement | null = null;\n\n public componentDidMount() {\n if (polyfillPlaceholder) {\n this.setState({ polyfillPlaceholder: true });\n }\n }\n\n public componentWillUnmount() {\n if (this.blinkTimeout) {\n clearTimeout(this.blinkTimeout);\n }\n this.cancelDelayedSelectAll();\n }\n\n public UNSAFE_componentWillReceiveProps(nextProps: InputProps) {\n if (polyfillPlaceholder && !nextProps.value) {\n this.setState({ polyfillPlaceholder: true });\n }\n }\n\n /**\n * @public\n */\n public focus() {\n invariant(this.input, 'Cannot call \"focus\" because Input is not mounted');\n this.input!.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n invariant(this.input, 'Cannot call \"blur\" because Input is not mounted');\n this.input!.blur();\n }\n\n /**\n * @public\n */\n public blink() {\n if (this.blinkTimeout) {\n this.cancelBlink(() => {\n // trigger reflow to restart animation\n // @see https://css-tricks.com/restart-css-animation/#article-header-id-0\n void (this.input && this.input.offsetWidth);\n this.blink();\n });\n return;\n }\n this.setState({ blinking: true }, () => {\n this.blinkTimeout = window.setTimeout(this.cancelBlink, 150);\n });\n }\n\n /**\n * @public\n * @param {number} start\n * @param {number} end\n */\n public setSelectionRange(start: number, end: number) {\n if (!this.input) {\n throw new Error('Cannot call \"setSelectionRange\" on unmounted Input');\n }\n\n if (document.activeElement !== this.input) {\n this.focus();\n }\n\n this.input.setSelectionRange(start, end);\n }\n\n public get isMaskVisible(): boolean {\n const { mask, alwaysShowMask } = this.props;\n const { focused } = this.state;\n return Boolean(mask && (focused || alwaysShowMask));\n }\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return <CommonWrapper {...this.props}>{this.renderMain}</CommonWrapper>;\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public selectAll = (): void => {\n if (this.input) {\n this.setSelectionRange(0, this.input.value.length);\n }\n };\n\n private delaySelectAll = (): number => (this.selectAllId = raf(this.selectAll));\n\n private cancelDelayedSelectAll = (): void => {\n if (this.selectAllId) {\n raf.cancel(this.selectAllId);\n this.selectAllId = null;\n }\n };\n\n private cancelBlink = (callback?: () => void): void => {\n if (this.blinkTimeout) {\n clearTimeout(this.blinkTimeout);\n this.blinkTimeout = 0;\n if (this.state.blinking) {\n this.setState({ blinking: false }, callback);\n return;\n }\n }\n if (callback) {\n callback();\n }\n };\n\n private renderMain = (props: CommonWrapperRestProps<InputProps>) => {\n const {\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onKeyDown,\n onKeyPress,\n onValueChange,\n width,\n error,\n warning,\n leftIcon,\n rightIcon,\n borderless,\n value,\n align,\n type,\n mask,\n maskChar,\n alwaysShowMask,\n size,\n placeholder,\n selectAllOnFocus,\n disabled,\n onUnexpectedInput,\n prefix,\n suffix,\n formatChars,\n ...rest\n } = props;\n\n const { blinking, focused } = this.state;\n\n const labelProps = {\n className: cx(styles.root(this.theme), this.getSizeClassName(), {\n [styles.focus(this.theme)]: focused,\n [styles.blink(this.theme)]: blinking,\n [styles.borderless()]: borderless && !focused,\n [styles.disabled(this.theme)]: disabled,\n [styles.warning(this.theme)]: warning,\n [styles.error(this.theme)]: error,\n [styles.focusFallback(this.theme)]: focused && (isIE11 || isEdge),\n [styles.warningFallback(this.theme)]: warning && (isIE11 || isEdge),\n [styles.errorFallback(this.theme)]: error && (isIE11 || isEdge),\n }),\n style: { width },\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n };\n\n const inputProps = {\n ...rest,\n className: cx(styles.input(this.theme), {\n [styles.inputFocus(this.theme)]: focused,\n [styles.inputDisabled(this.theme)]: disabled,\n }),\n value,\n onChange: this.handleChange,\n onFocus: this.handleFocus,\n onKeyDown: this.handleKeyDown,\n onKeyPress: this.handleKeyPress,\n onBlur: this.handleBlur,\n style: { textAlign: align },\n ref: this.refInput,\n type: 'text',\n placeholder: !this.isMaskVisible && !polyfillPlaceholder ? placeholder : undefined,\n disabled,\n };\n\n if (type === 'password') {\n inputProps.type = type;\n }\n\n const input = mask ? this.renderMaskedInput(inputProps, mask) : React.createElement('input', inputProps);\n\n return (\n <label {...labelProps}>\n <span className={styles.sideContainer()}>\n {this.renderLeftIcon()}\n {this.renderPrefix()}\n </span>\n <span className={styles.wrapper()}>\n {input}\n {this.renderPlaceholder()}\n </span>\n <span className={cx(styles.sideContainer(), styles.rightContainer())}>\n {this.renderSuffix()}\n {this.renderRightIcon()}\n </span>\n </label>\n );\n };\n\n private renderMaskedInput(\n inputProps: React.InputHTMLAttributes<HTMLInputElement> & {\n capture?: boolean;\n },\n mask: string,\n ) {\n return (\n <MaskedInput\n {...inputProps}\n mask={mask}\n maskChar={this.props.maskChar}\n alwaysShowMask={this.props.alwaysShowMask}\n formatChars={this.props.formatChars}\n onChange={this.props.onChange}\n onValueChange={this.handleMaskedValueChange}\n onUnexpectedInput={this.handleUnexpectedInput}\n />\n );\n }\n\n private getIconSizeClassname(right = false) {\n switch (this.props.size) {\n case 'large':\n return right ? styles.rightIconLarge(this.theme) : styles.leftIconLarge(this.theme);\n case 'medium':\n return right ? styles.rightIconMedium(this.theme) : styles.leftIconMedium(this.theme);\n case 'small':\n default:\n return right ? styles.rightIconSmall(this.theme) : styles.leftIconSmall(this.theme);\n }\n }\n\n private renderLeftIcon() {\n return this.renderIcon(this.props.leftIcon, this.getIconSizeClassname());\n }\n\n private renderRightIcon() {\n return this.renderIcon(this.props.rightIcon, this.getIconSizeClassname(true));\n }\n\n private renderIcon(icon: InputIconType, sizeClassName: string) {\n if (!icon) {\n return null;\n }\n const { disabled } = this.props;\n const iconNode = icon instanceof Function ? icon() : icon;\n\n return (\n <span\n className={cx(styles.icon(), sizeClassName, styles.useDefaultColor(this.theme), {\n [styles.iconDisabled()]: disabled,\n })}\n >\n {iconNode}\n </span>\n );\n }\n\n private renderPlaceholder() {\n const { disabled } = this.props;\n const { focused } = this.state;\n let placeholder = null;\n\n if (this.state.polyfillPlaceholder && this.props.placeholder && !this.isMaskVisible && !this.props.value) {\n placeholder = (\n <div\n className={cx(styles.placeholder(this.theme), {\n [styles.placeholderDisabled(this.theme)]: disabled,\n [styles.placeholderFocus(this.theme)]: focused,\n })}\n style={{ textAlign: this.props.align || 'inherit' }}\n >\n {this.props.placeholder}\n </div>\n );\n }\n\n return placeholder;\n }\n\n private getSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return cx({\n [styles.sizeLarge(this.theme)]: true,\n [styles.sizeLargeFallback(this.theme)]: isIE11 || isEdge,\n });\n case 'medium':\n return cx({\n [styles.sizeMedium(this.theme)]: true,\n [styles.sizeMediumFallback(this.theme)]: isIE11 || isEdge,\n });\n case 'small':\n default:\n return cx({\n [styles.sizeSmall(this.theme)]: true,\n [styles.sizeSmallFallback(this.theme)]: isIE11 || isEdge,\n });\n }\n }\n\n private refInput = (element: HTMLInputElement | MaskedInput | null) => {\n if (element instanceof MaskedInput) {\n this.input = element.input;\n } else {\n this.input = element;\n }\n };\n\n private handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (polyfillPlaceholder) {\n const fieldIsEmpty = event.target.value === '';\n if (this.state.polyfillPlaceholder !== fieldIsEmpty) {\n this.setState({ polyfillPlaceholder: fieldIsEmpty });\n }\n }\n\n if (this.props.onValueChange) {\n this.props.onValueChange(event.target.value);\n }\n\n if (this.props.onChange) {\n this.props.onChange(event);\n }\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n this.setState({\n focused: true,\n });\n\n if (this.props.selectAllOnFocus) {\n // https://github.com/facebook/react/issues/7769\n this.input && !isIE11 ? this.selectAll() : this.delaySelectAll();\n }\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n\n const isDeleteKey = someKeys(isKeyBackspace, isKeyDelete)(e);\n\n if (!e.currentTarget.value && isDeleteKey && !e.repeat) {\n this.handleUnexpectedInput();\n }\n };\n\n private handleKeyPress = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (this.props.onKeyPress) {\n this.props.onKeyPress(event);\n }\n\n if (this.props.maxLength === event.currentTarget.value.length) {\n this.handleUnexpectedInput(event.currentTarget.value);\n }\n };\n\n private handleMaskedValueChange = (value: string) => {\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n\n private handleUnexpectedInput = (value: string = this.props.value || '') => {\n if (this.props.onUnexpectedInput) {\n this.props.onUnexpectedInput(value);\n } else {\n this.blink();\n }\n };\n\n private handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n this.setState({ focused: false });\n\n if (this.props.onBlur) {\n this.props.onBlur(event);\n }\n };\n\n private renderPrefix = () => {\n const { prefix, disabled } = this.props;\n\n if (!prefix) {\n return null;\n }\n\n return (\n <span className={cx(styles.prefix(this.theme), { [styles.prefixDisabled(this.theme)]: disabled })}>{prefix}</span>\n );\n };\n\n private renderSuffix = () => {\n const { suffix, disabled } = this.props;\n\n if (!suffix) {\n return null;\n }\n\n return (\n <span className={cx(styles.suffix(this.theme), { [styles.suffixDisabled(this.theme)]: disabled })}>{suffix}</span>\n );\n };\n}\n"]}
1
+ {"version":3,"sources":["Input.tsx"],"names":["invariant","React","raf","isIE11","isEdge","isKeyBackspace","isKeyDelete","someKeys","polyfillPlaceholder","MaskedInput","ThemeContext","CommonWrapper","cx","styles","Input","state","blinking","focused","selectAllId","theme","blinkTimeout","input","selectAll","setSelectionRange","value","length","delaySelectAll","cancelDelayedSelectAll","cancel","cancelBlink","callback","clearTimeout","setState","renderMain","props","onMouseEnter","onMouseLeave","onMouseOver","onKeyDown","onKeyPress","onValueChange","width","error","warning","leftIcon","rightIcon","borderless","align","type","mask","maskChar","alwaysShowMask","size","placeholder","selectAllOnFocus","disabled","onUnexpectedInput","prefix","suffix","formatChars","rest","labelProps","className","root","getSizeClassName","focus","blink","focusFallback","warningFallback","errorFallback","style","inputProps","inputFocus","inputDisabled","onChange","handleChange","onFocus","handleFocus","handleKeyDown","handleKeyPress","onBlur","handleBlur","textAlign","ref","refInput","isMaskVisible","undefined","renderMaskedInput","createElement","sideContainer","renderLeftIcon","renderPrefix","wrapper","renderPlaceholder","rightContainer","renderSuffix","renderRightIcon","element","event","fieldIsEmpty","target","e","isDeleteKey","currentTarget","repeat","handleUnexpectedInput","maxLength","handleMaskedValueChange","prefixDisabled","suffixDisabled","componentDidMount","componentWillUnmount","UNSAFE_componentWillReceiveProps","nextProps","blur","offsetWidth","window","setTimeout","start","end","Error","document","activeElement","render","getIconSizeClassname","right","rightIconLarge","leftIconLarge","rightIconMedium","leftIconMedium","rightIconSmall","leftIconSmall","renderIcon","icon","sizeClassName","iconNode","Function","useDefaultColor","iconDisabled","placeholderDisabled","placeholderFocus","sizeLarge","sizeLargeFallback","sizeMedium","sizeMediumFallback","sizeSmall","sizeSmallFallback","Boolean","Component","__KONTUR_REACT_UI__","defaultProps"],"mappings":"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","sourcesContent":["import invariant from 'invariant';\nimport React from 'react';\nimport raf from 'raf';\n\nimport { isIE11, isEdge } from '../../lib/client';\nimport { isKeyBackspace, isKeyDelete, someKeys } from '../../lib/events/keyboard/identifiers';\nimport { polyfillPlaceholder } from '../../lib/polyfillPlaceholder';\nimport { Nullable, Override } from '../../typings/utility-types';\nimport { MaskedInput } from '../../internal/MaskedInput';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './Input.styles';\n\nexport type InputSize = 'small' | 'medium' | 'large';\nexport type InputAlign = 'left' | 'center' | 'right';\nexport type InputType = 'password' | 'text';\nexport type InputIconType = React.ReactNode | (() => React.ReactNode);\n\nexport interface InputProps\n extends CommonProps,\n Override<\n React.InputHTMLAttributes<HTMLInputElement>,\n {\n /**\n * Иконка слева\n * Если `ReactNode` применяются дефолтные стили для иконки\n * Если `() => ReactNode` применяются только стили для позиционирование\n */\n leftIcon?: InputIconType;\n /**\n * Иконка справа\n * Если `ReactNode` применяются дефолтные стили для иконки\n * Если `() => ReactNode` применяются только стили для позиционирование\n */\n rightIcon?: InputIconType;\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n /** Режим прозрачной рамки */\n borderless?: boolean;\n /** Выравнивание текста */\n align?: InputAlign;\n /** Паттерн маски */\n mask?: Nullable<string>;\n /** Символ маски */\n maskChar?: Nullable<string>;\n /**\n * Словарь символов-регулярок для задания маски\n * @default { '9': '[0-9]', 'a': '[A-Za-z]', '*': '[A-Za-z0-9]' }\n */\n formatChars?: Record<string, string>;\n /** Показывать символы маски */\n alwaysShowMask?: boolean;\n /** Размер */\n size?: InputSize;\n /** onValueChange */\n onValueChange?: (value: string) => void;\n /** Вызывается на label */\n onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;\n /** Вызывается на label */\n onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;\n /** Вызывается на label */\n onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;\n /** Тип */\n type?: InputType;\n /** Значение */\n value?: string;\n capture?: boolean;\n\n /**\n * Префикс\n * `ReactNode` перед значением, но после иконки\n */\n prefix?: React.ReactNode;\n /**\n * Суффикс\n * `ReactNode` после значения, но перед правой иконкой\n */\n suffix?: React.ReactNode;\n /** Выделять введенное значение при фокусе */\n selectAllOnFocus?: boolean;\n /**\n * Обработчик неправильного ввода.\n * По-умолчанию, инпут вспыхивает синим.\n * Если передан - вызывается переданный обработчик,\n * в таком случае вспыхивание можно вызвать\n * публичным методом инстанса `blink()`.\n *\n * @param value значение инпута.\n */\n onUnexpectedInput?: (value: string) => void;\n }\n > {}\n\nexport interface InputState {\n blinking: boolean;\n focused: boolean;\n polyfillPlaceholder: boolean;\n}\n\n/**\n * Интерфес пропсов наследуется от `React.InputHTMLAttributes<HTMLInputElement>`.\n * Все пропсы кроме перечисленных, `className` и `style` передаются в `<input>`\n */\nexport class Input extends React.Component<InputProps, InputState> {\n public static __KONTUR_REACT_UI__ = 'Input';\n\n public static defaultProps: {\n size: InputSize;\n } = {\n size: 'small',\n };\n\n public state: InputState = {\n polyfillPlaceholder: false,\n blinking: false,\n focused: false,\n };\n\n private selectAllId: number | null = null;\n private theme!: Theme;\n private blinkTimeout = 0;\n private input: HTMLInputElement | null = null;\n\n public componentDidMount() {\n if (polyfillPlaceholder) {\n this.setState({ polyfillPlaceholder: true });\n }\n }\n\n public componentWillUnmount() {\n if (this.blinkTimeout) {\n clearTimeout(this.blinkTimeout);\n }\n this.cancelDelayedSelectAll();\n }\n\n public UNSAFE_componentWillReceiveProps(nextProps: InputProps) {\n if (polyfillPlaceholder && !nextProps.value) {\n this.setState({ polyfillPlaceholder: true });\n }\n }\n\n /**\n * @public\n */\n public focus() {\n invariant(this.input, 'Cannot call \"focus\" because Input is not mounted');\n this.input!.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n invariant(this.input, 'Cannot call \"blur\" because Input is not mounted');\n this.input!.blur();\n }\n\n /**\n * @public\n */\n public blink() {\n if (this.blinkTimeout) {\n this.cancelBlink(() => {\n // trigger reflow to restart animation\n // @see https://css-tricks.com/restart-css-animation/#article-header-id-0\n void (this.input && this.input.offsetWidth);\n this.blink();\n });\n return;\n }\n this.setState({ blinking: true }, () => {\n this.blinkTimeout = window.setTimeout(this.cancelBlink, 150);\n });\n }\n\n /**\n * @public\n * @param {number} start\n * @param {number} end\n */\n public setSelectionRange(start: number, end: number) {\n if (!this.input) {\n throw new Error('Cannot call \"setSelectionRange\" on unmounted Input');\n }\n\n if (document.activeElement !== this.input) {\n this.focus();\n }\n\n this.input.setSelectionRange(start, end);\n }\n\n public get isMaskVisible(): boolean {\n const { mask, alwaysShowMask } = this.props;\n const { focused } = this.state;\n return Boolean(mask && (focused || alwaysShowMask));\n }\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return <CommonWrapper {...this.props}>{this.renderMain}</CommonWrapper>;\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public selectAll = (): void => {\n if (this.input) {\n this.setSelectionRange(0, this.input.value.length);\n }\n };\n\n private delaySelectAll = (): number => (this.selectAllId = raf(this.selectAll));\n\n private cancelDelayedSelectAll = (): void => {\n if (this.selectAllId) {\n raf.cancel(this.selectAllId);\n this.selectAllId = null;\n }\n };\n\n private cancelBlink = (callback?: () => void): void => {\n if (this.blinkTimeout) {\n clearTimeout(this.blinkTimeout);\n this.blinkTimeout = 0;\n if (this.state.blinking) {\n this.setState({ blinking: false }, callback);\n return;\n }\n }\n if (callback) {\n callback();\n }\n };\n\n private renderMain = (props: CommonWrapperRestProps<InputProps>) => {\n const {\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onKeyDown,\n onKeyPress,\n onValueChange,\n width,\n error,\n warning,\n leftIcon,\n rightIcon,\n borderless,\n value,\n align,\n type,\n mask,\n maskChar,\n alwaysShowMask,\n size,\n placeholder,\n selectAllOnFocus,\n disabled,\n onUnexpectedInput,\n prefix,\n suffix,\n formatChars,\n ...rest\n } = props;\n\n const { blinking, focused } = this.state;\n\n const labelProps = {\n className: cx(styles.root(this.theme), this.getSizeClassName(), {\n [styles.focus(this.theme)]: focused,\n [styles.blink(this.theme)]: blinking,\n [styles.borderless()]: borderless && !focused,\n [styles.disabled(this.theme)]: disabled,\n [styles.warning(this.theme)]: warning,\n [styles.error(this.theme)]: error,\n [styles.focusFallback(this.theme)]: focused && (isIE11 || isEdge),\n [styles.warningFallback(this.theme)]: warning && (isIE11 || isEdge),\n [styles.errorFallback(this.theme)]: error && (isIE11 || isEdge),\n }),\n style: { width },\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n };\n\n const inputProps = {\n ...rest,\n className: cx(styles.input(this.theme), {\n [styles.inputFocus(this.theme)]: focused,\n [styles.inputDisabled(this.theme)]: disabled,\n }),\n value,\n onChange: this.handleChange,\n onFocus: this.handleFocus,\n onKeyDown: this.handleKeyDown,\n onKeyPress: this.handleKeyPress,\n onBlur: this.handleBlur,\n style: { textAlign: align },\n ref: this.refInput,\n type: 'text',\n placeholder: !this.isMaskVisible && !polyfillPlaceholder ? placeholder : undefined,\n disabled,\n };\n\n if (type === 'password') {\n inputProps.type = type;\n }\n\n const input = mask ? this.renderMaskedInput(inputProps, mask) : React.createElement('input', inputProps);\n\n return (\n <label {...labelProps}>\n <span className={styles.sideContainer()}>\n {this.renderLeftIcon()}\n {this.renderPrefix()}\n </span>\n <span className={styles.wrapper()}>\n {input}\n {this.renderPlaceholder()}\n </span>\n <span className={cx(styles.sideContainer(), styles.rightContainer())}>\n {this.renderSuffix()}\n {this.renderRightIcon()}\n </span>\n </label>\n );\n };\n\n private renderMaskedInput(\n inputProps: React.InputHTMLAttributes<HTMLInputElement> & {\n capture?: boolean;\n },\n mask: string,\n ) {\n return (\n <MaskedInput\n {...inputProps}\n mask={mask}\n maskChar={this.props.maskChar}\n alwaysShowMask={this.props.alwaysShowMask}\n formatChars={this.props.formatChars}\n onChange={this.props.onChange}\n onValueChange={this.handleMaskedValueChange}\n onUnexpectedInput={this.handleUnexpectedInput}\n />\n );\n }\n\n private getIconSizeClassname(right = false) {\n switch (this.props.size) {\n case 'large':\n return right ? styles.rightIconLarge(this.theme) : styles.leftIconLarge(this.theme);\n case 'medium':\n return right ? styles.rightIconMedium(this.theme) : styles.leftIconMedium(this.theme);\n case 'small':\n default:\n return right ? styles.rightIconSmall(this.theme) : styles.leftIconSmall(this.theme);\n }\n }\n\n private renderLeftIcon() {\n return this.renderIcon(this.props.leftIcon, this.getIconSizeClassname());\n }\n\n private renderRightIcon() {\n return this.renderIcon(this.props.rightIcon, this.getIconSizeClassname(true));\n }\n\n private renderIcon(icon: InputIconType, sizeClassName: string) {\n if (!icon) {\n return null;\n }\n const { disabled } = this.props;\n const iconNode = icon instanceof Function ? icon() : icon;\n\n return (\n <span\n className={cx(styles.icon(), sizeClassName, styles.useDefaultColor(this.theme), {\n [styles.iconDisabled()]: disabled,\n })}\n >\n {iconNode}\n </span>\n );\n }\n\n private renderPlaceholder() {\n const { disabled } = this.props;\n const { focused } = this.state;\n let placeholder = null;\n\n if (this.state.polyfillPlaceholder && this.props.placeholder && !this.isMaskVisible && !this.props.value) {\n placeholder = (\n <div\n className={cx(styles.placeholder(this.theme), {\n [styles.placeholderDisabled(this.theme)]: disabled,\n [styles.placeholderFocus(this.theme)]: focused,\n })}\n style={{ textAlign: this.props.align || 'inherit' }}\n >\n {this.props.placeholder}\n </div>\n );\n }\n\n return placeholder;\n }\n\n private getSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return cx({\n [styles.sizeLarge(this.theme)]: true,\n [styles.sizeLargeFallback(this.theme)]: isIE11 || isEdge,\n });\n case 'medium':\n return cx({\n [styles.sizeMedium(this.theme)]: true,\n [styles.sizeMediumFallback(this.theme)]: isIE11 || isEdge,\n });\n case 'small':\n default:\n return cx({\n [styles.sizeSmall(this.theme)]: true,\n [styles.sizeSmallFallback(this.theme)]: isIE11 || isEdge,\n });\n }\n }\n\n private refInput = (element: HTMLInputElement | MaskedInput | null) => {\n if (element instanceof MaskedInput) {\n this.input = element.input;\n } else {\n this.input = element;\n }\n };\n\n private handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (polyfillPlaceholder) {\n const fieldIsEmpty = event.target.value === '';\n if (this.state.polyfillPlaceholder !== fieldIsEmpty) {\n this.setState({ polyfillPlaceholder: fieldIsEmpty });\n }\n }\n\n if (this.props.onValueChange) {\n this.props.onValueChange(event.target.value);\n }\n\n if (this.props.onChange) {\n this.props.onChange(event);\n }\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n this.setState({\n focused: true,\n });\n\n if (this.props.selectAllOnFocus) {\n // https://github.com/facebook/react/issues/7769\n this.input && !isIE11 ? this.selectAll() : this.delaySelectAll();\n }\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n\n const isDeleteKey = someKeys(isKeyBackspace, isKeyDelete)(e);\n\n if (!e.currentTarget.value && isDeleteKey && !e.repeat) {\n this.handleUnexpectedInput();\n }\n };\n\n private handleKeyPress = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (this.props.onKeyPress) {\n this.props.onKeyPress(event);\n }\n\n if (this.props.maxLength === event.currentTarget.value.length) {\n this.handleUnexpectedInput(event.currentTarget.value);\n }\n };\n\n private handleMaskedValueChange = (value: string) => {\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n\n private handleUnexpectedInput = (value: string = this.props.value || '') => {\n if (this.props.onUnexpectedInput) {\n this.props.onUnexpectedInput(value);\n } else {\n this.blink();\n }\n };\n\n private handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n this.setState({ focused: false });\n\n if (this.props.onBlur) {\n this.props.onBlur(event);\n }\n };\n\n private renderPrefix = () => {\n const { prefix, disabled } = this.props;\n\n if (!prefix) {\n return null;\n }\n\n return (\n <span className={cx(styles.prefix(this.theme), { [styles.prefixDisabled(this.theme)]: disabled })}>{prefix}</span>\n );\n };\n\n private renderSuffix = () => {\n const { suffix, disabled } = this.props;\n\n if (!suffix) {\n return null;\n }\n\n return (\n <span className={cx(styles.suffix(this.theme), { [styles.suffixDisabled(this.theme)]: disabled })}>{suffix}</span>\n );\n };\n}\n"]}
@@ -18,9 +18,13 @@ export interface InputProps extends CommonProps, Override<React.InputHTMLAttribu
18
18
  * Если `() => ReactNode` применяются только стили для позиционирование
19
19
  */
20
20
  rightIcon?: InputIconType;
21
- /** Состояние ошибки */
21
+ /**
22
+ * Cостояние валидации при ошибке.
23
+ */
22
24
  error?: boolean;
23
- /** Состояние предупреждения */
25
+ /**
26
+ * Cостояние валидации при предупреждении.
27
+ */
24
28
  warning?: boolean;
25
29
  /** Режим прозрачной рамки */
26
30
  borderless?: boolean;
@@ -11,10 +11,7 @@ import { CommonWrapper } from "../../../internal/CommonWrapper";
11
11
  import { cx } from "../../../lib/theming/Emotion";
12
12
  import { styles } from "../Link.styles";
13
13
  /**
14
- * Стандартная ссылка.
15
- * Интерфес пропсов наследуется от `React.AnchorHTMLAttributes<HTMLAnchorElement>`.
16
- * Все свойства передаются в элемент `<a>`.
17
- * `className` и `style` не поддерживаются
14
+ * Элемент ссылки из HTML.
18
15
  */
19
16
 
20
17
  export var Link = /*#__PURE__*/function (_React$Component) {
@@ -80,13 +77,8 @@ export var Link = /*#__PURE__*/function (_React$Component) {
80
77
  onClick: _this._handleClick,
81
78
  onFocus: _this._handleFocus,
82
79
  onBlur: _this._handleBlur,
83
- tabIndex: _this.props.tabIndex
80
+ tabIndex: disabled || loading ? -1 : _this.props.tabIndex
84
81
  };
85
-
86
- if (disabled) {
87
- props.tabIndex = -1;
88
- }
89
-
90
82
  return /*#__PURE__*/React.createElement("a", _extends({}, rest, linkProps), iconElement, _this.props.children, arrow);
91
83
  };
92
84
 
@@ -114,13 +106,14 @@ export var Link = /*#__PURE__*/function (_React$Component) {
114
106
  var _this$props = _this.props,
115
107
  href = _this$props.href,
116
108
  onClick = _this$props.onClick,
117
- disabled = _this$props.disabled;
109
+ disabled = _this$props.disabled,
110
+ loading = _this$props.loading;
118
111
 
119
112
  if (!href) {
120
113
  event.preventDefault();
121
114
  }
122
115
 
123
- if (onClick && !disabled) {
116
+ if (onClick && !disabled && !loading) {
124
117
  onClick(event);
125
118
  }
126
119
  };