@skbkontur/react-ui 4.26.0 → 4.27.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/components/Button/Button.d.ts +1 -1
- package/cjs/components/Button/Button.js +3 -2
- package/cjs/components/Button/Button.js.map +1 -1
- package/cjs/components/ComboBox/ComboBox.d.ts +2 -2
- package/cjs/components/ComboBox/ComboBox.js +1 -0
- package/cjs/components/ComboBox/ComboBox.js.map +1 -1
- package/cjs/components/CurrencyLabel/CurrencyLabel.d.ts +3 -3
- package/cjs/components/CurrencyLabel/CurrencyLabel.js +4 -3
- package/cjs/components/CurrencyLabel/CurrencyLabel.js.map +1 -1
- package/cjs/components/DateInput/DateInput.d.ts +2 -2
- package/cjs/components/DateInput/DateInput.js +2 -1
- package/cjs/components/DateInput/DateInput.js.map +1 -1
- package/cjs/components/DatePicker/DatePicker.d.ts +2 -2
- package/cjs/components/DatePicker/DatePicker.js +3 -1
- package/cjs/components/DatePicker/DatePicker.js.map +1 -1
- package/cjs/components/Dropdown/Dropdown.d.ts +2 -2
- package/cjs/components/Dropdown/Dropdown.js +2 -0
- package/cjs/components/Dropdown/Dropdown.js.map +1 -1
- package/cjs/components/DropdownMenu/DropdownMenu.d.ts +2 -2
- package/cjs/components/DropdownMenu/DropdownMenu.js +3 -1
- package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
- package/cjs/components/Kebab/Kebab.d.ts +2 -2
- package/cjs/components/Kebab/Kebab.js +3 -1
- package/cjs/components/Kebab/Kebab.js.map +1 -1
- package/cjs/components/MenuFooter/MenuFooter.d.ts +3 -3
- package/cjs/components/MenuFooter/MenuFooter.js +3 -2
- package/cjs/components/MenuFooter/MenuFooter.js.map +1 -1
- package/cjs/components/MenuHeader/MenuHeader.d.ts +3 -3
- package/cjs/components/MenuHeader/MenuHeader.js +3 -2
- package/cjs/components/MenuHeader/MenuHeader.js.map +1 -1
- package/cjs/components/MenuItem/MenuItem.d.ts +2 -2
- package/cjs/components/MenuItem/MenuItem.js +1 -0
- package/cjs/components/MenuItem/MenuItem.js.map +1 -1
- package/cjs/components/Select/Select.d.ts +2 -2
- package/cjs/components/Select/Select.js +2 -0
- package/cjs/components/Select/Select.js.map +1 -1
- package/cjs/components/TokenInput/TokenInput.d.ts +4 -3
- package/cjs/components/TokenInput/TokenInput.js +11 -4
- package/cjs/components/TokenInput/TokenInput.js.map +1 -1
- package/cjs/internal/CustomComboBox/ComboBoxView.d.ts +2 -2
- package/cjs/internal/CustomComboBox/ComboBoxView.js +5 -1
- package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
- package/cjs/internal/CustomComboBox/CustomComboBox.d.ts +2 -2
- package/cjs/internal/CustomComboBox/CustomComboBox.js +3 -1
- package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
- package/cjs/internal/PopupMenu/PopupMenu.d.ts +3 -3
- package/cjs/internal/PopupMenu/PopupMenu.js +3 -1
- package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
- package/cjs/internal/themes/Theme2022Dark.js +1 -1
- package/cjs/internal/themes/Theme2022Dark.js.map +1 -1
- package/components/Button/Button/Button.js +3 -1
- package/components/Button/Button/Button.js.map +1 -1
- package/components/Button/Button.d.ts +1 -1
- package/components/ComboBox/ComboBox/ComboBox.js.map +1 -1
- package/components/ComboBox/ComboBox.d.ts +2 -2
- package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js +4 -2
- package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js.map +1 -1
- package/components/CurrencyLabel/CurrencyLabel.d.ts +3 -3
- package/components/DateInput/DateInput/DateInput.js +1 -0
- package/components/DateInput/DateInput/DateInput.js.map +1 -1
- package/components/DateInput/DateInput.d.ts +2 -2
- package/components/DatePicker/DatePicker/DatePicker.js +3 -1
- package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
- package/components/DatePicker/DatePicker.d.ts +2 -2
- package/components/Dropdown/Dropdown/Dropdown.js +1 -0
- package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
- package/components/Dropdown/Dropdown.d.ts +2 -2
- package/components/DropdownMenu/DropdownMenu/DropdownMenu.js +1 -0
- package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
- package/components/DropdownMenu/DropdownMenu.d.ts +2 -2
- package/components/Kebab/Kebab/Kebab.js +1 -0
- package/components/Kebab/Kebab/Kebab.js.map +1 -1
- package/components/Kebab/Kebab.d.ts +2 -2
- package/components/MenuFooter/MenuFooter/MenuFooter.js +4 -2
- package/components/MenuFooter/MenuFooter/MenuFooter.js.map +1 -1
- package/components/MenuFooter/MenuFooter.d.ts +3 -3
- package/components/MenuHeader/MenuHeader/MenuHeader.js +4 -2
- package/components/MenuHeader/MenuHeader/MenuHeader.js.map +1 -1
- package/components/MenuHeader/MenuHeader.d.ts +3 -3
- package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
- package/components/MenuItem/MenuItem.d.ts +2 -2
- package/components/Select/Select/Select.js +1 -0
- package/components/Select/Select/Select.js.map +1 -1
- package/components/Select/Select.d.ts +2 -2
- package/components/TokenInput/TokenInput/TokenInput.js +9 -2
- package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
- package/components/TokenInput/TokenInput.d.ts +4 -3
- package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +3 -0
- package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
- package/internal/CustomComboBox/ComboBoxView.d.ts +2 -2
- package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js +1 -0
- package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
- package/internal/CustomComboBox/CustomComboBox.d.ts +2 -2
- package/internal/PopupMenu/PopupMenu/PopupMenu.js +2 -1
- package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
- package/internal/PopupMenu/PopupMenu.d.ts +3 -3
- package/internal/themes/Theme2022Dark/Theme2022Dark.js +1 -1
- package/internal/themes/Theme2022Dark/Theme2022Dark.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Button.tsx"],"names":["React","globalObject","isKonturIcon","isReactUIComponent","isIE11","isEdge","isSafari","keyListener","ThemeContext","CommonWrapper","cx","rootNode","ThemeFactory","createPropsGetter","isTheme2022","Link","styles","activeStyles","globalClasses","ButtonIcon","getButtonIconSizes","useButtonArrow","getInnerLinkTheme","LoadingButtonIcon","ButtonDataTids","rootElement","root","spinner","Button","getProps","defaultProps","state","focusedByTab","node","handleFocus","e","props","disabled","disableFocus","requestAnimationFrame","isTabPressed","setState","onFocus","handleBlur","onBlur","_ref","componentDidMount","autoFocus","focus","getDerivedStateFromProps","loading","blur","render","theme","create","renderMain","renderLinkRootWithoutHandlers","onClick","children","rest","corners","active","borderless","checked","error","warning","narrow","icon","rightIcon","_noPadding","_noRightPadding","visuallyFocused","align","onMouseEnter","onMouseLeave","onMouseOver","onMouseDown","onMouseUp","onKeyDown","onClickCapture","width","ariaDescribedby","ariaHasPopup","ariaControls","ariaLabel","ariaChecked","ariaExpanded","role","use","type","size","sizeClass","getSizeClassName","isFocused","isLink","_isTheme2022","Boolean","wrapClassNameWithArrow","rootClassNameWithArrow","arrowNode","isUseStateWithoutOutlineInDisabledState","includes","rootClassName","trueDisabled","noPadding","noRightPadding","disabledWithoutOutline","checkedDisabled","checkedDisabled2022","borderless2022","backlessDisabled2022","textDisabled2022","checked2022","checkedFocused","simulatedPress","rootProps","className","style","textAlign","tabIndex","title","wrapProps","wrap","getSizeWrapClassName","innerShadowNode","innerShadow","outlineNode","isDisabled2022","zIndex","undefined","outline","outlineWarning","outlineError","outlineLink","outlineLinkWarning","outlineLinkError","iconProps","hasChildren","leftIconNode","rightIconNode","link","linkLineHeight","linkLineHeightSafariFallback","linkFocus","linkDisabled","Object","assign","wrapLink","hasLoadingNode","loadingNode","captionNode","caption","captionTranslated","captionLink","captionDisabled","text","visibilityHidden","renderIcon2022","setRootNode","sizes","cloneElement","sizeLarge","sizeLargeIE11","sizeLargeWithIcon","sizeLargeWithIconWithoutText","sizeMedium","sizeMediumIE11","sizeMediumWithIcon","sizeMediumWithIconWithoutText","sizeSmall","sizeSmallIE11","sizeSmallWithIcon","sizeSmallWithIconWithoutText","wrapLarge","wrapMedium","wrapSmall","Component","__KONTUR_REACT_UI__","displayName","__BUTTON__","isButton"],"mappings":"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","sourcesContent":["import React, { AriaAttributes, HTMLAttributes } from 'react';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { HTMLProps } from '../../typings/html';\nimport { isKonturIcon, isReactUIComponent } from '../../lib/utils';\nimport { isIE11, isEdge, isSafari } from '../../lib/client';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme, ThemeIn } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { Link, LinkProps } from '../Link';\nimport { SizeProp } from '../../lib/types/props';\n\nimport { styles, activeStyles, globalClasses } from './Button.styles';\nimport { ButtonIcon, ButtonIconProps, getButtonIconSizes } from './ButtonIcon';\nimport { useButtonArrow } from './ButtonArrow';\nimport { getInnerLinkTheme } from './getInnerLinkTheme';\nimport { LoadingButtonIcon } from './LoadingButtonIcon';\n\n/**\n * @deprecated use SizeProp\n */\nexport type ButtonSize = SizeProp;\nexport type ButtonType = 'button' | 'submit' | 'reset';\nexport type ButtonUse = 'default' | 'primary' | 'success' | 'danger' | 'pay' | 'link' | 'text' | 'backless';\n\nexport interface ButtonProps\n extends CommonProps,\n Pick<\n AriaAttributes,\n 'aria-haspopup' | 'aria-describedby' | 'aria-controls' | 'aria-label' | 'aria-checked' | 'aria-expanded'\n >,\n Pick<HTMLAttributes<unknown>, 'role'>,\n Pick<HTMLProps['button'], 'onClickCapture' | 'onMouseUp' | 'onMouseDown'> {\n /** @ignore */\n _noPadding?: boolean;\n\n /** @ignore */\n _noRightPadding?: boolean;\n\n /**\n * Применяет к кнопке стили псевдокласса `:active`.\n */\n active?: boolean;\n\n /**\n * CSS-свойство `text-align`.\n */\n align?: React.CSSProperties['textAlign'];\n\n /**\n * Превращает обычную кнопку в кнопку со стрелкой.\n */\n arrow?: boolean | 'left';\n\n /**\n * Даёт кнопке фокус после окончания загрузки страницы.\n */\n autoFocus?: boolean;\n\n /**\n * Убирает обводку у кнопки.\n */\n borderless?: boolean;\n\n /**\n * @ignore\n */\n checked?: boolean;\n\n children?: React.ReactNode;\n\n /** @ignore */\n corners?: React.CSSProperties;\n\n /**\n * Отключенное состояние кнопки.\n */\n disabled?: boolean;\n\n /** @ignore */\n disableFocus?: boolean;\n\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n\n /**\n * Иконка слева от текста кнопки.\n */\n icon?: React.ReactElement;\n\n /**\n * Иконка справа от текста кнопки.\n */\n rightIcon?: React.ReactElement;\n\n /**\n * Переводит кнопку в состояние загрузки.\n */\n loading?: boolean;\n\n /**\n * Сужает кнопку.\n */\n narrow?: boolean;\n\n /**\n * HTML-событие `onblur`.\n */\n onBlur?: React.FocusEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onclick`.\n */\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onfocus`.\n */\n onFocus?: React.FocusEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `keydown`.\n */\n onKeyDown?: React.KeyboardEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onmouseenter`.\n */\n onMouseEnter?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onmouseover`.\n */\n onMouseOver?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * Задаёт размер кнопки.\n *\n * **Допустимые значения**: `\"small\"`, `\"medium\"`, `\"large\"`.\n */\n size?: SizeProp;\n\n /**\n * HTML-атрибут `type`.\n */\n type?: ButtonType;\n\n /**\n * HTML-атрибут `title`.\n */\n title?: string;\n\n /**\n * Стиль кнопки.\n *\n * **Допустимые значения**: `\"default\"`, `\"primary\"`, `\"success\"`, `\"danger\"`, `\"pay\"`, `\"link\"`, `\"text\"`, `\"backless\"`.\n */\n use?: ButtonUse;\n\n /** @ignore */\n visuallyFocused?: boolean;\n\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n\n /**\n * CSS-свойство `width`.\n */\n width?: number | string;\n\n /**\n * Обычный объект с переменными темы.\n * Он будет объединён с темой из контекста.\n */\n theme?: ThemeIn;\n}\n\nexport interface ButtonState {\n focusedByTab: boolean;\n}\n\nexport const ButtonDataTids = {\n rootElement: 'Button__rootElement',\n root: 'Button__root',\n spinner: 'Button__spinner',\n} as const;\n\ntype DefaultProps = Required<Pick<ButtonProps, 'use' | 'size' | 'type'>>;\n\n@rootNode\nexport class Button extends React.Component<ButtonProps, ButtonState> {\n public static __KONTUR_REACT_UI__ = 'Button';\n public static displayName = 'Button';\n public static __BUTTON__ = true;\n\n public static defaultProps: DefaultProps = {\n use: 'default',\n size: 'small',\n type: 'button',\n };\n\n private getProps = createPropsGetter(Button.defaultProps);\n\n public state = {\n focusedByTab: false,\n };\n\n private theme!: Theme;\n private node: HTMLButtonElement | null = null;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n if (this.props.autoFocus) {\n keyListener.isTabPressed = true;\n this.focus();\n }\n }\n\n public static getDerivedStateFromProps(props: ButtonProps) {\n if (props.loading || props.disabled) {\n return { focusedByTab: false };\n }\n return null;\n }\n\n /**\n * @public\n */\n public focus() {\n this.node?.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n this.node?.blur();\n }\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = this.props.theme ? ThemeFactory.create(this.props.theme as Theme, theme) : theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderLinkRootWithoutHandlers(props: LinkProps) {\n const { onClick, onFocus, onBlur, children, ...rest } = props;\n return <span {...rest}>{children}</span>;\n }\n\n private renderMain() {\n const {\n corners,\n active,\n disabled,\n borderless,\n checked,\n error,\n warning,\n loading,\n narrow,\n icon,\n rightIcon,\n _noPadding,\n _noRightPadding,\n visuallyFocused,\n align,\n disableFocus,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onMouseDown,\n onMouseUp,\n onKeyDown,\n onClick,\n onClickCapture,\n width,\n children,\n 'aria-describedby': ariaDescribedby,\n 'aria-haspopup': ariaHasPopup,\n 'aria-controls': ariaControls,\n 'aria-label': ariaLabel,\n 'aria-checked': ariaChecked,\n 'aria-expanded': ariaExpanded,\n role,\n } = this.props;\n const { use, type, size } = this.getProps();\n const sizeClass = this.getSizeClassName();\n\n const isFocused = this.state.focusedByTab || visuallyFocused;\n const isLink = use === 'link';\n const _isTheme2022 = isTheme2022(this.theme);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const [wrapClassNameWithArrow, rootClassNameWithArrow, arrowNode] = useButtonArrow(\n { ...this.props, isFocused: Boolean(isFocused) },\n this.theme,\n );\n const isUseStateWithoutOutlineInDisabledState = !['default', 'backless'].includes(use);\n let rootClassName = '';\n if (_isTheme2022) {\n const trueDisabled = disabled || loading;\n rootClassName = cx(\n styles.root(this.theme),\n styles[use](this.theme),\n sizeClass,\n narrow && styles.narrow(),\n _noPadding && styles.noPadding(),\n _noRightPadding && styles.noRightPadding(),\n rootClassNameWithArrow,\n ...(trueDisabled\n ? [\n styles.disabled(this.theme),\n isUseStateWithoutOutlineInDisabledState && styles.disabledWithoutOutline(this.theme),\n checked && styles.checkedDisabled(this.theme),\n checked && styles.checkedDisabled2022(this.theme),\n borderless && styles.borderless2022(),\n use === 'backless' && !checked && styles.backlessDisabled2022(this.theme),\n use === 'text' && styles.textDisabled2022(),\n ]\n : [\n active && !checked && activeStyles[use](this.theme),\n isFocused && styles.focus(this.theme),\n checked && styles.checked2022(this.theme),\n checked && isFocused && styles.checkedFocused(this.theme),\n borderless && !checked && !isFocused && styles.borderless2022(),\n ]),\n );\n } else {\n rootClassName = cx({\n [styles.root(this.theme)]: true,\n [styles.simulatedPress()]: true,\n [styles[use](this.theme)]: true,\n [activeStyles[use](this.theme)]: active,\n [sizeClass]: true,\n [styles.focus(this.theme)]: isFocused,\n [styles.checked(this.theme)]: checked,\n [styles.checkedFocused(this.theme)]: checked && isFocused,\n [styles.disabled(this.theme)]: disabled || loading,\n [styles.checkedDisabled(this.theme)]: checked && disabled,\n [styles.borderless()]: borderless && !disabled && !loading && !checked && !isFocused && !active,\n [styles.narrow()]: narrow,\n [styles.noPadding()]: _noPadding,\n [styles.noRightPadding()]: _noRightPadding,\n });\n }\n\n const rootProps = {\n // By default the type attribute is 'submit'. IE8 will fire a click event\n // on this button if somewhere on the page user presses Enter while some\n // input is focused. So we set type to 'button' by default.\n type,\n role,\n 'aria-describedby': ariaDescribedby,\n 'aria-haspopup': ariaHasPopup,\n 'aria-controls': ariaControls,\n 'aria-label': ariaLabel,\n 'aria-checked': ariaChecked,\n 'aria-expanded': ariaExpanded,\n className: rootClassName,\n style: {\n textAlign: align,\n ...corners,\n },\n disabled: disabled || loading,\n onClick,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onKeyDown,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onMouseDown,\n onMouseUp,\n onClickCapture,\n tabIndex: disableFocus ? -1 : 0,\n title: this.props.title,\n };\n\n const wrapProps = {\n className: cx(globalClasses.root, {\n [styles.wrap(this.theme)]: true,\n [wrapClassNameWithArrow]: true,\n [this.getSizeWrapClassName()]: true,\n }),\n style: {\n width,\n },\n };\n\n const innerShadowNode = _isTheme2022 ? null : <div className={globalClasses.innerShadow} />;\n\n let outlineNode = null;\n const isDisabled2022 = _isTheme2022 && (disabled || loading);\n if ((!isFocused || isLink) && !isDisabled2022) {\n outlineNode = (\n <div\n style={{ zIndex: _isTheme2022 && isLink ? -1 : undefined }}\n className={cx(styles.outline(), {\n [styles.outlineWarning(this.theme)]: warning,\n [styles.outlineError(this.theme)]: error,\n [styles.outlineLink()]: isLink,\n [styles.outlineLinkWarning(this.theme)]: isLink && warning,\n [styles.outlineLinkError(this.theme)]: isLink && error,\n })}\n />\n );\n }\n\n const iconProps: Omit<ButtonIconProps, 'position'> = {\n use,\n size: this.getProps().size,\n hasChildren: !!children,\n loading: loading || false,\n };\n const leftIconNode = icon && <ButtonIcon {...iconProps} position=\"left\" icon={icon} />;\n const rightIconNode = rightIcon && (\n <ButtonIcon {...iconProps} hasBothIcons={!!icon && !!rightIcon} position=\"right\" icon={rightIcon} />\n );\n\n // Force disable all props and features, that cannot be use with Link\n if (isLink) {\n rootProps.className = cx({\n [styles.root(this.theme)]: true,\n [sizeClass]: true,\n [styles.link(this.theme)]: true,\n [styles.linkLineHeight()]: !isSafari || (isSafari && !_isTheme2022),\n [styles.linkLineHeightSafariFallback()]: isSafari && _isTheme2022,\n [styles.linkFocus(this.theme)]: isFocused,\n [styles.linkDisabled(this.theme)]: disabled || loading,\n });\n Object.assign(wrapProps, {\n className: cx(styles.wrap(this.theme), styles.wrapLink()),\n style: { width: wrapProps.style.width },\n });\n rootProps.style.textAlign = undefined;\n }\n\n const hasLoadingNode = loading && !icon && !rightIcon;\n const loadingNode = hasLoadingNode && <LoadingButtonIcon size={size} />;\n\n let captionNode = (\n <div\n className={cx(styles.caption(), globalClasses.caption, {\n [styles.captionTranslated()]: (active || checked) && !loading && !_isTheme2022,\n [styles.captionLink()]: isLink,\n [styles.captionDisabled()]: !checked && disabled,\n })}\n >\n {loadingNode}\n {leftIconNode}\n <span\n className={cx(globalClasses.text, {\n [styles.visibilityHidden()]: hasLoadingNode,\n })}\n >\n {children}\n </span>\n {rightIconNode}\n </div>\n );\n if (_isTheme2022 && isLink && !loading) {\n captionNode = (\n <ThemeContext.Provider value={getInnerLinkTheme(this.theme)}>\n <Link\n focused={isFocused}\n disabled={disabled}\n icon={this.renderIcon2022(icon)}\n rightIcon={this.renderIcon2022(rightIcon)}\n as={this.renderLinkRootWithoutHandlers}\n tabIndex={-1}\n >\n {children}\n </Link>\n </ThemeContext.Provider>\n );\n }\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <span {...wrapProps} data-tid={ButtonDataTids.rootElement}>\n <button data-tid={ButtonDataTids.root} ref={this._ref} {...rootProps}>\n {innerShadowNode}\n {outlineNode}\n {arrowNode}\n {captionNode}\n </button>\n </span>\n </CommonWrapper>\n );\n }\n\n private renderIcon2022(icon: React.ReactElement | undefined) {\n if (icon && isKonturIcon(icon)) {\n const sizes = getButtonIconSizes(this.theme);\n return React.cloneElement(icon, { size: icon.props.size ?? sizes[this.getProps().size] });\n }\n\n return icon;\n }\n\n private getSizeClassName() {\n const _isTheme2022 = isTheme2022(this.theme);\n switch (this.getProps().size) {\n case 'large':\n return cx(styles.sizeLarge(this.theme), {\n [styles.sizeLargeIE11(this.theme)]: isIE11 || isEdge,\n [styles.sizeLargeWithIcon(this.theme)]: !!this.props.icon,\n [styles.sizeLargeWithIconWithoutText(this.theme)]: _isTheme2022 && !!this.props.icon && !this.props.children,\n });\n case 'medium':\n return cx(styles.sizeMedium(this.theme), {\n [styles.sizeMediumIE11(this.theme)]: isIE11 || isEdge,\n [styles.sizeMediumWithIcon(this.theme)]: !!this.props.icon,\n [styles.sizeMediumWithIconWithoutText(this.theme)]: _isTheme2022 && !!this.props.icon && !this.props.children,\n });\n case 'small':\n default:\n return cx(styles.sizeSmall(this.theme), {\n [styles.sizeSmallIE11(this.theme)]: isIE11 || isEdge,\n [styles.sizeSmallWithIcon(this.theme)]: !!this.props.icon,\n [styles.sizeSmallWithIconWithoutText(this.theme)]: _isTheme2022 && !!this.props.icon && !this.props.children,\n });\n }\n }\n\n private getSizeWrapClassName() {\n switch (this.getProps().size) {\n case 'large':\n return styles.wrapLarge(this.theme);\n case 'medium':\n return styles.wrapMedium(this.theme);\n case 'small':\n default:\n return styles.wrapSmall(this.theme);\n }\n }\n\n private handleFocus = (e: React.FocusEvent<HTMLButtonElement>) => {\n if (!this.props.disabled && !this.props.disableFocus) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n globalObject.requestAnimationFrame?.(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n this.props.onFocus?.(e);\n }\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLButtonElement>) => {\n this.setState({ focusedByTab: false });\n if (!this.props.disabled && !this.props.disableFocus) {\n this.props.onBlur?.(e);\n }\n };\n\n private _ref = (node: HTMLButtonElement | null) => {\n this.node = node;\n };\n}\n\nexport const isButton = isReactUIComponent<ButtonProps>('Button');\n"]}
|
|
1
|
+
{"version":3,"sources":["Button.tsx"],"names":["React","globalObject","isKonturIcon","isReactUIComponent","isIE11","isEdge","isSafari","keyListener","ThemeContext","CommonWrapper","cx","rootNode","ThemeFactory","createPropsGetter","isTheme2022","Link","styles","activeStyles","globalClasses","ButtonIcon","getButtonIconSizes","useButtonArrow","getInnerLinkTheme","LoadingButtonIcon","ButtonDataTids","rootElement","root","spinner","Button","getProps","defaultProps","state","focusedByTab","node","handleFocus","e","props","disabled","disableFocus","requestAnimationFrame","isTabPressed","setState","onFocus","handleBlur","onBlur","_ref","componentDidMount","autoFocus","focus","getDerivedStateFromProps","loading","blur","render","theme","create","renderMain","renderLinkRootWithoutHandlers","onClick","children","rest","corners","active","borderless","checked","error","warning","narrow","icon","rightIcon","_noPadding","_noRightPadding","visuallyFocused","align","onMouseEnter","onMouseLeave","onMouseOver","onMouseDown","onMouseUp","onKeyDown","onClickCapture","width","ariaDescribedby","ariaHasPopup","ariaControls","ariaLabel","ariaChecked","ariaExpanded","role","id","use","type","size","sizeClass","getSizeClassName","isFocused","isLink","_isTheme2022","Boolean","wrapClassNameWithArrow","rootClassNameWithArrow","arrowNode","isUseStateWithoutOutlineInDisabledState","includes","rootClassName","trueDisabled","noPadding","noRightPadding","disabledWithoutOutline","checkedDisabled","checkedDisabled2022","borderless2022","backlessDisabled2022","textDisabled2022","checked2022","checkedFocused","simulatedPress","rootProps","className","style","textAlign","tabIndex","title","wrapProps","wrap","getSizeWrapClassName","innerShadowNode","innerShadow","outlineNode","isDisabled2022","zIndex","undefined","outline","outlineWarning","outlineError","outlineLink","outlineLinkWarning","outlineLinkError","iconProps","hasChildren","leftIconNode","rightIconNode","link","linkLineHeight","linkLineHeightSafariFallback","linkFocus","linkDisabled","Object","assign","wrapLink","hasLoadingNode","loadingNode","captionNode","caption","captionTranslated","captionLink","captionDisabled","text","visibilityHidden","renderIcon2022","setRootNode","sizes","cloneElement","sizeLarge","sizeLargeIE11","sizeLargeWithIcon","sizeLargeWithIconWithoutText","sizeMedium","sizeMediumIE11","sizeMediumWithIcon","sizeMediumWithIconWithoutText","sizeSmall","sizeSmallIE11","sizeSmallWithIcon","sizeSmallWithIconWithoutText","wrapLarge","wrapMedium","wrapSmall","Component","__KONTUR_REACT_UI__","displayName","__BUTTON__","isButton"],"mappings":"4TAAA,OAAOA,KAAP,MAAsD,OAAtD;AACA,SAASC,YAAT,QAA6B,0BAA7B;;;AAGA,SAASC,YAAT,EAAuBC,kBAAvB,QAAiD,iBAAjD;AACA,SAASC,MAAT,EAAiBC,MAAjB,EAAyBC,QAAzB,QAAyC,kBAAzC;AACA,SAASC,WAAT,QAA4B,8BAA5B;;AAEA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAASC,aAAT,QAA2C,8BAA3C;AACA,SAASC,EAAT,QAAmB,2BAAnB;AACA,SAASC,QAAT,QAAuC,oBAAvC;AACA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAASC,iBAAT,QAAkC,6BAAlC;AACA,SAASC,WAAT,QAA4B,gCAA5B;AACA,SAASC,IAAT,QAAgC,SAAhC;;;AAGA,SAASC,MAAT,EAAiBC,YAAjB,EAA+BC,aAA/B,QAAoD,iBAApD;AACA,SAASC,UAAT,EAAsCC,kBAAtC,QAAgE,cAAhE;AACA,SAASC,cAAT,QAA+B,eAA/B;AACA,SAASC,iBAAT,QAAkC,qBAAlC;AACA,SAASC,iBAAT,QAAkC,qBAAlC;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0KA,OAAO,IAAMC,cAAc,GAAG;AAC5BC,EAAAA,WAAW,EAAE,qBADe;AAE5BC,EAAAA,IAAI,EAAE,cAFsB;AAG5BC,EAAAA,OAAO,EAAE,iBAHmB,EAAvB;;;;;;AASP,WAAaC,MAAb,GADCjB,QACD;;;;;;;;;;;AAWUkB,IAAAA,QAXV,GAWqBhB,iBAAiB,CAACe,MAAM,CAACE,YAAR,CAXtC;;AAaSC,IAAAA,KAbT,GAaiB;AACbC,MAAAA,YAAY,EAAE,KADD,EAbjB;;;;AAkBUC,IAAAA,IAlBV,GAkB2C,IAlB3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkWUC,IAAAA,WAlWV,GAkWwB,UAACC,CAAD,EAA4C;AAChE,UAAI,CAAC,MAAKC,KAAL,CAAWC,QAAZ,IAAwB,CAAC,MAAKD,KAAL,CAAWE,YAAxC,EAAsD;AACpD;AACA;AACArC,QAAAA,YAAY,CAACsC,qBAAb,oBAAAtC,YAAY,CAACsC,qBAAb,CAAqC,YAAM;AACzC,cAAIhC,WAAW,CAACiC,YAAhB,EAA8B;AAC5B,kBAAKC,QAAL,CAAc,EAAET,YAAY,EAAE,IAAhB,EAAd;AACD;AACF,SAJD;AAKA,cAAKI,KAAL,CAAWM,OAAX,0BAAKN,KAAL,CAAWM,OAAX,CAAqBP,CAArB;AACD;AACF,KA7WH;;AA+WUQ,IAAAA,UA/WV,GA+WuB,UAACR,CAAD,EAA4C;AAC/D,YAAKM,QAAL,CAAc,EAAET,YAAY,EAAE,KAAhB,EAAd;AACA,UAAI,CAAC,MAAKI,KAAL,CAAWC,QAAZ,IAAwB,CAAC,MAAKD,KAAL,CAAWE,YAAxC,EAAsD;AACpD,cAAKF,KAAL,CAAWQ,MAAX,0BAAKR,KAAL,CAAWQ,MAAX,CAAoBT,CAApB;AACD;AACF,KApXH;;AAsXUU,IAAAA,IAtXV,GAsXiB,UAACZ,IAAD,EAAoC;AACjD,YAAKA,IAAL,GAAYA,IAAZ;AACD,KAxXH,oDAqBSa,iBArBT,GAqBE,6BAA2B,CACzB,IAAI,KAAKV,KAAL,CAAWW,SAAf,EAA0B,CACxBxC,WAAW,CAACiC,YAAZ,GAA2B,IAA3B,CACA,KAAKQ,KAAL,GACD,CACF,CA1BH,QA4BgBC,wBA5BhB,GA4BE,kCAAuCb,KAAvC,EAA2D,CACzD,IAAIA,KAAK,CAACc,OAAN,IAAiBd,KAAK,CAACC,QAA3B,EAAqC,CACnC,OAAO,EAAEL,YAAY,EAAE,KAAhB,EAAP,CACD,CACD,OAAO,IAAP,CACD,CAjCH,CAmCE;AACF;AACA,KArCA,QAsCSgB,KAtCT,GAsCE,iBAAe,gBACb,mBAAKf,IAAL,gCAAWe,KAAX,GACD,CAxCH,CA0CE;AACF;AACA,KA5CA,QA6CSG,IA7CT,GA6CE,gBAAc,iBACZ,oBAAKlB,IAAL,iCAAWkB,IAAX,GACD,CA/CH,QAiDSC,MAjDT,GAiDE,kBAA6B,mBAC3B,oBACE,oBAAC,YAAD,CAAc,QAAd,QACG,UAACC,KAAD,EAAW,CACV,MAAI,CAACA,KAAL,GAAa,MAAI,CAACjB,KAAL,CAAWiB,KAAX,GAAmBzC,YAAY,CAAC0C,MAAb,CAAoB,MAAI,CAAClB,KAAL,CAAWiB,KAA/B,EAA+CA,KAA/C,CAAnB,GAA2EA,KAAxF,CACA,OAAO,MAAI,CAACE,UAAL,EAAP,CACD,CAJH,CADF,CAQD,CA1DH,QA4DUC,6BA5DV,GA4DE,uCAAsCpB,KAAtC,EAAwD,CACtD,IAAQqB,OAAR,GAAwDrB,KAAxD,CAAQqB,OAAR,CAAiBf,OAAjB,GAAwDN,KAAxD,CAAiBM,OAAjB,CAA0BE,MAA1B,GAAwDR,KAAxD,CAA0BQ,MAA1B,CAAkCc,QAAlC,GAAwDtB,KAAxD,CAAkCsB,QAAlC,CAA+CC,IAA/C,iCAAwDvB,KAAxD,aACA,oBAAO,4BAAUuB,IAAV,EAAiBD,QAAjB,CAAP,CACD,CA/DH,QAiEUH,UAjEV,GAiEE,sBAAqB,sBACnB,kBAmCI,KAAKnB,KAnCT,CACEwB,OADF,eACEA,OADF,CAEEC,MAFF,eAEEA,MAFF,CAGExB,QAHF,eAGEA,QAHF,CAIEyB,UAJF,eAIEA,UAJF,CAKEC,OALF,eAKEA,OALF,CAMEC,KANF,eAMEA,KANF,CAOEC,OAPF,eAOEA,OAPF,CAQEf,OARF,eAQEA,OARF,CASEgB,MATF,eASEA,MATF,CAUEC,IAVF,eAUEA,IAVF,CAWEC,SAXF,eAWEA,SAXF,CAYEC,UAZF,eAYEA,UAZF,CAaEC,eAbF,eAaEA,eAbF,CAcEC,eAdF,eAcEA,eAdF,CAeEC,KAfF,eAeEA,KAfF,CAgBElC,YAhBF,eAgBEA,YAhBF,CAiBEmC,YAjBF,eAiBEA,YAjBF,CAkBEC,YAlBF,eAkBEA,YAlBF,CAmBEC,WAnBF,eAmBEA,WAnBF,CAoBEC,WApBF,eAoBEA,WApBF,CAqBEC,SArBF,eAqBEA,SArBF,CAsBEC,SAtBF,eAsBEA,SAtBF,CAuBErB,OAvBF,eAuBEA,OAvBF,CAwBEsB,cAxBF,eAwBEA,cAxBF,CAyBEC,KAzBF,eAyBEA,KAzBF,CA0BEtB,QA1BF,eA0BEA,QA1BF,CA2BsBuB,eA3BtB,eA2BE,kBA3BF,EA4BmBC,YA5BnB,eA4BE,eA5BF,EA6BmBC,YA7BnB,eA6BE,eA7BF,EA8BgBC,SA9BhB,eA8BE,YA9BF,EA+BkBC,WA/BlB,eA+BE,cA/BF,EAgCmBC,YAhCnB,eAgCE,eAhCF,EAiCEC,IAjCF,eAiCEA,IAjCF,CAkCEC,EAlCF,eAkCEA,EAlCF,CAoCA,qBAA4B,KAAK3D,QAAL,EAA5B,CAAQ4D,GAAR,kBAAQA,GAAR,CAAaC,IAAb,kBAAaA,IAAb,CAAmBC,IAAnB,kBAAmBA,IAAnB,CACA,IAAMC,SAAS,GAAG,KAAKC,gBAAL,EAAlB,CAEA,IAAMC,SAAS,GAAG,KAAK/D,KAAL,CAAWC,YAAX,IAA2BuC,eAA7C,CACA,IAAMwB,MAAM,GAAGN,GAAG,KAAK,MAAvB,CACA,IAAMO,YAAY,GAAGlF,WAAW,CAAC,KAAKuC,KAAN,CAAhC,CA1CmB,CA4CnB;AACA,0BAAoEhC,cAAc,cAC3E,KAAKe,KADsE,IAC/D0D,SAAS,EAAEG,OAAO,CAACH,SAAD,CAD6C,KAEhF,KAAKzC,KAF2E,CAAlF,CAAO6C,sBAAP,sBAA+BC,sBAA/B,sBAAuDC,SAAvD,sBAIA,IAAMC,uCAAuC,GAAG,CAAC,CAAC,SAAD,EAAY,UAAZ,EAAwBC,QAAxB,CAAiCb,GAAjC,CAAjD,CACA,IAAIc,aAAa,GAAG,EAApB,CACA,IAAIP,YAAJ,EAAkB,CAChB,IAAMQ,YAAY,GAAGnE,QAAQ,IAAIa,OAAjC,CACAqD,aAAa,GAAG7F,EAAE,MAAF,UACdM,MAAM,CAACU,IAAP,CAAY,KAAK2B,KAAjB,CADc,EAEdrC,MAAM,CAACyE,GAAD,CAAN,CAAY,KAAKpC,KAAjB,CAFc,EAGduC,SAHc,EAId1B,MAAM,IAAIlD,MAAM,CAACkD,MAAP,EAJI,EAKdG,UAAU,IAAIrD,MAAM,CAACyF,SAAP,EALA,EAMdnC,eAAe,IAAItD,MAAM,CAAC0F,cAAP,EANL,EAOdP,sBAPc,SAQVK,YAAY,GACZ,CACExF,MAAM,CAACqB,QAAP,CAAgB,KAAKgB,KAArB,CADF,EAEEgD,uCAAuC,IAAIrF,MAAM,CAAC2F,sBAAP,CAA8B,KAAKtD,KAAnC,CAF7C,EAGEU,OAAO,IAAI/C,MAAM,CAAC4F,eAAP,CAAuB,KAAKvD,KAA5B,CAHb,EAIEU,OAAO,IAAI/C,MAAM,CAAC6F,mBAAP,CAA2B,KAAKxD,KAAhC,CAJb,EAKES,UAAU,IAAI9C,MAAM,CAAC8F,cAAP,EALhB,EAMErB,GAAG,KAAK,UAAR,IAAsB,CAAC1B,OAAvB,IAAkC/C,MAAM,CAAC+F,oBAAP,CAA4B,KAAK1D,KAAjC,CANpC,EAOEoC,GAAG,KAAK,MAAR,IAAkBzE,MAAM,CAACgG,gBAAP,EAPpB,CADY,GAUZ,CACEnD,MAAM,IAAI,CAACE,OAAX,IAAsB9C,YAAY,CAACwE,GAAD,CAAZ,CAAkB,KAAKpC,KAAvB,CADxB,EAEEyC,SAAS,IAAI9E,MAAM,CAACgC,KAAP,CAAa,KAAKK,KAAlB,CAFf,EAGEU,OAAO,IAAI/C,MAAM,CAACiG,WAAP,CAAmB,KAAK5D,KAAxB,CAHb,EAIEU,OAAO,IAAI+B,SAAX,IAAwB9E,MAAM,CAACkG,cAAP,CAAsB,KAAK7D,KAA3B,CAJ1B,EAKES,UAAU,IAAI,CAACC,OAAf,IAA0B,CAAC+B,SAA3B,IAAwC9E,MAAM,CAAC8F,cAAP,EAL1C,CAlBU,EAAhB,CA0BD,CA5BD,MA4BO,SACLP,aAAa,GAAG7F,EAAE,gBACfM,MAAM,CAACU,IAAP,CAAY,KAAK2B,KAAjB,CADe,IACW,IADX,MAEfrC,MAAM,CAACmG,cAAP,EAFe,IAEW,IAFX,MAGfnG,MAAM,CAACyE,GAAD,CAAN,CAAY,KAAKpC,KAAjB,CAHe,IAGW,IAHX,MAIfpC,YAAY,CAACwE,GAAD,CAAZ,CAAkB,KAAKpC,KAAvB,CAJe,IAIiBQ,MAJjB,MAKf+B,SALe,IAKH,IALG,MAMf5E,MAAM,CAACgC,KAAP,CAAa,KAAKK,KAAlB,CANe,IAMYyC,SANZ,MAOf9E,MAAM,CAAC+C,OAAP,CAAe,KAAKV,KAApB,CAPe,IAOcU,OAPd,MAQf/C,MAAM,CAACkG,cAAP,CAAsB,KAAK7D,KAA3B,CARe,IAQqBU,OAAO,IAAI+B,SARhC,MASf9E,MAAM,CAACqB,QAAP,CAAgB,KAAKgB,KAArB,CATe,IASehB,QAAQ,IAAIa,OAT3B,MAUflC,MAAM,CAAC4F,eAAP,CAAuB,KAAKvD,KAA5B,CAVe,IAUsBU,OAAO,IAAI1B,QAVjC,MAWfrB,MAAM,CAAC8C,UAAP,EAXe,IAWOA,UAAU,IAAI,CAACzB,QAAf,IAA2B,CAACa,OAA5B,IAAuC,CAACa,OAAxC,IAAmD,CAAC+B,SAApD,IAAiE,CAACjC,MAXzE,MAYf7C,MAAM,CAACkD,MAAP,EAZe,IAYGA,MAZH,MAaflD,MAAM,CAACyF,SAAP,EAbe,IAaMpC,UAbN,MAcfrD,MAAM,CAAC0F,cAAP,EAde,IAcWpC,eAdX,OAAlB,CAgBD,CAED,IAAM8C,SAAS,GAAG,EAChB;AACA;AACA;AACA1B,MAAAA,IAAI,EAAJA,IAJgB,EAKhBH,IAAI,EAAJA,IALgB,EAMhB,oBAAoBN,eANJ,EAOhB,iBAAiBC,YAPD,EAQhB,iBAAiBC,YARD,EAShB,cAAcC,SATE,EAUhB,gBAAgBC,WAVA,EAWhB,iBAAiBC,YAXD,EAYhB+B,SAAS,EAAEd,aAZK,EAahBe,KAAK,aACHC,SAAS,EAAE/C,KADR,IAEAZ,OAFA,CAbW,EAiBhBvB,QAAQ,EAAEA,QAAQ,IAAIa,OAjBN,EAkBhBO,OAAO,EAAPA,OAlBgB,EAmBhBf,OAAO,EAAE,KAAKR,WAnBE,EAoBhBU,MAAM,EAAE,KAAKD,UApBG,EAqBhBmC,SAAS,EAATA,SArBgB,EAsBhBL,YAAY,EAAZA,YAtBgB,EAuBhBC,YAAY,EAAZA,YAvBgB,EAwBhBC,WAAW,EAAXA,WAxBgB,EAyBhBC,WAAW,EAAXA,WAzBgB,EA0BhBC,SAAS,EAATA,SA1BgB,EA2BhBE,cAAc,EAAdA,cA3BgB,EA4BhByC,QAAQ,EAAElF,YAAY,GAAG,CAAC,CAAJ,GAAQ,CA5Bd,EA6BhBmF,KAAK,EAAE,KAAKrF,KAAL,CAAWqF,KA7BF,EAAlB,CAgCA,IAAMC,SAAS,GAAG,EAChBL,SAAS,EAAE3G,EAAE,CAACQ,aAAa,CAACQ,IAAf,mBACVV,MAAM,CAAC2G,IAAP,CAAY,KAAKtE,KAAjB,CADU,IACgB,IADhB,OAEV6C,sBAFU,IAEe,IAFf,OAGV,KAAK0B,oBAAL,EAHU,IAGoB,IAHpB,QADG,EAMhBN,KAAK,EAAE,EACLtC,KAAK,EAALA,KADK,EANS,EAAlB,CAWA,IAAM6C,eAAe,GAAG7B,YAAY,GAAG,IAAH,gBAAU,6BAAK,SAAS,EAAE9E,aAAa,CAAC4G,WAA9B,GAA9C,CAEA,IAAIC,WAAW,GAAG,IAAlB,CACA,IAAMC,cAAc,GAAGhC,YAAY,KAAK3D,QAAQ,IAAIa,OAAjB,CAAnC,CACA,IAAI,CAAC,CAAC4C,SAAD,IAAcC,MAAf,KAA0B,CAACiC,cAA/B,EAA+C,UAC7CD,WAAW,gBACT,6BACE,KAAK,EAAE,EAAEE,MAAM,EAAEjC,YAAY,IAAID,MAAhB,GAAyB,CAAC,CAA1B,GAA8BmC,SAAxC,EADT,EAEE,SAAS,EAAExH,EAAE,CAACM,MAAM,CAACmH,OAAP,EAAD,mBACVnH,MAAM,CAACoH,cAAP,CAAsB,KAAK/E,KAA3B,CADU,IAC0BY,OAD1B,OAEVjD,MAAM,CAACqH,YAAP,CAAoB,KAAKhF,KAAzB,CAFU,IAEwBW,KAFxB,OAGVhD,MAAM,CAACsH,WAAP,EAHU,IAGavC,MAHb,OAIV/E,MAAM,CAACuH,kBAAP,CAA0B,KAAKlF,KAA/B,CAJU,IAI8B0C,MAAM,IAAI9B,OAJxC,OAKVjD,MAAM,CAACwH,gBAAP,CAAwB,KAAKnF,KAA7B,CALU,IAK4B0C,MAAM,IAAI/B,KALtC,QAFf,GADF,CAYD,CAED,IAAMyE,SAA4C,GAAG,EACnDhD,GAAG,EAAHA,GADmD,EAEnDE,IAAI,EAAE,KAAK9D,QAAL,GAAgB8D,IAF6B,EAGnD+C,WAAW,EAAE,CAAC,CAAChF,QAHoC,EAInDR,OAAO,EAAEA,OAAO,IAAI,KAJ+B,EAArD,CAMA,IAAMyF,YAAY,GAAGxE,IAAI,iBAAI,oBAAC,UAAD,eAAgBsE,SAAhB,IAA2B,QAAQ,EAAC,MAApC,EAA2C,IAAI,EAAEtE,IAAjD,IAA7B,CACA,IAAMyE,aAAa,GAAGxE,SAAS,iBAC7B,oBAAC,UAAD,eAAgBqE,SAAhB,IAA2B,YAAY,EAAE,CAAC,CAACtE,IAAF,IAAU,CAAC,CAACC,SAArD,EAAgE,QAAQ,EAAC,OAAzE,EAAiF,IAAI,EAAEA,SAAvF,IADF,CAvKmB,CA2KnB;AACA,QAAI2B,MAAJ,EAAY,UACVqB,SAAS,CAACC,SAAV,GAAsB3G,EAAE,kBACrBM,MAAM,CAACU,IAAP,CAAY,KAAK2B,KAAjB,CADqB,IACK,IADL,OAErBuC,SAFqB,IAET,IAFS,OAGrB5E,MAAM,CAAC6H,IAAP,CAAY,KAAKxF,KAAjB,CAHqB,IAGK,IAHL,OAIrBrC,MAAM,CAAC8H,cAAP,EAJqB,IAIK,CAACxI,QAAD,IAAcA,QAAQ,IAAI,CAAC0F,YAJhC,OAKrBhF,MAAM,CAAC+H,4BAAP,EALqB,IAKmBzI,QAAQ,IAAI0F,YAL/B,OAMrBhF,MAAM,CAACgI,SAAP,CAAiB,KAAK3F,KAAtB,CANqB,IAMUyC,SANV,OAOrB9E,MAAM,CAACiI,YAAP,CAAoB,KAAK5F,KAAzB,CAPqB,IAOahB,QAAQ,IAAIa,OAPzB,QAAxB,CASAgG,MAAM,CAACC,MAAP,CAAczB,SAAd,EAAyB,EACvBL,SAAS,EAAE3G,EAAE,CAACM,MAAM,CAAC2G,IAAP,CAAY,KAAKtE,KAAjB,CAAD,EAA0BrC,MAAM,CAACoI,QAAP,EAA1B,CADU,EAEvB9B,KAAK,EAAE,EAAEtC,KAAK,EAAE0C,SAAS,CAACJ,KAAV,CAAgBtC,KAAzB,EAFgB,EAAzB,EAIAoC,SAAS,CAACE,KAAV,CAAgBC,SAAhB,GAA4BW,SAA5B,CACD,CAED,IAAMmB,cAAc,GAAGnG,OAAO,IAAI,CAACiB,IAAZ,IAAoB,CAACC,SAA5C,CACA,IAAMkF,WAAW,GAAGD,cAAc,iBAAI,oBAAC,iBAAD,IAAmB,IAAI,EAAE1D,IAAzB,GAAtC,CAEA,IAAI4D,WAAW,gBACb,6BACE,SAAS,EAAE7I,EAAE,CAACM,MAAM,CAACwI,OAAP,EAAD,EAAmBtI,aAAa,CAACsI,OAAjC,mBACVxI,MAAM,CAACyI,iBAAP,EADU,IACmB,CAAC5F,MAAM,IAAIE,OAAX,KAAuB,CAACb,OAAxB,IAAmC,CAAC8C,YADvD,OAEVhF,MAAM,CAAC0I,WAAP,EAFU,IAEa3D,MAFb,OAGV/E,MAAM,CAAC2I,eAAP,EAHU,IAGiB,CAAC5F,OAAD,IAAY1B,QAH7B,QADf,IAOGiH,WAPH,EAQGX,YARH,eASE,8BACE,SAAS,EAAEjI,EAAE,CAACQ,aAAa,CAAC0I,IAAf,mBACV5I,MAAM,CAAC6I,gBAAP,EADU,IACkBR,cADlB,QADf,IAKG3F,QALH,CATF,EAgBGkF,aAhBH,CADF,CAoBA,IAAI5C,YAAY,IAAID,MAAhB,IAA0B,CAAC7C,OAA/B,EAAwC,CACtCqG,WAAW,gBACT,oBAAC,YAAD,CAAc,QAAd,IAAuB,KAAK,EAAEjI,iBAAiB,CAAC,KAAK+B,KAAN,CAA/C,iBACE,oBAAC,IAAD,IACE,OAAO,EAAEyC,SADX,EAEE,QAAQ,EAAEzD,QAFZ,EAGE,IAAI,EAAE,KAAKyH,cAAL,CAAoB3F,IAApB,CAHR,EAIE,SAAS,EAAE,KAAK2F,cAAL,CAAoB1F,SAApB,CAJb,EAKE,EAAE,EAAE,KAAKZ,6BALX,EAME,QAAQ,EAAE,CAAC,CANb,IAQGE,QARH,CADF,CADF,CAcD,CAED,oBACE,oBAAC,aAAD,aAAe,WAAW,EAAE,KAAKqG,WAAjC,IAAkD,KAAK3H,KAAvD,gBACE,yCAAUsF,SAAV,IAAqB,YAAUlG,cAAc,CAACC,WAA9C,kBACE,yCAAQ,EAAE,EAAE+D,EAAZ,EAAgB,YAAUhE,cAAc,CAACE,IAAzC,EAA+C,GAAG,EAAE,KAAKmB,IAAzD,IAAmEuE,SAAnE,GACGS,eADH,EAEGE,WAFH,EAGG3B,SAHH,EAIGmD,WAJH,CADF,CADF,CADF,CAYD,CAlTH,QAoTUO,cApTV,GAoTE,wBAAuB3F,IAAvB,EAA6D,CAC3D,IAAIA,IAAI,IAAIjE,YAAY,CAACiE,IAAD,CAAxB,EAAgC,sBAC9B,IAAM6F,KAAK,GAAG5I,kBAAkB,CAAC,KAAKiC,KAAN,CAAhC,CACA,oBAAOrD,KAAK,CAACiK,YAAN,CAAmB9F,IAAnB,EAAyB,EAAEwB,IAAI,sBAAExB,IAAI,CAAC/B,KAAL,CAAWuD,IAAb,+BAAqBqE,KAAK,CAAC,KAAKnI,QAAL,GAAgB8D,IAAjB,CAAhC,EAAzB,CAAP,CACD,CAED,OAAOxB,IAAP,CACD,CA3TH,QA6TU0B,gBA7TV,GA6TE,4BAA2B,sBACzB,IAAMG,YAAY,GAAGlF,WAAW,CAAC,KAAKuC,KAAN,CAAhC,CACA,QAAQ,KAAKxB,QAAL,GAAgB8D,IAAxB,GACE,KAAK,OAAL,CACE,OAAOjF,EAAE,CAACM,MAAM,CAACkJ,SAAP,CAAiB,KAAK7G,KAAtB,CAAD,mBACNrC,MAAM,CAACmJ,aAAP,CAAqB,KAAK9G,KAA1B,CADM,IAC6BjD,MAAM,IAAIC,MADvC,OAENW,MAAM,CAACoJ,iBAAP,CAAyB,KAAK/G,KAA9B,CAFM,IAEiC,CAAC,CAAC,KAAKjB,KAAL,CAAW+B,IAF9C,OAGNnD,MAAM,CAACqJ,4BAAP,CAAoC,KAAKhH,KAAzC,CAHM,IAG4C2C,YAAY,IAAI,CAAC,CAAC,KAAK5D,KAAL,CAAW+B,IAA7B,IAAqC,CAAC,KAAK/B,KAAL,CAAWsB,QAH7F,QAAT,CAKF,KAAK,QAAL,CACE,OAAOhD,EAAE,CAACM,MAAM,CAACsJ,UAAP,CAAkB,KAAKjH,KAAvB,CAAD,mBACNrC,MAAM,CAACuJ,cAAP,CAAsB,KAAKlH,KAA3B,CADM,IAC8BjD,MAAM,IAAIC,MADxC,OAENW,MAAM,CAACwJ,kBAAP,CAA0B,KAAKnH,KAA/B,CAFM,IAEkC,CAAC,CAAC,KAAKjB,KAAL,CAAW+B,IAF/C,OAGNnD,MAAM,CAACyJ,6BAAP,CAAqC,KAAKpH,KAA1C,CAHM,IAG6C2C,YAAY,IAAI,CAAC,CAAC,KAAK5D,KAAL,CAAW+B,IAA7B,IAAqC,CAAC,KAAK/B,KAAL,CAAWsB,QAH9F,QAAT,CAKF,KAAK,OAAL,CACA,QACE,OAAOhD,EAAE,CAACM,MAAM,CAAC0J,SAAP,CAAiB,KAAKrH,KAAtB,CAAD,mBACNrC,MAAM,CAAC2J,aAAP,CAAqB,KAAKtH,KAA1B,CADM,IAC6BjD,MAAM,IAAIC,MADvC,OAENW,MAAM,CAAC4J,iBAAP,CAAyB,KAAKvH,KAA9B,CAFM,IAEiC,CAAC,CAAC,KAAKjB,KAAL,CAAW+B,IAF9C,OAGNnD,MAAM,CAAC6J,4BAAP,CAAoC,KAAKxH,KAAzC,CAHM,IAG4C2C,YAAY,IAAI,CAAC,CAAC,KAAK5D,KAAL,CAAW+B,IAA7B,IAAqC,CAAC,KAAK/B,KAAL,CAAWsB,QAH7F,QAAT,CAfJ,CAqBD,CApVH,QAsVUkE,oBAtVV,GAsVE,gCAA+B,CAC7B,QAAQ,KAAK/F,QAAL,GAAgB8D,IAAxB,GACE,KAAK,OAAL,CACE,OAAO3E,MAAM,CAAC8J,SAAP,CAAiB,KAAKzH,KAAtB,CAAP,CACF,KAAK,QAAL,CACE,OAAOrC,MAAM,CAAC+J,UAAP,CAAkB,KAAK1H,KAAvB,CAAP,CACF,KAAK,OAAL,CACA,QACE,OAAOrC,MAAM,CAACgK,SAAP,CAAiB,KAAK3H,KAAtB,CAAP,CAPJ,CASD,CAhWH,iBAA4BrD,KAAK,CAACiL,SAAlC,WACgBC,mBADhB,GACsC,QADtC,UAEgBC,WAFhB,GAE8B,QAF9B,UAGgBC,UAHhB,GAG6B,IAH7B,UAKgBtJ,YALhB,GAK6C,EACzC2D,GAAG,EAAE,SADoC,EAEzCE,IAAI,EAAE,OAFmC,EAGzCD,IAAI,EAAE,QAHmC,EAL7C,oBA2XA,OAAO,IAAM2F,QAAQ,GAAGlL,kBAAkB,CAAc,QAAd,CAAnC","sourcesContent":["import React, { AriaAttributes, HTMLAttributes } from 'react';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { HTMLProps } from '../../typings/html';\nimport { isKonturIcon, isReactUIComponent } from '../../lib/utils';\nimport { isIE11, isEdge, isSafari } from '../../lib/client';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme, ThemeIn } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { Link, LinkProps } from '../Link';\nimport { SizeProp } from '../../lib/types/props';\n\nimport { styles, activeStyles, globalClasses } from './Button.styles';\nimport { ButtonIcon, ButtonIconProps, getButtonIconSizes } from './ButtonIcon';\nimport { useButtonArrow } from './ButtonArrow';\nimport { getInnerLinkTheme } from './getInnerLinkTheme';\nimport { LoadingButtonIcon } from './LoadingButtonIcon';\n\n/**\n * @deprecated use SizeProp\n */\nexport type ButtonSize = SizeProp;\nexport type ButtonType = 'button' | 'submit' | 'reset';\nexport type ButtonUse = 'default' | 'primary' | 'success' | 'danger' | 'pay' | 'link' | 'text' | 'backless';\n\nexport interface ButtonProps\n extends CommonProps,\n Pick<\n AriaAttributes,\n 'aria-haspopup' | 'aria-describedby' | 'aria-controls' | 'aria-label' | 'aria-checked' | 'aria-expanded'\n >,\n Pick<HTMLAttributes<unknown>, 'role' | 'id'>,\n Pick<HTMLProps['button'], 'onClickCapture' | 'onMouseUp' | 'onMouseDown'> {\n /** @ignore */\n _noPadding?: boolean;\n\n /** @ignore */\n _noRightPadding?: boolean;\n\n /**\n * Применяет к кнопке стили псевдокласса `:active`.\n */\n active?: boolean;\n\n /**\n * CSS-свойство `text-align`.\n */\n align?: React.CSSProperties['textAlign'];\n\n /**\n * Превращает обычную кнопку в кнопку со стрелкой.\n */\n arrow?: boolean | 'left';\n\n /**\n * Даёт кнопке фокус после окончания загрузки страницы.\n */\n autoFocus?: boolean;\n\n /**\n * Убирает обводку у кнопки.\n */\n borderless?: boolean;\n\n /**\n * @ignore\n */\n checked?: boolean;\n\n children?: React.ReactNode;\n\n /** @ignore */\n corners?: React.CSSProperties;\n\n /**\n * Отключенное состояние кнопки.\n */\n disabled?: boolean;\n\n /** @ignore */\n disableFocus?: boolean;\n\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n\n /**\n * Иконка слева от текста кнопки.\n */\n icon?: React.ReactElement;\n\n /**\n * Иконка справа от текста кнопки.\n */\n rightIcon?: React.ReactElement;\n\n /**\n * Переводит кнопку в состояние загрузки.\n */\n loading?: boolean;\n\n /**\n * Сужает кнопку.\n */\n narrow?: boolean;\n\n /**\n * HTML-событие `onblur`.\n */\n onBlur?: React.FocusEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onclick`.\n */\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onfocus`.\n */\n onFocus?: React.FocusEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `keydown`.\n */\n onKeyDown?: React.KeyboardEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onmouseenter`.\n */\n onMouseEnter?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onmouseover`.\n */\n onMouseOver?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * Задаёт размер кнопки.\n *\n * **Допустимые значения**: `\"small\"`, `\"medium\"`, `\"large\"`.\n */\n size?: SizeProp;\n\n /**\n * HTML-атрибут `type`.\n */\n type?: ButtonType;\n\n /**\n * HTML-атрибут `title`.\n */\n title?: string;\n\n /**\n * Стиль кнопки.\n *\n * **Допустимые значения**: `\"default\"`, `\"primary\"`, `\"success\"`, `\"danger\"`, `\"pay\"`, `\"link\"`, `\"text\"`, `\"backless\"`.\n */\n use?: ButtonUse;\n\n /** @ignore */\n visuallyFocused?: boolean;\n\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n\n /**\n * CSS-свойство `width`.\n */\n width?: number | string;\n\n /**\n * Обычный объект с переменными темы.\n * Он будет объединён с темой из контекста.\n */\n theme?: ThemeIn;\n}\n\nexport interface ButtonState {\n focusedByTab: boolean;\n}\n\nexport const ButtonDataTids = {\n rootElement: 'Button__rootElement',\n root: 'Button__root',\n spinner: 'Button__spinner',\n} as const;\n\ntype DefaultProps = Required<Pick<ButtonProps, 'use' | 'size' | 'type'>>;\n\n@rootNode\nexport class Button extends React.Component<ButtonProps, ButtonState> {\n public static __KONTUR_REACT_UI__ = 'Button';\n public static displayName = 'Button';\n public static __BUTTON__ = true;\n\n public static defaultProps: DefaultProps = {\n use: 'default',\n size: 'small',\n type: 'button',\n };\n\n private getProps = createPropsGetter(Button.defaultProps);\n\n public state = {\n focusedByTab: false,\n };\n\n private theme!: Theme;\n private node: HTMLButtonElement | null = null;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n if (this.props.autoFocus) {\n keyListener.isTabPressed = true;\n this.focus();\n }\n }\n\n public static getDerivedStateFromProps(props: ButtonProps) {\n if (props.loading || props.disabled) {\n return { focusedByTab: false };\n }\n return null;\n }\n\n /**\n * @public\n */\n public focus() {\n this.node?.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n this.node?.blur();\n }\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = this.props.theme ? ThemeFactory.create(this.props.theme as Theme, theme) : theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderLinkRootWithoutHandlers(props: LinkProps) {\n const { onClick, onFocus, onBlur, children, ...rest } = props;\n return <span {...rest}>{children}</span>;\n }\n\n private renderMain() {\n const {\n corners,\n active,\n disabled,\n borderless,\n checked,\n error,\n warning,\n loading,\n narrow,\n icon,\n rightIcon,\n _noPadding,\n _noRightPadding,\n visuallyFocused,\n align,\n disableFocus,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onMouseDown,\n onMouseUp,\n onKeyDown,\n onClick,\n onClickCapture,\n width,\n children,\n 'aria-describedby': ariaDescribedby,\n 'aria-haspopup': ariaHasPopup,\n 'aria-controls': ariaControls,\n 'aria-label': ariaLabel,\n 'aria-checked': ariaChecked,\n 'aria-expanded': ariaExpanded,\n role,\n id,\n } = this.props;\n const { use, type, size } = this.getProps();\n const sizeClass = this.getSizeClassName();\n\n const isFocused = this.state.focusedByTab || visuallyFocused;\n const isLink = use === 'link';\n const _isTheme2022 = isTheme2022(this.theme);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const [wrapClassNameWithArrow, rootClassNameWithArrow, arrowNode] = useButtonArrow(\n { ...this.props, isFocused: Boolean(isFocused) },\n this.theme,\n );\n const isUseStateWithoutOutlineInDisabledState = !['default', 'backless'].includes(use);\n let rootClassName = '';\n if (_isTheme2022) {\n const trueDisabled = disabled || loading;\n rootClassName = cx(\n styles.root(this.theme),\n styles[use](this.theme),\n sizeClass,\n narrow && styles.narrow(),\n _noPadding && styles.noPadding(),\n _noRightPadding && styles.noRightPadding(),\n rootClassNameWithArrow,\n ...(trueDisabled\n ? [\n styles.disabled(this.theme),\n isUseStateWithoutOutlineInDisabledState && styles.disabledWithoutOutline(this.theme),\n checked && styles.checkedDisabled(this.theme),\n checked && styles.checkedDisabled2022(this.theme),\n borderless && styles.borderless2022(),\n use === 'backless' && !checked && styles.backlessDisabled2022(this.theme),\n use === 'text' && styles.textDisabled2022(),\n ]\n : [\n active && !checked && activeStyles[use](this.theme),\n isFocused && styles.focus(this.theme),\n checked && styles.checked2022(this.theme),\n checked && isFocused && styles.checkedFocused(this.theme),\n borderless && !checked && !isFocused && styles.borderless2022(),\n ]),\n );\n } else {\n rootClassName = cx({\n [styles.root(this.theme)]: true,\n [styles.simulatedPress()]: true,\n [styles[use](this.theme)]: true,\n [activeStyles[use](this.theme)]: active,\n [sizeClass]: true,\n [styles.focus(this.theme)]: isFocused,\n [styles.checked(this.theme)]: checked,\n [styles.checkedFocused(this.theme)]: checked && isFocused,\n [styles.disabled(this.theme)]: disabled || loading,\n [styles.checkedDisabled(this.theme)]: checked && disabled,\n [styles.borderless()]: borderless && !disabled && !loading && !checked && !isFocused && !active,\n [styles.narrow()]: narrow,\n [styles.noPadding()]: _noPadding,\n [styles.noRightPadding()]: _noRightPadding,\n });\n }\n\n const rootProps = {\n // By default the type attribute is 'submit'. IE8 will fire a click event\n // on this button if somewhere on the page user presses Enter while some\n // input is focused. So we set type to 'button' by default.\n type,\n role,\n 'aria-describedby': ariaDescribedby,\n 'aria-haspopup': ariaHasPopup,\n 'aria-controls': ariaControls,\n 'aria-label': ariaLabel,\n 'aria-checked': ariaChecked,\n 'aria-expanded': ariaExpanded,\n className: rootClassName,\n style: {\n textAlign: align,\n ...corners,\n },\n disabled: disabled || loading,\n onClick,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onKeyDown,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onMouseDown,\n onMouseUp,\n onClickCapture,\n tabIndex: disableFocus ? -1 : 0,\n title: this.props.title,\n };\n\n const wrapProps = {\n className: cx(globalClasses.root, {\n [styles.wrap(this.theme)]: true,\n [wrapClassNameWithArrow]: true,\n [this.getSizeWrapClassName()]: true,\n }),\n style: {\n width,\n },\n };\n\n const innerShadowNode = _isTheme2022 ? null : <div className={globalClasses.innerShadow} />;\n\n let outlineNode = null;\n const isDisabled2022 = _isTheme2022 && (disabled || loading);\n if ((!isFocused || isLink) && !isDisabled2022) {\n outlineNode = (\n <div\n style={{ zIndex: _isTheme2022 && isLink ? -1 : undefined }}\n className={cx(styles.outline(), {\n [styles.outlineWarning(this.theme)]: warning,\n [styles.outlineError(this.theme)]: error,\n [styles.outlineLink()]: isLink,\n [styles.outlineLinkWarning(this.theme)]: isLink && warning,\n [styles.outlineLinkError(this.theme)]: isLink && error,\n })}\n />\n );\n }\n\n const iconProps: Omit<ButtonIconProps, 'position'> = {\n use,\n size: this.getProps().size,\n hasChildren: !!children,\n loading: loading || false,\n };\n const leftIconNode = icon && <ButtonIcon {...iconProps} position=\"left\" icon={icon} />;\n const rightIconNode = rightIcon && (\n <ButtonIcon {...iconProps} hasBothIcons={!!icon && !!rightIcon} position=\"right\" icon={rightIcon} />\n );\n\n // Force disable all props and features, that cannot be use with Link\n if (isLink) {\n rootProps.className = cx({\n [styles.root(this.theme)]: true,\n [sizeClass]: true,\n [styles.link(this.theme)]: true,\n [styles.linkLineHeight()]: !isSafari || (isSafari && !_isTheme2022),\n [styles.linkLineHeightSafariFallback()]: isSafari && _isTheme2022,\n [styles.linkFocus(this.theme)]: isFocused,\n [styles.linkDisabled(this.theme)]: disabled || loading,\n });\n Object.assign(wrapProps, {\n className: cx(styles.wrap(this.theme), styles.wrapLink()),\n style: { width: wrapProps.style.width },\n });\n rootProps.style.textAlign = undefined;\n }\n\n const hasLoadingNode = loading && !icon && !rightIcon;\n const loadingNode = hasLoadingNode && <LoadingButtonIcon size={size} />;\n\n let captionNode = (\n <div\n className={cx(styles.caption(), globalClasses.caption, {\n [styles.captionTranslated()]: (active || checked) && !loading && !_isTheme2022,\n [styles.captionLink()]: isLink,\n [styles.captionDisabled()]: !checked && disabled,\n })}\n >\n {loadingNode}\n {leftIconNode}\n <span\n className={cx(globalClasses.text, {\n [styles.visibilityHidden()]: hasLoadingNode,\n })}\n >\n {children}\n </span>\n {rightIconNode}\n </div>\n );\n if (_isTheme2022 && isLink && !loading) {\n captionNode = (\n <ThemeContext.Provider value={getInnerLinkTheme(this.theme)}>\n <Link\n focused={isFocused}\n disabled={disabled}\n icon={this.renderIcon2022(icon)}\n rightIcon={this.renderIcon2022(rightIcon)}\n as={this.renderLinkRootWithoutHandlers}\n tabIndex={-1}\n >\n {children}\n </Link>\n </ThemeContext.Provider>\n );\n }\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <span {...wrapProps} data-tid={ButtonDataTids.rootElement}>\n <button id={id} data-tid={ButtonDataTids.root} ref={this._ref} {...rootProps}>\n {innerShadowNode}\n {outlineNode}\n {arrowNode}\n {captionNode}\n </button>\n </span>\n </CommonWrapper>\n );\n }\n\n private renderIcon2022(icon: React.ReactElement | undefined) {\n if (icon && isKonturIcon(icon)) {\n const sizes = getButtonIconSizes(this.theme);\n return React.cloneElement(icon, { size: icon.props.size ?? sizes[this.getProps().size] });\n }\n\n return icon;\n }\n\n private getSizeClassName() {\n const _isTheme2022 = isTheme2022(this.theme);\n switch (this.getProps().size) {\n case 'large':\n return cx(styles.sizeLarge(this.theme), {\n [styles.sizeLargeIE11(this.theme)]: isIE11 || isEdge,\n [styles.sizeLargeWithIcon(this.theme)]: !!this.props.icon,\n [styles.sizeLargeWithIconWithoutText(this.theme)]: _isTheme2022 && !!this.props.icon && !this.props.children,\n });\n case 'medium':\n return cx(styles.sizeMedium(this.theme), {\n [styles.sizeMediumIE11(this.theme)]: isIE11 || isEdge,\n [styles.sizeMediumWithIcon(this.theme)]: !!this.props.icon,\n [styles.sizeMediumWithIconWithoutText(this.theme)]: _isTheme2022 && !!this.props.icon && !this.props.children,\n });\n case 'small':\n default:\n return cx(styles.sizeSmall(this.theme), {\n [styles.sizeSmallIE11(this.theme)]: isIE11 || isEdge,\n [styles.sizeSmallWithIcon(this.theme)]: !!this.props.icon,\n [styles.sizeSmallWithIconWithoutText(this.theme)]: _isTheme2022 && !!this.props.icon && !this.props.children,\n });\n }\n }\n\n private getSizeWrapClassName() {\n switch (this.getProps().size) {\n case 'large':\n return styles.wrapLarge(this.theme);\n case 'medium':\n return styles.wrapMedium(this.theme);\n case 'small':\n default:\n return styles.wrapSmall(this.theme);\n }\n }\n\n private handleFocus = (e: React.FocusEvent<HTMLButtonElement>) => {\n if (!this.props.disabled && !this.props.disableFocus) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n globalObject.requestAnimationFrame?.(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n this.props.onFocus?.(e);\n }\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLButtonElement>) => {\n this.setState({ focusedByTab: false });\n if (!this.props.disabled && !this.props.disableFocus) {\n this.props.onBlur?.(e);\n }\n };\n\n private _ref = (node: HTMLButtonElement | null) => {\n this.node = node;\n };\n}\n\nexport const isButton = isReactUIComponent<ButtonProps>('Button');\n"]}
|
|
@@ -9,7 +9,7 @@ import { SizeProp } from '../../lib/types/props';
|
|
|
9
9
|
export declare type ButtonSize = SizeProp;
|
|
10
10
|
export declare type ButtonType = 'button' | 'submit' | 'reset';
|
|
11
11
|
export declare type ButtonUse = 'default' | 'primary' | 'success' | 'danger' | 'pay' | 'link' | 'text' | 'backless';
|
|
12
|
-
export interface ButtonProps extends CommonProps, Pick<AriaAttributes, 'aria-haspopup' | 'aria-describedby' | 'aria-controls' | 'aria-label' | 'aria-checked' | 'aria-expanded'>, Pick<HTMLAttributes<unknown>, 'role'>, Pick<HTMLProps['button'], 'onClickCapture' | 'onMouseUp' | 'onMouseDown'> {
|
|
12
|
+
export interface ButtonProps extends CommonProps, Pick<AriaAttributes, 'aria-haspopup' | 'aria-describedby' | 'aria-controls' | 'aria-label' | 'aria-checked' | 'aria-expanded'>, Pick<HTMLAttributes<unknown>, 'role' | 'id'>, Pick<HTMLProps['button'], 'onClickCapture' | 'onMouseUp' | 'onMouseDown'> {
|
|
13
13
|
/** @ignore */
|
|
14
14
|
_noPadding?: boolean;
|
|
15
15
|
/** @ignore */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ComboBox.tsx"],"names":["React","CustomComboBox","rootNode","createPropsGetter","ComboBox","getProps","defaultProps","comboboxElement","customComboBoxRef","element","setRootNode","focus","blur","search","query","cancelSearch","open","close","selectInputText","reset","render","props","size","Component","__KONTUR_REACT_UI__","displayName","itemToValue","item","value","valueToString","label","renderValue","renderItem","menuAlign","searchOnFocus","drawArrow"],"mappings":"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","sourcesContent":["import React, { AriaAttributes } from 'react';\n\nimport { DropdownContainerProps } from '../../internal/DropdownContainer';\nimport { CustomComboBox } from '../../internal/CustomComboBox';\nimport { Nullable } from '../../typings/utility-types';\nimport { MenuItemState } from '../MenuItem';\nimport { InputIconType } from '../Input';\nimport { CommonProps } from '../../internal/CommonWrapper';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { SizeProp } from '../../lib/types/props';\n\nexport interface ComboBoxProps<T>\n extends Pick<DropdownContainerProps, 'menuPos'>,\n Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>,\n CommonProps {\n align?: 'left' | 'center' | 'right';\n /**\n * Вызывает функцию поиска `getItems` при фокусе и очистке поля ввода\n * @default true\n */\n searchOnFocus?: boolean;\n /**\n * Рисует справа иконку в виде стрелки\n * @default true\n */\n drawArrow?: boolean;\n\n autoFocus?: boolean;\n\n borderless?: boolean;\n\n /**\n * Не использовать Portal для рендеринга меню.\n * См. https://github.com/skbkontur/retail-ui/issues/15\n * @default false\n */\n disablePortal?: boolean;\n\n disabled?: boolean;\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n\n leftIcon?: InputIconType;\n\n rightIcon?: InputIconType;\n\n /**\n * Функция поиска элементов, должна возвращать Promise с массивом элементов.\n * По умолчанию ожидаются объекты с типом `{ value: string, label: string }`.\n *\n * Элементы могут быть любого типа. В этом случае необходимо определить\n * свойства `itemToValue`, `renderValue`, `renderItem`, `valueToString`\n */\n getItems: (query: string) => Promise<Array<ComboBoxExtendedItem<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 *\n * По умолчанию все элементы результата поиска оборачиваются в тег `<button />`.\n *\n * @example\n * itemWrapper={(item) => {\n * if (item.value === 3) {\n * return (props) => {\n * return <a {...props} />\n * }\n * }\n * }}\n */\n itemWrapper?: (item: T) => React.ComponentType<unknown>;\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?: SizeProp;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n\n width?: string | number;\n\n maxMenuHeight?: number | string;\n\n onMouseEnter?: (e: React.MouseEvent) => void;\n\n onMouseOver?: (e: React.MouseEvent) => void;\n\n onMouseLeave?: (e: React.MouseEvent) => void;\n\n onInputKeyDown?: (e: React.KeyboardEvent<HTMLElement>) => void;\n\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode'];\n}\n\nexport interface ComboBoxItem {\n value: string;\n label: string;\n}\n\nexport type ComboBoxExtendedItem<T> = T | (() => React.ReactElement<T>) | React.ReactElement<T>;\n\ntype DefaultProps<T> = Required<\n Pick<\n ComboBoxProps<T>,\n 'itemToValue' | 'valueToString' | 'renderValue' | 'renderItem' | 'menuAlign' | 'searchOnFocus' | 'drawArrow'\n >\n>;\n\n@rootNode\nexport class ComboBox<T = ComboBoxItem> extends React.Component<ComboBoxProps<T>> {\n public static __KONTUR_REACT_UI__ = 'ComboBox';\n public static displayName = 'ComboBox';\n\n public static defaultProps: DefaultProps<any> = {\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 getProps = createPropsGetter(ComboBox.defaultProps);\n\n private comboboxElement: Nullable<CustomComboBox<T>> = null;\n private setRootNode!: TSetRootNode;\n\n /**\n * @public\n */\n public focus() {\n if (this.comboboxElement) {\n this.comboboxElement.focus();\n }\n }\n\n /**\n * @public\n */\n public blur() {\n if (this.comboboxElement) {\n this.comboboxElement.blur();\n }\n }\n\n /**\n * Открывает выпадающий список и запускает поиск элементов\n *\n * @public\n * @param {string} [query] Текст поиска. По умолчанию берется\n * текст из инпута или результат `valueToString(value)`\n */\n public search(query?: string) {\n if (this.comboboxElement) {\n this.comboboxElement.search(query);\n }\n }\n\n /**\n * @public\n */\n public cancelSearch() {\n if (this.comboboxElement) {\n this.comboboxElement.cancelSearch();\n }\n }\n\n /**\n * @public Открывает выпадающий список\n */\n public open() {\n if (this.comboboxElement) {\n this.comboboxElement.open();\n }\n }\n\n /**\n * @public Закрывает выпадающий список\n */\n public close() {\n if (this.comboboxElement) {\n this.comboboxElement.close();\n }\n }\n\n /**\n * Выделяет текст внутри input\n * @public\n */\n public selectInputText() {\n if (this.comboboxElement) {\n this.comboboxElement.selectInputText();\n }\n }\n\n /**\n * Сбрасывает введенное пользователем значение\n * @public\n */\n public reset() {\n if (this.comboboxElement) {\n this.comboboxElement.reset();\n }\n }\n\n public render() {\n return <CustomComboBox {...this.getProps()} size={this.props.size} ref={this.customComboBoxRef} />;\n }\n\n private customComboBoxRef = (element: Nullable<CustomComboBox<T>>) => {\n this.setRootNode(element);\n this.comboboxElement = element;\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["ComboBox.tsx"],"names":["React","CustomComboBox","rootNode","createPropsGetter","ComboBox","getProps","defaultProps","comboboxElement","customComboBoxRef","element","setRootNode","focus","blur","search","query","cancelSearch","open","close","selectInputText","reset","render","props","size","Component","__KONTUR_REACT_UI__","displayName","itemToValue","item","value","valueToString","label","renderValue","renderItem","menuAlign","searchOnFocus","drawArrow"],"mappings":"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","sourcesContent":["import React, { AriaAttributes, HTMLAttributes } from 'react';\n\nimport { DropdownContainerProps } from '../../internal/DropdownContainer';\nimport { CustomComboBox } from '../../internal/CustomComboBox';\nimport { Nullable } from '../../typings/utility-types';\nimport { MenuItemState } from '../MenuItem';\nimport { InputIconType } from '../Input';\nimport { CommonProps } from '../../internal/CommonWrapper';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { SizeProp } from '../../lib/types/props';\n\nexport interface ComboBoxProps<T>\n extends Pick<DropdownContainerProps, 'menuPos'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'>,\n Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>,\n CommonProps {\n align?: 'left' | 'center' | 'right';\n /**\n * Вызывает функцию поиска `getItems` при фокусе и очистке поля ввода\n * @default true\n */\n searchOnFocus?: boolean;\n /**\n * Рисует справа иконку в виде стрелки\n * @default true\n */\n drawArrow?: boolean;\n\n autoFocus?: boolean;\n\n borderless?: boolean;\n\n /**\n * Не использовать Portal для рендеринга меню.\n * См. https://github.com/skbkontur/retail-ui/issues/15\n * @default false\n */\n disablePortal?: boolean;\n\n disabled?: boolean;\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n\n leftIcon?: InputIconType;\n\n rightIcon?: InputIconType;\n\n /**\n * Функция поиска элементов, должна возвращать Promise с массивом элементов.\n * По умолчанию ожидаются объекты с типом `{ value: string, label: string }`.\n *\n * Элементы могут быть любого типа. В этом случае необходимо определить\n * свойства `itemToValue`, `renderValue`, `renderItem`, `valueToString`\n */\n getItems: (query: string) => Promise<Array<ComboBoxExtendedItem<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 *\n * По умолчанию все элементы результата поиска оборачиваются в тег `<button />`.\n *\n * @example\n * itemWrapper={(item) => {\n * if (item.value === 3) {\n * return (props) => {\n * return <a {...props} />\n * }\n * }\n * }}\n */\n itemWrapper?: (item: T) => React.ComponentType<unknown>;\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?: SizeProp;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n\n width?: string | number;\n\n maxMenuHeight?: number | string;\n\n onMouseEnter?: (e: React.MouseEvent) => void;\n\n onMouseOver?: (e: React.MouseEvent) => void;\n\n onMouseLeave?: (e: React.MouseEvent) => void;\n\n onInputKeyDown?: (e: React.KeyboardEvent<HTMLElement>) => void;\n\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode'];\n}\n\nexport interface ComboBoxItem {\n value: string;\n label: string;\n}\n\nexport type ComboBoxExtendedItem<T> = T | (() => React.ReactElement<T>) | React.ReactElement<T>;\n\ntype DefaultProps<T> = Required<\n Pick<\n ComboBoxProps<T>,\n 'itemToValue' | 'valueToString' | 'renderValue' | 'renderItem' | 'menuAlign' | 'searchOnFocus' | 'drawArrow'\n >\n>;\n\n@rootNode\nexport class ComboBox<T = ComboBoxItem> extends React.Component<ComboBoxProps<T>> {\n public static __KONTUR_REACT_UI__ = 'ComboBox';\n public static displayName = 'ComboBox';\n\n public static defaultProps: DefaultProps<any> = {\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 getProps = createPropsGetter(ComboBox.defaultProps);\n\n private comboboxElement: Nullable<CustomComboBox<T>> = null;\n private setRootNode!: TSetRootNode;\n\n /**\n * @public\n */\n public focus() {\n if (this.comboboxElement) {\n this.comboboxElement.focus();\n }\n }\n\n /**\n * @public\n */\n public blur() {\n if (this.comboboxElement) {\n this.comboboxElement.blur();\n }\n }\n\n /**\n * Открывает выпадающий список и запускает поиск элементов\n *\n * @public\n * @param {string} [query] Текст поиска. По умолчанию берется\n * текст из инпута или результат `valueToString(value)`\n */\n public search(query?: string) {\n if (this.comboboxElement) {\n this.comboboxElement.search(query);\n }\n }\n\n /**\n * @public\n */\n public cancelSearch() {\n if (this.comboboxElement) {\n this.comboboxElement.cancelSearch();\n }\n }\n\n /**\n * @public Открывает выпадающий список\n */\n public open() {\n if (this.comboboxElement) {\n this.comboboxElement.open();\n }\n }\n\n /**\n * @public Закрывает выпадающий список\n */\n public close() {\n if (this.comboboxElement) {\n this.comboboxElement.close();\n }\n }\n\n /**\n * Выделяет текст внутри input\n * @public\n */\n public selectInputText() {\n if (this.comboboxElement) {\n this.comboboxElement.selectInputText();\n }\n }\n\n /**\n * Сбрасывает введенное пользователем значение\n * @public\n */\n public reset() {\n if (this.comboboxElement) {\n this.comboboxElement.reset();\n }\n }\n\n public render() {\n return <CustomComboBox {...this.getProps()} size={this.props.size} ref={this.customComboBoxRef} />;\n }\n\n private customComboBoxRef = (element: Nullable<CustomComboBox<T>>) => {\n this.setRootNode(element);\n this.comboboxElement = element;\n };\n}\n"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import React, { AriaAttributes } from 'react';
|
|
1
|
+
import React, { AriaAttributes, HTMLAttributes } from 'react';
|
|
2
2
|
import { DropdownContainerProps } from '../../internal/DropdownContainer';
|
|
3
3
|
import { Nullable } from '../../typings/utility-types';
|
|
4
4
|
import { MenuItemState } from '../MenuItem';
|
|
5
5
|
import { InputIconType } from '../Input';
|
|
6
6
|
import { CommonProps } from '../../internal/CommonWrapper';
|
|
7
7
|
import { SizeProp } from '../../lib/types/props';
|
|
8
|
-
export interface ComboBoxProps<T> extends Pick<DropdownContainerProps, 'menuPos'>, Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>, CommonProps {
|
|
8
|
+
export interface ComboBoxProps<T> extends Pick<DropdownContainerProps, 'menuPos'>, Pick<HTMLAttributes<HTMLElement>, 'id'>, Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>, CommonProps {
|
|
9
9
|
align?: 'left' | 'center' | 'right';
|
|
10
10
|
/**
|
|
11
11
|
* Вызывает функцию поиска `getItems` при фокусе и очистке поля ввода
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
2
|
-
var _excluded = ["value", "fractionDigits", "currencySymbol", "hideTrailingZeros"];
|
|
2
|
+
var _excluded = ["id", "value", "fractionDigits", "currencySymbol", "hideTrailingZeros"];
|
|
3
3
|
import React from 'react';
|
|
4
4
|
import { MAX_SAFE_DIGITS } from "../../CurrencyInput/constants";
|
|
5
5
|
import { CurrencyHelper } from "../../CurrencyInput/CurrencyHelper";
|
|
@@ -9,7 +9,8 @@ export var CurrencyLabelDataTids = {
|
|
|
9
9
|
root: 'CurrencyLabel__root'
|
|
10
10
|
};
|
|
11
11
|
export var CurrencyLabel = function CurrencyLabel(_ref) {
|
|
12
|
-
var
|
|
12
|
+
var id = _ref.id,
|
|
13
|
+
value = _ref.value,
|
|
13
14
|
_ref$fractionDigits = _ref.fractionDigits,
|
|
14
15
|
fractionDigits = _ref$fractionDigits === void 0 ? FRACTION_DIGITS_DEFAULT : _ref$fractionDigits,
|
|
15
16
|
currencySymbol = _ref.currencySymbol,
|
|
@@ -18,6 +19,7 @@ export var CurrencyLabel = function CurrencyLabel(_ref) {
|
|
|
18
19
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
19
20
|
|
|
20
21
|
return /*#__PURE__*/React.createElement(CommonWrapper, rest, /*#__PURE__*/React.createElement("span", {
|
|
22
|
+
id: id,
|
|
21
23
|
"data-tid": CurrencyLabelDataTids.root
|
|
22
24
|
}, CurrencyHelper.format(value, {
|
|
23
25
|
fractionDigits: fractionDigits,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["CurrencyLabel.tsx"],"names":["React","MAX_SAFE_DIGITS","CurrencyHelper","CommonWrapper","FRACTION_DIGITS_DEFAULT","CurrencyLabelDataTids","root","CurrencyLabel","value","fractionDigits","currencySymbol","hideTrailingZeros","rest","format","String","fromCharCode","__KONTUR_REACT_UI__","displayName","propTypes","Error","destructString","fraction","length","Number","isInteger"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["CurrencyLabel.tsx"],"names":["React","MAX_SAFE_DIGITS","CurrencyHelper","CommonWrapper","FRACTION_DIGITS_DEFAULT","CurrencyLabelDataTids","root","CurrencyLabel","id","value","fractionDigits","currencySymbol","hideTrailingZeros","rest","format","String","fromCharCode","__KONTUR_REACT_UI__","displayName","propTypes","Error","destructString","fraction","length","Number","isInteger"],"mappings":"6LAAA,OAAOA,KAAP,MAAsC,OAAtC;;AAEA,SAASC,eAAT,QAAgC,4BAAhC;AACA,SAASC,cAAT,QAA+B,iCAA/B;AACA,SAASC,aAAT,QAA2C,8BAA3C;;;;;;;;;;;;;;AAcA,IAAMC,uBAAuB,GAAG,CAAhC;;AAEA,OAAO,IAAMC,qBAAqB,GAAG;AACnCC,EAAAA,IAAI,EAAE,qBAD6B,EAA9B;;;AAIP,OAAO,IAAMC,aAAa,GAAG,SAAhBA,aAAgB;;;;;;;AAOU,KANrCC,EAMqC,QANrCA,EAMqC,CALrCC,KAKqC,QALrCA,KAKqC,4BAJrCC,cAIqC,CAJrCA,cAIqC,oCAJpBN,uBAIoB,uBAHrCO,cAGqC,QAHrCA,cAGqC,8BAFrCC,iBAEqC,CAFrCA,iBAEqC,sCAFjB,KAEiB,yBADlCC,IACkC;AACrC;AACE,wBAAC,aAAD,EAAmBA,IAAnB;AACE,kCAAM,EAAE,EAAEL,EAAV,EAAc,YAAUH,qBAAqB,CAACC,IAA9C;AACGJ,IAAAA,cAAc,CAACY,MAAf,CAAsBL,KAAtB,EAA6B,EAAEC,cAAc,EAAdA,cAAF,EAAkBE,iBAAiB,EAAjBA,iBAAlB,EAA7B,CADH;AAEGD,IAAAA,cAAc,IAAII,MAAM,CAACC,YAAP,CAAoB,IAApB,CAFrB,CAE+C,YAF/C;AAGGL,IAAAA,cAHH,CADF,CADF;;;;AASD,CAjBM;;AAmBPJ,aAAa,CAACU,mBAAd,GAAoC,eAApC;AACAV,aAAa,CAACW,WAAd,GAA4B,eAA5B;;AAEAX,aAAa,CAACY,SAAd,GAA0B;AACxBT,EAAAA,cAAc,EAAE,+BAA6E,kCAA1EA,cAA0E,CAA1EA,eAA0E,qCAAzDN,uBAAyD,wBAAhCK,KAAgC,SAAhCA,KAAgC;AAC3F,QAAIC,eAAc,GAAGT,eAArB,EAAsC;AACpC,aAAO,IAAImB,KAAJ;AACL,0DAAkDnB,eAAlD,4EADK,CAAP;;;AAID;;AAED,gBAAqBC,cAAc,CAACmB,cAAf,CAA8BN,MAAM,CAACN,KAAD,CAApC,KAAgD,EAAEa,QAAQ,EAAE,EAAZ,EAArE,CAAQA,QAAR,SAAQA,QAAR;AACA,QAAIA,QAAQ,CAACC,MAAT,GAAkBb,eAAtB,EAAsC;AACpC,aAAO,IAAIU,KAAJ;AACL,gIADK,CAAP;;;AAID;;AAED,QAAI,CAACI,MAAM,CAACC,SAAP,CAAiBf,eAAjB,CAAL,EAAuC;AACrC,aAAO,IAAIU,KAAJ,2GAAP;;;AAGD;;AAED,WAAO,IAAP;AACD,GAxBuB,EAA1B","sourcesContent":["import React, { HTMLAttributes } from 'react';\n\nimport { MAX_SAFE_DIGITS } from '../CurrencyInput/constants';\nimport { CurrencyHelper } from '../CurrencyInput/CurrencyHelper';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\n\nexport interface CurrencyLabelProps extends CommonProps, Pick<HTMLAttributes<HTMLElement>, 'id'> {\n /**\n * Минимальное количество отображаемых знаков после запятой\n * @default 2\n */\n fractionDigits?: number;\n value: number;\n currencySymbol?: React.ReactNode;\n /** Убрать лишние нули после запятой */\n hideTrailingZeros?: boolean;\n}\n\nconst FRACTION_DIGITS_DEFAULT = 2;\n\nexport const CurrencyLabelDataTids = {\n root: 'CurrencyLabel__root',\n} as const;\n\nexport const CurrencyLabel = ({\n id,\n value,\n fractionDigits = FRACTION_DIGITS_DEFAULT,\n currencySymbol,\n hideTrailingZeros = false,\n ...rest\n}: CurrencyLabelProps): JSX.Element => {\n return (\n <CommonWrapper {...rest}>\n <span id={id} data-tid={CurrencyLabelDataTids.root}>\n {CurrencyHelper.format(value, { fractionDigits, hideTrailingZeros })}\n {currencySymbol && String.fromCharCode(0xa0) /* */}\n {currencySymbol}\n </span>\n </CommonWrapper>\n );\n};\n\nCurrencyLabel.__KONTUR_REACT_UI__ = 'CurrencyLabel';\nCurrencyLabel.displayName = 'CurrencyLabel';\n\nCurrencyLabel.propTypes = {\n fractionDigits: ({ fractionDigits = FRACTION_DIGITS_DEFAULT, value }: CurrencyLabelProps) => {\n if (fractionDigits > MAX_SAFE_DIGITS) {\n return new Error(\n `[CurrencyLabel]: Prop 'fractionDigits' exceeds ${MAX_SAFE_DIGITS}.` +\n `\\nSee https://tech.skbkontur.ru/react-ui/#/CurrencyInput?id=why15`,\n );\n }\n\n const { fraction } = CurrencyHelper.destructString(String(value)) || { fraction: '' };\n if (fraction.length > fractionDigits) {\n return new Error(\n `[CurrencyLabel]: Prop 'fractionDigits' less than fractional part of the 'value' property,` +\n `'value' will not be cutted`,\n );\n }\n\n if (!Number.isInteger(fractionDigits)) {\n return new Error(\n `[CurrencyLabel]: Prop 'fractionDigits' is not integer, fraction part of these property will not be used`,\n );\n }\n\n return null;\n },\n};\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { HTMLAttributes } from 'react';
|
|
2
2
|
import { CommonProps } from '../../internal/CommonWrapper';
|
|
3
|
-
export interface CurrencyLabelProps extends CommonProps {
|
|
3
|
+
export interface CurrencyLabelProps extends CommonProps, Pick<HTMLAttributes<HTMLElement>, 'id'> {
|
|
4
4
|
/**
|
|
5
5
|
* Минимальное количество отображаемых знаков после запятой
|
|
6
6
|
* @default 2
|
|
@@ -15,7 +15,7 @@ export declare const CurrencyLabelDataTids: {
|
|
|
15
15
|
readonly root: "CurrencyLabel__root";
|
|
16
16
|
};
|
|
17
17
|
export declare const CurrencyLabel: {
|
|
18
|
-
({ value, fractionDigits, currencySymbol, hideTrailingZeros, ...rest }: CurrencyLabelProps): JSX.Element;
|
|
18
|
+
({ id, value, fractionDigits, currencySymbol, hideTrailingZeros, ...rest }: CurrencyLabelProps): JSX.Element;
|
|
19
19
|
__KONTUR_REACT_UI__: string;
|
|
20
20
|
displayName: string;
|
|
21
21
|
propTypes: {
|
|
@@ -472,6 +472,7 @@ export var DateInput = (_dec = locale('DatePicker', DatePickerLocaleHelper), roo
|
|
|
472
472
|
}, this.props), /*#__PURE__*/React.createElement(FocusControlWrapper, {
|
|
473
473
|
onBlurWhenDisabled: this.resetFocus
|
|
474
474
|
}, /*#__PURE__*/React.createElement(InputLikeText, {
|
|
475
|
+
id: this.props.id,
|
|
475
476
|
width: width,
|
|
476
477
|
ref: this.inputLikeTextRef,
|
|
477
478
|
size: size,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["DateInput.tsx"],"names":["React","ReactDOM","globalObject","ConditionalHandler","LENGTH_FULLDATE","MAX_FULLDATE","MIN_FULLDATE","InternalDateComponentType","DatePickerLocaleHelper","InputLikeText","locale","ThemeContext","CalendarIcon","CommonWrapper","cx","rootNode","createPropsGetter","isTheme2022","FocusControlWrapper","CalendarIcon2022","DateFragmentsView","styles","Actions","extractAction","InternalDateMediator","DateInputDataTids","icon","DateInput","props","getProps","defaultProps","iDateMediator","inputLikeText","dateFragmentsView","isMouseDown","isMouseFocus","ignoringDelimiter","blurEvent","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","disabled","size","theme","iconStyles","iconSmall","iconMedium","iconLarge","iconDisabled","handleFocus","setState","prevState","focused","onFocus","resetFocus","updateValue","inputMode","handleBlur","onBlur","restored","restore","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","sync","valueFormatted","getString","update","emitChange","version","search","flushSync","updateFromProps","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","setRootNode","error","warning","onClick","valueVisible","getFragments","Component","__KONTUR_REACT_UI__","displayName"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { globalObject } from '@skbkontur/global-object';\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';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { SizeProp } from '../../lib/types/props';\nimport { FocusControlWrapper } from '../../internal/FocusControlWrapper';\n\nimport { CalendarIcon as CalendarIcon2022 } from './CalendarIcon';\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 const DateInputDataTids = {\n icon: 'DateInput__icon',\n} as const;\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?: SizeProp;\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\ntype DefaultProps = Required<Pick<DateInputProps, 'value' | 'minDate' | 'maxDate' | 'size' | 'width'>>;\n\n@rootNode\n@locale('DatePicker', DatePickerLocaleHelper)\nexport class DateInput extends React.Component<DateInputProps, DateInputState> {\n public static __KONTUR_REACT_UI__ = 'DateInput';\n public static displayName = 'DateInput';\n\n public static defaultProps: DefaultProps = {\n value: '',\n minDate: MIN_FULLDATE,\n maxDate: MAX_FULLDATE,\n size: 'small',\n width: 125,\n };\n\n private getProps = createPropsGetter(DateInput.defaultProps);\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) {\n const { value, minDate, maxDate } = this.getProps();\n if (\n prevProps.value !== value ||\n prevProps.minDate !== minDate ||\n prevProps.maxDate !== maxDate ||\n this.iDateMediator.isChangedLocale(this.locale)\n ) {\n this.updateFromProps(false);\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(false);\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 const { width, size } = this.getProps();\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <FocusControlWrapper onBlurWhenDisabled={this.resetFocus}>\n <InputLikeText\n width={width}\n ref={this.inputLikeTextRef}\n size={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 </FocusControlWrapper>\n </CommonWrapper>\n );\n }\n\n private renderIcon = () => {\n const { withIcon, disabled = false } = this.props;\n const size = this.getProps().size;\n\n if (withIcon) {\n const theme = this.theme;\n const icon = isTheme2022(theme) ? <CalendarIcon2022 size={size} /> : <CalendarIcon />;\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} data-tid={DateInputDataTids.icon}>\n {icon}\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 resetFocus = () => this.updateValue({ focused: false, selected: null, inputMode: false });\n\n private handleBlur = (e: React.FocusEvent<HTMLElement>) => {\n this.resetFocus();\n\n if (this.props.onBlur) {\n const restored = this.iDateMediator.restore();\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 = globalObject.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> = {}, sync = true): void => {\n const valueFormatted = this.iDateMediator.getString();\n\n const update = () => this.setState({ ...state, valueFormatted } as DateInputState, this.emitChange);\n\n if (sync && React.version.search('18') === 0) {\n ReactDOM.flushSync(update);\n } else {\n update();\n }\n };\n\n private updateFromProps = (sync: boolean): void => {\n this.iDateMediator.update(this.props, this.locale);\n\n this.updateValue({}, sync);\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, changed } = this.iDateMediator.inputKey(event.key, selected, this.state.inputMode);\n if (!changed) {\n this.blink();\n return;\n }\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","ReactDOM","globalObject","ConditionalHandler","LENGTH_FULLDATE","MAX_FULLDATE","MIN_FULLDATE","InternalDateComponentType","DatePickerLocaleHelper","InputLikeText","locale","ThemeContext","CalendarIcon","CommonWrapper","cx","rootNode","createPropsGetter","isTheme2022","FocusControlWrapper","CalendarIcon2022","DateFragmentsView","styles","Actions","extractAction","InternalDateMediator","DateInputDataTids","icon","DateInput","props","getProps","defaultProps","iDateMediator","inputLikeText","dateFragmentsView","isMouseDown","isMouseFocus","ignoringDelimiter","blurEvent","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","disabled","size","theme","iconStyles","iconSmall","iconMedium","iconLarge","iconDisabled","handleFocus","setState","prevState","focused","onFocus","resetFocus","updateValue","inputMode","handleBlur","onBlur","restored","restore","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","sync","valueFormatted","getString","update","emitChange","version","search","flushSync","updateFromProps","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","setRootNode","id","error","warning","onClick","valueVisible","getFragments","Component","__KONTUR_REACT_UI__","displayName"],"mappings":"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","sourcesContent":["import React, { HTMLAttributes } from 'react';\nimport ReactDOM from 'react-dom';\nimport { globalObject } from '@skbkontur/global-object';\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';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { SizeProp } from '../../lib/types/props';\nimport { FocusControlWrapper } from '../../internal/FocusControlWrapper';\n\nimport { CalendarIcon as CalendarIcon2022 } from './CalendarIcon';\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 const DateInputDataTids = {\n icon: 'DateInput__icon',\n} as const;\n\nexport interface DateInputProps extends CommonProps, Pick<HTMLAttributes<HTMLElement>, 'id'> {\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?: SizeProp;\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\ntype DefaultProps = Required<Pick<DateInputProps, 'value' | 'minDate' | 'maxDate' | 'size' | 'width'>>;\n\n@rootNode\n@locale('DatePicker', DatePickerLocaleHelper)\nexport class DateInput extends React.Component<DateInputProps, DateInputState> {\n public static __KONTUR_REACT_UI__ = 'DateInput';\n public static displayName = 'DateInput';\n\n public static defaultProps: DefaultProps = {\n value: '',\n minDate: MIN_FULLDATE,\n maxDate: MAX_FULLDATE,\n size: 'small',\n width: 125,\n };\n\n private getProps = createPropsGetter(DateInput.defaultProps);\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) {\n const { value, minDate, maxDate } = this.getProps();\n if (\n prevProps.value !== value ||\n prevProps.minDate !== minDate ||\n prevProps.maxDate !== maxDate ||\n this.iDateMediator.isChangedLocale(this.locale)\n ) {\n this.updateFromProps(false);\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(false);\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 const { width, size } = this.getProps();\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <FocusControlWrapper onBlurWhenDisabled={this.resetFocus}>\n <InputLikeText\n id={this.props.id}\n width={width}\n ref={this.inputLikeTextRef}\n size={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 </FocusControlWrapper>\n </CommonWrapper>\n );\n }\n\n private renderIcon = () => {\n const { withIcon, disabled = false } = this.props;\n const size = this.getProps().size;\n\n if (withIcon) {\n const theme = this.theme;\n const icon = isTheme2022(theme) ? <CalendarIcon2022 size={size} /> : <CalendarIcon />;\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} data-tid={DateInputDataTids.icon}>\n {icon}\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 resetFocus = () => this.updateValue({ focused: false, selected: null, inputMode: false });\n\n private handleBlur = (e: React.FocusEvent<HTMLElement>) => {\n this.resetFocus();\n\n if (this.props.onBlur) {\n const restored = this.iDateMediator.restore();\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 = globalObject.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> = {}, sync = true): void => {\n const valueFormatted = this.iDateMediator.getString();\n\n const update = () => this.setState({ ...state, valueFormatted } as DateInputState, this.emitChange);\n\n if (sync && React.version.search('18') === 0) {\n ReactDOM.flushSync(update);\n } else {\n update();\n }\n };\n\n private updateFromProps = (sync: boolean): void => {\n this.iDateMediator.update(this.props, this.locale);\n\n this.updateValue({}, sync);\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, changed } = this.iDateMediator.inputKey(event.key, selected, this.state.inputMode);\n if (!changed) {\n this.blink();\n return;\n }\n\n if (!inputMode) {\n this.ignoringDelimiter = true;\n this.shiftSelection(1);\n }\n this.updateValue({ inputMode });\n };\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { HTMLAttributes } from 'react';
|
|
2
2
|
import { InternalDateComponentType } from '../../lib/date/types';
|
|
3
3
|
import { CommonProps } from '../../internal/CommonWrapper';
|
|
4
4
|
import { SizeProp } from '../../lib/types/props';
|
|
@@ -12,7 +12,7 @@ export interface DateInputState {
|
|
|
12
12
|
export declare const DateInputDataTids: {
|
|
13
13
|
readonly icon: "DateInput__icon";
|
|
14
14
|
};
|
|
15
|
-
export interface DateInputProps extends CommonProps {
|
|
15
|
+
export interface DateInputProps extends CommonProps, Pick<HTMLAttributes<HTMLElement>, 'id'> {
|
|
16
16
|
autoFocus?: boolean;
|
|
17
17
|
value?: string;
|
|
18
18
|
/**
|
|
@@ -139,7 +139,9 @@ export var DatePicker = (_dec = locale('DatePicker', DatePickerLocaleHelper), re
|
|
|
139
139
|
onMouseLeave: _this.props.onMouseLeave,
|
|
140
140
|
onMouseOver: _this.props.onMouseOver,
|
|
141
141
|
"data-tid": DatePickerDataTids.label
|
|
142
|
-
}, /*#__PURE__*/React.createElement(DateInput, _extends({
|
|
142
|
+
}, /*#__PURE__*/React.createElement(DateInput, _extends({
|
|
143
|
+
id: _this.props.id
|
|
144
|
+
}, filterProps(props, INPUT_PASS_PROPS), {
|
|
143
145
|
ref: _this.getInputRef,
|
|
144
146
|
value: _this.props.value || '',
|
|
145
147
|
width: "100%",
|