@skbkontur/react-ui 3.8.4 → 3.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +53 -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 +31 -14
- package/cjs/components/Checkbox/Checkbox.js +26 -7
- package/cjs/components/Checkbox/Checkbox.js.map +1 -1
- package/cjs/components/Checkbox/Checkbox.md +92 -51
- 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 +38 -0
- package/cjs/components/Hint/Hint.js +39 -1
- package/cjs/components/Hint/Hint.js.map +1 -1
- package/cjs/components/Hint/Hint.md +40 -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.d.ts +28 -10
- package/cjs/components/Link/Link.js +25 -10
- package/cjs/components/Link/Link.js.map +1 -1
- package/cjs/components/Link/Link.md +73 -7
- package/cjs/components/Link/Link.mixins.js +2 -1
- package/cjs/components/Link/Link.mixins.js.map +1 -1
- package/cjs/components/MenuItem/MenuItem.d.ts +42 -7
- package/cjs/components/MenuItem/MenuItem.js +30 -0
- package/cjs/components/MenuItem/MenuItem.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/SidePage/SidePage.d.ts +5 -1
- package/cjs/components/SidePage/SidePage.js +11 -16
- package/cjs/components/SidePage/SidePage.js.map +1 -1
- package/cjs/components/SidePage/SidePage.styles.d.ts +5 -2
- package/cjs/components/SidePage/SidePage.styles.js +52 -35
- package/cjs/components/SidePage/SidePage.styles.js.map +1 -1
- package/cjs/components/SidePage/SidePageFooter.js +1 -1
- package/cjs/components/SidePage/SidePageFooter.js.map +1 -1
- package/cjs/components/SidePage/SidePageHeader.js +1 -1
- package/cjs/components/SidePage/SidePageHeader.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 +9 -2
- package/cjs/components/Textarea/Textarea.js.map +1 -1
- package/cjs/components/Textarea/Textarea.styles.d.ts +1 -0
- package/cjs/components/Textarea/Textarea.styles.js +22 -19
- package/cjs/components/Textarea/Textarea.styles.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 +23 -17
- 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 -2
- package/cjs/components/Tooltip/Tooltip.js +3 -1
- package/cjs/components/Tooltip/Tooltip.js.map +1 -1
- package/cjs/internal/Calendar/Calendar.js +1 -1
- package/cjs/internal/Calendar/Calendar.js.map +1 -1
- package/cjs/internal/CustomComboBox/ComboBoxMenu.js +1 -1
- package/cjs/internal/CustomComboBox/ComboBoxMenu.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 +11 -9
- package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
- package/cjs/internal/InputLikeText/InputLikeText.js +2 -2
- package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
- package/cjs/internal/Popup/Popup.d.ts +13 -0
- package/cjs/internal/Popup/Popup.js +34 -6
- 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/cjs/internal/PopupMenu/PopupMenu.d.ts +0 -1
- package/cjs/internal/PopupMenu/PopupMenu.js +1 -2
- package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
- package/cjs/lib/forwardRefAndName.d.ts +5 -0
- package/cjs/lib/forwardRefAndName.js +23 -0
- package/cjs/lib/forwardRefAndName.js.map +1 -0
- 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 +4 -6
- package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
- package/components/Checkbox/Checkbox.d.ts +31 -14
- package/components/Checkbox/Checkbox.md +92 -51
- 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 +4 -0
- package/components/Hint/Hint/Hint.js.map +1 -1
- package/components/Hint/Hint.d.ts +38 -0
- package/components/Hint/Hint.md +40 -1
- package/components/Input/Input/Input.js.map +1 -1
- package/components/Input/Input.d.ts +6 -2
- package/components/Link/Link/Link.js +5 -12
- package/components/Link/Link/Link.js.map +1 -1
- package/components/Link/Link.d.ts +28 -10
- package/components/Link/Link.md +73 -7
- package/components/Link/Link.mixins/Link.mixins.js +1 -1
- package/components/Link/Link.mixins/Link.mixins.js.map +1 -1
- package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
- package/components/MenuItem/MenuItem.d.ts +42 -7
- 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/SidePage/SidePage/SidePage.js +16 -28
- package/components/SidePage/SidePage/SidePage.js.map +1 -1
- package/components/SidePage/SidePage.d.ts +5 -1
- package/components/SidePage/SidePage.styles/SidePage.styles.js +39 -30
- package/components/SidePage/SidePage.styles/SidePage.styles.js.map +1 -1
- package/components/SidePage/SidePage.styles.d.ts +5 -2
- package/components/SidePage/SidePageFooter/SidePageFooter.js +1 -0
- package/components/SidePage/SidePageFooter/SidePageFooter.js.map +1 -1
- package/components/SidePage/SidePageHeader/SidePageHeader.js +2 -1
- package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
- package/components/Tabs/Tab/Tab.js.map +1 -1
- package/components/Tabs/Tab.d.ts +2 -2
- package/components/Textarea/Textarea/Textarea.js +5 -3
- package/components/Textarea/Textarea/Textarea.js.map +1 -1
- package/components/Textarea/Textarea.d.ts +6 -2
- package/components/Textarea/Textarea.styles/Textarea.styles.js +12 -9
- package/components/Textarea/Textarea.styles/Textarea.styles.js.map +1 -1
- package/components/Textarea/Textarea.styles.d.ts +1 -0
- 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 +30 -19
- package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
- package/components/TokenInput/TokenInput.d.ts +6 -0
- package/components/TokenInput/TokenInputMenu/TokenInputMenu.js +2 -2
- 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 -2
- package/internal/Calendar/Calendar/Calendar.js +2 -1
- package/internal/Calendar/Calendar/Calendar.js.map +1 -1
- package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js +4 -2
- package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js.map +1 -1
- package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
- package/internal/CustomComboBox/ComboBoxView.d.ts +6 -0
- package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js +5 -12
- package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
- package/internal/CustomComboBox/CustomComboBox.d.ts +6 -0
- package/internal/InputLikeText/InputLikeText/InputLikeText.js +1 -1
- package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
- package/internal/Popup/Popup/Popup.js +15 -6
- 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/internal/PopupMenu/PopupMenu/PopupMenu.js +0 -1
- package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
- package/internal/PopupMenu/PopupMenu.d.ts +0 -1
- package/lib/forwardRefAndName/forwardRefAndName.js +11 -0
- package/lib/forwardRefAndName/forwardRefAndName.js.map +1 -0
- package/lib/forwardRefAndName/package.json +6 -0
- package/lib/forwardRefAndName.d.ts +5 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Checkbox.tsx"],"names":["React","PropTypes","keyListener","ThemeContext","OkIcon","SquareIcon","isEdge","isFirefox","isIE11","CommonWrapper","cx","styles","globalClasses","Checkbox","state","focusedByTab","indeterminate","props","initialIndeterminate","theme","input","componentDidMount","setIndeterminate","setState","resetIndeterminate","renderMain","error","warning","onMouseEnter","onMouseLeave","onMouseOver","onValueChange","type","rest","isIndeterminate","rootClass","root","rootFallback","rootChecked","checked","disabled","Boolean","inputProps","className","onChange","handleChange","onFocus","handleFocus","onBlur","handleBlur","onClick","handleClick","ref","inputRef","caption","children","captionClass","captionIE11","iconClass","iconUnchecked","iconFixBaseline","box","boxChecked","boxFocus","boxError","boxWarning","boxDisabled","e","requestAnimationFrame","isTabPressed","event","currentTarget","undefined","UNSAFE_componentWillReceiveProps","nextProps","render","focus","blur","Component","__KONTUR_REACT_UI__","propTypes","bool","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Nullable, Override } from '../../typings/utility-types';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { OkIcon, SquareIcon } from '../../internal/icons/16px';\nimport { isEdge, isFirefox, isIE11 } from '../../lib/client';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles, globalClasses } from './Checkbox.styles';\n\nexport interface CheckboxProps\n extends CommonProps,\n Override<\n React.InputHTMLAttributes<HTMLInputElement>,\n {\n /** Контент `label` */\n children?: React.ReactNode;\n /** Состояние ошибки */\n error?: boolean;\n /** Состояние Предупреждения */\n warning?: boolean;\n /** Вызывается на label */\n onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;\n /** Вызывается на label */\n onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;\n /** Вызывается на label */\n onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;\n /** Вызывается при изменении `value` */\n onValueChange?: (value: boolean) => void;\n /** onBlur */\n onBlur?: (event: React.FocusEvent<HTMLInputElement>) => void;\n /** Состояние частичного выделения */\n initialIndeterminate?: boolean;\n }\n > {}\n\nexport interface CheckboxState {\n focusedByTab: boolean;\n indeterminate: boolean;\n}\n\n/**\n * Все свойства, кроме перечисленных, `className` и `style` передаются в `input`.\n */\nexport class Checkbox extends React.Component<CheckboxProps, CheckboxState> {\n public static __KONTUR_REACT_UI__ = 'Checkbox';\n\n public static propTypes = {\n checked: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n warning: PropTypes.bool,\n onValueChange: PropTypes.func,\n onBlur: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseOver: PropTypes.func,\n };\n\n public state = {\n focusedByTab: false,\n indeterminate: this.props.initialIndeterminate || false,\n };\n\n private theme!: Theme;\n private input: Nullable<HTMLInputElement>;\n\n public componentDidMount = () => {\n if (this.state.indeterminate && this.input) {\n this.input.indeterminate = true;\n }\n };\n\n public UNSAFE_componentWillReceiveProps(nextProps: CheckboxProps) {\n if (nextProps.checked !== this.props.checked) {\n this.resetIndeterminate();\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return <CommonWrapper {...this.props}>{this.renderMain}</CommonWrapper>;\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public focus() {\n keyListener.isTabPressed = true;\n this.input?.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n this.input?.blur();\n }\n\n /**\n * Установить промежуточное значение\n * @public\n */\n public setIndeterminate = () => {\n this.setState({\n indeterminate: true,\n });\n if (this.input) {\n this.input.indeterminate = true;\n }\n };\n\n /**\n * Сбросить промежуточное значение\n * @public\n */\n public resetIndeterminate = () => {\n this.setState({\n indeterminate: false,\n });\n if (this.input) {\n this.input.indeterminate = false;\n }\n };\n\n private renderMain = (props: CommonWrapperRestProps<CheckboxProps>) => {\n const {\n error,\n warning,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onValueChange,\n type,\n initialIndeterminate,\n ...rest\n } = props;\n const isIndeterminate = this.state.indeterminate;\n\n const rootClass = cx({\n [styles.root(this.theme)]: true,\n [styles.rootFallback()]: isIE11 || isEdge,\n [styles.rootChecked(this.theme)]: props.checked || isIndeterminate,\n [styles.disabled(this.theme)]: Boolean(props.disabled),\n });\n\n const inputProps = {\n ...rest,\n type: 'checkbox',\n className: styles.input(),\n onChange: this.handleChange,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onClick: this.handleClick,\n ref: this.inputRef,\n };\n\n let caption = null;\n if (this.props.children) {\n const captionClass = cx({\n [styles.caption(this.theme)]: true,\n [styles.captionIE11()]: isIE11 || isEdge,\n [styles.disabled(this.theme)]: Boolean(props.disabled),\n });\n caption = <span className={captionClass}>{this.props.children}</span>;\n }\n\n const iconClass = cx({\n [styles.iconUnchecked()]: !props.checked && !isIndeterminate,\n [styles.iconFixBaseline()]: isFirefox || isIE11 || isEdge,\n });\n\n const box = (\n <span\n className={cx(styles.box(this.theme), globalClasses.box, {\n [styles.boxChecked(this.theme)]: props.checked || isIndeterminate,\n [styles.boxFocus(this.theme)]: this.state.focusedByTab,\n [styles.boxError(this.theme)]: props.error,\n [styles.boxWarning(this.theme)]: props.warning,\n [styles.boxDisabled(this.theme)]: props.disabled,\n })}\n >\n {(isIndeterminate && <SquareIcon className={iconClass} />) || <OkIcon className={iconClass} />}\n </span>\n );\n\n return (\n <label className={rootClass} onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave} onMouseOver={onMouseOver}>\n <input {...inputProps} />\n {box}\n {caption}\n </label>\n );\n };\n\n private handleFocus = (e: React.FocusEvent<any>) => {\n if (!this.props.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n }\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n this.props.onBlur?.(e);\n this.setState({ focusedByTab: false });\n };\n\n private inputRef = (ref: HTMLInputElement | null) => {\n this.input = ref;\n };\n\n private handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const checked = event.currentTarget.checked;\n this.props.onValueChange?.(checked);\n\n this.resetIndeterminate();\n\n this.props.onChange?.(event);\n };\n\n private handleClick = (e: React.MouseEvent<HTMLInputElement>) => {\n this.props.onClick?.(e);\n // support IE11's and old Edge's special behavior\n // https://github.com/jquery/jquery/issues/1698\n if (this.state.indeterminate && (isIE11 || isEdge)) {\n this.resetIndeterminate();\n // simulate correct behavior only if onValueChange is used\n // because we cant simulate real native onChange event\n if (this.props.onValueChange && this.input) {\n const checked = !this.input.checked;\n\n if (this.props.checked === undefined) {\n // in case of uncontrolled mode\n this.input.checked = checked;\n }\n\n this.props.onValueChange(checked);\n }\n }\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["Checkbox.tsx"],"names":["React","PropTypes","keyListener","ThemeContext","OkIcon","SquareIcon","isEdge","isFirefox","isIE11","CommonWrapper","cx","styles","globalClasses","Checkbox","state","focusedByTab","indeterminate","props","initialIndeterminate","theme","input","componentDidMount","setIndeterminate","setState","resetIndeterminate","renderMain","error","warning","onMouseEnter","onMouseLeave","onMouseOver","onValueChange","type","rest","isIndeterminate","rootClass","root","rootFallback","rootChecked","checked","disabled","Boolean","inputProps","className","onChange","handleChange","onFocus","handleFocus","onBlur","handleBlur","onClick","handleClick","ref","inputRef","caption","children","captionClass","captionIE11","iconClass","iconUnchecked","iconFixBaseline","box","boxChecked","boxDisabled","boxFocus","boxError","boxWarning","e","requestAnimationFrame","isTabPressed","event","currentTarget","undefined","UNSAFE_componentWillReceiveProps","nextProps","render","focus","blur","Component","__KONTUR_REACT_UI__","propTypes","bool","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Nullable, Override } from '../../typings/utility-types';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { OkIcon, SquareIcon } from '../../internal/icons/16px';\nimport { isEdge, isFirefox, isIE11 } from '../../lib/client';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles, globalClasses } from './Checkbox.styles';\n\nexport interface CheckboxProps\n extends CommonProps,\n Override<\n React.InputHTMLAttributes<HTMLInputElement>,\n {\n /**\n * Контент `label`\n */\n children?: React.ReactNode;\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n /**\n * HTML-событие `mouseenter`.\n */\n onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-событие `mouseover`.\n */\n onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * Функция, вызываемая при изменении `value`.\n */\n onValueChange?: (value: boolean) => void;\n /**\n * HTML-событие `onblur`.\n */\n onBlur?: (event: React.FocusEvent<HTMLInputElement>) => void;\n /**\n * [Неопределённое состояние](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox#attr-indeterminate) чекбокса из HTML.\n */\n initialIndeterminate?: boolean;\n }\n > {}\n\nexport interface CheckboxState {\n focusedByTab: boolean;\n indeterminate: boolean;\n}\n\nexport class Checkbox extends React.Component<CheckboxProps, CheckboxState> {\n public static __KONTUR_REACT_UI__ = 'Checkbox';\n\n public static propTypes = {\n checked: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n warning: PropTypes.bool,\n onValueChange: PropTypes.func,\n onBlur: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseOver: PropTypes.func,\n };\n\n public state = {\n focusedByTab: false,\n indeterminate: this.props.initialIndeterminate || false,\n };\n\n private theme!: Theme;\n private input: Nullable<HTMLInputElement>;\n\n public componentDidMount = () => {\n if (this.state.indeterminate && this.input) {\n this.input.indeterminate = true;\n }\n };\n\n public UNSAFE_componentWillReceiveProps(nextProps: CheckboxProps) {\n if (nextProps.checked !== this.props.checked) {\n this.resetIndeterminate();\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return <CommonWrapper {...this.props}>{this.renderMain}</CommonWrapper>;\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * Программная установка фокуса чекбоксу.\n * @public\n */\n public focus() {\n keyListener.isTabPressed = true;\n this.input?.focus();\n }\n\n /**\n * Программное снятие фокуса с чекбокса.\n * @public\n */\n public blur() {\n this.input?.blur();\n }\n\n /**\n * Устанавливает чекбокс в HTML-состояние `indeterminate`.\n * @public\n */\n public setIndeterminate = () => {\n this.setState({\n indeterminate: true,\n });\n if (this.input) {\n this.input.indeterminate = true;\n }\n };\n\n /**\n * Снимает с чекбокса HTML-состояние `indeterminate`.\n * @public\n */\n public resetIndeterminate = () => {\n this.setState({\n indeterminate: false,\n });\n if (this.input) {\n this.input.indeterminate = false;\n }\n };\n\n private renderMain = (props: CommonWrapperRestProps<CheckboxProps>) => {\n const {\n error,\n warning,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onValueChange,\n type,\n initialIndeterminate,\n ...rest\n } = props;\n const isIndeterminate = this.state.indeterminate;\n\n const rootClass = cx({\n [styles.root(this.theme)]: true,\n [styles.rootFallback()]: isIE11 || isEdge,\n [styles.rootChecked(this.theme)]: props.checked || isIndeterminate,\n [styles.disabled(this.theme)]: Boolean(props.disabled),\n });\n\n const inputProps = {\n ...rest,\n type: 'checkbox',\n className: styles.input(),\n onChange: this.handleChange,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onClick: this.handleClick,\n ref: this.inputRef,\n };\n\n let caption = null;\n if (this.props.children) {\n const captionClass = cx({\n [styles.caption(this.theme)]: true,\n [styles.captionIE11()]: isIE11 || isEdge,\n [styles.disabled(this.theme)]: Boolean(props.disabled),\n });\n caption = <span className={captionClass}>{this.props.children}</span>;\n }\n\n const iconClass = cx({\n [styles.iconUnchecked()]: !props.checked && !isIndeterminate,\n [styles.iconFixBaseline()]: isFirefox || isIE11 || isEdge,\n });\n\n const box = (\n <span\n className={cx(styles.box(this.theme), globalClasses.box, {\n [styles.boxChecked(this.theme)]: props.checked || isIndeterminate,\n [styles.boxDisabled(this.theme)]: props.disabled,\n [styles.boxFocus(this.theme)]: this.state.focusedByTab,\n [styles.boxError(this.theme)]: props.error,\n [styles.boxWarning(this.theme)]: props.warning,\n })}\n >\n {(isIndeterminate && <SquareIcon className={iconClass} />) || <OkIcon className={iconClass} />}\n </span>\n );\n\n return (\n <label className={rootClass} onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave} onMouseOver={onMouseOver}>\n <input {...inputProps} />\n {box}\n {caption}\n </label>\n );\n };\n\n private handleFocus = (e: React.FocusEvent<any>) => {\n if (!this.props.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n }\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n this.props.onBlur?.(e);\n this.setState({ focusedByTab: false });\n };\n\n private inputRef = (ref: HTMLInputElement | null) => {\n this.input = ref;\n };\n\n private handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const checked = event.currentTarget.checked;\n this.props.onValueChange?.(checked);\n\n this.resetIndeterminate();\n\n this.props.onChange?.(event);\n };\n\n private handleClick = (e: React.MouseEvent<HTMLInputElement>) => {\n this.props.onClick?.(e);\n // support IE11's and old Edge's special behavior\n // https://github.com/jquery/jquery/issues/1698\n if (this.state.indeterminate && (isIE11 || isEdge)) {\n this.resetIndeterminate();\n // simulate correct behavior only if onValueChange is used\n // because we cant simulate real native onChange event\n if (this.props.onValueChange && this.input) {\n const checked = !this.input.checked;\n\n if (this.props.checked === undefined) {\n // in case of uncontrolled mode\n this.input.checked = checked;\n }\n\n this.props.onValueChange(checked);\n }\n }\n };\n}\n"]}
|
|
@@ -3,23 +3,41 @@ import PropTypes from 'prop-types';
|
|
|
3
3
|
import { Override } from '../../typings/utility-types';
|
|
4
4
|
import { CommonProps } from '../../internal/CommonWrapper';
|
|
5
5
|
export interface CheckboxProps extends CommonProps, Override<React.InputHTMLAttributes<HTMLInputElement>, {
|
|
6
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* Контент `label`
|
|
8
|
+
*/
|
|
7
9
|
children?: React.ReactNode;
|
|
8
|
-
/**
|
|
10
|
+
/**
|
|
11
|
+
* Cостояние валидации при ошибке.
|
|
12
|
+
*/
|
|
9
13
|
error?: boolean;
|
|
10
|
-
/**
|
|
14
|
+
/**
|
|
15
|
+
* Cостояние валидации при предупреждении.
|
|
16
|
+
*/
|
|
11
17
|
warning?: boolean;
|
|
12
|
-
/**
|
|
18
|
+
/**
|
|
19
|
+
* HTML-событие `mouseenter`.
|
|
20
|
+
*/
|
|
13
21
|
onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;
|
|
14
|
-
/**
|
|
22
|
+
/**
|
|
23
|
+
* HTML-событие `mouseleave`.
|
|
24
|
+
*/
|
|
15
25
|
onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;
|
|
16
|
-
/**
|
|
26
|
+
/**
|
|
27
|
+
* HTML-событие `mouseover`.
|
|
28
|
+
*/
|
|
17
29
|
onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;
|
|
18
|
-
/**
|
|
30
|
+
/**
|
|
31
|
+
* Функция, вызываемая при изменении `value`.
|
|
32
|
+
*/
|
|
19
33
|
onValueChange?: (value: boolean) => void;
|
|
20
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* HTML-событие `onblur`.
|
|
36
|
+
*/
|
|
21
37
|
onBlur?: (event: React.FocusEvent<HTMLInputElement>) => void;
|
|
22
|
-
/**
|
|
38
|
+
/**
|
|
39
|
+
* [Неопределённое состояние](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox#attr-indeterminate) чекбокса из HTML.
|
|
40
|
+
*/
|
|
23
41
|
initialIndeterminate?: boolean;
|
|
24
42
|
}> {
|
|
25
43
|
}
|
|
@@ -27,9 +45,6 @@ export interface CheckboxState {
|
|
|
27
45
|
focusedByTab: boolean;
|
|
28
46
|
indeterminate: boolean;
|
|
29
47
|
}
|
|
30
|
-
/**
|
|
31
|
-
* Все свойства, кроме перечисленных, `className` и `style` передаются в `input`.
|
|
32
|
-
*/
|
|
33
48
|
export declare class Checkbox extends React.Component<CheckboxProps, CheckboxState> {
|
|
34
49
|
static __KONTUR_REACT_UI__: string;
|
|
35
50
|
static propTypes: {
|
|
@@ -53,20 +68,22 @@ export declare class Checkbox extends React.Component<CheckboxProps, CheckboxSta
|
|
|
53
68
|
UNSAFE_componentWillReceiveProps(nextProps: CheckboxProps): void;
|
|
54
69
|
render(): JSX.Element;
|
|
55
70
|
/**
|
|
71
|
+
* Программная установка фокуса чекбоксу.
|
|
56
72
|
* @public
|
|
57
73
|
*/
|
|
58
74
|
focus(): void;
|
|
59
75
|
/**
|
|
76
|
+
* Программное снятие фокуса с чекбокса.
|
|
60
77
|
* @public
|
|
61
78
|
*/
|
|
62
79
|
blur(): void;
|
|
63
80
|
/**
|
|
64
|
-
*
|
|
81
|
+
* Устанавливает чекбокс в HTML-состояние `indeterminate`.
|
|
65
82
|
* @public
|
|
66
83
|
*/
|
|
67
84
|
setIndeterminate: () => void;
|
|
68
85
|
/**
|
|
69
|
-
*
|
|
86
|
+
* Снимает с чекбокса HTML-состояние `indeterminate`.
|
|
70
87
|
* @public
|
|
71
88
|
*/
|
|
72
89
|
resetIndeterminate: () => void;
|
|
@@ -1,63 +1,104 @@
|
|
|
1
|
+
Базовый пример чекбокса.
|
|
2
|
+
|
|
1
3
|
```jsx harmony
|
|
2
4
|
const [checked, setChecked] = React.useState(false);
|
|
3
5
|
|
|
4
6
|
<Checkbox checked={checked} onValueChange={setChecked}>
|
|
5
|
-
|
|
7
|
+
Обычный чекбокс
|
|
6
8
|
</Checkbox>;
|
|
7
9
|
```
|
|
8
10
|
|
|
9
|
-
|
|
11
|
+
У чекбокса есть несколько состояний.
|
|
12
|
+
|
|
13
|
+
```jsx harmony
|
|
14
|
+
import { Gapped } from '@skbkontur/react-ui';
|
|
15
|
+
|
|
16
|
+
const CheckboxWithState = ({children, ...props}) => {
|
|
17
|
+
const [checked, setChecked] = React.useState(false);
|
|
18
|
+
|
|
19
|
+
return (
|
|
20
|
+
<Checkbox checked={checked} onValueChange={setChecked} {...props}>
|
|
21
|
+
{children}
|
|
22
|
+
</Checkbox>
|
|
23
|
+
)
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
<Gapped vertical>
|
|
27
|
+
<CheckboxWithState>
|
|
28
|
+
Обычный чекбокс
|
|
29
|
+
</CheckboxWithState>
|
|
30
|
+
<CheckboxWithState error>
|
|
31
|
+
Чекбокс в состоянии ошибки
|
|
32
|
+
</CheckboxWithState>
|
|
33
|
+
<CheckboxWithState warning>
|
|
34
|
+
Чекбокс в состоянии предупреждения
|
|
35
|
+
</CheckboxWithState>
|
|
36
|
+
</Gapped>
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Пример использования методов чекбокса `focus()` и `blur()`.
|
|
10
40
|
|
|
11
41
|
```jsx harmony
|
|
12
42
|
import { Button, Checkbox, Gapped } from '@skbkontur/react-ui';
|
|
13
43
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
|
|
44
|
+
const [checked, setChecked] = React.useState(false);
|
|
45
|
+
|
|
46
|
+
let checkboxInstance = React.useRef(null);
|
|
47
|
+
|
|
48
|
+
<Gapped vertical>
|
|
49
|
+
<Checkbox
|
|
50
|
+
ref={el => checkboxInstance = el}
|
|
51
|
+
checked={checked}
|
|
52
|
+
onValueChange={setChecked}
|
|
53
|
+
>
|
|
54
|
+
Пример чекбокса с программным фокусом
|
|
55
|
+
</Checkbox>
|
|
56
|
+
<Gapped gap={12}>
|
|
57
|
+
<Button
|
|
58
|
+
onClick={() => {
|
|
59
|
+
checkboxInstance.focus();
|
|
60
|
+
}}
|
|
61
|
+
>
|
|
62
|
+
Дать фокус
|
|
63
|
+
</Button>
|
|
64
|
+
<Button
|
|
65
|
+
onClick={() => {
|
|
66
|
+
checkboxInstance.blur();
|
|
67
|
+
}}
|
|
68
|
+
>
|
|
69
|
+
Забрать фокус
|
|
70
|
+
</Button>
|
|
71
|
+
</Gapped>
|
|
72
|
+
</Gapped>
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Чекбокс может находится в неопределённом состоянии. <br/> Это состояние полностью копирует поведение состояния [`indeterminate`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox#attr-indeterminate) из HTML.
|
|
76
|
+
|
|
77
|
+
Это состояние влияет только на внешний вид и не влияет на состояние `checked`.
|
|
78
|
+
|
|
79
|
+
```jsx harmony
|
|
80
|
+
import { Button, Checkbox, Gapped } from '@skbkontur/react-ui';
|
|
81
|
+
|
|
82
|
+
const [checked, setChecked] = React.useState(false);
|
|
83
|
+
|
|
84
|
+
let checkboxInstance = React.useRef(null);
|
|
85
|
+
|
|
86
|
+
<Gapped vertical>
|
|
87
|
+
<Checkbox
|
|
88
|
+
initialIndeterminate
|
|
89
|
+
checked={checked}
|
|
90
|
+
onValueChange={setChecked}
|
|
91
|
+
ref={el => checkboxInstance = el}
|
|
92
|
+
>
|
|
93
|
+
Неопределённый чекбокс
|
|
94
|
+
</Checkbox>
|
|
95
|
+
<Gapped>
|
|
96
|
+
<Button onClick={() => checkboxInstance.setIndeterminate()}>
|
|
97
|
+
Перевести в неопределённое состояние
|
|
98
|
+
</Button>
|
|
99
|
+
<Button onClick={() => checkboxInstance.resetIndeterminate()}>
|
|
100
|
+
Сбросить неопределённое состояние
|
|
101
|
+
</Button>
|
|
102
|
+
</Gapped>
|
|
103
|
+
</Gapped>
|
|
63
104
|
```
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ComboBox.tsx"],"names":["React","CustomComboBox","ComboBox","comboboxElement","focus","blur","search","query","cancelSearch","open","close","selectInputText","reset","render","props","element","Component","__KONTUR_REACT_UI__","defaultProps","itemToValue","item","value","valueToString","label","renderValue","renderItem","menuAlign","searchOnFocus","drawArrow"],"mappings":"gIAAA,OAAOA,KAAP,MAAkB,OAAlB;;AAEA,SAASC,cAAT,QAA+B,+BAA/B
|
|
1
|
+
{"version":3,"sources":["ComboBox.tsx"],"names":["React","CustomComboBox","ComboBox","comboboxElement","focus","blur","search","query","cancelSearch","open","close","selectInputText","reset","render","props","element","Component","__KONTUR_REACT_UI__","defaultProps","itemToValue","item","value","valueToString","label","renderValue","renderItem","menuAlign","searchOnFocus","drawArrow"],"mappings":"gIAAA,OAAOA,KAAP,MAAkB,OAAlB;;AAEA,SAASC,cAAT,QAA+B,+BAA/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqKA,WAAaC,QAAb;;;;;;;;;;;;;AAaUC,IAAAA,eAbV,GAayD,IAbzD;;AAeE;AACF;AACA,KAjBA;AAkBSC,EAAAA,KAlBT,GAkBE,iBAAe;AACb,QAAI,KAAKD,eAAT,EAA0B;AACxB,WAAKA,eAAL,CAAqBC,KAArB;AACD;AACF;;AAED;AACF;AACA,KA1BA;AA2BSC,EAAAA,IA3BT,GA2BE,gBAAc;AACZ,QAAI,KAAKF,eAAT,EAA0B;AACxB,WAAKA,eAAL,CAAqBE,IAArB;AACD;AACF;;AAED;AACF;AACA;AACA;AACA;AACA;AACA,KAvCA;AAwCSC,EAAAA,MAxCT,GAwCE,gBAAcC,KAAd,EAA8B;AAC5B,QAAI,KAAKJ,eAAT,EAA0B;AACxB,WAAKA,eAAL,CAAqBG,MAArB,CAA4BC,KAA5B;AACD;AACF;;AAED;AACF;AACA,KAhDA;AAiDSC,EAAAA,YAjDT,GAiDE,wBAAsB;AACpB,QAAI,KAAKL,eAAT,EAA0B;AACxB,WAAKA,eAAL,CAAqBK,YAArB;AACD;AACF;;AAED;AACF;AACA,KAzDA;AA0DSC,EAAAA,IA1DT,GA0DE,gBAAc;AACZ,QAAI,KAAKN,eAAT,EAA0B;AACxB,WAAKA,eAAL,CAAqBM,IAArB;AACD;AACF;;AAED;AACF;AACA,KAlEA;AAmESC,EAAAA,KAnET,GAmEE,iBAAe;AACb,QAAI,KAAKP,eAAT,EAA0B;AACxB,WAAKA,eAAL,CAAqBO,KAArB;AACD;AACF;;AAED;AACF;AACA;AACA,KA5EA;AA6ESC,EAAAA,eA7ET,GA6EE,2BAAyB;AACvB,QAAI,KAAKR,eAAT,EAA0B;AACxB,WAAKA,eAAL,CAAqBQ,eAArB;AACD;AACF;;AAED;AACF;AACA;AACA,KAtFA;AAuFSC,EAAAA,KAvFT,GAuFE,iBAAe;AACb,QAAI,KAAKT,eAAT,EAA0B;AACxB,WAAKA,eAAL,CAAqBS,KAArB;AACD;AACF,GA3FH;;AA6FSC,EAAAA,MA7FT,GA6FE,kBAAgB;AACd,wBAAO,oBAAC,cAAD,eAAoB,KAAKC,KAAzB,IAAgC,GAAG,EAAE,aAACC,OAAD,UAAc,MAAI,CAACZ,eAAL,GAAuBY,OAArC,EAArC,IAAP;AACD,GA/FH,mBAAgDf,KAAK,CAACgB,SAAtD,EAAad,Q,CACGe,mB,GAAsB,U,CADzBf,Q,CAGGgB,Y,GAAe,EAC3BC,WAAW,EAAE,qBAACC,IAAD,UAAwBA,IAAI,CAACC,KAA7B,EADc,EAE3BC,aAAa,EAAE,uBAACF,IAAD,UAAwBA,IAAI,CAACG,KAA7B,EAFY,EAG3BC,WAAW,EAAE,qBAACJ,IAAD,UAAwBA,IAAI,CAACG,KAA7B,EAHc,EAI3BE,UAAU,EAAE,oBAACL,IAAD,UAAwBA,IAAI,CAACG,KAA7B,EAJe,EAK3BG,SAAS,EAAE,MALgB,EAM3BC,aAAa,EAAE,IANY,EAO3BC,SAAS,EAAE,IAPgB,E","sourcesContent":["import React from 'react';\n\nimport { CustomComboBox } from '../../internal/CustomComboBox';\nimport { Nullable } from '../../typings/utility-types';\nimport { MenuItemState } from '../MenuItem';\nimport { InputIconType } from '../Input';\nimport { CommonProps } from '../../internal/CommonWrapper';\n\nexport interface ComboBoxProps<T> extends CommonProps {\n align?: 'left' | 'center' | 'right';\n /**\n * Вызывает функцию поиска `getItems` при фокусе и очистке поля ввода\n * @default true\n */\n searchOnFocus?: boolean;\n /**\n * Рисует справа иконку в виде стрелки\n * @default true\n */\n drawArrow?: boolean;\n\n autoFocus?: boolean;\n\n borderless?: boolean;\n\n /**\n * Не использовать Portal для рендеринга меню.\n * См. https://github.com/skbkontur/retail-ui/issues/15\n * @default false\n */\n disablePortal?: boolean;\n\n disabled?: boolean;\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n\n leftIcon?: InputIconType;\n\n rightIcon?: InputIconType;\n\n /**\n * Функция поиска элементов, должна возвращать Promise с массивом элементов.\n * По умолчанию ожидаются объекты с типом `{ value: string, label: string }`.\n *\n * Элементы могут быть любого типа. В этом случае необходимо определить\n * свойства `itemToValue`, `renderValue`, `renderItem`, `valueToString`\n */\n getItems: (query: string) => Promise<T[]>;\n\n /**\n * Необходим для сравнения полученных результатов с `value`\n * @default item => item.label\n */\n itemToValue: (item: T) => string | number;\n\n maxLength?: number;\n\n menuAlign?: 'left' | 'right';\n\n onBlur?: () => void;\n\n /** Вызывается при изменении `value` */\n onValueChange?: (value: T) => void;\n\n onFocus?: () => void;\n\n /**\n * Вызывается при изменении текста в поле ввода,\n * если результатом функции будет строка,\n * то она станет следующим состояним полем ввода\n */\n onInputValueChange?: (value: string) => Nullable<string> | void;\n\n /**\n * Функция для обработки ситуации, когда была введена\n * строка в инпут и был потерян фокус с элемента.\n *\n * Если при потере фокуса в выпадающем списке будет только один\n * элемент и результат `renderValue` с этим элементом будет\n * совпадать со значение в текстовом поле, то\n * сработает onValueChange со значением данного элемента\n *\n * Сама функция также может вернуть значение,\n * неравное `undefined`,\n * с которым будет вызван onValueChange.\n */\n onUnexpectedInput?: (value: string) => void | null | T;\n\n placeholder?: string;\n\n /**\n * Функция отрисовки элементов результата поиска.\n * Не применяется если элемент является функцией или React-элементом\n * @default item => item.label\n */\n renderItem: (item: T, state?: MenuItemState) => React.ReactNode;\n\n /**\n * Функция для отрисовки сообщения о пустом результате поиска\n * Если есть renderAddButton - не работает\n */\n renderNotFound?: () => React.ReactNode;\n\n /**\n * Функция отображающая сообщение об общем количестве элементов.\n * `found` учитывает только компонент `MenuItem`. Им \"оборачиваются\" элементы, возвращаемые `getItems()`.\n */\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n\n /**\n * Функция отрисовки выбранного значения\n * @default item => item.label\n */\n renderValue: (item: T) => React.ReactNode;\n\n /**\n * Функция отрисовки кнопки добавления в выпадающем списке\n */\n renderAddButton?: (query?: string) => React.ReactNode;\n\n /**\n * Общее количество элементов.\n * Необходим для работы `renderTotalCount`\n */\n totalCount?: number;\n\n /**\n * Выбранное значение\n * Ожидается, что `value` того же типа что и элементы в массиве,\n * возвращаемом в `getItems`\n */\n value?: Nullable<T>;\n\n /**\n * Необходим для преобразования `value` в строку при фокусировке\n * @default item => item.label\n */\n valueToString: (item: T) => string;\n\n size?: 'small' | 'medium' | 'large';\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n\n width?: string | number;\n\n maxMenuHeight?: number | string;\n\n onMouseEnter?: (e: React.MouseEvent) => void;\n\n onMouseOver?: (e: React.MouseEvent) => void;\n\n onMouseLeave?: (e: React.MouseEvent) => void;\n\n onInputKeyDown?: (e: React.KeyboardEvent<HTMLElement>) => void;\n\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode'];\n}\n\nexport interface ComboBoxItem {\n value: string;\n label: string;\n}\n\nexport class ComboBox<T = ComboBoxItem> extends React.Component<ComboBoxProps<T>> {\n public static __KONTUR_REACT_UI__ = 'ComboBox';\n\n public static defaultProps = {\n itemToValue: (item: ComboBoxItem) => item.value,\n valueToString: (item: ComboBoxItem) => item.label,\n renderValue: (item: ComboBoxItem) => item.label,\n renderItem: (item: ComboBoxItem) => item.label,\n menuAlign: 'left',\n searchOnFocus: true,\n drawArrow: true,\n };\n\n private comboboxElement: Nullable<CustomComboBox<T>> = null;\n\n /**\n * @public\n */\n public focus() {\n if (this.comboboxElement) {\n this.comboboxElement.focus();\n }\n }\n\n /**\n * @public\n */\n public blur() {\n if (this.comboboxElement) {\n this.comboboxElement.blur();\n }\n }\n\n /**\n * Открывает выпадающий список и запускает поиск элементов\n *\n * @public\n * @param {string} [query] Текст поиска. По умолчанию берется\n * текст из инпута или результат `valueToString(value)`\n */\n public search(query?: string) {\n if (this.comboboxElement) {\n this.comboboxElement.search(query);\n }\n }\n\n /**\n * @public\n */\n public cancelSearch() {\n if (this.comboboxElement) {\n this.comboboxElement.cancelSearch();\n }\n }\n\n /**\n * @public Открывает выпадающий список\n */\n public open() {\n if (this.comboboxElement) {\n this.comboboxElement.open();\n }\n }\n\n /**\n * @public Закрывает выпадающий список\n */\n public close() {\n if (this.comboboxElement) {\n this.comboboxElement.close();\n }\n }\n\n /**\n * Выделяет текст внутри input\n * @public\n */\n public selectInputText() {\n if (this.comboboxElement) {\n this.comboboxElement.selectInputText();\n }\n }\n\n /**\n * Сбрасывает введенное пользователем значение\n * @public\n */\n public reset() {\n if (this.comboboxElement) {\n this.comboboxElement.reset();\n }\n }\n\n public render() {\n return <CustomComboBox {...this.props} ref={(element) => (this.comboboxElement = element)} />;\n }\n}\n"]}
|
|
@@ -24,6 +24,9 @@ export interface ComboBoxProps<T> extends CommonProps {
|
|
|
24
24
|
*/
|
|
25
25
|
disablePortal?: boolean;
|
|
26
26
|
disabled?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Cостояние валидации при ошибке.
|
|
29
|
+
*/
|
|
27
30
|
error?: boolean;
|
|
28
31
|
leftIcon?: InputIconType;
|
|
29
32
|
rightIcon?: InputIconType;
|
|
@@ -109,6 +112,9 @@ export interface ComboBoxProps<T> extends CommonProps {
|
|
|
109
112
|
*/
|
|
110
113
|
valueToString: (item: T) => string;
|
|
111
114
|
size?: 'small' | 'medium' | 'large';
|
|
115
|
+
/**
|
|
116
|
+
* Cостояние валидации при предупреждении.
|
|
117
|
+
*/
|
|
112
118
|
warning?: boolean;
|
|
113
119
|
width?: string | number;
|
|
114
120
|
maxMenuHeight?: number | string;
|
|
@@ -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":"iKAAA,OAAOA,KAAP,MAAkB,OAAlB;;AAEA,SAASC,kBAAT,QAAmC,8BAAnC;AACA,SAASC,eAAT,EAA0BC,YAA1B,EAAwCC,YAAxC,QAA4D,0BAA5D;AACA,SAASC,yBAAT,QAA0C,sBAA1C;;AAEA,SAA2BC,sBAA3B,QAAyD,sBAAzD;AACA,SAASC,aAAT,QAA8B,8BAA9B;AACA,SAASC,MAAT,QAAuB,6BAAvB;AACA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAASC,YAAT,QAA6B,2BAA7B;AACA,SAASC,aAAT,QAA2C,8BAA3C;AACA,SAASC,EAAT,QAAmB,2BAAnB;;AAEA,SAASC,iBAAT,QAAkC,qBAAlC;AACA,SAASC,MAAT,QAAuB,oBAAvB;AACA,SAASC,OAAT,EAAkBC,aAAlB,QAAuC,oCAAvC;AACA,SAASC,oBAAT,QAAqC,gCAArC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkDA,WAAaC,SAAb,WADCV,MAAM,CAAC,YAAD,EAAeF,sBAAf,CACP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCE,qBAAYa,KAAZ,EAAmC;AACjC,wCAAMA,KAAN,UADiC,MAxB3BC,aAwB2B,GAxBW,IAAIH,oBAAJ,EAwBX,OAvB3BI,aAuB2B,GAvBW,IAuBX,OAtB3BC,iBAsB2B,GAtBmB,IAsBnB,OArB3BC,WAqB2B,GArBb,KAqBa,OApB3BC,YAoB2B,GApBZ,KAoBY,OAnB3BC,iBAmB2B,GAnBP,KAmBO,OAlB3BjB,MAkB2B,gBAjB3BkB,SAiB2B,GAjBuB,IAiBvB,OAhB3BC,KAgB2B,gBAf3BC,kBAe2B,GAfN,IAAI3B,kBAAJ,GAC1B4B,GAD0B,CACtBd,OAAO,CAACe,iBADc,EACK,oBAAM,MAAKC,cAAL,CAAoB,CAAC,CAArB,CAAN,EADL,EAE1BF,GAF0B,CAEtBd,OAAO,CAACiB,kBAFc,EAEM,oBAAM,MAAKD,cAAL,CAAoB,CAApB,CAAN,EAFN,EAG1BF,GAH0B,CAGtBd,OAAO,CAACkB,SAHc,EAGH,oBAAM,MAAKC,cAAL,EAAN,EAHG,EAI1BL,GAJ0B,CAItBd,OAAO,CAACoB,kBAJc,EAIM,oBAAM,MAAKC,mBAAL,CAAyB,MAAKhB,aAAL,CAAmBiB,eAAnB,EAAzB,CAAN,EAJN,EAK1BR,GAL0B,CAKtBd,OAAO,CAACuB,iBALc,EAKK,oBAAM,MAAKF,mBAAL,CAAyB,MAAKhB,aAAL,CAAmBmB,gBAAnB,EAAzB,CAAN,EALL,EAM1BV,GAN0B,CAMtBd,OAAO,CAACyB,SANc,EAMH,oBAAM,MAAKC,kBAAL,CAAwB,CAAxB,CAAN,EANG,EAO1BZ,GAP0B,CAOtBd,OAAO,CAAC2B,SAPc,EAOH,oBAAM,MAAKD,kBAAL,CAAwB,CAAC,CAAzB,CAAN,EAPG,EAQ1BZ,GAR0B,CAQtBd,OAAO,CAAC4B,KARc,EAQP,UAACC,CAAD,UAAO,MAAKC,UAAL,CAAgBD,CAAhB,CAAP,EARO,EAS1Bf,GAT0B,CAStBd,OAAO,CAAC+B,cATc,EASE,oBAAM,MAAKC,aAAL,EAAN,EATF,EAU1BlB,GAV0B,CAUtBd,OAAO,CAACiC,YAVc,EAUA,oBAAM,MAAKC,YAAL,EAAN,EAVA,EAW1BpB,GAX0B,CAWtBd,OAAO,CAACmC,aAXc,EAWC,oBAAM,MAAKC,aAAL,EAAN,EAXD,EAY1BtB,GAZ0B,CAYtBd,OAAO,CAACqC,UAZc,EAYF,oBAAM,MAAKC,KAAL,EAAN,EAZE,EAa1BC,KAb0B,EAeM;;;;;;;;;;;;;;;;;;;;;;;AAwB5BC,IAAAA,UAxB4B,GAwBf,YAAM;AACxB,UAAMC,IAAI,GAAG,MAAKC,KAAL,CAAWC,QAAxB;AACA,UAAMpC,iBAAiB,GAAG,MAAKA,iBAAL,IAA0B,MAAKA,iBAAL,CAAuBqC,WAAvB,EAApD;AACA,UAAIH,IAAI,KAAK,IAAT,IAAiB,CAAC,MAAKnC,aAAvB,IAAwC,CAACC,iBAA7C,EAAgE;AAC9D;AACD;AACD,UAAIkC,IAAI,KAAKnD,yBAAyB,CAACuD,GAAvC,EAA4C;AAC1C,cAAKvC,aAAL,CAAmBwC,eAAnB,CAAmCvC,iBAAnC,EAAsD,CAAtD,EAAyD,CAAzD;AACA;AACD;AACD,UAAMwC,KAAK,GAAG,MAAK1C,aAAL,CAAmB2C,aAAnB,GAAmCC,OAAnC,CAA2CR,IAA3C,CAAd;AACA,UAAIM,KAAK,GAAG,CAAC,CAAb,EAAgB;AACd,cAAKzC,aAAL,CAAmBwC,eAAnB,CAAmCvC,iBAAnC,EAAsDwC,KAAK,GAAG,CAA9D,EAAiEA,KAAK,GAAG,CAAR,GAAY,CAA7E;AACD;AACF,KAtCkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqH3BG,IAAAA,UArH2B,GAqHd,YAAM;AACoB,YAAK9C,KADzB,CACjB+C,QADiB,eACjBA,QADiB,CACPC,IADO,eACPA,IADO,oCACDC,QADC,CACDA,QADC,qCACU,KADV;;AAGzB,UAAIF,QAAJ,EAAc;AACZ,YAAMvC,KAAK,GAAG,MAAKA,KAAnB;AACA,YAAM0C,UAAU,GAAGzD,EAAE;AAClBE,QAAAA,MAAM,CAACwD,IAAP,CAAY3C,KAAZ,CADkB,IACG,IADH;AAElBb,QAAAA,MAAM,CAACyD,SAAP,CAAiB5C,KAAjB,CAFkB,IAEQwC,IAAI,KAAK,OAFjB;AAGlBrD,QAAAA,MAAM,CAAC0D,UAAP,CAAkB7C,KAAlB,CAHkB,IAGSwC,IAAI,KAAK,QAHlB;AAIlBrD,QAAAA,MAAM,CAAC2D,SAAP,CAAiB9C,KAAjB,CAJkB,IAIQwC,IAAI,KAAK,OAJjB;AAKlBrD,QAAAA,MAAM,CAAC4D,YAAP,CAAoB/C,KAApB,CALkB,IAKWyC,QALX,OAArB;;AAOA;AACE,wCAAM,SAAS,EAAEC,UAAjB;AACE,8BAAC,YAAD,OADF,CADF;;;AAKD;AACD,aAAO,IAAP;AACD,KAxIkC;;AA0I3BM,IAAAA,WA1I2B,GA0Ib,UAAC/B,CAAD,EAAsC;AAC1D,YAAKgC,QAAL,CAAc,UAACC,SAAD,UAAgB;AAC5BC,UAAAA,OAAO,EAAE,IADmB;AAE5BpB,UAAAA,QAAQ,EAAE,MAAKnC,WAAL,IAAoB,CAACsD,SAAS,CAACC,OAA/B,GAAyCD,SAAS,CAACnB,QAAnD,GAA8D,MAAKtC,aAAL,CAAmBiB,eAAnB,EAF5C,EAAhB,EAAd;;;AAKA,UAAI,MAAKlB,KAAL,CAAW4D,OAAf,EAAwB;AACtB,cAAK5D,KAAL,CAAW4D,OAAX,CAAmBnC,CAAnB;AACD;AACF,KAnJkC;;AAqJ3BoC,IAAAA,UArJ2B,GAqJd,UAACpC,CAAD,EAAsC;AACzD,UAAMqC,QAAQ,GAAG,MAAK7D,aAAL,CAAmB8D,OAAnB,EAAjB;AACA,YAAKC,WAAL,CAAiB,EAAEL,OAAO,EAAE,KAAX,EAAkBpB,QAAQ,EAAE,IAA5B,EAAkC0B,SAAS,EAAE,KAA7C,EAAjB;;AAEA,UAAI,MAAKjE,KAAL,CAAWkE,MAAf,EAAuB;AACrB,YAAIJ,QAAJ,EAAc;AACZrC,UAAAA,CAAC,CAAC0C,OAAF;AACA,gBAAK5D,SAAL,GAAiBkB,CAAjB;AACD,SAHD,MAGO;AACL,gBAAKzB,KAAL,CAAWkE,MAAX,CAAkBzC,CAAlB;AACD;AACF;AACF,KAjKkC;;AAmK3B2C,IAAAA,sBAnK2B,GAmKF,UAAC3C,CAAD,EAA0C;AACzE,UAAM4C,UAAU,GAAG,MAAKlE,iBAAL,GAAyB,MAAKA,iBAAL,CAAuBkE,UAAvB,CAAkC5C,CAAC,CAAC6C,MAApC,CAAzB,GAAuE,KAA1F;AACA,UAAI,MAAKhC,KAAL,CAAWqB,OAAX,IAAsB,CAACU,UAA3B,EAAuC;AACrC5C,QAAAA,CAAC,CAAC8C,cAAF;AACD;AACD,YAAKlE,YAAL,GAAoB,CAAC,MAAKiC,KAAL,CAAWqB,OAAhC;AACA,YAAKvD,WAAL,GAAmBiE,UAAnB;AACD,KA1KkC;;AA4K3BG,IAAAA,yBA5K2B,GA4KC,UAACnC,IAAD,EAAqC;AACvE,UAAI,EAAE,MAAKhC,YAAL,IAAqB,MAAKJ,aAAL,CAAmBwE,OAAnB,EAAvB,CAAJ,EAA0D;AACxD,cAAKxD,mBAAL,CAAyBoB,IAAzB;AACD;AACD,YAAKhC,YAAL,GAAoB,KAApB;AACA,YAAKD,WAAL,GAAmB,KAAnB;AACD,KAlLkC;;AAoL3BsE,IAAAA,oBApL2B,GAoLJ,YAAM;AACnC,YAAKjB,QAAL,CAAc,EAAEkB,OAAO,EAAE,IAAX,EAAiBpC,QAAQ,EAAE,IAA3B,EAAd;AACD,KAtLkC;;AAwL3BqC,IAAAA,kBAxL2B,GAwLN,YAAM;AACjC,UAAMC,SAAS,GAAGC,YAAY,EAA9B;AACA;AACED,MAAAA,SAAS;AACTA,MAAAA,SAAS,CAACE,QAAV,GAAqBC,MAArB,KAAgCjG,eADhC;AAEA,YAAKuD,KAAL,CAAWC,QAAX,KAAwBrD,yBAAyB,CAACuD,GAHpD;AAIE;AACA,cAAKxB,mBAAL,CAAyB/B,yBAAyB,CAACuD,GAAnD;AACD;AACF,KAjMkC;;AAmM3BwC,IAAAA,aAnM2B,GAmMX,UAACxD,CAAD,EAAyC;AAC/D,UAAI,MAAKhB,kBAAL,CAAwBZ,aAAa,CAAC4B,CAAD,CAArC,EAA0CA,CAA1C,CAAJ,EAAkD;AAChDA,QAAAA,CAAC,CAAC8C,cAAF;AACD;AACD,UAAI,MAAKvE,KAAL,CAAWkF,SAAf,EAA0B;AACxB,cAAKlF,KAAL,CAAWkF,SAAX,CAAqBzD,CAArB;AACD;AACF,KA1MkC;;AA4M3B0D,IAAAA,WA5M2B,GA4Mb,UAAC1D,CAAD,EAA0C;AAC9D,UAAM2D,MAAM,GAAG3D,CAAC,IAAIA,CAAC,CAAC4D,aAAF,CAAgBC,OAAhB,CAAwB,MAAxB,EAAgCC,IAAhC,EAApB;AACA,UAAIH,MAAM,IAAI,MAAKnF,aAAL,CAAmBuF,cAAnB,CAAkCJ,MAAlC,CAAd,EAAyD;AACvD,cAAKnF,aAAL,CAAmBwF,KAAnB,CAAyBL,MAAzB;AACA,cAAKpB,WAAL;AACD;AACF,KAlNkC;;AAoN3B0B,IAAAA,iBApN2B,GAoNP,YAAM;AAChC,YAAKzE,mBAAL,CAAyB/B,yBAAyB,CAACuD,GAAnD;AACD,KAtNkC;;AAwN3BkD,IAAAA,gBAxN2B,GAwNR,UAACC,EAAD,EAA8B;AACvD,YAAK1F,aAAL,GAAqB0F,EAArB;AACD,KA1NkC;;AA4N3BC,IAAAA,oBA5N2B,GA4NJ,UAACD,EAAD,EAAkC;AAC/D,YAAKzF,iBAAL,GAAyByF,EAAzB;AACD,KA9NkC;;AAgO3B3E,IAAAA,mBAhO2B,GAgOL,UAACsB,QAAD,EAAsD;AAClF,YAAKkB,QAAL,CAAc,EAAElB,QAAQ,EAARA,QAAF,EAAY0B,SAAS,EAAE,KAAvB,EAAd;AACD,KAlOkC;;AAoO3BD,IAAAA,WApO2B,GAoOb,UAAC1B,KAAD,EAA+C,KAA9CA,KAA8C,cAA9CA,KAA8C,GAAb,EAAa;AACnE,UAAMwD,cAAc,GAAG,MAAK7F,aAAL,CAAmB8F,SAAnB,EAAvB;;AAEA,YAAKtC,QAAL,cAAmBnB,KAAnB,IAA0BwD,cAAc,EAAdA,cAA1B,KAA8D,MAAKE,UAAnE;AACD,KAxOkC;;AA0O3BC,IAAAA,eA1O2B,GA0OT,YAAY;AACpC,YAAKhG,aAAL,CAAmBiG,MAAnB,CAA0B,MAAKlG,KAA/B,EAAsC,MAAKX,MAA3C;;AAEA,YAAK2E,WAAL;AACD,KA9OkC;;AAgP3BhC,IAAAA,aAhP2B,GAgPX,YAAY;AAClC,YAAKf,mBAAL,CAAyB/B,yBAAyB,CAACuD,GAAnD;AACD,KAlPkC;;AAoP3B1B,IAAAA,cApP2B,GAoPV,YAAY;AACnC,UAAMoF,KAAK,GAAG,MAAKlG,aAAL,CAAmBmG,GAAnB,CAAuB,MAAK9D,KAAL,CAAWC,QAAlC,CAAd;AACA,UAAI4D,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAK,EAAhC,EAAoC;AAClC,YAAI,CAAC,MAAK7F,iBAAV,EAA6B;AAC3B,gBAAKM,cAAL,CAAoB,CAApB;AACD;AACD,cAAKN,iBAAL,GAAyB,KAAzB;AACD;AACF,KA5PkC;;AA8P3B0F,IAAAA,UA9P2B,GA8Pd,YAAY;AAC/B,UAAMG,KAAK,GAAG,MAAKlG,aAAL,CAAmBoG,iBAAnB,EAAd;AACA,UAAI,MAAKrG,KAAL,CAAWmG,KAAX,KAAqBA,KAAzB,EAAgC;AAC9B;AACD;AACD,UAAI,MAAKnG,KAAL,CAAWsG,aAAf,EAA8B;AAC5B,cAAKtG,KAAL,CAAWsG,aAAX,CAAyBH,KAAzB;AACD;AACD,UAAI,MAAK5F,SAAL,IAAkB,MAAKP,KAAL,CAAWkE,MAAjC,EAAyC;AACvC,cAAKlE,KAAL,CAAWkE,MAAX,CAAkB,MAAK3D,SAAvB;AACA,cAAKA,SAAL,GAAiB,IAAjB;AACD;AACF,KA1QkC;;AA4Q3BqB,IAAAA,aA5Q2B,GA4QX,YAAY;AAClC,UAAMW,QAAQ,GAAG,MAAKD,KAAL,CAAWC,QAAX,KAAwB,IAAxB,GAA+B,MAAKtC,aAAL,CAAmBiB,eAAnB,EAA/B,GAAsE,MAAKoB,KAAL,CAAWC,QAAlG;AACA,YAAKtC,aAAL,CAAmBsG,KAAnB,CAAyBhE,QAAzB;AACA,YAAKyB,WAAL,CAAiB;AACfC,QAAAA,SAAS,EAAE,KADI;AAEf1B,QAAAA,QAAQ,EAAEA,QAAQ,KAAKrD,yBAAyB,CAACuD,GAAvC,GAA6C,MAAKxC,aAAL,CAAmBiB,eAAnB,EAA7C,GAAoFqB,QAF/E,EAAjB;;AAID,KAnRkC;;AAqR3BT,IAAAA,YArR2B,GAqRZ,YAAY;AACD,YAAKQ,KADJ,CACzBC,QADyB,eACzBA,QADyB,CACf0B,SADe,eACfA,SADe;AAEjC,UAAMuC,QAAQ,GAAGjE,QAAQ,KAAK,IAAb,GAAoB,MAAKtC,aAAL,CAAmBmB,gBAAnB,EAApB,GAA4DmB,QAA7E;AACA,UAAI,MAAKtC,aAAL,CAAmBwG,MAAnB,CAA0BD,QAA1B,CAAJ,EAAyC;AACvC,cAAK5F,cAAL,CAAoB,CAAC,CAArB;AACA;AACD;AACD,UAAI2B,QAAQ,KAAKrD,yBAAyB,CAACuD,GAA3C,EAAgD;AAC9C,cAAKxC,aAAL,CAAmBsG,KAAnB,CAAyBrH,yBAAyB,CAACuD,GAAnD;AACA,cAAKuB,WAAL,CAAiB,EAAEzB,QAAQ,EAAE,MAAKtC,aAAL,CAAmBiB,eAAnB,EAAZ,EAAjB;AACA;AACD;AACD,YAAKjB,aAAL,CAAmByG,kBAAnB,CAAsCF,QAAtC,EAAgDvC,SAAhD;AACA,YAAKD,WAAL,CAAiB;AACfC,QAAAA,SAAS,EAAE,MAAKhE,aAAL,CAAmBmG,GAAnB,CAAuBI,QAAvB,MAAqC,IADjC;AAEfjE,QAAAA,QAAQ,EAAEiE,QAFK,EAAjB;;AAID,KAtSkC;;AAwS3BlF,IAAAA,kBAxS2B,GAwSN,UAACqF,IAAD,EAAwB;AAC3CpE,MAAAA,QAD2C,GAC9B,MAAKD,KADyB,CAC3CC,QAD2C;AAEnD,UAAMqE,OAAO,GAAG,MAAK3G,aAAL,CAAmBqB,kBAAnB,CAAsCiB,QAAtC,EAAgDoE,IAAhD,CAAhB;AACA,UAAI,CAACC,OAAL,EAAc;AACZ,cAAK1E,KAAL;AACA;AACD;AACD,YAAK8B,WAAL,CAAiB;AACfC,QAAAA,SAAS,EAAE,KADI;AAEf1B,QAAAA,QAAQ,EAAEA,QAAQ,KAAKrD,yBAAyB,CAACuD,GAAvC,GAA6C,MAAKxC,aAAL,CAAmBiB,eAAnB,EAA7C,GAAoFqB,QAF/E,EAAjB;;AAID,KAnTkC;;AAqT3B3B,IAAAA,cArT2B,GAqTV,UAAC+F,IAAD,EAAwB;AAC/C,UAAMpE,QAAQ,GAAG,MAAKtC,aAAL,CAAmB4G,cAAnB,CAAkC,MAAKvE,KAAL,CAAWC,QAA7C,EAAuDoE,IAAvD,CAAjB;AACA,UAAIpE,QAAQ,KAAK,MAAKD,KAAL,CAAWC,QAA5B,EAAsC;AACpC,cAAKkB,QAAL,CAAc,EAAElB,QAAQ,EAARA,QAAF,EAAY0B,SAAS,EAAE,KAAvB,EAAd;AACD;AACF,KA1TkC;;AA4T3BvC,IAAAA,UA5T2B,GA4Td,UAACoF,KAAD,EAAmD;AACtE,UAAIvE,QAAQ,GAAG,MAAKD,KAAL,CAAWC,QAA1B;AACA,UAAIA,QAAQ,KAAKrD,yBAAyB,CAACuD,GAA3C,EAAgD;AAC9CF,QAAAA,QAAQ,GAAG,MAAKtC,aAAL,CAAmBiB,eAAnB,EAAX;AACA,cAAKjB,aAAL,CAAmBsG,KAAnB,CAAyBrH,yBAAyB,CAACuD,GAAnD;AACA,cAAKgB,QAAL,CAAc,EAAElB,QAAQ,EAARA,QAAF,EAAd;AACD;AACD,UAAM0B,SAAS,GAAG,MAAKhE,aAAL,CAAmB8G,QAAnB,CAA4BD,KAAK,CAACE,GAAlC,EAAuCzE,QAAvC,EAAiD,MAAKD,KAAL,CAAW2B,SAA5D,CAAlB;;AAEA,UAAI,CAACA,SAAL,EAAgB;AACd,cAAK3D,iBAAL,GAAyB,IAAzB;AACA,cAAKM,cAAL,CAAoB,CAApB;AACD;AACD,YAAKoD,WAAL,CAAiB,EAAEC,SAAS,EAATA,SAAF,EAAjB;AACD,KA1UkC,CAGjC,MAAK3B,KAAL,GAAa,EACXwD,cAAc,EAAE,EADL,EAEXvD,QAAQ,EAAE,IAFC,EAGX0B,SAAS,EAAE,KAHA,EAIXN,OAAO,EAAE,KAJE,EAKXgB,OAAO,EAAE,KALE,EAAb,CAHiC,aAUlC,CA7CH,wCA+CSsC,kBA/CT,GA+CE,4BAA0BC,SAA1B,EAAqDxD,SAArD,EAAgF,CAC9E,IACEwD,SAAS,CAACf,KAAV,KAAoB,KAAKnG,KAAL,CAAWmG,KAA/B,IACAe,SAAS,CAACC,OAAV,KAAsB,KAAKnH,KAAL,CAAWmH,OADjC,IAEAD,SAAS,CAACE,OAAV,KAAsB,KAAKpH,KAAL,CAAWoH,OAFjC,IAGA,KAAKnH,aAAL,CAAmBoH,eAAnB,CAAmC,KAAKhI,MAAxC,CAJF,EAKE,CACA,KAAK4G,eAAL,GACD,CACD,KAAK7D,UAAL,GACD,CAzDH,QA2ESkF,iBA3ET,GA2EE,6BAAiC,CAC/B,KAAKrB,eAAL,GACA,IAAI,KAAKjG,KAAL,CAAWuH,SAAf,EAA0B,CACxB,KAAKC,KAAL,GACD,CACF,CAhFH,QAkFSC,IAlFT,GAkFE,gBAAc,CACZ,IAAI,KAAKvH,aAAT,EAAwB,CACtB,KAAKA,aAAL,CAAmBuH,IAAnB,GACD,CACF,CAtFH,QAwFSD,KAxFT,GAwFE,iBAAe,CACb,IAAI,KAAKtH,aAAT,EAAwB,CACtB,KAAKA,aAAL,CAAmBsH,KAAnB,GACD,CACF,CA5FH,QA8FStF,KA9FT,GA8FE,iBAAe,CACb,IAAI,KAAKhC,aAAT,EAAwB,CACtB,KAAKA,aAAL,CAAmBgC,KAAnB,GACD,CACF,CAlGH,QAoGSwF,MApGT,GAoGE,kBAAgB,mBACd,oBACE,oBAAC,YAAD,CAAc,QAAd,QACG,UAAClH,KAAD,EAAW,CACV,MAAI,CAACA,KAAL,GAAaA,KAAb,CACA,OAAO,MAAI,CAACmH,UAAL,EAAP,CACD,CAJH,CADF,CAQD,CA7GH,QA+GUA,UA/GV,GA+GE,sBAAqB,6BACsC,KAAKrF,KAD3C,CACXqB,OADW,gBACXA,OADW,CACFpB,QADE,gBACFA,QADE,CACQ0B,SADR,gBACQA,SADR,CACmB6B,cADnB,gBACmBA,cADnB,CAEnB,IAAM8B,SAAS,GAAGC,OAAO,CAAClE,OAAO,IAAImC,cAAZ,CAAzB,CAEA,oBACE,oBAAC,aAAD,EAAmB,KAAK9F,KAAxB,eACE,oBAAC,aAAD,IACE,KAAK,EAAE,KAAKA,KAAL,CAAW8H,KADpB,EAEE,GAAG,EAAE,KAAKnC,gBAFZ,EAGE,IAAI,EAAE,KAAK3F,KAAL,CAAWgD,IAHnB,EAIE,QAAQ,EAAE,KAAKhD,KAAL,CAAWiD,QAJvB,EAKE,KAAK,EAAE,KAAKjD,KAAL,CAAW+H,KALpB,EAME,OAAO,EAAE,KAAK/H,KAAL,CAAWgI,OANtB,EAOE,MAAM,EAAE,KAAKnE,UAPf,EAQE,OAAO,EAAE,KAAKL,WARhB,EASE,OAAO,EAAE,KAAKxD,KAAL,CAAWiI,OATtB,EAUE,SAAS,EAAE,KAAKhD,aAVlB,EAWE,kBAAkB,EAAE,KAAKb,sBAX3B,EAYE,OAAO,EAAE,KAAKe,WAZhB,EAaE,SAAS,EAAE,KAAKrC,UAAL,EAbb,EAcE,oBAAoB,EAAE,KAAK4C,iBAd7B,EAeE,gBAAgB,EAAE,KAAKhB,oBAfzB,EAgBE,cAAc,EAAE,KAAKE,kBAhBvB,EAiBE,KAAK,EAAE,KAAK3E,aAAL,CAAmBoG,iBAAnB,EAjBT,EAkBE,SAAS,EAAE,SAlBb,EAmBE,gBAAgB,MAnBlB,iBAqBE,8BAAM,SAAS,EAAE5G,EAAE,CAACE,MAAM,CAACwG,KAAP,EAAD,mBAAoBxG,MAAM,CAACuI,YAAP,EAApB,IAA4CN,SAA5C,QAAnB,iBACE,oBAAC,iBAAD,IACE,GAAG,EAAE,KAAK/B,oBADZ,EAEE,SAAS,EAAE,KAAK5F,aAAL,CAAmBkI,YAAnB,EAFb,EAGE,qBAAqB,EAAE,KAAK3D,yBAH9B,EAIE,QAAQ,EAAEjC,QAJZ,EAKE,SAAS,EAAE0B,SALb,GADF,CArBF,CADF,CADF,CAmCD,CAtJH,oBAA+BpF,KAAK,CAACuJ,SAArC,WACgBC,mBADhB,GACsC,WADtC,UAGgBC,YAHhB,GAG+B,EAC3BnC,KAAK,EAAE,EADoB,EAE3BgB,OAAO,EAAElI,YAFkB,EAG3BmI,OAAO,EAAEpI,YAHkB,EAI3BgE,IAAI,EAAE,OAJqB,EAK3B8E,KAAK,EAAE,GALoB,EAH/B","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
|
/**
|