@skbkontur/react-ui 5.5.1 → 5.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/cjs/components/Modal/Modal.d.ts +25 -22
- package/cjs/components/Modal/Modal.js +10 -7
- package/cjs/components/Modal/Modal.js.map +1 -1
- package/cjs/components/Modal/ModalBody.d.ts +1 -1
- package/cjs/components/Modal/ModalBody.js +1 -1
- package/cjs/components/Modal/ModalBody.js.map +1 -1
- package/cjs/components/Modal/ModalFooter.d.ts +5 -5
- package/cjs/components/Modal/ModalFooter.js +1 -1
- package/cjs/components/Modal/ModalFooter.js.map +1 -1
- package/cjs/components/Modal/ModalHeader.d.ts +3 -3
- package/cjs/components/Modal/ModalHeader.js +1 -1
- package/cjs/components/Modal/ModalHeader.js.map +1 -1
- package/cjs/components/Radio/Radio.d.ts +11 -10
- package/cjs/components/Radio/Radio.js +5 -4
- package/cjs/components/Radio/Radio.js.map +1 -1
- package/cjs/components/RadioGroup/RadioGroup.d.ts +21 -28
- package/cjs/components/RadioGroup/RadioGroup.js +2 -9
- package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
- package/cjs/components/Textarea/Textarea.d.ts +5 -1
- package/cjs/components/Textarea/Textarea.js +10 -1
- package/cjs/components/Textarea/Textarea.js.map +1 -1
- package/cjs/internal/CustomComboBox/CustomComboBoxReducer.js +5 -0
- package/cjs/internal/CustomComboBox/CustomComboBoxReducer.js.map +1 -1
- package/cjs/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.d.ts +1 -0
- package/cjs/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.js +4 -1
- package/cjs/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.js.map +1 -1
- package/components/Modal/Modal/Modal.js +5 -7
- package/components/Modal/Modal/Modal.js.map +1 -1
- package/components/Modal/Modal.d.ts +25 -22
- package/components/Modal/ModalBody/ModalBody.js +1 -1
- package/components/Modal/ModalBody/ModalBody.js.map +1 -1
- package/components/Modal/ModalBody.d.ts +1 -1
- package/components/Modal/ModalFooter/ModalFooter.js +1 -1
- package/components/Modal/ModalFooter/ModalFooter.js.map +1 -1
- package/components/Modal/ModalFooter.d.ts +5 -5
- package/components/Modal/ModalHeader/ModalHeader.js +1 -1
- package/components/Modal/ModalHeader/ModalHeader.js.map +1 -1
- package/components/Modal/ModalHeader.d.ts +3 -3
- package/components/Radio/Radio/Radio.js +5 -4
- package/components/Radio/Radio/Radio.js.map +1 -1
- package/components/Radio/Radio.d.ts +11 -10
- package/components/RadioGroup/RadioGroup/RadioGroup.js +2 -9
- package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
- package/components/RadioGroup/RadioGroup.d.ts +21 -28
- package/components/Textarea/Textarea/Textarea.js +5 -0
- package/components/Textarea/Textarea/Textarea.js.map +1 -1
- package/components/Textarea/Textarea.d.ts +5 -1
- package/internal/CustomComboBox/CustomComboBoxReducer/CustomComboBoxReducer.js +5 -0
- package/internal/CustomComboBox/CustomComboBoxReducer/CustomComboBoxReducer.js.map +1 -1
- package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout/InternalTextareaWithLayout.js +4 -0
- package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout/InternalTextareaWithLayout.js.map +1 -1
- package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.d.ts +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","FocusLock","throttle","globalObject","isNonNullable","isKeyEscape","LayoutEvents","RenderContainer","ZIndex","stopPropagation","HideBodyVerticalScroll","ModalStack","ResizeDetector","ThemeContext","isIE11","CommonWrapper","cx","createPropsGetter","ResponsiveLayout","isThemeGTE","catchUnreachableWarning","ModalContext","ModalFooter","ModalHeader","ModalBody","ModalClose","styles","getModalTheme","mountedModalsCount","ModalDataTids","container","content","close","ModalZIndexPriority","Cross","Content","Modal","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","defaultProps","state","stackPosition","hasBackground","horizontalScroll","hasHeader","hasFooter","hasPanel","stackSubscription","containerNode","mouseDownTarget","mouseUpTarget","getMobileContainerClassName","mobileAppearance","mobileContainerSmall5_2","mobileContainerFullscreen5_2","mobileContainerSmallBottom5_2","mobileContainerSmallTop5_2","requestClose","props","disableClose","onClose","refContainer","center","handleStackChange","stack","setState","indexOf","isBlocking","handleContainerMouseDown","event","target","handleContainerMouseUp","handleContainerClick","ignoreBackgroundClick","currentTarget","handleKeyDown","e","checkHorizontalScrollAppearance","hasScroll","containerClientWidth","clientWidth","containerScrollWidth","scrollWidth","throttledCheckHorizontalScroll","handleResize","emit","setHasHeader","setHasFooter","setHasPanel","_inheritsLoose","_proto","prototype","componentDidMount","add","addEventListener","componentWillUnmount","removeEventListener","remove","render","_this2","createElement","Consumer","theme","Provider","value","renderMain","_this3","_this$props","noClose","width","alignTop","children","ariaLabel","ariaLabelledby","_this$state","_this$getProps","role","disableFocusLock","modalContextProps","mobileOnFullScreen","additionalPadding","versionGTE5_2","style","containerStyle","getMobileCenterContainerClassNames","_cx","mobileCenterContainer5_2","mobileCenterContainerBig5_2","mobileCenterContainerFullscreen5_2","mobileCenterContainer","priority","className","root","onMouseDown","onMouseUp","onClick","bg","_ref","_cx2","_cx3","_cx4","_cx5","_cx6","isMobile","ref","container5_2","containerDesktop","containerMobile","centerContainer","Boolean","undefined","window","mobileWindow","mobileWindowFullscreen5_2","onResize","fullHeight","disabled","autoFocus","columnFlexContainer","closeWrapper","mobileCloseWrapper","mobileCloseWrapper5_2","mobileCloseWithoutHeader","mobileCloseWithoutHeader5_2","Component","__KONTUR_REACT_UI__","displayName","Header","Body","Footer"],"sources":["Modal.tsx"],"sourcesContent":["import type { AriaAttributes, HTMLAttributes } from 'react';\nimport React from 'react';\nimport FocusLock from 'react-focus-lock';\nimport throttle from 'lodash.throttle';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { isNonNullable } from '../../lib/utils';\nimport { isKeyEscape } from '../../lib/events/keyboard/identifiers';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { RenderContainer } from '../../internal/RenderContainer';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { stopPropagation } from '../../lib/events/stopPropagation';\nimport { HideBodyVerticalScroll } from '../../internal/HideBodyVerticalScroll';\nimport type { ModalStackSubscription } from '../../lib/ModalStack';\nimport { ModalStack } from '../../lib/ModalStack';\nimport { ResizeDetector } from '../../internal/ResizeDetector';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme, ThemeIn } from '../../lib/theming/Theme';\nimport { isIE11 } from '../../lib/client';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { ResponsiveLayout } from '../ResponsiveLayout';\nimport { isThemeGTE } from '../../lib/theming/ThemeHelpers';\nimport { catchUnreachableWarning } from '../../lib/typeGuards';\n\nimport type { ModalContextProps } from './ModalContext';\nimport { ModalContext } from './ModalContext';\nimport { ModalFooter } from './ModalFooter';\nimport { ModalHeader } from './ModalHeader';\nimport { ModalBody } from './ModalBody';\nimport { ModalClose } from './ModalClose';\nimport { styles } from './Modal.styles';\nimport { getModalTheme } from './getModalTheme';\n\nlet mountedModalsCount = 0;\n\nexport type MobileModalAppearance = 'auto' | 'top' | 'center' | 'bottom' | 'fullscreen-spacing' | 'fullscreen';\n\nexport interface ModalProps\n extends CommonProps,\n Pick<HTMLAttributes<unknown>, 'role'>,\n Pick<AriaAttributes, 'aria-label' | 'aria-labelledby'> {\n /** Отключает событие `onClose` и дизейблит кнопку закрытия модалки. */\n disableClose?: boolean;\n\n /** Выравнивает окно по верху страницы. */\n alignTop?: boolean;\n\n /** Оставляет окно открытым при клике на фон. */\n ignoreBackgroundClick?: boolean;\n\n /** Убирает крестик для закрытия окна */\n noClose?: boolean;\n\n /** Задает ширину модалки. */\n width?: number | string;\n\n /** Задает функцию, которая вызывается, когда пользователь запросил закрытие окна (нажал на фон, на Escape или на крестик). */\n onClose?: () => void;\n\n /** Отключает фокус-лок внутри модалки. По умолчанию true для IE11. */\n disableFocusLock?: boolean;\n\n /** Задает объект с переменными темы. Он будет объединён с темой из контекста. */\n theme?: ThemeIn;\n\n /** Задает внешний вид модалки. Работает с версией темы >= 5_2.\n * - `auto` — если футера нет, модалка распологается в центре экрана, если футер есть -- модалка растягивается на весь экран с отступами и закругленными краями\n * - `top` — модалка располагается сверху независимо от наличия футера\n * - `center` — модалка располагается в центре независимо от наличия футера\n * - `bottom` — модалка располагается снизу независимо от наличия футера\n * - `fullscreen-spacing` — модалка растягивается на весь экран с отступами и закругленными краями\n * - `fullscreen` — модалка растягивается на весь экран\n * @default auto\n */\n mobileAppearance?: MobileModalAppearance;\n}\n\nexport interface ModalState {\n stackPosition: number;\n hasBackground: boolean;\n horizontalScroll: boolean;\n hasHeader: boolean;\n hasFooter: boolean;\n hasPanel: boolean;\n}\n\nexport const ModalDataTids = {\n container: 'modal-container',\n content: 'modal-content',\n close: 'modal-close',\n} as const;\n\nexport const ModalZIndexPriority = {\n Cross: 2,\n Content: 1,\n} as const;\n\ntype DefaultProps = Required<Pick<ModalProps, 'disableFocusLock' | 'role' | 'mobileAppearance'>>;\n\n/**\n * Модальное окно `Modal` — это эмуляция диалогового окна браузера, появляющегося поверх страницы в ответ на действия пользователя и блокирующего доступ к основному содержимому страницы.\n *\n * Состоит из 3-х компонентов: `Modal.Header`, `Modal.Body`, `Modal.Footer`.\n *\n * Для отображения серой плашки в футере в компонент `Footer` необходимо передать проп `panel`.\n *\n * Для отключения прилипания шапки и футера в соответствующий компонент нужно передать проп `sticky` со значением `false` (по-умолчанию прилипание включено).\n */\nexport class Modal extends React.Component<ModalProps, ModalState> {\n public static __KONTUR_REACT_UI__ = 'Modal';\n public static displayName = 'Modal';\n\n public static Header = ModalHeader;\n public static Body = ModalBody;\n public static Footer = ModalFooter;\n\n public static defaultProps: DefaultProps = {\n // NOTE: в ie нормально не работает\n disableFocusLock: isIE11,\n role: 'dialog',\n mobileAppearance: 'auto',\n };\n\n private getProps = createPropsGetter(Modal.defaultProps);\n\n public state: ModalState = {\n stackPosition: 0,\n hasBackground: true,\n horizontalScroll: false,\n hasHeader: false,\n hasFooter: false,\n hasPanel: false,\n };\n\n private theme!: Theme;\n private stackSubscription: ModalStackSubscription | null = null;\n private containerNode: HTMLDivElement | null = null;\n private mouseDownTarget: EventTarget | null = null;\n private mouseUpTarget: EventTarget | null = null;\n\n public componentDidMount() {\n this.stackSubscription = ModalStack.add(this, this.handleStackChange);\n\n if (mountedModalsCount === 0) {\n globalObject.addEventListener?.('resize', this.throttledCheckHorizontalScroll);\n }\n\n mountedModalsCount++;\n globalObject.addEventListener?.('keydown', this.handleKeyDown);\n this.checkHorizontalScrollAppearance();\n\n if (this.containerNode) {\n this.containerNode.addEventListener('scroll', LayoutEvents.emit);\n }\n }\n\n public componentWillUnmount() {\n if (--mountedModalsCount === 0) {\n globalObject.removeEventListener?.('resize', this.throttledCheckHorizontalScroll);\n LayoutEvents.emit();\n }\n\n globalObject.removeEventListener?.('keydown', this.handleKeyDown);\n if (isNonNullable(this.stackSubscription)) {\n this.stackSubscription.remove();\n }\n ModalStack.remove(this);\n\n if (this.containerNode) {\n this.containerNode.removeEventListener('scroll', LayoutEvents.emit);\n }\n }\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = getModalTheme(theme, this.props.theme);\n return <ThemeContext.Provider value={this.theme}>{this.renderMain()}</ThemeContext.Provider>;\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private getMobileContainerClassName = () => {\n const mobileAppearance = this.getProps().mobileAppearance;\n switch (mobileAppearance) {\n case 'fullscreen-spacing':\n return;\n case 'auto':\n if (this.state.hasFooter) {\n return;\n }\n return [styles.mobileContainerSmall5_2()];\n case 'fullscreen':\n return [styles.mobileContainerFullscreen5_2()];\n case 'center':\n return [styles.mobileContainerSmall5_2()];\n case 'bottom':\n return [styles.mobileContainerSmall5_2(), styles.mobileContainerSmallBottom5_2()];\n case 'top':\n return [styles.mobileContainerSmall5_2(), styles.mobileContainerSmallTop5_2()];\n default:\n return catchUnreachableWarning(mobileAppearance, false);\n }\n };\n\n private renderMain() {\n const {\n noClose,\n disableClose,\n width,\n mobileAppearance,\n alignTop,\n children,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n } = this.props;\n const { hasHeader, hasFooter, hasPanel } = this.state;\n const { role, disableFocusLock } = this.getProps();\n\n const modalContextProps: ModalContextProps = {\n hasHeader,\n horizontalScroll: this.state.horizontalScroll,\n setHasHeader: this.setHasHeader,\n setHasFooter: this.setHasFooter,\n setHasPanel: this.setHasPanel,\n mobileOnFullScreen: this.props.mobileAppearance === 'fullscreen',\n };\n if (!noClose) {\n modalContextProps.close = {\n disableClose,\n requestClose: this.requestClose,\n };\n }\n if (!hasFooter || hasPanel) {\n modalContextProps.additionalPadding = true;\n }\n\n const versionGTE5_2 = isThemeGTE(this.theme, '5.2');\n\n const style: { width?: number | string } = {};\n const containerStyle: { width?: number | string } = {};\n\n if (width) {\n style.width = width;\n } else {\n containerStyle.width = 'auto';\n }\n\n const getMobileCenterContainerClassNames = () => {\n if (versionGTE5_2) {\n return cx(styles.mobileCenterContainer5_2(this.theme), {\n [styles.mobileCenterContainerBig5_2(this.theme)]:\n mobileAppearance === 'fullscreen-spacing' || (mobileAppearance === 'auto' && hasFooter),\n [styles.mobileCenterContainerFullscreen5_2()]: mobileAppearance === 'fullscreen',\n });\n }\n return cx(styles.mobileCenterContainer());\n };\n\n return (\n <RenderContainer>\n <CommonWrapper {...this.props}>\n <ZIndex priority={'Modal'} className={styles.root()}>\n <HideBodyVerticalScroll />\n {this.state.hasBackground && (\n <div\n onMouseDown={this.handleContainerMouseDown}\n onMouseUp={this.handleContainerMouseUp}\n onClick={this.handleContainerClick}\n className={styles.bg(this.theme)}\n />\n )}\n <ResponsiveLayout>\n {({ isMobile }) => (\n <div\n aria-labelledby={ariaLabelledby}\n ref={this.refContainer}\n className={cx(\n styles.container(),\n versionGTE5_2 && styles.container5_2(),\n (!versionGTE5_2 || !isMobile) && styles.containerDesktop(),\n !versionGTE5_2 && isMobile && styles.containerMobile(this.theme),\n versionGTE5_2 && isMobile && this.getMobileContainerClassName(),\n )}\n onMouseDown={this.handleContainerMouseDown}\n onMouseUp={this.handleContainerMouseUp}\n onClick={this.handleContainerClick}\n data-tid={ModalDataTids.container}\n >\n <div\n aria-modal\n aria-label={ariaLabel}\n role={role}\n className={cx({\n [styles.centerContainer()]: true,\n [getMobileCenterContainerClassNames()]: isMobile,\n [styles.alignTop()]: Boolean(alignTop),\n })}\n style={isMobile ? undefined : containerStyle}\n data-tid={ModalDataTids.content}\n >\n <div\n className={cx({\n [styles.window(this.theme)]: true,\n [styles.mobileWindow()]: isMobile,\n [styles.mobileWindowFullscreen5_2()]:\n versionGTE5_2 && isMobile && mobileAppearance === 'fullscreen',\n })}\n style={isMobile ? undefined : style}\n >\n <ResizeDetector onResize={this.handleResize} fullHeight={isMobile}>\n <FocusLock\n disabled={disableFocusLock}\n autoFocus={false}\n className={cx({ [styles.columnFlexContainer()]: isMobile }, 'focus-lock-container')}\n >\n {!hasHeader && !noClose && (\n <ZIndex\n priority={ModalZIndexPriority.Cross}\n className={cx({\n [styles.closeWrapper(this.theme)]: true,\n [styles.mobileCloseWrapper(this.theme)]: isMobile,\n [styles.mobileCloseWrapper5_2(this.theme)]: versionGTE5_2 && isMobile,\n })}\n >\n <ModalClose\n className={cx({\n [styles.mobileCloseWithoutHeader()]: isMobile && !this.state.hasHeader,\n [styles.mobileCloseWithoutHeader5_2(this.theme)]:\n versionGTE5_2 && isMobile && !this.state.hasHeader,\n })}\n requestClose={this.requestClose}\n disableClose={disableClose}\n />\n </ZIndex>\n )}\n <ModalContext.Provider value={modalContextProps}>{children}</ModalContext.Provider>\n </FocusLock>\n </ResizeDetector>\n </div>\n </div>\n </div>\n )}\n </ResponsiveLayout>\n </ZIndex>\n </CommonWrapper>\n </RenderContainer>\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 refContainer = (center: HTMLDivElement | null) => {\n this.containerNode = center;\n };\n\n private handleStackChange = (stack: readonly React.Component[]) => {\n this.setState({ stackPosition: stack.indexOf(this), hasBackground: ModalStack.isBlocking(this) });\n };\n\n private handleContainerMouseDown = (event: React.MouseEvent) => {\n this.mouseDownTarget = event.target;\n };\n\n private handleContainerMouseUp = (event: React.MouseEvent) => {\n this.mouseUpTarget = event.target;\n };\n\n private handleContainerClick = (event: React.MouseEvent<HTMLDivElement>) => {\n if (!this.props.ignoreBackgroundClick) {\n const { target, currentTarget } = event;\n if (target === currentTarget && this.mouseDownTarget === currentTarget && this.mouseUpTarget === currentTarget) {\n this.requestClose();\n }\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 checkHorizontalScrollAppearance = () => {\n let hasScroll = false;\n\n if (this.containerNode) {\n const containerClientWidth = this.containerNode.clientWidth;\n const containerScrollWidth = this.containerNode.scrollWidth;\n hasScroll = containerClientWidth < containerScrollWidth;\n }\n if (hasScroll && !this.state.horizontalScroll) {\n this.setState({ horizontalScroll: true });\n } else if (this.state.horizontalScroll) {\n this.setState({ horizontalScroll: false });\n }\n };\n\n private throttledCheckHorizontalScroll = throttle(this.checkHorizontalScrollAppearance, 100);\n\n private handleResize = () => {\n LayoutEvents.emit();\n };\n\n private setHasHeader = (hasHeader: boolean) => {\n this.setState({ hasHeader });\n };\n\n private setHasFooter = (hasFooter: boolean) => {\n this.setState({ hasFooter });\n };\n\n private setHasPanel = (hasPanel: boolean) => {\n this.setState({ hasPanel });\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","FocusLock","throttle","globalObject","isNonNullable","isKeyEscape","LayoutEvents","RenderContainer","ZIndex","stopPropagation","HideBodyVerticalScroll","ModalStack","ResizeDetector","ThemeContext","isIE11","CommonWrapper","cx","createPropsGetter","ResponsiveLayout","isThemeGTE","catchUnreachableWarning","ModalContext","ModalFooter","ModalHeader","ModalBody","ModalClose","styles","getModalTheme","mountedModalsCount","ModalDataTids","container","content","close","ModalZIndexPriority","Cross","Content","Modal","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","defaultProps","state","stackPosition","hasBackground","horizontalScroll","hasHeader","hasFooter","hasPanel","stackSubscription","containerNode","mouseDownTarget","mouseUpTarget","getMobileContainerClassName","mobileAppearance","mobileContainerSmall5_2","mobileContainerFullscreen5_2","mobileContainerSmallBottom5_2","mobileContainerSmallTop5_2","requestClose","props","disableClose","onClose","refContainer","center","handleStackChange","stack","setState","indexOf","isBlocking","handleContainerMouseDown","event","target","handleContainerMouseUp","handleContainerClick","ignoreBackgroundClick","currentTarget","handleKeyDown","e","checkHorizontalScrollAppearance","hasScroll","containerClientWidth","clientWidth","containerScrollWidth","scrollWidth","throttledCheckHorizontalScroll","handleResize","emit","setHasHeader","setHasFooter","setHasPanel","_inheritsLoose","_proto","prototype","componentDidMount","add","addEventListener","componentWillUnmount","removeEventListener","remove","render","_this2","createElement","Consumer","theme","Provider","value","renderMain","_this3","_this$props","noClose","width","alignTop","children","ariaLabel","ariaLabelledby","_this$state","_this$getProps","role","disableFocusLock","modalContextProps","mobileOnFullScreen","additionalPadding","versionGTE5_2","style","containerStyle","getMobileCenterContainerClassNames","_cx","mobileCenterContainer5_2","mobileCenterContainerBig5_2","mobileCenterContainerFullscreen5_2","mobileCenterContainer","priority","className","root","onMouseDown","onMouseUp","onClick","bg","_ref","_cx2","_cx3","_cx4","_cx5","_cx6","isMobile","ref","container5_2","containerDesktop","containerMobile","centerContainer","Boolean","undefined","window","mobileWindow","mobileWindowFullscreen5_2","onResize","fullHeight","disabled","autoFocus","columnFlexContainer","closeWrapper","mobileCloseWrapper","mobileCloseWrapper5_2","mobileCloseWithoutHeader","mobileCloseWithoutHeader5_2","Component","__KONTUR_REACT_UI__","displayName","Header","Body","Footer"],"sources":["Modal.tsx"],"sourcesContent":["import type { AriaAttributes, HTMLAttributes } from 'react';\nimport React from 'react';\nimport FocusLock from 'react-focus-lock';\nimport throttle from 'lodash.throttle';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { isNonNullable } from '../../lib/utils';\nimport { isKeyEscape } from '../../lib/events/keyboard/identifiers';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { RenderContainer } from '../../internal/RenderContainer';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { stopPropagation } from '../../lib/events/stopPropagation';\nimport { HideBodyVerticalScroll } from '../../internal/HideBodyVerticalScroll';\nimport type { ModalStackSubscription } from '../../lib/ModalStack';\nimport { ModalStack } from '../../lib/ModalStack';\nimport { ResizeDetector } from '../../internal/ResizeDetector';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme, ThemeIn } from '../../lib/theming/Theme';\nimport { isIE11 } from '../../lib/client';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { ResponsiveLayout } from '../ResponsiveLayout';\nimport { isThemeGTE } from '../../lib/theming/ThemeHelpers';\nimport { catchUnreachableWarning } from '../../lib/typeGuards';\n\nimport type { ModalContextProps } from './ModalContext';\nimport { ModalContext } from './ModalContext';\nimport { ModalFooter } from './ModalFooter';\nimport { ModalHeader } from './ModalHeader';\nimport { ModalBody } from './ModalBody';\nimport { ModalClose } from './ModalClose';\nimport { styles } from './Modal.styles';\nimport { getModalTheme } from './getModalTheme';\n\nlet mountedModalsCount = 0;\n\nexport type MobileModalAppearance = 'auto' | 'top' | 'center' | 'bottom' | 'fullscreen-spacing' | 'fullscreen';\n\nexport interface ModalProps\n extends CommonProps,\n Pick<HTMLAttributes<unknown>, 'role'>,\n Pick<AriaAttributes, 'aria-label' | 'aria-labelledby'> {\n /** Отключает событие `onClose` и блокирует кнопку закрытия модального окна. */\n disableClose?: boolean;\n\n /** Выравнивает модальное окно по верху страницы. */\n alignTop?: boolean;\n\n /** Оставляет модальное окно открытым, когда пользователь кликнул на фон вне модального окна. */\n ignoreBackgroundClick?: boolean;\n\n /** Скрывает крестик для закрытия модального окна. */\n noClose?: boolean;\n\n /** Ширина модального окна. */\n width?: number | string;\n\n /** Событие закрытия модального окна. Вызывается при клике на фон или крестик, и при нажатии Esc. */\n onClose?: () => void;\n\n /** Выключает ограничение на фокус. По умолчанию модальное окно не позволяет установить фокус за переделами своего содержимого.\n *\n * По умолчанию `\"true\"` для Internet Explorer 11. */\n disableFocusLock?: boolean;\n\n /** Объект с переменными темы. Он будет объединён с темой из `<ThemeContext>`.\n *\n * Общие переменные темы и переменные для модального окна (с префиксом modal) смотрите на странице [ThemePlayground](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_information-themeplayground--docs).\n */\n theme?: ThemeIn;\n\n /** Задаёт внешний вид модального окна в мобильном режиме. Работает с версией темы >= 5_2.\n * - `\"auto\"` — если футера нет, модальное окно распологается в центре экрана, если есть — модальное окно растягивается на весь экран с отступами и закругленными краями.\n * - `\"top\"` — модальное окно располагается сверху независимо от наличия футера.\n * - `\"center\"` — модальное окно располагается в центре независимо от наличия футера.\n * - `\"bottom\"` — модальное окно располагается снизу независимо от наличия футера.\n * - `\"fullscreen-spacing\"` — модальное окно растягивается на весь экран с отступами и закругленными краями.\n * - `\"fullscreen\"` — модальное окно растягивается на весь экран.\n * @default auto\n */\n mobileAppearance?: MobileModalAppearance;\n}\n\nexport interface ModalState {\n stackPosition: number;\n hasBackground: boolean;\n horizontalScroll: boolean;\n hasHeader: boolean;\n hasFooter: boolean;\n hasPanel: boolean;\n}\n\nexport const ModalDataTids = {\n container: 'modal-container',\n content: 'modal-content',\n close: 'modal-close',\n} as const;\n\nexport const ModalZIndexPriority = {\n Cross: 2,\n Content: 1,\n} as const;\n\ntype DefaultProps = Required<Pick<ModalProps, 'disableFocusLock' | 'role' | 'mobileAppearance'>>;\n\n/** Модальное окно — это эмуляция диалогового окна браузера, оно появляется поверх страницы в ответ на действия пользователя и блокирует доступ к основному содержимому страницы.\n *\n * Составной компонент, включает в себя:\n * - «шапку» [Modal.Header](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_overlay-modal-modalheader--docs), состоящую из заголовка и крестика закрытия окна;\n * - контент-зону [Modal.Body](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_overlay-modal-modalbody--docs);\n * - футер [Modal.Footer](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_overlay-modal-modalfooter--docs).\n */\nexport class Modal extends React.Component<ModalProps, ModalState> {\n public static __KONTUR_REACT_UI__ = 'Modal';\n public static displayName = 'Modal';\n\n public static Header = ModalHeader;\n public static Body = ModalBody;\n public static Footer = ModalFooter;\n\n public static defaultProps: DefaultProps = {\n // NOTE: в ie нормально не работает\n disableFocusLock: isIE11,\n role: 'dialog',\n mobileAppearance: 'auto',\n };\n\n private getProps = createPropsGetter(Modal.defaultProps);\n\n public state: ModalState = {\n stackPosition: 0,\n hasBackground: true,\n horizontalScroll: false,\n hasHeader: false,\n hasFooter: false,\n hasPanel: false,\n };\n\n private theme!: Theme;\n private stackSubscription: ModalStackSubscription | null = null;\n private containerNode: HTMLDivElement | null = null;\n private mouseDownTarget: EventTarget | null = null;\n private mouseUpTarget: EventTarget | null = null;\n\n public componentDidMount() {\n this.stackSubscription = ModalStack.add(this, this.handleStackChange);\n\n if (mountedModalsCount === 0) {\n globalObject.addEventListener?.('resize', this.throttledCheckHorizontalScroll);\n }\n\n mountedModalsCount++;\n globalObject.addEventListener?.('keydown', this.handleKeyDown);\n this.checkHorizontalScrollAppearance();\n\n if (this.containerNode) {\n this.containerNode.addEventListener('scroll', LayoutEvents.emit);\n }\n }\n\n public componentWillUnmount() {\n if (--mountedModalsCount === 0) {\n globalObject.removeEventListener?.('resize', this.throttledCheckHorizontalScroll);\n LayoutEvents.emit();\n }\n\n globalObject.removeEventListener?.('keydown', this.handleKeyDown);\n if (isNonNullable(this.stackSubscription)) {\n this.stackSubscription.remove();\n }\n ModalStack.remove(this);\n\n if (this.containerNode) {\n this.containerNode.removeEventListener('scroll', LayoutEvents.emit);\n }\n }\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = getModalTheme(theme, this.props.theme);\n return <ThemeContext.Provider value={this.theme}>{this.renderMain()}</ThemeContext.Provider>;\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private getMobileContainerClassName = () => {\n const mobileAppearance = this.getProps().mobileAppearance;\n switch (mobileAppearance) {\n case 'fullscreen-spacing':\n return;\n case 'auto':\n if (this.state.hasFooter) {\n return;\n }\n return [styles.mobileContainerSmall5_2()];\n case 'fullscreen':\n return [styles.mobileContainerFullscreen5_2()];\n case 'center':\n return [styles.mobileContainerSmall5_2()];\n case 'bottom':\n return [styles.mobileContainerSmall5_2(), styles.mobileContainerSmallBottom5_2()];\n case 'top':\n return [styles.mobileContainerSmall5_2(), styles.mobileContainerSmallTop5_2()];\n default:\n return catchUnreachableWarning(mobileAppearance, false);\n }\n };\n\n private renderMain() {\n const {\n noClose,\n disableClose,\n width,\n mobileAppearance,\n alignTop,\n children,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n } = this.props;\n const { hasHeader, hasFooter, hasPanel } = this.state;\n const { role, disableFocusLock } = this.getProps();\n\n const modalContextProps: ModalContextProps = {\n hasHeader,\n horizontalScroll: this.state.horizontalScroll,\n setHasHeader: this.setHasHeader,\n setHasFooter: this.setHasFooter,\n setHasPanel: this.setHasPanel,\n mobileOnFullScreen: this.props.mobileAppearance === 'fullscreen',\n };\n if (!noClose) {\n modalContextProps.close = {\n disableClose,\n requestClose: this.requestClose,\n };\n }\n if (!hasFooter || hasPanel) {\n modalContextProps.additionalPadding = true;\n }\n\n const versionGTE5_2 = isThemeGTE(this.theme, '5.2');\n\n const style: { width?: number | string } = {};\n const containerStyle: { width?: number | string } = {};\n\n if (width) {\n style.width = width;\n } else {\n containerStyle.width = 'auto';\n }\n\n const getMobileCenterContainerClassNames = () => {\n if (versionGTE5_2) {\n return cx(styles.mobileCenterContainer5_2(this.theme), {\n [styles.mobileCenterContainerBig5_2(this.theme)]:\n mobileAppearance === 'fullscreen-spacing' || (mobileAppearance === 'auto' && hasFooter),\n [styles.mobileCenterContainerFullscreen5_2()]: mobileAppearance === 'fullscreen',\n });\n }\n return cx(styles.mobileCenterContainer());\n };\n\n return (\n <RenderContainer>\n <CommonWrapper {...this.props}>\n <ZIndex priority={'Modal'} className={styles.root()}>\n <HideBodyVerticalScroll />\n {this.state.hasBackground && (\n <div\n onMouseDown={this.handleContainerMouseDown}\n onMouseUp={this.handleContainerMouseUp}\n onClick={this.handleContainerClick}\n className={styles.bg(this.theme)}\n />\n )}\n <ResponsiveLayout>\n {({ isMobile }) => (\n <div\n aria-labelledby={ariaLabelledby}\n ref={this.refContainer}\n className={cx(\n styles.container(),\n versionGTE5_2 && styles.container5_2(),\n (!versionGTE5_2 || !isMobile) && styles.containerDesktop(),\n !versionGTE5_2 && isMobile && styles.containerMobile(this.theme),\n versionGTE5_2 && isMobile && this.getMobileContainerClassName(),\n )}\n onMouseDown={this.handleContainerMouseDown}\n onMouseUp={this.handleContainerMouseUp}\n onClick={this.handleContainerClick}\n data-tid={ModalDataTids.container}\n >\n <div\n aria-modal\n aria-label={ariaLabel}\n role={role}\n className={cx({\n [styles.centerContainer()]: true,\n [getMobileCenterContainerClassNames()]: isMobile,\n [styles.alignTop()]: Boolean(alignTop),\n })}\n style={isMobile ? undefined : containerStyle}\n data-tid={ModalDataTids.content}\n >\n <div\n className={cx({\n [styles.window(this.theme)]: true,\n [styles.mobileWindow()]: isMobile,\n [styles.mobileWindowFullscreen5_2()]:\n versionGTE5_2 && isMobile && mobileAppearance === 'fullscreen',\n })}\n style={isMobile ? undefined : style}\n >\n <ResizeDetector onResize={this.handleResize} fullHeight={isMobile}>\n <FocusLock\n disabled={disableFocusLock}\n autoFocus={false}\n className={cx({ [styles.columnFlexContainer()]: isMobile }, 'focus-lock-container')}\n >\n {!hasHeader && !noClose && (\n <ZIndex\n priority={ModalZIndexPriority.Cross}\n className={cx({\n [styles.closeWrapper(this.theme)]: true,\n [styles.mobileCloseWrapper(this.theme)]: isMobile,\n [styles.mobileCloseWrapper5_2(this.theme)]: versionGTE5_2 && isMobile,\n })}\n >\n <ModalClose\n className={cx({\n [styles.mobileCloseWithoutHeader()]: isMobile && !this.state.hasHeader,\n [styles.mobileCloseWithoutHeader5_2(this.theme)]:\n versionGTE5_2 && isMobile && !this.state.hasHeader,\n })}\n requestClose={this.requestClose}\n disableClose={disableClose}\n />\n </ZIndex>\n )}\n <ModalContext.Provider value={modalContextProps}>{children}</ModalContext.Provider>\n </FocusLock>\n </ResizeDetector>\n </div>\n </div>\n </div>\n )}\n </ResponsiveLayout>\n </ZIndex>\n </CommonWrapper>\n </RenderContainer>\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 refContainer = (center: HTMLDivElement | null) => {\n this.containerNode = center;\n };\n\n private handleStackChange = (stack: readonly React.Component[]) => {\n this.setState({ stackPosition: stack.indexOf(this), hasBackground: ModalStack.isBlocking(this) });\n };\n\n private handleContainerMouseDown = (event: React.MouseEvent) => {\n this.mouseDownTarget = event.target;\n };\n\n private handleContainerMouseUp = (event: React.MouseEvent) => {\n this.mouseUpTarget = event.target;\n };\n\n private handleContainerClick = (event: React.MouseEvent<HTMLDivElement>) => {\n if (!this.props.ignoreBackgroundClick) {\n const { target, currentTarget } = event;\n if (target === currentTarget && this.mouseDownTarget === currentTarget && this.mouseUpTarget === currentTarget) {\n this.requestClose();\n }\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 checkHorizontalScrollAppearance = () => {\n let hasScroll = false;\n\n if (this.containerNode) {\n const containerClientWidth = this.containerNode.clientWidth;\n const containerScrollWidth = this.containerNode.scrollWidth;\n hasScroll = containerClientWidth < containerScrollWidth;\n }\n if (hasScroll && !this.state.horizontalScroll) {\n this.setState({ horizontalScroll: true });\n } else if (this.state.horizontalScroll) {\n this.setState({ horizontalScroll: false });\n }\n };\n\n private throttledCheckHorizontalScroll = throttle(this.checkHorizontalScrollAppearance, 100);\n\n private handleResize = () => {\n LayoutEvents.emit();\n };\n\n private setHasHeader = (hasHeader: boolean) => {\n this.setState({ hasHeader });\n };\n\n private setHasFooter = (hasFooter: boolean) => {\n this.setState({ hasFooter });\n };\n\n private setHasPanel = (hasPanel: boolean) => {\n this.setState({ hasPanel });\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -7,29 +7,34 @@ import { ModalHeader } from './ModalHeader';
|
|
|
7
7
|
import { ModalBody } from './ModalBody';
|
|
8
8
|
export type MobileModalAppearance = 'auto' | 'top' | 'center' | 'bottom' | 'fullscreen-spacing' | 'fullscreen';
|
|
9
9
|
export interface ModalProps extends CommonProps, Pick<HTMLAttributes<unknown>, 'role'>, Pick<AriaAttributes, 'aria-label' | 'aria-labelledby'> {
|
|
10
|
-
/** Отключает событие `onClose` и
|
|
10
|
+
/** Отключает событие `onClose` и блокирует кнопку закрытия модального окна. */
|
|
11
11
|
disableClose?: boolean;
|
|
12
|
-
/** Выравнивает окно по верху страницы. */
|
|
12
|
+
/** Выравнивает модальное окно по верху страницы. */
|
|
13
13
|
alignTop?: boolean;
|
|
14
|
-
/** Оставляет окно
|
|
14
|
+
/** Оставляет модальное окно открытым, когда пользователь кликнул на фон вне модального окна. */
|
|
15
15
|
ignoreBackgroundClick?: boolean;
|
|
16
|
-
/**
|
|
16
|
+
/** Скрывает крестик для закрытия модального окна. */
|
|
17
17
|
noClose?: boolean;
|
|
18
|
-
/**
|
|
18
|
+
/** Ширина модального окна. */
|
|
19
19
|
width?: number | string;
|
|
20
|
-
/**
|
|
20
|
+
/** Событие закрытия модального окна. Вызывается при клике на фон или крестик, и при нажатии Esc. */
|
|
21
21
|
onClose?: () => void;
|
|
22
|
-
/**
|
|
22
|
+
/** Выключает ограничение на фокус. По умолчанию модальное окно не позволяет установить фокус за переделами своего содержимого.
|
|
23
|
+
*
|
|
24
|
+
* По умолчанию `"true"` для Internet Explorer 11. */
|
|
23
25
|
disableFocusLock?: boolean;
|
|
24
|
-
/**
|
|
26
|
+
/** Объект с переменными темы. Он будет объединён с темой из `<ThemeContext>`.
|
|
27
|
+
*
|
|
28
|
+
* Общие переменные темы и переменные для модального окна (с префиксом modal) смотрите на странице [ThemePlayground](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_information-themeplayground--docs).
|
|
29
|
+
*/
|
|
25
30
|
theme?: ThemeIn;
|
|
26
|
-
/**
|
|
27
|
-
* - `auto` — если футера нет,
|
|
28
|
-
* - `top` —
|
|
29
|
-
* - `center` —
|
|
30
|
-
* - `bottom` —
|
|
31
|
-
* - `fullscreen-spacing` —
|
|
32
|
-
* - `fullscreen` —
|
|
31
|
+
/** Задаёт внешний вид модального окна в мобильном режиме. Работает с версией темы >= 5_2.
|
|
32
|
+
* - `"auto"` — если футера нет, модальное окно распологается в центре экрана, если есть — модальное окно растягивается на весь экран с отступами и закругленными краями.
|
|
33
|
+
* - `"top"` — модальное окно располагается сверху независимо от наличия футера.
|
|
34
|
+
* - `"center"` — модальное окно располагается в центре независимо от наличия футера.
|
|
35
|
+
* - `"bottom"` — модальное окно располагается снизу независимо от наличия футера.
|
|
36
|
+
* - `"fullscreen-spacing"` — модальное окно растягивается на весь экран с отступами и закругленными краями.
|
|
37
|
+
* - `"fullscreen"` — модальное окно растягивается на весь экран.
|
|
33
38
|
* @default auto
|
|
34
39
|
*/
|
|
35
40
|
mobileAppearance?: MobileModalAppearance;
|
|
@@ -52,14 +57,12 @@ export declare const ModalZIndexPriority: {
|
|
|
52
57
|
readonly Content: 1;
|
|
53
58
|
};
|
|
54
59
|
type DefaultProps = Required<Pick<ModalProps, 'disableFocusLock' | 'role' | 'mobileAppearance'>>;
|
|
55
|
-
/**
|
|
56
|
-
* Модальное окно `Modal` — это эмуляция диалогового окна браузера, появляющегося поверх страницы в ответ на действия пользователя и блокирующего доступ к основному содержимому страницы.
|
|
57
|
-
*
|
|
58
|
-
* Состоит из 3-х компонентов: `Modal.Header`, `Modal.Body`, `Modal.Footer`.
|
|
59
|
-
*
|
|
60
|
-
* Для отображения серой плашки в футере в компонент `Footer` необходимо передать проп `panel`.
|
|
60
|
+
/** Модальное окно — это эмуляция диалогового окна браузера, оно появляется поверх страницы в ответ на действия пользователя и блокирует доступ к основному содержимому страницы.
|
|
61
61
|
*
|
|
62
|
-
*
|
|
62
|
+
* Составной компонент, включает в себя:
|
|
63
|
+
* - «шапку» [Modal.Header](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_overlay-modal-modalheader--docs), состоящую из заголовка и крестика закрытия окна;
|
|
64
|
+
* - контент-зону [Modal.Body](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_overlay-modal-modalbody--docs);
|
|
65
|
+
* - футер [Modal.Footer](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_overlay-modal-modalfooter--docs).
|
|
63
66
|
*/
|
|
64
67
|
export declare class Modal extends React.Component<ModalProps, ModalState> {
|
|
65
68
|
static __KONTUR_REACT_UI__: string;
|
|
@@ -17,7 +17,7 @@ import { getModalBodyTheme } from "../getModalBodyTheme";
|
|
|
17
17
|
import { ModalZIndexPriority } from "../Modal";
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
|
-
*
|
|
20
|
+
* Контейнер с отступами для содержимого модального окна.
|
|
21
21
|
*
|
|
22
22
|
* @visibleName Modal.Body
|
|
23
23
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","ThemeContext","ZIndex","CommonWrapper","cx","responsiveLayout","LayoutEvents","ResizeDetector","rootNode","isThemeGTE","ModalContext","styles","getModalBodyTheme","ModalZIndexPriority","ModalBody","_class","_ModalBody","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","handleResize","emit","_inheritsLoose","_proto","prototype","render","_this2","createElement","Consumer","theme","Provider","value","renderMain","_this3","versionGTE5_2","noPadding","props","_ref","_cx","additionalPadding","hasHeader","_extends","rootNodeRef","setRootNode","priority","Content","className","body","mobileBody","isMobileLayout","bodyWithoutHeader","mobileBodyWithoutHeader","bodyAddPaddingForPanel","mobileBodyAddPaddingForPanel","mobileBodyWithoutHeader5_2","mobileBodyAddPaddingForPanel5_2","bodyWithoutPadding","onResize","children","Component","__KONTUR_REACT_UI__","displayName","__MODAL_BODY__"],"sources":["ModalBody.tsx"],"sourcesContent":["import React from 'react';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { ZIndex } from '../../internal/ZIndex';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { ResizeDetector } from '../../internal/ResizeDetector';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { isThemeGTE } from '../../lib/theming/ThemeHelpers';\n\nimport { ModalContext } from './ModalContext';\nimport { styles } from './Modal.styles';\nimport { getModalBodyTheme } from './getModalBodyTheme';\nimport { ModalZIndexPriority } from './Modal';\n\nexport interface ModalBodyProps extends CommonProps {\n /** Убирает отступы. */\n noPadding?: boolean;\n}\n\n/**\n *
|
|
1
|
+
{"version":3,"names":["React","ThemeContext","ZIndex","CommonWrapper","cx","responsiveLayout","LayoutEvents","ResizeDetector","rootNode","isThemeGTE","ModalContext","styles","getModalBodyTheme","ModalZIndexPriority","ModalBody","_class","_ModalBody","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","handleResize","emit","_inheritsLoose","_proto","prototype","render","_this2","createElement","Consumer","theme","Provider","value","renderMain","_this3","versionGTE5_2","noPadding","props","_ref","_cx","additionalPadding","hasHeader","_extends","rootNodeRef","setRootNode","priority","Content","className","body","mobileBody","isMobileLayout","bodyWithoutHeader","mobileBodyWithoutHeader","bodyAddPaddingForPanel","mobileBodyAddPaddingForPanel","mobileBodyWithoutHeader5_2","mobileBodyAddPaddingForPanel5_2","bodyWithoutPadding","onResize","children","Component","__KONTUR_REACT_UI__","displayName","__MODAL_BODY__"],"sources":["ModalBody.tsx"],"sourcesContent":["import React from 'react';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { ZIndex } from '../../internal/ZIndex';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { ResizeDetector } from '../../internal/ResizeDetector';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { isThemeGTE } from '../../lib/theming/ThemeHelpers';\n\nimport { ModalContext } from './ModalContext';\nimport { styles } from './Modal.styles';\nimport { getModalBodyTheme } from './getModalBodyTheme';\nimport { ModalZIndexPriority } from './Modal';\n\nexport interface ModalBodyProps extends CommonProps {\n /** Убирает отступы. */\n noPadding?: boolean;\n}\n\n/**\n * Контейнер с отступами для содержимого модального окна.\n *\n * @visibleName Modal.Body\n */\n@responsiveLayout\n@rootNode\nexport class ModalBody extends React.Component<ModalBodyProps> {\n public static __KONTUR_REACT_UI__ = 'ModalBody';\n public static displayName = 'ModalBody';\n public static __MODAL_BODY__ = true;\n\n private theme!: Theme;\n private isMobileLayout!: boolean;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = getModalBodyTheme(theme);\n return <ThemeContext.Provider value={this.theme}>{this.renderMain()}</ThemeContext.Provider>;\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private handleResize = () => {\n LayoutEvents.emit();\n };\n\n public renderMain(): JSX.Element {\n const versionGTE5_2 = isThemeGTE(this.theme, '5.2');\n const { noPadding } = this.props;\n return (\n <ModalContext.Consumer>\n {({ additionalPadding, hasHeader }) => (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <ZIndex\n priority={ModalZIndexPriority.Content}\n className={cx({\n [styles.body(this.theme)]: true,\n [styles.mobileBody(this.theme)]: this.isMobileLayout,\n [styles.bodyWithoutHeader(this.theme)]: !hasHeader,\n [styles.mobileBodyWithoutHeader()]: !hasHeader && this.isMobileLayout,\n [styles.bodyAddPaddingForPanel(this.theme)]: additionalPadding,\n [styles.mobileBodyAddPaddingForPanel(this.theme)]: additionalPadding && this.isMobileLayout,\n [styles.mobileBodyWithoutHeader5_2(this.theme)]: versionGTE5_2 && !hasHeader && this.isMobileLayout,\n [styles.mobileBodyAddPaddingForPanel5_2(this.theme)]:\n versionGTE5_2 && additionalPadding && this.isMobileLayout,\n [styles.bodyWithoutPadding()]: noPadding,\n })}\n >\n {this.isMobileLayout ? (\n <ResizeDetector onResize={this.handleResize}>{this.props.children}</ResizeDetector>\n ) : (\n this.props.children\n )}\n </ZIndex>\n </CommonWrapper>\n )}\n </ModalContext.Consumer>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useContext","useLayoutEffect","getScrollWidth","Sticky","ThemeContext","CommonWrapper","cx","useResponsiveLayout","Gapped","isNonNullable","isThemeGTE","styles","ModalContext","ModalSeparator","ModalFooterDataTids","root","ModalFooter","props","theme","modal","layout","_props$sticky","sticky","isMobile","gap","panel","children","setHasFooter","setHasPanel","versionGTE5_2","renderContent","fixed","createElement","className","footer","fixedFooter","fixedFooter5_2","Boolean","fixedPanel","mobileFooter","mobileFixedFooter5_2","vertical","getStickyOffset","offset","horizontalScroll","mobileOnFullScreen","parseInt","mobileModalContainerMarginBottom","side","__KONTUR_REACT_UI__","displayName","__MODAL_FOOTER__"],"sources":["ModalFooter.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport React, { useContext, useLayoutEffect } from 'react';\n\nimport { getScrollWidth } from '../../lib/dom/getScrollWidth';\nimport { Sticky } from '../Sticky';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { useResponsiveLayout } from '../ResponsiveLayout';\nimport type { GappedProps } from '../Gapped';\nimport { Gapped } from '../Gapped';\nimport { isNonNullable } from '../../lib/utils';\nimport { isThemeGTE } from '../../lib/theming/ThemeHelpers';\n\nimport { styles } from './Modal.styles';\nimport { ModalContext } from './ModalContext';\nimport { ModalSeparator } from './ModalSeparator';\n\nexport interface ModalFooterProps extends CommonProps {\n /** Включает
|
|
1
|
+
{"version":3,"names":["React","useContext","useLayoutEffect","getScrollWidth","Sticky","ThemeContext","CommonWrapper","cx","useResponsiveLayout","Gapped","isNonNullable","isThemeGTE","styles","ModalContext","ModalSeparator","ModalFooterDataTids","root","ModalFooter","props","theme","modal","layout","_props$sticky","sticky","isMobile","gap","panel","children","setHasFooter","setHasPanel","versionGTE5_2","renderContent","fixed","createElement","className","footer","fixedFooter","fixedFooter5_2","Boolean","fixedPanel","mobileFooter","mobileFixedFooter5_2","vertical","getStickyOffset","offset","horizontalScroll","mobileOnFullScreen","parseInt","mobileModalContainerMarginBottom","side","__KONTUR_REACT_UI__","displayName","__MODAL_FOOTER__"],"sources":["ModalFooter.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport React, { useContext, useLayoutEffect } from 'react';\n\nimport { getScrollWidth } from '../../lib/dom/getScrollWidth';\nimport { Sticky } from '../Sticky';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { useResponsiveLayout } from '../ResponsiveLayout';\nimport type { GappedProps } from '../Gapped';\nimport { Gapped } from '../Gapped';\nimport { isNonNullable } from '../../lib/utils';\nimport { isThemeGTE } from '../../lib/theming/ThemeHelpers';\n\nimport { styles } from './Modal.styles';\nimport { ModalContext } from './ModalContext';\nimport { ModalSeparator } from './ModalSeparator';\n\nexport interface ModalFooterProps extends CommonProps {\n /** Включает разделитель перед футером. */\n panel?: boolean;\n\n /** Закрепляет футер модального окна при скролле длинной контент-зоны.\n * @default На десктопе - `true`, на мобильных - `false`. */\n sticky?: boolean;\n\n /** Контент футера. */\n children?: ReactNode;\n\n /** Расстояние между элементами футера в пикселях. */\n gap?: GappedProps['gap'];\n}\n\nexport const ModalFooterDataTids = {\n root: 'ModalFooter__root',\n} as const;\n\n/**\n * Футер модального окна, где обычно располагаются кнопки основных действий.\n *\n * @visibleName Modal.Footer\n */\nfunction ModalFooter(props: ModalFooterProps) {\n const theme = useContext(ThemeContext);\n const modal = useContext(ModalContext);\n const layout = useResponsiveLayout();\n\n const { sticky = !layout.isMobile, gap, panel, children } = props;\n\n useLayoutEffect(() => {\n modal.setHasFooter?.(true);\n modal.setHasPanel?.(panel || false);\n\n return () => {\n modal.setHasFooter?.(false);\n modal.setHasPanel?.(false);\n };\n }, [panel]);\n\n const versionGTE5_2 = isThemeGTE(theme, '5.2');\n const renderContent = (fixed = false) => {\n return (\n <div>\n {(panel || fixed) && <ModalSeparator fixed={fixed} />}\n <div\n data-tid={ModalFooterDataTids.root}\n className={cx(\n styles.footer(theme),\n fixed && styles.fixedFooter(theme),\n versionGTE5_2 && fixed && styles.fixedFooter5_2(),\n Boolean(panel) && styles.panel(theme),\n fixed && Boolean(panel) && styles.fixedPanel(theme),\n layout.isMobile && styles.mobileFooter(theme),\n versionGTE5_2 && layout.isMobile && fixed && styles.mobileFixedFooter5_2(theme),\n )}\n >\n {isNonNullable(gap) ? (\n <Gapped vertical={layout.isMobile} gap={gap}>\n {children}\n </Gapped>\n ) : (\n children\n )}\n </div>\n </div>\n );\n };\n\n const getStickyOffset = () => {\n let offset = 0;\n if (modal.horizontalScroll) {\n offset += getScrollWidth();\n }\n if (versionGTE5_2 && layout.isMobile && !modal.mobileOnFullScreen) {\n offset += parseInt(theme.mobileModalContainerMarginBottom);\n }\n return offset;\n };\n\n return (\n <CommonWrapper {...props}>\n {sticky ? (\n <Sticky side=\"bottom\" offset={getStickyOffset()}>\n {renderContent}\n </Sticky>\n ) : (\n renderContent()\n )}\n </CommonWrapper>\n );\n}\n\nModalFooter.__KONTUR_REACT_UI__ = 'ModalFooter';\nModalFooter.displayName = 'ModalFooter';\nModalFooter.__MODAL_FOOTER__ = true;\n\nexport { ModalFooter };\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,21 +3,21 @@ import React from 'react';
|
|
|
3
3
|
import type { CommonProps } from '../../internal/CommonWrapper';
|
|
4
4
|
import type { GappedProps } from '../Gapped';
|
|
5
5
|
export interface ModalFooterProps extends CommonProps {
|
|
6
|
-
/** Включает
|
|
6
|
+
/** Включает разделитель перед футером. */
|
|
7
7
|
panel?: boolean;
|
|
8
|
-
/** Закрепляет футер
|
|
8
|
+
/** Закрепляет футер модального окна при скролле длинной контент-зоны.
|
|
9
9
|
* @default На десктопе - `true`, на мобильных - `false`. */
|
|
10
10
|
sticky?: boolean;
|
|
11
|
-
/**
|
|
11
|
+
/** Контент футера. */
|
|
12
12
|
children?: ReactNode;
|
|
13
|
-
/**
|
|
13
|
+
/** Расстояние между элементами футера в пикселях. */
|
|
14
14
|
gap?: GappedProps['gap'];
|
|
15
15
|
}
|
|
16
16
|
export declare const ModalFooterDataTids: {
|
|
17
17
|
readonly root: "ModalFooter__root";
|
|
18
18
|
};
|
|
19
19
|
/**
|
|
20
|
-
* Футер модального
|
|
20
|
+
* Футер модального окна, где обычно располагаются кнопки основных действий.
|
|
21
21
|
*
|
|
22
22
|
* @visibleName Modal.Footer
|
|
23
23
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useContext","useLayoutEffect","Sticky","ThemeContext","CommonWrapper","cx","useResponsiveLayout","isThemeGTE","styles","ModalClose","ModalContext","ModalSeparator","ModalHeaderDataTids","root","ModalHeader","props","theme","modal","layout","_props$sticky","sticky","isMobile","_props$cutTitleOnStuc","cutTitleOnStuck","children","setHasHeader","versionGTE5_2","renderContent","fixed","createElement","className","header","header5_2","mobileHeader","Boolean","additionalPadding","headerAddPadding","fixedHeader","titleCut","fixedHeader5_2","mobileFixedHeader","mobileFixedHeader5_2","close","headerWithClose","mobileHeaderWithClose","requestClose","disableClose","getStickyOffset","mobileOnFullScreen","parseInt","mobileModalContainerMarginTop","offset","side","__KONTUR_REACT_UI__","displayName","__MODAL_HEADER__"],"sources":["ModalHeader.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport React, { useContext, useLayoutEffect } from 'react';\n\nimport { Sticky } from '../Sticky';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { useResponsiveLayout } from '../ResponsiveLayout';\nimport { isThemeGTE } from '../../lib/theming/ThemeHelpers';\n\nimport { styles } from './Modal.styles';\nimport { ModalClose } from './ModalClose';\nimport { ModalContext } from './ModalContext';\nimport { ModalSeparator } from './ModalSeparator';\n\nexport interface ModalHeaderProps extends CommonProps {\n /** Закрепляет
|
|
1
|
+
{"version":3,"names":["React","useContext","useLayoutEffect","Sticky","ThemeContext","CommonWrapper","cx","useResponsiveLayout","isThemeGTE","styles","ModalClose","ModalContext","ModalSeparator","ModalHeaderDataTids","root","ModalHeader","props","theme","modal","layout","_props$sticky","sticky","isMobile","_props$cutTitleOnStuc","cutTitleOnStuck","children","setHasHeader","versionGTE5_2","renderContent","fixed","createElement","className","header","header5_2","mobileHeader","Boolean","additionalPadding","headerAddPadding","fixedHeader","titleCut","fixedHeader5_2","mobileFixedHeader","mobileFixedHeader5_2","close","headerWithClose","mobileHeaderWithClose","requestClose","disableClose","getStickyOffset","mobileOnFullScreen","parseInt","mobileModalContainerMarginTop","offset","side","__KONTUR_REACT_UI__","displayName","__MODAL_HEADER__"],"sources":["ModalHeader.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport React, { useContext, useLayoutEffect } from 'react';\n\nimport { Sticky } from '../Sticky';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { useResponsiveLayout } from '../ResponsiveLayout';\nimport { isThemeGTE } from '../../lib/theming/ThemeHelpers';\n\nimport { styles } from './Modal.styles';\nimport { ModalClose } from './ModalClose';\nimport { ModalContext } from './ModalContext';\nimport { ModalSeparator } from './ModalSeparator';\n\nexport interface ModalHeaderProps extends CommonProps {\n /** Закрепляет заголовок модального окна при скролле длинной контент-зоны. */\n sticky?: boolean;\n\n /** @ignore */\n children?: ReactNode;\n\n /**\n * Обрезает длинный заголовок. Работает с пропом `sticky`.\n * @default false\n */\n cutTitleOnStuck?: boolean;\n}\n\nexport const ModalHeaderDataTids = {\n root: 'ModalHeader__root',\n} as const;\n\n/**\n * Шапка модального окна, состоит из заголовка и крестика закрытия.\n *\n * @visibleName Modal.Header\n */\nfunction ModalHeader(props: ModalHeaderProps) {\n const theme = useContext(ThemeContext);\n const modal = useContext(ModalContext);\n const layout = useResponsiveLayout();\n\n const { sticky = !layout.isMobile, cutTitleOnStuck = false, children } = props;\n\n useLayoutEffect(() => {\n modal.setHasHeader?.(true);\n\n return () => modal.setHasHeader?.(false);\n }, []);\n\n const versionGTE5_2 = isThemeGTE(theme, '5.2');\n const renderContent = (fixed = false) => {\n return (\n <div>\n <div\n data-tid={ModalHeaderDataTids.root}\n className={cx(\n styles.header(theme),\n versionGTE5_2 && styles.header5_2(theme),\n layout.isMobile && styles.mobileHeader(theme),\n Boolean(modal.additionalPadding) && styles.headerAddPadding(theme),\n fixed && styles.fixedHeader(theme),\n cutTitleOnStuck && fixed && styles.titleCut(),\n versionGTE5_2 && fixed && styles.fixedHeader5_2(),\n fixed && layout.isMobile && styles.mobileFixedHeader(theme),\n versionGTE5_2 && fixed && layout.isMobile && styles.mobileFixedHeader5_2(theme),\n Boolean(modal.close) && styles.headerWithClose(theme),\n Boolean(modal.close) && layout.isMobile && styles.mobileHeaderWithClose(theme),\n )}\n >\n {modal.close && (\n <ModalClose requestClose={modal.close.requestClose} disableClose={modal.close.disableClose} />\n )}\n {children}\n </div>\n {fixed && <ModalSeparator fixed={fixed} />}\n </div>\n );\n };\n\n const getStickyOffset = () => {\n if (versionGTE5_2 && layout.isMobile && !modal.mobileOnFullScreen) {\n return parseInt(theme.mobileModalContainerMarginTop);\n }\n return 0;\n };\n\n return (\n <CommonWrapper {...props}>\n {sticky ? (\n <Sticky offset={getStickyOffset()} side=\"top\">\n {renderContent}\n </Sticky>\n ) : (\n renderContent()\n )}\n </CommonWrapper>\n );\n}\n\nModalHeader.__KONTUR_REACT_UI__ = 'ModalHeader';\nModalHeader.displayName = 'ModalHeader';\nModalHeader.__MODAL_HEADER__ = true;\n\nexport { ModalHeader };\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,12 +2,12 @@ import type { ReactNode } from 'react';
|
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import type { CommonProps } from '../../internal/CommonWrapper';
|
|
4
4
|
export interface ModalHeaderProps extends CommonProps {
|
|
5
|
-
/** Закрепляет
|
|
5
|
+
/** Закрепляет заголовок модального окна при скролле длинной контент-зоны. */
|
|
6
6
|
sticky?: boolean;
|
|
7
7
|
/** @ignore */
|
|
8
8
|
children?: ReactNode;
|
|
9
9
|
/**
|
|
10
|
-
* Обрезает длинный
|
|
10
|
+
* Обрезает длинный заголовок. Работает с пропом `sticky`.
|
|
11
11
|
* @default false
|
|
12
12
|
*/
|
|
13
13
|
cutTitleOnStuck?: boolean;
|
|
@@ -16,7 +16,7 @@ export declare const ModalHeaderDataTids: {
|
|
|
16
16
|
readonly root: "ModalHeader__root";
|
|
17
17
|
};
|
|
18
18
|
/**
|
|
19
|
-
* Шапка модального
|
|
19
|
+
* Шапка модального окна, состоит из заголовка и крестика закрытия.
|
|
20
20
|
*
|
|
21
21
|
* @visibleName Modal.Header
|
|
22
22
|
*/
|
|
@@ -21,8 +21,9 @@ export var RadioDataTids = {
|
|
|
21
21
|
root: 'Radio__root'
|
|
22
22
|
};
|
|
23
23
|
|
|
24
|
-
/**
|
|
25
|
-
*
|
|
24
|
+
/** Радиокнопка позволяет выбрать одно значение из нескольких. Подходит при небольшом количестве вариантов — 2–5.
|
|
25
|
+
*
|
|
26
|
+
* Для создания группы радиокнопок используйте специальный контейнер — компонент [RadioGroup](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_input-data-radiogroup--docs).
|
|
26
27
|
*/
|
|
27
28
|
export var Radio = rootNode(_class = withSize(_class = (_Radio = /*#__PURE__*/function (_React$Component) {
|
|
28
29
|
function Radio() {
|
|
@@ -189,14 +190,14 @@ export var Radio = rootNode(_class = withSize(_class = (_Radio = /*#__PURE__*/fu
|
|
|
189
190
|
rootNodeRef: _this2.setRootNode
|
|
190
191
|
}, _this2.getProps()), _this2.renderMain);
|
|
191
192
|
});
|
|
192
|
-
} /**
|
|
193
|
+
} /** Программно устанавливает фокус на радиокнопку. Появляется фокусная обводка, элемент получает клавиатурные события и воспринимается как текущий элемент для чтения скринридерами.
|
|
193
194
|
* @public
|
|
194
195
|
*/;
|
|
195
196
|
_proto.focus = function focus() {
|
|
196
197
|
var _this$inputEl$current;
|
|
197
198
|
keyListener.isTabPressed = true;
|
|
198
199
|
(_this$inputEl$current = this.inputEl.current) == null || _this$inputEl$current.focus();
|
|
199
|
-
} /**
|
|
200
|
+
} /** Программно снимает фокус с радиокнопки.
|
|
200
201
|
* @public
|
|
201
202
|
*/;
|
|
202
203
|
_proto.blur = function blur() {
|