@skbkontur/react-ui 5.1.6 → 5.1.7
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 +17 -0
- package/cjs/components/Calendar/CalendarDay.js +18 -2
- package/cjs/components/Calendar/CalendarDay.js.map +1 -1
- package/cjs/components/Calendar/DayCellView.js +7 -15
- package/cjs/components/Calendar/DayCellView.js.map +1 -1
- package/cjs/components/Calendar/__creevey__/Calendar.creevey.mts +39 -0
- package/cjs/components/ComboBox/__creevey__/ComboBox.creevey.mts +4 -0
- package/cjs/components/DateRangePicker/DateRangePicker.d.ts +1 -1
- package/cjs/components/DateRangePicker/DateRangePicker.js +19 -15
- package/cjs/components/DateRangePicker/DateRangePicker.js.map +1 -1
- package/cjs/components/DateRangePicker/DateRangePicker.styles.d.ts +0 -1
- package/cjs/components/DateRangePicker/DateRangePicker.styles.js +13 -18
- package/cjs/components/DateRangePicker/DateRangePicker.styles.js.map +1 -1
- package/cjs/components/DateRangePicker/__creevey__/DateRangePicker.creevey.mts +1 -1
- package/cjs/components/Link/__creevey__/Link.creevey.mts +2 -2
- package/cjs/components/MaskedInput/__creevey__/MaskedInput.creevey.mts +8 -3
- package/cjs/components/Select/Select.d.ts +3 -0
- package/cjs/components/Select/Select.js +4 -1
- package/cjs/components/Select/Select.js.map +1 -1
- package/cjs/components/Toggle/__creevey__/Toggle.creevey.mts +6 -2
- package/cjs/internal/DateSelect/DateSelect.js +13 -2
- package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
- package/cjs/lib/getMenuPositions.d.ts +21 -1
- package/cjs/lib/getMenuPositions.js +45 -8
- package/cjs/lib/getMenuPositions.js.map +1 -1
- package/components/Calendar/CalendarDay/CalendarDay.js +9 -2
- package/components/Calendar/CalendarDay/CalendarDay.js.map +1 -1
- package/components/Calendar/DayCellView/DayCellView.js +6 -10
- package/components/Calendar/DayCellView/DayCellView.js.map +1 -1
- package/components/Calendar/__creevey__/Calendar.creevey.mts +39 -0
- package/components/ComboBox/__creevey__/ComboBox.creevey.mts +4 -0
- package/components/DateRangePicker/DateRangePicker/DateRangePicker.js +10 -11
- package/components/DateRangePicker/DateRangePicker/DateRangePicker.js.map +1 -1
- package/components/DateRangePicker/DateRangePicker.d.ts +1 -1
- package/components/DateRangePicker/DateRangePicker.styles/DateRangePicker.styles.js +12 -15
- package/components/DateRangePicker/DateRangePicker.styles/DateRangePicker.styles.js.map +1 -1
- package/components/DateRangePicker/DateRangePicker.styles.d.ts +0 -1
- package/components/DateRangePicker/__creevey__/DateRangePicker.creevey.mts +1 -1
- package/components/Link/__creevey__/Link.creevey.mts +2 -2
- package/components/MaskedInput/__creevey__/MaskedInput.creevey.mts +8 -3
- package/components/Select/Select/Select.js +3 -2
- package/components/Select/Select/Select.js.map +1 -1
- package/components/Select/Select.d.ts +3 -0
- package/components/Toggle/__creevey__/Toggle.creevey.mts +6 -2
- package/internal/DateSelect/DateSelect/DateSelect.js +2 -0
- package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
- package/lib/getMenuPositions/getMenuPositions.js +33 -4
- package/lib/getMenuPositions/getMenuPositions.js.map +1 -1
- package/lib/getMenuPositions.d.ts +21 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["css","memoizeStyle","CalendarDataTids","styles","root","t","_templateObject","_taggedTemplateLiteralLoose","textColorDefault","
|
|
1
|
+
{"version":3,"names":["css","memoizeStyle","CalendarDataTids","styles","root","t","_templateObject","_taggedTemplateLiteralLoose","textColorDefault","inputWrapperWidth","_templateObject2","parseInt","calendarCellWidth","calendarPaddingX","inputWrapperWidthFull","_templateObject3","inputVisuallyFocus","_templateObject4","inputFocusShadow","calendarWrapper","_templateObject5","pickerShadow","calendarWidthAuto","_templateObject6","rangeCalendarDay","_templateObject7","rangeCalendarDayEnd","_templateObject8","rangeCalendarCellEndBg","calendarCellBorderRadius","dayCell","rangeCalendarCellEndColor","rangeCalendarDayInHoveredPeriod","_templateObject9","rangeCalendarCellBg","rangeCalendarDayHoverInPeriod","_templateObject10","rangeCalendarCellHoverBg","buttonWrap","_templateObject11","getFontSize","size","fontSizeLarge","fontSizeMedium","fontSizeSmall"],"sources":["DateRangePicker.styles.ts"],"sourcesContent":["import type { SizeProp } from '../../lib/types/props';\nimport { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { CalendarDataTids } from '../Calendar';\n\nexport const styles = memoizeStyle({\n root(t: Theme) {\n return css`\n display: inline-flex;\n align-items: center;\n color: ${t.textColorDefault};\n\n & > * {\n flex: 1 1 50%;\n }\n `;\n },\n inputWrapperWidth(t: Theme) {\n return css`\n min-width: ${parseInt(t.calendarCellWidth) * 7 + parseInt(t.calendarPaddingX) * 2}px;\n `;\n },\n inputWrapperWidthFull() {\n return css`\n width: 100%;\n `;\n },\n inputVisuallyFocus(t: Theme) {\n return css`\n box-shadow: ${t.inputFocusShadow};\n `;\n },\n calendarWrapper(t: Theme) {\n return css`\n box-shadow: ${t.pickerShadow};\n display: inline-block;\n font-size: 0;\n z-index: 1000;\n touch-action: none;\n `;\n },\n calendarWidthAuto() {\n return css`\n width: auto;\n `;\n },\n rangeCalendarDay() {\n return css`\n width: 100%;\n height: 100%;\n `;\n },\n rangeCalendarDayEnd(t: Theme) {\n return css`\n position: relative;\n\n &:before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: ${t.rangeCalendarCellEndBg};\n border-radius: ${t.calendarCellBorderRadius};\n }\n\n [data-tid=${CalendarDataTids.dayCell}] {\n color: ${t.rangeCalendarCellEndColor};\n\n @media (hover: hover) {\n &:hover {\n color: ${t.rangeCalendarCellEndColor};\n background: none;\n }\n }\n }\n `;\n },\n rangeCalendarDayInHoveredPeriod(t: Theme) {\n return css`\n background: ${t.rangeCalendarCellBg};\n `;\n },\n rangeCalendarDayHoverInPeriod(t: Theme) {\n return css`\n @media (hover: hover) {\n &:hover [data-tid=${CalendarDataTids.dayCell}] {\n background: ${t.rangeCalendarCellHoverBg};\n }\n }\n `;\n },\n buttonWrap() {\n return css`\n display: flex;\n margin: 8px;\n\n > * {\n flex-grow: 1;\n }\n\n > *:not(:first-child) {\n margin-left: 8px;\n }\n `;\n },\n});\n\nexport function getFontSize(t: Theme, size?: SizeProp) {\n switch (size) {\n case 'large':\n return t.fontSizeLarge;\n case 'medium':\n return t.fontSizeMedium;\n case 'small':\n default:\n return t.fontSizeSmall;\n }\n}\n"],"mappings":";AACA,SAASA,GAAG,EAAEC,YAAY,QAAQ,2BAA2B;;AAE7D,SAASC,gBAAgB,QAAQ,aAAa;;AAE9C,OAAO,IAAMC,MAAM,GAAGF,YAAY,CAAC;EACjCG,IAAI,WAAAA,KAACC,CAAQ,EAAE;IACb,OAAOL,GAAG,CAAAM,eAAA,KAAAA,eAAA,GAAAC,2BAAA;;;IAGCF,CAAC,CAACG,gBAAgB;;;;;;EAM/B,CAAC;EACDC,iBAAiB,WAAAA,kBAACJ,CAAQ,EAAE;IAC1B,OAAOL,GAAG,CAAAU,gBAAA,KAAAA,gBAAA,GAAAH,2BAAA;IACKI,QAAQ,CAACN,CAAC,CAACO,iBAAiB,CAAC,GAAG,CAAC,GAAGD,QAAQ,CAACN,CAAC,CAACQ,gBAAgB,CAAC,GAAG,CAAC;;EAErF,CAAC;EACDC,qBAAqB,WAAAA,sBAAA,EAAG;IACtB,OAAOd,GAAG,CAAAe,gBAAA,KAAAA,gBAAA,GAAAR,2BAAA;;;EAGZ,CAAC;EACDS,kBAAkB,WAAAA,mBAACX,CAAQ,EAAE;IAC3B,OAAOL,GAAG,CAAAiB,gBAAA,KAAAA,gBAAA,GAAAV,2BAAA;IACMF,CAAC,CAACa,gBAAgB;;EAEpC,CAAC;EACDC,eAAe,WAAAA,gBAACd,CAAQ,EAAE;IACxB,OAAOL,GAAG,CAAAoB,gBAAA,KAAAA,gBAAA,GAAAb,2BAAA;IACMF,CAAC,CAACgB,YAAY;;;;;;EAMhC,CAAC;EACDC,iBAAiB,WAAAA,kBAAA,EAAG;IAClB,OAAOtB,GAAG,CAAAuB,gBAAA,KAAAA,gBAAA,GAAAhB,2BAAA;;;EAGZ,CAAC;EACDiB,gBAAgB,WAAAA,iBAAA,EAAG;IACjB,OAAOxB,GAAG,CAAAyB,gBAAA,KAAAA,gBAAA,GAAAlB,2BAAA;;;;EAIZ,CAAC;EACDmB,mBAAmB,WAAAA,oBAACrB,CAAQ,EAAE;IAC5B,OAAOL,GAAG,CAAA2B,gBAAA,KAAAA,gBAAA,GAAApB,2BAAA;;;;;;;;;;IAUQF,CAAC,CAACuB,sBAAsB;IACrBvB,CAAC,CAACwB,wBAAwB;;;IAGjC3B,gBAAgB,CAAC4B,OAAO;IACzBzB,CAAC,CAAC0B,yBAAyB;;;;IAIvB1B,CAAC,CAAC0B,yBAAyB;;;;;;EAM9C,CAAC;EACDC,+BAA+B,WAAAA,gCAAC3B,CAAQ,EAAE;IACxC,OAAOL,GAAG,CAAAiC,gBAAA,KAAAA,gBAAA,GAAA1B,2BAAA;IACMF,CAAC,CAAC6B,mBAAmB;;EAEvC,CAAC;EACDC,6BAA6B,WAAAA,8BAAC9B,CAAQ,EAAE;IACtC,OAAOL,GAAG,CAAAoC,iBAAA,KAAAA,iBAAA,GAAA7B,2BAAA;;IAEcL,gBAAgB,CAAC4B,OAAO;IAC5BzB,CAAC,CAACgC,wBAAwB;;;;EAIhD,CAAC;EACDC,UAAU,WAAAA,WAAA,EAAG;IACX,OAAOtC,GAAG,CAAAuC,iBAAA,KAAAA,iBAAA,GAAAhC,2BAAA;;;;;;;;;;;;EAYZ;AACF,CAAC,CAAC;;AAEF,OAAO,SAASiC,WAAWA,CAACnC,CAAQ,EAAEoC,IAAe,EAAE;EACrD,QAAQA,IAAI;IACV,KAAK,OAAO;MACV,OAAOpC,CAAC,CAACqC,aAAa;IACxB,KAAK,QAAQ;MACX,OAAOrC,CAAC,CAACsC,cAAc;IACzB,KAAK,OAAO;IACZ;MACE,OAAOtC,CAAC,CAACuC,aAAa;EAC1B;AACF","ignoreList":[]}
|
|
@@ -2,7 +2,6 @@ import type { SizeProp } from '../../lib/types/props';
|
|
|
2
2
|
import type { Theme } from '../../lib/theming/Theme';
|
|
3
3
|
export declare const styles: {
|
|
4
4
|
root(t: Theme): string;
|
|
5
|
-
inputWrapper(): string;
|
|
6
5
|
inputWrapperWidth(t: Theme): string;
|
|
7
6
|
inputWrapperWidthFull(): string;
|
|
8
7
|
inputVisuallyFocus(t: Theme): string;
|
|
@@ -148,7 +148,7 @@ kind('DateRangePicker', () => {
|
|
|
148
148
|
})
|
|
149
149
|
.click(context.webdriver.findElement({ css: '[data-tid="DateRangePicker__start"]' }))
|
|
150
150
|
.perform();
|
|
151
|
-
await delay(
|
|
151
|
+
await delay(2000);
|
|
152
152
|
await context.matchImage(await context.webdriver.takeScreenshot(), 'MobilePicker on iphone opened');
|
|
153
153
|
});
|
|
154
154
|
});
|
|
@@ -11,7 +11,7 @@ const focusedLinkTest = () => {
|
|
|
11
11
|
})
|
|
12
12
|
.sendKeys(Key.TAB)
|
|
13
13
|
.perform();
|
|
14
|
-
await delay(
|
|
14
|
+
await delay(2000);
|
|
15
15
|
await context.matchImage(await context.takeScreenshot(), 'tabPress');
|
|
16
16
|
await context.webdriver
|
|
17
17
|
.actions({
|
|
@@ -21,7 +21,7 @@ const focusedLinkTest = () => {
|
|
|
21
21
|
origin: context.webdriver.findElement({ css: 'a' }),
|
|
22
22
|
})
|
|
23
23
|
.perform();
|
|
24
|
-
await delay(
|
|
24
|
+
await delay(2000);
|
|
25
25
|
await context.matchImage(await context.takeScreenshot(), 'tabPressHovered');
|
|
26
26
|
});
|
|
27
27
|
};
|
|
@@ -177,7 +177,7 @@ kind('MaskedInput', () => {
|
|
|
177
177
|
bridge: true,
|
|
178
178
|
})
|
|
179
179
|
.click(context.webdriver.findElement({ css: 'input' }))
|
|
180
|
-
.pause(
|
|
180
|
+
.pause(1000)
|
|
181
181
|
.perform();
|
|
182
182
|
const select_half = await context.takeScreenshot();
|
|
183
183
|
await context.webdriver
|
|
@@ -186,10 +186,15 @@ kind('MaskedInput', () => {
|
|
|
186
186
|
})
|
|
187
187
|
.click(context.webdriver.findElement({ css: 'body' }))
|
|
188
188
|
.click(context.webdriver.findElement({ css: 'input' }))
|
|
189
|
-
.
|
|
189
|
+
.pause(1000)
|
|
190
|
+
.sendKeys('1')
|
|
191
|
+
.sendKeys('2')
|
|
192
|
+
.sendKeys('3')
|
|
193
|
+
.sendKeys('4')
|
|
194
|
+
.pause(1000)
|
|
190
195
|
.click(context.webdriver.findElement({ css: 'body' }))
|
|
191
196
|
.click(context.webdriver.findElement({ css: 'input' }))
|
|
192
|
-
.pause(
|
|
197
|
+
.pause(1000)
|
|
193
198
|
.perform();
|
|
194
199
|
const select_all = await context.takeScreenshot();
|
|
195
200
|
await context.matchImages({ idle, select_half, select_all });
|
|
@@ -422,13 +422,14 @@ export var Select = (_dec = locale('Select', SelectLocaleHelper), responsiveLayo
|
|
|
422
422
|
var _this$getProps = this.getProps(),
|
|
423
423
|
menuWidth = _this$getProps.menuWidth,
|
|
424
424
|
menuPos = _this$getProps.menuPos,
|
|
425
|
-
menuAlign = _this$getProps.menuAlign
|
|
425
|
+
menuAlign = _this$getProps.menuAlign,
|
|
426
|
+
positions = _this$getProps.positions;
|
|
426
427
|
return /*#__PURE__*/React.createElement(Popup, {
|
|
427
428
|
opened: true,
|
|
428
429
|
hasShadow: true,
|
|
429
430
|
id: this.menuId,
|
|
430
431
|
"data-tid": SelectDataTids.menu,
|
|
431
|
-
positions: getMenuPositions(menuPos, menuAlign),
|
|
432
|
+
positions: positions != null ? positions : getMenuPositions(menuPos, menuAlign),
|
|
432
433
|
anchorElement: this.popupGetParent(),
|
|
433
434
|
priority: ZIndex.priorities.PopupMenu,
|
|
434
435
|
disablePortal: this.props.disablePortal,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","invariant","globalObject","debounce","isKeyArrowDown","isKeyArrowUp","isKeyArrowVertical","isKeyEnter","isKeyEscape","isKeySpace","locale","reactGetTextContent","Button","filterProps","Input","Menu","MenuItem","MenuSeparator","RenderLayer","createPropsGetter","getRandomID","isFunction","isNonNullable","isReactUINode","ThemeContext","CommonWrapper","MobilePopup","cx","responsiveLayout","getRootNode","rootNode","ThemeFactory","styles","linkStyles","Popup","ZIndex","getMenuPositions","ArrowDownIcon","Item","SelectLocaleHelper","getSelectTheme","SelectDataTids","PASS_BUTTON_PROPS","id","disabled","error","use","size","warning","corners","onMouseEnter","onMouseLeave","onMouseOver","SelectIds","menu","Select","_dec","_class","_Select","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","state","opened","value","props","defaultValue","searchPattern","menuId","buttonElement","getProps","defaultProps","open","setState","onOpen","close","onClose","focus","getDefaultButtonParams","_this$renderLabel","renderLabel","label","isPlaceholder","buttonParams","onClick","toggle","onKeyDown","handleKey","getSearch","createElement","className","search","ref","debouncedFocusInput","onValueChange","handleSearch","width","getMobileSearch","autoFocus","getMenuItems","isMobile","isMobileLayout","mapItems","iValue","item","i","comment","element","isValidElement","cloneElement","key","areValuesEqual","select","bind","renderItem","popupGetParent","focusInput","input","refMenu","e","preventDefault","up","down","enter","_this$menu","highlightItem","buttonRef","getButton","_props$ariaLabel","button","_renderButton","renderDefaultButton","Children","only","onFocus","onBlur","_inheritsLoose","_proto","prototype","componentDidUpdate","_prevProps","prevState","addEventListener","removeEventListener","render","_this2","Consumer","theme","create","menuOffsetY","selectMenuOffsetY","Provider","renderMain","getMenuRenderer","renderMobileMenu","renderMenu","_this$getProps$dataT","_cx","dataTid","root","style","maxWidth","undefined","rootMobile","_extends","rootNodeRef","setRootNode","onClickOutside","onFocusOutside","active","_this$locale","getValue","getItemByValue","renderValue","placeholder","getLeftIconClass","leftIconLink","leftIconLarge","leftIconMedium","leftIconSmall","params","_cx2","_cx3","_cx4","buttonProps","align","labelProps","customUsePlaceholder","placeholderDisabled","paddingRight","getSelectIconGap","useIsCustom","icon","selectButtonContainer","_icon","arrowWrap","arrowDisabled","customUseArrow","_this3","getArrowPadding","selectIconGapLarge","selectIconGapMedium","selectIconGapSmall","arrowLeftPadding","parseFloat","_this$getProps","menuWidth","menuPos","menuAlign","hasShadow","positions","anchorElement","priority","priorities","PopupMenu","disablePortal","margin","parseInt","minWidth","popupOffset","menuOffset","hasMargin","onItemClick","maxHeight","maxMenuHeight","headerChildComponent","caption","mobileMenuHeaderText","onCloseRequest","disableScrollContainer","_this$props$onValueCh","_this$props","fn","items","pattern","toLowerCase","result","index","_iterator","_createForOfIteratorHelperLoose","_step","done","entry","_normalizeEntry","normalizeEntry","filterItem","push","_iterator2","_step2","_normalizeEntry2","itemValue","value1","value2","Component","__KONTUR_REACT_UI__","displayName","SEP","staticElement","isArray","getTextFromItem","toString","itemText","indexOf"],"sources":["Select.tsx"],"sourcesContent":["import type { ReactNode, ReactPortal, AriaAttributes, HTMLAttributes } from 'react';\nimport React from 'react';\nimport invariant from 'invariant';\nimport { globalObject } from '@skbkontur/global-object';\nimport debounce from 'lodash.debounce';\n\nimport {\n isKeyArrowDown,\n isKeyArrowUp,\n isKeyArrowVertical,\n isKeyEnter,\n isKeyEscape,\n isKeySpace,\n} from '../../lib/events/keyboard/identifiers';\nimport { locale } from '../../lib/locale/decorators';\nimport { reactGetTextContent } from '../../lib/reactGetTextContent';\nimport type { ButtonProps, ButtonUse } from '../Button';\nimport { Button } from '../Button';\nimport { filterProps } from '../../lib/filterProps';\nimport { Input } from '../Input';\nimport { Menu } from '../../internal/Menu';\nimport type { MenuItemProps } from '../MenuItem';\nimport { MenuItem } from '../MenuItem';\nimport { MenuSeparator } from '../MenuSeparator';\nimport { RenderLayer } from '../../internal/RenderLayer';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport type { Nullable } from '../../typings/utility-types';\nimport { getRandomID, isFunction, isNonNullable, isReactUINode } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme, ThemeIn } from '../../lib/theming/Theme';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { MobilePopup } from '../../internal/MobilePopup';\nimport { cx } from '../../lib/theming/Emotion';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator';\nimport type { TSetRootNode } from '../../lib/rootNode';\nimport { getRootNode, rootNode } from '../../lib/rootNode';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport type { MenuHeaderProps } from '../MenuHeader';\nimport type { SizeProp } from '../../lib/types/props';\nimport { styles as linkStyles } from '../Link/Link.styles';\nimport { Popup } from '../../internal/Popup';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { getMenuPositions } from '../../lib/getMenuPositions';\n\nimport { ArrowDownIcon } from './ArrowDownIcon';\nimport { Item } from './Item';\nimport type { SelectLocale } from './locale';\nimport { SelectLocaleHelper } from './locale';\nimport { styles } from './Select.styles';\nimport { getSelectTheme } from './selectTheme';\nimport { SelectDataTids } from './tids';\n\nexport * from './tids';\n\nexport interface ButtonParams\n extends Pick<AriaAttributes, 'aria-describedby' | 'aria-controls' | 'aria-label' | 'aria-expanded'> {\n /** Делает компонент недоступным. */\n disabled?: boolean;\n\n /** Задает лейбл. */\n label: React.ReactNode;\n\n /** Задает функцию, которая вызывается при клике на селект. */\n onClick: () => void;\n\n /** Задает функцию, которая вызывается при нажатии кнопки на клавиатуре. */\n onKeyDown: (event: React.KeyboardEvent<HTMLElement>) => void;\n\n /** Определяет, открыто ли выпадающее меню. */\n opened: boolean;\n\n /** Определяет, есть ли Placeholder. */\n isPlaceholder: boolean;\n\n /** Задает размер контрола. */\n size: SizeProp;\n}\n\nconst PASS_BUTTON_PROPS = {\n id: true,\n disabled: true,\n error: true,\n use: true,\n size: true,\n warning: true,\n corners: true,\n\n onMouseEnter: true,\n onMouseLeave: true,\n onMouseOver: true,\n};\n\nexport const SelectIds = {\n menu: SelectDataTids.menu,\n} as const;\n\ntype SelectItem<TValue, TItem> =\n | [TValue, TItem, React.ReactNode?]\n | TItem\n | TValue\n | React.ReactElement\n | (() => React.ReactElement);\n\nexport interface SelectProps<TValue, TItem>\n extends CommonProps,\n Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'> {\n /** @ignore */\n _icon?: React.ReactNode;\n\n /** @ignore */\n _renderButton?: (params: ButtonParams) => React.ReactNode;\n\n /** @ignore */\n corners?: React.CSSProperties;\n\n /** Задает значение по умолчанию. */\n defaultValue?: TValue;\n\n menuOffset?: number;\n\n /** Отключает использование портала. */\n disablePortal?: boolean;\n\n /** Делает компонент недоступным.*/\n disabled?: boolean;\n\n /** Переводит контрол в состояние валидации \"ошибка\". */\n error?: boolean;\n\n /** Задает функцию, которая отфильтровывает элементы по заданному паттерну. */\n filterItem?: (value: TValue, item: TItem, pattern: string) => boolean;\n\n /** Задает набор значений. Поддерживаются любые перечисляемые типы, в том числе `Array`, `Map`, `Immutable.Map`.\n *\n * Элементы воспринимаются следующим образом: если элемент — это массив, то первый элемент является значением,\n * второй — отображается в списке, а третий – комментарий;\n * если элемент не является массивом, то он используется и для отображения, и для значения.\n *\n * Для вставки разделителя можно использовать `Select.SEP`.\n *\n * Вставить невыделяемый элемент со своей разметкой можно так:\n * @example\n * ```\n * <Select ...\n * items={[Select.staticElement(() => <div>My Element</div>)]}\n * />\n * ```\n *\n * Чтобы добавить стандартный отступ для статического элемента:\n * @example\n * ```\n * <Select.Item>My Element</Select.Item>\n * ``` */\n items?: Array<SelectItem<TValue, TItem>>;\n\n /** Задает максимальную высоту меню. */\n maxMenuHeight?: number;\n\n /** Задает максимальную ширину. */\n maxWidth?: React.CSSProperties['maxWidth'];\n\n /** Задает текущую позицию выпадающего окна вручную. */\n menuPos?: 'top' | 'bottom' | 'middle';\n\n /** Задает выравнивание меню. */\n menuAlign?: 'left' | 'right';\n\n /** Задает ширину выпадающего меню. */\n menuWidth?: React.CSSProperties['width'];\n\n /** Задает функцию, вызывающуюся при изменении value. */\n onValueChange?: (value: TValue) => void;\n\n /** Задает функцию, которая вызывается при закрытии меню. */\n onClose?: () => void;\n\n /** Задает функцию, которая вызывается при наведении мышкой (событие `onmouseenter`). См разницу с onMouseOver в [документации](https://learn.javascript.ru/mousemove-mouseover-mouseout-mouseenter-mouseleave) */\n onMouseEnter?: (e: React.MouseEvent<HTMLElement>) => void;\n\n /** Задает функцию, которая вызывается при уходе мышки с объекта (событие `onmouseleave`). */\n onMouseLeave?: (e: React.MouseEvent<HTMLElement>) => void;\n\n /** Задает функцию, которая вызывается при наведении мышкой (событие `onmouseover`). */\n onMouseOver?: (e: React.MouseEvent<HTMLElement>) => void;\n\n /** Задает функцию, которая вызывается при нажатии кнопки на клавиатуре. */\n onKeyDown?: (e: React.KeyboardEvent<HTMLElement>) => void;\n\n /** Задает функцию, которая вызывается при открытии меню. */\n onOpen?: () => void;\n\n /** Задает текст, который отображается если не введено никакое значение. */\n placeholder?: React.ReactNode;\n\n /** Задает функцию, которая отображает элемент в выпадающем списке. */\n renderItem?: (value: TValue, item?: TItem) => React.ReactNode;\n\n /** Задает функцию, которая отображает выбранный элемент. */\n renderValue?: (value: TValue, item?: TItem) => React.ReactNode;\n\n /** Задает функцию сравнения `value` с элементом из `items`. */\n areValuesEqual?: (value1: TValue, value2: TValue) => boolean;\n\n /** Показывает строку поиска в списке. */\n search?: boolean;\n\n /** Задает значение. */\n value?: TValue;\n\n theme?: ThemeIn | Theme;\n\n /** Задает длину контрола. */\n width?: number | string;\n\n /** Переводит контрол в состояние валидации \"предупреждение\". */\n warning?: boolean;\n\n /** Задаёт стиль кнопки. */\n use?: ButtonUse;\n\n /** Задает размер. */\n size?: SizeProp;\n\n /** Задаёт HTML-событие `onfocus`. */\n onFocus?: React.FocusEventHandler<HTMLElement>;\n\n /** Задаёт HTML-событие `onblur`. */\n onBlur?: React.FocusEventHandler<HTMLElement>;\n\n /** Задает текст заголовка выпадающего меню в мобильной версии. */\n mobileMenuHeaderText?: string;\n}\n\nexport interface SelectState<TValue> {\n opened: boolean;\n searchPattern: string;\n value: Nullable<TValue>;\n}\n\ninterface FocusableReactElement extends React.ReactElement<any> {\n focus: (event?: any) => void;\n}\n\ntype DefaultProps<TValue, TItem> = Required<\n Pick<SelectProps<TValue, TItem>, 'renderValue' | 'renderItem' | 'areValuesEqual' | 'filterItem' | 'use' | 'size'>\n>;\n\n/**\n * Раскрывающийся список `Select` позволяет выбрать значение из заранее известного набора вариантов.\n *\n * Используйте `Select` при:\n * * заполнении форм, например для выбора месяца.\n * * переключении состояний, например, фильтра.\n * * выборе предустановленных настроек, например, частоты уведомлений, часового пояса.\n *\n * Не используйте `Select` для выбора элементов меню. В таком случае воспользуйтесь компонентом Dropdown.\n */\n@responsiveLayout\n@rootNode\n@locale('Select', SelectLocaleHelper)\n// Suggested solutions break current behavior\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport class Select<TValue = {}, TItem = {}> extends React.Component<SelectProps<TValue, TItem>, SelectState<TValue>> {\n public static __KONTUR_REACT_UI__ = 'Select';\n public static displayName = 'Select';\n\n public static defaultProps: DefaultProps<unknown, ReactNode | ReactPortal> = {\n renderValue,\n renderItem,\n areValuesEqual,\n filterItem,\n use: 'default',\n size: 'small',\n };\n\n public static Item = Item;\n public static SEP = () => <MenuSeparator />;\n\n public static staticElement = (element: React.ReactElement | (() => React.ReactElement)) => {\n invariant(\n React.isValidElement(element) || typeof element === 'function',\n 'Select.staticElement(element) expects element to be a valid react element.',\n );\n return element;\n };\n\n public state: SelectState<TValue> = {\n opened: false,\n value: this.props.defaultValue,\n searchPattern: '',\n };\n\n private theme!: Theme;\n private isMobileLayout!: boolean;\n private readonly locale!: SelectLocale;\n private menu: Nullable<Menu>;\n private menuId = SelectIds.menu + getRandomID();\n private buttonElement: FocusableReactElement | null = null;\n private getProps = createPropsGetter(Select.defaultProps);\n private setRootNode!: TSetRootNode;\n\n public componentDidUpdate(_prevProps: SelectProps<TValue, TItem>, prevState: SelectState<TValue>) {\n if (!prevState.opened && this.state.opened) {\n globalObject.addEventListener?.('popstate', this.close);\n }\n if (prevState.opened && !this.state.opened) {\n globalObject.removeEventListener?.('popstate', this.close);\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = ThemeFactory.create(\n {\n menuOffsetY: theme.selectMenuOffsetY,\n },\n theme,\n );\n return <ThemeContext.Provider value={this.theme}>{this.renderMain()}</ThemeContext.Provider>;\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public open = () => {\n if (!this.state.opened) {\n this.setState({ opened: true });\n\n if (this.props.onOpen) {\n this.props.onOpen();\n }\n }\n };\n\n /**\n * @public\n */\n public close = () => {\n if (this.state.opened) {\n this.setState({ opened: false, searchPattern: '' });\n\n if (this.props.onClose) {\n this.props.onClose();\n }\n }\n };\n\n /**\n * @public\n */\n public focus = () => {\n if (this.buttonElement && this.buttonElement.focus) {\n this.buttonElement.focus();\n }\n };\n\n private getMenuRenderer() {\n if (this.props.disabled) {\n return null;\n }\n\n if (this.isMobileLayout) {\n return this.renderMobileMenu();\n }\n\n if (this.state.opened) {\n return this.renderMenu();\n }\n\n return null;\n }\n\n private renderMain() {\n const buttonParams = this.getDefaultButtonParams();\n const dataTid = this.getProps()['data-tid'] ?? SelectDataTids.root;\n const button = (\n <ThemeContext.Provider value={getSelectTheme(this.theme, this.props)}>\n {this.getButton(buttonParams)}\n </ThemeContext.Provider>\n );\n\n const isMobile = this.isMobileLayout;\n\n const style = {\n width: this.props.width,\n maxWidth: this.props.maxWidth || undefined,\n };\n\n const root = (\n <span\n data-tid={dataTid}\n className={cx({ [styles.root()]: true, [styles.rootMobile(this.theme)]: isMobile })}\n style={style}\n >\n {button}\n {this.getMenuRenderer()}\n </span>\n );\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <RenderLayer\n onClickOutside={this.close}\n onFocusOutside={this.close}\n active={isMobile ? false : this.state.opened}\n >\n {root}\n </RenderLayer>\n </CommonWrapper>\n );\n }\n\n private getDefaultButtonParams = (): ButtonParams => {\n const { label, isPlaceholder } = this.renderLabel();\n\n const buttonParams: ButtonParams = {\n opened: this.state.opened,\n label,\n isPlaceholder,\n onClick: this.toggle,\n onKeyDown: this.handleKey,\n size: this.getProps().size,\n disabled: this.getProps().disabled,\n };\n\n return buttonParams;\n };\n\n private renderLabel() {\n const value = this.getValue();\n const item = this.getItemByValue(value);\n\n if (isNonNullable(value)) {\n return {\n label: this.getProps().renderValue(value, item),\n isPlaceholder: false,\n };\n }\n\n return {\n label: <span>{this.props.placeholder || this.locale?.placeholder}</span>,\n isPlaceholder: true,\n };\n }\n\n private getLeftIconClass(size: SizeProp | undefined) {\n if (this.getProps().use === 'link') {\n return styles.leftIconLink(this.theme);\n }\n\n switch (size) {\n case 'large':\n return styles.leftIconLarge(this.theme);\n case 'medium':\n return styles.leftIconMedium(this.theme);\n case 'small':\n default:\n return styles.leftIconSmall(this.theme);\n }\n }\n\n private renderDefaultButton(params: ButtonParams) {\n const buttonProps: ButtonProps = {\n ...filterProps(this.props, PASS_BUTTON_PROPS),\n align: 'left' as React.CSSProperties['textAlign'],\n disabled: this.props.disabled,\n width: '100%',\n onClick: params.onClick,\n onKeyDown: params.onKeyDown,\n active: params.opened,\n size: params.size,\n };\n const use = this.getProps().use;\n\n const labelProps = {\n 'data-tid': SelectDataTids.label,\n className: cx({\n [styles.label()]: use !== 'link',\n [styles.placeholder(this.theme)]: params.isPlaceholder,\n [styles.customUsePlaceholder()]: params.isPlaceholder && use !== 'default',\n [styles.placeholderDisabled(this.theme)]: params.isPlaceholder && this.props.disabled,\n }),\n style: {\n paddingRight: this.getSelectIconGap(),\n },\n };\n\n const useIsCustom = use !== 'default';\n\n const icon = <ArrowDownIcon size={this.props.size} />;\n\n return (\n <Button {...buttonProps}>\n <div className={cx(styles.selectButtonContainer(), { [linkStyles.root(this.theme)]: use === 'link' })}>\n {this.props._icon && <div className={this.getLeftIconClass(this.props.size)}>{this.props._icon}</div>}\n <span {...labelProps}>{params.label}</span>\n\n <div\n className={cx(styles.arrowWrap(this.theme), {\n [styles.arrowDisabled(this.theme)]: this.props.disabled,\n [styles.customUseArrow()]: useIsCustom,\n })}\n >\n {icon}\n </div>\n </div>\n </Button>\n );\n }\n\n private getSelectIconGap(): number {\n const getArrowPadding = () => {\n switch (this.props.size) {\n case 'large':\n return this.theme.selectIconGapLarge;\n case 'medium':\n return this.theme.selectIconGapMedium;\n case 'small':\n default:\n return this.theme.selectIconGapSmall;\n }\n };\n const arrowLeftPadding = parseFloat(getArrowPadding()) || 0;\n\n return arrowLeftPadding;\n }\n\n private renderMenu(): React.ReactNode {\n const search = this.props.search ? this.getSearch() : null;\n\n const value = this.getValue();\n const { menuWidth, menuPos, menuAlign } = this.getProps();\n\n return (\n <Popup\n opened\n hasShadow\n id={this.menuId}\n data-tid={SelectDataTids.menu}\n positions={getMenuPositions(menuPos, menuAlign)}\n anchorElement={this.popupGetParent()}\n priority={ZIndex.priorities.PopupMenu}\n disablePortal={this.props.disablePortal}\n margin={parseInt(this.theme.menuOffsetY) - 1}\n width={menuWidth}\n minWidth={menuWidth === undefined ? '100%' : undefined}\n popupOffset={this.props.menuOffset}\n >\n <Menu\n hasMargin={false}\n ref={this.refMenu}\n onItemClick={this.close}\n maxHeight={this.props.maxMenuHeight}\n align={menuAlign}\n >\n {search}\n {this.getMenuItems(value)}\n </Menu>\n </Popup>\n );\n }\n\n private getSearch = () => {\n return (\n <div className={styles.search()} onKeyDown={this.handleKey}>\n <Input ref={this.debouncedFocusInput} onValueChange={this.handleSearch} width=\"100%\" />\n </div>\n );\n };\n\n private renderMobileMenu(): React.ReactNode {\n const search = this.props.search ? this.getMobileSearch() : null;\n const value = this.getValue();\n\n return (\n <MobilePopup\n headerChildComponent={search}\n caption={this.props.mobileMenuHeaderText}\n onCloseRequest={this.close}\n opened={this.state.opened}\n >\n <Menu onItemClick={this.close} disableScrollContainer maxHeight={'auto'}>\n {this.getMenuItems(value)}\n </Menu>\n </MobilePopup>\n );\n }\n\n private getMobileSearch = () => {\n return (\n <Input\n autoFocus\n value={this.state.searchPattern}\n ref={this.debouncedFocusInput}\n onValueChange={this.handleSearch}\n width=\"100%\"\n />\n );\n };\n\n private getMenuItems = (value: Nullable<TValue>) => {\n const isMobile = this.isMobileLayout;\n const size = this.props.size;\n\n return this.mapItems(\n (iValue: TValue, item: TItem | (() => React.ReactNode), i: number, comment: Nullable<React.ReactNode>) => {\n if (isFunction(item)) {\n const element = item();\n\n if (React.isValidElement(element)) {\n return React.cloneElement(element, { key: i, isMobile, size } as MenuItemProps);\n }\n\n return null;\n }\n\n if (React.isValidElement(item)) {\n if (isReactUINode('MenuItem', item)) {\n return React.cloneElement(item, { key: i, isMobile, size } as MenuItemProps);\n }\n if (isReactUINode('MenuHeader', item)) {\n return React.cloneElement(item, { size } as MenuHeaderProps);\n }\n return React.cloneElement(item, { key: i });\n }\n\n return (\n <MenuItem\n key={i}\n state={this.areValuesEqual(iValue, value) ? 'selected' : null}\n onClick={this.select.bind(this, iValue)}\n comment={comment}\n isMobile={isMobile}\n size={this.props.size}\n >\n {this.getProps().renderItem(iValue, item)}\n </MenuItem>\n );\n },\n );\n };\n\n private popupGetParent = () => {\n return getRootNode(this);\n };\n\n // fix cases when an Input is rendered in portal\n // https://github.com/skbkontur/retail-ui/issues/1995\n private focusInput = (input: Input) => input?.focus();\n private debouncedFocusInput = debounce(this.focusInput);\n\n private refMenu = (menu: Menu) => {\n this.menu = menu;\n };\n\n private toggle = () => {\n if (this.state.opened) {\n this.close();\n } else {\n this.open();\n }\n };\n\n private handleKey = (e: React.KeyboardEvent<HTMLElement>) => {\n if (!this.state.opened) {\n if (isKeySpace(e) || isKeyArrowVertical(e)) {\n e.preventDefault();\n this.open();\n }\n } else {\n switch (true) {\n case isKeyEscape(e):\n this.focus();\n this.close();\n break;\n case isKeyArrowUp(e):\n e.preventDefault();\n if (this.menu) {\n this.menu.up();\n }\n break;\n case isKeyArrowDown(e):\n e.preventDefault();\n if (this.menu) {\n this.menu.down();\n }\n break;\n case isKeyEnter(e):\n e.preventDefault(); // To prevent form submission.\n if (this.menu) {\n this.menu.enter(e);\n }\n break;\n }\n }\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n };\n\n private handleSearch = (value: string) => {\n this.setState({ searchPattern: value });\n this.menu?.highlightItem(0);\n };\n\n private select(value: TValue) {\n this.focus();\n this.setState({ opened: false, value });\n\n if (!this.areValuesEqual(this.getValue(), value)) {\n this.props.onValueChange?.(value);\n }\n }\n\n private getValue() {\n if (this.props.value !== undefined) {\n return this.props.value;\n }\n return this.state.value;\n }\n\n private mapItems(fn: (value: TValue, item: TItem, index: number, comment?: string) => React.ReactNode) {\n const { items } = this.props;\n if (!items) {\n return [];\n }\n const pattern = this.state.searchPattern && this.state.searchPattern.toLowerCase();\n\n const result: React.ReactNode[] = [];\n let index = 0;\n for (const entry of items) {\n const [value, item, comment] = normalizeEntry(entry as TItem);\n\n if (!pattern || this.getProps().filterItem(value, item, pattern)) {\n result.push(fn(value, item, index, comment));\n ++index;\n }\n }\n\n return result;\n }\n\n private getItemByValue(value?: Nullable<TValue>) {\n if (value === null || value === undefined) {\n return null;\n }\n\n const items = this.props.items || [];\n\n for (const entry of items) {\n const [itemValue, item] = normalizeEntry(entry);\n\n if (this.areValuesEqual(itemValue, value)) {\n return item;\n }\n }\n return null;\n }\n\n private areValuesEqual(value1: Nullable<TValue>, value2: Nullable<TValue>) {\n return isNonNullable(value1) && isNonNullable(value2) && this.getProps().areValuesEqual(value1, value2);\n }\n\n private buttonRef = (element: FocusableReactElement | null) => {\n this.buttonElement = element;\n };\n\n private getButton = (buttonParams: ButtonParams) => {\n const button = this.props._renderButton\n ? this.props._renderButton(buttonParams)\n : this.renderDefaultButton(buttonParams);\n\n const buttonElement = React.Children.only(button);\n\n return React.isValidElement(buttonElement)\n ? React.cloneElement(buttonElement as React.ReactElement, {\n ref: this.buttonRef,\n onFocus: this.props.onFocus,\n onBlur: this.props.onBlur,\n size: this.props.size,\n 'aria-describedby': this.props['aria-describedby'],\n 'aria-expanded': this.state.opened ? 'true' : 'false',\n 'aria-controls': this.menuId,\n 'aria-label': (buttonElement as React.ReactElement).props['aria-label'] ?? this.props['aria-label'],\n })\n : buttonElement;\n };\n}\n\nfunction renderValue<TValue, TItem>(value: TValue, item: Nullable<TItem>) {\n return item;\n}\n\nfunction renderItem<TValue, TItem>(value: TValue, item?: TItem) {\n return item;\n}\n\nfunction areValuesEqual<TValue>(value1: TValue, value2: TValue) {\n return value1 === value2;\n}\n\nfunction normalizeEntry(entry: any) {\n if (Array.isArray(entry)) {\n return entry;\n }\n\n return [entry, entry, undefined];\n}\n\nconst getTextFromItem = (item: any): string => {\n if (typeof item === 'string') {\n return item;\n }\n\n if (isFunction(item)) {\n return getTextFromItem(item());\n }\n\n if (React.isValidElement(item)) {\n return reactGetTextContent(item);\n }\n\n if (typeof item === 'number') {\n return item.toString(10);\n }\n\n return '';\n};\n\nfunction filterItem<TValue>(value: TValue, item: any, pattern: string) {\n if (item === Select.SEP) {\n return false;\n }\n\n const itemText = getTextFromItem(item);\n\n if (!itemText) {\n return false;\n }\n\n return itemText.toLowerCase().indexOf(pattern) !== -1;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","invariant","globalObject","debounce","isKeyArrowDown","isKeyArrowUp","isKeyArrowVertical","isKeyEnter","isKeyEscape","isKeySpace","locale","reactGetTextContent","Button","filterProps","Input","Menu","MenuItem","MenuSeparator","RenderLayer","createPropsGetter","getRandomID","isFunction","isNonNullable","isReactUINode","ThemeContext","CommonWrapper","MobilePopup","cx","responsiveLayout","getRootNode","rootNode","ThemeFactory","styles","linkStyles","Popup","ZIndex","getMenuPositions","ArrowDownIcon","Item","SelectLocaleHelper","getSelectTheme","SelectDataTids","PASS_BUTTON_PROPS","id","disabled","error","use","size","warning","corners","onMouseEnter","onMouseLeave","onMouseOver","SelectIds","menu","Select","_dec","_class","_Select","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","state","opened","value","props","defaultValue","searchPattern","menuId","buttonElement","getProps","defaultProps","open","setState","onOpen","close","onClose","focus","getDefaultButtonParams","_this$renderLabel","renderLabel","label","isPlaceholder","buttonParams","onClick","toggle","onKeyDown","handleKey","getSearch","createElement","className","search","ref","debouncedFocusInput","onValueChange","handleSearch","width","getMobileSearch","autoFocus","getMenuItems","isMobile","isMobileLayout","mapItems","iValue","item","i","comment","element","isValidElement","cloneElement","key","areValuesEqual","select","bind","renderItem","popupGetParent","focusInput","input","refMenu","e","preventDefault","up","down","enter","_this$menu","highlightItem","buttonRef","getButton","_props$ariaLabel","button","_renderButton","renderDefaultButton","Children","only","onFocus","onBlur","_inheritsLoose","_proto","prototype","componentDidUpdate","_prevProps","prevState","addEventListener","removeEventListener","render","_this2","Consumer","theme","create","menuOffsetY","selectMenuOffsetY","Provider","renderMain","getMenuRenderer","renderMobileMenu","renderMenu","_this$getProps$dataT","_cx","dataTid","root","style","maxWidth","undefined","rootMobile","_extends","rootNodeRef","setRootNode","onClickOutside","onFocusOutside","active","_this$locale","getValue","getItemByValue","renderValue","placeholder","getLeftIconClass","leftIconLink","leftIconLarge","leftIconMedium","leftIconSmall","params","_cx2","_cx3","_cx4","buttonProps","align","labelProps","customUsePlaceholder","placeholderDisabled","paddingRight","getSelectIconGap","useIsCustom","icon","selectButtonContainer","_icon","arrowWrap","arrowDisabled","customUseArrow","_this3","getArrowPadding","selectIconGapLarge","selectIconGapMedium","selectIconGapSmall","arrowLeftPadding","parseFloat","_this$getProps","menuWidth","menuPos","menuAlign","positions","hasShadow","anchorElement","priority","priorities","PopupMenu","disablePortal","margin","parseInt","minWidth","popupOffset","menuOffset","hasMargin","onItemClick","maxHeight","maxMenuHeight","headerChildComponent","caption","mobileMenuHeaderText","onCloseRequest","disableScrollContainer","_this$props$onValueCh","_this$props","fn","items","pattern","toLowerCase","result","index","_iterator","_createForOfIteratorHelperLoose","_step","done","entry","_normalizeEntry","normalizeEntry","filterItem","push","_iterator2","_step2","_normalizeEntry2","itemValue","value1","value2","Component","__KONTUR_REACT_UI__","displayName","SEP","staticElement","isArray","getTextFromItem","toString","itemText","indexOf"],"sources":["Select.tsx"],"sourcesContent":["import type { ReactNode, ReactPortal, AriaAttributes, HTMLAttributes } from 'react';\nimport React from 'react';\nimport invariant from 'invariant';\nimport { globalObject } from '@skbkontur/global-object';\nimport debounce from 'lodash.debounce';\n\nimport {\n isKeyArrowDown,\n isKeyArrowUp,\n isKeyArrowVertical,\n isKeyEnter,\n isKeyEscape,\n isKeySpace,\n} from '../../lib/events/keyboard/identifiers';\nimport { locale } from '../../lib/locale/decorators';\nimport { reactGetTextContent } from '../../lib/reactGetTextContent';\nimport type { ButtonProps, ButtonUse } from '../Button';\nimport { Button } from '../Button';\nimport { filterProps } from '../../lib/filterProps';\nimport { Input } from '../Input';\nimport { Menu } from '../../internal/Menu';\nimport type { MenuItemProps } from '../MenuItem';\nimport { MenuItem } from '../MenuItem';\nimport { MenuSeparator } from '../MenuSeparator';\nimport { RenderLayer } from '../../internal/RenderLayer';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport type { Nullable } from '../../typings/utility-types';\nimport { getRandomID, isFunction, isNonNullable, isReactUINode } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme, ThemeIn } from '../../lib/theming/Theme';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { MobilePopup } from '../../internal/MobilePopup';\nimport { cx } from '../../lib/theming/Emotion';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator';\nimport type { TSetRootNode } from '../../lib/rootNode';\nimport { getRootNode, rootNode } from '../../lib/rootNode';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport type { MenuHeaderProps } from '../MenuHeader';\nimport type { SizeProp } from '../../lib/types/props';\nimport { styles as linkStyles } from '../Link/Link.styles';\nimport { Popup, type PopupPositionsType } from '../../internal/Popup';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { getMenuPositions } from '../../lib/getMenuPositions';\n\nimport { ArrowDownIcon } from './ArrowDownIcon';\nimport { Item } from './Item';\nimport type { SelectLocale } from './locale';\nimport { SelectLocaleHelper } from './locale';\nimport { styles } from './Select.styles';\nimport { getSelectTheme } from './selectTheme';\nimport { SelectDataTids } from './tids';\n\nexport * from './tids';\n\nexport interface ButtonParams\n extends Pick<AriaAttributes, 'aria-describedby' | 'aria-controls' | 'aria-label' | 'aria-expanded'> {\n /** Делает компонент недоступным. */\n disabled?: boolean;\n\n /** Задает лейбл. */\n label: React.ReactNode;\n\n /** Задает функцию, которая вызывается при клике на селект. */\n onClick: () => void;\n\n /** Задает функцию, которая вызывается при нажатии кнопки на клавиатуре. */\n onKeyDown: (event: React.KeyboardEvent<HTMLElement>) => void;\n\n /** Определяет, открыто ли выпадающее меню. */\n opened: boolean;\n\n /** Определяет, есть ли Placeholder. */\n isPlaceholder: boolean;\n\n /** Задает размер контрола. */\n size: SizeProp;\n}\n\nconst PASS_BUTTON_PROPS = {\n id: true,\n disabled: true,\n error: true,\n use: true,\n size: true,\n warning: true,\n corners: true,\n\n onMouseEnter: true,\n onMouseLeave: true,\n onMouseOver: true,\n};\n\nexport const SelectIds = {\n menu: SelectDataTids.menu,\n} as const;\n\ntype SelectItem<TValue, TItem> =\n | [TValue, TItem, React.ReactNode?]\n | TItem\n | TValue\n | React.ReactElement\n | (() => React.ReactElement);\n\nexport interface SelectProps<TValue, TItem>\n extends CommonProps,\n Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'> {\n /** @ignore */\n _icon?: React.ReactNode;\n\n /** @ignore */\n _renderButton?: (params: ButtonParams) => React.ReactNode;\n\n /** @ignore */\n corners?: React.CSSProperties;\n\n /** Задает значение по умолчанию. */\n defaultValue?: TValue;\n\n menuOffset?: number;\n\n /** Отключает использование портала. */\n disablePortal?: boolean;\n\n /** Делает компонент недоступным.*/\n disabled?: boolean;\n\n /** Переводит контрол в состояние валидации \"ошибка\". */\n error?: boolean;\n\n /** Задает функцию, которая отфильтровывает элементы по заданному паттерну. */\n filterItem?: (value: TValue, item: TItem, pattern: string) => boolean;\n\n /** Задает набор значений. Поддерживаются любые перечисляемые типы, в том числе `Array`, `Map`, `Immutable.Map`.\n *\n * Элементы воспринимаются следующим образом: если элемент — это массив, то первый элемент является значением,\n * второй — отображается в списке, а третий – комментарий;\n * если элемент не является массивом, то он используется и для отображения, и для значения.\n *\n * Для вставки разделителя можно использовать `Select.SEP`.\n *\n * Вставить невыделяемый элемент со своей разметкой можно так:\n * @example\n * ```\n * <Select ...\n * items={[Select.staticElement(() => <div>My Element</div>)]}\n * />\n * ```\n *\n * Чтобы добавить стандартный отступ для статического элемента:\n * @example\n * ```\n * <Select.Item>My Element</Select.Item>\n * ``` */\n items?: Array<SelectItem<TValue, TItem>>;\n\n /** Задает максимальную высоту меню. */\n maxMenuHeight?: number;\n\n /** Задает максимальную ширину. */\n maxWidth?: React.CSSProperties['maxWidth'];\n\n /** Задает позиции выпадающего меню. */\n positions?: PopupPositionsType[];\n\n /** Задает текущую позицию выпадающего окна вручную. */\n menuPos?: 'top' | 'bottom' | 'middle';\n\n /** Задает выравнивание меню. */\n menuAlign?: 'left' | 'right';\n\n /** Задает ширину выпадающего меню. */\n menuWidth?: React.CSSProperties['width'];\n\n /** Задает функцию, вызывающуюся при изменении value. */\n onValueChange?: (value: TValue) => void;\n\n /** Задает функцию, которая вызывается при закрытии меню. */\n onClose?: () => void;\n\n /** Задает функцию, которая вызывается при наведении мышкой (событие `onmouseenter`). См разницу с onMouseOver в [документации](https://learn.javascript.ru/mousemove-mouseover-mouseout-mouseenter-mouseleave) */\n onMouseEnter?: (e: React.MouseEvent<HTMLElement>) => void;\n\n /** Задает функцию, которая вызывается при уходе мышки с объекта (событие `onmouseleave`). */\n onMouseLeave?: (e: React.MouseEvent<HTMLElement>) => void;\n\n /** Задает функцию, которая вызывается при наведении мышкой (событие `onmouseover`). */\n onMouseOver?: (e: React.MouseEvent<HTMLElement>) => void;\n\n /** Задает функцию, которая вызывается при нажатии кнопки на клавиатуре. */\n onKeyDown?: (e: React.KeyboardEvent<HTMLElement>) => void;\n\n /** Задает функцию, которая вызывается при открытии меню. */\n onOpen?: () => void;\n\n /** Задает текст, который отображается если не введено никакое значение. */\n placeholder?: React.ReactNode;\n\n /** Задает функцию, которая отображает элемент в выпадающем списке. */\n renderItem?: (value: TValue, item?: TItem) => React.ReactNode;\n\n /** Задает функцию, которая отображает выбранный элемент. */\n renderValue?: (value: TValue, item?: TItem) => React.ReactNode;\n\n /** Задает функцию сравнения `value` с элементом из `items`. */\n areValuesEqual?: (value1: TValue, value2: TValue) => boolean;\n\n /** Показывает строку поиска в списке. */\n search?: boolean;\n\n /** Задает значение. */\n value?: TValue;\n\n theme?: ThemeIn | Theme;\n\n /** Задает длину контрола. */\n width?: number | string;\n\n /** Переводит контрол в состояние валидации \"предупреждение\". */\n warning?: boolean;\n\n /** Задаёт стиль кнопки. */\n use?: ButtonUse;\n\n /** Задает размер. */\n size?: SizeProp;\n\n /** Задаёт HTML-событие `onfocus`. */\n onFocus?: React.FocusEventHandler<HTMLElement>;\n\n /** Задаёт HTML-событие `onblur`. */\n onBlur?: React.FocusEventHandler<HTMLElement>;\n\n /** Задает текст заголовка выпадающего меню в мобильной версии. */\n mobileMenuHeaderText?: string;\n}\n\nexport interface SelectState<TValue> {\n opened: boolean;\n searchPattern: string;\n value: Nullable<TValue>;\n}\n\ninterface FocusableReactElement extends React.ReactElement<any> {\n focus: (event?: any) => void;\n}\n\ntype DefaultProps<TValue, TItem> = Required<\n Pick<SelectProps<TValue, TItem>, 'renderValue' | 'renderItem' | 'areValuesEqual' | 'filterItem' | 'use' | 'size'>\n>;\n\n/**\n * Раскрывающийся список `Select` позволяет выбрать значение из заранее известного набора вариантов.\n *\n * Используйте `Select` при:\n * * заполнении форм, например для выбора месяца.\n * * переключении состояний, например, фильтра.\n * * выборе предустановленных настроек, например, частоты уведомлений, часового пояса.\n *\n * Не используйте `Select` для выбора элементов меню. В таком случае воспользуйтесь компонентом Dropdown.\n */\n@responsiveLayout\n@rootNode\n@locale('Select', SelectLocaleHelper)\n// Suggested solutions break current behavior\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport class Select<TValue = {}, TItem = {}> extends React.Component<SelectProps<TValue, TItem>, SelectState<TValue>> {\n public static __KONTUR_REACT_UI__ = 'Select';\n public static displayName = 'Select';\n\n public static defaultProps: DefaultProps<unknown, ReactNode | ReactPortal> = {\n renderValue,\n renderItem,\n areValuesEqual,\n filterItem,\n use: 'default',\n size: 'small',\n };\n\n public static Item = Item;\n public static SEP = () => <MenuSeparator />;\n\n public static staticElement = (element: React.ReactElement | (() => React.ReactElement)) => {\n invariant(\n React.isValidElement(element) || typeof element === 'function',\n 'Select.staticElement(element) expects element to be a valid react element.',\n );\n return element;\n };\n\n public state: SelectState<TValue> = {\n opened: false,\n value: this.props.defaultValue,\n searchPattern: '',\n };\n\n private theme!: Theme;\n private isMobileLayout!: boolean;\n private readonly locale!: SelectLocale;\n private menu: Nullable<Menu>;\n private menuId = SelectIds.menu + getRandomID();\n private buttonElement: FocusableReactElement | null = null;\n private getProps = createPropsGetter(Select.defaultProps);\n private setRootNode!: TSetRootNode;\n\n public componentDidUpdate(_prevProps: SelectProps<TValue, TItem>, prevState: SelectState<TValue>) {\n if (!prevState.opened && this.state.opened) {\n globalObject.addEventListener?.('popstate', this.close);\n }\n if (prevState.opened && !this.state.opened) {\n globalObject.removeEventListener?.('popstate', this.close);\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = ThemeFactory.create(\n {\n menuOffsetY: theme.selectMenuOffsetY,\n },\n theme,\n );\n return <ThemeContext.Provider value={this.theme}>{this.renderMain()}</ThemeContext.Provider>;\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public open = () => {\n if (!this.state.opened) {\n this.setState({ opened: true });\n\n if (this.props.onOpen) {\n this.props.onOpen();\n }\n }\n };\n\n /**\n * @public\n */\n public close = () => {\n if (this.state.opened) {\n this.setState({ opened: false, searchPattern: '' });\n\n if (this.props.onClose) {\n this.props.onClose();\n }\n }\n };\n\n /**\n * @public\n */\n public focus = () => {\n if (this.buttonElement && this.buttonElement.focus) {\n this.buttonElement.focus();\n }\n };\n\n private getMenuRenderer() {\n if (this.props.disabled) {\n return null;\n }\n\n if (this.isMobileLayout) {\n return this.renderMobileMenu();\n }\n\n if (this.state.opened) {\n return this.renderMenu();\n }\n\n return null;\n }\n\n private renderMain() {\n const buttonParams = this.getDefaultButtonParams();\n const dataTid = this.getProps()['data-tid'] ?? SelectDataTids.root;\n const button = (\n <ThemeContext.Provider value={getSelectTheme(this.theme, this.props)}>\n {this.getButton(buttonParams)}\n </ThemeContext.Provider>\n );\n\n const isMobile = this.isMobileLayout;\n\n const style = {\n width: this.props.width,\n maxWidth: this.props.maxWidth || undefined,\n };\n\n const root = (\n <span\n data-tid={dataTid}\n className={cx({ [styles.root()]: true, [styles.rootMobile(this.theme)]: isMobile })}\n style={style}\n >\n {button}\n {this.getMenuRenderer()}\n </span>\n );\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <RenderLayer\n onClickOutside={this.close}\n onFocusOutside={this.close}\n active={isMobile ? false : this.state.opened}\n >\n {root}\n </RenderLayer>\n </CommonWrapper>\n );\n }\n\n private getDefaultButtonParams = (): ButtonParams => {\n const { label, isPlaceholder } = this.renderLabel();\n\n const buttonParams: ButtonParams = {\n opened: this.state.opened,\n label,\n isPlaceholder,\n onClick: this.toggle,\n onKeyDown: this.handleKey,\n size: this.getProps().size,\n disabled: this.getProps().disabled,\n };\n\n return buttonParams;\n };\n\n private renderLabel() {\n const value = this.getValue();\n const item = this.getItemByValue(value);\n\n if (isNonNullable(value)) {\n return {\n label: this.getProps().renderValue(value, item),\n isPlaceholder: false,\n };\n }\n\n return {\n label: <span>{this.props.placeholder || this.locale?.placeholder}</span>,\n isPlaceholder: true,\n };\n }\n\n private getLeftIconClass(size: SizeProp | undefined) {\n if (this.getProps().use === 'link') {\n return styles.leftIconLink(this.theme);\n }\n\n switch (size) {\n case 'large':\n return styles.leftIconLarge(this.theme);\n case 'medium':\n return styles.leftIconMedium(this.theme);\n case 'small':\n default:\n return styles.leftIconSmall(this.theme);\n }\n }\n\n private renderDefaultButton(params: ButtonParams) {\n const buttonProps: ButtonProps = {\n ...filterProps(this.props, PASS_BUTTON_PROPS),\n align: 'left' as React.CSSProperties['textAlign'],\n disabled: this.props.disabled,\n width: '100%',\n onClick: params.onClick,\n onKeyDown: params.onKeyDown,\n active: params.opened,\n size: params.size,\n };\n const use = this.getProps().use;\n\n const labelProps = {\n 'data-tid': SelectDataTids.label,\n className: cx({\n [styles.label()]: use !== 'link',\n [styles.placeholder(this.theme)]: params.isPlaceholder,\n [styles.customUsePlaceholder()]: params.isPlaceholder && use !== 'default',\n [styles.placeholderDisabled(this.theme)]: params.isPlaceholder && this.props.disabled,\n }),\n style: {\n paddingRight: this.getSelectIconGap(),\n },\n };\n\n const useIsCustom = use !== 'default';\n\n const icon = <ArrowDownIcon size={this.props.size} />;\n\n return (\n <Button {...buttonProps}>\n <div className={cx(styles.selectButtonContainer(), { [linkStyles.root(this.theme)]: use === 'link' })}>\n {this.props._icon && <div className={this.getLeftIconClass(this.props.size)}>{this.props._icon}</div>}\n <span {...labelProps}>{params.label}</span>\n\n <div\n className={cx(styles.arrowWrap(this.theme), {\n [styles.arrowDisabled(this.theme)]: this.props.disabled,\n [styles.customUseArrow()]: useIsCustom,\n })}\n >\n {icon}\n </div>\n </div>\n </Button>\n );\n }\n\n private getSelectIconGap(): number {\n const getArrowPadding = () => {\n switch (this.props.size) {\n case 'large':\n return this.theme.selectIconGapLarge;\n case 'medium':\n return this.theme.selectIconGapMedium;\n case 'small':\n default:\n return this.theme.selectIconGapSmall;\n }\n };\n const arrowLeftPadding = parseFloat(getArrowPadding()) || 0;\n\n return arrowLeftPadding;\n }\n\n private renderMenu(): React.ReactNode {\n const search = this.props.search ? this.getSearch() : null;\n\n const value = this.getValue();\n const { menuWidth, menuPos, menuAlign, positions } = this.getProps();\n\n return (\n <Popup\n opened\n hasShadow\n id={this.menuId}\n data-tid={SelectDataTids.menu}\n positions={positions ?? getMenuPositions(menuPos, menuAlign)}\n anchorElement={this.popupGetParent()}\n priority={ZIndex.priorities.PopupMenu}\n disablePortal={this.props.disablePortal}\n margin={parseInt(this.theme.menuOffsetY) - 1}\n width={menuWidth}\n minWidth={menuWidth === undefined ? '100%' : undefined}\n popupOffset={this.props.menuOffset}\n >\n <Menu\n hasMargin={false}\n ref={this.refMenu}\n onItemClick={this.close}\n maxHeight={this.props.maxMenuHeight}\n align={menuAlign}\n >\n {search}\n {this.getMenuItems(value)}\n </Menu>\n </Popup>\n );\n }\n\n private getSearch = () => {\n return (\n <div className={styles.search()} onKeyDown={this.handleKey}>\n <Input ref={this.debouncedFocusInput} onValueChange={this.handleSearch} width=\"100%\" />\n </div>\n );\n };\n\n private renderMobileMenu(): React.ReactNode {\n const search = this.props.search ? this.getMobileSearch() : null;\n const value = this.getValue();\n\n return (\n <MobilePopup\n headerChildComponent={search}\n caption={this.props.mobileMenuHeaderText}\n onCloseRequest={this.close}\n opened={this.state.opened}\n >\n <Menu onItemClick={this.close} disableScrollContainer maxHeight={'auto'}>\n {this.getMenuItems(value)}\n </Menu>\n </MobilePopup>\n );\n }\n\n private getMobileSearch = () => {\n return (\n <Input\n autoFocus\n value={this.state.searchPattern}\n ref={this.debouncedFocusInput}\n onValueChange={this.handleSearch}\n width=\"100%\"\n />\n );\n };\n\n private getMenuItems = (value: Nullable<TValue>) => {\n const isMobile = this.isMobileLayout;\n const size = this.props.size;\n\n return this.mapItems(\n (iValue: TValue, item: TItem | (() => React.ReactNode), i: number, comment: Nullable<React.ReactNode>) => {\n if (isFunction(item)) {\n const element = item();\n\n if (React.isValidElement(element)) {\n return React.cloneElement(element, { key: i, isMobile, size } as MenuItemProps);\n }\n\n return null;\n }\n\n if (React.isValidElement(item)) {\n if (isReactUINode('MenuItem', item)) {\n return React.cloneElement(item, { key: i, isMobile, size } as MenuItemProps);\n }\n if (isReactUINode('MenuHeader', item)) {\n return React.cloneElement(item, { size } as MenuHeaderProps);\n }\n return React.cloneElement(item, { key: i });\n }\n\n return (\n <MenuItem\n key={i}\n state={this.areValuesEqual(iValue, value) ? 'selected' : null}\n onClick={this.select.bind(this, iValue)}\n comment={comment}\n isMobile={isMobile}\n size={this.props.size}\n >\n {this.getProps().renderItem(iValue, item)}\n </MenuItem>\n );\n },\n );\n };\n\n private popupGetParent = () => {\n return getRootNode(this);\n };\n\n // fix cases when an Input is rendered in portal\n // https://github.com/skbkontur/retail-ui/issues/1995\n private focusInput = (input: Input) => input?.focus();\n private debouncedFocusInput = debounce(this.focusInput);\n\n private refMenu = (menu: Menu) => {\n this.menu = menu;\n };\n\n private toggle = () => {\n if (this.state.opened) {\n this.close();\n } else {\n this.open();\n }\n };\n\n private handleKey = (e: React.KeyboardEvent<HTMLElement>) => {\n if (!this.state.opened) {\n if (isKeySpace(e) || isKeyArrowVertical(e)) {\n e.preventDefault();\n this.open();\n }\n } else {\n switch (true) {\n case isKeyEscape(e):\n this.focus();\n this.close();\n break;\n case isKeyArrowUp(e):\n e.preventDefault();\n if (this.menu) {\n this.menu.up();\n }\n break;\n case isKeyArrowDown(e):\n e.preventDefault();\n if (this.menu) {\n this.menu.down();\n }\n break;\n case isKeyEnter(e):\n e.preventDefault(); // To prevent form submission.\n if (this.menu) {\n this.menu.enter(e);\n }\n break;\n }\n }\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n };\n\n private handleSearch = (value: string) => {\n this.setState({ searchPattern: value });\n this.menu?.highlightItem(0);\n };\n\n private select(value: TValue) {\n this.focus();\n this.setState({ opened: false, value });\n\n if (!this.areValuesEqual(this.getValue(), value)) {\n this.props.onValueChange?.(value);\n }\n }\n\n private getValue() {\n if (this.props.value !== undefined) {\n return this.props.value;\n }\n return this.state.value;\n }\n\n private mapItems(fn: (value: TValue, item: TItem, index: number, comment?: string) => React.ReactNode) {\n const { items } = this.props;\n if (!items) {\n return [];\n }\n const pattern = this.state.searchPattern && this.state.searchPattern.toLowerCase();\n\n const result: React.ReactNode[] = [];\n let index = 0;\n for (const entry of items) {\n const [value, item, comment] = normalizeEntry(entry as TItem);\n\n if (!pattern || this.getProps().filterItem(value, item, pattern)) {\n result.push(fn(value, item, index, comment));\n ++index;\n }\n }\n\n return result;\n }\n\n private getItemByValue(value?: Nullable<TValue>) {\n if (value === null || value === undefined) {\n return null;\n }\n\n const items = this.props.items || [];\n\n for (const entry of items) {\n const [itemValue, item] = normalizeEntry(entry);\n\n if (this.areValuesEqual(itemValue, value)) {\n return item;\n }\n }\n return null;\n }\n\n private areValuesEqual(value1: Nullable<TValue>, value2: Nullable<TValue>) {\n return isNonNullable(value1) && isNonNullable(value2) && this.getProps().areValuesEqual(value1, value2);\n }\n\n private buttonRef = (element: FocusableReactElement | null) => {\n this.buttonElement = element;\n };\n\n private getButton = (buttonParams: ButtonParams) => {\n const button = this.props._renderButton\n ? this.props._renderButton(buttonParams)\n : this.renderDefaultButton(buttonParams);\n\n const buttonElement = React.Children.only(button);\n\n return React.isValidElement(buttonElement)\n ? React.cloneElement(buttonElement as React.ReactElement, {\n ref: this.buttonRef,\n onFocus: this.props.onFocus,\n onBlur: this.props.onBlur,\n size: this.props.size,\n 'aria-describedby': this.props['aria-describedby'],\n 'aria-expanded': this.state.opened ? 'true' : 'false',\n 'aria-controls': this.menuId,\n 'aria-label': (buttonElement as React.ReactElement).props['aria-label'] ?? this.props['aria-label'],\n })\n : buttonElement;\n };\n}\n\nfunction renderValue<TValue, TItem>(value: TValue, item: Nullable<TItem>) {\n return item;\n}\n\nfunction renderItem<TValue, TItem>(value: TValue, item?: TItem) {\n return item;\n}\n\nfunction areValuesEqual<TValue>(value1: TValue, value2: TValue) {\n return value1 === value2;\n}\n\nfunction normalizeEntry(entry: any) {\n if (Array.isArray(entry)) {\n return entry;\n }\n\n return [entry, entry, undefined];\n}\n\nconst getTextFromItem = (item: any): string => {\n if (typeof item === 'string') {\n return item;\n }\n\n if (isFunction(item)) {\n return getTextFromItem(item());\n }\n\n if (React.isValidElement(item)) {\n return reactGetTextContent(item);\n }\n\n if (typeof item === 'number') {\n return item.toString(10);\n }\n\n return '';\n};\n\nfunction filterItem<TValue>(value: TValue, item: any, pattern: string) {\n if (item === Select.SEP) {\n return false;\n }\n\n const itemText = getTextFromItem(item);\n\n if (!itemText) {\n return false;\n }\n\n return itemText.toLowerCase().indexOf(pattern) !== -1;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -5,6 +5,7 @@ import type { Nullable } from '../../typings/utility-types';
|
|
|
5
5
|
import type { Theme, ThemeIn } from '../../lib/theming/Theme';
|
|
6
6
|
import type { CommonProps } from '../../internal/CommonWrapper';
|
|
7
7
|
import type { SizeProp } from '../../lib/types/props';
|
|
8
|
+
import { type PopupPositionsType } from '../../internal/Popup';
|
|
8
9
|
import { Item } from './Item';
|
|
9
10
|
export * from './tids';
|
|
10
11
|
export interface ButtonParams extends Pick<AriaAttributes, 'aria-describedby' | 'aria-controls' | 'aria-label' | 'aria-expanded'> {
|
|
@@ -71,6 +72,8 @@ export interface SelectProps<TValue, TItem> extends CommonProps, Pick<AriaAttrib
|
|
|
71
72
|
maxMenuHeight?: number;
|
|
72
73
|
/** Задает максимальную ширину. */
|
|
73
74
|
maxWidth?: React.CSSProperties['maxWidth'];
|
|
75
|
+
/** Задает позиции выпадающего меню. */
|
|
76
|
+
positions?: PopupPositionsType[];
|
|
74
77
|
/** Задает текущую позицию выпадающего окна вручную. */
|
|
75
78
|
menuPos?: 'top' | 'bottom' | 'middle';
|
|
76
79
|
/** Задает выравнивание меню. */
|
|
@@ -80,9 +80,13 @@ kind('Toggle', () => {
|
|
|
80
80
|
.actions({
|
|
81
81
|
bridge: true,
|
|
82
82
|
})
|
|
83
|
-
.
|
|
83
|
+
.move({
|
|
84
|
+
origin: context.webdriver.findElement({ css: `[data-tid="${ToggleDataTids.root}"]` }),
|
|
85
|
+
})
|
|
86
|
+
.pause(2000)
|
|
87
|
+
.click()
|
|
84
88
|
.perform();
|
|
85
|
-
await delay(
|
|
89
|
+
await delay(2000);
|
|
86
90
|
await context.matchImage(await context.takeScreenshot(), 'clicked');
|
|
87
91
|
});
|
|
88
92
|
});
|
|
@@ -30,6 +30,7 @@ export var DateSelectDataTids = {
|
|
|
30
30
|
menuItem: 'DateSelect__menuItem',
|
|
31
31
|
menu: 'DateSelect__menu'
|
|
32
32
|
};
|
|
33
|
+
var DATE_SELECT_POSITIONS = ['middle left', 'middle right', 'bottom left', 'top left', 'bottom right', 'top right'];
|
|
33
34
|
export var DateSelect = (_dec = locale('Calendar', DatePickerLocaleHelper), responsiveLayout(_class = _dec(_class = (_DateSelect = /*#__PURE__*/function (_React$PureComponent) {
|
|
34
35
|
function DateSelect() {
|
|
35
36
|
var _this;
|
|
@@ -131,6 +132,7 @@ export var DateSelect = (_dec = locale('Calendar', DatePickerLocaleHelper), resp
|
|
|
131
132
|
disabled: disabled,
|
|
132
133
|
_renderButton: this.renderButton,
|
|
133
134
|
menuPos: "middle",
|
|
135
|
+
positions: DATE_SELECT_POSITIONS,
|
|
134
136
|
renderValue: this.getItem,
|
|
135
137
|
items: this.getItems(),
|
|
136
138
|
menuOffset: parseInt(this.theme.menuPaddingX) + parseInt(this.theme.menuItemPaddingXSmall),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","createRef","PropTypes","responsiveLayout","getRandomID","isNonNullable","DatePickerLocaleHelper","locale","ThemeContext","cx","createPropsGetter","Select","MenuItem","ArrowCollapseCVOpenIcon16Regular","globalClasses","styles","defaultMinMonth","defaultMaxMonth","defaultMinYear","defaultMaxYear","months","range","years","start","end","Array","fill","map","_","index","DateSelectDataTids","caption","menuItem","menu","DateSelect","_dec","_class","_DateSelect","_React$PureComponent","_this","_len","arguments","length","args","_key","call","apply","concat","getProps","defaultProps","selectRef","menuId","renderButton","params","_this$props","props","value","disabled","width","isInteractiveElement","Tag","rootProps","className","root","theme","style","onClick","undefined","opened","selectChosenAriaLabel","type","selectYearAriaLabel","selectMonthAriaLabel","getItem","createElement","arrow","color","getItems","_this$getProps","onValueChange","options","isYearType","option","isSelected","isOptionDisabled","scrollIntoView","state","key","_this$locale$months","_inheritsLoose","_proto","prototype","render","_this2","Consumer","renderMain","close","_this$selectRef$curre","current","_this$getProps2","btnBorderRadiusSmall","menuItemBorderRadius","use","ref","_renderButton","menuPos","renderValue","items","menuOffset","parseInt","menuPaddingX","menuItemPaddingXSmall","_this$getProps3","minValue","maxValue","_createClass","get","PureComponent","__KONTUR_REACT_UI__","displayName","propTypes","bool","string","number","isRequired","oneOfType","func"],"sources":["DateSelect.tsx"],"sourcesContent":["import React, { createRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { getRandomID, isNonNullable } from '../../lib/utils';\nimport type { DatePickerLocale } from '../../components/DatePicker/locale';\nimport { DatePickerLocaleHelper } from '../../components/DatePicker/locale';\nimport { locale } from '../../lib/locale/decorators';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { cx } from '../../lib/theming/Emotion';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport type { ButtonParams } from '../../components/Select';\nimport { Select } from '../../components/Select';\nimport { MenuItem } from '../../components/MenuItem';\nimport { ArrowCollapseCVOpenIcon16Regular } from '../icons2022/ArrowCollapseCVOpenIcon/ArrowCollapseCVOpenIcon16Regular';\n\nimport { globalClasses, styles } from './DateSelect.styles';\n\nconst defaultMinMonth = 0;\nconst defaultMaxMonth = 11;\nconst defaultMinYear = 1900;\nconst defaultMaxYear = 2099;\nconst months = range(defaultMinMonth, defaultMaxMonth);\nconst years = range(defaultMinYear, defaultMaxYear);\n\nfunction range(start: number, end: number) {\n return Array(end - start + 1)\n .fill(null)\n .map((_, index) => start + index);\n}\n\nexport interface DateSelectProps {\n disabled?: boolean;\n onValueChange: (value: number) => void;\n type?: 'month' | 'year';\n value: number;\n width?: number | string;\n minValue?: number;\n maxValue?: number;\n}\n\nexport const DateSelectDataTids = {\n caption: 'DateSelect__caption',\n menuItem: 'DateSelect__menuItem',\n menu: 'DateSelect__menu',\n} as const;\n\ntype DefaultProps = Required<Pick<DateSelectProps, 'type' | 'width'>>;\n\n@responsiveLayout\n@locale('Calendar', DatePickerLocaleHelper)\nexport class DateSelect extends React.PureComponent<DateSelectProps> {\n public static __KONTUR_REACT_UI__ = 'DateSelect';\n public static displayName = 'DateSelect';\n\n public static propTypes = {\n disabled: PropTypes.bool,\n\n type: PropTypes.string,\n\n value: PropTypes.number.isRequired,\n\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n onValueChange: PropTypes.func,\n\n minValue: PropTypes.number,\n\n maxValue: PropTypes.number,\n };\n\n public static defaultProps: DefaultProps = {\n type: 'year',\n width: 'auto',\n };\n\n private getProps = createPropsGetter(DateSelect.defaultProps);\n\n private get isYearType() {\n return this.getProps().type === 'year';\n }\n\n private theme!: Theme;\n private readonly locale!: DatePickerLocale;\n private readonly selectRef = createRef<Select<number, number>>();\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private menuId = DateSelectDataTids.menu + getRandomID();\n\n private renderButton = (params: ButtonParams) => {\n const { value, disabled } = this.props;\n const width = this.getProps().width;\n const isInteractiveElement = !disabled;\n const Tag = isInteractiveElement ? 'button' : 'span';\n const rootProps = {\n className: cx(styles.root(this.theme), disabled && styles.disabled()),\n style: { width },\n onClick: disabled ? undefined : params.onClick,\n 'aria-expanded': isInteractiveElement ? params.opened : undefined,\n 'aria-controls': !disabled ? this.menuId : undefined,\n 'aria-label': isInteractiveElement\n ? `${this.locale.selectChosenAriaLabel} ${\n this.getProps().type === 'year' ? this.locale.selectYearAriaLabel : this.locale.selectMonthAriaLabel\n } ${this.getItem(value)}`\n : undefined,\n };\n\n return (\n <Tag {...rootProps}>\n <div data-tid={DateSelectDataTids.caption} className={styles.caption()}>\n {this.getItem(value)}\n </div>\n {isInteractiveElement && (\n <ArrowCollapseCVOpenIcon16Regular className={cx(globalClasses.arrow)} color=\"#ADADAD\" />\n )}\n </Tag>\n );\n };\n\n public close() {\n this.selectRef.current?.close();\n }\n\n private renderMain() {\n const { value, disabled, onValueChange } = this.getProps();\n const theme = {\n btnBorderRadiusSmall: this.theme.menuItemBorderRadius,\n };\n\n return (\n <Select\n use=\"text\"\n value={value}\n ref={this.selectRef}\n theme={theme}\n disabled={disabled}\n _renderButton={this.renderButton}\n menuPos=\"middle\"\n renderValue={this.getItem}\n items={this.getItems()}\n menuOffset={parseInt(this.theme.menuPaddingX) + parseInt(this.theme.menuItemPaddingXSmall)}\n onValueChange={onValueChange}\n aria-label={`${this.locale.selectChosenAriaLabel} ${\n this.isYearType ? this.locale.selectYearAriaLabel : this.locale.selectMonthAriaLabel\n } ${this.getItem(value)}`}\n />\n );\n }\n\n private isOptionDisabled(option: number) {\n const { minValue, maxValue } = this.getProps();\n\n if (isNonNullable(maxValue) && isNonNullable(minValue)) {\n return option > maxValue || option < minValue;\n }\n\n if (isNonNullable(minValue)) {\n return option < minValue;\n }\n\n if (isNonNullable(maxValue)) {\n return option > maxValue;\n }\n }\n\n private getItems = () => {\n const { value, onValueChange } = this.getProps();\n const options = this.isYearType ? years : months;\n\n return options.map((option) => {\n const isSelected = option === value;\n const isOptionDisabled = this.isOptionDisabled(option);\n\n return (\n <MenuItem\n scrollIntoView={isSelected}\n disabled={isOptionDisabled}\n state={isSelected ? 'selected' : null}\n onClick={() => onValueChange(option)}\n aria-label={`Выбрать ${this.isYearType ? 'год' : 'месяц'} ${this.getItem(option)}`}\n data-tid={DateSelectDataTids.menuItem}\n data-prop-disabled={isOptionDisabled}\n key={option}\n >\n {this.getItem(option)}\n </MenuItem>\n );\n });\n };\n\n private getItem = (value: number) => {\n if (this.isYearType) {\n return value;\n }\n\n return this.locale.months?.[value];\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","createRef","PropTypes","responsiveLayout","getRandomID","isNonNullable","DatePickerLocaleHelper","locale","ThemeContext","cx","createPropsGetter","Select","MenuItem","ArrowCollapseCVOpenIcon16Regular","globalClasses","styles","defaultMinMonth","defaultMaxMonth","defaultMinYear","defaultMaxYear","months","range","years","start","end","Array","fill","map","_","index","DateSelectDataTids","caption","menuItem","menu","DATE_SELECT_POSITIONS","DateSelect","_dec","_class","_DateSelect","_React$PureComponent","_this","_len","arguments","length","args","_key","call","apply","concat","getProps","defaultProps","selectRef","menuId","renderButton","params","_this$props","props","value","disabled","width","isInteractiveElement","Tag","rootProps","className","root","theme","style","onClick","undefined","opened","selectChosenAriaLabel","type","selectYearAriaLabel","selectMonthAriaLabel","getItem","createElement","arrow","color","getItems","_this$getProps","onValueChange","options","isYearType","option","isSelected","isOptionDisabled","scrollIntoView","state","key","_this$locale$months","_inheritsLoose","_proto","prototype","render","_this2","Consumer","renderMain","close","_this$selectRef$curre","current","_this$getProps2","btnBorderRadiusSmall","menuItemBorderRadius","use","ref","_renderButton","menuPos","positions","renderValue","items","menuOffset","parseInt","menuPaddingX","menuItemPaddingXSmall","_this$getProps3","minValue","maxValue","_createClass","get","PureComponent","__KONTUR_REACT_UI__","displayName","propTypes","bool","string","number","isRequired","oneOfType","func"],"sources":["DateSelect.tsx"],"sourcesContent":["import React, { createRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { getRandomID, isNonNullable } from '../../lib/utils';\nimport type { DatePickerLocale } from '../../components/DatePicker/locale';\nimport { DatePickerLocaleHelper } from '../../components/DatePicker/locale';\nimport { locale } from '../../lib/locale/decorators';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { cx } from '../../lib/theming/Emotion';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport type { ButtonParams } from '../../components/Select';\nimport { Select } from '../../components/Select';\nimport { MenuItem } from '../../components/MenuItem';\nimport { ArrowCollapseCVOpenIcon16Regular } from '../icons2022/ArrowCollapseCVOpenIcon/ArrowCollapseCVOpenIcon16Regular';\nimport type { PopupPositionsType } from '../../internal/Popup/types';\n\nimport { globalClasses, styles } from './DateSelect.styles';\n\nconst defaultMinMonth = 0;\nconst defaultMaxMonth = 11;\nconst defaultMinYear = 1900;\nconst defaultMaxYear = 2099;\nconst months = range(defaultMinMonth, defaultMaxMonth);\nconst years = range(defaultMinYear, defaultMaxYear);\n\nfunction range(start: number, end: number) {\n return Array(end - start + 1)\n .fill(null)\n .map((_, index) => start + index);\n}\n\nexport interface DateSelectProps {\n disabled?: boolean;\n onValueChange: (value: number) => void;\n type?: 'month' | 'year';\n value: number;\n width?: number | string;\n minValue?: number;\n maxValue?: number;\n}\n\nexport const DateSelectDataTids = {\n caption: 'DateSelect__caption',\n menuItem: 'DateSelect__menuItem',\n menu: 'DateSelect__menu',\n} as const;\n\ntype DefaultProps = Required<Pick<DateSelectProps, 'type' | 'width'>>;\n\nconst DATE_SELECT_POSITIONS: PopupPositionsType[] = [\n 'middle left',\n 'middle right',\n 'bottom left',\n 'top left',\n 'bottom right',\n 'top right',\n];\n\n@responsiveLayout\n@locale('Calendar', DatePickerLocaleHelper)\nexport class DateSelect extends React.PureComponent<DateSelectProps> {\n public static __KONTUR_REACT_UI__ = 'DateSelect';\n public static displayName = 'DateSelect';\n\n public static propTypes = {\n disabled: PropTypes.bool,\n\n type: PropTypes.string,\n\n value: PropTypes.number.isRequired,\n\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n onValueChange: PropTypes.func,\n\n minValue: PropTypes.number,\n\n maxValue: PropTypes.number,\n };\n\n public static defaultProps: DefaultProps = {\n type: 'year',\n width: 'auto',\n };\n\n private getProps = createPropsGetter(DateSelect.defaultProps);\n\n private get isYearType() {\n return this.getProps().type === 'year';\n }\n\n private theme!: Theme;\n private readonly locale!: DatePickerLocale;\n private readonly selectRef = createRef<Select<number, number>>();\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private menuId = DateSelectDataTids.menu + getRandomID();\n\n private renderButton = (params: ButtonParams) => {\n const { value, disabled } = this.props;\n const width = this.getProps().width;\n const isInteractiveElement = !disabled;\n const Tag = isInteractiveElement ? 'button' : 'span';\n const rootProps = {\n className: cx(styles.root(this.theme), disabled && styles.disabled()),\n style: { width },\n onClick: disabled ? undefined : params.onClick,\n 'aria-expanded': isInteractiveElement ? params.opened : undefined,\n 'aria-controls': !disabled ? this.menuId : undefined,\n 'aria-label': isInteractiveElement\n ? `${this.locale.selectChosenAriaLabel} ${\n this.getProps().type === 'year' ? this.locale.selectYearAriaLabel : this.locale.selectMonthAriaLabel\n } ${this.getItem(value)}`\n : undefined,\n };\n\n return (\n <Tag {...rootProps}>\n <div data-tid={DateSelectDataTids.caption} className={styles.caption()}>\n {this.getItem(value)}\n </div>\n {isInteractiveElement && (\n <ArrowCollapseCVOpenIcon16Regular className={cx(globalClasses.arrow)} color=\"#ADADAD\" />\n )}\n </Tag>\n );\n };\n\n public close() {\n this.selectRef.current?.close();\n }\n\n private renderMain() {\n const { value, disabled, onValueChange } = this.getProps();\n const theme = {\n btnBorderRadiusSmall: this.theme.menuItemBorderRadius,\n };\n\n return (\n <Select\n use=\"text\"\n value={value}\n ref={this.selectRef}\n theme={theme}\n disabled={disabled}\n _renderButton={this.renderButton}\n menuPos=\"middle\"\n positions={DATE_SELECT_POSITIONS}\n renderValue={this.getItem}\n items={this.getItems()}\n menuOffset={parseInt(this.theme.menuPaddingX) + parseInt(this.theme.menuItemPaddingXSmall)}\n onValueChange={onValueChange}\n aria-label={`${this.locale.selectChosenAriaLabel} ${\n this.isYearType ? this.locale.selectYearAriaLabel : this.locale.selectMonthAriaLabel\n } ${this.getItem(value)}`}\n />\n );\n }\n\n private isOptionDisabled(option: number) {\n const { minValue, maxValue } = this.getProps();\n\n if (isNonNullable(maxValue) && isNonNullable(minValue)) {\n return option > maxValue || option < minValue;\n }\n\n if (isNonNullable(minValue)) {\n return option < minValue;\n }\n\n if (isNonNullable(maxValue)) {\n return option > maxValue;\n }\n }\n\n private getItems = () => {\n const { value, onValueChange } = this.getProps();\n const options = this.isYearType ? years : months;\n\n return options.map((option) => {\n const isSelected = option === value;\n const isOptionDisabled = this.isOptionDisabled(option);\n\n return (\n <MenuItem\n scrollIntoView={isSelected}\n disabled={isOptionDisabled}\n state={isSelected ? 'selected' : null}\n onClick={() => onValueChange(option)}\n aria-label={`Выбрать ${this.isYearType ? 'год' : 'месяц'} ${this.getItem(option)}`}\n data-tid={DateSelectDataTids.menuItem}\n data-prop-disabled={isOptionDisabled}\n key={option}\n >\n {this.getItem(option)}\n </MenuItem>\n );\n });\n };\n\n private getItem = (value: number) => {\n if (this.isYearType) {\n return value;\n }\n\n return this.locale.months?.[value];\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,9 +1,38 @@
|
|
|
1
|
+
var MENU_POSITIONS = {
|
|
2
|
+
TOP: 'top',
|
|
3
|
+
MIDDLE: 'middle',
|
|
4
|
+
BOTTOM: 'bottom'
|
|
5
|
+
};
|
|
6
|
+
var MENU_ALIGNMENTS = {
|
|
7
|
+
LEFT: 'left',
|
|
8
|
+
RIGHT: 'right'
|
|
9
|
+
};
|
|
10
|
+
var POPUP_POSITIONS = {
|
|
11
|
+
TOP_LEFT: 'top left',
|
|
12
|
+
TOP_RIGHT: 'top right',
|
|
13
|
+
BOTTOM_LEFT: 'bottom left',
|
|
14
|
+
BOTTOM_RIGHT: 'bottom right',
|
|
15
|
+
MIDDLE_LEFT: 'middle left',
|
|
16
|
+
MIDDLE_RIGHT: 'middle right'
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Генерирует массив позиций попапа на основе позиции и выравнивания меню
|
|
21
|
+
*
|
|
22
|
+
* @param menuPos - Позиция меню ('top', 'middle', 'bottom')
|
|
23
|
+
* @param menuAlign - Выравнивание меню ('left', 'right')
|
|
24
|
+
* @returns Массив позиций попапа в порядке приоритета
|
|
25
|
+
*
|
|
26
|
+
*/
|
|
1
27
|
export function getMenuPositions(menuPos, menuAlign) {
|
|
2
|
-
if (menuAlign === undefined) {
|
|
3
|
-
return
|
|
28
|
+
if (menuPos === undefined && menuAlign === undefined) {
|
|
29
|
+
return [POPUP_POSITIONS.BOTTOM_LEFT, POPUP_POSITIONS.TOP_LEFT, POPUP_POSITIONS.BOTTOM_RIGHT, POPUP_POSITIONS.TOP_RIGHT];
|
|
4
30
|
}
|
|
5
|
-
if (menuPos === undefined) {
|
|
6
|
-
return ["
|
|
31
|
+
if (menuPos !== undefined && menuAlign === undefined) {
|
|
32
|
+
return [menuPos + " " + MENU_ALIGNMENTS.LEFT, menuPos + " " + MENU_ALIGNMENTS.RIGHT];
|
|
33
|
+
}
|
|
34
|
+
if (menuPos === undefined && menuAlign !== undefined) {
|
|
35
|
+
return [MENU_POSITIONS.BOTTOM + " " + menuAlign, MENU_POSITIONS.TOP + " " + menuAlign];
|
|
7
36
|
}
|
|
8
37
|
return [menuPos + " " + menuAlign];
|
|
9
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getMenuPositions","menuPos","menuAlign","undefined"],"sources":["getMenuPositions.ts"],"sourcesContent":["import type { PopupPositionsType } from '../internal/Popup';\n\
|
|
1
|
+
{"version":3,"names":["MENU_POSITIONS","TOP","MIDDLE","BOTTOM","MENU_ALIGNMENTS","LEFT","RIGHT","POPUP_POSITIONS","TOP_LEFT","TOP_RIGHT","BOTTOM_LEFT","BOTTOM_RIGHT","MIDDLE_LEFT","MIDDLE_RIGHT","getMenuPositions","menuPos","menuAlign","undefined"],"sources":["getMenuPositions.ts"],"sourcesContent":["import type { PopupPositionsType } from '../internal/Popup';\n\nconst MENU_POSITIONS = {\n TOP: 'top',\n MIDDLE: 'middle',\n BOTTOM: 'bottom',\n} as const;\n\nconst MENU_ALIGNMENTS = {\n LEFT: 'left',\n RIGHT: 'right',\n} as const;\n\nconst POPUP_POSITIONS = {\n TOP_LEFT: 'top left',\n TOP_RIGHT: 'top right',\n BOTTOM_LEFT: 'bottom left',\n BOTTOM_RIGHT: 'bottom right',\n MIDDLE_LEFT: 'middle left',\n MIDDLE_RIGHT: 'middle right',\n} as const;\n\ntype MenuPosition = (typeof MENU_POSITIONS)[keyof typeof MENU_POSITIONS];\ntype MenuAlignment = (typeof MENU_ALIGNMENTS)[keyof typeof MENU_ALIGNMENTS];\n\n/**\n * Генерирует массив позиций попапа на основе позиции и выравнивания меню\n *\n * @param menuPos - Позиция меню ('top', 'middle', 'bottom')\n * @param menuAlign - Выравнивание меню ('left', 'right')\n * @returns Массив позиций попапа в порядке приоритета\n *\n */\nexport function getMenuPositions(menuPos?: MenuPosition, menuAlign?: MenuAlignment): PopupPositionsType[] {\n if (menuPos === undefined && menuAlign === undefined) {\n return [\n POPUP_POSITIONS.BOTTOM_LEFT,\n POPUP_POSITIONS.TOP_LEFT,\n POPUP_POSITIONS.BOTTOM_RIGHT,\n POPUP_POSITIONS.TOP_RIGHT,\n ];\n }\n\n if (menuPos !== undefined && menuAlign === undefined) {\n return [`${menuPos} ${MENU_ALIGNMENTS.LEFT}`, `${menuPos} ${MENU_ALIGNMENTS.RIGHT}`];\n }\n\n if (menuPos === undefined && menuAlign !== undefined) {\n return [`${MENU_POSITIONS.BOTTOM} ${menuAlign}`, `${MENU_POSITIONS.TOP} ${menuAlign}`];\n }\n\n return [`${menuPos} ${menuAlign}`];\n}\n"],"mappings":";;AAEA,IAAMA,cAAc,GAAG;EACrBC,GAAG,EAAE,KAAK;EACVC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE;AACV,CAAU;;AAEV,IAAMC,eAAe,GAAG;EACtBC,IAAI,EAAE,MAAM;EACZC,KAAK,EAAE;AACT,CAAU;;AAEV,IAAMC,eAAe,GAAG;EACtBC,QAAQ,EAAE,UAAU;EACpBC,SAAS,EAAE,WAAW;EACtBC,WAAW,EAAE,aAAa;EAC1BC,YAAY,EAAE,cAAc;EAC5BC,WAAW,EAAE,aAAa;EAC1BC,YAAY,EAAE;AAChB,CAAU;;;;;AAKV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAACC,OAAsB,EAAEC,SAAyB,EAAwB;EACxG,IAAID,OAAO,KAAKE,SAAS,IAAID,SAAS,KAAKC,SAAS,EAAE;IACpD,OAAO;IACLV,eAAe,CAACG,WAAW;IAC3BH,eAAe,CAACC,QAAQ;IACxBD,eAAe,CAACI,YAAY;IAC5BJ,eAAe,CAACE,SAAS,CAC1B;;EACH;;EAEA,IAAIM,OAAO,KAAKE,SAAS,IAAID,SAAS,KAAKC,SAAS,EAAE;IACpD,OAAO,CAAIF,OAAO,SAAIX,eAAe,CAACC,IAAI,EAAOU,OAAO,SAAIX,eAAe,CAACE,KAAK,CAAG;EACtF;;EAEA,IAAIS,OAAO,KAAKE,SAAS,IAAID,SAAS,KAAKC,SAAS,EAAE;IACpD,OAAO,CAAIjB,cAAc,CAACG,MAAM,SAAIa,SAAS,EAAOhB,cAAc,CAACC,GAAG,SAAIe,SAAS,CAAG;EACxF;;EAEA,OAAO,CAAID,OAAO,SAAIC,SAAS,CAAG;AACpC","ignoreList":[]}
|
|
@@ -1,2 +1,22 @@
|
|
|
1
1
|
import type { PopupPositionsType } from '../internal/Popup';
|
|
2
|
-
|
|
2
|
+
declare const MENU_POSITIONS: {
|
|
3
|
+
readonly TOP: "top";
|
|
4
|
+
readonly MIDDLE: "middle";
|
|
5
|
+
readonly BOTTOM: "bottom";
|
|
6
|
+
};
|
|
7
|
+
declare const MENU_ALIGNMENTS: {
|
|
8
|
+
readonly LEFT: "left";
|
|
9
|
+
readonly RIGHT: "right";
|
|
10
|
+
};
|
|
11
|
+
type MenuPosition = (typeof MENU_POSITIONS)[keyof typeof MENU_POSITIONS];
|
|
12
|
+
type MenuAlignment = (typeof MENU_ALIGNMENTS)[keyof typeof MENU_ALIGNMENTS];
|
|
13
|
+
/**
|
|
14
|
+
* Генерирует массив позиций попапа на основе позиции и выравнивания меню
|
|
15
|
+
*
|
|
16
|
+
* @param menuPos - Позиция меню ('top', 'middle', 'bottom')
|
|
17
|
+
* @param menuAlign - Выравнивание меню ('left', 'right')
|
|
18
|
+
* @returns Массив позиций попапа в порядке приоритета
|
|
19
|
+
*
|
|
20
|
+
*/
|
|
21
|
+
export declare function getMenuPositions(menuPos?: MenuPosition, menuAlign?: MenuAlignment): PopupPositionsType[];
|
|
22
|
+
export {};
|