@skbkontur/react-ui 3.8.5 → 3.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/cjs/components/Button/Button.d.ts +66 -10
- package/cjs/components/Button/Button.js +55 -0
- package/cjs/components/Button/Button.js.map +1 -1
- package/cjs/components/Button/Button.md +42 -30
- package/cjs/components/Checkbox/Checkbox.d.ts +2 -2
- package/cjs/components/Checkbox/Checkbox.js.map +1 -1
- package/cjs/components/ComboBox/ComboBox.d.ts +6 -0
- package/cjs/components/ComboBox/ComboBox.js +4 -0
- package/cjs/components/ComboBox/ComboBox.js.map +1 -1
- package/cjs/components/DateInput/DateInput.d.ts +6 -0
- package/cjs/components/DateInput/DateInput.js +6 -0
- package/cjs/components/DateInput/DateInput.js.map +1 -1
- package/cjs/components/DatePicker/DatePicker.d.ts +6 -0
- package/cjs/components/DatePicker/DatePicker.js +6 -0
- package/cjs/components/DatePicker/DatePicker.js.map +1 -1
- package/cjs/components/Dropdown/Dropdown.d.ts +2 -2
- package/cjs/components/Dropdown/Dropdown.js.map +1 -1
- package/cjs/components/Hint/Hint.d.ts +5 -0
- package/cjs/components/Hint/Hint.js +5 -0
- package/cjs/components/Hint/Hint.js.map +1 -1
- package/cjs/components/Input/Input.d.ts +6 -2
- package/cjs/components/Input/Input.js +4 -0
- package/cjs/components/Input/Input.js.map +1 -1
- package/cjs/components/Link/Link.js +3 -6
- package/cjs/components/Link/Link.js.map +1 -1
- package/cjs/components/Link/Link.mixins.js +2 -1
- package/cjs/components/Link/Link.mixins.js.map +1 -1
- package/cjs/components/Radio/Radio.d.ts +27 -11
- package/cjs/components/Radio/Radio.js +19 -6
- package/cjs/components/Radio/Radio.js.map +1 -1
- package/cjs/components/Radio/Radio.md +36 -12
- package/cjs/components/RadioGroup/RadioGroup.d.ts +2 -2
- package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
- package/cjs/components/Select/Select.d.ts +4 -1
- package/cjs/components/Select/Select.js +3 -0
- package/cjs/components/Select/Select.js.map +1 -1
- package/cjs/components/Tabs/Tab.d.ts +2 -2
- package/cjs/components/Tabs/Tab.js.map +1 -1
- package/cjs/components/Textarea/Textarea.d.ts +6 -2
- package/cjs/components/Textarea/Textarea.js +4 -0
- package/cjs/components/Textarea/Textarea.js.map +1 -1
- package/cjs/components/Toggle/Toggle.d.ts +2 -2
- package/cjs/components/Toggle/Toggle.js.map +1 -1
- package/cjs/components/Token/Token.d.ts +6 -0
- package/cjs/components/Token/Token.js +6 -0
- package/cjs/components/Token/Token.js.map +1 -1
- package/cjs/components/TokenInput/TokenInput.d.ts +6 -0
- package/cjs/components/TokenInput/TokenInput.js +6 -0
- package/cjs/components/TokenInput/TokenInput.js.map +1 -1
- package/cjs/components/TokenInput/TokenInputMenu.js +1 -1
- package/cjs/components/TokenInput/TokenInputMenu.js.map +1 -1
- package/cjs/components/Tooltip/Tooltip.d.ts +3 -3
- package/cjs/components/Tooltip/Tooltip.js +2 -1
- package/cjs/components/Tooltip/Tooltip.js.map +1 -1
- package/cjs/internal/CustomComboBox/ComboBoxView.d.ts +6 -0
- package/cjs/internal/CustomComboBox/ComboBoxView.js +6 -0
- package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
- package/cjs/internal/CustomComboBox/CustomComboBox.d.ts +6 -0
- package/cjs/internal/CustomComboBox/CustomComboBox.js +6 -0
- package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
- package/cjs/internal/Popup/Popup.d.ts +13 -0
- package/cjs/internal/Popup/Popup.js +25 -3
- package/cjs/internal/Popup/Popup.js.map +1 -1
- package/cjs/internal/Popup/PopupHelper.js +1 -0
- package/cjs/internal/Popup/PopupHelper.js.map +1 -1
- package/components/Button/Button/Button.js.map +1 -1
- package/components/Button/Button.d.ts +66 -10
- package/components/Button/Button.md +42 -30
- package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
- package/components/Checkbox/Checkbox.d.ts +2 -2
- package/components/ComboBox/ComboBox/ComboBox.js.map +1 -1
- package/components/ComboBox/ComboBox.d.ts +6 -0
- package/components/DateInput/DateInput/DateInput.js.map +1 -1
- package/components/DateInput/DateInput.d.ts +6 -0
- package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
- package/components/DatePicker/DatePicker.d.ts +6 -0
- package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
- package/components/Dropdown/Dropdown.d.ts +2 -2
- package/components/Hint/Hint/Hint.js.map +1 -1
- package/components/Hint/Hint.d.ts +5 -0
- package/components/Input/Input/Input.js.map +1 -1
- package/components/Input/Input.d.ts +6 -2
- package/components/Link/Link/Link.js +4 -8
- package/components/Link/Link/Link.js.map +1 -1
- package/components/Link/Link.mixins/Link.mixins.js +1 -1
- package/components/Link/Link.mixins/Link.mixins.js.map +1 -1
- package/components/Radio/Radio/Radio.js +6 -5
- package/components/Radio/Radio/Radio.js.map +1 -1
- package/components/Radio/Radio.d.ts +27 -11
- package/components/Radio/Radio.md +36 -12
- package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
- package/components/RadioGroup/RadioGroup.d.ts +2 -2
- package/components/Select/Select/Select.js.map +1 -1
- package/components/Select/Select.d.ts +4 -1
- package/components/Tabs/Tab/Tab.js.map +1 -1
- package/components/Tabs/Tab.d.ts +2 -2
- package/components/Textarea/Textarea/Textarea.js.map +1 -1
- package/components/Textarea/Textarea.d.ts +6 -2
- package/components/Toggle/Toggle/Toggle.js.map +1 -1
- package/components/Toggle/Toggle.d.ts +2 -2
- package/components/Token/Token/Token.js.map +1 -1
- package/components/Token/Token.d.ts +6 -0
- package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
- package/components/TokenInput/TokenInput.d.ts +6 -0
- package/components/TokenInput/TokenInputMenu/TokenInputMenu.js +1 -1
- package/components/TokenInput/TokenInputMenu/TokenInputMenu.js.map +1 -1
- package/components/Tooltip/Tooltip/Tooltip.js +2 -1
- package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
- package/components/Tooltip/Tooltip.d.ts +3 -3
- package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
- package/internal/CustomComboBox/ComboBoxView.d.ts +6 -0
- package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
- package/internal/CustomComboBox/CustomComboBox.d.ts +6 -0
- package/internal/Popup/Popup/Popup.js +9 -2
- package/internal/Popup/Popup/Popup.js.map +1 -1
- package/internal/Popup/Popup.d.ts +13 -0
- package/internal/Popup/PopupHelper/PopupHelper.js +2 -1
- package/internal/Popup/PopupHelper/PopupHelper.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["DateInput.tsx"],"names":["React","ConditionalHandler","LENGTH_FULLDATE","MAX_FULLDATE","MIN_FULLDATE","InternalDateComponentType","DatePickerLocaleHelper","InputLikeText","locale","ThemeContext","CalendarIcon","CommonWrapper","cx","DateFragmentsView","styles","Actions","extractAction","InternalDateMediator","DateInput","props","iDateMediator","inputLikeText","dateFragmentsView","isMouseDown","isMouseFocus","ignoringDelimiter","blurEvent","theme","conditionalHandler","add","MoveSelectionLeft","shiftSelection","MoveSelectionRight","Separator","pressDelimiter","MoveSelectionFirst","selectDateComponent","getLeftmostType","MoveSelectionLast","getRightmostType","Increment","shiftDateComponent","Decrement","Digit","e","inputValue","ClearSelection","clearSelected","ClearOneChar","clearOneChar","FullSelection","fullSelection","WrongInput","blink","build","selectNode","type","state","selected","getRootNode","All","selectInnerNode","index","getTypesOrder","indexOf","renderIcon","withIcon","size","disabled","iconStyles","icon","iconSmall","iconMedium","iconLarge","iconDisabled","handleFocus","setState","prevState","focused","onFocus","handleBlur","restored","restore","updateValue","inputMode","onBlur","persist","handleMouseDownCapture","isFragment","target","preventDefault","handleSelectDateComponent","isEmpty","handleMouseDragStart","dragged","handleMouseDragEnd","selection","getSelection","toString","length","handleKeyDown","onKeyDown","handlePaste","pasted","clipboardData","getData","trim","validateString","paste","handleDoubleClick","inputLikeTextRef","el","dateFragmentsViewRef","valueFormatted","getString","emitChange","updateFromProps","update","value","get","getInternalString","onValueChange","clear","nextType","isNull","deleteOneCharRight","step","changed","getShiftedType","event","inputKey","key","componentDidUpdate","prevProps","minDate","maxDate","isChangedLocale","componentDidMount","autoFocus","focus","blur","render","renderMain","showValue","Boolean","width","error","warning","onClick","valueVisible","getFragments","Component","__KONTUR_REACT_UI__","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { ConditionalHandler } from '../../lib/ConditionalHandler';\nimport { LENGTH_FULLDATE, MAX_FULLDATE, MIN_FULLDATE } from '../../lib/date/constants';\nimport { InternalDateComponentType } from '../../lib/date/types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { DatePickerLocale, DatePickerLocaleHelper } from '../DatePicker/locale';\nimport { InputLikeText } from '../../internal/InputLikeText';\nimport { locale } from '../../lib/locale/decorators';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CalendarIcon } from '../../internal/icons/16px';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { DateFragmentsView } from './DateFragmentsView';\nimport { styles } from './DateInput.styles';\nimport { Actions, extractAction } from './helpers/DateInputKeyboardActions';\nimport { InternalDateMediator } from './helpers/InternalDateMediator';\n\nexport interface DateInputState {\n selected: InternalDateComponentType | null;\n valueFormatted: string;\n inputMode: boolean;\n focused: boolean;\n dragged: boolean;\n}\n\nexport interface DateInputProps extends CommonProps {\n autoFocus?: boolean;\n value: string;\n error?: boolean;\n warning?: boolean;\n disabled?: boolean;\n /**\n * Минимальная дата.\n * @default '01.01.1900'\n */\n minDate: string;\n /**\n * Максимальная дата\n * @default '31.12.2099'\n */\n maxDate: string;\n /**\n * Ширина поля\n * @default 125\n */\n width?: string | number;\n withIcon?: boolean;\n /**\n * Размер поля\n * @default 'small'\n */\n size: 'small' | 'large' | 'medium';\n onBlur?: (x0: React.FocusEvent<HTMLElement>) => void;\n onClick?: (x0: React.MouseEvent<HTMLElement>) => void;\n onFocus?: (x0: React.FocusEvent<HTMLElement>) => void;\n /**\n * Вызывается при изменении `value`\n *\n * @param value - строка в формате `dd.mm.yyyy`.\n */\n onValueChange?: (value: string) => void;\n onKeyDown?: (x0: React.KeyboardEvent<HTMLElement>) => void;\n}\n\n@locale('DatePicker', DatePickerLocaleHelper)\nexport class DateInput extends React.Component<DateInputProps, DateInputState> {\n public static __KONTUR_REACT_UI__ = 'DateInput';\n\n public static defaultProps = {\n value: '',\n minDate: MIN_FULLDATE,\n maxDate: MAX_FULLDATE,\n size: 'small',\n width: 125,\n };\n\n private iDateMediator: InternalDateMediator = new InternalDateMediator();\n private inputLikeText: InputLikeText | null = null;\n private dateFragmentsView: DateFragmentsView | null = null;\n private isMouseDown = false;\n private isMouseFocus = false;\n private ignoringDelimiter = false;\n private locale!: DatePickerLocale;\n private blurEvent: React.FocusEvent<HTMLElement> | null = null;\n private theme!: Theme;\n private conditionalHandler = new ConditionalHandler<Actions, [React.KeyboardEvent<HTMLElement>]>()\n .add(Actions.MoveSelectionLeft, () => this.shiftSelection(-1))\n .add(Actions.MoveSelectionRight, () => this.shiftSelection(1))\n .add(Actions.Separator, () => this.pressDelimiter())\n .add(Actions.MoveSelectionFirst, () => this.selectDateComponent(this.iDateMediator.getLeftmostType()))\n .add(Actions.MoveSelectionLast, () => this.selectDateComponent(this.iDateMediator.getRightmostType()))\n .add(Actions.Increment, () => this.shiftDateComponent(1))\n .add(Actions.Decrement, () => this.shiftDateComponent(-1))\n .add(Actions.Digit, (e) => this.inputValue(e))\n .add(Actions.ClearSelection, () => this.clearSelected())\n .add(Actions.ClearOneChar, () => this.clearOneChar())\n .add(Actions.FullSelection, () => this.fullSelection())\n .add(Actions.WrongInput, () => this.blink())\n .build();\n\n constructor(props: DateInputProps) {\n super(props);\n\n this.state = {\n valueFormatted: '',\n selected: null,\n inputMode: false,\n focused: false,\n dragged: false,\n };\n }\n\n public componentDidUpdate(prevProps: DateInputProps, prevState: DateInputState) {\n if (\n prevProps.value !== this.props.value ||\n prevProps.minDate !== this.props.minDate ||\n prevProps.maxDate !== this.props.maxDate ||\n this.iDateMediator.isChangedLocale(this.locale)\n ) {\n this.updateFromProps();\n }\n this.selectNode();\n }\n\n public selectNode = () => {\n const type = this.state.selected;\n const dateFragmentsView = this.dateFragmentsView && this.dateFragmentsView.getRootNode();\n if (type === null || !this.inputLikeText || !dateFragmentsView) {\n return;\n }\n if (type === InternalDateComponentType.All) {\n this.inputLikeText.selectInnerNode(dateFragmentsView, 0, 5);\n return;\n }\n const index = this.iDateMediator.getTypesOrder().indexOf(type);\n if (index > -1) {\n this.inputLikeText.selectInnerNode(dateFragmentsView, index * 2, index * 2 + 1);\n }\n };\n\n public componentDidMount(): void {\n this.updateFromProps();\n if (this.props.autoFocus) {\n this.focus();\n }\n }\n\n public blur() {\n if (this.inputLikeText) {\n this.inputLikeText.blur();\n }\n }\n\n public focus() {\n if (this.inputLikeText) {\n this.inputLikeText.focus();\n }\n }\n\n public blink() {\n if (this.inputLikeText) {\n this.inputLikeText.blink();\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { focused, selected, inputMode, valueFormatted } = this.state;\n const showValue = Boolean(focused || valueFormatted);\n\n return (\n <CommonWrapper {...this.props}>\n <InputLikeText\n width={this.props.width}\n ref={this.inputLikeTextRef}\n size={this.props.size}\n disabled={this.props.disabled}\n error={this.props.error}\n warning={this.props.warning}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onClick={this.props.onClick}\n onKeyDown={this.handleKeyDown}\n onMouseDownCapture={this.handleMouseDownCapture}\n onPaste={this.handlePaste}\n rightIcon={this.renderIcon()}\n onDoubleClickCapture={this.handleDoubleClick}\n onMouseDragStart={this.handleMouseDragStart}\n onMouseDragEnd={this.handleMouseDragEnd}\n value={this.iDateMediator.getInternalString()}\n inputMode={'numeric'}\n takeContentWidth\n >\n <span className={cx(styles.value(), { [styles.valueVisible()]: showValue })}>\n <DateFragmentsView\n ref={this.dateFragmentsViewRef}\n fragments={this.iDateMediator.getFragments()}\n onSelectDateComponent={this.handleSelectDateComponent}\n selected={selected}\n inputMode={inputMode}\n />\n </span>\n </InputLikeText>\n </CommonWrapper>\n );\n }\n\n private renderIcon = () => {\n const { withIcon, size, disabled = false } = this.props;\n\n if (withIcon) {\n const theme = this.theme;\n const iconStyles = cx({\n [styles.icon(theme)]: true,\n [styles.iconSmall(theme)]: size === 'small',\n [styles.iconMedium(theme)]: size === 'medium',\n [styles.iconLarge(theme)]: size === 'large',\n [styles.iconDisabled(theme)]: disabled,\n });\n return (\n <span className={iconStyles}>\n <CalendarIcon />\n </span>\n );\n }\n return null;\n };\n\n private handleFocus = (e: React.FocusEvent<HTMLElement>) => {\n this.setState((prevState) => ({\n focused: true,\n selected: this.isMouseDown && !prevState.focused ? prevState.selected : this.iDateMediator.getLeftmostType(),\n }));\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLElement>) => {\n const restored = this.iDateMediator.restore();\n this.updateValue({ focused: false, selected: null, inputMode: false });\n\n if (this.props.onBlur) {\n if (restored) {\n e.persist();\n this.blurEvent = e;\n } else {\n this.props.onBlur(e);\n }\n }\n };\n\n private handleMouseDownCapture = (e: React.MouseEvent<HTMLSpanElement>) => {\n const isFragment = this.dateFragmentsView ? this.dateFragmentsView.isFragment(e.target) : false;\n if (this.state.focused && !isFragment) {\n e.preventDefault();\n }\n this.isMouseFocus = !this.state.focused;\n this.isMouseDown = isFragment;\n };\n\n private handleSelectDateComponent = (type: InternalDateComponentType) => {\n if (!(this.isMouseFocus && this.iDateMediator.isEmpty())) {\n this.selectDateComponent(type);\n }\n this.isMouseFocus = false;\n this.isMouseDown = false;\n };\n\n private handleMouseDragStart = () => {\n this.setState({ dragged: true, selected: null });\n };\n\n private handleMouseDragEnd = () => {\n const selection = getSelection();\n if (\n selection &&\n selection.toString().length === LENGTH_FULLDATE &&\n this.state.selected !== InternalDateComponentType.All\n ) {\n this.selectDateComponent(InternalDateComponentType.All);\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (this.conditionalHandler(extractAction(e), e)) {\n e.preventDefault();\n }\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n };\n\n private handlePaste = (e: React.ClipboardEvent<HTMLElement>) => {\n const pasted = e && e.clipboardData.getData('text').trim();\n if (pasted && this.iDateMediator.validateString(pasted)) {\n this.iDateMediator.paste(pasted);\n this.updateValue();\n }\n };\n\n private handleDoubleClick = () => {\n this.selectDateComponent(InternalDateComponentType.All);\n };\n\n private inputLikeTextRef = (el: InputLikeText | null) => {\n this.inputLikeText = el;\n };\n\n private dateFragmentsViewRef = (el: DateFragmentsView | null) => {\n this.dateFragmentsView = el;\n };\n\n private selectDateComponent = (selected: InternalDateComponentType | null): void => {\n this.setState({ selected, inputMode: false });\n };\n\n private updateValue = (state: Partial<DateInputState> = {}): void => {\n const valueFormatted = this.iDateMediator.getString();\n\n this.setState({ ...state, valueFormatted } as DateInputState, this.emitChange);\n };\n\n private updateFromProps = (): void => {\n this.iDateMediator.update(this.props, this.locale);\n\n this.updateValue();\n };\n\n private fullSelection = (): void => {\n this.selectDateComponent(InternalDateComponentType.All);\n };\n\n private pressDelimiter = (): void => {\n const value = this.iDateMediator.get(this.state.selected);\n if (value !== null && value !== '') {\n if (!this.ignoringDelimiter) {\n this.shiftSelection(1);\n }\n this.ignoringDelimiter = false;\n }\n };\n\n private emitChange = (): void => {\n const value = this.iDateMediator.getInternalString();\n if (this.props.value === value) {\n return;\n }\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n if (this.blurEvent && this.props.onBlur) {\n this.props.onBlur(this.blurEvent);\n this.blurEvent = null;\n }\n };\n\n private clearSelected = (): void => {\n const selected = this.state.selected === null ? this.iDateMediator.getLeftmostType() : this.state.selected;\n this.iDateMediator.clear(selected);\n this.updateValue({\n inputMode: false,\n selected: selected === InternalDateComponentType.All ? this.iDateMediator.getLeftmostType() : selected,\n });\n };\n\n private clearOneChar = (): void => {\n const { selected, inputMode } = this.state;\n const nextType = selected === null ? this.iDateMediator.getRightmostType() : selected;\n if (this.iDateMediator.isNull(nextType)) {\n this.shiftSelection(-1);\n return;\n }\n if (selected === InternalDateComponentType.All) {\n this.iDateMediator.clear(InternalDateComponentType.All);\n this.updateValue({ selected: this.iDateMediator.getLeftmostType() });\n return;\n }\n this.iDateMediator.deleteOneCharRight(nextType, inputMode);\n this.updateValue({\n inputMode: this.iDateMediator.get(nextType) !== null,\n selected: nextType,\n });\n };\n\n private shiftDateComponent = (step: number): void => {\n const { selected } = this.state;\n const changed = this.iDateMediator.shiftDateComponent(selected, step);\n if (!changed) {\n this.blink();\n return;\n }\n this.updateValue({\n inputMode: false,\n selected: selected === InternalDateComponentType.All ? this.iDateMediator.getLeftmostType() : selected,\n });\n };\n\n private shiftSelection = (step: number): void => {\n const selected = this.iDateMediator.getShiftedType(this.state.selected, step);\n if (selected !== this.state.selected) {\n this.setState({ selected, inputMode: false });\n }\n };\n\n private inputValue = (event: React.KeyboardEvent<HTMLElement>): void => {\n let selected = this.state.selected;\n if (selected === InternalDateComponentType.All) {\n selected = this.iDateMediator.getLeftmostType();\n this.iDateMediator.clear(InternalDateComponentType.All);\n this.setState({ selected });\n }\n const inputMode = this.iDateMediator.inputKey(event.key, selected, this.state.inputMode);\n\n if (!inputMode) {\n this.ignoringDelimiter = true;\n this.shiftSelection(1);\n }\n this.updateValue({ inputMode });\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["DateInput.tsx"],"names":["React","ConditionalHandler","LENGTH_FULLDATE","MAX_FULLDATE","MIN_FULLDATE","InternalDateComponentType","DatePickerLocaleHelper","InputLikeText","locale","ThemeContext","CalendarIcon","CommonWrapper","cx","DateFragmentsView","styles","Actions","extractAction","InternalDateMediator","DateInput","props","iDateMediator","inputLikeText","dateFragmentsView","isMouseDown","isMouseFocus","ignoringDelimiter","blurEvent","theme","conditionalHandler","add","MoveSelectionLeft","shiftSelection","MoveSelectionRight","Separator","pressDelimiter","MoveSelectionFirst","selectDateComponent","getLeftmostType","MoveSelectionLast","getRightmostType","Increment","shiftDateComponent","Decrement","Digit","e","inputValue","ClearSelection","clearSelected","ClearOneChar","clearOneChar","FullSelection","fullSelection","WrongInput","blink","build","selectNode","type","state","selected","getRootNode","All","selectInnerNode","index","getTypesOrder","indexOf","renderIcon","withIcon","size","disabled","iconStyles","icon","iconSmall","iconMedium","iconLarge","iconDisabled","handleFocus","setState","prevState","focused","onFocus","handleBlur","restored","restore","updateValue","inputMode","onBlur","persist","handleMouseDownCapture","isFragment","target","preventDefault","handleSelectDateComponent","isEmpty","handleMouseDragStart","dragged","handleMouseDragEnd","selection","getSelection","toString","length","handleKeyDown","onKeyDown","handlePaste","pasted","clipboardData","getData","trim","validateString","paste","handleDoubleClick","inputLikeTextRef","el","dateFragmentsViewRef","valueFormatted","getString","emitChange","updateFromProps","update","value","get","getInternalString","onValueChange","clear","nextType","isNull","deleteOneCharRight","step","changed","getShiftedType","event","inputKey","key","componentDidUpdate","prevProps","minDate","maxDate","isChangedLocale","componentDidMount","autoFocus","focus","blur","render","renderMain","showValue","Boolean","width","error","warning","onClick","valueVisible","getFragments","Component","__KONTUR_REACT_UI__","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { ConditionalHandler } from '../../lib/ConditionalHandler';\nimport { LENGTH_FULLDATE, MAX_FULLDATE, MIN_FULLDATE } from '../../lib/date/constants';\nimport { InternalDateComponentType } from '../../lib/date/types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { DatePickerLocale, DatePickerLocaleHelper } from '../DatePicker/locale';\nimport { InputLikeText } from '../../internal/InputLikeText';\nimport { locale } from '../../lib/locale/decorators';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CalendarIcon } from '../../internal/icons/16px';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { DateFragmentsView } from './DateFragmentsView';\nimport { styles } from './DateInput.styles';\nimport { Actions, extractAction } from './helpers/DateInputKeyboardActions';\nimport { InternalDateMediator } from './helpers/InternalDateMediator';\n\nexport interface DateInputState {\n selected: InternalDateComponentType | null;\n valueFormatted: string;\n inputMode: boolean;\n focused: boolean;\n dragged: boolean;\n}\n\nexport interface DateInputProps extends CommonProps {\n autoFocus?: boolean;\n value: string;\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n disabled?: boolean;\n /**\n * Минимальная дата.\n * @default '01.01.1900'\n */\n minDate: string;\n /**\n * Максимальная дата\n * @default '31.12.2099'\n */\n maxDate: string;\n /**\n * Ширина поля\n * @default 125\n */\n width?: string | number;\n withIcon?: boolean;\n /**\n * Размер поля\n * @default 'small'\n */\n size: 'small' | 'large' | 'medium';\n onBlur?: (x0: React.FocusEvent<HTMLElement>) => void;\n onClick?: (x0: React.MouseEvent<HTMLElement>) => void;\n onFocus?: (x0: React.FocusEvent<HTMLElement>) => void;\n /**\n * Вызывается при изменении `value`\n *\n * @param value - строка в формате `dd.mm.yyyy`.\n */\n onValueChange?: (value: string) => void;\n onKeyDown?: (x0: React.KeyboardEvent<HTMLElement>) => void;\n}\n\n@locale('DatePicker', DatePickerLocaleHelper)\nexport class DateInput extends React.Component<DateInputProps, DateInputState> {\n public static __KONTUR_REACT_UI__ = 'DateInput';\n\n public static defaultProps = {\n value: '',\n minDate: MIN_FULLDATE,\n maxDate: MAX_FULLDATE,\n size: 'small',\n width: 125,\n };\n\n private iDateMediator: InternalDateMediator = new InternalDateMediator();\n private inputLikeText: InputLikeText | null = null;\n private dateFragmentsView: DateFragmentsView | null = null;\n private isMouseDown = false;\n private isMouseFocus = false;\n private ignoringDelimiter = false;\n private locale!: DatePickerLocale;\n private blurEvent: React.FocusEvent<HTMLElement> | null = null;\n private theme!: Theme;\n private conditionalHandler = new ConditionalHandler<Actions, [React.KeyboardEvent<HTMLElement>]>()\n .add(Actions.MoveSelectionLeft, () => this.shiftSelection(-1))\n .add(Actions.MoveSelectionRight, () => this.shiftSelection(1))\n .add(Actions.Separator, () => this.pressDelimiter())\n .add(Actions.MoveSelectionFirst, () => this.selectDateComponent(this.iDateMediator.getLeftmostType()))\n .add(Actions.MoveSelectionLast, () => this.selectDateComponent(this.iDateMediator.getRightmostType()))\n .add(Actions.Increment, () => this.shiftDateComponent(1))\n .add(Actions.Decrement, () => this.shiftDateComponent(-1))\n .add(Actions.Digit, (e) => this.inputValue(e))\n .add(Actions.ClearSelection, () => this.clearSelected())\n .add(Actions.ClearOneChar, () => this.clearOneChar())\n .add(Actions.FullSelection, () => this.fullSelection())\n .add(Actions.WrongInput, () => this.blink())\n .build();\n\n constructor(props: DateInputProps) {\n super(props);\n\n this.state = {\n valueFormatted: '',\n selected: null,\n inputMode: false,\n focused: false,\n dragged: false,\n };\n }\n\n public componentDidUpdate(prevProps: DateInputProps, prevState: DateInputState) {\n if (\n prevProps.value !== this.props.value ||\n prevProps.minDate !== this.props.minDate ||\n prevProps.maxDate !== this.props.maxDate ||\n this.iDateMediator.isChangedLocale(this.locale)\n ) {\n this.updateFromProps();\n }\n this.selectNode();\n }\n\n public selectNode = () => {\n const type = this.state.selected;\n const dateFragmentsView = this.dateFragmentsView && this.dateFragmentsView.getRootNode();\n if (type === null || !this.inputLikeText || !dateFragmentsView) {\n return;\n }\n if (type === InternalDateComponentType.All) {\n this.inputLikeText.selectInnerNode(dateFragmentsView, 0, 5);\n return;\n }\n const index = this.iDateMediator.getTypesOrder().indexOf(type);\n if (index > -1) {\n this.inputLikeText.selectInnerNode(dateFragmentsView, index * 2, index * 2 + 1);\n }\n };\n\n public componentDidMount(): void {\n this.updateFromProps();\n if (this.props.autoFocus) {\n this.focus();\n }\n }\n\n public blur() {\n if (this.inputLikeText) {\n this.inputLikeText.blur();\n }\n }\n\n public focus() {\n if (this.inputLikeText) {\n this.inputLikeText.focus();\n }\n }\n\n public blink() {\n if (this.inputLikeText) {\n this.inputLikeText.blink();\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { focused, selected, inputMode, valueFormatted } = this.state;\n const showValue = Boolean(focused || valueFormatted);\n\n return (\n <CommonWrapper {...this.props}>\n <InputLikeText\n width={this.props.width}\n ref={this.inputLikeTextRef}\n size={this.props.size}\n disabled={this.props.disabled}\n error={this.props.error}\n warning={this.props.warning}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onClick={this.props.onClick}\n onKeyDown={this.handleKeyDown}\n onMouseDownCapture={this.handleMouseDownCapture}\n onPaste={this.handlePaste}\n rightIcon={this.renderIcon()}\n onDoubleClickCapture={this.handleDoubleClick}\n onMouseDragStart={this.handleMouseDragStart}\n onMouseDragEnd={this.handleMouseDragEnd}\n value={this.iDateMediator.getInternalString()}\n inputMode={'numeric'}\n takeContentWidth\n >\n <span className={cx(styles.value(), { [styles.valueVisible()]: showValue })}>\n <DateFragmentsView\n ref={this.dateFragmentsViewRef}\n fragments={this.iDateMediator.getFragments()}\n onSelectDateComponent={this.handleSelectDateComponent}\n selected={selected}\n inputMode={inputMode}\n />\n </span>\n </InputLikeText>\n </CommonWrapper>\n );\n }\n\n private renderIcon = () => {\n const { withIcon, size, disabled = false } = this.props;\n\n if (withIcon) {\n const theme = this.theme;\n const iconStyles = cx({\n [styles.icon(theme)]: true,\n [styles.iconSmall(theme)]: size === 'small',\n [styles.iconMedium(theme)]: size === 'medium',\n [styles.iconLarge(theme)]: size === 'large',\n [styles.iconDisabled(theme)]: disabled,\n });\n return (\n <span className={iconStyles}>\n <CalendarIcon />\n </span>\n );\n }\n return null;\n };\n\n private handleFocus = (e: React.FocusEvent<HTMLElement>) => {\n this.setState((prevState) => ({\n focused: true,\n selected: this.isMouseDown && !prevState.focused ? prevState.selected : this.iDateMediator.getLeftmostType(),\n }));\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLElement>) => {\n const restored = this.iDateMediator.restore();\n this.updateValue({ focused: false, selected: null, inputMode: false });\n\n if (this.props.onBlur) {\n if (restored) {\n e.persist();\n this.blurEvent = e;\n } else {\n this.props.onBlur(e);\n }\n }\n };\n\n private handleMouseDownCapture = (e: React.MouseEvent<HTMLSpanElement>) => {\n const isFragment = this.dateFragmentsView ? this.dateFragmentsView.isFragment(e.target) : false;\n if (this.state.focused && !isFragment) {\n e.preventDefault();\n }\n this.isMouseFocus = !this.state.focused;\n this.isMouseDown = isFragment;\n };\n\n private handleSelectDateComponent = (type: InternalDateComponentType) => {\n if (!(this.isMouseFocus && this.iDateMediator.isEmpty())) {\n this.selectDateComponent(type);\n }\n this.isMouseFocus = false;\n this.isMouseDown = false;\n };\n\n private handleMouseDragStart = () => {\n this.setState({ dragged: true, selected: null });\n };\n\n private handleMouseDragEnd = () => {\n const selection = getSelection();\n if (\n selection &&\n selection.toString().length === LENGTH_FULLDATE &&\n this.state.selected !== InternalDateComponentType.All\n ) {\n this.selectDateComponent(InternalDateComponentType.All);\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (this.conditionalHandler(extractAction(e), e)) {\n e.preventDefault();\n }\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n };\n\n private handlePaste = (e: React.ClipboardEvent<HTMLElement>) => {\n const pasted = e && e.clipboardData.getData('text').trim();\n if (pasted && this.iDateMediator.validateString(pasted)) {\n this.iDateMediator.paste(pasted);\n this.updateValue();\n }\n };\n\n private handleDoubleClick = () => {\n this.selectDateComponent(InternalDateComponentType.All);\n };\n\n private inputLikeTextRef = (el: InputLikeText | null) => {\n this.inputLikeText = el;\n };\n\n private dateFragmentsViewRef = (el: DateFragmentsView | null) => {\n this.dateFragmentsView = el;\n };\n\n private selectDateComponent = (selected: InternalDateComponentType | null): void => {\n this.setState({ selected, inputMode: false });\n };\n\n private updateValue = (state: Partial<DateInputState> = {}): void => {\n const valueFormatted = this.iDateMediator.getString();\n\n this.setState({ ...state, valueFormatted } as DateInputState, this.emitChange);\n };\n\n private updateFromProps = (): void => {\n this.iDateMediator.update(this.props, this.locale);\n\n this.updateValue();\n };\n\n private fullSelection = (): void => {\n this.selectDateComponent(InternalDateComponentType.All);\n };\n\n private pressDelimiter = (): void => {\n const value = this.iDateMediator.get(this.state.selected);\n if (value !== null && value !== '') {\n if (!this.ignoringDelimiter) {\n this.shiftSelection(1);\n }\n this.ignoringDelimiter = false;\n }\n };\n\n private emitChange = (): void => {\n const value = this.iDateMediator.getInternalString();\n if (this.props.value === value) {\n return;\n }\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n if (this.blurEvent && this.props.onBlur) {\n this.props.onBlur(this.blurEvent);\n this.blurEvent = null;\n }\n };\n\n private clearSelected = (): void => {\n const selected = this.state.selected === null ? this.iDateMediator.getLeftmostType() : this.state.selected;\n this.iDateMediator.clear(selected);\n this.updateValue({\n inputMode: false,\n selected: selected === InternalDateComponentType.All ? this.iDateMediator.getLeftmostType() : selected,\n });\n };\n\n private clearOneChar = (): void => {\n const { selected, inputMode } = this.state;\n const nextType = selected === null ? this.iDateMediator.getRightmostType() : selected;\n if (this.iDateMediator.isNull(nextType)) {\n this.shiftSelection(-1);\n return;\n }\n if (selected === InternalDateComponentType.All) {\n this.iDateMediator.clear(InternalDateComponentType.All);\n this.updateValue({ selected: this.iDateMediator.getLeftmostType() });\n return;\n }\n this.iDateMediator.deleteOneCharRight(nextType, inputMode);\n this.updateValue({\n inputMode: this.iDateMediator.get(nextType) !== null,\n selected: nextType,\n });\n };\n\n private shiftDateComponent = (step: number): void => {\n const { selected } = this.state;\n const changed = this.iDateMediator.shiftDateComponent(selected, step);\n if (!changed) {\n this.blink();\n return;\n }\n this.updateValue({\n inputMode: false,\n selected: selected === InternalDateComponentType.All ? this.iDateMediator.getLeftmostType() : selected,\n });\n };\n\n private shiftSelection = (step: number): void => {\n const selected = this.iDateMediator.getShiftedType(this.state.selected, step);\n if (selected !== this.state.selected) {\n this.setState({ selected, inputMode: false });\n }\n };\n\n private inputValue = (event: React.KeyboardEvent<HTMLElement>): void => {\n let selected = this.state.selected;\n if (selected === InternalDateComponentType.All) {\n selected = this.iDateMediator.getLeftmostType();\n this.iDateMediator.clear(InternalDateComponentType.All);\n this.setState({ selected });\n }\n const inputMode = this.iDateMediator.inputKey(event.key, selected, this.state.inputMode);\n\n if (!inputMode) {\n this.ignoringDelimiter = true;\n this.shiftSelection(1);\n }\n this.updateValue({ inputMode });\n };\n}\n"]}
|
|
@@ -11,7 +11,13 @@ export interface DateInputState {
|
|
|
11
11
|
export interface DateInputProps extends CommonProps {
|
|
12
12
|
autoFocus?: boolean;
|
|
13
13
|
value: string;
|
|
14
|
+
/**
|
|
15
|
+
* Cостояние валидации при ошибке.
|
|
16
|
+
*/
|
|
14
17
|
error?: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Cостояние валидации при предупреждении.
|
|
20
|
+
*/
|
|
15
21
|
warning?: boolean;
|
|
16
22
|
disabled?: boolean;
|
|
17
23
|
/**
|
|
@@ -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 *
|
|
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;
|
|
@@ -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 /**\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 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"]}
|
|
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 /**\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"]}
|
|
@@ -41,6 +41,11 @@ export interface HintProps extends CommonProps {
|
|
|
41
41
|
* Отключает анимацию.
|
|
42
42
|
*/
|
|
43
43
|
disableAnimations: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Явно указывает, что вложенные элементы должны быть обёрнуты в `<span/>`. <br/> Используется для корректного позиционирования тултипа при двух и более вложенных элементах.
|
|
46
|
+
*
|
|
47
|
+
* _Примечание_: при **двух и более** вложенных элементах обёртка будет добавлена автоматически.
|
|
48
|
+
*/
|
|
44
49
|
useWrapper: boolean;
|
|
45
50
|
}
|
|
46
51
|
export interface HintState {
|
|
@@ -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":"sSAAA,OAAOA,SAAP,MAAsB,WAAtB;AACA,OAAOC,KAAP,MAAkB,OAAlB;AACA,OAAOC,GAAP,MAAgB,KAAhB;;AAEA,SAASC,MAAT,EAAiBC,MAAjB,QAA+B,kBAA/B;AACA,SAASC,cAAT,EAAyBC,WAAzB,EAAsCC,QAAtC,QAAsD,uCAAtD;AACA,SAASC,mBAAT,QAAoC,+BAApC;;AAEA,SAASC,WAAT,QAA4B,4BAA5B;AACA,SAASC,YAAT,QAA6B,gCAA7B;;AAEA,SAASC,aAAT,QAAmE,8BAAnE;AACA,SAASC,EAAT,QAAmB,2BAAnB;;AAEA,SAASC,MAAT,QAAuB,gBAAvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0FA;AACA;AACA;AACA;AACA,WAAaC,KAAb;;;;;;;;;AASSC,IAAAA,KATT,GAS6B;AACzBP,MAAAA,mBAAmB,EAAE,KADI;AAEzBQ,MAAAA,QAAQ,EAAE,KAFe;AAGzBC,MAAAA,OAAO,EAAE,KAHgB,EAT7B;;;AAeUC,IAAAA,WAfV,GAeuC,IAfvC;AAgBUC,IAAAA,KAhBV;AAiBUC,IAAAA,YAjBV,GAiByB,CAjBzB;AAkBUC,IAAAA,KAlBV,GAkB2C,IAlB3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8GSC,IAAAA,SA9GT,GA8GqB,YAAY;AAC7B,UAAI,MAAKD,KAAT,EAAgB;AACd,cAAKE,iBAAL,CAAuB,CAAvB,EAA0B,MAAKF,KAAL,CAAWG,KAAX,CAAiBC,MAA3C;AACD;AACF,KAlHH;;AAoHUC,IAAAA,cApHV,GAoH2B,oBAAe,MAAKR,WAAL,GAAmBhB,GAAG,CAAC,MAAKoB,SAAN,CAArC,EApH3B;;AAsHUK,IAAAA,sBAtHV,GAsHmC,YAAY;AAC3C,UAAI,MAAKT,WAAT,EAAsB;AACpBhB,QAAAA,GAAG,CAAC0B,MAAJ,CAAW,MAAKV,WAAhB;AACA,cAAKA,WAAL,GAAmB,IAAnB;AACD;AACF,KA3HH;;AA6HUW,IAAAA,WA7HV,GA6HwB,UAACC,QAAD,EAAiC;AACrD,UAAI,MAAKV,YAAT,EAAuB;AACrBW,QAAAA,YAAY,CAAC,MAAKX,YAAN,CAAZ;AACA,cAAKA,YAAL,GAAoB,CAApB;AACA,YAAI,MAAKL,KAAL,CAAWC,QAAf,EAAyB;AACvB,gBAAKgB,QAAL,CAAc,EAAEhB,QAAQ,EAAE,KAAZ,EAAd,EAAmCc,QAAnC;AACA;AACD;AACF;AACD,UAAIA,QAAJ,EAAc;AACZA,QAAAA,QAAQ;AACT;AACF,KAzIH;;AA2IUG,IAAAA,UA3IV,GA2IuB,UAACC,KAAD,EAA+C;;AAEhEC,MAAAA,YAFgE;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6B9DD,MAAAA,KA7B8D,CAEhEC,YAFgE,CAGhEC,YAHgE,GA6B9DF,KA7B8D,CAGhEE,YAHgE,CAIhEC,WAJgE,GA6B9DH,KA7B8D,CAIhEG,WAJgE,CAKhEC,SALgE,GA6B9DJ,KA7B8D,CAKhEI,SALgE,CAMhEC,UANgE,GA6B9DL,KA7B8D,CAMhEK,UANgE,CAOhEC,aAPgE,GA6B9DN,KA7B8D,CAOhEM,aAPgE,CAQhEC,KARgE,GA6B9DP,KA7B8D,CAQhEO,KARgE,CAShEC,KATgE,GA6B9DR,KA7B8D,CAShEQ,KATgE,CAUhEC,OAVgE,GA6B9DT,KA7B8D,CAUhES,OAVgE,CAWhEC,QAXgE,GA6B9DV,KA7B8D,CAWhEU,QAXgE,CAYhEC,SAZgE,GA6B9DX,KA7B8D,CAYhEW,SAZgE,CAahEC,UAbgE,GA6B9DZ,KA7B8D,CAahEY,UAbgE,CAchEtB,KAdgE,GA6B9DU,KA7B8D,CAchEV,KAdgE,CAehEuB,KAfgE,GA6B9Db,KA7B8D,CAehEa,KAfgE,CAgBhEC,IAhBgE,GA6B9Dd,KA7B8D,CAgBhEc,IAhBgE,CAiBhEC,IAjBgE,GA6B9Df,KA7B8D,CAiBhEe,IAjBgE,CAkBhEC,QAlBgE,GA6B9DhB,KA7B8D,CAkBhEgB,QAlBgE,CAmBhEC,cAnBgE,GA6B9DjB,KA7B8D,CAmBhEiB,cAnBgE,CAoBhEC,IApBgE,GA6B9DlB,KA7B8D,CAoBhEkB,IApBgE,CAqBhEC,WArBgE,GA6B9DnB,KA7B8D,CAqBhEmB,WArBgE,CAsBhEC,gBAtBgE,GA6B9DpB,KA7B8D,CAsBhEoB,gBAtBgE,CAuBhEC,QAvBgE,GA6B9DrB,KA7B8D,CAuBhEqB,QAvBgE,CAwBhEC,iBAxBgE,GA6B9DtB,KA7B8D,CAwBhEsB,iBAxBgE,CAyBhEC,MAzBgE,GA6B9DvB,KA7B8D,CAyBhEuB,MAzBgE,CA0BhEC,MA1BgE,GA6B9DxB,KA7B8D,CA0BhEwB,MA1BgE,CA2BhEC,WA3BgE,GA6B9DzB,KA7B8D,CA2BhEyB,WA3BgE,CA4B7DC,IA5B6D,iCA6B9D1B,KA7B8D;;AA+BpC,YAAKnB,KA/B+B,CA+B1DC,QA/B0D,eA+B1DA,QA/B0D,CA+BhDC,OA/BgD,eA+BhDA,OA/BgD;;AAiClE,UAAM4C,UAAU,GAAG;AACjBC,QAAAA,SAAS,EAAElD,EAAE,CAACC,MAAM,CAACkD,IAAP,CAAY,MAAK5C,KAAjB,CAAD,EAA0B,MAAK6C,gBAAL,EAA1B;AACVnD,QAAAA,MAAM,CAACoD,KAAP,CAAa,MAAK9C,KAAlB,CADU,IACiBF,OADjB;AAEVJ,QAAAA,MAAM,CAACqD,KAAP,CAAa,MAAK/C,KAAlB,CAFU,IAEiBH,QAFjB;AAGVH,QAAAA,MAAM,CAACiC,UAAP,EAHU,IAGYA,UAAU,IAAI,CAAC7B,OAH3B;AAIVJ,QAAAA,MAAM,CAAC0C,QAAP,CAAgB,MAAKpC,KAArB,CAJU,IAIoBoC,QAJpB;AAKV1C,QAAAA,MAAM,CAAC8B,OAAP,CAAe,MAAKxB,KAApB,CALU,IAKmBwB,OALnB;AAMV9B,QAAAA,MAAM,CAAC6B,KAAP,CAAa,MAAKvB,KAAlB,CANU,IAMiBuB,KANjB;AAOV7B,QAAAA,MAAM,CAACsD,aAAP,CAAqB,MAAKhD,KAA1B,CAPU,IAOyBF,OAAO,KAAKd,MAAM,IAAIC,MAAf,CAPhC;AAQVS,QAAAA,MAAM,CAACuD,eAAP,CAAuB,MAAKjD,KAA5B,CARU,IAQ2BwB,OAAO,KAAKxC,MAAM,IAAIC,MAAf,CARlC;AASVS,QAAAA,MAAM,CAACwD,aAAP,CAAqB,MAAKlD,KAA1B,CATU,IASyBuB,KAAK,KAAKvC,MAAM,IAAIC,MAAf,CAT9B,OADI;;AAYjBkE,QAAAA,KAAK,EAAE,EAAE7B,KAAK,EAALA,KAAF,EAZU;AAajBN,QAAAA,YAAY,EAAZA,YAbiB;AAcjBC,QAAAA,YAAY,EAAZA,YAdiB;AAejBC,QAAAA,WAAW,EAAXA,WAfiB,EAAnB;;;AAkBA,UAAMkC,UAAU;AACXX,MAAAA,IADW;AAEdE,QAAAA,SAAS,EAAElD,EAAE,CAACC,MAAM,CAACQ,KAAP,CAAa,MAAKF,KAAlB,CAAD;AACVN,QAAAA,MAAM,CAAC2D,UAAP,CAAkB,MAAKrD,KAAvB,CADU,IACsBF,OADtB;AAEVJ,QAAAA,MAAM,CAAC4D,aAAP,CAAqB,MAAKtD,KAA1B,CAFU,IAEyBoC,QAFzB,QAFC;;AAMd/B,QAAAA,KAAK,EAALA,KANc;AAOdkD,QAAAA,QAAQ,EAAE,MAAKC,YAPD;AAQdC,QAAAA,OAAO,EAAE,MAAKC,WARA;AASdvC,QAAAA,SAAS,EAAE,MAAKwC,aATF;AAUdvC,QAAAA,UAAU,EAAE,MAAKwC,cAVH;AAWdC,QAAAA,MAAM,EAAE,MAAKC,UAXC;AAYdX,QAAAA,KAAK,EAAE,EAAEY,SAAS,EAAEnC,KAAb,EAZO;AAadoC,QAAAA,GAAG,EAAE,MAAKC,QAbI;AAcdpC,QAAAA,IAAI,EAAE,MAdQ;AAedK,QAAAA,WAAW,EAAE,CAAC,MAAKgC,aAAN,IAAuB,CAAC7E,mBAAxB,GAA8C6C,WAA9C,GAA4DiC,SAf3D;AAgBd/B,QAAAA,QAAQ,EAARA,QAhBc,GAAhB;;;AAmBA,UAAIP,IAAI,KAAK,UAAb,EAAyB;AACvBuB,QAAAA,UAAU,CAACvB,IAAX,GAAkBA,IAAlB;AACD;;AAED,UAAM3B,KAAK,GAAG4B,IAAI,GAAG,MAAKsC,iBAAL,CAAuBhB,UAAvB,EAAmCtB,IAAnC,CAAH,gBAA8ChD,KAAK,CAACuF,aAAN,CAAoB,OAApB,EAA6BjB,UAA7B,CAAhE;;AAEA;AACE,qCAAWV,UAAX;AACE,sCAAM,SAAS,EAAEhD,MAAM,CAAC4E,aAAP,EAAjB;AACG,cAAKC,cAAL,EADH;AAEG,cAAKC,YAAL,EAFH,CADF;;AAKE,sCAAM,SAAS,EAAE9E,MAAM,CAAC+E,OAAP,EAAjB;AACGvE,QAAAA,KADH;AAEG,cAAKwE,iBAAL,EAFH,CALF;;AASE,sCAAM,SAAS,EAAEjF,EAAE,CAACC,MAAM,CAAC4E,aAAP,EAAD,EAAyB5E,MAAM,CAACiF,cAAP,EAAzB,CAAnB;AACG,cAAKC,YAAL,EADH;AAEG,cAAKC,eAAL,EAFH,CATF,CADF;;;;AAgBD,KAvOH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8UUZ,IAAAA,QA9UV,GA8UqB,UAACa,OAAD,EAAoD;AACrE,UAAIA,OAAO,YAAYxF,WAAvB,EAAoC;AAClC,cAAKY,KAAL,GAAa4E,OAAO,CAAC5E,KAArB;AACD,OAFD,MAEO;AACL,cAAKA,KAAL,GAAa4E,OAAb;AACD;AACF,KApVH;;AAsVUtB,IAAAA,YAtVV,GAsVyB,UAACuB,KAAD,EAAgD;AACrE,UAAI1F,mBAAJ,EAAyB;AACvB,YAAM2F,YAAY,GAAGD,KAAK,CAACE,MAAN,CAAa5E,KAAb,KAAuB,EAA5C;AACA,YAAI,MAAKT,KAAL,CAAWP,mBAAX,KAAmC2F,YAAvC,EAAqD;AACnD,gBAAKnE,QAAL,CAAc,EAAExB,mBAAmB,EAAE2F,YAAvB,EAAd;AACD;AACF;;AAED,UAAI,MAAKjE,KAAL,CAAWM,aAAf,EAA8B;AAC5B,cAAKN,KAAL,CAAWM,aAAX,CAAyB0D,KAAK,CAACE,MAAN,CAAa5E,KAAtC;AACD;;AAED,UAAI,MAAKU,KAAL,CAAWwC,QAAf,EAAyB;AACvB,cAAKxC,KAAL,CAAWwC,QAAX,CAAoBwB,KAApB;AACD;AACF,KArWH;;AAuWUrB,IAAAA,WAvWV,GAuWwB,UAACqB,KAAD,EAA+C;AACnE,YAAKlE,QAAL,CAAc;AACZf,QAAAA,OAAO,EAAE,IADG,EAAd;;;AAIA,UAAI,MAAKiB,KAAL,CAAWoB,gBAAf,EAAiC;AAC/B;AACA,cAAKjC,KAAL,IAAc,CAAClB,MAAf,GAAwB,MAAKmB,SAAL,EAAxB,GAA2C,MAAKI,cAAL,EAA3C;AACD;;AAED,UAAI,MAAKQ,KAAL,CAAW0C,OAAf,EAAwB;AACtB,cAAK1C,KAAL,CAAW0C,OAAX,CAAmBsB,KAAnB;AACD;AACF,KApXH;;AAsXUpB,IAAAA,aAtXV,GAsX0B,UAACuB,CAAD,EAA8C;AACpE,UAAI,MAAKnE,KAAL,CAAWI,SAAf,EAA0B;AACxB,cAAKJ,KAAL,CAAWI,SAAX,CAAqB+D,CAArB;AACD;;AAED,UAAMC,WAAW,GAAG/F,QAAQ,CAACF,cAAD,EAAiBC,WAAjB,CAAR,CAAsC+F,CAAtC,CAApB;;AAEA,UAAI,CAACA,CAAC,CAACE,aAAF,CAAgB/E,KAAjB,IAA0B8E,WAA1B,IAAyC,CAACD,CAAC,CAACG,MAAhD,EAAwD;AACtD,cAAKC,qBAAL;AACD;AACF,KAhYH;;AAkYU1B,IAAAA,cAlYV,GAkY2B,UAACmB,KAAD,EAAkD;AACzE,UAAI,MAAKhE,KAAL,CAAWK,UAAf,EAA2B;AACzB,cAAKL,KAAL,CAAWK,UAAX,CAAsB2D,KAAtB;AACD;;AAED,UAAI,MAAKhE,KAAL,CAAWwE,SAAX,KAAyBR,KAAK,CAACK,aAAN,CAAoB/E,KAApB,CAA0BC,MAAvD,EAA+D;AAC7D,cAAKgF,qBAAL,CAA2BP,KAAK,CAACK,aAAN,CAAoB/E,KAA/C;AACD;AACF,KA1YH;;AA4YUmF,IAAAA,uBA5YV,GA4YoC,UAACnF,KAAD,EAAmB;AACnD,UAAI,MAAKU,KAAL,CAAWM,aAAf,EAA8B;AAC5B,cAAKN,KAAL,CAAWM,aAAX,CAAyBhB,KAAzB;AACD;AACF,KAhZH;;AAkZUiF,IAAAA,qBAlZV,GAkZkC,UAACjF,KAAD,EAA4C,KAA3CA,KAA2C,cAA3CA,KAA2C,GAA3B,MAAKU,KAAL,CAAWV,KAAX,IAAoB,EAAO;AAC1E,UAAI,MAAKU,KAAL,CAAWsB,iBAAf,EAAkC;AAChC,cAAKtB,KAAL,CAAWsB,iBAAX,CAA6BhC,KAA7B;AACD,OAFD,MAEO;AACL,cAAK0C,KAAL;AACD;AACF,KAxZH;;AA0ZUe,IAAAA,UA1ZV,GA0ZuB,UAACiB,KAAD,EAA+C;AAClE,YAAKlE,QAAL,CAAc,EAAEf,OAAO,EAAE,KAAX,EAAd;;AAEA,UAAI,MAAKiB,KAAL,CAAW8C,MAAf,EAAuB;AACrB,cAAK9C,KAAL,CAAW8C,MAAX,CAAkBkB,KAAlB;AACD;AACF,KAhaH;;AAkaUP,IAAAA,YAlaV,GAkayB,YAAM;AACE,YAAKzD,KADP,CACnBuB,MADmB,eACnBA,MADmB,CACXF,QADW,eACXA,QADW;;AAG3B,UAAI,CAACE,MAAL,EAAa;AACX,eAAO,IAAP;AACD;;AAED;AACE,sCAAM,SAAS,EAAE7C,EAAE,CAACC,MAAM,CAAC4C,MAAP,CAAc,MAAKtC,KAAnB,CAAD,mBAA+BN,MAAM,CAAC+F,cAAP,CAAsB,MAAKzF,KAA3B,CAA/B,IAAmEoC,QAAnE,QAAnB,IAAoGE,MAApG,CADF;;AAGD,KA5aH;;AA8aUsC,IAAAA,YA9aV,GA8ayB,YAAM;AACE,YAAK7D,KADP,CACnBwB,MADmB,gBACnBA,MADmB,CACXH,QADW,gBACXA,QADW;;AAG3B,UAAI,CAACG,MAAL,EAAa;AACX,eAAO,IAAP;AACD;;AAED;AACE,sCAAM,SAAS,EAAE9C,EAAE,CAACC,MAAM,CAAC6C,MAAP,CAAc,MAAKvC,KAAnB,CAAD,mBAA+BN,MAAM,CAACgG,cAAP,CAAsB,MAAK1F,KAA3B,CAA/B,IAAmEoC,QAAnE,QAAnB,IAAoGG,MAApG,CADF;;AAGD,KAxbH,mDAoBSoD,iBApBT,GAoBE,6BAA2B,CACzB,IAAItG,mBAAJ,EAAyB,CACvB,KAAKwB,QAAL,CAAc,EAAExB,mBAAmB,EAAE,IAAvB,EAAd,EACD,CACF,CAxBH,QA0BSuG,oBA1BT,GA0BE,gCAA8B,CAC5B,IAAI,KAAK3F,YAAT,EAAuB,CACrBW,YAAY,CAAC,KAAKX,YAAN,CAAZ,CACD,CACD,KAAKO,sBAAL,GACD,CA/BH,QAiCSqF,gCAjCT,GAiCE,0CAAwCC,SAAxC,EAA+D,CAC7D,IAAIzG,mBAAmB,IAAI,CAACyG,SAAS,CAACzF,KAAtC,EAA6C,CAC3C,KAAKQ,QAAL,CAAc,EAAExB,mBAAmB,EAAE,IAAvB,EAAd,EACD,CACF,CArCH,CAuCE;AACF;AACA,KAzCA,QA0CSyD,KA1CT,GA0CE,iBAAe,CACbjE,SAAS,CAAC,KAAKqB,KAAN,EAAa,kDAAb,CAAT,CACA,KAAKA,KAAL,CAAY4C,KAAZ,GACD,CA7CH,CA+CE;AACF;AACA,KAjDA,QAkDSiD,IAlDT,GAkDE,gBAAc,CACZlH,SAAS,CAAC,KAAKqB,KAAN,EAAa,iDAAb,CAAT,CACA,KAAKA,KAAL,CAAY6F,IAAZ,GACD,CArDH,CAuDE;AACF;AACA,KAzDA,QA0DShD,KA1DT,GA0DE,iBAAe,mBACb,IAAI,KAAK9C,YAAT,EAAuB,CACrB,KAAKS,WAAL,CAAiB,YAAM,CACrB;AACA;AACA,cAAM,MAAI,CAACR,KAAL,IAAc,MAAI,CAACA,KAAL,CAAW8F,WAA/B,EACA,MAAI,CAACjD,KAAL,GACD,CALD,EAMA,OACD,CACD,KAAKlC,QAAL,CAAc,EAAEhB,QAAQ,EAAE,IAAZ,EAAd,EAAkC,YAAM,CACtC,MAAI,CAACI,YAAL,GAAoBgG,MAAM,CAACC,UAAP,CAAkB,MAAI,CAACxF,WAAvB,EAAoC,GAApC,CAApB,CACD,CAFD,EAGD,CAvEH,CAyEE;AACF;AACA;AACA;AACA,KA7EA,QA8ESN,iBA9ET,GA8EE,2BAAyB+F,KAAzB,EAAwCC,GAAxC,EAAqD,CACnD,IAAI,CAAC,KAAKlG,KAAV,EAAiB,CACf,MAAM,IAAImG,KAAJ,CAAU,oDAAV,CAAN,CACD,CAED,IAAIC,QAAQ,CAACC,aAAT,KAA2B,KAAKrG,KAApC,EAA2C,CACzC,KAAK4C,KAAL,GACD,CAED,KAAK5C,KAAL,CAAWE,iBAAX,CAA6B+F,KAA7B,EAAoCC,GAApC,EACD,CAxFH,QAgGSI,MAhGT,GAgGE,kBAA6B,mBAC3B,oBACE,oBAAC,YAAD,CAAc,QAAd,QACG,UAACxG,KAAD,EAAW,CACV,MAAI,CAACA,KAAL,GAAaA,KAAb,CACA,oBAAO,oBAAC,aAAD,EAAmB,MAAI,CAACe,KAAxB,EAAgC,MAAI,CAACD,UAArC,CAAP,CACD,CAJH,CADF,CAQD,CAzGH,CA2GE;AACF;AACA,KA7GA,QAyOUsD,iBAzOV,GAyOE,2BACEhB,UADF,EAIEtB,IAJF,EAKE,CACA,oBACE,oBAAC,WAAD,eACMsB,UADN,IAEE,IAAI,EAAEtB,IAFR,EAGE,QAAQ,EAAE,KAAKf,KAAL,CAAWgB,QAHvB,EAIE,cAAc,EAAE,KAAKhB,KAAL,CAAWiB,cAJ7B,EAKE,WAAW,EAAE,KAAKjB,KAAL,CAAWyB,WAL1B,EAME,QAAQ,EAAE,KAAKzB,KAAL,CAAWwC,QANvB,EAOE,aAAa,EAAE,KAAKiC,uBAPtB,EAQE,iBAAiB,EAAE,KAAKF,qBAR1B,IADF,CAYD,CA3PH,QA6PUmB,oBA7PV,GA6PE,8BAA6BC,KAA7B,EAA4C,KAAfA,KAAe,cAAfA,KAAe,GAAP,KAAO,EAC1C,QAAQ,KAAK3F,KAAL,CAAWkB,IAAnB,GACE,KAAK,OAAL,CACE,OAAOyE,KAAK,GAAGhH,MAAM,CAACiH,cAAP,CAAsB,KAAK3G,KAA3B,CAAH,GAAuCN,MAAM,CAACkH,aAAP,CAAqB,KAAK5G,KAA1B,CAAnD,CACF,KAAK,QAAL,CACE,OAAO0G,KAAK,GAAGhH,MAAM,CAACmH,eAAP,CAAuB,KAAK7G,KAA5B,CAAH,GAAwCN,MAAM,CAACoH,cAAP,CAAsB,KAAK9G,KAA3B,CAApD,CACF,KAAK,OAAL,CACA,QACE,OAAO0G,KAAK,GAAGhH,MAAM,CAACqH,cAAP,CAAsB,KAAK/G,KAA3B,CAAH,GAAuCN,MAAM,CAACsH,aAAP,CAAqB,KAAKhH,KAA1B,CAAnD,CAPJ,CASD,CAvQH,QAyQUuE,cAzQV,GAyQE,0BAAyB,CACvB,OAAO,KAAK0C,UAAL,CAAgB,KAAKlG,KAAL,CAAWU,QAA3B,EAAqC,KAAKgF,oBAAL,EAArC,CAAP,CACD,CA3QH,QA6QU5B,eA7QV,GA6QE,2BAA0B,CACxB,OAAO,KAAKoC,UAAL,CAAgB,KAAKlG,KAAL,CAAWW,SAA3B,EAAsC,KAAK+E,oBAAL,CAA0B,IAA1B,CAAtC,CAAP,CACD,CA/QH,QAiRUQ,UAjRV,GAiRE,oBAAmBC,IAAnB,EAAwCC,aAAxC,EAA+D,UAC7D,IAAI,CAACD,IAAL,EAAW,CACT,OAAO,IAAP,CACD,CAH4D,IAIrD9E,QAJqD,GAIxC,KAAKrB,KAJmC,CAIrDqB,QAJqD,CAK7D,IAAMgF,QAAQ,GAAGF,IAAI,YAAYG,QAAhB,GAA2BH,IAAI,EAA/B,GAAoCA,IAArD,CAEA,oBACE,8BACE,SAAS,EAAEzH,EAAE,CAACC,MAAM,CAACwH,IAAP,EAAD,EAAgBC,aAAhB,EAA+BzH,MAAM,CAAC4H,eAAP,CAAuB,KAAKtH,KAA5B,CAA/B,mBACVN,MAAM,CAAC6H,YAAP,EADU,IACcnF,QADd,QADf,IAKGgF,QALH,CADF,CASD,CAjSH,QAmSU1C,iBAnSV,GAmSE,6BAA4B,KAClBtC,QADkB,GACL,KAAKrB,KADA,CAClBqB,QADkB,KAElBtC,OAFkB,GAEN,KAAKF,KAFC,CAElBE,OAFkB,CAG1B,IAAIoC,WAAW,GAAG,IAAlB,CAEA,IAAI,KAAKtC,KAAL,CAAWP,mBAAX,IAAkC,KAAK0B,KAAL,CAAWmB,WAA7C,IAA4D,CAAC,KAAKgC,aAAlE,IAAmF,CAAC,KAAKnD,KAAL,CAAWV,KAAnG,EAA0G,UACxG6B,WAAW,gBACT,6BACE,SAAS,EAAEzC,EAAE,CAACC,MAAM,CAACwC,WAAP,CAAmB,KAAKlC,KAAxB,CAAD,mBACVN,MAAM,CAAC8H,mBAAP,CAA2B,KAAKxH,KAAhC,CADU,IAC+BoC,QAD/B,OAEV1C,MAAM,CAAC+H,gBAAP,CAAwB,KAAKzH,KAA7B,CAFU,IAE4BF,OAF5B,QADf,EAKE,KAAK,EAAE,EAAEiE,SAAS,EAAE,KAAKhD,KAAL,CAAWa,KAAX,IAAoB,SAAjC,EALT,IAOG,KAAKb,KAAL,CAAWmB,WAPd,CADF,CAWD,CAED,OAAOA,WAAP,CACD,CAvTH,QAyTUW,gBAzTV,GAyTE,4BAA2B,sBACzB,QAAQ,KAAK9B,KAAL,CAAWkB,IAAnB,GACE,KAAK,OAAL,CACE,OAAOxC,EAAE,kBACNC,MAAM,CAACgI,SAAP,CAAiB,KAAK1H,KAAtB,CADM,IACyB,IADzB,OAENN,MAAM,CAACiI,iBAAP,CAAyB,KAAK3H,KAA9B,CAFM,IAEiChB,MAAM,IAAIC,MAF3C,QAAT,CAIF,KAAK,QAAL,CACE,OAAOQ,EAAE,kBACNC,MAAM,CAACkI,UAAP,CAAkB,KAAK5H,KAAvB,CADM,IAC0B,IAD1B,OAENN,MAAM,CAACmI,kBAAP,CAA0B,KAAK7H,KAA/B,CAFM,IAEkChB,MAAM,IAAIC,MAF5C,QAAT,CAIF,KAAK,OAAL,CACA,QACE,OAAOQ,EAAE,kBACNC,MAAM,CAACoI,SAAP,CAAiB,KAAK9H,KAAtB,CADM,IACyB,IADzB,OAENN,MAAM,CAACqI,iBAAP,CAAyB,KAAK/H,KAA9B,CAFM,IAEiChB,MAAM,IAAIC,MAF3C,QAAT,CAbJ,CAkBD,CA5UH,mDA0FE,eAAoC,oBACD,KAAK8B,KADJ,CAC1Be,IAD0B,gBAC1BA,IAD0B,CACpBE,cADoB,gBACpBA,cADoB,KAE1BlC,OAF0B,GAEd,KAAKF,KAFS,CAE1BE,OAF0B,CAGlC,OAAOkI,OAAO,CAAClG,IAAI,KAAKhC,OAAO,IAAIkC,cAAhB,CAAL,CAAd,CACD,CA9FH,oBAA2BlD,KAAK,CAACmJ,SAAjC,EAAatI,K,CACGuI,mB,GAAsB,O,CADzBvI,K,CAGGwI,Y,GAEV,EACFlG,IAAI,EAAE,OADJ,E","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"]}
|