@skbkontur/react-ui 4.0.2 → 4.0.5
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 +34 -0
- package/cjs/components/Button/Button.d.ts +2 -2
- package/cjs/components/Button/Button.js.map +1 -1
- 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 +3 -3
- package/cjs/components/ComboBox/ComboBox.js.map +1 -1
- package/cjs/components/CurrencyInput/CurrencyInput.d.ts +1 -1
- package/cjs/components/CurrencyInput/CurrencyInput.js +3 -3
- package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
- package/cjs/components/DateInput/DateInput.d.ts +2 -2
- package/cjs/components/DateInput/DateInput.js.map +1 -1
- package/cjs/components/DateInput/DateInput.styles.js +2 -2
- package/cjs/components/DateInput/DateInput.styles.js.map +1 -1
- package/cjs/components/DatePicker/DatePicker.d.ts +2 -2
- 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 +1 -1
- package/cjs/components/Hint/Hint.js.map +1 -1
- package/cjs/components/Input/Input.d.ts +3 -3
- package/cjs/components/Input/Input.js +1 -1
- package/cjs/components/Input/Input.js.map +1 -1
- package/cjs/components/Modal/Modal.d.ts +1 -1
- package/cjs/components/Modal/Modal.js +1 -1
- package/cjs/components/Modal/Modal.js.map +1 -1
- package/cjs/components/Modal/ModalFooter.js +0 -1
- package/cjs/components/Modal/ModalFooter.js.map +1 -1
- package/cjs/components/Modal/ModalHeader.js +0 -1
- package/cjs/components/Modal/ModalHeader.js.map +1 -1
- package/cjs/components/Radio/Radio.d.ts +2 -2
- package/cjs/components/Radio/Radio.js.map +1 -1
- package/cjs/components/RadioGroup/RadioGroup.d.ts +1 -1
- package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
- package/cjs/components/Select/Select.d.ts +3 -3
- package/cjs/components/Select/Select.js.map +1 -1
- package/cjs/components/SidePage/SidePage.styles.js +2 -4
- package/cjs/components/SidePage/SidePage.styles.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 +4 -4
- 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 +2 -2
- package/cjs/components/Token/Token.js.map +1 -1
- package/cjs/components/TokenInput/TokenInput.d.ts +2 -2
- package/cjs/components/TokenInput/TokenInput.js +1 -1
- package/cjs/components/TokenInput/TokenInput.js.map +1 -1
- package/cjs/internal/Popup/Popup.js +1 -1
- package/cjs/internal/Popup/Popup.js.map +1 -1
- package/cjs/internal/ThemePlayground/ThemeContextPlayground.js +3 -12
- package/cjs/internal/ThemePlayground/ThemeContextPlayground.js.map +1 -1
- package/cjs/lib/theming/ThemeFactory.d.ts +1 -1
- package/cjs/lib/theming/ThemeFactory.js +4 -3
- package/cjs/lib/theming/ThemeFactory.js.map +1 -1
- package/cjs/lib/theming/ThemeHelpers.d.ts +1 -0
- package/cjs/lib/theming/ThemeHelpers.js +11 -2
- package/cjs/lib/theming/ThemeHelpers.js.map +1 -1
- package/components/Button/Button/Button.js.map +1 -1
- package/components/Button/Button.d.ts +2 -2
- 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 +3 -3
- package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +3 -3
- package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
- package/components/CurrencyInput/CurrencyInput.d.ts +1 -1
- package/components/DateInput/DateInput/DateInput.js.map +1 -1
- package/components/DateInput/DateInput.d.ts +2 -2
- package/components/DateInput/DateInput.styles/DateInput.styles.js +2 -2
- package/components/DateInput/DateInput.styles/DateInput.styles.js.map +1 -1
- package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
- package/components/DatePicker/DatePicker.d.ts +2 -2
- 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 +1 -1
- package/components/Input/Input/Input.js +1 -1
- package/components/Input/Input/Input.js.map +1 -1
- package/components/Input/Input.d.ts +3 -3
- package/components/Modal/Modal/Modal.js +1 -1
- package/components/Modal/Modal/Modal.js.map +1 -1
- package/components/Modal/Modal.d.ts +1 -1
- package/components/Modal/ModalFooter/ModalFooter.js +1 -1
- package/components/Modal/ModalFooter/ModalFooter.js.map +1 -1
- package/components/Modal/ModalHeader/ModalHeader.js +1 -1
- package/components/Modal/ModalHeader/ModalHeader.js.map +1 -1
- package/components/Radio/Radio/Radio.js.map +1 -1
- package/components/Radio/Radio.d.ts +2 -2
- package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
- package/components/RadioGroup/RadioGroup.d.ts +1 -1
- package/components/Select/Select/Select.js.map +1 -1
- package/components/Select/Select.d.ts +3 -3
- package/components/SidePage/SidePage.styles/SidePage.styles.js +2 -2
- package/components/SidePage/SidePage.styles/SidePage.styles.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.map +1 -1
- package/components/Textarea/Textarea.d.ts +4 -4
- 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 +2 -2
- package/components/TokenInput/TokenInput/TokenInput.js +1 -1
- package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
- package/components/TokenInput/TokenInput.d.ts +2 -2
- package/internal/Popup/Popup/Popup.js +1 -1
- package/internal/Popup/Popup/Popup.js.map +1 -1
- package/internal/ThemePlayground/ThemeContextPlayground/ThemeContextPlayground.js +2 -11
- package/internal/ThemePlayground/ThemeContextPlayground/ThemeContextPlayground.js.map +1 -1
- package/lib/theming/ThemeFactory/ThemeFactory.js +3 -2
- package/lib/theming/ThemeFactory/ThemeFactory.js.map +1 -1
- package/lib/theming/ThemeFactory.d.ts +1 -1
- package/lib/theming/ThemeHelpers/ThemeHelpers.js +10 -1
- package/lib/theming/ThemeHelpers/ThemeHelpers.js.map +1 -1
- package/lib/theming/ThemeHelpers.d.ts +1 -0
- package/package.json +4 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["DateInput.tsx"],"names":["DateInput","DatePickerLocaleHelper","rootNode","props","iDateMediator","InternalDateMediator","inputLikeText","dateFragmentsView","isMouseDown","isMouseFocus","ignoringDelimiter","blurEvent","conditionalHandler","ConditionalHandler","add","Actions","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","InternalDateComponentType","All","selectInnerNode","index","getTypesOrder","indexOf","renderIcon","withIcon","size","disabled","theme","iconStyles","styles","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","LENGTH_FULLDATE","handleKeyDown","onKeyDown","handlePaste","pasted","clipboardData","getData","trim","validateString","paste","handleDoubleClick","inputLikeTextRef","el","dateFragmentsViewRef","valueFormatted","getString","emitChange","updateFromProps","update","locale","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","setRootNode","width","error","warning","onClick","valueVisible","getFragments","React","Component","__KONTUR_REACT_UI__","defaultProps","MIN_FULLDATE","MAX_FULLDATE"],"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';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\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@rootNode\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 setRootNode!: TSetRootNode;\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 rootNodeRef={this.setRootNode} {...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":["DateInput","DatePickerLocaleHelper","rootNode","props","iDateMediator","InternalDateMediator","inputLikeText","dateFragmentsView","isMouseDown","isMouseFocus","ignoringDelimiter","blurEvent","conditionalHandler","ConditionalHandler","add","Actions","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","InternalDateComponentType","All","selectInnerNode","index","getTypesOrder","indexOf","renderIcon","withIcon","size","disabled","theme","iconStyles","styles","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","LENGTH_FULLDATE","handleKeyDown","onKeyDown","handlePaste","pasted","clipboardData","getData","trim","validateString","paste","handleDoubleClick","inputLikeTextRef","el","dateFragmentsViewRef","valueFormatted","getString","emitChange","updateFromProps","update","locale","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","setRootNode","width","error","warning","onClick","valueVisible","getFragments","React","Component","__KONTUR_REACT_UI__","defaultProps","MIN_FULLDATE","MAX_FULLDATE"],"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';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\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 * Состояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Состояние валидации при предупреждении.\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@rootNode\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 setRootNode!: TSetRootNode;\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 rootNodeRef={this.setRootNode} {...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"]}
|
|
@@ -35,13 +35,13 @@ var styles = {
|
|
|
35
35
|
},
|
|
36
36
|
|
|
37
37
|
value: function value() {
|
|
38
|
-
return (0, _Emotion.css)(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteralLoose2.default)(["\n
|
|
38
|
+
return (0, _Emotion.css)(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteralLoose2.default)(["\n visibility: hidden;\n "])));
|
|
39
39
|
|
|
40
40
|
|
|
41
41
|
},
|
|
42
42
|
|
|
43
43
|
valueVisible: function valueVisible() {
|
|
44
|
-
return (0, _Emotion.css)(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteralLoose2.default)(["\n
|
|
44
|
+
return (0, _Emotion.css)(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteralLoose2.default)(["\n visibility: visible;\n "])));
|
|
45
45
|
|
|
46
46
|
|
|
47
47
|
} };exports.styles = styles;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["DateInput.styles.ts"],"names":["styles","icon","t","css","dateInputIconColor","iconSmall","inputFontSizeSmall","iconMedium","inputFontSizeMedium","iconLarge","inputFontSizeLarge","iconDisabled","textColorDisabled","value","valueVisible"],"mappings":"4QAAA,oD;;;AAGO,IAAMA,MAAM,GAAG;AACpBC,EAAAA,IADoB,gBACfC,CADe,EACL;AACb,eAAOC,YAAP;;AAEWD,IAAAA,CAAC,CAACE,kBAFb;;AAID,GANmB;;AAQpBC,EAAAA,SARoB,qBAQVH,CARU,EAQA;AAClB,eAAOC,YAAP;AACeD,IAAAA,CAAC,CAACI,kBADjB;;AAGD,GAZmB;;AAcpBC,EAAAA,UAdoB,sBAcTL,CAdS,EAcC;AACnB,eAAOC,YAAP;AACeD,IAAAA,CAAC,CAACM,mBADjB;;AAGD,GAlBmB;;AAoBpBC,EAAAA,SApBoB,qBAoBVP,CApBU,EAoBA;AAClB,eAAOC,YAAP;AACeD,IAAAA,CAAC,CAACQ,kBADjB;;AAGD,GAxBmB;;AA0BpBC,EAAAA,YA1BoB,wBA0BPT,CA1BO,EA0BG;AACrB,eAAOC,YAAP;;AAEWD,IAAAA,CAAC,CAACU,iBAFb;;AAID,GA/BmB;;AAiCpBC,EAAAA,KAjCoB,mBAiCZ;AACN,eAAOV,YAAP;;;AAGD,GArCmB;;AAuCpBW,EAAAA,YAvCoB,0BAuCL;AACb,eAAOX,YAAP;;;AAGD,GA3CmB,EAAf,C","sourcesContent":["import { css } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const styles = {\n icon(t: Theme) {\n return css`\n cursor: pointer;\n color: ${t.dateInputIconColor};\n `;\n },\n\n iconSmall(t: Theme) {\n return css`\n font-size: ${t.inputFontSizeSmall};\n `;\n },\n\n iconMedium(t: Theme) {\n return css`\n font-size: ${t.inputFontSizeMedium};\n `;\n },\n\n iconLarge(t: Theme) {\n return css`\n font-size: ${t.inputFontSizeLarge};\n `;\n },\n\n iconDisabled(t: Theme) {\n return css`\n cursor: default;\n color: ${t.textColorDisabled};\n `;\n },\n\n value() {\n return css`\n
|
|
1
|
+
{"version":3,"sources":["DateInput.styles.ts"],"names":["styles","icon","t","css","dateInputIconColor","iconSmall","inputFontSizeSmall","iconMedium","inputFontSizeMedium","iconLarge","inputFontSizeLarge","iconDisabled","textColorDisabled","value","valueVisible"],"mappings":"4QAAA,oD;;;AAGO,IAAMA,MAAM,GAAG;AACpBC,EAAAA,IADoB,gBACfC,CADe,EACL;AACb,eAAOC,YAAP;;AAEWD,IAAAA,CAAC,CAACE,kBAFb;;AAID,GANmB;;AAQpBC,EAAAA,SARoB,qBAQVH,CARU,EAQA;AAClB,eAAOC,YAAP;AACeD,IAAAA,CAAC,CAACI,kBADjB;;AAGD,GAZmB;;AAcpBC,EAAAA,UAdoB,sBAcTL,CAdS,EAcC;AACnB,eAAOC,YAAP;AACeD,IAAAA,CAAC,CAACM,mBADjB;;AAGD,GAlBmB;;AAoBpBC,EAAAA,SApBoB,qBAoBVP,CApBU,EAoBA;AAClB,eAAOC,YAAP;AACeD,IAAAA,CAAC,CAACQ,kBADjB;;AAGD,GAxBmB;;AA0BpBC,EAAAA,YA1BoB,wBA0BPT,CA1BO,EA0BG;AACrB,eAAOC,YAAP;;AAEWD,IAAAA,CAAC,CAACU,iBAFb;;AAID,GA/BmB;;AAiCpBC,EAAAA,KAjCoB,mBAiCZ;AACN,eAAOV,YAAP;;;AAGD,GArCmB;;AAuCpBW,EAAAA,YAvCoB,0BAuCL;AACb,eAAOX,YAAP;;;AAGD,GA3CmB,EAAf,C","sourcesContent":["import { css } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const styles = {\n icon(t: Theme) {\n return css`\n cursor: pointer;\n color: ${t.dateInputIconColor};\n `;\n },\n\n iconSmall(t: Theme) {\n return css`\n font-size: ${t.inputFontSizeSmall};\n `;\n },\n\n iconMedium(t: Theme) {\n return css`\n font-size: ${t.inputFontSizeMedium};\n `;\n },\n\n iconLarge(t: Theme) {\n return css`\n font-size: ${t.inputFontSizeLarge};\n `;\n },\n\n iconDisabled(t: Theme) {\n return css`\n cursor: default;\n color: ${t.textColorDisabled};\n `;\n },\n\n value() {\n return css`\n visibility: hidden;\n `;\n },\n\n valueVisible() {\n return css`\n visibility: visible;\n `;\n },\n};\n"]}
|
|
@@ -8,7 +8,7 @@ export interface DatePickerProps<T> extends CommonProps {
|
|
|
8
8
|
disabled?: boolean;
|
|
9
9
|
enableTodayLink?: boolean;
|
|
10
10
|
/**
|
|
11
|
-
*
|
|
11
|
+
* Состояние валидации при ошибке.
|
|
12
12
|
*/
|
|
13
13
|
error?: boolean;
|
|
14
14
|
minDate: T;
|
|
@@ -17,7 +17,7 @@ export interface DatePickerProps<T> extends CommonProps {
|
|
|
17
17
|
size?: 'small' | 'medium' | 'large';
|
|
18
18
|
value?: T | null;
|
|
19
19
|
/**
|
|
20
|
-
*
|
|
20
|
+
* Состояние валидации при предупреждении.
|
|
21
21
|
*/
|
|
22
22
|
warning?: boolean;
|
|
23
23
|
width?: number | string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["DatePicker.tsx"],"names":["INPUT_PASS_PROPS","autoFocus","disabled","warning","error","size","onKeyDown","MIN_WIDTH","DatePicker","rootNode","state","opened","canUseMobileNativeDatePicker","input","focused","renderMain","props","picker","value","minDate","maxDate","internalDate","parseValueToDate","date","toNativeFormat","parsedMinDate","formattedMinDate","undefined","parsedMaxDate","formattedMaxDate","getParent","menuAlign","handlePick","handleSelect","enableTodayLink","isHoliday","styles","root","getRootStyle","onMouseEnter","onMouseLeave","onMouseOver","getInputRef","handleBlur","handleFocus","onValueChange","width","minWidth","ref","setState","onFocus","close","onBlur","dateShape","blur","month","year","InternalDateTransformer","dateToInternalString","isWeekend","dateString","componentDidMount","useMobileNativeDatePicker","isMobile","focus","componentDidUpdate","render","setRootNode","InternalDate","validate","checks","InternalDateValidateCheck","NotNull","Native","React","PureComponent","__KONTUR_REACT_UI__","propTypes","PropTypes","bool","string","isRequired","oneOf","oneOfType","number","func","defaultProps","MIN_FULLDATE","MAX_FULLDATE","_day","range","order","InternalDateOrder","DMY","separator","InternalDateSeparator","Dot","setRangeStart","setRangeEnd","parseValue","Number","Limits","Range"],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\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 { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\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\n@rootNode\nexport class DatePicker extends React.PureComponent<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 setRootNode!: TSetRootNode;\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 componentDidUpdate() {\n const { disabled } = this.props;\n const { opened } = this.state;\n if (disabled && opened) {\n this.close();\n }\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 (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }\n\n public renderMain = (props: CommonWrapperRestProps<DatePickerProps<DatePickerValue>>) => {\n let picker = null;\n\n const { value, minDate, maxDate } = this.props;\n\n const internalDate = this.parseValueToDate(value);\n const date = internalDate ? internalDate.toNativeFormat() : null;\n\n const parsedMinDate = this.parseValueToDate(minDate);\n const formattedMinDate = (parsedMinDate && parsedMinDate.toNativeFormat()) || undefined;\n\n const parsedMaxDate = this.parseValueToDate(maxDate);\n const formattedMaxDate = (parsedMaxDate && parsedMaxDate.toNativeFormat()) || undefined;\n\n if (this.state.opened) {\n picker = (\n <DropdownContainer getParent={this.getParent} offsetY={2} align={this.props.menuAlign}>\n <Picker\n value={date}\n minDate={formattedMinDate}\n maxDate={formattedMaxDate}\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 public getParent = () => {\n return getRootNode(this);\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":["INPUT_PASS_PROPS","autoFocus","disabled","warning","error","size","onKeyDown","MIN_WIDTH","DatePicker","rootNode","state","opened","canUseMobileNativeDatePicker","input","focused","renderMain","props","picker","value","minDate","maxDate","internalDate","parseValueToDate","date","toNativeFormat","parsedMinDate","formattedMinDate","undefined","parsedMaxDate","formattedMaxDate","getParent","menuAlign","handlePick","handleSelect","enableTodayLink","isHoliday","styles","root","getRootStyle","onMouseEnter","onMouseLeave","onMouseOver","getInputRef","handleBlur","handleFocus","onValueChange","width","minWidth","ref","setState","onFocus","close","onBlur","dateShape","blur","month","year","InternalDateTransformer","dateToInternalString","isWeekend","dateString","componentDidMount","useMobileNativeDatePicker","isMobile","focus","componentDidUpdate","render","setRootNode","InternalDate","validate","checks","InternalDateValidateCheck","NotNull","Native","React","PureComponent","__KONTUR_REACT_UI__","propTypes","PropTypes","bool","string","isRequired","oneOf","oneOfType","number","func","defaultProps","MIN_FULLDATE","MAX_FULLDATE","_day","range","order","InternalDateOrder","DMY","separator","InternalDateSeparator","Dot","setRangeStart","setRangeEnd","parseValue","Number","Limits","Range"],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\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 { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\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 * Состояние валидации при ошибке.\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 * Состояние валидации при предупреждении.\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\n@rootNode\nexport class DatePicker extends React.PureComponent<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 setRootNode!: TSetRootNode;\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 componentDidUpdate() {\n const { disabled } = this.props;\n const { opened } = this.state;\n if (disabled && opened) {\n this.close();\n }\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 (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }\n\n public renderMain = (props: CommonWrapperRestProps<DatePickerProps<DatePickerValue>>) => {\n let picker = null;\n\n const { value, minDate, maxDate } = this.props;\n\n const internalDate = this.parseValueToDate(value);\n const date = internalDate ? internalDate.toNativeFormat() : null;\n\n const parsedMinDate = this.parseValueToDate(minDate);\n const formattedMinDate = (parsedMinDate && parsedMinDate.toNativeFormat()) || undefined;\n\n const parsedMaxDate = this.parseValueToDate(maxDate);\n const formattedMaxDate = (parsedMaxDate && parsedMaxDate.toNativeFormat()) || undefined;\n\n if (this.state.opened) {\n picker = (\n <DropdownContainer getParent={this.getParent} offsetY={2} align={this.props.menuAlign}>\n <Picker\n value={date}\n minDate={formattedMinDate}\n maxDate={formattedMaxDate}\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 public getParent = () => {\n return getRootNode(this);\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"]}
|
|
@@ -26,11 +26,11 @@ export interface DropdownProps extends CommonProps {
|
|
|
26
26
|
*/
|
|
27
27
|
disabled?: boolean;
|
|
28
28
|
/**
|
|
29
|
-
*
|
|
29
|
+
* Состояние валидации при ошибке.
|
|
30
30
|
*/
|
|
31
31
|
error?: boolean;
|
|
32
32
|
/**
|
|
33
|
-
*
|
|
33
|
+
* Состояние валидации при предупреждении.
|
|
34
34
|
*/
|
|
35
35
|
warning?: boolean;
|
|
36
36
|
maxMenuHeight?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Dropdown.tsx"],"names":["PASS_PROPS","_renderButton","error","disabled","disablePortal","menuAlign","menuWidth","maxMenuHeight","use","size","warning","width","onOpen","onClose","onMouseEnter","onMouseLeave","onMouseOver","Dropdown","rootNode","renderMain","caption","icon","props","items","React","Children","map","children","item","_refSelect","renderValue","element","_select","render","setRootNode","open","close","Component","__KONTUR_REACT_UI__","Header","MenuHeader","MenuItem","Separator","MenuSeparator","propTypes","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';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\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":["PASS_PROPS","_renderButton","error","disabled","disablePortal","menuAlign","menuWidth","maxMenuHeight","use","size","warning","width","onOpen","onClose","onMouseEnter","onMouseLeave","onMouseOver","Dropdown","rootNode","renderMain","caption","icon","props","items","React","Children","map","children","item","_refSelect","renderValue","element","_select","render","setRootNode","open","close","Component","__KONTUR_REACT_UI__","Header","MenuHeader","MenuItem","Separator","MenuSeparator","propTypes","PropTypes","node","isRequired","bool","number","oneOf","oneOfType","string","any","func","value"],"mappings":"kcAAA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA,8C;;AAEA,IAAMA,UAAU,GAAG;AACjBC,EAAAA,aAAa,EAAE,IADE;AAEjBC,EAAAA,KAAK,EAAE,IAFU;AAGjBC,EAAAA,QAAQ,EAAE,IAHO;AAIjBC,EAAAA,aAAa,EAAE,IAJE;AAKjBC,EAAAA,SAAS,EAAE,IALM;AAMjBC,EAAAA,SAAS,EAAE,IANM;AAOjBC,EAAAA,aAAa,EAAE,IAPE;AAQjBC,EAAAA,GAAG,EAAE,IARY;AASjBC,EAAAA,IAAI,EAAE,IATW;AAUjBC,EAAAA,OAAO,EAAE,IAVQ;AAWjBC,EAAAA,KAAK,EAAE,IAXU;AAYjBC,EAAAA,MAAM,EAAE,IAZS;AAajBC,EAAAA,OAAO,EAAE,IAbQ;AAcjBC,EAAAA,YAAY,EAAE,IAdG;AAejBC,EAAAA,YAAY,EAAE,IAfG;AAgBjBC,EAAAA,WAAW,EAAE,IAhBI,EAAnB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4EA;AACA;AACA;AACA,G;;AAEaC,Q,OADZC,kB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkFQC,IAAAA,U,GAAa,gBAAwE,KAArEC,OAAqE,QAArEA,OAAqE,CAA5DC,IAA4D,QAA5DA,IAA4D,CAAnDC,KAAmD;AAC1F,UAAMC,KAAK,GAAGC,eAAMC,QAAN,CAAeC,GAAf,CAAmB,MAAKJ,KAAL,CAAWK,QAA9B,EAAwC,UAACC,IAAD,UAAUA,IAAV,EAAxC,KAA2D,EAAzE;;AAEA;AACE,qCAAC,cAAD;AACE,UAAA,GAAG,EAAE,MAAKC,UADZ;AAEM,sCAAYP,KAAZ,EAAmBtB,UAAnB,CAFN;AAGE,UAAA,KAAK,EAAEoB,OAHT;AAIE,UAAA,KAAK,EAAEG,KAJT;AAKE,UAAA,KAAK,EAAEF,IALT;AAME,UAAA,WAAW,EAAES,WANf,IADF;;;AAUD,K;;;;;;;;;;;;;;;;;;;;AAoBOD,IAAAA,U,GAAa,UAACE,OAAD,EAAuC;AAC1D,YAAKC,OAAL,GAAeD,OAAf;AACD,K,sDA3CME,M,GAAP,kBAAgB,CACd,oBACE,6BAAC,4BAAD,2BAAe,WAAW,EAAE,KAAKC,WAAjC,IAAkD,KAAKZ,KAAvD,GACG,KAAKH,UADR,CADF,CAKD,C,EAiBD;AACF;AACA,K,OACSgB,I,GAAP,gBAAc,CACZ,IAAI,KAAKH,OAAT,EAAkB,CAChB,KAAKA,OAAL,CAAaG,IAAb,GACD,CACF,C,CAED;AACF;AACA,K,QACSC,K,GAAP,iBAAe,CACb,IAAI,KAAKJ,OAAT,EAAkB,CAChB,KAAKA,OAAL,CAAaI,KAAb,GACD,CACF,C,mBAhH2BZ,eAAMa,S,WACpBC,mB,GAAsB,U,UAEtBC,M,GAASC,sB,UACTC,Q,GAAWA,kB,UACXC,S,GAAYC,4B,UAEZC,S,GAAY,EACxB;AACJ;AACA,KACIxB,OAAO,EAAEyB,mBAAUC,IAAV,CAAeC,UAJA,EAMxB;AACJ;AACA,KACI3C,aAAa,EAAEyC,mBAAUG,IATD,EAWxB;AACJ;AACA,KACI7C,QAAQ,EAAE0C,mBAAUG,IAdI,EAgBxB;AACJ;AACA,KACI9C,KAAK,EAAE2C,mBAAUG,IAnBO,EAqBxB;AACJ;AACA,KACI3B,IAAI,EAAEwB,mBAAUC,IAxBQ,EA0BxBvC,aAAa,EAAEsC,mBAAUI,MA1BD,EA4BxB5C,SAAS,EAAEwC,mBAAUK,KAAV,CAAgB,CAAC,MAAD,EAAS,OAAT,CAAhB,CA5Ba,EA8BxB5C,SAAS,EAAEuC,mBAAUM,SAAV,CAAoB,CAACN,mBAAUI,MAAX,EAAmBJ,mBAAUO,MAA7B,CAApB,CA9Ba,EAgCxB3C,IAAI,EAAEoC,mBAAUK,KAAV,CAAgB,CAAC,OAAD,EAAU,QAAV,EAAoB,OAApB,CAAhB,CAhCkB,EAkCxB;AACJ;AACA,KACI1C,GAAG,EAAEqC,mBAAUQ,GArCS,EAuCxB;AACJ;AACA,KACI3C,OAAO,EAAEmC,mBAAUG,IA1CK,EA4CxBrC,KAAK,EAAEkC,mBAAUM,SAAV,CAAoB,CAACN,mBAAUI,MAAX,EAAmBJ,mBAAUO,MAA7B,CAApB,CA5CiB,EA8CxB;AACJ;AACA,KACIvC,OAAO,EAAEgC,mBAAUS,IAjDK,EAmDxBxC,YAAY,EAAE+B,mBAAUS,IAnDA,EAqDxBvC,YAAY,EAAE8B,mBAAUS,IArDA,EAuDxBtC,WAAW,EAAE6B,mBAAUS,IAvDC,EAyDxB;AACJ;AACA,KACI1C,MAAM,EAAEiC,mBAAUS,IA5DM,E,gDAgH5B,SAASxB,WAAT,CAAqByB,KAArB,EAAiC,CAC/B,OAAOA,KAAP,CACD","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';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nconst PASS_PROPS = {\n _renderButton: true,\n error: true,\n disabled: true,\n disablePortal: true,\n menuAlign: true,\n menuWidth: true,\n maxMenuHeight: true,\n use: true,\n size: true,\n warning: true,\n width: true,\n onOpen: true,\n onClose: true,\n onMouseEnter: true,\n onMouseLeave: true,\n onMouseOver: true,\n};\n\nexport interface DropdownProps extends CommonProps {\n /**\n * Подпись на кнопке.\n */\n caption: React.ReactNode;\n /**\n * Иконка слева от текста кнопки\n */\n icon?: React.ReactElement<any>;\n width?: React.CSSProperties['width'];\n\n /** @ignore */\n _renderButton?: (params: any) => JSX.Element;\n\n /**\n * Отключает использование портала\n */\n disablePortal?: boolean;\n\n /**\n * Визуально отключает Dropdown\n */\n disabled?: boolean;\n\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n maxMenuHeight?: number;\n menuAlign?: 'left' | 'right';\n menuWidth?: number | string;\n size?: ButtonSize;\n\n /**\n * Смотри Button.\n */\n use?: ButtonUse;\n\n /**\n * Вызывается при закрытии меню.\n */\n onClose?: () => void;\n /**\n * Вызывается при открытии меню.\n */\n onOpen?: () => void;\n onMouseEnter?: (event: React.MouseEvent<HTMLElement>) => void;\n onMouseLeave?: (event: React.MouseEvent<HTMLElement>) => void;\n onMouseOver?: (event: React.MouseEvent<HTMLElement>) => void;\n}\n\ntype DropdownSelectType = Select<React.ReactNode, React.ReactNode>;\n\n/**\n * Выпадающее меню.\n *\n */\n@rootNode\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 private setRootNode!: TSetRootNode;\n\n public render() {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\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"]}
|
|
@@ -7,7 +7,7 @@ export interface HintProps extends CommonProps {
|
|
|
7
7
|
/**
|
|
8
8
|
* Переводит отображение подсказки в _"ручной режим"_.
|
|
9
9
|
*
|
|
10
|
-
* В _"ручном режиме"_
|
|
10
|
+
* В _"ручном режиме"_ подсказку можно активировать только задав значение пропу `opened`.
|
|
11
11
|
*/
|
|
12
12
|
manual?: boolean;
|
|
13
13
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Hint.tsx"],"names":["HINT_BORDER_COLOR","Positions","Hint","responsiveLayout","rootNode","state","opened","props","manual","timer","getPositions","filter","x","startsWith","pos","handleMouseEnter","e","window","setTimeout","open","onMouseEnter","handleMouseLeave","clearTimeout","setState","onMouseLeave","close","componentDidUpdate","prevProps","componentWillUnmount","render","theme","ThemeFactory","create","popupPinOffset","hintPinOffset","popupMargin","hintMargin","popupBorder","hintBorder","popupBorderRadius","hintBorderRadius","isMobileLayout","renderMobile","renderMain","children","undefined","renderContent","setRootNode","hintBgColor","disableAnimations","useWrapper","text","maxWidth","className","styles","content","contentCenter","mobileContent","React","PureComponent","__KONTUR_REACT_UI__","defaultProps","isTestEnv"],"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, PopupPositionsType } 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';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\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: 'top' | 'right' | 'bottom' | 'left' | PopupPositionsType;\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: PopupPositionsType[] = [\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 */\n@responsiveLayout\n@rootNode\nexport class Hint extends React.PureComponent<HintProps, HintState> {\n public static __KONTUR_REACT_UI__ = 'Hint';\n\n private isMobileLayout!: boolean;\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 private setRootNode!: TSetRootNode;\n\n public componentDidUpdate(prevProps: HintProps) {\n if (!this.props.manual) {\n return;\n }\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n if (this.props.opened !== prevProps.opened) {\n this.setState({ opened: !!this.props.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.isMobileLayout ? this.renderMobile() : this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMobile() {\n return (\n <CommonWrapper {...this.props}>\n <Popup\n opened={this.state.opened}\n anchorElement={this.props.children}\n positions={[]}\n onClick={!this.props.manual ? this.open : undefined}\n mobileOnCloseRequest={!this.props.manual ? this.close : undefined}\n >\n {this.renderContent()}\n </Popup>\n </CommonWrapper>\n );\n }\n\n public renderMain() {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...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 [styles.mobileContent(this.theme)]: this.isMobileLayout,\n });\n return (\n <div className={className} style={{ maxWidth: this.isMobileLayout ? '100%' : maxWidth }}>\n {this.props.text}\n </div>\n );\n }\n\n private getPositions = (): PopupPositionsType[] => {\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 close = () => {\n this.setState({ opened: false });\n };\n\n private open = () => {\n this.setState({ opened: true });\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["Hint.tsx"],"names":["HINT_BORDER_COLOR","Positions","Hint","responsiveLayout","rootNode","state","opened","props","manual","timer","getPositions","filter","x","startsWith","pos","handleMouseEnter","e","window","setTimeout","open","onMouseEnter","handleMouseLeave","clearTimeout","setState","onMouseLeave","close","componentDidUpdate","prevProps","componentWillUnmount","render","theme","ThemeFactory","create","popupPinOffset","hintPinOffset","popupMargin","hintMargin","popupBorder","hintBorder","popupBorderRadius","hintBorderRadius","isMobileLayout","renderMobile","renderMain","children","undefined","renderContent","setRootNode","hintBgColor","disableAnimations","useWrapper","text","maxWidth","className","styles","content","contentCenter","mobileContent","React","PureComponent","__KONTUR_REACT_UI__","defaultProps","isTestEnv"],"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, PopupPositionsType } 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';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\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 * В _\"ручном режиме\"_ подсказку можно активировать только задав значение пропу `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: 'top' | 'right' | 'bottom' | 'left' | PopupPositionsType;\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: PopupPositionsType[] = [\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 */\n@responsiveLayout\n@rootNode\nexport class Hint extends React.PureComponent<HintProps, HintState> {\n public static __KONTUR_REACT_UI__ = 'Hint';\n\n private isMobileLayout!: boolean;\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 private setRootNode!: TSetRootNode;\n\n public componentDidUpdate(prevProps: HintProps) {\n if (!this.props.manual) {\n return;\n }\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n if (this.props.opened !== prevProps.opened) {\n this.setState({ opened: !!this.props.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.isMobileLayout ? this.renderMobile() : this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMobile() {\n return (\n <CommonWrapper {...this.props}>\n <Popup\n opened={this.state.opened}\n anchorElement={this.props.children}\n positions={[]}\n onClick={!this.props.manual ? this.open : undefined}\n mobileOnCloseRequest={!this.props.manual ? this.close : undefined}\n >\n {this.renderContent()}\n </Popup>\n </CommonWrapper>\n );\n }\n\n public renderMain() {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...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 [styles.mobileContent(this.theme)]: this.isMobileLayout,\n });\n return (\n <div className={className} style={{ maxWidth: this.isMobileLayout ? '100%' : maxWidth }}>\n {this.props.text}\n </div>\n );\n }\n\n private getPositions = (): PopupPositionsType[] => {\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 close = () => {\n this.setState({ opened: false });\n };\n\n private open = () => {\n this.setState({ opened: true });\n };\n}\n"]}
|
|
@@ -19,11 +19,11 @@ export interface InputProps extends CommonProps, Override<React.InputHTMLAttribu
|
|
|
19
19
|
*/
|
|
20
20
|
rightIcon?: InputIconType;
|
|
21
21
|
/**
|
|
22
|
-
*
|
|
22
|
+
* Состояние валидации при ошибке.
|
|
23
23
|
*/
|
|
24
24
|
error?: boolean;
|
|
25
25
|
/**
|
|
26
|
-
*
|
|
26
|
+
* Состояние валидации при предупреждении.
|
|
27
27
|
*/
|
|
28
28
|
warning?: boolean;
|
|
29
29
|
/** Режим прозрачной рамки */
|
|
@@ -86,7 +86,7 @@ export interface InputState {
|
|
|
86
86
|
polyfillPlaceholder: boolean;
|
|
87
87
|
}
|
|
88
88
|
/**
|
|
89
|
-
*
|
|
89
|
+
* Интерфейс пропсов наследуется от `React.InputHTMLAttributes<HTMLInputElement>`.
|
|
90
90
|
* Все пропсы кроме перечисленных, `className` и `style` передаются в `<input>`
|
|
91
91
|
*/
|
|
92
92
|
export declare class Input extends React.Component<InputProps, InputState> {
|
|
@@ -108,7 +108,7 @@ var _Input = require("./Input.styles");var _excluded = ["onMouseEnter", "onMouse
|
|
|
108
108
|
|
|
109
109
|
|
|
110
110
|
/**
|
|
111
|
-
*
|
|
111
|
+
* Интерфейс пропсов наследуется от `React.InputHTMLAttributes<HTMLInputElement>`.
|
|
112
112
|
* Все пропсы кроме перечисленных, `className` и `style` передаются в `<input>`
|
|
113
113
|
*/var
|
|
114
114
|
|