@skbkontur/react-ui 3.9.2 → 3.9.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -0
- package/cjs/components/Button/Button.d.ts +3 -0
- package/cjs/components/Button/Button.js +8 -1
- package/cjs/components/Button/Button.js.map +1 -1
- package/cjs/components/Checkbox/Checkbox.d.ts +0 -1
- package/cjs/components/Checkbox/Checkbox.js +21 -18
- package/cjs/components/Checkbox/Checkbox.js.map +1 -1
- package/cjs/components/CurrencyInput/CurrencyInput.d.ts +2 -1
- package/cjs/components/CurrencyInput/CurrencyInput.js +29 -1
- package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
- package/cjs/components/Input/Input.d.ts +4 -0
- package/cjs/components/Input/Input.js +9 -0
- package/cjs/components/Input/Input.js.map +1 -1
- package/cjs/components/Radio/Radio.js +4 -1
- package/cjs/components/Radio/Radio.js.map +1 -1
- package/cjs/components/Select/Select.js +3 -2
- package/cjs/components/Select/Select.js.map +1 -1
- package/cjs/components/SidePage/SidePage.d.ts +1 -0
- package/cjs/components/SidePage/SidePage.js +3 -1
- package/cjs/components/SidePage/SidePage.js.map +1 -1
- package/cjs/lib/events/fixFirefoxModifiedClickOnLabel.d.ts +2 -0
- package/cjs/lib/events/fixFirefoxModifiedClickOnLabel.js +20 -0
- package/cjs/lib/events/fixFirefoxModifiedClickOnLabel.js.map +1 -0
- package/cjs/lib/getDisplayName.d.ts +3 -0
- package/cjs/lib/getDisplayName.js +9 -0
- package/cjs/lib/getDisplayName.js.map +1 -0
- package/cjs/lib/withClassWrapper.d.ts +68 -0
- package/cjs/lib/withClassWrapper.js +59 -0
- package/cjs/lib/withClassWrapper.js.map +1 -0
- package/components/Button/Button/Button.js +10 -0
- package/components/Button/Button/Button.js.map +1 -1
- package/components/Button/Button.d.ts +3 -0
- package/components/Checkbox/Checkbox/Checkbox.js +18 -20
- package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
- package/components/Checkbox/Checkbox.d.ts +0 -1
- package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +34 -1
- package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
- package/components/CurrencyInput/CurrencyInput.d.ts +2 -1
- package/components/Input/Input/Input.js +8 -0
- package/components/Input/Input/Input.js.map +1 -1
- package/components/Input/Input.d.ts +4 -0
- package/components/Radio/Radio/Radio.js +4 -1
- package/components/Radio/Radio/Radio.js.map +1 -1
- package/components/Select/Select/Select.js +6 -1
- package/components/Select/Select/Select.js.map +1 -1
- package/components/SidePage/SidePage/SidePage.js +2 -0
- package/components/SidePage/SidePage/SidePage.js.map +1 -1
- package/components/SidePage/SidePage.d.ts +1 -0
- package/lib/events/fixFirefoxModifiedClickOnLabel/fixFirefoxModifiedClickOnLabel.js +19 -0
- package/lib/events/fixFirefoxModifiedClickOnLabel/fixFirefoxModifiedClickOnLabel.js.map +1 -0
- package/lib/events/fixFirefoxModifiedClickOnLabel/package.json +6 -0
- package/lib/events/fixFirefoxModifiedClickOnLabel.d.ts +2 -0
- package/lib/getDisplayName/getDisplayName.js +3 -0
- package/lib/getDisplayName/getDisplayName.js.map +1 -0
- package/lib/getDisplayName/package.json +6 -0
- package/lib/getDisplayName.d.ts +3 -0
- package/lib/withClassWrapper/package.json +6 -0
- package/lib/withClassWrapper/withClassWrapper.js +70 -0
- package/lib/withClassWrapper/withClassWrapper.js.map +1 -0
- package/lib/withClassWrapper.d.ts +68 -0
- package/package.json +4 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["SidePage.tsx"],"names":["TRANSITION_TIMEOUT","SidePage","state","hasHeader","hasFooter","hasPanel","theme","stackSubscription","layoutRef","footer","updateLayout","update","getSidePageContextProps","requestClose","getWidth","footerRef","setHasHeader","setHasFooter","setHasPanel","clientWidth","handleStackChange","stack","sidePages","filter","x","props","fromLeft","currentSidePagePosition","indexOf","hasMargin","length","hasShadow","hasBackground","ModalStack","isBlocking","setState","stackPosition","handleClickOutside","e","ignoreBackgroundClick","MouseEvent","clientX","document","documentElement","handleKeyDown","disableClose","onClose","ref","componentDidMount","window","addEventListener","add","componentWillUnmount","removeEventListener","remove","render","renderMain","blockBackground","disableAnimations","renderShadow","getTransitionNames","enter","exit","renderContainer","width","disableFocusLock","offset","styles","root","LayoutEvents","emit","right","left","focusLock","wrapper","wrapperLeft","wrapperMarginLeft","wrapperMarginRight","shadow","_","children","overlay","background","backgroundGray","transition","transitionRight","transitionLeft","enterActive","transitionActive","transitionLeave","exitActive","transitionLeaveActive","appear","appearActive","React","Component","__KONTUR_REACT_UI__","Header","SidePageHeader","Body","SidePageBody","Footer","SidePageFooter","Container","SidePageContainer","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport FocusLock from 'react-focus-lock';\n\nimport { isKeyEscape } from '../../lib/events/keyboard/identifiers';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { stopPropagation } from '../../lib/events/stopPropagation';\nimport { HideBodyVerticalScroll } from '../../internal/HideBodyVerticalScroll';\nimport { ModalStack, ModalStackSubscription } from '../../lib/ModalStack';\nimport { RenderContainer } from '../../internal/RenderContainer';\nimport { RenderLayer } from '../../internal/RenderLayer';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { SidePageBody } from './SidePageBody';\nimport { SidePageContainer } from './SidePageContainer';\nimport { SidePageContext, SidePageContextType } from './SidePageContext';\nimport { SidePageFooter } from './SidePageFooter';\nimport { SidePageHeader } from './SidePageHeader';\nimport { styles } from './SidePage.styles';\n\nexport interface SidePageProps extends CommonProps {\n /**\n * Добавить блокирующий фон, когда сайдпейдж открыт\n */\n blockBackground?: boolean;\n\n /**\n * Отключает событие onClose, также дизейблит кнопку закрытия сайдпейджа\n */\n disableClose?: boolean;\n\n /**\n * Не закрывать сайдпейдж при клике на фон.\n */\n ignoreBackgroundClick?: boolean;\n\n /**\n * Задать ширину сайдпейджа\n */\n width?: number | string;\n\n /**\n * Вызывается, когда пользователь запросил закрытие сайдпейджа (нажал на фон, на\n * Escape или на крестик).\n */\n onClose?: () => void;\n\n /**\n * Показывать сайдпэйдж слева\n *\n */\n fromLeft?: boolean;\n\n /**\n * Отключить анимации\n *\n */\n disableAnimations?: boolean;\n\n /**\n * Работает только при заблокированном фоне: `blockBackground = true`\n */\n disableFocusLock: boolean;\n\n /**\n * задает отступ от края экрана\n */\n offset?: number | string;\n}\n\nexport interface SidePageState {\n stackPosition?: number;\n hasMargin?: boolean;\n hasShadow?: boolean;\n hasBackground?: boolean;\n hasHeader: boolean;\n hasFooter: boolean;\n hasPanel: boolean;\n}\n\nconst TRANSITION_TIMEOUT = 200;\n\n/**\n * Сайдпейдж\n *\n * Содержит в себе три компоненты: **SidePage.Header**,\n * **SidePage.Body** и **SidePage.Footer**\n *\n * Для отображения серой плашки в футере в компонент\n * **Footer** необходимо передать пропс **panel**\n */\nexport class SidePage extends React.Component<SidePageProps, SidePageState> {\n public static __KONTUR_REACT_UI__ = 'SidePage';\n\n public static Header = SidePageHeader;\n public static Body = SidePageBody;\n public static Footer = SidePageFooter;\n public static Container = SidePageContainer;\n public state: SidePageState = {\n hasHeader: false,\n hasFooter: false,\n hasPanel: false,\n };\n private theme!: Theme;\n private stackSubscription: ModalStackSubscription | null = null;\n private layoutRef: HTMLElement | null = null;\n private footer: SidePageFooter | null = null;\n\n public componentDidMount() {\n window.addEventListener('keydown', this.handleKeyDown);\n this.stackSubscription = ModalStack.add(this, this.handleStackChange);\n }\n\n public componentWillUnmount() {\n window.removeEventListener('keydown', this.handleKeyDown);\n if (this.stackSubscription != null) {\n this.stackSubscription.remove();\n }\n ModalStack.remove(this);\n }\n\n /**\n * Обновляет разметку компонента.\n * @public\n */\n public updateLayout = (): void => {\n if (this.footer) {\n this.footer.update();\n }\n };\n\n public static defaultProps = {\n disableFocusLock: true,\n offset: 0,\n };\n\n public render(): JSX.Element {\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 { blockBackground, disableAnimations } = this.props;\n\n return (\n <CommonWrapper {...this.props}>\n <RenderContainer>\n <div>\n {blockBackground && this.renderShadow()}\n <CSSTransition\n in\n classNames={this.getTransitionNames()}\n appear={!disableAnimations}\n enter={!disableAnimations}\n exit={false}\n timeout={{\n enter: TRANSITION_TIMEOUT,\n exit: TRANSITION_TIMEOUT,\n }}\n >\n {this.renderContainer()}\n </CSSTransition>\n </div>\n </RenderContainer>\n </CommonWrapper>\n );\n }\n\n private renderContainer(): JSX.Element {\n const { width, blockBackground, fromLeft, disableFocusLock, offset } = this.props;\n\n return (\n <ZIndex\n priority={'Sidepage'}\n data-tid=\"SidePage__root\"\n className={cx({\n [styles.root()]: true,\n })}\n onScroll={LayoutEvents.emit}\n createStackingContext\n style={{\n width: width || (blockBackground ? 800 : 500),\n right: fromLeft ? 'auto' : offset,\n left: fromLeft ? offset : 'auto',\n }}\n >\n <FocusLock disabled={disableFocusLock || !blockBackground} autoFocus={false} className={styles.focusLock()}>\n <RenderLayer onClickOutside={this.handleClickOutside} active>\n <div\n data-tid=\"SidePage__container\"\n className={cx(styles.wrapper(this.theme), {\n [styles.wrapperLeft()]: fromLeft,\n [styles.wrapperMarginLeft()]: this.state.hasMargin && fromLeft,\n [styles.wrapperMarginRight()]: this.state.hasMargin && !fromLeft,\n [styles.shadow(this.theme)]: this.state.hasShadow,\n })}\n ref={(_) => (this.layoutRef = _)}\n >\n <SidePageContext.Provider value={this.getSidePageContextProps()}>\n {this.props.children}\n </SidePageContext.Provider>\n </div>\n </RenderLayer>\n </FocusLock>\n </ZIndex>\n );\n }\n\n private getSidePageContextProps = (): SidePageContextType => {\n return {\n hasHeader: this.state.hasHeader,\n hasFooter: this.state.hasFooter,\n hasPanel: this.state.hasPanel,\n requestClose: this.requestClose,\n getWidth: this.getWidth,\n updateLayout: this.updateLayout,\n footerRef: this.footerRef,\n setHasHeader: this.setHasHeader,\n setHasFooter: this.setHasFooter,\n setHasPanel: this.setHasPanel,\n };\n };\n\n private getWidth = () => {\n if (!this.layoutRef) {\n return 'auto';\n }\n return this.layoutRef.clientWidth;\n };\n\n private renderShadow(): JSX.Element {\n return (\n <ZIndex priority={'Sidepage'} className={styles.overlay()} onScroll={LayoutEvents.emit}>\n <HideBodyVerticalScroll key=\"hbvs\" />\n <div\n key=\"overlay\"\n className={cx({\n [styles.background()]: true,\n [styles.backgroundGray(this.theme)]: this.state.hasBackground,\n })}\n />\n </ZIndex>\n );\n }\n\n private getTransitionNames(): Record<string, string> {\n const transition = this.props.fromLeft ? styles.transitionRight : styles.transitionLeft;\n\n return {\n enter: transition(),\n enterActive: styles.transitionActive(),\n exit: styles.transitionLeave(),\n exitActive: styles.transitionLeaveActive(),\n appear: transition(),\n appearActive: styles.transitionActive(),\n };\n }\n\n private handleStackChange = (stack: ReadonlyArray<React.Component>) => {\n const sidePages = stack.filter((x) => x instanceof SidePage && x.props.fromLeft === this.props.fromLeft);\n const currentSidePagePosition = sidePages.indexOf(this);\n\n const hasMargin = sidePages.length > 1 && currentSidePagePosition === sidePages.length - 1;\n const hasShadow = sidePages.length < 3 || currentSidePagePosition > sidePages.length - 3;\n const hasBackground = ModalStack.isBlocking(this);\n\n this.setState({\n stackPosition: stack.indexOf(this),\n hasMargin,\n hasShadow,\n hasBackground,\n });\n };\n\n private handleClickOutside = (e: Event) => {\n if (this.state.stackPosition === 0 && !this.props.ignoreBackgroundClick) {\n // ignore mousedown on window scrollbar\n if (e instanceof MouseEvent && e.clientX > document.documentElement.clientWidth) {\n return;\n }\n this.requestClose();\n }\n };\n\n private handleKeyDown = (e: KeyboardEvent) => {\n if (this.state.stackPosition !== 0) {\n return;\n }\n if (isKeyEscape(e)) {\n stopPropagation(e);\n this.requestClose();\n }\n };\n\n private requestClose = () => {\n if (this.props.disableClose) {\n return;\n }\n if (this.props.onClose) {\n this.props.onClose();\n }\n };\n\n private footerRef = (ref: SidePageFooter | null) => {\n this.footer = ref;\n };\n\n private setHasHeader = (hasHeader = true) => {\n this.state.hasHeader !== hasHeader && this.setState({ hasHeader });\n };\n\n private setHasFooter = (hasFooter = true) => {\n this.state.hasFooter !== hasFooter && this.setState({ hasFooter });\n };\n\n private setHasPanel = (hasPanel = false) => {\n this.state.hasPanel !== hasPanel && this.setState({ hasPanel });\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["SidePage.tsx"],"names":["TRANSITION_TIMEOUT","SidePage","state","hasHeader","hasFooter","hasPanel","theme","stackSubscription","layoutRef","footer","updateLayout","update","getSidePageContextProps","requestClose","getWidth","footerRef","setHasHeader","setHasFooter","setHasPanel","clientWidth","handleStackChange","stack","sidePages","filter","x","props","fromLeft","currentSidePagePosition","indexOf","hasMargin","length","hasShadow","hasBackground","ModalStack","isBlocking","setState","stackPosition","handleClickOutside","e","ignoreBackgroundClick","MouseEvent","clientX","document","documentElement","handleKeyDown","disableClose","onClose","ref","componentDidMount","window","addEventListener","add","componentWillUnmount","removeEventListener","remove","render","renderMain","blockBackground","disableAnimations","renderShadow","getTransitionNames","enter","exit","renderContainer","width","disableFocusLock","offset","styles","root","LayoutEvents","emit","right","left","focusLock","wrapper","wrapperLeft","wrapperMarginLeft","wrapperMarginRight","shadow","_","children","overlay","background","backgroundGray","transition","transitionRight","transitionLeft","enterActive","transitionActive","transitionLeave","exitActive","transitionLeaveActive","appear","appearActive","React","Component","__KONTUR_REACT_UI__","Header","SidePageHeader","Body","SidePageBody","Footer","SidePageFooter","Container","SidePageContainer","defaultProps","isTestEnv"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport FocusLock from 'react-focus-lock';\n\nimport { isKeyEscape } from '../../lib/events/keyboard/identifiers';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { stopPropagation } from '../../lib/events/stopPropagation';\nimport { HideBodyVerticalScroll } from '../../internal/HideBodyVerticalScroll';\nimport { ModalStack, ModalStackSubscription } from '../../lib/ModalStack';\nimport { RenderContainer } from '../../internal/RenderContainer';\nimport { RenderLayer } from '../../internal/RenderLayer';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { isTestEnv } from '../../lib/currentEnvironment';\n\nimport { SidePageBody } from './SidePageBody';\nimport { SidePageContainer } from './SidePageContainer';\nimport { SidePageContext, SidePageContextType } from './SidePageContext';\nimport { SidePageFooter } from './SidePageFooter';\nimport { SidePageHeader } from './SidePageHeader';\nimport { styles } from './SidePage.styles';\n\nexport interface SidePageProps extends CommonProps {\n /**\n * Добавить блокирующий фон, когда сайдпейдж открыт\n */\n blockBackground?: boolean;\n\n /**\n * Отключает событие onClose, также дизейблит кнопку закрытия сайдпейджа\n */\n disableClose?: boolean;\n\n /**\n * Не закрывать сайдпейдж при клике на фон.\n */\n ignoreBackgroundClick?: boolean;\n\n /**\n * Задать ширину сайдпейджа\n */\n width?: number | string;\n\n /**\n * Вызывается, когда пользователь запросил закрытие сайдпейджа (нажал на фон, на\n * Escape или на крестик).\n */\n onClose?: () => void;\n\n /**\n * Показывать сайдпэйдж слева\n *\n */\n fromLeft?: boolean;\n\n /**\n * Отключить анимации\n *\n */\n disableAnimations?: boolean;\n\n /**\n * Работает только при заблокированном фоне: `blockBackground = true`\n */\n disableFocusLock: boolean;\n\n /**\n * задает отступ от края экрана\n */\n offset?: number | string;\n}\n\nexport interface SidePageState {\n stackPosition?: number;\n hasMargin?: boolean;\n hasShadow?: boolean;\n hasBackground?: boolean;\n hasHeader: boolean;\n hasFooter: boolean;\n hasPanel: boolean;\n}\n\nconst TRANSITION_TIMEOUT = 200;\n\n/**\n * Сайдпейдж\n *\n * Содержит в себе три компоненты: **SidePage.Header**,\n * **SidePage.Body** и **SidePage.Footer**\n *\n * Для отображения серой плашки в футере в компонент\n * **Footer** необходимо передать пропс **panel**\n */\nexport class SidePage extends React.Component<SidePageProps, SidePageState> {\n public static __KONTUR_REACT_UI__ = 'SidePage';\n\n public static Header = SidePageHeader;\n public static Body = SidePageBody;\n public static Footer = SidePageFooter;\n public static Container = SidePageContainer;\n public state: SidePageState = {\n hasHeader: false,\n hasFooter: false,\n hasPanel: false,\n };\n private theme!: Theme;\n private stackSubscription: ModalStackSubscription | null = null;\n private layoutRef: HTMLElement | null = null;\n private footer: SidePageFooter | null = null;\n\n public componentDidMount() {\n window.addEventListener('keydown', this.handleKeyDown);\n this.stackSubscription = ModalStack.add(this, this.handleStackChange);\n }\n\n public componentWillUnmount() {\n window.removeEventListener('keydown', this.handleKeyDown);\n if (this.stackSubscription != null) {\n this.stackSubscription.remove();\n }\n ModalStack.remove(this);\n }\n\n /**\n * Обновляет разметку компонента.\n * @public\n */\n public updateLayout = (): void => {\n if (this.footer) {\n this.footer.update();\n }\n };\n\n public static defaultProps = {\n disableAnimations: isTestEnv,\n disableFocusLock: true,\n offset: 0,\n };\n\n public render(): JSX.Element {\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 { blockBackground, disableAnimations } = this.props;\n\n return (\n <CommonWrapper {...this.props}>\n <RenderContainer>\n <div>\n {blockBackground && this.renderShadow()}\n <CSSTransition\n in\n classNames={this.getTransitionNames()}\n appear={!disableAnimations}\n enter={!disableAnimations}\n exit={false}\n timeout={{\n enter: TRANSITION_TIMEOUT,\n exit: TRANSITION_TIMEOUT,\n }}\n >\n {this.renderContainer()}\n </CSSTransition>\n </div>\n </RenderContainer>\n </CommonWrapper>\n );\n }\n\n private renderContainer(): JSX.Element {\n const { width, blockBackground, fromLeft, disableFocusLock, offset } = this.props;\n\n return (\n <ZIndex\n priority={'Sidepage'}\n data-tid=\"SidePage__root\"\n className={cx({\n [styles.root()]: true,\n })}\n onScroll={LayoutEvents.emit}\n createStackingContext\n style={{\n width: width || (blockBackground ? 800 : 500),\n right: fromLeft ? 'auto' : offset,\n left: fromLeft ? offset : 'auto',\n }}\n >\n <FocusLock disabled={disableFocusLock || !blockBackground} autoFocus={false} className={styles.focusLock()}>\n <RenderLayer onClickOutside={this.handleClickOutside} active>\n <div\n data-tid=\"SidePage__container\"\n className={cx(styles.wrapper(this.theme), {\n [styles.wrapperLeft()]: fromLeft,\n [styles.wrapperMarginLeft()]: this.state.hasMargin && fromLeft,\n [styles.wrapperMarginRight()]: this.state.hasMargin && !fromLeft,\n [styles.shadow(this.theme)]: this.state.hasShadow,\n })}\n ref={(_) => (this.layoutRef = _)}\n >\n <SidePageContext.Provider value={this.getSidePageContextProps()}>\n {this.props.children}\n </SidePageContext.Provider>\n </div>\n </RenderLayer>\n </FocusLock>\n </ZIndex>\n );\n }\n\n private getSidePageContextProps = (): SidePageContextType => {\n return {\n hasHeader: this.state.hasHeader,\n hasFooter: this.state.hasFooter,\n hasPanel: this.state.hasPanel,\n requestClose: this.requestClose,\n getWidth: this.getWidth,\n updateLayout: this.updateLayout,\n footerRef: this.footerRef,\n setHasHeader: this.setHasHeader,\n setHasFooter: this.setHasFooter,\n setHasPanel: this.setHasPanel,\n };\n };\n\n private getWidth = () => {\n if (!this.layoutRef) {\n return 'auto';\n }\n return this.layoutRef.clientWidth;\n };\n\n private renderShadow(): JSX.Element {\n return (\n <ZIndex priority={'Sidepage'} className={styles.overlay()} onScroll={LayoutEvents.emit}>\n <HideBodyVerticalScroll key=\"hbvs\" />\n <div\n key=\"overlay\"\n className={cx({\n [styles.background()]: true,\n [styles.backgroundGray(this.theme)]: this.state.hasBackground,\n })}\n />\n </ZIndex>\n );\n }\n\n private getTransitionNames(): Record<string, string> {\n const transition = this.props.fromLeft ? styles.transitionRight : styles.transitionLeft;\n\n return {\n enter: transition(),\n enterActive: styles.transitionActive(),\n exit: styles.transitionLeave(),\n exitActive: styles.transitionLeaveActive(),\n appear: transition(),\n appearActive: styles.transitionActive(),\n };\n }\n\n private handleStackChange = (stack: ReadonlyArray<React.Component>) => {\n const sidePages = stack.filter((x) => x instanceof SidePage && x.props.fromLeft === this.props.fromLeft);\n const currentSidePagePosition = sidePages.indexOf(this);\n\n const hasMargin = sidePages.length > 1 && currentSidePagePosition === sidePages.length - 1;\n const hasShadow = sidePages.length < 3 || currentSidePagePosition > sidePages.length - 3;\n const hasBackground = ModalStack.isBlocking(this);\n\n this.setState({\n stackPosition: stack.indexOf(this),\n hasMargin,\n hasShadow,\n hasBackground,\n });\n };\n\n private handleClickOutside = (e: Event) => {\n if (this.state.stackPosition === 0 && !this.props.ignoreBackgroundClick) {\n // ignore mousedown on window scrollbar\n if (e instanceof MouseEvent && e.clientX > document.documentElement.clientWidth) {\n return;\n }\n this.requestClose();\n }\n };\n\n private handleKeyDown = (e: KeyboardEvent) => {\n if (this.state.stackPosition !== 0) {\n return;\n }\n if (isKeyEscape(e)) {\n stopPropagation(e);\n this.requestClose();\n }\n };\n\n private requestClose = () => {\n if (this.props.disableClose) {\n return;\n }\n if (this.props.onClose) {\n this.props.onClose();\n }\n };\n\n private footerRef = (ref: SidePageFooter | null) => {\n this.footer = ref;\n };\n\n private setHasHeader = (hasHeader = true) => {\n this.state.hasHeader !== hasHeader && this.setState({ hasHeader });\n };\n\n private setHasFooter = (hasFooter = true) => {\n this.state.hasFooter !== hasFooter && this.setState({ hasFooter });\n };\n\n private setHasPanel = (hasPanel = false) => {\n this.state.hasPanel !== hasPanel && this.setState({ hasPanel });\n };\n}\n"]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";exports.__esModule = true;exports.fixFirefoxModifiedClickOnLabel = void 0;
|
|
2
|
+
|
|
3
|
+
var _client = require("../client");
|
|
4
|
+
|
|
5
|
+
// Checkbox not checked in Firefox if key of modifier was active
|
|
6
|
+
// shift+click, ctrl+click on Win and cmd+click on Mac
|
|
7
|
+
// https://bugzilla.mozilla.org/show_bug.cgi?id=559506
|
|
8
|
+
var fixFirefoxModifiedClickOnLabel =
|
|
9
|
+
function fixFirefoxModifiedClickOnLabel(ref) {return function (e) {
|
|
10
|
+
var input = ref.current;
|
|
11
|
+
if (input && !input.disabled && _client.isFirefox && (e.shiftKey || e.ctrlKey || e.metaKey)) {
|
|
12
|
+
// Currently only valid for Radio and Checkbox
|
|
13
|
+
input.checked = !input.checked;
|
|
14
|
+
var type = input.type;
|
|
15
|
+
input.type = 'text';
|
|
16
|
+
e.persist();
|
|
17
|
+
input.dispatchEvent(new MouseEvent('change', e.nativeEvent));
|
|
18
|
+
input.type = type;
|
|
19
|
+
}
|
|
20
|
+
};};exports.fixFirefoxModifiedClickOnLabel = fixFirefoxModifiedClickOnLabel;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["fixFirefoxModifiedClickOnLabel.ts"],"names":["fixFirefoxModifiedClickOnLabel","ref","e","input","current","disabled","isFirefox","shiftKey","ctrlKey","metaKey","checked","type","persist","dispatchEvent","MouseEvent","nativeEvent"],"mappings":";;AAEA;;AAEA;AACA;AACA;AACO,IAAMA,8BAA8B;AACzC,SADWA,8BACX,CAACC,GAAD,UAA4C,UAACC,CAAD,EAA2C;AACrF,QAAMC,KAAK,GAAGF,GAAG,CAACG,OAAlB;AACA,QAAID,KAAK,IAAI,CAACA,KAAK,CAACE,QAAhB,IAA4BC,iBAA5B,KAA0CJ,CAAC,CAACK,QAAF,IAAcL,CAAC,CAACM,OAAhB,IAA2BN,CAAC,CAACO,OAAvE,CAAJ,EAAqF;AACnF;AACAN,MAAAA,KAAK,CAACO,OAAN,GAAgB,CAACP,KAAK,CAACO,OAAvB;AACA,UAAMC,IAAI,GAAGR,KAAK,CAACQ,IAAnB;AACAR,MAAAA,KAAK,CAACQ,IAAN,GAAa,MAAb;AACAT,MAAAA,CAAC,CAACU,OAAF;AACAT,MAAAA,KAAK,CAACU,aAAN,CAAoB,IAAIC,UAAJ,CAAe,QAAf,EAAyBZ,CAAC,CAACa,WAA3B,CAApB;AACAZ,MAAAA,KAAK,CAACQ,IAAN,GAAaA,IAAb;AACD;AACF,GAXD,EADK,C","sourcesContent":["import React from 'react';\n\nimport { isFirefox } from '../client';\n\n// Checkbox not checked in Firefox if key of modifier was active\n// shift+click, ctrl+click on Win and cmd+click on Mac\n// https://bugzilla.mozilla.org/show_bug.cgi?id=559506\nexport const fixFirefoxModifiedClickOnLabel =\n (ref: React.RefObject<HTMLInputElement>) => (e: React.MouseEvent<HTMLLabelElement>) => {\n const input = ref.current;\n if (input && !input.disabled && isFirefox && (e.shiftKey || e.ctrlKey || e.metaKey)) {\n // Currently only valid for Radio and Checkbox\n input.checked = !input.checked;\n const type = input.type;\n input.type = 'text';\n e.persist();\n input.dispatchEvent(new MouseEvent('change', e.nativeEvent));\n input.type = type;\n }\n };\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["getDisplayName.ts"],"names":["getDisplayName","RC","displayName","name"],"mappings":";;;;AAIO,SAASA,cAAT;AACLC,EADK;AAEG;AACR,SAAOA,EAAE,CAACC,WAAH,IAAkBD,EAAE,CAACE,IAArB,IAA6B,WAApC;AACD","sourcesContent":["import React from 'react';\n\nimport { ReactUIComponentWithRef } from './forwardRefAndName';\n\nexport function getDisplayName<P>(\n RC: React.ComponentType<P> | React.FunctionComponent<P> | ReactUIComponentWithRef<any, P>,\n): string {\n return RC.displayName || RC.name || 'Anonymous';\n}\n"]}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ReactUIComponentWithRef } from './forwardRefAndName';
|
|
3
|
+
/**
|
|
4
|
+
* HOC for moving from Class to Functional components.
|
|
5
|
+
*
|
|
6
|
+
* Used to remove distinctions between Class and Functional refs.
|
|
7
|
+
*
|
|
8
|
+
* @param RFC Functional component wrapped in forwardRefAndName.
|
|
9
|
+
* @returns Class component that wraps Functional component.
|
|
10
|
+
*/
|
|
11
|
+
export declare function withClassWrapper<T, P>(RFC: ReactUIComponentWithRef<T, P>): {
|
|
12
|
+
new (props: P | Readonly<P>): {
|
|
13
|
+
instancePropertiesRef: React.RefObject<T>;
|
|
14
|
+
componentDidMount(): void;
|
|
15
|
+
render(): JSX.Element;
|
|
16
|
+
context: any;
|
|
17
|
+
setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<P>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
|
|
18
|
+
forceUpdate(callback?: (() => void) | undefined): void;
|
|
19
|
+
readonly props: Readonly<P> & Readonly<{
|
|
20
|
+
children?: React.ReactNode;
|
|
21
|
+
}>;
|
|
22
|
+
state: Readonly<{}>;
|
|
23
|
+
refs: {
|
|
24
|
+
[key: string]: React.ReactInstance;
|
|
25
|
+
};
|
|
26
|
+
shouldComponentUpdate?(nextProps: Readonly<P>, nextState: Readonly<{}>, nextContext: any): boolean;
|
|
27
|
+
componentWillUnmount?(): void;
|
|
28
|
+
componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
|
|
29
|
+
getSnapshotBeforeUpdate?(prevProps: Readonly<P>, prevState: Readonly<{}>): any;
|
|
30
|
+
componentDidUpdate?(prevProps: Readonly<P>, prevState: Readonly<{}>, snapshot?: any): void;
|
|
31
|
+
componentWillMount?(): void;
|
|
32
|
+
UNSAFE_componentWillMount?(): void;
|
|
33
|
+
componentWillReceiveProps?(nextProps: Readonly<P>, nextContext: any): void;
|
|
34
|
+
UNSAFE_componentWillReceiveProps?(nextProps: Readonly<P>, nextContext: any): void;
|
|
35
|
+
componentWillUpdate?(nextProps: Readonly<P>, nextState: Readonly<{}>, nextContext: any): void;
|
|
36
|
+
UNSAFE_componentWillUpdate?(nextProps: Readonly<P>, nextState: Readonly<{}>, nextContext: any): void;
|
|
37
|
+
};
|
|
38
|
+
new (props: P, context: any): {
|
|
39
|
+
instancePropertiesRef: React.RefObject<T>;
|
|
40
|
+
componentDidMount(): void;
|
|
41
|
+
render(): JSX.Element;
|
|
42
|
+
context: any;
|
|
43
|
+
setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<P>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
|
|
44
|
+
forceUpdate(callback?: (() => void) | undefined): void;
|
|
45
|
+
readonly props: Readonly<P> & Readonly<{
|
|
46
|
+
children?: React.ReactNode;
|
|
47
|
+
}>;
|
|
48
|
+
state: Readonly<{}>;
|
|
49
|
+
refs: {
|
|
50
|
+
[key: string]: React.ReactInstance;
|
|
51
|
+
};
|
|
52
|
+
shouldComponentUpdate?(nextProps: Readonly<P>, nextState: Readonly<{}>, nextContext: any): boolean;
|
|
53
|
+
componentWillUnmount?(): void;
|
|
54
|
+
componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
|
|
55
|
+
getSnapshotBeforeUpdate?(prevProps: Readonly<P>, prevState: Readonly<{}>): any;
|
|
56
|
+
componentDidUpdate?(prevProps: Readonly<P>, prevState: Readonly<{}>, snapshot?: any): void;
|
|
57
|
+
componentWillMount?(): void;
|
|
58
|
+
UNSAFE_componentWillMount?(): void;
|
|
59
|
+
componentWillReceiveProps?(nextProps: Readonly<P>, nextContext: any): void;
|
|
60
|
+
UNSAFE_componentWillReceiveProps?(nextProps: Readonly<P>, nextContext: any): void;
|
|
61
|
+
componentWillUpdate?(nextProps: Readonly<P>, nextState: Readonly<{}>, nextContext: any): void;
|
|
62
|
+
UNSAFE_componentWillUpdate?(nextProps: Readonly<P>, nextState: Readonly<{}>, nextContext: any): void;
|
|
63
|
+
};
|
|
64
|
+
__KONTUR_REACT_UI__: string;
|
|
65
|
+
displayName: string;
|
|
66
|
+
FC: ReactUIComponentWithRef<T, P>;
|
|
67
|
+
contextType?: React.Context<any> | undefined;
|
|
68
|
+
};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.withClassWrapper = withClassWrapper;var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));var _react = _interopRequireDefault(require("react"));
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
var _getDisplayName = require("./getDisplayName");
|
|
5
|
+
|
|
6
|
+
var removePostfix = function removePostfix(word, postfixRegex) {
|
|
7
|
+
var regexContent = postfixRegex.source.replace(/\$$/, '');
|
|
8
|
+
|
|
9
|
+
var isCorrectPostfix = postfixRegex.test(word);
|
|
10
|
+
if (!isCorrectPostfix) {
|
|
11
|
+
throw new Error("Component's displayName property must end with '" +
|
|
12
|
+
regexContent + "' in order to be wrapped in withClassWrapper HOC");
|
|
13
|
+
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
return word.replace(postfixRegex, '');
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* HOC for moving from Class to Functional components.
|
|
21
|
+
*
|
|
22
|
+
* Used to remove distinctions between Class and Functional refs.
|
|
23
|
+
*
|
|
24
|
+
* @param RFC Functional component wrapped in forwardRefAndName.
|
|
25
|
+
* @returns Class component that wraps Functional component.
|
|
26
|
+
*/
|
|
27
|
+
function withClassWrapper(RFC) {var _class, _temp;
|
|
28
|
+
var fullName = (0, _getDisplayName.getDisplayName)(RFC);
|
|
29
|
+
var nameWithoutPostfix = removePostfix(fullName, /FC$/);
|
|
30
|
+
|
|
31
|
+
return _temp = _class = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default)(ClassWrapper, _React$Component);function ClassWrapper() {var _this;for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {args[_key] = arguments[_key];}_this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;_this.
|
|
32
|
+
instancePropertiesRef = /*#__PURE__*/_react.default.createRef();return _this;}var _proto = ClassWrapper.prototype;_proto.
|
|
33
|
+
|
|
34
|
+
componentDidMount = function componentDidMount() {
|
|
35
|
+
if (this.instancePropertiesRef.current) {
|
|
36
|
+
Object.defineProperties(this, Object.getOwnPropertyDescriptors(this.instancePropertiesRef.current));
|
|
37
|
+
}
|
|
38
|
+
};_proto.
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
render = function render() {
|
|
46
|
+
return /*#__PURE__*/ (
|
|
47
|
+
// TypeScript is not able to understand
|
|
48
|
+
// that both types (class one and functional one)
|
|
49
|
+
// have ref at the build stage.
|
|
50
|
+
// @ts-ignore
|
|
51
|
+
_react.default.createElement(ClassWrapper.FC, (0, _extends2.default)({
|
|
52
|
+
// Returns methods defined in useImperativeHandle.
|
|
53
|
+
instanceRef: this.instancePropertiesRef },
|
|
54
|
+
this.props)));
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
};return ClassWrapper;}(_react.default.Component), _class.__KONTUR_REACT_UI__ = nameWithoutPostfix, _class.displayName = nameWithoutPostfix, _class.FC = RFC, _temp;
|
|
58
|
+
|
|
59
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["withClassWrapper.tsx"],"names":["removePostfix","word","postfixRegex","regexContent","source","replace","isCorrectPostfix","test","Error","withClassWrapper","RFC","fullName","nameWithoutPostfix","instancePropertiesRef","React","createRef","componentDidMount","current","Object","defineProperties","getOwnPropertyDescriptors","render","props","Component","__KONTUR_REACT_UI__","displayName","FC"],"mappings":"wVAAA;;;AAGA;;AAEA,IAAMA,aAAa,GAAG,SAAhBA,aAAgB,CAACC,IAAD,EAAeC,YAAf,EAAwC;AAC5D,MAAMC,YAAY,GAAGD,YAAY,CAACE,MAAb,CAAoBC,OAApB,CAA4B,KAA5B,EAAmC,EAAnC,CAArB;;AAEA,MAAMC,gBAAgB,GAAGJ,YAAY,CAACK,IAAb,CAAkBN,IAAlB,CAAzB;AACA,MAAI,CAACK,gBAAL,EAAuB;AACrB,UAAM,IAAIE,KAAJ;AAC+CL,IAAAA,YAD/C,sDAAN;;AAGD;;AAED,SAAOF,IAAI,CAACI,OAAL,CAAaH,YAAb,EAA2B,EAA3B,CAAP;AACD,CAXD;;AAaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASO,gBAAT,CAAgCC,GAAhC,EAAoE;AACzE,MAAMC,QAAQ,GAAG,oCAAeD,GAAf,CAAjB;AACA,MAAME,kBAAkB,GAAGZ,aAAa,CAACW,QAAD,EAAW,KAAX,CAAxC;;AAEA;AACSE,MAAAA,qBADT,gBACiCC,eAAMC,SAAN,EADjC;;AAGEC,IAAAA,iBAHF,GAGE,6BAAoB;AAClB,UAAI,KAAKH,qBAAL,CAA2BI,OAA/B,EAAwC;AACtCC,QAAAA,MAAM,CAACC,gBAAP,CAAwB,IAAxB,EAA8BD,MAAM,CAACE,yBAAP,CAAiC,KAAKP,qBAAL,CAA2BI,OAA5D,CAA9B;AACD;AACF,KAPH;;;;;;;AAcEI,IAAAA,MAdF,GAcE,kBAAS;AACP;AACE;AACA;AACA;AACA;AACA,qCAAC,YAAD,CAAc,EAAd;AACE;AACA,UAAA,WAAW,EAAE,KAAKR,qBAFpB;AAGM,aAAKS,KAHX,EALF;;;AAWD,KA1BH,uBAAkCR,eAAMS,SAAxC,UASgBC,mBAThB,GASsCZ,kBATtC,SAUgBa,WAVhB,GAU8Bb,kBAV9B,SAYgBc,EAZhB,GAYqBhB,GAZrB;;AA4BD","sourcesContent":["import React from 'react';\n\nimport { ReactUIComponentWithRef } from './forwardRefAndName';\nimport { getDisplayName } from './getDisplayName';\n\nconst removePostfix = (word: string, postfixRegex: RegExp) => {\n const regexContent = postfixRegex.source.replace(/\\$$/, '');\n\n const isCorrectPostfix = postfixRegex.test(word);\n if (!isCorrectPostfix) {\n throw new Error(\n `Component's displayName property must end with '${regexContent}' in order to be wrapped in withClassWrapper HOC`,\n );\n }\n\n return word.replace(postfixRegex, '');\n};\n\n/**\n * HOC for moving from Class to Functional components.\n *\n * Used to remove distinctions between Class and Functional refs.\n *\n * @param RFC Functional component wrapped in forwardRefAndName.\n * @returns Class component that wraps Functional component.\n */\nexport function withClassWrapper<T, P>(RFC: ReactUIComponentWithRef<T, P>) {\n const fullName = getDisplayName(RFC);\n const nameWithoutPostfix = removePostfix(fullName, /FC$/);\n\n return class ClassWrapper extends React.Component<P> {\n public instancePropertiesRef = React.createRef<T>();\n\n componentDidMount() {\n if (this.instancePropertiesRef.current) {\n Object.defineProperties(this, Object.getOwnPropertyDescriptors(this.instancePropertiesRef.current));\n }\n }\n\n public static __KONTUR_REACT_UI__ = nameWithoutPostfix;\n public static displayName = nameWithoutPostfix;\n\n public static FC = RFC;\n\n render() {\n return (\n // TypeScript is not able to understand\n // that both types (class one and functional one)\n // have ref at the build stage.\n // @ts-ignore\n <ClassWrapper.FC\n // Returns methods defined in useImperativeHandle.\n instanceRef={this.instancePropertiesRef}\n {...this.props}\n />\n );\n }\n };\n}\n"]}
|
|
@@ -65,6 +65,16 @@ export var Button = /*#__PURE__*/function (_React$Component) {
|
|
|
65
65
|
keyListener.isTabPressed = true;
|
|
66
66
|
this.focus();
|
|
67
67
|
}
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
Button.getDerivedStateFromProps = function getDerivedStateFromProps(props) {
|
|
71
|
+
if (props.loading || props.disabled) {
|
|
72
|
+
return {
|
|
73
|
+
focusedByTab: false
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
return null;
|
|
68
78
|
}
|
|
69
79
|
/**
|
|
70
80
|
* @public
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Button.tsx"],"names":["React","isIE11","isEdge","keyListener","ThemeContext","Spinner","CommonWrapper","cx","styles","activeStyles","globalClasses","Corners","Button","state","focusedByTab","theme","node","handleFocus","e","props","disabled","disableFocus","requestAnimationFrame","isTabPressed","setState","onFocus","handleBlur","onBlur","_ref","componentDidMount","autoFocus","focus","blur","render","renderMain","corners","active","borderless","checked","error","warning","loading","arrow","narrow","icon","_noPadding","_noRightPadding","use","defaultProps","visuallyFocused","align","onMouseEnter","onMouseLeave","onMouseOver","onKeyDown","onClick","width","children","sizeClass","getSizeClassName","isFocused","isLink","rootProps","type","className","root","checkedDisabled","noPadding","noRightPadding","style","borderTopLeftRadius","TOP_LEFT","undefined","borderTopRightRadius","TOP_RIGHT","borderBottomRightRadius","BOTTOM_RIGHT","borderBottomLeftRadius","BOTTOM_LEFT","textAlign","tabIndex","title","wrapProps","wrap","wrapArrow","wrapArrowLeft","outlineNode","outline","outlineWarning","outlineError","outlineLink","outlineLinkWarning","outlineLinkError","loadingNode","getLoadingSpinner","iconNode","getSizeIconClassName","iconNoRightPadding","iconLink","arrowNode","arrowWarning","arrowError","arrowFocus","arrowLeft","arrowHelper","arrowHelperTop","arrowHelperBottom","link","linkFocus","linkDisabled","Object","assign","wrapLink","caption","captionTranslated","captionLink","captionDisabled","visibilityHidden","size","sizeLarge","sizeLargeIE11","sizeMedium","sizeMediumIE11","sizeSmall","sizeSmallIE11","iconLarge","iconMedium","iconSmall","Component","__KONTUR_REACT_UI__","__BUTTON__","isButton","child","isValidElement","prototype","hasOwnProperty","call"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { isIE11, isEdge } from '../../lib/client';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Spinner } from '../Spinner';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles, activeStyles, globalClasses } from './Button.styles';\nimport { Corners } from './Corners';\n\nexport type ButtonSize = 'small' | 'medium' | 'large';\nexport type ButtonType = 'button' | 'submit' | 'reset';\nexport type ButtonUse = 'default' | 'primary' | 'success' | 'danger' | 'pay' | 'link';\n\nexport interface ButtonProps extends CommonProps {\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?: number;\n\n /**\n * Отключенное состояние кнопки.\n */\n disabled?: boolean;\n\n /** @ignore */\n disableFocus?: boolean;\n\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n\n /**\n * Иконка слева от текста кнопки.\n */\n icon?: React.ReactElement<any>;\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?: ButtonSize;\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\"`.\n */\n use?: ButtonUse;\n\n /** @ignore */\n visuallyFocused?: boolean;\n\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n\n /**\n * CSS-свойство `width`.\n */\n width?: number | string;\n}\n\nexport interface ButtonState {\n focusedByTab: boolean;\n}\n\nexport class Button extends React.Component<ButtonProps, ButtonState> {\n public static __KONTUR_REACT_UI__ = 'Button';\n public static __BUTTON__ = true;\n public static TOP_LEFT = Corners.TOP_LEFT;\n public static TOP_RIGHT = Corners.TOP_RIGHT;\n public static BOTTOM_RIGHT = Corners.BOTTOM_RIGHT;\n public static BOTTOM_LEFT = Corners.BOTTOM_LEFT;\n\n public static defaultProps = {\n use: 'default' as ButtonUse,\n size: 'small' as ButtonSize,\n type: 'button' as ButtonType,\n };\n\n public state = {\n focusedByTab: false,\n };\n\n private theme!: Theme;\n private node: HTMLButtonElement | null = null;\n\n public componentDidMount() {\n if (this.props.autoFocus) {\n keyListener.isTabPressed = true;\n this.focus();\n }\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 = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const {\n corners = 0,\n active,\n disabled,\n borderless,\n checked,\n error,\n warning,\n loading,\n arrow,\n narrow,\n icon,\n _noPadding,\n _noRightPadding,\n use = Button.defaultProps.use,\n visuallyFocused,\n align,\n disableFocus,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onKeyDown,\n onClick,\n width,\n children,\n } = this.props;\n const sizeClass = this.getSizeClassName();\n\n const isFocused = this.state.focusedByTab || visuallyFocused;\n const isLink = use === 'link';\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: this.props.type,\n className: cx({\n [styles.root(this.theme)]: true,\n [styles[use](this.theme)]: true,\n [activeStyles[use](this.theme)]: active,\n [sizeClass]: true,\n [styles.focus(this.theme)]: isFocused && !checked,\n [styles.checked(this.theme)]: checked,\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 style: {\n borderTopLeftRadius: corners & Corners.TOP_LEFT ? 0 : undefined,\n borderTopRightRadius: corners & Corners.TOP_RIGHT ? 0 : undefined,\n borderBottomRightRadius: corners & Corners.BOTTOM_RIGHT ? 0 : undefined,\n borderBottomLeftRadius: corners & Corners.BOTTOM_LEFT ? 0 : undefined,\n textAlign: align,\n },\n disabled: disabled || loading,\n onClick: onClick,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onKeyDown: onKeyDown,\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave,\n onMouseOver: onMouseOver,\n tabIndex: disableFocus ? -1 : 0,\n title: this.props.title,\n };\n\n const wrapProps = {\n className: cx({\n [styles.wrap()]: true,\n [styles.wrapArrow()]: arrow === true,\n [styles.wrapArrowLeft()]: arrow === 'left',\n }),\n style: {\n width: width,\n },\n };\n\n let outlineNode = null;\n if (!isFocused || isLink) {\n outlineNode = (\n <div\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 let loadingNode = null;\n if (loading && !icon) {\n loadingNode = <div className={styles.loading()}>{this.getLoadingSpinner()}</div>;\n }\n\n let iconNode = null;\n if (icon) {\n iconNode = (\n <span\n className={cx(styles.icon(), this.getSizeIconClassName(), {\n [styles.iconNoRightPadding()]: !children,\n [styles.iconLink(this.theme)]: isLink,\n })}\n >\n {loading ? this.getLoadingSpinner() : icon}\n </span>\n );\n }\n\n let arrowNode = null;\n if (arrow) {\n arrowNode = (\n <div\n className={cx({\n [styles.arrow()]: true,\n [styles.arrowWarning(this.theme)]: !checked && warning,\n [styles.arrowError(this.theme)]: !checked && error,\n [styles.arrowFocus(this.theme)]: !checked && isFocused,\n [styles.arrowLeft()]: arrow === 'left',\n })}\n >\n <div className={cx(globalClasses.arrowHelper, globalClasses.arrowHelperTop)} />\n <div className={cx(globalClasses.arrowHelper, globalClasses.arrowHelperBottom)} />\n </div>\n );\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.linkFocus(this.theme)]: isFocused,\n [styles.linkDisabled(this.theme)]: disabled || loading,\n });\n Object.assign(wrapProps, {\n className: cx(styles.wrap(), styles.wrapLink()),\n style: { width: wrapProps.style.width },\n });\n rootProps.style.textAlign = undefined;\n arrowNode = null;\n }\n\n return (\n <CommonWrapper {...this.props}>\n <span {...wrapProps}>\n <button ref={this._ref} {...rootProps}>\n {outlineNode}\n {loadingNode}\n {arrowNode}\n <div\n className={cx(styles.caption(), globalClasses.caption, {\n [styles.captionTranslated()]: active || checked,\n [styles.captionLink()]: isLink,\n [styles.captionDisabled()]: !checked && disabled,\n })}\n >\n {iconNode}\n <span className={cx({ [styles.visibilityHidden()]: !!loadingNode })}>{children}</span>\n </div>\n </button>\n </span>\n </CommonWrapper>\n );\n }\n\n private getLoadingSpinner() {\n return <Spinner caption={null} dimmed type=\"mini\" />;\n }\n\n private getSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return cx(styles.sizeLarge(this.theme), { [styles.sizeLargeIE11(this.theme)]: isIE11 || isEdge });\n case 'medium':\n return cx(styles.sizeMedium(this.theme), { [styles.sizeMediumIE11(this.theme)]: isIE11 || isEdge });\n case 'small':\n default:\n return cx(styles.sizeSmall(this.theme), { [styles.sizeSmallIE11(this.theme)]: isIE11 || isEdge });\n }\n }\n\n private getSizeIconClassName() {\n switch (this.props.size) {\n case 'large':\n return styles.iconLarge(this.theme);\n case 'medium':\n return styles.iconMedium(this.theme);\n case 'small':\n default:\n return styles.iconSmall(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 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 = (child: React.ReactChild): child is React.ReactElement<ButtonProps> => {\n return React.isValidElement<ButtonProps>(child)\n ? Object.prototype.hasOwnProperty.call(child.type, '__BUTTON__')\n : false;\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["Button.tsx"],"names":["React","isIE11","isEdge","keyListener","ThemeContext","Spinner","CommonWrapper","cx","styles","activeStyles","globalClasses","Corners","Button","state","focusedByTab","theme","node","handleFocus","e","props","disabled","disableFocus","requestAnimationFrame","isTabPressed","setState","onFocus","handleBlur","onBlur","_ref","componentDidMount","autoFocus","focus","getDerivedStateFromProps","loading","blur","render","renderMain","corners","active","borderless","checked","error","warning","arrow","narrow","icon","_noPadding","_noRightPadding","use","defaultProps","visuallyFocused","align","onMouseEnter","onMouseLeave","onMouseOver","onKeyDown","onClick","width","children","sizeClass","getSizeClassName","isFocused","isLink","rootProps","type","className","root","checkedDisabled","noPadding","noRightPadding","style","borderTopLeftRadius","TOP_LEFT","undefined","borderTopRightRadius","TOP_RIGHT","borderBottomRightRadius","BOTTOM_RIGHT","borderBottomLeftRadius","BOTTOM_LEFT","textAlign","tabIndex","title","wrapProps","wrap","wrapArrow","wrapArrowLeft","outlineNode","outline","outlineWarning","outlineError","outlineLink","outlineLinkWarning","outlineLinkError","loadingNode","getLoadingSpinner","iconNode","getSizeIconClassName","iconNoRightPadding","iconLink","arrowNode","arrowWarning","arrowError","arrowFocus","arrowLeft","arrowHelper","arrowHelperTop","arrowHelperBottom","link","linkFocus","linkDisabled","Object","assign","wrapLink","caption","captionTranslated","captionLink","captionDisabled","visibilityHidden","size","sizeLarge","sizeLargeIE11","sizeMedium","sizeMediumIE11","sizeSmall","sizeSmallIE11","iconLarge","iconMedium","iconSmall","Component","__KONTUR_REACT_UI__","__BUTTON__","isButton","child","isValidElement","prototype","hasOwnProperty","call"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { isIE11, isEdge } from '../../lib/client';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Spinner } from '../Spinner';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles, activeStyles, globalClasses } from './Button.styles';\nimport { Corners } from './Corners';\n\nexport type ButtonSize = 'small' | 'medium' | 'large';\nexport type ButtonType = 'button' | 'submit' | 'reset';\nexport type ButtonUse = 'default' | 'primary' | 'success' | 'danger' | 'pay' | 'link';\n\nexport interface ButtonProps extends CommonProps {\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?: number;\n\n /**\n * Отключенное состояние кнопки.\n */\n disabled?: boolean;\n\n /** @ignore */\n disableFocus?: boolean;\n\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n\n /**\n * Иконка слева от текста кнопки.\n */\n icon?: React.ReactElement<any>;\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?: ButtonSize;\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\"`.\n */\n use?: ButtonUse;\n\n /** @ignore */\n visuallyFocused?: boolean;\n\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n\n /**\n * CSS-свойство `width`.\n */\n width?: number | string;\n}\n\nexport interface ButtonState {\n focusedByTab: boolean;\n}\n\nexport class Button extends React.Component<ButtonProps, ButtonState> {\n public static __KONTUR_REACT_UI__ = 'Button';\n public static __BUTTON__ = true;\n public static TOP_LEFT = Corners.TOP_LEFT;\n public static TOP_RIGHT = Corners.TOP_RIGHT;\n public static BOTTOM_RIGHT = Corners.BOTTOM_RIGHT;\n public static BOTTOM_LEFT = Corners.BOTTOM_LEFT;\n\n public static defaultProps = {\n use: 'default' as ButtonUse,\n size: 'small' as ButtonSize,\n type: 'button' as ButtonType,\n };\n\n public state = {\n focusedByTab: false,\n };\n\n private theme!: Theme;\n private node: HTMLButtonElement | null = null;\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 = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const {\n corners = 0,\n active,\n disabled,\n borderless,\n checked,\n error,\n warning,\n loading,\n arrow,\n narrow,\n icon,\n _noPadding,\n _noRightPadding,\n use = Button.defaultProps.use,\n visuallyFocused,\n align,\n disableFocus,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onKeyDown,\n onClick,\n width,\n children,\n } = this.props;\n const sizeClass = this.getSizeClassName();\n\n const isFocused = this.state.focusedByTab || visuallyFocused;\n const isLink = use === 'link';\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: this.props.type,\n className: cx({\n [styles.root(this.theme)]: true,\n [styles[use](this.theme)]: true,\n [activeStyles[use](this.theme)]: active,\n [sizeClass]: true,\n [styles.focus(this.theme)]: isFocused && !checked,\n [styles.checked(this.theme)]: checked,\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 style: {\n borderTopLeftRadius: corners & Corners.TOP_LEFT ? 0 : undefined,\n borderTopRightRadius: corners & Corners.TOP_RIGHT ? 0 : undefined,\n borderBottomRightRadius: corners & Corners.BOTTOM_RIGHT ? 0 : undefined,\n borderBottomLeftRadius: corners & Corners.BOTTOM_LEFT ? 0 : undefined,\n textAlign: align,\n },\n disabled: disabled || loading,\n onClick: onClick,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onKeyDown: onKeyDown,\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave,\n onMouseOver: onMouseOver,\n tabIndex: disableFocus ? -1 : 0,\n title: this.props.title,\n };\n\n const wrapProps = {\n className: cx({\n [styles.wrap()]: true,\n [styles.wrapArrow()]: arrow === true,\n [styles.wrapArrowLeft()]: arrow === 'left',\n }),\n style: {\n width: width,\n },\n };\n\n let outlineNode = null;\n if (!isFocused || isLink) {\n outlineNode = (\n <div\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 let loadingNode = null;\n if (loading && !icon) {\n loadingNode = <div className={styles.loading()}>{this.getLoadingSpinner()}</div>;\n }\n\n let iconNode = null;\n if (icon) {\n iconNode = (\n <span\n className={cx(styles.icon(), this.getSizeIconClassName(), {\n [styles.iconNoRightPadding()]: !children,\n [styles.iconLink(this.theme)]: isLink,\n })}\n >\n {loading ? this.getLoadingSpinner() : icon}\n </span>\n );\n }\n\n let arrowNode = null;\n if (arrow) {\n arrowNode = (\n <div\n className={cx({\n [styles.arrow()]: true,\n [styles.arrowWarning(this.theme)]: !checked && warning,\n [styles.arrowError(this.theme)]: !checked && error,\n [styles.arrowFocus(this.theme)]: !checked && isFocused,\n [styles.arrowLeft()]: arrow === 'left',\n })}\n >\n <div className={cx(globalClasses.arrowHelper, globalClasses.arrowHelperTop)} />\n <div className={cx(globalClasses.arrowHelper, globalClasses.arrowHelperBottom)} />\n </div>\n );\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.linkFocus(this.theme)]: isFocused,\n [styles.linkDisabled(this.theme)]: disabled || loading,\n });\n Object.assign(wrapProps, {\n className: cx(styles.wrap(), styles.wrapLink()),\n style: { width: wrapProps.style.width },\n });\n rootProps.style.textAlign = undefined;\n arrowNode = null;\n }\n\n return (\n <CommonWrapper {...this.props}>\n <span {...wrapProps}>\n <button ref={this._ref} {...rootProps}>\n {outlineNode}\n {loadingNode}\n {arrowNode}\n <div\n className={cx(styles.caption(), globalClasses.caption, {\n [styles.captionTranslated()]: active || checked,\n [styles.captionLink()]: isLink,\n [styles.captionDisabled()]: !checked && disabled,\n })}\n >\n {iconNode}\n <span className={cx({ [styles.visibilityHidden()]: !!loadingNode })}>{children}</span>\n </div>\n </button>\n </span>\n </CommonWrapper>\n );\n }\n\n private getLoadingSpinner() {\n return <Spinner caption={null} dimmed type=\"mini\" />;\n }\n\n private getSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return cx(styles.sizeLarge(this.theme), { [styles.sizeLargeIE11(this.theme)]: isIE11 || isEdge });\n case 'medium':\n return cx(styles.sizeMedium(this.theme), { [styles.sizeMediumIE11(this.theme)]: isIE11 || isEdge });\n case 'small':\n default:\n return cx(styles.sizeSmall(this.theme), { [styles.sizeSmallIE11(this.theme)]: isIE11 || isEdge });\n }\n }\n\n private getSizeIconClassName() {\n switch (this.props.size) {\n case 'large':\n return styles.iconLarge(this.theme);\n case 'medium':\n return styles.iconMedium(this.theme);\n case 'small':\n default:\n return styles.iconSmall(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 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 = (child: React.ReactChild): child is React.ReactElement<ButtonProps> => {\n return React.isValidElement<ButtonProps>(child)\n ? Object.prototype.hasOwnProperty.call(child.type, '__BUTTON__')\n : false;\n};\n"]}
|
|
@@ -137,6 +137,9 @@ export declare class Button extends React.Component<ButtonProps, ButtonState> {
|
|
|
137
137
|
private theme;
|
|
138
138
|
private node;
|
|
139
139
|
componentDidMount(): void;
|
|
140
|
+
static getDerivedStateFromProps(props: ButtonProps): {
|
|
141
|
+
focusedByTab: boolean;
|
|
142
|
+
} | null;
|
|
140
143
|
/**
|
|
141
144
|
* @public
|
|
142
145
|
*/
|
|
@@ -9,6 +9,7 @@ import { OkIcon, SquareIcon } from "../../../internal/icons/16px";
|
|
|
9
9
|
import { isEdge, isFirefox, isIE11 } from "../../../lib/client";
|
|
10
10
|
import { CommonWrapper } from "../../../internal/CommonWrapper";
|
|
11
11
|
import { cx } from "../../../lib/theming/Emotion";
|
|
12
|
+
import { fixFirefoxModifiedClickOnLabel } from "../../../lib/events/fixFirefoxModifiedClickOnLabel";
|
|
12
13
|
import { styles, globalClasses } from "../Checkbox.styles";
|
|
13
14
|
export var Checkbox = /*#__PURE__*/function (_React$Component) {
|
|
14
15
|
_inheritsLoose(Checkbox, _React$Component);
|
|
@@ -26,11 +27,11 @@ export var Checkbox = /*#__PURE__*/function (_React$Component) {
|
|
|
26
27
|
indeterminate: _this.props.initialIndeterminate || false
|
|
27
28
|
};
|
|
28
29
|
_this.theme = void 0;
|
|
29
|
-
_this.input =
|
|
30
|
+
_this.input = /*#__PURE__*/React.createRef();
|
|
30
31
|
|
|
31
32
|
_this.componentDidMount = function () {
|
|
32
|
-
if (_this.state.indeterminate && _this.input) {
|
|
33
|
-
_this.input.indeterminate = true;
|
|
33
|
+
if (_this.state.indeterminate && _this.input.current) {
|
|
34
|
+
_this.input.current.indeterminate = true;
|
|
34
35
|
}
|
|
35
36
|
};
|
|
36
37
|
|
|
@@ -39,8 +40,8 @@ export var Checkbox = /*#__PURE__*/function (_React$Component) {
|
|
|
39
40
|
indeterminate: true
|
|
40
41
|
});
|
|
41
42
|
|
|
42
|
-
if (_this.input) {
|
|
43
|
-
_this.input.indeterminate = true;
|
|
43
|
+
if (_this.input.current) {
|
|
44
|
+
_this.input.current.indeterminate = true;
|
|
44
45
|
}
|
|
45
46
|
};
|
|
46
47
|
|
|
@@ -49,8 +50,8 @@ export var Checkbox = /*#__PURE__*/function (_React$Component) {
|
|
|
49
50
|
indeterminate: false
|
|
50
51
|
});
|
|
51
52
|
|
|
52
|
-
if (_this.input) {
|
|
53
|
-
_this.input.indeterminate = false;
|
|
53
|
+
if (_this.input.current) {
|
|
54
|
+
_this.input.current.indeterminate = false;
|
|
54
55
|
}
|
|
55
56
|
};
|
|
56
57
|
|
|
@@ -77,7 +78,7 @@ export var Checkbox = /*#__PURE__*/function (_React$Component) {
|
|
|
77
78
|
onFocus: _this.handleFocus,
|
|
78
79
|
onBlur: _this.handleBlur,
|
|
79
80
|
onClick: _this.handleClick,
|
|
80
|
-
ref: _this.
|
|
81
|
+
ref: _this.input
|
|
81
82
|
});
|
|
82
83
|
|
|
83
84
|
var caption = null;
|
|
@@ -103,7 +104,8 @@ export var Checkbox = /*#__PURE__*/function (_React$Component) {
|
|
|
103
104
|
className: rootClass,
|
|
104
105
|
onMouseEnter: onMouseEnter,
|
|
105
106
|
onMouseLeave: onMouseLeave,
|
|
106
|
-
onMouseOver: onMouseOver
|
|
107
|
+
onMouseOver: onMouseOver,
|
|
108
|
+
onClick: fixFirefoxModifiedClickOnLabel(_this.input)
|
|
107
109
|
}, /*#__PURE__*/React.createElement("input", inputProps), box, caption);
|
|
108
110
|
};
|
|
109
111
|
|
|
@@ -133,10 +135,6 @@ export var Checkbox = /*#__PURE__*/function (_React$Component) {
|
|
|
133
135
|
});
|
|
134
136
|
};
|
|
135
137
|
|
|
136
|
-
_this.inputRef = function (ref) {
|
|
137
|
-
_this.input = ref;
|
|
138
|
-
};
|
|
139
|
-
|
|
140
138
|
_this.handleChange = function (event) {
|
|
141
139
|
var checked = event.currentTarget.checked;
|
|
142
140
|
_this.props.onValueChange == null ? void 0 : _this.props.onValueChange(checked);
|
|
@@ -155,12 +153,12 @@ export var Checkbox = /*#__PURE__*/function (_React$Component) {
|
|
|
155
153
|
// because we cant simulate real native onChange event
|
|
156
154
|
|
|
157
155
|
|
|
158
|
-
if (_this.props.onValueChange && _this.input) {
|
|
159
|
-
var checked = !_this.input.checked;
|
|
156
|
+
if (_this.props.onValueChange && _this.input.current) {
|
|
157
|
+
var checked = !_this.input.current.checked;
|
|
160
158
|
|
|
161
159
|
if (_this.props.checked === undefined) {
|
|
162
160
|
// in case of uncontrolled mode
|
|
163
|
-
_this.input.checked = checked;
|
|
161
|
+
_this.input.current.checked = checked;
|
|
164
162
|
}
|
|
165
163
|
|
|
166
164
|
_this.props.onValueChange(checked);
|
|
@@ -194,10 +192,10 @@ export var Checkbox = /*#__PURE__*/function (_React$Component) {
|
|
|
194
192
|
;
|
|
195
193
|
|
|
196
194
|
_proto.focus = function focus() {
|
|
197
|
-
var _this$input;
|
|
195
|
+
var _this$input$current;
|
|
198
196
|
|
|
199
197
|
keyListener.isTabPressed = true;
|
|
200
|
-
(_this$input = this.input) == null ? void 0 : _this$input.focus();
|
|
198
|
+
(_this$input$current = this.input.current) == null ? void 0 : _this$input$current.focus();
|
|
201
199
|
}
|
|
202
200
|
/**
|
|
203
201
|
* Программное снятие фокуса с чекбокса.
|
|
@@ -206,9 +204,9 @@ export var Checkbox = /*#__PURE__*/function (_React$Component) {
|
|
|
206
204
|
;
|
|
207
205
|
|
|
208
206
|
_proto.blur = function blur() {
|
|
209
|
-
var _this$
|
|
207
|
+
var _this$input$current2;
|
|
210
208
|
|
|
211
|
-
(_this$
|
|
209
|
+
(_this$input$current2 = this.input.current) == null ? void 0 : _this$input$current2.blur();
|
|
212
210
|
}
|
|
213
211
|
/**
|
|
214
212
|
* Устанавливает чекбокс в HTML-состояние `indeterminate`.
|