@skbkontur/react-ui 5.6.8 → 5.6.9
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 +13 -0
- package/cjs/components/FileUploader/FileUploader.js +2 -1
- package/cjs/components/FileUploader/FileUploader.js.map +1 -1
- package/cjs/components/FileUploader/FileUploader.styles.d.ts +2 -1
- package/cjs/components/FileUploader/FileUploader.styles.js +15 -8
- package/cjs/components/FileUploader/FileUploader.styles.js.map +1 -1
- package/cjs/internal/CustomComboBox/ComboBoxView.d.ts +1 -4
- package/cjs/internal/CustomComboBox/ComboBoxView.js +1 -0
- package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
- package/cjs/internal/MobilePopup/MobilePopup.d.ts +3 -0
- package/cjs/internal/MobilePopup/MobilePopup.js +20 -2
- package/cjs/internal/MobilePopup/MobilePopup.js.map +1 -1
- package/cjs/internal/MobilePopup/MobilePopup.styles.js +1 -2
- package/cjs/internal/MobilePopup/MobilePopup.styles.js.map +1 -1
- package/cjs/internal/Popup/Popup.d.ts +13 -1
- package/cjs/internal/Popup/Popup.js +183 -11
- package/cjs/internal/Popup/Popup.js.map +1 -1
- package/cjs/internal/Popup/PopupHelper.d.ts +25 -0
- package/cjs/internal/Popup/PopupHelper.js +116 -4
- package/cjs/internal/Popup/PopupHelper.js.map +1 -1
- package/components/FileUploader/FileUploader/FileUploader.js +2 -2
- package/components/FileUploader/FileUploader/FileUploader.js.map +1 -1
- package/components/FileUploader/FileUploader.styles/FileUploader.styles.js +11 -8
- package/components/FileUploader/FileUploader.styles/FileUploader.styles.js.map +1 -1
- package/components/FileUploader/FileUploader.styles.d.ts +2 -1
- package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +1 -0
- package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
- package/internal/CustomComboBox/ComboBoxView.d.ts +1 -4
- package/internal/MobilePopup/MobilePopup/MobilePopup.js +16 -2
- package/internal/MobilePopup/MobilePopup/MobilePopup.js.map +1 -1
- package/internal/MobilePopup/MobilePopup.d.ts +3 -0
- package/internal/MobilePopup/MobilePopup.styles/MobilePopup.styles.js +1 -1
- package/internal/MobilePopup/MobilePopup.styles/MobilePopup.styles.js.map +1 -1
- package/internal/Popup/Popup/Popup.js +121 -29
- package/internal/Popup/Popup/Popup.js.map +1 -1
- package/internal/Popup/Popup.d.ts +13 -1
- package/internal/Popup/PopupHelper/PopupHelper.js +106 -3
- package/internal/Popup/PopupHelper/PopupHelper.js.map +1 -1
- package/internal/Popup/PopupHelper.d.ts +25 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_utils","_Input","_InputLikeText","_RenderLayer","_Spinner","_CommonWrapper","_MobilePopup","_decorator","_rootNode","_createPropsGetter","_ThemeContext","_LoadingIcon","_Popup","_getMenuPositions","_ZIndex","_MaskedInput","_MaskedInput2","_Emotion","_InternalTextareaWithLayout","_SizeDecorator","_ArrowDownIcon","_ComboBoxMenu","_CustomComboBoxTypes","_CustomComboBox","_CustomComboBox2","_getComboBoxTheme","_class","_ComboBoxView","ComboBoxViewIds","exports","menu","ComboBoxView","responsiveLayout","rootNode","withSize","_React$Component","_this$props$value","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","createPropsGetter","defaultProps","mobileInput","dropdownContainerRef","React","createRef","menuId","getRandomID","state","anchorElement","clearCrossShowed","props","showClearIcon","value","toString","getComboBoxMenu","_this$props","items","loading","opened","refMenu","maxMenuHeight","renderTotalCount","renderNotFound","totalCount","_this$getProps","repeatRequest","requestStatus","renderItem","itemWrapper","default","createElement","ComboBoxMenu","hasMargin","onValueChange","handleItemSelect","renderAddButton","isMobile","isMobileLayout","size","renderMenu","_this$getProps2","menuPos","menuAlign","Popup","hasShadow","minWidth","priority","ZIndex","priorities","PopupMenu","positions","getMenuPositions","disablePortal","margin","parseInt","theme","menuOffsetY","ref","renderMobileMenu","rightIcon","_this$props2","onFocus","onInputValueChange","onInputKeyDown","placeholder","textValue","renderSpinner","inputProps","autoComplete","autoFocus","width","onKeyDown","MobilePopup","headerChildComponent","Input","_extends2","refMobileInput","onCloseRequest","onMobileClose","getParent","getRootNode","handleMobileFocus","_this$mobileInput","onInputClick","focus","item","refInput","input","className","styles","spinnerWrapper","Spinner","type","caption","dimmed","getRightIcon","_this$props3","drawArrow","LoadingIcon","ArrowDownIcon","_inheritsLoose2","_proto","prototype","componentDidMount","updateAnchorElement","parent","setState","componentDidUpdate","prevProps","editing","render","_this2","ThemeContext","Consumer","getComboBoxTheme","viewMode","Provider","renderMain","_this$props4","onMouseEnter","onMouseLeave","onMouseOver","_this$getProps3","onClickOutside","onFocusOutside","renderInput","CommonWrapper","RenderLayer","active","CustomComboBoxDataTids","comboBoxView","style","root","setRootNode","_this$props5","id","align","borderless","disabled","error","onInputBlur","onInputFocus","warning","refInputLikeText","leftIcon","inputMode","ariaDescribedby","ariaLabel","mask","maskChar","formatChars","onBeforePasteInMask","maxLength","onBlur","undefined","onClick","multilineTextareaProps","autoResize","rows","extraRow","maxRows","InternalTextareaWithLayout","MaskedInput","onBeforePasteValue","_this$getProps4","renderValue","InputLikeText","cx","MaskedInputStyles","onClearCrossClick","isNonNullable","Component","__KONTUR_REACT_UI__","displayName","ComboBoxRequestStatus","Unknown"],"sources":["ComboBoxView.tsx"],"sourcesContent":["import type { AriaAttributes, HTMLAttributes } from 'react';\nimport React from 'react';\n\nimport { getRandomID, isNonNullable } from '../../lib/utils';\nimport type { InputIconType, InputProps, ShowClearIcon } from '../../components/Input';\nimport { Input } from '../../components/Input';\nimport { InputLikeText } from '../InputLikeText';\nimport type { Menu } from '../Menu';\nimport type { MenuItemState } from '../../components/MenuItem';\nimport { RenderLayer } from '../RenderLayer';\nimport { Spinner } from '../../components/Spinner';\nimport type { Nullable } from '../../typings/utility-types';\nimport type { CommonProps } from '../CommonWrapper';\nimport { CommonWrapper } from '../CommonWrapper';\nimport { MobilePopup } from '../MobilePopup';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode, getRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { LoadingIcon } from '../icons2022/LoadingIcon';\nimport type { ComboBoxExtendedItem, ComboBoxViewMode } from '../../components/ComboBox';\nimport type { SizeProp } from '../../lib/types/props';\nimport { Popup } from '../Popup';\nimport { getMenuPositions } from '../../lib/getMenuPositions';\nimport { ZIndex } from '../ZIndex';\nimport type { MaskedInputOnBeforePasteValue, MaskedInputProps } from '../../components/MaskedInput';\nimport { MaskedInput } from '../../components/MaskedInput';\nimport { styles as MaskedInputStyles } from '../../components/MaskedInput/MaskedInput.styles';\nimport { cx } from '../../lib/theming/Emotion';\nimport { InternalTextareaWithLayout } from '../InternalTextareaWithLayout/InternalTextareaWithLayout';\nimport { withSize } from '../../lib/size/SizeDecorator';\n\nimport { ArrowDownIcon } from './ArrowDownIcon';\nimport { ComboBoxMenu } from './ComboBoxMenu';\nimport { ComboBoxRequestStatus } from './CustomComboBoxTypes';\nimport { styles } from './CustomComboBox.styles';\nimport { CustomComboBoxDataTids } from './CustomComboBox';\nimport { getComboBoxTheme } from './getComboBoxTheme';\n\ninterface ComboBoxViewProps<T>\n extends Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'>,\n CommonProps,\n Partial<Pick<MaskedInputProps, 'mask' | 'maskChar' | 'formatChars'>> {\n align?: 'left' | 'center' | 'right';\n autoFocus?: boolean;\n borderless?: boolean;\n disablePortal?: boolean;\n disabled?: boolean;\n editing?: boolean;\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n items?: Nullable<Array<ComboBoxExtendedItem<T>>>;\n loading?: boolean;\n /**\n * Позволяет вручную задать текущую позицию выпадающего окна\n */\n menuPos?: 'top' | 'bottom';\n menuAlign?: 'left' | 'right';\n opened?: boolean;\n drawArrow?: boolean;\n placeholder?: string;\n size?: SizeProp;\n textValue?: string;\n totalCount?: number;\n value?: Nullable<T>;\n showClearIcon?: ShowClearIcon;\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n width?: string | number;\n maxLength?: number;\n maxMenuHeight?: number | string;\n leftIcon?: InputIconType;\n rightIcon?: InputIconType;\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode'];\n\n onBeforePasteInMask?: MaskedInputOnBeforePasteValue;\n onValueChange?: (value: T) => void;\n onClickOutside?: (e: Event) => void;\n onFocus?: () => void;\n onMobileClose?: () => void;\n onFocusOutside?: () => void;\n onInputBlur?: () => void;\n onInputValueChange?: (value: string) => void;\n onInputFocus?: () => void;\n onInputClick?: () => void;\n onClearCrossClick?: () => void;\n onInputKeyDown?: (e: React.KeyboardEvent) => void;\n onMouseEnter?: (e: React.MouseEvent) => void;\n onMouseOver?: (e: React.MouseEvent) => void;\n onMouseLeave?: (e: React.MouseEvent) => void;\n renderItem?: (item: T, state: MenuItemState) => React.ReactNode;\n itemWrapper?: (item: T) => React.ComponentType;\n renderNotFound?: () => React.ReactNode;\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n renderValue?: (item: T) => React.ReactNode;\n renderAddButton?: (query?: string) => React.ReactNode;\n repeatRequest?: () => void;\n requestStatus?: ComboBoxRequestStatus;\n refInput?: (input: Nullable<Input | InternalTextareaWithLayout>) => void;\n refMenu?: (menu: Nullable<Menu>) => void;\n refInputLikeText?: (inputLikeText: Nullable<InputLikeText>) => void;\n viewMode?: ComboBoxViewMode;\n maxRows?: number;\n}\n\ntype DefaultProps<T> = Required<\n Pick<\n ComboBoxViewProps<T>,\n | 'renderItem'\n | 'renderValue'\n | 'renderAddButton'\n | 'repeatRequest'\n | 'requestStatus'\n | 'onClickOutside'\n | 'onFocusOutside'\n | 'width'\n | 'showClearIcon'\n >\n>;\n\nexport const ComboBoxViewIds = {\n menu: 'ComboBoxView__menu',\n};\n\ninterface ComboBoxViewState {\n anchorElement: Nullable<Element>;\n clearCrossShowed: boolean;\n}\n\n@responsiveLayout\n@rootNode\n@withSize\nexport class ComboBoxView<T> extends React.Component<ComboBoxViewProps<T>, ComboBoxViewState> {\n public static __KONTUR_REACT_UI__ = 'ComboBoxView';\n public static displayName = 'ComboBoxView';\n\n public static defaultProps: DefaultProps<unknown> = {\n renderItem: (item: any) => item,\n renderValue: (item: any) => item,\n renderAddButton: () => null,\n repeatRequest: () => undefined,\n requestStatus: ComboBoxRequestStatus.Unknown,\n onClickOutside: () => {\n /**/\n },\n onFocusOutside: () => {\n /**/\n },\n width: 250,\n showClearIcon: 'never',\n };\n\n private getProps = createPropsGetter(ComboBoxView.defaultProps);\n\n public getRootNode!: TGetRootNode;\n private input: Nullable<Input | InternalTextareaWithLayout>;\n private setRootNode!: TSetRootNode;\n private mobileInput: Nullable<Input> = null;\n private isMobileLayout!: boolean;\n private dropdownContainerRef = React.createRef<Popup>();\n private theme!: Theme;\n private size!: SizeProp;\n private menuId = ComboBoxViewIds.menu + getRandomID();\n\n public state = {\n anchorElement: null,\n clearCrossShowed: this.props.showClearIcon === 'always' && !!this.props.value?.toString(),\n };\n\n public componentDidMount() {\n this.updateAnchorElement();\n\n if (this.props.autoFocus && this.props.onFocus) {\n this.props.onFocus();\n }\n }\n\n updateAnchorElement() {\n const parent = this.getParent();\n const anchorElement = this.state.anchorElement;\n\n if (anchorElement !== parent) {\n this.setState({\n anchorElement: parent,\n });\n }\n }\n\n public componentDidUpdate(prevProps: ComboBoxViewProps<T>) {\n const { input, props } = this;\n\n this.updateAnchorElement();\n\n if (props.editing && !prevProps.editing && input) {\n input.focus();\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = getComboBoxTheme(theme, this.props.viewMode);\n return <ThemeContext.Provider value={this.theme}>{this.renderMain()}</ThemeContext.Provider>;\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n const { onMouseEnter, onMouseLeave, onMouseOver, opened } = this.props;\n const { onClickOutside, onFocusOutside, width } = this.getProps();\n\n const isMobile = this.isMobileLayout;\n\n const input = this.renderInput();\n\n return (\n <CommonWrapper {...this.props}>\n <RenderLayer onClickOutside={onClickOutside} onFocusOutside={onFocusOutside} active={opened}>\n <span\n data-tid={CustomComboBoxDataTids.comboBoxView}\n style={{ width }}\n className={styles.root()}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onMouseOver={onMouseOver}\n ref={this.setRootNode}\n >\n {input}\n {isMobile ? this.renderMobileMenu() : this.renderMenu()}\n </span>\n </RenderLayer>\n </CommonWrapper>\n );\n }\n\n private getComboBoxMenu = () => {\n const { items, loading, opened, refMenu, maxMenuHeight, renderTotalCount, renderNotFound, totalCount } = this.props;\n\n const { repeatRequest, requestStatus, renderItem, itemWrapper } = this.getProps();\n return (\n <ComboBoxMenu\n hasMargin={false}\n menuId={this.menuId}\n items={items}\n loading={loading}\n maxMenuHeight={maxMenuHeight}\n onValueChange={this.handleItemSelect}\n opened={opened}\n refMenu={refMenu}\n renderTotalCount={renderTotalCount}\n renderItem={renderItem}\n renderNotFound={renderNotFound}\n itemWrapper={itemWrapper}\n renderAddButton={this.renderAddButton}\n repeatRequest={repeatRequest}\n requestStatus={requestStatus}\n totalCount={totalCount}\n isMobile={this.isMobileLayout}\n size={this.size}\n />\n );\n };\n\n private renderMenu = () => {\n const { opened, menuPos, menuAlign } = this.getProps();\n const { anchorElement } = this.state;\n\n return (\n opened &&\n anchorElement && (\n <Popup\n opened\n hasShadow\n minWidth=\"100%\"\n anchorElement={anchorElement}\n priority={ZIndex.priorities.PopupMenu}\n positions={getMenuPositions(menuPos, menuAlign)}\n disablePortal={this.props.disablePortal}\n margin={parseInt(this.theme.menuOffsetY) - 1}\n ref={this.dropdownContainerRef}\n >\n {this.getComboBoxMenu()}\n </Popup>\n )\n );\n };\n\n private renderMobileMenu = () => {\n let rightIcon = null;\n\n const { loading, items, opened, onFocus, onInputValueChange, onInputKeyDown, placeholder, textValue } = this.props;\n if (loading && items && !!items.length) {\n rightIcon = this.renderSpinner();\n }\n\n const inputProps: InputProps = {\n autoComplete: 'off',\n autoFocus: true,\n width: '100%',\n onFocus,\n onValueChange: onInputValueChange,\n onKeyDown: onInputKeyDown,\n value: textValue,\n placeholder,\n rightIcon,\n };\n\n return (\n opened && (\n <MobilePopup\n headerChildComponent={<Input ref={this.refMobileInput} {...inputProps} />}\n onCloseRequest={this.props.onMobileClose}\n opened\n >\n {this.getComboBoxMenu()}\n </MobilePopup>\n )\n );\n };\n\n private getParent = () => {\n return getRootNode(this);\n };\n\n private renderAddButton = (): React.ReactNode => {\n return this.getProps().renderAddButton(this.props.textValue);\n };\n\n private renderInput(): React.ReactNode {\n const isMobile = this.isMobileLayout;\n\n const {\n id,\n align,\n borderless,\n disabled,\n editing,\n error,\n onFocus,\n onInputBlur,\n onInputValueChange,\n onInputFocus,\n onInputClick,\n onInputKeyDown,\n placeholder,\n textValue,\n value,\n warning,\n refInputLikeText,\n leftIcon,\n inputMode,\n 'aria-describedby': ariaDescribedby,\n 'aria-label': ariaLabel,\n showClearIcon,\n mask,\n maskChar,\n formatChars,\n onBeforePasteInMask,\n } = this.props;\n\n const rightIcon = this.getRightIcon();\n\n const inputProps = {\n id,\n align,\n borderless,\n disabled,\n error,\n maxLength: this.props.maxLength,\n onBlur: isMobile ? undefined : onInputBlur,\n onValueChange: onInputValueChange,\n onFocus: onInputFocus,\n onClick: isMobile ? this.handleMobileFocus : onInputClick,\n leftIcon,\n rightIcon,\n value: textValue || '',\n onKeyDown: onInputKeyDown,\n placeholder,\n width: '100%',\n ref: this.refInput,\n warning,\n inputMode,\n autoComplete: 'off',\n 'aria-describedby': ariaDescribedby,\n 'aria-controls': this.menuId,\n 'aria-label': ariaLabel,\n showClearIcon,\n size: this.size,\n };\n\n const multilineTextareaProps = {\n autoResize: true,\n rows: 1,\n extraRow: false,\n maxRows: this.props.maxRows,\n };\n\n if (this.props.viewMode === 'multiline' && !mask) {\n return <InternalTextareaWithLayout {...inputProps} {...multilineTextareaProps} />;\n }\n\n if (editing) {\n if (mask) {\n return (\n <MaskedInput\n {...inputProps}\n type=\"text\"\n mask={mask}\n maskChar={maskChar}\n formatChars={formatChars}\n onBeforePasteValue={onBeforePasteInMask}\n />\n );\n }\n\n if (this.props.viewMode === 'multiline-editing') {\n return <InternalTextareaWithLayout {...inputProps} {...multilineTextareaProps} />;\n }\n\n return <Input {...inputProps} />;\n }\n\n const { renderValue } = this.getProps();\n return (\n <InputLikeText\n id={id}\n align={align}\n borderless={borderless}\n error={error}\n onFocus={onFocus}\n leftIcon={leftIcon}\n rightIcon={rightIcon}\n disabled={disabled}\n warning={warning}\n placeholder={placeholder}\n size={this.size}\n width=\"100%\"\n ref={refInputLikeText}\n aria-describedby={ariaDescribedby}\n aria-controls={this.menuId}\n showClearIcon={showClearIcon}\n className={cx(mask && MaskedInputStyles.root(this.theme))}\n onClearCrossClick={this.props.onClearCrossClick}\n >\n {isNonNullable(value) && renderValue ? renderValue(value) : null}\n </InputLikeText>\n );\n }\n\n private handleMobileFocus = () => {\n this.props.onInputClick?.();\n\n this.mobileInput?.focus();\n };\n\n private handleItemSelect = (item: T) => {\n if (this.props.onValueChange) {\n this.props.onValueChange(item);\n }\n\n if (this.isMobileLayout) {\n this.props.onMobileClose?.();\n }\n };\n\n private refInput = (input: Nullable<Input | InternalTextareaWithLayout>) => {\n if (this.props.refInput) {\n this.props.refInput(input);\n }\n this.input = input;\n };\n\n private renderSpinner = () => (\n <span className={styles.spinnerWrapper()}>\n <Spinner type=\"mini\" caption=\"\" dimmed />\n </span>\n );\n\n private getRightIcon = () => {\n const { loading, items, drawArrow, rightIcon } = this.props;\n const size = this.size;\n\n if (loading && items && !!items.length) {\n return <LoadingIcon size={size} />;\n }\n\n if (rightIcon || drawArrow) {\n return rightIcon || <ArrowDownIcon size={size} />;\n }\n\n return null;\n };\n\n private refMobileInput = (input: Nullable<Input>) => {\n this.mobileInput = input;\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_utils","_Input","_InputLikeText","_RenderLayer","_Spinner","_CommonWrapper","_MobilePopup","_decorator","_rootNode","_createPropsGetter","_ThemeContext","_LoadingIcon","_Popup","_getMenuPositions","_ZIndex","_MaskedInput","_MaskedInput2","_Emotion","_InternalTextareaWithLayout","_SizeDecorator","_ArrowDownIcon","_ComboBoxMenu","_CustomComboBoxTypes","_CustomComboBox","_CustomComboBox2","_getComboBoxTheme","_class","_ComboBoxView","ComboBoxViewIds","exports","menu","ComboBoxView","responsiveLayout","rootNode","withSize","_React$Component","_this$props$value","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","createPropsGetter","defaultProps","mobileInput","dropdownContainerRef","React","createRef","menuId","getRandomID","state","anchorElement","clearCrossShowed","props","showClearIcon","value","toString","getComboBoxMenu","_this$props","items","loading","opened","refMenu","maxMenuHeight","renderTotalCount","renderNotFound","totalCount","_this$getProps","repeatRequest","requestStatus","renderItem","itemWrapper","default","createElement","ComboBoxMenu","hasMargin","onValueChange","handleItemSelect","renderAddButton","isMobile","isMobileLayout","size","renderMenu","_this$getProps2","menuPos","menuAlign","Popup","hasShadow","tryBestFallbackPosition","minWidth","priority","ZIndex","priorities","PopupMenu","positions","getMenuPositions","disablePortal","margin","parseInt","theme","menuOffsetY","ref","renderMobileMenu","rightIcon","_this$props2","onFocus","onInputValueChange","onInputKeyDown","placeholder","textValue","renderSpinner","inputProps","autoComplete","autoFocus","width","onKeyDown","MobilePopup","headerChildComponent","Input","_extends2","refMobileInput","onCloseRequest","onMobileClose","getParent","getRootNode","handleMobileFocus","_this$mobileInput","onInputClick","focus","item","refInput","input","className","styles","spinnerWrapper","Spinner","type","caption","dimmed","getRightIcon","_this$props3","drawArrow","LoadingIcon","ArrowDownIcon","_inheritsLoose2","_proto","prototype","componentDidMount","updateAnchorElement","parent","setState","componentDidUpdate","prevProps","editing","render","_this2","ThemeContext","Consumer","getComboBoxTheme","viewMode","Provider","renderMain","_this$props4","onMouseEnter","onMouseLeave","onMouseOver","_this$getProps3","onClickOutside","onFocusOutside","renderInput","CommonWrapper","RenderLayer","active","CustomComboBoxDataTids","comboBoxView","style","root","setRootNode","_this$props5","id","align","borderless","disabled","error","onInputBlur","onInputFocus","warning","refInputLikeText","leftIcon","inputMode","ariaDescribedby","ariaLabel","mask","maskChar","formatChars","onBeforePasteInMask","maxLength","onBlur","undefined","onClick","multilineTextareaProps","autoResize","rows","extraRow","maxRows","InternalTextareaWithLayout","MaskedInput","onBeforePasteValue","_this$getProps4","renderValue","InputLikeText","cx","MaskedInputStyles","onClearCrossClick","isNonNullable","Component","__KONTUR_REACT_UI__","displayName","ComboBoxRequestStatus","Unknown"],"sources":["ComboBoxView.tsx"],"sourcesContent":["import type { AriaAttributes, HTMLAttributes } from 'react';\nimport React from 'react';\n\nimport { getRandomID, isNonNullable } from '../../lib/utils';\nimport type { InputIconType, InputProps, ShowClearIcon } from '../../components/Input';\nimport { Input } from '../../components/Input';\nimport { InputLikeText } from '../InputLikeText';\nimport type { Menu } from '../Menu';\nimport type { MenuItemState } from '../../components/MenuItem';\nimport { RenderLayer } from '../RenderLayer';\nimport { Spinner } from '../../components/Spinner';\nimport type { Nullable } from '../../typings/utility-types';\nimport type { CommonProps } from '../CommonWrapper';\nimport { CommonWrapper } from '../CommonWrapper';\nimport { MobilePopup } from '../MobilePopup';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode, getRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { LoadingIcon } from '../icons2022/LoadingIcon';\nimport type { ComboBoxExtendedItem, ComboBoxViewMode } from '../../components/ComboBox';\nimport type { SizeProp } from '../../lib/types/props';\nimport { Popup } from '../Popup';\nimport { getMenuPositions } from '../../lib/getMenuPositions';\nimport { ZIndex } from '../ZIndex';\nimport type { MaskedInputOnBeforePasteValue, MaskedInputProps } from '../../components/MaskedInput';\nimport { MaskedInput } from '../../components/MaskedInput';\nimport { styles as MaskedInputStyles } from '../../components/MaskedInput/MaskedInput.styles';\nimport { cx } from '../../lib/theming/Emotion';\nimport { InternalTextareaWithLayout } from '../InternalTextareaWithLayout/InternalTextareaWithLayout';\nimport { withSize } from '../../lib/size/SizeDecorator';\n\nimport { ArrowDownIcon } from './ArrowDownIcon';\nimport { ComboBoxMenu } from './ComboBoxMenu';\nimport { ComboBoxRequestStatus } from './CustomComboBoxTypes';\nimport { styles } from './CustomComboBox.styles';\nimport { CustomComboBoxDataTids } from './CustomComboBox';\nimport { getComboBoxTheme } from './getComboBoxTheme';\n\ninterface ComboBoxViewProps<T>\n extends Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'>,\n CommonProps,\n Partial<Pick<MaskedInputProps, 'mask' | 'maskChar' | 'formatChars'>> {\n align?: 'left' | 'center' | 'right';\n autoFocus?: boolean;\n borderless?: boolean;\n disablePortal?: boolean;\n disabled?: boolean;\n editing?: boolean;\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n items?: Nullable<Array<ComboBoxExtendedItem<T>>>;\n loading?: boolean;\n /**\n * Позволяет вручную задать текущую позицию выпадающего окна\n */\n menuPos?: 'top' | 'bottom';\n menuAlign?: 'left' | 'right';\n opened?: boolean;\n drawArrow?: boolean;\n placeholder?: string;\n size?: SizeProp;\n textValue?: string;\n totalCount?: number;\n value?: Nullable<T>;\n showClearIcon?: ShowClearIcon;\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n width?: string | number;\n maxLength?: number;\n maxMenuHeight?: number | string;\n leftIcon?: InputIconType;\n rightIcon?: InputIconType;\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode'];\n\n onBeforePasteInMask?: MaskedInputOnBeforePasteValue;\n onValueChange?: (value: T) => void;\n onClickOutside?: (e: Event) => void;\n onFocus?: () => void;\n onMobileClose?: () => void;\n onFocusOutside?: () => void;\n onInputBlur?: () => void;\n onInputValueChange?: (value: string) => void;\n onInputFocus?: () => void;\n onInputClick?: () => void;\n onClearCrossClick?: () => void;\n onInputKeyDown?: (e: React.KeyboardEvent) => void;\n onMouseEnter?: (e: React.MouseEvent) => void;\n onMouseOver?: (e: React.MouseEvent) => void;\n onMouseLeave?: (e: React.MouseEvent) => void;\n renderItem?: (item: T, state: MenuItemState) => React.ReactNode;\n itemWrapper?: (item: T) => React.ComponentType;\n renderNotFound?: () => React.ReactNode;\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n renderValue?: (item: T) => React.ReactNode;\n renderAddButton?: (query?: string) => React.ReactNode;\n repeatRequest?: () => void;\n requestStatus?: ComboBoxRequestStatus;\n refInput?: (input: Nullable<Input | InternalTextareaWithLayout>) => void;\n refMenu?: (menu: Nullable<Menu>) => void;\n refInputLikeText?: (inputLikeText: Nullable<InputLikeText>) => void;\n viewMode?: ComboBoxViewMode;\n maxRows?: number;\n}\n\ntype DefaultProps<T> = Required<\n Pick<\n ComboBoxViewProps<T>,\n | 'renderItem'\n | 'renderValue'\n | 'renderAddButton'\n | 'repeatRequest'\n | 'requestStatus'\n | 'onClickOutside'\n | 'onFocusOutside'\n | 'width'\n | 'showClearIcon'\n >\n>;\n\nexport const ComboBoxViewIds = {\n menu: 'ComboBoxView__menu',\n};\n\ninterface ComboBoxViewState {\n anchorElement: Nullable<Element>;\n clearCrossShowed: boolean;\n}\n\n@responsiveLayout\n@rootNode\n@withSize\nexport class ComboBoxView<T> extends React.Component<ComboBoxViewProps<T>, ComboBoxViewState> {\n public static __KONTUR_REACT_UI__ = 'ComboBoxView';\n public static displayName = 'ComboBoxView';\n\n public static defaultProps: DefaultProps<unknown> = {\n renderItem: (item: any) => item,\n renderValue: (item: any) => item,\n renderAddButton: () => null,\n repeatRequest: () => undefined,\n requestStatus: ComboBoxRequestStatus.Unknown,\n onClickOutside: () => {\n /**/\n },\n onFocusOutside: () => {\n /**/\n },\n width: 250,\n showClearIcon: 'never',\n };\n\n private getProps = createPropsGetter(ComboBoxView.defaultProps);\n\n public getRootNode!: TGetRootNode;\n private input: Nullable<Input | InternalTextareaWithLayout>;\n private setRootNode!: TSetRootNode;\n private mobileInput: Nullable<Input> = null;\n private isMobileLayout!: boolean;\n private dropdownContainerRef = React.createRef<Popup>();\n private theme!: Theme;\n private size!: SizeProp;\n private menuId = ComboBoxViewIds.menu + getRandomID();\n\n public state: ComboBoxViewState = {\n anchorElement: null,\n clearCrossShowed: this.props.showClearIcon === 'always' && !!this.props.value?.toString(),\n };\n\n public componentDidMount() {\n this.updateAnchorElement();\n\n if (this.props.autoFocus && this.props.onFocus) {\n this.props.onFocus();\n }\n }\n\n updateAnchorElement() {\n const parent = this.getParent();\n const anchorElement = this.state.anchorElement;\n\n if (anchorElement !== parent) {\n this.setState({\n anchorElement: parent,\n });\n }\n }\n\n public componentDidUpdate(prevProps: ComboBoxViewProps<T>) {\n const { input, props } = this;\n\n this.updateAnchorElement();\n\n if (props.editing && !prevProps.editing && input) {\n input.focus();\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = getComboBoxTheme(theme, this.props.viewMode);\n return <ThemeContext.Provider value={this.theme}>{this.renderMain()}</ThemeContext.Provider>;\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n const { onMouseEnter, onMouseLeave, onMouseOver, opened } = this.props;\n const { onClickOutside, onFocusOutside, width } = this.getProps();\n\n const isMobile = this.isMobileLayout;\n\n const input = this.renderInput();\n\n return (\n <CommonWrapper {...this.props}>\n <RenderLayer onClickOutside={onClickOutside} onFocusOutside={onFocusOutside} active={opened}>\n <span\n data-tid={CustomComboBoxDataTids.comboBoxView}\n style={{ width }}\n className={styles.root()}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onMouseOver={onMouseOver}\n ref={this.setRootNode}\n >\n {input}\n {isMobile ? this.renderMobileMenu() : this.renderMenu()}\n </span>\n </RenderLayer>\n </CommonWrapper>\n );\n }\n\n private getComboBoxMenu = () => {\n const { items, loading, opened, refMenu, maxMenuHeight, renderTotalCount, renderNotFound, totalCount } = this.props;\n\n const { repeatRequest, requestStatus, renderItem, itemWrapper } = this.getProps();\n return (\n <ComboBoxMenu\n hasMargin={false}\n menuId={this.menuId}\n items={items}\n loading={loading}\n maxMenuHeight={maxMenuHeight}\n onValueChange={this.handleItemSelect}\n opened={opened}\n refMenu={refMenu}\n renderTotalCount={renderTotalCount}\n renderItem={renderItem}\n renderNotFound={renderNotFound}\n itemWrapper={itemWrapper}\n renderAddButton={this.renderAddButton}\n repeatRequest={repeatRequest}\n requestStatus={requestStatus}\n totalCount={totalCount}\n isMobile={this.isMobileLayout}\n size={this.size}\n />\n );\n };\n\n private renderMenu = () => {\n const { opened, menuPos, menuAlign } = this.getProps();\n const { anchorElement } = this.state;\n\n return (\n opened &&\n anchorElement && (\n <Popup\n opened\n hasShadow\n tryBestFallbackPosition\n minWidth=\"100%\"\n anchorElement={anchorElement}\n priority={ZIndex.priorities.PopupMenu}\n positions={getMenuPositions(menuPos, menuAlign)}\n disablePortal={this.props.disablePortal}\n margin={parseInt(this.theme.menuOffsetY) - 1}\n ref={this.dropdownContainerRef}\n >\n {this.getComboBoxMenu()}\n </Popup>\n )\n );\n };\n\n private renderMobileMenu = () => {\n let rightIcon = null;\n\n const { loading, items, opened, onFocus, onInputValueChange, onInputKeyDown, placeholder, textValue } = this.props;\n if (loading && items && !!items.length) {\n rightIcon = this.renderSpinner();\n }\n\n const inputProps: InputProps = {\n autoComplete: 'off',\n autoFocus: true,\n width: '100%',\n onFocus,\n onValueChange: onInputValueChange,\n onKeyDown: onInputKeyDown,\n value: textValue,\n placeholder,\n rightIcon,\n };\n\n return (\n opened && (\n <MobilePopup\n headerChildComponent={<Input ref={this.refMobileInput} {...inputProps} />}\n onCloseRequest={this.props.onMobileClose}\n opened\n >\n {this.getComboBoxMenu()}\n </MobilePopup>\n )\n );\n };\n\n private getParent = () => {\n return getRootNode(this);\n };\n\n private renderAddButton = (): React.ReactNode => {\n return this.getProps().renderAddButton(this.props.textValue);\n };\n\n private renderInput(): React.ReactNode {\n const isMobile = this.isMobileLayout;\n\n const {\n id,\n align,\n borderless,\n disabled,\n editing,\n error,\n onFocus,\n onInputBlur,\n onInputValueChange,\n onInputFocus,\n onInputClick,\n onInputKeyDown,\n placeholder,\n textValue,\n value,\n warning,\n refInputLikeText,\n leftIcon,\n inputMode,\n 'aria-describedby': ariaDescribedby,\n 'aria-label': ariaLabel,\n showClearIcon,\n mask,\n maskChar,\n formatChars,\n onBeforePasteInMask,\n } = this.props;\n\n const rightIcon = this.getRightIcon();\n\n const inputProps = {\n id,\n align,\n borderless,\n disabled,\n error,\n maxLength: this.props.maxLength,\n onBlur: isMobile ? undefined : onInputBlur,\n onValueChange: onInputValueChange,\n onFocus: onInputFocus,\n onClick: isMobile ? this.handleMobileFocus : onInputClick,\n leftIcon,\n rightIcon,\n value: textValue || '',\n onKeyDown: onInputKeyDown,\n placeholder,\n width: '100%',\n ref: this.refInput,\n warning,\n inputMode,\n autoComplete: 'off',\n 'aria-describedby': ariaDescribedby,\n 'aria-controls': this.menuId,\n 'aria-label': ariaLabel,\n showClearIcon,\n size: this.size,\n };\n\n const multilineTextareaProps = {\n autoResize: true,\n rows: 1,\n extraRow: false,\n maxRows: this.props.maxRows,\n };\n\n if (this.props.viewMode === 'multiline' && !mask) {\n return <InternalTextareaWithLayout {...inputProps} {...multilineTextareaProps} />;\n }\n\n if (editing) {\n if (mask) {\n return (\n <MaskedInput\n {...inputProps}\n type=\"text\"\n mask={mask}\n maskChar={maskChar}\n formatChars={formatChars}\n onBeforePasteValue={onBeforePasteInMask}\n />\n );\n }\n\n if (this.props.viewMode === 'multiline-editing') {\n return <InternalTextareaWithLayout {...inputProps} {...multilineTextareaProps} />;\n }\n\n return <Input {...inputProps} />;\n }\n\n const { renderValue } = this.getProps();\n return (\n <InputLikeText\n id={id}\n align={align}\n borderless={borderless}\n error={error}\n onFocus={onFocus}\n leftIcon={leftIcon}\n rightIcon={rightIcon}\n disabled={disabled}\n warning={warning}\n placeholder={placeholder}\n size={this.size}\n width=\"100%\"\n ref={refInputLikeText}\n aria-describedby={ariaDescribedby}\n aria-controls={this.menuId}\n showClearIcon={showClearIcon}\n className={cx(mask && MaskedInputStyles.root(this.theme))}\n onClearCrossClick={this.props.onClearCrossClick}\n >\n {isNonNullable(value) && renderValue ? renderValue(value) : null}\n </InputLikeText>\n );\n }\n\n private handleMobileFocus = () => {\n this.props.onInputClick?.();\n\n this.mobileInput?.focus();\n };\n\n private handleItemSelect = (item: T) => {\n if (this.props.onValueChange) {\n this.props.onValueChange(item);\n }\n\n if (this.isMobileLayout) {\n this.props.onMobileClose?.();\n }\n };\n\n private refInput = (input: Nullable<Input | InternalTextareaWithLayout>) => {\n if (this.props.refInput) {\n this.props.refInput(input);\n }\n this.input = input;\n };\n\n private renderSpinner = () => (\n <span className={styles.spinnerWrapper()}>\n <Spinner type=\"mini\" caption=\"\" dimmed />\n </span>\n );\n\n private getRightIcon = () => {\n const { loading, items, drawArrow, rightIcon } = this.props;\n const size = this.size;\n\n if (loading && items && !!items.length) {\n return <LoadingIcon size={size} />;\n }\n\n if (rightIcon || drawArrow) {\n return rightIcon || <ArrowDownIcon size={size} />;\n }\n\n return null;\n };\n\n private refMobileInput = (input: Nullable<Input>) => {\n this.mobileInput = input;\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -35,6 +35,7 @@ interface MobilePopupProps extends Pick<HTMLAttributes<HTMLDivElement>, 'id'> {
|
|
|
35
35
|
export declare const MobilePopupDataTids: {
|
|
36
36
|
readonly root: "MobilePopup__root";
|
|
37
37
|
readonly container: "MobilePopup__container";
|
|
38
|
+
readonly backdrop: "MobilePopup__backdrop";
|
|
38
39
|
};
|
|
39
40
|
export declare class MobilePopup extends React.Component<MobilePopupProps> {
|
|
40
41
|
static __KONTUR_REACT_UI__: string;
|
|
@@ -46,5 +47,7 @@ export declare class MobilePopup extends React.Component<MobilePopupProps> {
|
|
|
46
47
|
render(): React.JSX.Element;
|
|
47
48
|
renderMain(): React.JSX.Element;
|
|
48
49
|
close: () => void;
|
|
50
|
+
private handleBackdropClick;
|
|
51
|
+
private handleBackdropMouseDown;
|
|
49
52
|
}
|
|
50
53
|
export {};
|
|
@@ -49,7 +49,8 @@ var _MobilePopupFooter = require("./MobilePopupFooter");var _class, _MobilePopup
|
|
|
49
49
|
|
|
50
50
|
var MobilePopupDataTids = exports.MobilePopupDataTids = {
|
|
51
51
|
root: 'MobilePopup__root',
|
|
52
|
-
container: 'MobilePopup__container'
|
|
52
|
+
container: 'MobilePopup__container',
|
|
53
|
+
backdrop: 'MobilePopup__backdrop'
|
|
53
54
|
};var
|
|
54
55
|
|
|
55
56
|
|
|
@@ -102,6 +103,11 @@ MobilePopup = exports.MobilePopup = (0, _rootNode.rootNode)(_class = (_MobilePop
|
|
|
102
103
|
|
|
103
104
|
|
|
104
105
|
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
|
|
105
111
|
|
|
106
112
|
|
|
107
113
|
|
|
@@ -112,4 +118,16 @@ MobilePopup = exports.MobilePopup = (0, _rootNode.rootNode)(_class = (_MobilePop
|
|
|
112
118
|
if (_this.props.onCloseRequest) {
|
|
113
119
|
_this.props.onCloseRequest();
|
|
114
120
|
}
|
|
115
|
-
};
|
|
121
|
+
};_this.
|
|
122
|
+
|
|
123
|
+
handleBackdropClick = function (event) {
|
|
124
|
+
event.preventDefault();
|
|
125
|
+
event.stopPropagation();
|
|
126
|
+
_this.close();
|
|
127
|
+
};_this.
|
|
128
|
+
|
|
129
|
+
handleBackdropMouseDown = function (event) {
|
|
130
|
+
// NOTE: prevent double close event from backdrop and RenderLayer
|
|
131
|
+
event.preventDefault();
|
|
132
|
+
event.stopPropagation();
|
|
133
|
+
};return _this;}(0, _inheritsLoose2.default)(MobilePopup, _React$Component);var _proto = MobilePopup.prototype;_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return _this2.renderMain();});};_proto.renderMain = function renderMain() {var content = /*#__PURE__*/_react.default.createElement(_ZIndex.ZIndex, { id: this.props.id, className: _MobilePopup2.jsStyles.zIndex(), priority: 'MobilePopup' }, /*#__PURE__*/_react.default.createElement(_reactTransitionGroup.Transition, { in: this.props.opened, onExited: this.props.onClose, mountOnEnter: true, unmountOnExit: true, timeout: 0 }, /*#__PURE__*/_react.default.createElement("div", { className: _MobilePopup2.jsStyles.wrapper() }, /*#__PURE__*/_react.default.createElement(_RenderLayer.RenderLayer, { onClickOutside: this.close }, /*#__PURE__*/_react.default.createElement("div", { ref: this.setRootNode, "data-tid": MobilePopupDataTids.container, className: _MobilePopup2.jsStyles.container(this.theme) }, /*#__PURE__*/_react.default.createElement("div", { "data-tid": MobilePopupDataTids.root, className: _MobilePopup2.jsStyles.root(this.theme) }, /*#__PURE__*/_react.default.createElement(_MobilePopupHeader.MobilePopupHeader, { caption: this.props.caption }, this.props.headerChildComponent), /*#__PURE__*/_react.default.createElement("div", { className: _MobilePopup2.jsStyles.content(this.theme) }, this.props.children), /*#__PURE__*/_react.default.createElement(_MobilePopupFooter.MobilePopupFooter, null, this.props.footerChildComponent)), /*#__PURE__*/_react.default.createElement("div", { onClick: this.close, className: _MobilePopup2.jsStyles.bottomIndent() }))), /*#__PURE__*/_react.default.createElement("div", { "data-tid": MobilePopupDataTids.backdrop, className: _MobilePopup2.jsStyles.bg(), onMouseDown: this.handleBackdropMouseDown, onClick: this.handleBackdropClick }), /*#__PURE__*/_react.default.createElement(_HideBodyVerticalScroll.HideBodyVerticalScroll, null))));if (this.props.withoutRenderContainer) {return content;}return /*#__PURE__*/_react.default.createElement(_RenderContainer.RenderContainer, null, content);};return MobilePopup;}(_react.default.Component), _MobilePopup.__KONTUR_REACT_UI__ = 'MobileMenuHeader', _MobilePopup.displayName = 'MobileMenuHeader', _MobilePopup.defaultRootNode = null, _MobilePopup)) || _class;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_reactTransitionGroup","_ThemeContext","_RenderContainer","_HideBodyVerticalScroll","_ZIndex","_RenderLayer","_rootNode","_MobilePopup2","_MobilePopupHeader","_MobilePopupFooter","_class","_MobilePopup","MobilePopupDataTids","exports","root","container","MobilePopup","rootNode","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","close","props","onCloseRequest","_inheritsLoose2","default","_proto","prototype","render","_this2","createElement","ThemeContext","Consumer","theme","renderMain","content","ZIndex","id","className","jsStyles","zIndex","priority","Transition","in","opened","onExited","onClose","mountOnEnter","unmountOnExit","timeout","wrapper","RenderLayer","onClickOutside","ref","setRootNode","MobilePopupHeader","caption","headerChildComponent","children","MobilePopupFooter","footerChildComponent","onClick","bottomIndent","bg","HideBodyVerticalScroll","withoutRenderContainer","RenderContainer","React","Component","__KONTUR_REACT_UI__","displayName","defaultRootNode"],"sources":["MobilePopup.tsx"],"sourcesContent":["import type { HTMLAttributes } from 'react';\nimport React from 'react';\nimport { Transition } from 'react-transition-group';\n\nimport type { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { RenderContainer } from '../RenderContainer';\nimport { HideBodyVerticalScroll } from '../HideBodyVerticalScroll';\nimport { ZIndex } from '../ZIndex';\nimport { RenderLayer } from '../RenderLayer';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\n\nimport { jsStyles } from './MobilePopup.styles';\nimport { MobilePopupHeader } from './MobilePopupHeader';\nimport { MobilePopupFooter } from './MobilePopupFooter';\n\ninterface MobilePopupProps extends Pick<HTMLAttributes<HTMLDivElement>, 'id'> {\n /**\n * Функция, вызываемая при закрытии всплывающего окна\n */\n onClose?: () => void;\n /**\n * Заголовок всплывающего окна, располагается в шапке\n */\n caption?: string;\n /**\n * Шапка всплывающего окна\n */\n headerChildComponent?: React.ReactNode;\n /**\n * Подвал всплывающего окна\n */\n footerChildComponent?: React.ReactNode;\n /**\n * Позволяет получить контент всплывающего окна без обёртки в виде `RenderContainer`\n */\n withoutRenderContainer?: boolean;\n /**\n * Функция, вызываемая при клике по вуали\n */\n onCloseRequest?: () => void;\n /**\n * Позволяет контролировать текущее состояние всплывающего окна\n */\n opened: boolean;\n children?: React.ReactNode;\n}\n\nexport const MobilePopupDataTids = {\n root: 'MobilePopup__root',\n container: 'MobilePopup__container',\n} as const;\n\n@rootNode\nexport class MobilePopup extends React.Component<MobilePopupProps> {\n public static __KONTUR_REACT_UI__ = 'MobileMenuHeader';\n public static displayName = 'MobileMenuHeader';\n\n // see #2873 and #2895\n public static readonly defaultRootNode = null;\n\n private theme!: Theme;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n const content = (\n <ZIndex id={this.props.id} className={jsStyles.zIndex()} priority={'MobilePopup'}>\n <Transition in={this.props.opened} onExited={this.props.onClose} mountOnEnter unmountOnExit timeout={0}>\n <div className={jsStyles.wrapper()}>\n <RenderLayer onClickOutside={this.close}>\n <div\n ref={this.setRootNode}\n data-tid={MobilePopupDataTids.container}\n className={jsStyles.container(this.theme)}\n >\n <div data-tid={MobilePopupDataTids.root} className={jsStyles.root(this.theme)}>\n <MobilePopupHeader caption={this.props.caption}>{this.props.headerChildComponent}</MobilePopupHeader>\n <div className={jsStyles.content(this.theme)}>{this.props.children}</div>\n <MobilePopupFooter>{this.props.footerChildComponent}</MobilePopupFooter>\n </div>\n <div onClick={this.close} className={jsStyles.bottomIndent()} />\n </div>\n </RenderLayer>\n <div
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactTransitionGroup","_ThemeContext","_RenderContainer","_HideBodyVerticalScroll","_ZIndex","_RenderLayer","_rootNode","_MobilePopup2","_MobilePopupHeader","_MobilePopupFooter","_class","_MobilePopup","MobilePopupDataTids","exports","root","container","backdrop","MobilePopup","rootNode","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","close","props","onCloseRequest","handleBackdropClick","event","preventDefault","stopPropagation","handleBackdropMouseDown","_inheritsLoose2","default","_proto","prototype","render","_this2","createElement","ThemeContext","Consumer","theme","renderMain","content","ZIndex","id","className","jsStyles","zIndex","priority","Transition","in","opened","onExited","onClose","mountOnEnter","unmountOnExit","timeout","wrapper","RenderLayer","onClickOutside","ref","setRootNode","MobilePopupHeader","caption","headerChildComponent","children","MobilePopupFooter","footerChildComponent","onClick","bottomIndent","bg","onMouseDown","HideBodyVerticalScroll","withoutRenderContainer","RenderContainer","React","Component","__KONTUR_REACT_UI__","displayName","defaultRootNode"],"sources":["MobilePopup.tsx"],"sourcesContent":["import type { HTMLAttributes } from 'react';\nimport React from 'react';\nimport { Transition } from 'react-transition-group';\n\nimport type { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { RenderContainer } from '../RenderContainer';\nimport { HideBodyVerticalScroll } from '../HideBodyVerticalScroll';\nimport { ZIndex } from '../ZIndex';\nimport { RenderLayer } from '../RenderLayer';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\n\nimport { jsStyles } from './MobilePopup.styles';\nimport { MobilePopupHeader } from './MobilePopupHeader';\nimport { MobilePopupFooter } from './MobilePopupFooter';\n\ninterface MobilePopupProps extends Pick<HTMLAttributes<HTMLDivElement>, 'id'> {\n /**\n * Функция, вызываемая при закрытии всплывающего окна\n */\n onClose?: () => void;\n /**\n * Заголовок всплывающего окна, располагается в шапке\n */\n caption?: string;\n /**\n * Шапка всплывающего окна\n */\n headerChildComponent?: React.ReactNode;\n /**\n * Подвал всплывающего окна\n */\n footerChildComponent?: React.ReactNode;\n /**\n * Позволяет получить контент всплывающего окна без обёртки в виде `RenderContainer`\n */\n withoutRenderContainer?: boolean;\n /**\n * Функция, вызываемая при клике по вуали\n */\n onCloseRequest?: () => void;\n /**\n * Позволяет контролировать текущее состояние всплывающего окна\n */\n opened: boolean;\n children?: React.ReactNode;\n}\n\nexport const MobilePopupDataTids = {\n root: 'MobilePopup__root',\n container: 'MobilePopup__container',\n backdrop: 'MobilePopup__backdrop',\n} as const;\n\n@rootNode\nexport class MobilePopup extends React.Component<MobilePopupProps> {\n public static __KONTUR_REACT_UI__ = 'MobileMenuHeader';\n public static displayName = 'MobileMenuHeader';\n\n // see #2873 and #2895\n public static readonly defaultRootNode = null;\n\n private theme!: Theme;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n const content = (\n <ZIndex id={this.props.id} className={jsStyles.zIndex()} priority={'MobilePopup'}>\n <Transition in={this.props.opened} onExited={this.props.onClose} mountOnEnter unmountOnExit timeout={0}>\n <div className={jsStyles.wrapper()}>\n <RenderLayer onClickOutside={this.close}>\n <div\n ref={this.setRootNode}\n data-tid={MobilePopupDataTids.container}\n className={jsStyles.container(this.theme)}\n >\n <div data-tid={MobilePopupDataTids.root} className={jsStyles.root(this.theme)}>\n <MobilePopupHeader caption={this.props.caption}>{this.props.headerChildComponent}</MobilePopupHeader>\n <div className={jsStyles.content(this.theme)}>{this.props.children}</div>\n <MobilePopupFooter>{this.props.footerChildComponent}</MobilePopupFooter>\n </div>\n <div onClick={this.close} className={jsStyles.bottomIndent()} />\n </div>\n </RenderLayer>\n <div\n data-tid={MobilePopupDataTids.backdrop}\n className={jsStyles.bg()}\n onMouseDown={this.handleBackdropMouseDown}\n onClick={this.handleBackdropClick}\n />\n <HideBodyVerticalScroll />\n </div>\n </Transition>\n </ZIndex>\n );\n\n if (this.props.withoutRenderContainer) {\n return content;\n }\n\n return <RenderContainer>{content}</RenderContainer>;\n }\n\n public close = () => {\n if (this.props.onCloseRequest) {\n this.props.onCloseRequest();\n }\n };\n\n private handleBackdropClick = (event: React.MouseEvent<HTMLDivElement>) => {\n event.preventDefault();\n event.stopPropagation();\n this.close();\n };\n\n private handleBackdropMouseDown = (event: React.MouseEvent<HTMLDivElement>) => {\n // NOTE: prevent double close event from backdrop and RenderLayer\n event.preventDefault();\n event.stopPropagation();\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -44,8 +44,7 @@ var styles = {
|
|
|
44
44
|
},
|
|
45
45
|
|
|
46
46
|
bg: function bg() {
|
|
47
|
-
return (0, _Emotion.css)(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteralLoose2.default)(["\n position: fixed;\n top: 0;\n bottom: 0;\n right: 0;\n left: 0;\n z-index: 9999;\n background: #333333;\n
|
|
48
|
-
|
|
47
|
+
return (0, _Emotion.css)(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteralLoose2.default)(["\n position: fixed;\n top: 0;\n bottom: 0;\n right: 0;\n left: 0;\n z-index: 9999;\n background: #333333;\n opacity: 50%;\n "])));
|
|
49
48
|
|
|
50
49
|
|
|
51
50
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_Emotion","require","_templateObject","_templateObject2","_templateObject3","_templateObject4","_templateObject5","_templateObject6","_templateObject7","styles","root","t","css","_taggedTemplateLiteralLoose2","default","mobilePopupContainerBorderRadius","mobilePopupContainerBottomPadding","menuBgDefault","wrapper","content","bgDefault","container","mobilePopupTopPadding","mobilePopupOuterIndentY","bg","bottomIndent","zIndex","jsStyles","exports","memoizeStyle"],"sources":["MobilePopup.styles.ts"],"sourcesContent":["import { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport type { Theme } from '../../lib/theming/Theme';\n\nconst styles = {\n root(t: Theme) {\n return css`\n width: 100%;\n height: 100%;\n flex-direction: column;\n display: flex;\n justify-content: flex-end;\n border-radius: ${t.mobilePopupContainerBorderRadius};\n overflow: hidden;\n padding-bottom: ${t.mobilePopupContainerBottomPadding};\n background: ${t.menuBgDefault};\n `;\n },\n\n wrapper() {\n return css`\n position: fixed;\n top: 0;\n bottom: 0;\n right: 0;\n left: 0;\n overflow: auto;\n `;\n },\n\n content(t: Theme) {\n return css`\n background-color: ${t.bgDefault};\n `;\n },\n\n container(t: Theme) {\n return css`\n position: absolute;\n top: ${t.mobilePopupTopPadding};\n left: ${t.mobilePopupOuterIndentY};\n right: ${t.mobilePopupOuterIndentY};\n z-index: 100000;\n `;\n },\n\n bg() {\n return css`\n position: fixed;\n top: 0;\n bottom: 0;\n right: 0;\n left: 0;\n z-index: 9999;\n background: #333333;\n
|
|
1
|
+
{"version":3,"names":["_Emotion","require","_templateObject","_templateObject2","_templateObject3","_templateObject4","_templateObject5","_templateObject6","_templateObject7","styles","root","t","css","_taggedTemplateLiteralLoose2","default","mobilePopupContainerBorderRadius","mobilePopupContainerBottomPadding","menuBgDefault","wrapper","content","bgDefault","container","mobilePopupTopPadding","mobilePopupOuterIndentY","bg","bottomIndent","zIndex","jsStyles","exports","memoizeStyle"],"sources":["MobilePopup.styles.ts"],"sourcesContent":["import { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport type { Theme } from '../../lib/theming/Theme';\n\nconst styles = {\n root(t: Theme) {\n return css`\n width: 100%;\n height: 100%;\n flex-direction: column;\n display: flex;\n justify-content: flex-end;\n border-radius: ${t.mobilePopupContainerBorderRadius};\n overflow: hidden;\n padding-bottom: ${t.mobilePopupContainerBottomPadding};\n background: ${t.menuBgDefault};\n `;\n },\n\n wrapper() {\n return css`\n position: fixed;\n top: 0;\n bottom: 0;\n right: 0;\n left: 0;\n overflow: auto;\n `;\n },\n\n content(t: Theme) {\n return css`\n background-color: ${t.bgDefault};\n `;\n },\n\n container(t: Theme) {\n return css`\n position: absolute;\n top: ${t.mobilePopupTopPadding};\n left: ${t.mobilePopupOuterIndentY};\n right: ${t.mobilePopupOuterIndentY};\n z-index: 100000;\n `;\n },\n\n bg() {\n return css`\n position: fixed;\n top: 0;\n bottom: 0;\n right: 0;\n left: 0;\n z-index: 9999;\n background: #333333;\n opacity: 50%;\n `;\n },\n\n bottomIndent() {\n return css`\n height: 80px;\n `;\n },\n\n zIndex() {\n return css`\n position: relative;\n `;\n },\n};\n\nexport const jsStyles = memoizeStyle(styles);\n"],"mappings":"sRAAA,IAAAA,QAAA,GAAAC,OAAA,8BAA8D,IAAAC,eAAA,EAAAC,gBAAA,EAAAC,gBAAA,EAAAC,gBAAA,EAAAC,gBAAA,EAAAC,gBAAA,EAAAC,gBAAA;;;AAG9D,IAAMC,MAAM,GAAG;EACbC,IAAI,WAAAA,KAACC,CAAQ,EAAE;IACb,WAAOC,YAAG,EAAAV,eAAA,KAAAA,eAAA,OAAAW,4BAAA,CAAAC,OAAA;;;;;;IAMSH,CAAC,CAACI,gCAAgC;;IAEjCJ,CAAC,CAACK,iCAAiC;IACvCL,CAAC,CAACM,aAAa;;EAEjC,CAAC;;EAEDC,OAAO,WAAAA,QAAA,EAAG;IACR,WAAON,YAAG,EAAAT,gBAAA,KAAAA,gBAAA,OAAAU,4BAAA,CAAAC,OAAA;;;;;;;;EAQZ,CAAC;;EAEDK,OAAO,WAAAA,QAACR,CAAQ,EAAE;IAChB,WAAOC,YAAG,EAAAR,gBAAA,KAAAA,gBAAA,OAAAS,4BAAA,CAAAC,OAAA;IACYH,CAAC,CAACS,SAAS;;EAEnC,CAAC;;EAEDC,SAAS,WAAAA,UAACV,CAAQ,EAAE;IAClB,WAAOC,YAAG,EAAAP,gBAAA,KAAAA,gBAAA,OAAAQ,4BAAA,CAAAC,OAAA;;IAEDH,CAAC,CAACW,qBAAqB;IACtBX,CAAC,CAACY,uBAAuB;IACxBZ,CAAC,CAACY,uBAAuB;;;EAGtC,CAAC;;EAEDC,EAAE,WAAAA,GAAA,EAAG;IACH,WAAOZ,YAAG,EAAAN,gBAAA,KAAAA,gBAAA,OAAAO,4BAAA,CAAAC,OAAA;;;;;;;;;;EAUZ,CAAC;;EAEDW,YAAY,WAAAA,aAAA,EAAG;IACb,WAAOb,YAAG,EAAAL,gBAAA,KAAAA,gBAAA,OAAAM,4BAAA,CAAAC,OAAA;;;EAGZ,CAAC;;EAEDY,MAAM,WAAAA,OAAA,EAAG;IACP,WAAOd,YAAG,EAAAJ,gBAAA,KAAAA,gBAAA,OAAAK,4BAAA,CAAAC,OAAA;;;EAGZ;AACF,CAAC;;AAEM,IAAMa,QAAQ,GAAAC,OAAA,CAAAD,QAAA,GAAG,IAAAE,qBAAY,EAACpB,MAAM,CAAC","ignoreList":[]}
|
|
@@ -96,6 +96,11 @@ export interface PopupProps extends Omit<CommonProps, 'children'>, PopupHandlerP
|
|
|
96
96
|
* @see https://github.com/skbkontur/retail-ui/pull/1195
|
|
97
97
|
*/
|
|
98
98
|
tryPreserveFirstRenderedPosition?: boolean;
|
|
99
|
+
/**
|
|
100
|
+
* Включает поиск наиболее подходящей позиции попапа, если ни одна заданная позиция попапа не влезает во вьюпорт.
|
|
101
|
+
* Выбирается позиция с наибольшей видимой площадью.
|
|
102
|
+
*/
|
|
103
|
+
tryBestFallbackPosition?: boolean;
|
|
99
104
|
withoutMobile?: boolean;
|
|
100
105
|
/** @ignore */
|
|
101
106
|
disablePortal?: boolean;
|
|
@@ -177,8 +182,15 @@ export declare class Popup extends React.Component<PopupProps, PopupState> {
|
|
|
177
182
|
private cancelDelayedUpdateLocation;
|
|
178
183
|
private updateLocation;
|
|
179
184
|
private locationEquals;
|
|
180
|
-
private
|
|
185
|
+
private getOrderedPositions;
|
|
181
186
|
private getLocation;
|
|
187
|
+
private tryReuseCurrentLocation;
|
|
188
|
+
private tryGetFirstFullyVisibleLocation;
|
|
189
|
+
private getFallbackLocation;
|
|
190
|
+
private pickBestFallbackPosition;
|
|
191
|
+
private evaluateFallbackCandidate;
|
|
192
|
+
private pickBestAreaCandidate;
|
|
193
|
+
private pickBestOverflowCandidate;
|
|
182
194
|
private getPinnedPopupOffset;
|
|
183
195
|
private getRelativeShift;
|
|
184
196
|
private getCoordinates;
|
|
@@ -168,6 +168,20 @@ var DUMMY_LOCATION = exports.DUMMY_LOCATION = {
|
|
|
168
168
|
|
|
169
169
|
|
|
170
170
|
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
|
|
171
185
|
|
|
172
186
|
|
|
173
187
|
|
|
@@ -744,6 +758,164 @@ Popup = exports.Popup = (0, _decorator.responsiveLayout)(_class = (0, _rootNode.
|
|
|
744
758
|
|
|
745
759
|
|
|
746
760
|
|
|
761
|
+
|
|
762
|
+
|
|
763
|
+
|
|
764
|
+
|
|
765
|
+
|
|
766
|
+
|
|
767
|
+
|
|
768
|
+
|
|
769
|
+
|
|
770
|
+
|
|
771
|
+
|
|
772
|
+
|
|
773
|
+
|
|
774
|
+
|
|
775
|
+
|
|
776
|
+
|
|
777
|
+
|
|
778
|
+
|
|
779
|
+
|
|
780
|
+
|
|
781
|
+
|
|
782
|
+
|
|
783
|
+
|
|
784
|
+
|
|
785
|
+
|
|
786
|
+
|
|
787
|
+
|
|
788
|
+
|
|
789
|
+
|
|
790
|
+
|
|
791
|
+
|
|
792
|
+
|
|
793
|
+
|
|
794
|
+
|
|
795
|
+
|
|
796
|
+
|
|
797
|
+
|
|
798
|
+
|
|
799
|
+
|
|
800
|
+
|
|
801
|
+
|
|
802
|
+
|
|
803
|
+
|
|
804
|
+
|
|
805
|
+
|
|
806
|
+
|
|
807
|
+
|
|
808
|
+
|
|
809
|
+
|
|
810
|
+
|
|
811
|
+
|
|
812
|
+
|
|
813
|
+
|
|
814
|
+
|
|
815
|
+
|
|
816
|
+
|
|
817
|
+
|
|
818
|
+
|
|
819
|
+
|
|
820
|
+
|
|
821
|
+
|
|
822
|
+
|
|
823
|
+
|
|
824
|
+
|
|
825
|
+
|
|
826
|
+
|
|
827
|
+
|
|
828
|
+
|
|
829
|
+
|
|
830
|
+
|
|
831
|
+
|
|
832
|
+
|
|
833
|
+
|
|
834
|
+
|
|
835
|
+
|
|
836
|
+
|
|
837
|
+
|
|
838
|
+
|
|
839
|
+
|
|
840
|
+
|
|
841
|
+
|
|
842
|
+
|
|
843
|
+
|
|
844
|
+
|
|
845
|
+
|
|
846
|
+
|
|
847
|
+
|
|
848
|
+
|
|
849
|
+
|
|
850
|
+
|
|
851
|
+
|
|
852
|
+
|
|
853
|
+
|
|
854
|
+
|
|
855
|
+
|
|
856
|
+
|
|
857
|
+
|
|
858
|
+
|
|
859
|
+
|
|
860
|
+
|
|
861
|
+
|
|
862
|
+
|
|
863
|
+
|
|
864
|
+
|
|
865
|
+
|
|
866
|
+
|
|
867
|
+
|
|
868
|
+
|
|
869
|
+
|
|
870
|
+
|
|
871
|
+
|
|
872
|
+
|
|
873
|
+
|
|
874
|
+
|
|
875
|
+
|
|
876
|
+
|
|
877
|
+
|
|
878
|
+
|
|
879
|
+
|
|
880
|
+
|
|
881
|
+
|
|
882
|
+
|
|
883
|
+
|
|
884
|
+
|
|
885
|
+
|
|
886
|
+
|
|
887
|
+
|
|
888
|
+
|
|
889
|
+
|
|
890
|
+
|
|
891
|
+
|
|
892
|
+
|
|
893
|
+
|
|
894
|
+
|
|
895
|
+
|
|
896
|
+
|
|
897
|
+
|
|
898
|
+
|
|
899
|
+
|
|
900
|
+
|
|
901
|
+
|
|
902
|
+
|
|
903
|
+
|
|
904
|
+
|
|
905
|
+
|
|
906
|
+
|
|
907
|
+
|
|
908
|
+
|
|
909
|
+
|
|
910
|
+
|
|
911
|
+
|
|
912
|
+
|
|
913
|
+
|
|
914
|
+
|
|
915
|
+
|
|
916
|
+
|
|
917
|
+
|
|
918
|
+
|
|
747
919
|
|
|
748
920
|
|
|
749
921
|
|
|
@@ -796,17 +968,17 @@ Popup = exports.Popup = (0, _decorator.responsiveLayout)(_class = (0, _rootNode.
|
|
|
796
968
|
element.removeEventListener('mouseleave', this.handleMouseLeave); // @ts-expect-error: See the comment above
|
|
797
969
|
element.removeEventListener('click', this.handleClick);element.removeEventListener('focusin', this.handleFocus);element.removeEventListener('focusout', this.handleBlur);this.hasAnchorElementListeners = false;}};_proto.renderContent = function renderContent(location) {var _this4 = this;var _this$props = this.props,maxWidth = _this$props.maxWidth,opened = _this$props.opened;var _this$getProps2 = this.getProps(),hasShadow = _this$getProps2.hasShadow,disableAnimations = _this$getProps2.disableAnimations,ignoreHover = _this$getProps2.ignoreHover;var children = this.renderChildren();var relativeShift = this.getRelativeShift();var _PopupHelper$getPosit = _PopupHelper.PopupHelper.getPositionObject(location.position),direction = _PopupHelper$getPosit.direction;var rootStyle = { maxWidth: maxWidth, top: location.coordinates.top + relativeShift.top, left: location.coordinates.left + relativeShift.left };return /*#__PURE__*/_react.default.createElement(_reactTransitionGroup.Transition, { timeout: TRANSITION_TIMEOUT, appear: !disableAnimations, in: Boolean(opened && children), mountOnEnter: true, unmountOnExit: true, enter: !disableAnimations, exit: !disableAnimations, onExited: this.resetLocation, nodeRef: this.refForTransition }, function (state) {var _this4$props$id, _extends2, _ref;return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends3.default)({}, _this4.props, { rootNodeRef: _this4.setRootNode }, _this4.prepareDataVisualState()), /*#__PURE__*/_react.default.createElement(_ZIndex.ZIndex, { id: (_this4$props$id = _this4.props.id) != null ? _this4$props$id : _this4.rootId, "data-tid": PopupDataTids.root, priority: _this4.props.priority, className: (0, _Emotion.cx)((0, _extends3.default)((_extends2 = {}, _extends2[_Popup2.styles.popup(_this4.theme)] = true, _extends2[_Popup2.styles.shadow(_this4.theme)] = hasShadow, _extends2[_Popup2.styles.popupIgnoreHover()] = ignoreHover, _extends2), disableAnimations ? {} : (_ref = {}, _ref[_Popup2.styles["transition-enter-" + direction](_this4.theme)] = true, _ref[_Popup2.styles.transitionEnter()] = state === 'entering', _ref[_Popup2.styles.transitionEnterActive()] = state === 'entered', _ref[_Popup2.styles.transitionExit()] = state === 'exiting', _ref))), style: rootStyle, onMouseEnter: _this4.handleMouseEnter, onMouseLeave: _this4.handleMouseLeave }, _this4.content(children), (!_this4.isMobileLayout || _this4.props.withoutMobile) && _this4.renderPin(location.position)));});};_proto.renderChildren = function renderChildren() {return (0, _utils.isFunction)(this.props.children) ? this.props.children() : this.props.children;};_proto.renderPin = function renderPin(positionName) {var isDefaultBorderColor = this.theme.popupBorderColor === POPUP_BORDER_DEFAULT_COLOR;var pinBorder = _client.isIE11 && isDefaultBorderColor ? 'rgba(0, 0, 0, 0.09)' : this.theme.popupBorderColor;var _this$props2 = this.props,pinSize = _this$props2.pinSize,backgroundColor = _this$props2.backgroundColor,borderColor = _this$props2.borderColor;var _this$getProps3 = this.getProps(),hasShadow = _this$getProps3.hasShadow,hasPin = _this$getProps3.hasPin;var position = _PopupHelper.PopupHelper.getPositionObject(positionName);return hasPin && !PopupNonPinnablePositions.includes(positionName) && (this.featureFlags.popupFixPinTearing ? /*#__PURE__*/_react.default.createElement(_PopupPinNew.PopupPinNew, { popupElement: this.lastPopupContentElement, popupPosition: positionName, size: pinSize || parseInt(this.theme.popupPinSize), offset: this.getPinOffset(position.align), backgroundColor: backgroundColor || this.theme.popupBackground }) : /*#__PURE__*/_react.default.createElement(_PopupPin.PopupPin, { popupElement: this.lastPopupContentElement, popupPosition: positionName, size: pinSize || parseInt(this.theme.popupPinSize), offset: this.getPinOffset(position.align), borderWidth: hasShadow ? 1 : 0, backgroundColor: backgroundColor || this.theme.popupBackground, borderColor: borderColor || pinBorder }));};_proto.delayUpdateLocation = function delayUpdateLocation() {this.cancelDelayedUpdateLocation();this.locationUpdateId = _globalObject.globalObject.requestAnimationFrame == null ? void 0 : _globalObject.globalObject.requestAnimationFrame(this.updateLocation);};_proto.cancelDelayedUpdateLocation = function cancelDelayedUpdateLocation() {if (this.locationUpdateId) {_globalObject.globalObject.cancelAnimationFrame == null || _globalObject.globalObject.cancelAnimationFrame(this.locationUpdateId);this.locationUpdateId = null;}};_proto.locationEquals = function locationEquals(x, y) {if (x === y) {return true;}if ((0, _utils.isNullable)(x) || (0, _utils.isNullable)(y)) {return false;}if (!_client.isIE11 && !_client.isEdge) {return x.coordinates.left === y.coordinates.left && x.coordinates.top === y.coordinates.top && x.position === y.position;} // Для ie/edge обновляем позицию только при разнице минимум в 1. Иначе есть вероятность
|
|
798
970
|
// уйти в бесконечный ререндер
|
|
799
|
-
return x.position === y.position && Math.abs(x.coordinates.top - y.coordinates.top) <= 1 && Math.abs(x.coordinates.left - y.coordinates.left) <= 1;};_proto.
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
971
|
+
return x.position === y.position && Math.abs(x.coordinates.top - y.coordinates.top) <= 1 && Math.abs(x.coordinates.left - y.coordinates.left) <= 1;};_proto.getOrderedPositions = function getOrderedPositions() {var positions = this.props.positions ? this.props.positions : PopupPinnablePositions;var pos_ = '';if (this.props.pos) {pos_ = this.props.pos;} else {pos_ = positions[0];}var index = positions.findIndex(function (position) {return position.startsWith(pos_);});if (index === -1) {(0, _warning.default)(false, 'Unexpected position ' + pos_ + ' passed to Popup. Expected one of: ' + positions.join(', '));return positions;}return [].concat(positions.slice(index), positions.slice(0, index));};_proto.getLocation = function getLocation(popupElement, location) {var _this$getProps4 = this.getProps(),tryBestFallbackPosition = _this$getProps4.tryBestFallbackPosition;var positions = this.getOrderedPositions();var anchorElement = this.anchorElement;(0, _warning.default)(anchorElement && (0, _isInstanceOf.isInstanceOf)(anchorElement, _globalObject.globalObject.Element), 'Anchor element is not defined or not instance of Element');if (!(anchorElement && (0, _isInstanceOf.isInstanceOf)(anchorElement, _globalObject.globalObject.Element))) {return location;}var anchorRect = _PopupHelper.PopupHelper.getElementAbsoluteRect(anchorElement);var popupRect = _PopupHelper.PopupHelper.getElementAbsoluteRect(popupElement);var reusedLocation = this.tryReuseCurrentLocation(location, positions, anchorRect, popupRect);if (reusedLocation) {return reusedLocation;}var fullyVisibleLocation = this.tryGetFirstFullyVisibleLocation(positions, anchorRect, popupRect);if (fullyVisibleLocation) {return fullyVisibleLocation;}return this.getFallbackLocation(positions, anchorRect, popupRect, Boolean(tryBestFallbackPosition));};_proto.tryReuseCurrentLocation = function tryReuseCurrentLocation(location, positions, anchorRect, popupRect) {var _this$getProps5 = this.getProps(),tryPreserveFirstRenderedPosition = _this$getProps5.tryPreserveFirstRenderedPosition;if (!(location && location !== DUMMY_LOCATION && location.position)) {return null;}var position = location.position;var coordinates = this.getCoordinates(anchorRect, popupRect, position);var isFullyVisible = _PopupHelper.PopupHelper.isFullyVisible(coordinates, popupRect);var canBecomeVisible = !isFullyVisible && _PopupHelper.PopupHelper.canBecomeFullyVisible(position, coordinates);var shouldReuseCurrentLocation = // если нужно сохранить первоначальную позицию и Попап целиком
|
|
972
|
+
// находится в пределах вьюпорта (или может быть проскроллен в него)
|
|
973
|
+
tryPreserveFirstRenderedPosition && (isFullyVisible || canBecomeVisible) || // если Попап целиком во вьюпорте и в самой приоритетной позиции
|
|
974
|
+
// (иначе нужно попытаться позицию сменить)
|
|
975
|
+
isFullyVisible && position === positions[0];if (!shouldReuseCurrentLocation) {return null;}return { coordinates: coordinates, position: position, isFullyVisible: true };};_proto.tryGetFirstFullyVisibleLocation = function tryGetFirstFullyVisibleLocation(positions, anchorRect, popupRect) {for (var _iterator = (0, _createForOfIteratorHelperLoose2.default)(positions), _step; !(_step = _iterator()).done;) {var position = _step.value;var coordinates = this.getCoordinates(anchorRect, popupRect, position);if (_PopupHelper.PopupHelper.isFullyVisible(coordinates, popupRect)) {return { coordinates: coordinates, position: position, isFullyVisible: true };}}return null;};_proto.getFallbackLocation = function getFallbackLocation(positions, anchorRect, popupRect, tryBestFallbackPosition) {var position = tryBestFallbackPosition ? this.pickBestFallbackPosition(positions, anchorRect, popupRect) : positions[0];var coordinates = this.getCoordinates(anchorRect, popupRect, position);return { coordinates: coordinates, position: position, isFullyVisible: _PopupHelper.PopupHelper.isFullyVisible(coordinates, popupRect) };};_proto.pickBestFallbackPosition = function pickBestFallbackPosition(positions, anchorRect, popupRect) {var _this5 = this;var defaultPosition = positions[0];var coords = this.getCoordinates(anchorRect, popupRect, defaultPosition);var overflow = _PopupHelper.PopupHelper.getOverflowEdges(coords, popupRect);var preferredDirection = _PopupHelper.PopupHelper.getPreferredDirection(overflow, defaultPosition);var preferredAlignOrder = overflow.left || overflow.right ? ['right', 'center', 'left'] : ['center', 'left', 'right'];var candidates = _PopupHelper.PopupHelper.getOrderedFallbackCandidates(positions, overflow, preferredDirection, preferredAlignOrder, PopupPinnablePositions);var positionsSet = new Set(positions);var viewport = _PopupHelper.PopupHelper.getViewportAbsoluteRect();var evaluatedCandidates = candidates.map(function (position) {return _this5.evaluateFallbackCandidate(position, anchorRect, popupRect, viewport);});var bestAreaCandidate = this.pickBestAreaCandidate(evaluatedCandidates, positionsSet);var bestOverflowCandidate = this.pickBestOverflowCandidate(evaluatedCandidates, positionsSet); // Если есть хотя бы одна позиция с ненулевой видимой площадью,
|
|
976
|
+
// выбираем её (с приоритетом полностью видимых вариантов).
|
|
977
|
+
// Иначе — используем старую эвристику по количеству переполненных сторон.
|
|
978
|
+
return bestAreaCandidate && bestAreaCandidate.visibleArea > 0 ? bestAreaCandidate.position : bestOverflowCandidate.position;};_proto.evaluateFallbackCandidate = function evaluateFallbackCandidate(position, anchorRect, popupRect, viewport) {var coordinates = this.getCoordinates(anchorRect, popupRect, position);var popupAbsolute = { top: coordinates.top, left: coordinates.left, width: popupRect.width, height: popupRect.height };var overlapWidth = Math.min(popupAbsolute.left + popupAbsolute.width, viewport.left + viewport.width) - Math.max(popupAbsolute.left, viewport.left);var overlapHeight = Math.min(popupAbsolute.top + popupAbsolute.height, viewport.top + viewport.height) - Math.max(popupAbsolute.top, viewport.top);var visibleWidth = Math.max(0, overlapWidth);var visibleHeight = Math.max(0, overlapHeight);var overflow = _PopupHelper.PopupHelper.getOverflowEdges(coordinates, popupRect);var isFullyVisible = visibleWidth === popupAbsolute.width && visibleHeight === popupAbsolute.height;var isAreaEligible = _PopupHelper.PopupHelper.getPositionObject(position).direction !== 'left' || isFullyVisible;return { position: position, coordinates: coordinates, overflowCount: _PopupHelper.PopupHelper.getOverflowCount(overflow), visibleArea: visibleWidth * visibleHeight, isFullyVisible: isFullyVisible, isAreaEligible: isAreaEligible };};_proto.pickBestAreaCandidate = function pickBestAreaCandidate(candidates, positionsSet) {var bestCandidate = null;for (var _iterator2 = (0, _createForOfIteratorHelperLoose2.default)(candidates), _step2; !(_step2 = _iterator2()).done;) {var candidate = _step2.value;if (!candidate.isAreaEligible || candidate.visibleArea <= 0) {continue;}var isBetterArea = !bestCandidate || // предпочитаем любые полностью видимые позиции
|
|
979
|
+
candidate.isFullyVisible && !bestCandidate.isFullyVisible || // среди одинаковых по полноте — большую видимую площадь
|
|
980
|
+
candidate.isFullyVisible === bestCandidate.isFullyVisible && candidate.visibleArea > bestCandidate.visibleArea || // при равной площади — ту, что указана в props.positions
|
|
981
|
+
candidate.visibleArea === bestCandidate.visibleArea && positionsSet.has(candidate.position) && !positionsSet.has(bestCandidate.position);if (isBetterArea) {bestCandidate = candidate;}}return bestCandidate;};_proto.pickBestOverflowCandidate = function pickBestOverflowCandidate(candidates, positionsSet) {var bestCandidate = candidates[0];for (var _iterator3 = (0, _createForOfIteratorHelperLoose2.default)(candidates), _step3; !(_step3 = _iterator3()).done;) {var candidate = _step3.value;var isBetterOverflow = candidate.overflowCount < bestCandidate.overflowCount || candidate.overflowCount === bestCandidate.overflowCount && positionsSet.has(candidate.position) && !positionsSet.has(bestCandidate.position);if (isBetterOverflow) {bestCandidate = candidate;}}return bestCandidate;};_proto.getPinnedPopupOffset = function getPinnedPopupOffset(anchorRect, position) {if (!this.getProps().hasPin || /center|middle/.test(position.align)) {return 0;}var anchorSize = /top|bottom/.test(position.direction) ? anchorRect.width : anchorRect.height;var pinSize = this.props.pinSize;return Math.max(0, this.getPinOffset(position.align) + (pinSize || parseInt(this.theme.popupPinSize)) - anchorSize / 2);};_proto.getCoordinates = function getCoordinates(anchorRect, popupRect, positionName) {var marginFromProps = this.props.margin;var margin = (0, _utils.isNonNullable)(marginFromProps) && !isNaN(marginFromProps) ? marginFromProps : parseInt(this.theme.popupMargin) || 0;var position = _PopupHelper.PopupHelper.getPositionObject(positionName);var popupOffset = this.getProps().popupOffset + this.getPinnedPopupOffset(anchorRect, position);switch (position.direction) {case 'top':return { top: anchorRect.top - popupRect.height - margin, left: this.getHorizontalPosition(anchorRect, popupRect, position.align, popupOffset) };case 'middle':return { top: anchorRect.top + anchorRect.height / 2 - popupRect.height / 2, left: this.getHorizontalPosition(anchorRect, popupRect, position.align, popupOffset) };case 'bottom':return { top: anchorRect.top + anchorRect.height + margin, left: this.getHorizontalPosition(anchorRect, popupRect, position.align, popupOffset)
|
|
810
982
|
};
|
|
811
983
|
case 'left':
|
|
812
984
|
return {
|