@skbkontur/react-ui 5.1.3 → 5.1.4
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 +16 -0
- package/cjs/components/Autocomplete/__docs__/Autocomplete.mdx +3 -4
- package/cjs/components/Button/Button.styles.js +2 -1
- package/cjs/components/Button/Button.styles.js.map +1 -1
- package/cjs/components/Button/__docs__/Button.mdx +2 -4
- package/cjs/components/Calendar/__docs__/Calendar.mdx +2 -4
- package/cjs/components/Calendar/__docs__/CalendarDay.mdx +2 -4
- package/cjs/components/Center/__docs__/Center.mdx +2 -4
- package/cjs/components/Checkbox/__docs__/Checkbox.mdx +2 -4
- package/cjs/components/ComboBox/ComboBox.md +2 -2
- package/cjs/components/ComboBox/__docs__/ComboBox.mdx +2 -4
- package/cjs/components/CurrencyInput/__docs__/CurrencyInput.mdx +2 -4
- package/cjs/components/CurrencyLabel/__docs__/CurrencyLabel.mdx +2 -4
- package/cjs/components/DateInput/__docs__/DateInput.mdx +2 -4
- package/cjs/components/DatePicker/__docs__/DatePicker.mdx +2 -4
- package/cjs/components/DateRangePicker/__docs__/DateRangePicker.mdx +2 -4
- package/cjs/components/DateRangePicker/helpers/validateDateRangePicker.js +17 -17
- package/cjs/components/DateRangePicker/helpers/validateDateRangePicker.js.map +1 -1
- package/cjs/components/Dropdown/__docs__/Dropdown.mdx +2 -4
- package/cjs/components/DropdownMenu/DropdownMenu.md +8 -8
- package/cjs/components/DropdownMenu/__docs__/DropdownMenu.mdx +2 -4
- package/cjs/components/FileUploader/FileUploader.js +14 -2
- package/cjs/components/FileUploader/FileUploader.js.map +1 -1
- package/cjs/components/FileUploader/__docs__/FileUploader.mdx +2 -4
- package/cjs/components/FxInput/__docs__/FxInput.mdx +2 -4
- package/cjs/components/Gapped/__docs__/Gapped.mdx +2 -4
- package/cjs/components/GlobalLoader/__docs__/GlobalLoader.mdx +2 -4
- package/cjs/components/Group/Group.md +4 -4
- package/cjs/components/Group/__docs__/Group.mdx +2 -4
- package/cjs/components/Hint/__docs__/Hint.mdx +2 -4
- package/cjs/components/Input/Input.md +4 -5
- package/cjs/components/Input/__docs__/Input.mdx +2 -4
- package/cjs/components/Kebab/Kebab.md +32 -32
- package/cjs/components/Kebab/__docs__/Kebab.mdx +2 -4
- package/cjs/components/Link/__docs__/Link.mdx +2 -4
- package/cjs/components/Loader/__docs__/Loader.mdx +2 -4
- package/cjs/components/MaskedInput/__docs__/MaskedInput.mdx +2 -4
- package/cjs/components/MenuFooter/__docs__/MenuFooter.mdx +2 -4
- package/cjs/components/MenuHeader/__docs__/MenuHeader.mdx +2 -4
- package/cjs/components/MenuItem/MenuItem.md +6 -6
- package/cjs/components/MenuItem/__docs__/MenuItem.mdx +2 -4
- package/cjs/components/MenuSeparator/__docs__/MenuSeparator.mdx +2 -4
- package/cjs/components/MiniModal/__docs__/MiniModal.mdx +2 -4
- package/cjs/components/Modal/__docs__/Modal.mdx +2 -4
- package/cjs/components/Paging/__docs__/Paging.mdx +2 -4
- package/cjs/components/PasswordInput/__docs__/PasswordInput.mdx +2 -4
- package/cjs/components/Radio/__docs__/Radio.mdx +2 -4
- package/cjs/components/RadioGroup/__docs__/RadioGroup.mdx +2 -4
- package/cjs/components/ResponsiveLayout/__docs__/ResponsiveLayout.mdx +2 -4
- package/cjs/components/ScrollContainer/__docs__/ScrollContainer.mdx +2 -4
- package/cjs/components/Select/Select.md +3 -3
- package/cjs/components/Select/__docs__/Select.mdx +2 -4
- package/cjs/components/SidePage/__docs__/SidePage.mdx +2 -4
- package/cjs/components/SidePage/__docs__/SidePageBody.mdx +1 -0
- package/cjs/components/SingleToast/SingleToast.d.ts +3 -3
- package/cjs/components/SingleToast/SingleToast.js.map +1 -1
- package/cjs/components/SingleToast/__docs__/SingleToast.mdx +2 -4
- package/cjs/components/Spinner/__docs__/Spinner.mdx +2 -4
- package/cjs/components/Sticky/__docs__/Sticky.mdx +2 -4
- package/cjs/components/Switcher/__docs__/Switcher.mdx +2 -4
- package/cjs/components/Tabs/__docs__/Tab.mdx +2 -4
- package/cjs/components/Tabs/__docs__/Tabs.mdx +2 -4
- package/cjs/components/Textarea/__docs__/Textarea.mdx +2 -4
- package/cjs/components/Toast/Toast.d.ts +4 -2
- package/cjs/components/Toast/Toast.js +16 -2
- package/cjs/components/Toast/Toast.js.map +1 -1
- package/cjs/components/Toast/__docs__/Toast.mdx +2 -4
- package/cjs/components/Toggle/__creevey__/Toggle.creevey.mts +6 -4
- package/cjs/components/Toggle/__docs__/Toggle.mdx +2 -4
- package/cjs/components/Token/Token.md +0 -83
- package/cjs/components/Token/__docs__/Token.mdx +2 -4
- package/cjs/components/TokenInput/TokenInput.d.ts +2 -2
- package/cjs/components/TokenInput/TokenInput.js +2 -1
- package/cjs/components/TokenInput/TokenInput.js.map +1 -1
- package/cjs/components/TokenInput/TokenInput.md +2 -33
- package/cjs/components/TokenInput/TokenInputMenu.d.ts +12 -3
- package/cjs/components/TokenInput/TokenInputMenu.js +23 -1
- package/cjs/components/TokenInput/TokenInputMenu.js.map +1 -1
- package/cjs/components/TokenInput/__creevey__/TokenInput.creevey.mts +28 -0
- package/cjs/components/TokenInput/__docs__/TokenInput.mdx +2 -4
- package/cjs/components/Tooltip/Tooltip.md +8 -8
- package/cjs/components/Tooltip/__docs__/Tooltip.mdx +2 -4
- package/cjs/components/TooltipMenu/TooltipMenu.md +12 -12
- package/cjs/components/TooltipMenu/__docs__/TooltipMenu.mdx +2 -4
- package/cjs/internal/CustomComboBox/ComboBoxView.js +2 -1
- package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
- package/cjs/internal/Popup/Popup.d.ts +2 -1
- package/cjs/internal/Popup/Popup.js +6 -3
- package/cjs/internal/Popup/Popup.js.map +1 -1
- package/cjs/internal/ThemePlayground/Playground.js +16 -16
- package/cjs/internal/ThemePlayground/Playground.js.map +1 -1
- package/cjs/internal/ThemePlayground/SizesGroup.js +4 -4
- package/cjs/internal/ThemePlayground/SizesGroup.js.map +1 -1
- package/cjs/internal/ThemePlayground/VariableValue.js +4 -4
- package/cjs/internal/ThemePlayground/VariableValue.js.map +1 -1
- package/components/Autocomplete/__docs__/Autocomplete.mdx +3 -4
- package/components/Button/Button.styles/Button.styles.js +1 -1
- package/components/Button/Button.styles/Button.styles.js.map +1 -1
- package/components/Button/__docs__/Button.mdx +2 -4
- package/components/Calendar/__docs__/Calendar.mdx +2 -4
- package/components/Calendar/__docs__/CalendarDay.mdx +2 -4
- package/components/Center/__docs__/Center.mdx +2 -4
- package/components/Checkbox/__docs__/Checkbox.mdx +2 -4
- package/components/ComboBox/ComboBox.md +2 -2
- package/components/ComboBox/__docs__/ComboBox.mdx +2 -4
- package/components/CurrencyInput/__docs__/CurrencyInput.mdx +2 -4
- package/components/CurrencyLabel/__docs__/CurrencyLabel.mdx +2 -4
- package/components/DateInput/__docs__/DateInput.mdx +2 -4
- package/components/DatePicker/__docs__/DatePicker.mdx +2 -4
- package/components/DateRangePicker/__docs__/DateRangePicker.mdx +2 -4
- package/components/DateRangePicker/helpers/validateDateRangePicker/validateDateRangePicker.js +16 -15
- package/components/DateRangePicker/helpers/validateDateRangePicker/validateDateRangePicker.js.map +1 -1
- package/components/Dropdown/__docs__/Dropdown.mdx +2 -4
- package/components/DropdownMenu/DropdownMenu.md +8 -8
- package/components/DropdownMenu/__docs__/DropdownMenu.mdx +2 -4
- package/components/FileUploader/FileUploader/FileUploader.js +7 -2
- package/components/FileUploader/FileUploader/FileUploader.js.map +1 -1
- package/components/FileUploader/__docs__/FileUploader.mdx +2 -4
- package/components/FxInput/__docs__/FxInput.mdx +2 -4
- package/components/Gapped/__docs__/Gapped.mdx +2 -4
- package/components/GlobalLoader/__docs__/GlobalLoader.mdx +2 -4
- package/components/Group/Group.md +4 -4
- package/components/Group/__docs__/Group.mdx +2 -4
- package/components/Hint/__docs__/Hint.mdx +2 -4
- package/components/Input/Input.md +4 -5
- package/components/Input/__docs__/Input.mdx +2 -4
- package/components/Kebab/Kebab.md +32 -32
- package/components/Kebab/__docs__/Kebab.mdx +2 -4
- package/components/Link/__docs__/Link.mdx +2 -4
- package/components/Loader/__docs__/Loader.mdx +2 -4
- package/components/MaskedInput/__docs__/MaskedInput.mdx +2 -4
- package/components/MenuFooter/__docs__/MenuFooter.mdx +2 -4
- package/components/MenuHeader/__docs__/MenuHeader.mdx +2 -4
- package/components/MenuItem/MenuItem.md +6 -6
- package/components/MenuItem/__docs__/MenuItem.mdx +2 -4
- package/components/MenuSeparator/__docs__/MenuSeparator.mdx +2 -4
- package/components/MiniModal/__docs__/MiniModal.mdx +2 -4
- package/components/Modal/__docs__/Modal.mdx +2 -4
- package/components/Paging/__docs__/Paging.mdx +2 -4
- package/components/PasswordInput/__docs__/PasswordInput.mdx +2 -4
- package/components/Radio/__docs__/Radio.mdx +2 -4
- package/components/RadioGroup/__docs__/RadioGroup.mdx +2 -4
- package/components/ResponsiveLayout/__docs__/ResponsiveLayout.mdx +2 -4
- package/components/ScrollContainer/__docs__/ScrollContainer.mdx +2 -4
- package/components/Select/Select.md +3 -3
- package/components/Select/__docs__/Select.mdx +2 -4
- package/components/SidePage/__docs__/SidePage.mdx +2 -4
- package/components/SidePage/__docs__/SidePageBody.mdx +1 -0
- package/components/SingleToast/SingleToast/SingleToast.js.map +1 -1
- package/components/SingleToast/SingleToast.d.ts +3 -3
- package/components/SingleToast/__docs__/SingleToast.mdx +2 -4
- package/components/Spinner/__docs__/Spinner.mdx +2 -4
- package/components/Sticky/__docs__/Sticky.mdx +2 -4
- package/components/Switcher/__docs__/Switcher.mdx +2 -4
- package/components/Tabs/__docs__/Tab.mdx +2 -4
- package/components/Tabs/__docs__/Tabs.mdx +2 -4
- package/components/Textarea/__docs__/Textarea.mdx +2 -4
- package/components/Toast/Toast/Toast.js +6 -8
- package/components/Toast/Toast/Toast.js.map +1 -1
- package/components/Toast/Toast.d.ts +4 -2
- package/components/Toast/__docs__/Toast.mdx +2 -4
- package/components/Toggle/__creevey__/Toggle.creevey.mts +6 -4
- package/components/Toggle/__docs__/Toggle.mdx +2 -4
- package/components/Token/Token.md +0 -83
- package/components/Token/__docs__/Token.mdx +2 -4
- package/components/TokenInput/TokenInput/TokenInput.js +2 -1
- package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
- package/components/TokenInput/TokenInput.d.ts +2 -2
- package/components/TokenInput/TokenInput.md +2 -33
- package/components/TokenInput/TokenInputMenu/TokenInputMenu.js +16 -6
- package/components/TokenInput/TokenInputMenu/TokenInputMenu.js.map +1 -1
- package/components/TokenInput/TokenInputMenu.d.ts +12 -3
- package/components/TokenInput/__creevey__/TokenInput.creevey.mts +28 -0
- package/components/TokenInput/__docs__/TokenInput.mdx +2 -4
- package/components/Tooltip/Tooltip.md +8 -8
- package/components/Tooltip/__docs__/Tooltip.mdx +2 -4
- package/components/TooltipMenu/TooltipMenu.md +12 -12
- package/components/TooltipMenu/__docs__/TooltipMenu.mdx +2 -4
- package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +2 -0
- package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
- package/internal/Popup/Popup/Popup.js +9 -5
- package/internal/Popup/Popup/Popup.js.map +1 -1
- package/internal/Popup/Popup.d.ts +2 -1
- package/internal/ThemePlayground/Playground/Playground.js +13 -13
- package/internal/ThemePlayground/Playground/Playground.js.map +1 -1
- package/internal/ThemePlayground/SizesGroup/SizesGroup.js +4 -4
- package/internal/ThemePlayground/SizesGroup/SizesGroup.js.map +1 -1
- package/internal/ThemePlayground/VariableValue/VariableValue.js +4 -4
- package/internal/ThemePlayground/VariableValue/VariableValue.js.map +1 -1
- package/package.json +2 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","ThemeFactory","Popup","ComboBoxMenu","ThemeContext","TokenInputDataTids","TokenInputMenu","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","menu","getMenuRef","getPopupMargin","paddingY","parseInt","theme","tokenInputPaddingYSmall","outlineWidth","controlOutlineWidth","marginY","tokenMarginYSmall","menuRef","node","_inheritsLoose","_proto","prototype","render","_this2","createElement","Consumer","Provider","value","create","popupMargin","popupBackground","tokenInputMenuPopupBg","renderMain","getPopupMarginSize","t","props","size","tokenInputPopupMarginLarge","tokenInputPopupMarginMedium","tokenInputPopupMarginSmall","_this$props","loading","maxMenuHeight","renderTotalCount","totalCount","opened","items","renderNotFound","renderItem","onValueChange","renderAddButton","anchorElement","menuWidth","menuAlign","id","popupMenuId","tokenInputMenu","positions","popupOffset","tokenInputPopupOffset","margin","hasShadow","width","withoutMobile","hasMargin","refMenu","Component","__KONTUR_REACT_UI__","displayName"],"sources":["TokenInputMenu.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { HTMLProps } from '../../typings/html';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport type { PopupProps } from '../../internal/Popup';\nimport { Popup } from '../../internal/Popup';\nimport type { ComboBoxMenuProps } from '../../internal/CustomComboBox';\nimport { ComboBoxMenu } from '../../internal/CustomComboBox';\nimport type { Menu } from '../../internal/Menu';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { TokenSize } from '../Token';\n\nimport type { TokenInputMenuAlign, TokenInputProps } from './TokenInput';\nimport { TokenInputDataTids } from './TokenInput';\n\nexport interface TokenInputMenuProps<T> extends ComboBoxMenuProps<T> {\n anchorElement: PopupProps['anchorElement'];\n /** Задает шинину выпадающего меню. */\n menuWidth: TokenInputProps<string>['menuWidth'];\n /** Задает выравнивание выпадающего меню. */\n menuAlign: TokenInputMenuAlign;\n /** Задает id выпадающему меню.\n Полезно при реализации a11y. Например, помогает связать aria-controls с выпадающим меню. */\n popupMenuId?: HTMLProps['id'];\n /** Задает размер контрола. */\n size?: TokenSize;\n}\n\nexport class TokenInputMenu<T = string> extends React.Component<TokenInputMenuProps<T>> {\n public static __KONTUR_REACT_UI__ = 'TokenInputMenu';\n public static displayName = 'TokenInputMenu';\n\n private theme!: Theme;\n\n private menu: Menu | null = null;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupMargin: this.getPopupMargin() + 'px',\n popupBackground: this.theme.tokenInputMenuPopupBg,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public getMenuRef = (): any | null => this.menu;\n\n private getPopupMarginSize(t: Theme) {\n switch (this.props.size) {\n case 'large':\n return t.tokenInputPopupMarginLarge;\n case 'medium':\n return t.tokenInputPopupMarginMedium;\n case 'small':\n default:\n return t.tokenInputPopupMarginSmall;\n }\n }\n\n private renderMain() {\n const {\n loading,\n maxMenuHeight,\n renderTotalCount,\n totalCount,\n opened,\n items,\n renderNotFound,\n renderItem,\n onValueChange,\n renderAddButton,\n anchorElement,\n menuWidth,\n menuAlign,\n } = this.props;\n\n return (\n <Popup\n id={this.props.popupMenuId}\n data-tid={TokenInputDataTids.tokenInputMenu}\n opened={!!opened}\n positions={['bottom left', 'top left']}\n anchorElement={anchorElement}\n popupOffset={\n menuAlign === 'left'\n ? parseInt(this.theme.tokenInputPopupOffset)\n : 8 + parseInt(this.theme.tokenInputPopupOffset)\n }\n margin={menuAlign === 'left' ? 1 : parseInt(this.getPopupMarginSize(this.theme))}\n hasShadow\n width={menuAlign === 'cursor' ? 'auto' : menuWidth}\n withoutMobile\n >\n <ComboBoxMenu\n size={this.props.size}\n items={items}\n loading={loading}\n hasMargin={false}\n maxMenuHeight={maxMenuHeight}\n onValueChange={onValueChange}\n opened={opened}\n refMenu={this.menuRef}\n renderTotalCount={renderTotalCount}\n renderItem={renderItem}\n renderNotFound={renderNotFound}\n totalCount={totalCount}\n renderAddButton={renderAddButton}\n />\n </Popup>\n );\n }\n\n private getPopupMargin = (): number => {\n const paddingY = parseInt(this.theme.tokenInputPaddingYSmall, 10) || 0;\n const outlineWidth = parseInt(this.theme.controlOutlineWidth, 10) || 0;\n const marginY = parseInt(this.theme.tokenMarginYSmall, 10) || 0;\n\n return paddingY + outlineWidth + marginY;\n };\n\n private menuRef = (node: any) => (this.menu = node);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","ThemeFactory","Popup","ComboBoxMenu","ThemeContext","TokenInputDataTids","TokenInputMenu","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","state","menu","getMenuRef","handleMenuPositionChange","_","isFullyVisible","forceMenuLeftAlign","props","menuAlign","setState","getPopupMargin","paddingY","parseInt","theme","tokenInputPaddingYSmall","outlineWidth","controlOutlineWidth","marginY","tokenMarginYSmall","menuRef","node","_inheritsLoose","_proto","prototype","render","_this2","createElement","Consumer","Provider","value","create","popupMargin","popupBackground","tokenInputMenuPopupBg","renderMain","getPopupMarginSize","t","size","tokenInputPopupMarginLarge","tokenInputPopupMarginMedium","tokenInputPopupMarginSmall","_this$props","loading","maxMenuHeight","renderTotalCount","totalCount","opened","items","renderNotFound","renderItem","onValueChange","renderAddButton","anchorElementForCursor","anchorElementRoot","menuWidth","id","popupMenuId","tokenInputMenu","positions","anchorElement","popupOffset","tokenInputPopupOffset","margin","hasShadow","width","withoutMobile","onPositionChange","hasMargin","refMenu","Component","__KONTUR_REACT_UI__","displayName"],"sources":["TokenInputMenu.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { HTMLProps } from '../../typings/html';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport type { PopupPositionsType, PopupProps } from '../../internal/Popup';\nimport { Popup } from '../../internal/Popup';\nimport type { ComboBoxMenuProps } from '../../internal/CustomComboBox';\nimport { ComboBoxMenu } from '../../internal/CustomComboBox';\nimport type { Menu } from '../../internal/Menu';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { TokenSize } from '../Token';\n\nimport type { TokenInputMenuAlign, TokenInputProps } from './TokenInput';\nimport { TokenInputDataTids } from './TokenInput';\n\nexport interface TokenInputMenuProps<T> extends ComboBoxMenuProps<T> {\n /** html-элемент от которого будет позиционировано Menu в случае menuAlign cursor */\n anchorElementForCursor: PopupProps['anchorElement'];\n /** html-элемент от которого будет позиционировано Menu в случае menuAlign left */\n anchorElementRoot: PopupProps['anchorElement'];\n /** Задает ширину выпадающего меню. */\n menuWidth: TokenInputProps<string>['menuWidth'];\n /** Задает выравнивание выпадающего меню. */\n menuAlign: TokenInputMenuAlign;\n /** Задает id выпадающему меню.\n Полезно при реализации a11y. Например, помогает связать aria-controls с выпадающим меню. */\n popupMenuId?: HTMLProps['id'];\n /** Задает размер контрола. */\n size?: TokenSize;\n}\n\ninterface TokenInputMenuState {\n forceMenuLeftAlign?: boolean;\n}\n\nexport class TokenInputMenu<T = string> extends React.Component<TokenInputMenuProps<T>, TokenInputMenuState> {\n public static __KONTUR_REACT_UI__ = 'TokenInputMenu';\n public static displayName = 'TokenInputMenu';\n\n public state: TokenInputMenuState = {};\n\n private theme!: Theme;\n\n private menu: Menu | null = null;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupMargin: this.getPopupMargin() + 'px',\n popupBackground: this.theme.tokenInputMenuPopupBg,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public getMenuRef = (): any | null => this.menu;\n\n private getPopupMarginSize(t: Theme) {\n switch (this.props.size) {\n case 'large':\n return t.tokenInputPopupMarginLarge;\n case 'medium':\n return t.tokenInputPopupMarginMedium;\n case 'small':\n default:\n return t.tokenInputPopupMarginSmall;\n }\n }\n\n private renderMain() {\n const {\n loading,\n maxMenuHeight,\n renderTotalCount,\n totalCount,\n opened,\n items,\n renderNotFound,\n renderItem,\n onValueChange,\n renderAddButton,\n anchorElementForCursor,\n anchorElementRoot,\n menuWidth,\n } = this.props;\n\n const menuAlign = this.state.forceMenuLeftAlign ? 'left' : this.props.menuAlign;\n\n return (\n <Popup\n id={this.props.popupMenuId}\n data-tid={TokenInputDataTids.tokenInputMenu}\n opened={!!opened}\n positions={\n menuAlign === 'cursor'\n ? ['bottom left', 'top left']\n : ['bottom left', 'top left', 'bottom right', 'top right']\n }\n anchorElement={menuAlign === 'cursor' ? anchorElementForCursor : anchorElementRoot}\n popupOffset={\n menuAlign === 'left'\n ? parseInt(this.theme.tokenInputPopupOffset)\n : 8 + parseInt(this.theme.tokenInputPopupOffset)\n }\n margin={menuAlign === 'left' ? 1 : parseInt(this.getPopupMarginSize(this.theme))}\n hasShadow\n width={menuAlign === 'cursor' ? 'auto' : menuWidth}\n withoutMobile\n onPositionChange={this.handleMenuPositionChange}\n >\n <ComboBoxMenu\n size={this.props.size}\n items={items}\n loading={loading}\n hasMargin={false}\n maxMenuHeight={maxMenuHeight}\n onValueChange={onValueChange}\n opened={opened}\n refMenu={this.menuRef}\n renderTotalCount={renderTotalCount}\n renderItem={renderItem}\n renderNotFound={renderNotFound}\n totalCount={totalCount}\n renderAddButton={renderAddButton}\n />\n </Popup>\n );\n }\n\n private handleMenuPositionChange = (_: PopupPositionsType, isFullyVisible: boolean) => {\n if (!this.state.forceMenuLeftAlign && !isFullyVisible && this.props.menuAlign === 'cursor') {\n this.setState({ forceMenuLeftAlign: true });\n }\n };\n\n private getPopupMargin = (): number => {\n const paddingY = parseInt(this.theme.tokenInputPaddingYSmall, 10) || 0;\n const outlineWidth = parseInt(this.theme.controlOutlineWidth, 10) || 0;\n const marginY = parseInt(this.theme.tokenMarginYSmall, 10) || 0;\n\n return paddingY + outlineWidth + marginY;\n };\n\n private menuRef = (node: any) => (this.menu = node);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -5,8 +5,11 @@ import type { ComboBoxMenuProps } from '../../internal/CustomComboBox';
|
|
|
5
5
|
import type { TokenSize } from '../Token';
|
|
6
6
|
import type { TokenInputMenuAlign, TokenInputProps } from './TokenInput';
|
|
7
7
|
export interface TokenInputMenuProps<T> extends ComboBoxMenuProps<T> {
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
/** html-элемент от которого будет позиционировано Menu в случае menuAlign cursor */
|
|
9
|
+
anchorElementForCursor: PopupProps['anchorElement'];
|
|
10
|
+
/** html-элемент от которого будет позиционировано Menu в случае menuAlign left */
|
|
11
|
+
anchorElementRoot: PopupProps['anchorElement'];
|
|
12
|
+
/** Задает ширину выпадающего меню. */
|
|
10
13
|
menuWidth: TokenInputProps<string>['menuWidth'];
|
|
11
14
|
/** Задает выравнивание выпадающего меню. */
|
|
12
15
|
menuAlign: TokenInputMenuAlign;
|
|
@@ -16,15 +19,21 @@ export interface TokenInputMenuProps<T> extends ComboBoxMenuProps<T> {
|
|
|
16
19
|
/** Задает размер контрола. */
|
|
17
20
|
size?: TokenSize;
|
|
18
21
|
}
|
|
19
|
-
|
|
22
|
+
interface TokenInputMenuState {
|
|
23
|
+
forceMenuLeftAlign?: boolean;
|
|
24
|
+
}
|
|
25
|
+
export declare class TokenInputMenu<T = string> extends React.Component<TokenInputMenuProps<T>, TokenInputMenuState> {
|
|
20
26
|
static __KONTUR_REACT_UI__: string;
|
|
21
27
|
static displayName: string;
|
|
28
|
+
state: TokenInputMenuState;
|
|
22
29
|
private theme;
|
|
23
30
|
private menu;
|
|
24
31
|
render(): React.JSX.Element;
|
|
25
32
|
getMenuRef: () => any | null;
|
|
26
33
|
private getPopupMarginSize;
|
|
27
34
|
private renderMain;
|
|
35
|
+
private handleMenuPositionChange;
|
|
28
36
|
private getPopupMargin;
|
|
29
37
|
private menuRef;
|
|
30
38
|
}
|
|
39
|
+
export {};
|
|
@@ -83,6 +83,8 @@ kind('TokenInput', () => {
|
|
|
83
83
|
bridge: true,
|
|
84
84
|
})
|
|
85
85
|
.sendKeys('a')
|
|
86
|
+
.pause(300)
|
|
87
|
+
.move({ x: 0, y: 0 })
|
|
86
88
|
.perform();
|
|
87
89
|
const typed = await context.takeScreenshot();
|
|
88
90
|
await context.matchImages({ selected, typed });
|
|
@@ -411,4 +413,30 @@ kind('TokenInput', () => {
|
|
|
411
413
|
await context.matchImages({ tab1, tab2, tab3 });
|
|
412
414
|
});
|
|
413
415
|
});
|
|
416
|
+
|
|
417
|
+
story('VariousMenuPositions', ({ setStoryParameters }) => {
|
|
418
|
+
setStoryParameters({
|
|
419
|
+
skip: { 'chrome only': { in: /^(?!\bchrome2022\b)/ } },
|
|
420
|
+
});
|
|
421
|
+
|
|
422
|
+
test('all positions in viewport', async (context) => {
|
|
423
|
+
async function clickOnTokenInput(tid: string): Promise<Buffer> {
|
|
424
|
+
await context.webdriver
|
|
425
|
+
.actions({ bridge: true })
|
|
426
|
+
.click(context.webdriver.findElement({ css: `[data-tid~="${tid}"]` }))
|
|
427
|
+
.perform();
|
|
428
|
+
await delay(800);
|
|
429
|
+
return await context.takeScreenshot();
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
const leftTop = await clickOnTokenInput('TokenInputViewLeftTop');
|
|
433
|
+
const leftMiddle = await clickOnTokenInput('TokenInputViewLeftMiddle');
|
|
434
|
+
const leftBottom = await clickOnTokenInput('TokenInputViewLeftBottom');
|
|
435
|
+
const rightTop = await clickOnTokenInput('TokenInputViewRightTop');
|
|
436
|
+
const rightMiddle = await clickOnTokenInput('TokenInputViewRightMiddle');
|
|
437
|
+
const rightBottom = await clickOnTokenInput('TokenInputViewRightBottom');
|
|
438
|
+
|
|
439
|
+
await context.matchImages({ leftTop, leftMiddle, leftBottom, rightTop, rightMiddle, rightBottom });
|
|
440
|
+
});
|
|
441
|
+
});
|
|
414
442
|
});
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as TokenInputStories from './TokenInput.docs.stories.tsx';
|
|
2
2
|
import { Primary, ArgTypes, Stories, Description } from '@storybook/blocks';
|
|
3
3
|
import { Meta } from '../../../.storybook/Meta';
|
|
4
|
+
import { PropsTable } from '../../../.storybook/PropsTable';
|
|
4
5
|
|
|
5
6
|
<Meta of={TokenInputStories} />
|
|
6
7
|
|
|
@@ -18,10 +19,7 @@ import { Meta } from '../../../.storybook/Meta';
|
|
|
18
19
|
|
|
19
20
|
## Пропы
|
|
20
21
|
|
|
21
|
-
<
|
|
22
|
-
<summary>Открыть таблицу с пропами</summary>
|
|
23
|
-
<ArgTypes />
|
|
24
|
-
</details>
|
|
22
|
+
<PropsTable />
|
|
25
23
|
|
|
26
24
|
## Примеры использования
|
|
27
25
|
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
Отступы в тултипе подобраны так, чтобы базовая линия текста со шрифтом Segoe UI в тултипе совпадала с базовой линией стандартных контролов
|
|
3
3
|
|
|
4
4
|
```jsx harmony
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
5
|
+
import { SearchLoupeIcon16Regular } from '@skbkontur/icons/icons/SearchLoupeIcon/SearchLoupeIcon16Regular';
|
|
6
|
+
import { UiMenuBars3HIcon16Regular } from '@skbkontur/icons/icons/UiMenuBars3HIcon/UiMenuBars3HIcon16Regular';
|
|
7
|
+
import { QuestionCircleIcon16Regular } from '@skbkontur/icons/icons/QuestionCircleIcon/QuestionCircleIcon16Regular';
|
|
8
8
|
import { Button, Gapped, Input, Select, Tooltip } from '@skbkontur/react-ui';
|
|
9
9
|
|
|
10
10
|
const [size, setSize] = React.useState('small');
|
|
@@ -29,15 +29,15 @@ const render = () => (
|
|
|
29
29
|
<Select width={120} value={size} items={['small', 'medium', 'large']} onValueChange={setSize} size={size} />
|
|
30
30
|
</Gapped>
|
|
31
31
|
<Tooltip render={render} pos="right top">
|
|
32
|
-
<Input size={size} leftIcon={<
|
|
32
|
+
<Input size={size} leftIcon={<SearchLoupeIcon16Regular />} width={170} />
|
|
33
33
|
</Tooltip>
|
|
34
34
|
<Tooltip render={render} pos="right top">
|
|
35
|
-
<Button size={size} icon={<
|
|
35
|
+
<Button size={size} icon={<UiMenuBars3HIcon16Regular />}>
|
|
36
36
|
Menu
|
|
37
37
|
</Button>
|
|
38
38
|
</Tooltip>
|
|
39
39
|
<Tooltip render={render} pos="right top">
|
|
40
|
-
<
|
|
40
|
+
<QuestionCircleIcon16Regular />
|
|
41
41
|
</Tooltip>
|
|
42
42
|
</Gapped>
|
|
43
43
|
</div>;
|
|
@@ -300,7 +300,7 @@ class AnchorTooltipExample extends React.Component {
|
|
|
300
300
|
У тултипа можно переопределить задержку перед его появлением. Скрытие же происходит с задержкой по умолчанию.
|
|
301
301
|
|
|
302
302
|
```jsx harmony
|
|
303
|
-
import
|
|
303
|
+
import { QuestionCircleIcon16Regular } from '@skbkontur/icons/icons/QuestionCircleIcon/QuestionCircleIcon16Regular';
|
|
304
304
|
import { Input, Gapped, Tooltip } from '@skbkontur/react-ui';
|
|
305
305
|
|
|
306
306
|
const [delay, setDelay] = React.useState(100);
|
|
@@ -315,7 +315,7 @@ const render = () => (
|
|
|
315
315
|
<Gapped vertical>
|
|
316
316
|
<Gapped>Show delay: <Input value={delay} onValueChange={setDelay} /></Gapped>
|
|
317
317
|
<Tooltip render={render} delayBeforeShow={delay} pos="right top">
|
|
318
|
-
<
|
|
318
|
+
<QuestionCircleIcon16Regular />
|
|
319
319
|
</Tooltip>
|
|
320
320
|
</Gapped>
|
|
321
321
|
</div>;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as TooltipStories from './Tooltip.docs.stories.tsx';
|
|
2
2
|
import { Primary, ArgTypes, Stories, Description } from '@storybook/blocks';
|
|
3
3
|
import { Meta } from '../../../.storybook/Meta';
|
|
4
|
+
import { PropsTable } from '../../../.storybook/PropsTable';
|
|
4
5
|
|
|
5
6
|
<Meta of={TooltipStories} />
|
|
6
7
|
|
|
@@ -18,10 +19,7 @@ import { Meta } from '../../../.storybook/Meta';
|
|
|
18
19
|
|
|
19
20
|
## Пропы
|
|
20
21
|
|
|
21
|
-
<
|
|
22
|
-
<summary>Открыть таблицу с пропами</summary>
|
|
23
|
-
<ArgTypes />
|
|
24
|
-
</details>
|
|
22
|
+
<PropsTable />
|
|
25
23
|
|
|
26
24
|
## Примеры использования
|
|
27
25
|
|
|
@@ -108,12 +108,12 @@ import { Button, MenuHeader, MenuItem, MenuSeparator } from '@skbkontur/react-ui
|
|
|
108
108
|
|
|
109
109
|
```jsx harmony
|
|
110
110
|
import { MenuItem } from '@skbkontur/react-ui';
|
|
111
|
-
import
|
|
111
|
+
import { UiMenuBars3HIcon16Regular } from '@skbkontur/icons/icons/UiMenuBars3HIcon/UiMenuBars3HIcon16Regular';
|
|
112
112
|
|
|
113
113
|
<TooltipMenu
|
|
114
114
|
caption={
|
|
115
115
|
<span style={{ display: 'inline-block' }} tabIndex="0">
|
|
116
|
-
<
|
|
116
|
+
<UiMenuBars3HIcon16Regular size={32} />
|
|
117
117
|
</span>
|
|
118
118
|
}
|
|
119
119
|
menuWidth="300px"
|
|
@@ -128,12 +128,12 @@ import MenuIcon from '@skbkontur/react-icons/Menu';
|
|
|
128
128
|
|
|
129
129
|
```jsx harmony
|
|
130
130
|
import { MenuItem } from '@skbkontur/react-ui';
|
|
131
|
-
import
|
|
131
|
+
import { LightbulbIcon16Regular } from '@skbkontur/icons/icons/LightbulbIcon/LightbulbIcon16Regular';
|
|
132
132
|
|
|
133
133
|
<TooltipMenu
|
|
134
134
|
caption={
|
|
135
135
|
<span style={{ display: 'inline-block' }} tabIndex="0">
|
|
136
|
-
<
|
|
136
|
+
<LightbulbIcon16Regular size={32} />
|
|
137
137
|
</span>
|
|
138
138
|
}
|
|
139
139
|
menuWidth="300px"
|
|
@@ -149,12 +149,12 @@ import LightbulbIcon from '@skbkontur/react-icons/Lightbulb';
|
|
|
149
149
|
|
|
150
150
|
```jsx harmony
|
|
151
151
|
import { MenuItem } from '@skbkontur/react-ui';
|
|
152
|
-
import
|
|
152
|
+
import { LightbulbIcon16Regular } from '@skbkontur/icons/icons/LightbulbIcon/LightbulbIcon16Regular';
|
|
153
153
|
|
|
154
154
|
<TooltipMenu
|
|
155
155
|
caption={
|
|
156
156
|
<span style={{ display: 'inline-block' }} tabIndex="0">
|
|
157
|
-
<
|
|
157
|
+
<LightbulbIcon16Regular size={32} />
|
|
158
158
|
</span>
|
|
159
159
|
}
|
|
160
160
|
menuWidth="300px"
|
|
@@ -186,12 +186,12 @@ import { Button, MenuHeader, MenuItem, MenuSeparator } from '@skbkontur/react-ui
|
|
|
186
186
|
|
|
187
187
|
```jsx harmony
|
|
188
188
|
import { Button, MenuHeader, MenuItem, MenuSeparator, TooltipMenu } from '@skbkontur/react-ui';
|
|
189
|
-
import
|
|
189
|
+
import { PlusIcon16Regular } from '@skbkontur/icons/icons/PlusIcon/PlusIcon16Regular';
|
|
190
190
|
|
|
191
191
|
<TooltipMenu caption={<Button use="primary">Открыть меню</Button>}>
|
|
192
192
|
<MenuHeader>MenuHeader</MenuHeader>
|
|
193
|
-
<MenuItem icon={<
|
|
194
|
-
<MenuItem icon={<
|
|
193
|
+
<MenuItem icon={<PlusIcon16Regular />}>MenuItem1</MenuItem>
|
|
194
|
+
<MenuItem icon={<PlusIcon16Regular />}>MenuItem2</MenuItem>
|
|
195
195
|
<MenuItem>MenuItem3</MenuItem>
|
|
196
196
|
</TooltipMenu>;
|
|
197
197
|
```
|
|
@@ -200,12 +200,12 @@ import OkIcon from '@skbkontur/react-icons/Ok';
|
|
|
200
200
|
|
|
201
201
|
```jsx harmony
|
|
202
202
|
import { Button, MenuHeader, MenuItem, MenuSeparator, TooltipMenu } from '@skbkontur/react-ui';
|
|
203
|
-
import
|
|
203
|
+
import { PlusIcon16Regular } from '@skbkontur/icons/icons/PlusIcon/PlusIcon16Regular';
|
|
204
204
|
|
|
205
205
|
<TooltipMenu preventIconsOffset caption={<Button use="primary">Открыть меню</Button>}>
|
|
206
206
|
<MenuHeader>MenuHeader</MenuHeader>
|
|
207
|
-
<MenuItem icon={<
|
|
208
|
-
<MenuItem icon={<
|
|
207
|
+
<MenuItem icon={<PlusIcon16Regular />}>MenuItem1</MenuItem>
|
|
208
|
+
<MenuItem icon={<PlusIcon16Regular />}>MenuItem2</MenuItem>
|
|
209
209
|
<MenuItem>MenuItem3</MenuItem>
|
|
210
210
|
</TooltipMenu>
|
|
211
211
|
```
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as TooltipMenuStories from './TooltipMenu.docs.stories.tsx';
|
|
2
2
|
import { Primary, ArgTypes, Stories, Description } from '@storybook/blocks';
|
|
3
3
|
import { Meta } from '../../../.storybook/Meta';
|
|
4
|
+
import { PropsTable } from '../../../.storybook/PropsTable';
|
|
4
5
|
|
|
5
6
|
<Meta of={TooltipMenuStories} />
|
|
6
7
|
|
|
@@ -14,10 +15,7 @@ import { Meta } from '../../../.storybook/Meta';
|
|
|
14
15
|
|
|
15
16
|
## Пропы
|
|
16
17
|
|
|
17
|
-
<
|
|
18
|
-
<summary>Открыть таблицу с пропами</summary>
|
|
19
|
-
<ArgTypes />
|
|
20
|
-
</details>
|
|
18
|
+
<PropsTable />
|
|
21
19
|
|
|
22
20
|
## Примеры использования
|
|
23
21
|
|
|
@@ -108,6 +108,7 @@ export var ComboBoxView = responsiveLayout(_class = rootNode(_class = (_ComboBox
|
|
|
108
108
|
opened = _this$props2.opened,
|
|
109
109
|
onFocus = _this$props2.onFocus,
|
|
110
110
|
onInputValueChange = _this$props2.onInputValueChange,
|
|
111
|
+
onInputKeyDown = _this$props2.onInputKeyDown,
|
|
111
112
|
placeholder = _this$props2.placeholder,
|
|
112
113
|
textValue = _this$props2.textValue;
|
|
113
114
|
if (loading && items && !!items.length) {
|
|
@@ -119,6 +120,7 @@ export var ComboBoxView = responsiveLayout(_class = rootNode(_class = (_ComboBox
|
|
|
119
120
|
width: '100%',
|
|
120
121
|
onFocus: onFocus,
|
|
121
122
|
onValueChange: onInputValueChange,
|
|
123
|
+
onKeyDown: onInputKeyDown,
|
|
122
124
|
value: textValue,
|
|
123
125
|
placeholder: placeholder,
|
|
124
126
|
rightIcon: rightIcon
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","getRandomID","isNonNullable","Input","InputLikeText","RenderLayer","Spinner","CommonWrapper","MobilePopup","responsiveLayout","rootNode","getRootNode","createPropsGetter","ThemeContext","LoadingIcon","Popup","getMenuPositions","ZIndex","ArrowDownIcon","ComboBoxMenu","ComboBoxRequestStatus","styles","CustomComboBoxDataTids","getComboBoxTheme","ComboBoxViewIds","menu","ComboBoxView","_class","_ComboBoxView","_React$Component","_this$props$value","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","defaultProps","mobileInput","dropdownContainerRef","createRef","menuId","state","anchorElement","clearCrossShowed","props","showClearIcon","value","toString","getComboBoxMenu","_this$props","items","loading","opened","refMenu","maxMenuHeight","renderTotalCount","renderNotFound","totalCount","size","_this$getProps","repeatRequest","requestStatus","renderItem","itemWrapper","createElement","hasMargin","onValueChange","handleItemSelect","renderAddButton","isMobile","isMobileLayout","renderMenu","_this$getProps2","menuPos","menuAlign","hasShadow","minWidth","priority","priorities","PopupMenu","positions","disablePortal","margin","parseInt","theme","menuOffsetY","ref","renderMobileMenu","rightIcon","_this$props2","onFocus","onInputValueChange","placeholder","textValue","renderSpinner","inputProps","autoComplete","autoFocus","width","headerChildComponent","_extends","refMobileInput","onCloseRequest","onMobileClose","getParent","handleMobileFocus","_this$mobileInput","onInputClick","focus","item","refInput","input","className","spinnerWrapper","type","caption","dimmed","getRightIcon","_this$props3","drawArrow","_inheritsLoose","_proto","prototype","componentDidMount","updateAnchorElement","parent","setState","componentDidUpdate","prevProps","editing","render","_this2","Consumer","Provider","renderMain","_this$props4","onMouseEnter","onMouseLeave","onMouseOver","_this$getProps3","onClickOutside","onFocusOutside","renderInput","active","comboBoxView","style","root","setRootNode","_this$props5","id","align","borderless","disabled","error","onInputBlur","onInputFocus","onInputKeyDown","warning","refInputLikeText","leftIcon","inputMode","ariaDescribedby","ariaLabel","_this$getProps4","renderValue","maxLength","onBlur","undefined","onClick","onKeyDown","onClearCrossClick","Component","__KONTUR_REACT_UI__","displayName","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 { 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 } from '../../components/ComboBox';\nimport type { SizeProp } from '../../lib/types/props';\nimport { Popup } from '../Popup';\nimport { getMenuPositions } from '../../lib/getMenuPositions';\nimport { ZIndex } from '../ZIndex';\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 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 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>) => void;\n refMenu?: (menu: Nullable<Menu>) => void;\n refInputLikeText?: (inputLikeText: Nullable<InputLikeText>) => void;\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 | 'size'\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\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 size: 'small',\n width: 250,\n showClearIcon: 'never',\n };\n\n private getProps = createPropsGetter(ComboBoxView.defaultProps);\n\n private input: Nullable<Input>;\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 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);\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, size } =\n 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={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, 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 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 size,\n 'aria-describedby': ariaDescribedby,\n 'aria-label': ariaLabel,\n showClearIcon,\n } = this.props;\n\n const { renderValue } = this.getProps();\n\n const rightIcon = this.getRightIcon();\n\n if (editing) {\n return (\n <Input\n id={id}\n align={align}\n borderless={borderless}\n disabled={disabled}\n error={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={leftIcon}\n rightIcon={rightIcon}\n value={textValue || ''}\n onKeyDown={onInputKeyDown}\n placeholder={placeholder}\n width=\"100%\"\n size={size}\n ref={this.refInput}\n warning={warning}\n inputMode={inputMode}\n autoComplete=\"off\"\n aria-describedby={ariaDescribedby}\n aria-controls={this.menuId}\n aria-label={ariaLabel}\n showClearIcon={showClearIcon}\n />\n );\n }\n\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={size}\n width=\"100%\"\n ref={refInputLikeText}\n aria-describedby={ariaDescribedby}\n aria-controls={this.menuId}\n showClearIcon={showClearIcon}\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>) => {\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, size } = this.props;\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","getRandomID","isNonNullable","Input","InputLikeText","RenderLayer","Spinner","CommonWrapper","MobilePopup","responsiveLayout","rootNode","getRootNode","createPropsGetter","ThemeContext","LoadingIcon","Popup","getMenuPositions","ZIndex","ArrowDownIcon","ComboBoxMenu","ComboBoxRequestStatus","styles","CustomComboBoxDataTids","getComboBoxTheme","ComboBoxViewIds","menu","ComboBoxView","_class","_ComboBoxView","_React$Component","_this$props$value","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","defaultProps","mobileInput","dropdownContainerRef","createRef","menuId","state","anchorElement","clearCrossShowed","props","showClearIcon","value","toString","getComboBoxMenu","_this$props","items","loading","opened","refMenu","maxMenuHeight","renderTotalCount","renderNotFound","totalCount","size","_this$getProps","repeatRequest","requestStatus","renderItem","itemWrapper","createElement","hasMargin","onValueChange","handleItemSelect","renderAddButton","isMobile","isMobileLayout","renderMenu","_this$getProps2","menuPos","menuAlign","hasShadow","minWidth","priority","priorities","PopupMenu","positions","disablePortal","margin","parseInt","theme","menuOffsetY","ref","renderMobileMenu","rightIcon","_this$props2","onFocus","onInputValueChange","onInputKeyDown","placeholder","textValue","renderSpinner","inputProps","autoComplete","autoFocus","width","onKeyDown","headerChildComponent","_extends","refMobileInput","onCloseRequest","onMobileClose","getParent","handleMobileFocus","_this$mobileInput","onInputClick","focus","item","refInput","input","className","spinnerWrapper","type","caption","dimmed","getRightIcon","_this$props3","drawArrow","_inheritsLoose","_proto","prototype","componentDidMount","updateAnchorElement","parent","setState","componentDidUpdate","prevProps","editing","render","_this2","Consumer","Provider","renderMain","_this$props4","onMouseEnter","onMouseLeave","onMouseOver","_this$getProps3","onClickOutside","onFocusOutside","renderInput","active","comboBoxView","style","root","setRootNode","_this$props5","id","align","borderless","disabled","error","onInputBlur","onInputFocus","warning","refInputLikeText","leftIcon","inputMode","ariaDescribedby","ariaLabel","_this$getProps4","renderValue","maxLength","onBlur","undefined","onClick","onClearCrossClick","Component","__KONTUR_REACT_UI__","displayName","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 { 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 } from '../../components/ComboBox';\nimport type { SizeProp } from '../../lib/types/props';\nimport { Popup } from '../Popup';\nimport { getMenuPositions } from '../../lib/getMenuPositions';\nimport { ZIndex } from '../ZIndex';\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 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 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>) => void;\n refMenu?: (menu: Nullable<Menu>) => void;\n refInputLikeText?: (inputLikeText: Nullable<InputLikeText>) => void;\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 | 'size'\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\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 size: 'small',\n width: 250,\n showClearIcon: 'never',\n };\n\n private getProps = createPropsGetter(ComboBoxView.defaultProps);\n\n private input: Nullable<Input>;\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 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);\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, size } =\n 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={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 size,\n 'aria-describedby': ariaDescribedby,\n 'aria-label': ariaLabel,\n showClearIcon,\n } = this.props;\n\n const { renderValue } = this.getProps();\n\n const rightIcon = this.getRightIcon();\n\n if (editing) {\n return (\n <Input\n id={id}\n align={align}\n borderless={borderless}\n disabled={disabled}\n error={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={leftIcon}\n rightIcon={rightIcon}\n value={textValue || ''}\n onKeyDown={onInputKeyDown}\n placeholder={placeholder}\n width=\"100%\"\n size={size}\n ref={this.refInput}\n warning={warning}\n inputMode={inputMode}\n autoComplete=\"off\"\n aria-describedby={ariaDescribedby}\n aria-controls={this.menuId}\n aria-label={ariaLabel}\n showClearIcon={showClearIcon}\n />\n );\n }\n\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={size}\n width=\"100%\"\n ref={refInputLikeText}\n aria-describedby={ariaDescribedby}\n aria-controls={this.menuId}\n showClearIcon={showClearIcon}\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>) => {\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, size } = this.props;\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":[]}
|
|
@@ -43,7 +43,8 @@ export var DUMMY_LOCATION = {
|
|
|
43
43
|
coordinates: {
|
|
44
44
|
top: -9999,
|
|
45
45
|
left: -9999
|
|
46
|
-
}
|
|
46
|
+
},
|
|
47
|
+
isFullyVisible: false
|
|
47
48
|
};
|
|
48
49
|
export var PopupDataTids = {
|
|
49
50
|
root: 'Popup__root',
|
|
@@ -183,7 +184,7 @@ export var Popup = responsiveLayout(_class = rootNode(_class = (_Popup = /*#__PU
|
|
|
183
184
|
}
|
|
184
185
|
var location = _this.getLocation(popupContentElement, _this.state.location);
|
|
185
186
|
if (location) {
|
|
186
|
-
_this.props.onPositionChange == null || _this.props.onPositionChange(location
|
|
187
|
+
_this.props.onPositionChange == null || _this.props.onPositionChange(location.position, location.isFullyVisible);
|
|
187
188
|
}
|
|
188
189
|
if (!_this.locationEquals(_this.state.location, location)) {
|
|
189
190
|
_this.setState({
|
|
@@ -468,7 +469,8 @@ export var Popup = responsiveLayout(_class = rootNode(_class = (_Popup = /*#__PU
|
|
|
468
469
|
// сохраняем текущую позицию
|
|
469
470
|
return {
|
|
470
471
|
coordinates: coordinates,
|
|
471
|
-
position: position
|
|
472
|
+
position: position,
|
|
473
|
+
isFullyVisible: true
|
|
472
474
|
};
|
|
473
475
|
}
|
|
474
476
|
}
|
|
@@ -478,7 +480,8 @@ export var Popup = responsiveLayout(_class = rootNode(_class = (_Popup = /*#__PU
|
|
|
478
480
|
if (PopupHelper.isFullyVisible(coordinates, popupRect)) {
|
|
479
481
|
return {
|
|
480
482
|
coordinates: coordinates,
|
|
481
|
-
position: position
|
|
483
|
+
position: position,
|
|
484
|
+
isFullyVisible: true
|
|
482
485
|
};
|
|
483
486
|
}
|
|
484
487
|
}
|
|
@@ -486,7 +489,8 @@ export var Popup = responsiveLayout(_class = rootNode(_class = (_Popup = /*#__PU
|
|
|
486
489
|
coordinates = this.getCoordinates(anchorRect, popupRect, position);
|
|
487
490
|
return {
|
|
488
491
|
coordinates: coordinates,
|
|
489
|
-
position: position
|
|
492
|
+
position: position,
|
|
493
|
+
isFullyVisible: false
|
|
490
494
|
};
|
|
491
495
|
};
|
|
492
496
|
_proto.getPinnedPopupOffset = function getPinnedPopupOffset(anchorRect, position) {
|