@skbkontur/react-ui 6.0.3 → 6.0.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 +13 -0
- package/components/Gapped/Gapped.d.ts +5 -3
- package/components/Gapped/Gapped.js +3 -1
- package/components/Gapped/Gapped.js.map +1 -1
- package/components/Hint/Hint.d.ts +18 -23
- package/components/Hint/Hint.js +2 -6
- package/components/Hint/Hint.js.map +1 -1
- package/components/MenuItem/MenuItem.d.ts +1 -0
- package/components/MenuItem/MenuItem.js +6 -4
- package/components/MenuItem/MenuItem.js.map +1 -1
- package/components/MiniModal/MiniModal.d.ts +8 -2
- package/components/MiniModal/MiniModal.js +10 -4
- package/components/MiniModal/MiniModal.js.map +1 -1
- package/components/MiniModal/MiniModalBody.d.ts +1 -1
- package/components/MiniModal/MiniModalBody.js +1 -1
- package/components/MiniModal/MiniModalBody.js.map +1 -1
- package/components/MiniModal/MiniModalFooter.d.ts +1 -1
- package/components/MiniModal/MiniModalFooter.js +1 -1
- package/components/MiniModal/MiniModalFooter.js.map +1 -1
- package/components/MiniModal/MiniModalHeader.d.ts +1 -1
- package/components/MiniModal/MiniModalHeader.js +1 -1
- package/components/MiniModal/MiniModalHeader.js.map +1 -1
- package/components/MiniModal/MiniModalIndent.d.ts +2 -2
- package/components/MiniModal/MiniModalIndent.js +1 -1
- package/components/MiniModal/MiniModalIndent.js.map +1 -1
- package/components/Textarea/Textarea.js +1 -1
- package/components/Textarea/Textarea.js.map +1 -1
- package/components/Textarea/Textarea.mixins.d.ts +0 -1
- package/components/Textarea/Textarea.mixins.js +0 -3
- package/components/Textarea/Textarea.mixins.js.map +1 -1
- package/components/Textarea/Textarea.styles.d.ts +0 -3
- package/components/Textarea/Textarea.styles.js +5 -14
- package/components/Textarea/Textarea.styles.js.map +1 -1
- package/components/Textarea/TextareaCounter.d.ts +0 -2
- package/components/Textarea/TextareaCounter.js +11 -13
- package/components/Textarea/TextareaCounter.js.map +1 -1
- package/components/Tooltip/Tooltip.d.ts +32 -35
- package/components/Tooltip/Tooltip.js +7 -7
- package/components/Tooltip/Tooltip.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,19 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [6.0.4](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@6.0.3...@skbkontur/react-ui@6.0.4) (2026-05-07)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **menuItem:** listen size context ([50a92c7](https://github.com/skbkontur/retail-ui/commit/50a92c7c2f55bfe3bd8231d8bdb309f4be07f8eb))
|
|
12
|
+
* **MiniModal:** fix mini modal default width behavior ([8f42d41](https://github.com/skbkontur/retail-ui/commit/8f42d41f72d1788037f76a07401bb6dcea7b712a))
|
|
13
|
+
* **textarea:** position counter by computed paddings ([3f4dcfb](https://github.com/skbkontur/retail-ui/commit/3f4dcfbebb1be1bbf0de968c9770ad025f0c2fd5))
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
6
19
|
## [6.0.3](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@6.0.2...@skbkontur/react-ui@6.0.3) (2026-04-27)
|
|
7
20
|
|
|
8
21
|
|
|
@@ -2,9 +2,9 @@ import React from 'react';
|
|
|
2
2
|
import type { CommonProps } from '../../internal/CommonWrapper/types.js';
|
|
3
3
|
import type { TGetRootNode } from '../../lib/rootNode/rootNodeDecorator.js';
|
|
4
4
|
export interface GappedProps extends CommonProps {
|
|
5
|
-
/**
|
|
5
|
+
/** Расстояние между элементами в пикселях. */
|
|
6
6
|
gap?: number;
|
|
7
|
-
/**
|
|
7
|
+
/** Выравнивает элементы при вертикальном расположении по нужной линии: сверху, снизу, по базовой линии или посередине. */
|
|
8
8
|
verticalAlign?: 'top' | 'middle' | 'baseline' | 'bottom';
|
|
9
9
|
/** Располагает элементы по вертикали. */
|
|
10
10
|
vertical?: boolean;
|
|
@@ -19,7 +19,9 @@ export declare const GappedDataTids: {
|
|
|
19
19
|
};
|
|
20
20
|
type DefaultProps = Required<Pick<GappedProps, 'wrap' | 'vertical' | 'verticalAlign'>>;
|
|
21
21
|
/**
|
|
22
|
-
*
|
|
22
|
+
* Контейнер, с помощью которого можно располагать элементы горизонтально или вертикально с нужным расстоянием между элементами.
|
|
23
|
+
*
|
|
24
|
+
* По умолчанию располагает элементы горизонтально в одну строку. Расстояние между элементами указывается в пропе `gap`.
|
|
23
25
|
*/
|
|
24
26
|
export declare class Gapped extends React.Component<GappedProps> {
|
|
25
27
|
static __KONTUR_REACT_UI__: string;
|
|
@@ -40,7 +40,9 @@ export var GappedDataTids = {
|
|
|
40
40
|
horizontal: 'Gapped__horizontal',
|
|
41
41
|
};
|
|
42
42
|
/**
|
|
43
|
-
*
|
|
43
|
+
* Контейнер, с помощью которого можно располагать элементы горизонтально или вертикально с нужным расстоянием между элементами.
|
|
44
|
+
*
|
|
45
|
+
* По умолчанию располагает элементы горизонтально в одну строку. Расстояние между элементами указывается в пропе `gap`.
|
|
44
46
|
*/
|
|
45
47
|
var Gapped = /** @class */ (function (_super) {
|
|
46
48
|
__extends(Gapped, _super);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Gapped.js","sourceRoot":"","sources":["../../../components/Gapped/Gapped.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAEtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAmBnD,MAAM,CAAC,IAAM,cAAc,GAAG;IAC5B,QAAQ,EAAE,kBAAkB;IAC5B,UAAU,EAAE,oBAAoB;CACxB,CAAC;AAIX
|
|
1
|
+
{"version":3,"file":"Gapped.js","sourceRoot":"","sources":["../../../components/Gapped/Gapped.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport type { CommonProps } from '../../internal/CommonWrapper/types.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/rootNodeDecorator.js';\nimport { isNonNullable } from '../../lib/utils.js';\n\nexport interface GappedProps extends CommonProps {\n /** Расстояние между элементами в пикселях. */\n gap?: number;\n\n /** Выравнивает элементы при вертикальном расположении по нужной линии: сверху, снизу, по базовой линии или посередине. */\n verticalAlign?: 'top' | 'middle' | 'baseline' | 'bottom';\n\n /** Располагает элементы по вертикали. */\n vertical?: boolean;\n\n /** Переносит элементы на новую строку при горизонтальном расположении. */\n wrap?: boolean;\n\n /** @ignore */\n children: React.ReactNode;\n}\n\nexport const GappedDataTids = {\n vertical: 'Gapped__vertical',\n horizontal: 'Gapped__horizontal',\n} as const;\n\ntype DefaultProps = Required<Pick<GappedProps, 'wrap' | 'vertical' | 'verticalAlign'>>;\n\n/**\n * Контейнер, с помощью которого можно располагать элементы горизонтально или вертикально с нужным расстоянием между элементами.\n *\n * По умолчанию располагает элементы горизонтально в одну строку. Расстояние между элементами указывается в пропе `gap`.\n */\n@rootNode\nexport class Gapped extends React.Component<GappedProps> {\n public static __KONTUR_REACT_UI__ = 'Gapped';\n public static displayName = 'Gapped';\n\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public static defaultProps: DefaultProps = {\n wrap: false,\n vertical: false,\n verticalAlign: 'baseline',\n };\n\n private getProps = createPropsGetter(Gapped.defaultProps);\n\n public render(): React.JSX.Element {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.getProps().vertical ? this.renderVertical() : this.renderHorizontal()}\n </CommonWrapper>\n );\n }\n\n private getGapValue() {\n const { gap: propsGap } = this.props;\n if (isNonNullable(propsGap)) {\n return propsGap;\n }\n\n return 8;\n }\n\n private renderVertical() {\n const subsequentItemStyle: React.CSSProperties = {\n paddingTop: this.getGapValue(),\n };\n const children = React.Children.toArray(this.props.children)\n .filter(this.filterChildren)\n .map((child, index) => {\n const style = index === 0 ? undefined : subsequentItemStyle;\n return (\n <div style={style} key={index}>\n {child}\n </div>\n );\n });\n\n return <div data-tid={GappedDataTids.vertical}>{children}</div>;\n }\n\n private renderHorizontal() {\n const { children, verticalAlign } = this.props;\n const wrap = this.getProps().wrap;\n const gap = this.getGapValue();\n const itemStyle: React.CSSProperties = {\n display: 'inline-block',\n verticalAlign,\n ...(wrap ? { marginLeft: gap, marginTop: gap } : {}),\n };\n const rootStyle: React.CSSProperties = wrap ? { paddingTop: 1 } : {};\n const contStyle: React.CSSProperties = wrap ? { marginTop: -gap - 1, marginLeft: -gap } : { whiteSpace: 'nowrap' };\n\n return (\n <div data-tid={GappedDataTids.horizontal} style={rootStyle}>\n <div style={contStyle}>\n {React.Children.toArray(children)\n .filter(this.filterChildren)\n .map((child, index) => {\n const marginLeft = index === 0 ? undefined : gap;\n return (\n <span key={index} style={{ marginLeft, ...itemStyle }}>\n {child}\n </span>\n );\n })}\n </div>\n </div>\n );\n }\n\n private filterChildren(child: React.ReactNode): boolean {\n return Boolean(child) || typeof child === 'number';\n }\n}\n"]}
|
|
@@ -8,41 +8,36 @@ import type { Nullable } from '../../typings/utility-types.js';
|
|
|
8
8
|
export interface HintProps extends CommonProps {
|
|
9
9
|
/** @ignore */
|
|
10
10
|
children?: React.ReactNode;
|
|
11
|
-
/**
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
/** Задает максимальную ширину подсказки. */
|
|
11
|
+
/** Текст подсказки. */
|
|
12
|
+
text: React.ReactNode;
|
|
13
|
+
/** Максимальная ширина подсказки. */
|
|
15
14
|
maxWidth?: React.CSSProperties['maxWidth'];
|
|
16
|
-
/**
|
|
17
|
-
onMouseEnter?: (event: MouseEventType) => void;
|
|
18
|
-
/** Задает функцию, которая вызывается при уходе мышки с объекта (событие `onmouseleave`). */
|
|
19
|
-
onMouseLeave?: (event: MouseEventType) => void;
|
|
20
|
-
/** Открывает подсказку. Работает только при `manual=true`. */
|
|
21
|
-
opened?: boolean;
|
|
22
|
-
/** Задает приоритетное расположение подсказки относительно текста. */
|
|
15
|
+
/** Приоритетное расположение подсказки относительно текста. */
|
|
23
16
|
pos?: ShortPopupPositionsType | PopupPinnablePositionsType;
|
|
24
|
-
/**
|
|
25
|
-
text: React.ReactNode;
|
|
26
|
-
/** Задает список позиций, которые будет занимать хинт. Если положение хинта в определенной позиции будет выходить за край экрана, то будет выбрана следующая позиция. Обязательно должен включать позицию указанную в `pos`. */
|
|
17
|
+
/** Список позиций, которые может занимать подсказка. В списке обязательно должна быть позиция из пропа `pos`. */
|
|
27
18
|
allowedPositions?: PopupPinnablePositionsType[];
|
|
19
|
+
/** Переводит отображение подсказки в ручной режим, где состояние контролируется значением пропа `opened`. */
|
|
20
|
+
manual?: boolean;
|
|
21
|
+
/** Открывает подсказку. Работает только при `manual=true`. */
|
|
22
|
+
opened?: boolean;
|
|
28
23
|
/** Отключает анимацию. */
|
|
29
24
|
disableAnimations?: boolean;
|
|
30
|
-
/**
|
|
31
|
-
*
|
|
32
|
-
* _Примечание_: при
|
|
25
|
+
/** Оборачивает вложенные элементы в `<span />`.
|
|
26
|
+
*
|
|
27
|
+
* _Примечание_: при двух и более вложенных элементах обёртка будет добавлена автоматически. */
|
|
33
28
|
useWrapper?: boolean;
|
|
29
|
+
/** Вызывается при наведении курсора (событие `onmouseenter`). */
|
|
30
|
+
onMouseEnter?: (event: MouseEventType) => void;
|
|
31
|
+
/** Вызывается при уходе курсора с объекта (событие `onmouseleave`). */
|
|
32
|
+
onMouseLeave?: (event: MouseEventType) => void;
|
|
34
33
|
}
|
|
35
34
|
export interface HintState {
|
|
36
35
|
opened: boolean;
|
|
37
36
|
position: PopupPinnablePositionsType;
|
|
38
37
|
}
|
|
39
38
|
type DefaultProps = Required<Pick<HintProps, 'manual' | 'opened' | 'maxWidth' | 'disableAnimations' | 'useWrapper'>>;
|
|
40
|
-
/**
|
|
41
|
-
*
|
|
42
|
-
* По умолчанию отображается при наведении на элемент, но можно задать другие условия отображения.
|
|
43
|
-
*
|
|
44
|
-
* Для подсказки, всплывающей по клику используйте Tooltip.
|
|
45
|
-
*/
|
|
39
|
+
/** Краткая подсказка, которая объясняет контрол, иконку и добавляет контекста.
|
|
40
|
+
* Всплывает при наведении на элемент. */
|
|
46
41
|
export declare class Hint extends React.PureComponent<HintProps, HintState> implements InstanceWithAnchorElement {
|
|
47
42
|
static __KONTUR_REACT_UI__: string;
|
|
48
43
|
static displayName: string;
|
package/components/Hint/Hint.js
CHANGED
|
@@ -41,12 +41,8 @@ import { ThemeContext } from '../../lib/theming/ThemeContext.js';
|
|
|
41
41
|
import { ThemeFactory } from '../../lib/theming/ThemeFactory.js';
|
|
42
42
|
import { getStyles } from './Hint.styles.js';
|
|
43
43
|
var HINT_BORDER_COLOR = 'transparent';
|
|
44
|
-
/**
|
|
45
|
-
*
|
|
46
|
-
* По умолчанию отображается при наведении на элемент, но можно задать другие условия отображения.
|
|
47
|
-
*
|
|
48
|
-
* Для подсказки, всплывающей по клику используйте Tooltip.
|
|
49
|
-
*/
|
|
44
|
+
/** Краткая подсказка, которая объясняет контрол, иконку и добавляет контекста.
|
|
45
|
+
* Всплывает при наведении на элемент. */
|
|
50
46
|
var Hint = /** @class */ (function (_super) {
|
|
51
47
|
__extends(Hint, _super);
|
|
52
48
|
function Hint() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Hint.js","sourceRoot":"","sources":["../../../components/Hint/Hint.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport React from 'react';\n\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { DUMMY_LOCATION, Popup } from '../../internal/Popup/index.js';\nimport type { PopupPinnablePositionsType, ShortPopupPositionsType } from '../../internal/Popup/index.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { isTestEnv } from '../../lib/currentEnvironment.js';\nimport type { SafeTimer } from '../../lib/globalObject.js';\nimport type { InstanceWithAnchorElement } from '../../lib/InstanceWithAnchorElement.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory.js';\nimport type { MouseEventType } from '../../typings/event-types.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport { getStyles } from './Hint.styles.js';\n\nconst HINT_BORDER_COLOR = 'transparent';\n\nexport interface HintProps extends CommonProps {\n /** @ignore */\n children?: React.ReactNode;\n\n /** Переводит отображение подсказки в _\"ручной режим\"_.\n В _\"ручном режиме\"_ подсказку можно активировать только задав значение пропу `opened`. */\n manual?: boolean;\n\n /** Задает максимальную ширину подсказки. */\n maxWidth?: React.CSSProperties['maxWidth'];\n\n /** Задает функцию, которая вызывается при наведении мышкой (событие `onmouseenter`). */\n onMouseEnter?: (event: MouseEventType) => void;\n\n /** Задает функцию, которая вызывается при уходе мышки с объекта (событие `onmouseleave`). */\n onMouseLeave?: (event: MouseEventType) => void;\n\n /** Открывает подсказку. Работает только при `manual=true`. */\n opened?: boolean;\n\n /** Задает приоритетное расположение подсказки относительно текста. */\n pos?: ShortPopupPositionsType | PopupPinnablePositionsType;\n\n /** Задает текст подсказки. */\n text: React.ReactNode;\n\n /** Задает список позиций, которые будет занимать хинт. Если положение хинта в определенной позиции будет выходить за край экрана, то будет выбрана следующая позиция. Обязательно должен включать позицию указанную в `pos`. */\n allowedPositions?: PopupPinnablePositionsType[];\n\n /** Отключает анимацию. */\n disableAnimations?: boolean;\n\n /** Явно указывает, что вложенные элементы должны быть обёрнуты в `<span/>`.\n * Используется для корректного позиционирования хинта при двух и более вложенных элементах.\n * _Примечание_: при **двух и более** вложенных элементах обёртка будет добавлена автоматически. */\n useWrapper?: boolean;\n}\n\nexport interface HintState {\n opened: boolean;\n position: PopupPinnablePositionsType;\n}\n\ntype DefaultProps = Required<Pick<HintProps, 'manual' | 'opened' | 'maxWidth' | 'disableAnimations' | 'useWrapper'>>;\n\n/**\n * Всплывающая подсказка `Hint`.\n * По умолчанию отображается при наведении на элемент, но можно задать другие условия отображения.\n *\n * Для подсказки, всплывающей по клику используйте Tooltip.\n */\n@withRenderEnvironment\n@rootNode\nexport class Hint extends React.PureComponent<HintProps, HintState> implements InstanceWithAnchorElement {\n public static __KONTUR_REACT_UI__ = 'Hint';\n public static displayName = 'Hint';\n\n public static defaultProps: DefaultProps = {\n manual: false,\n opened: false,\n maxWidth: 200,\n disableAnimations: isTestEnv,\n useWrapper: false,\n };\n\n private getProps = createPropsGetter(Hint.defaultProps);\n\n public state: HintState = {\n opened: this.getProps().manual ? !!this.getProps().opened : false,\n position: DUMMY_LOCATION.position,\n };\n\n private timer: SafeTimer;\n private theme!: Theme;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private styles!: ReturnType<typeof getStyles>;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n\n private popupRef = React.createRef<Popup>();\n\n public getAllowedPositions(): string[] | undefined {\n return this.props.allowedPositions;\n }\n\n public componentDidUpdate(prevProps: HintProps) {\n const { opened, manual } = this.getProps();\n if (!manual) {\n return;\n }\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n if (opened !== prevProps.opened) {\n this.setState({ opened: !!opened });\n }\n }\n\n public componentWillUnmount() {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n }\n\n public render(): React.JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupMargin: theme.hintMargin,\n popupBorder: theme.hintBorder,\n popupBorderRadius: theme.hintBorderRadius,\n },\n this.theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain(): React.JSX.Element {\n const { disableAnimations, useWrapper } = this.getProps();\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <Popup\n hasPin={false}\n opened={this.state.opened}\n anchorElement={this.props.children}\n positions={this.getPositions()}\n pos={this.props.pos}\n backgroundColor={this.theme.hintBgColor}\n borderColor={HINT_BORDER_COLOR}\n onPositionChange={(position) => this.setState({ position })}\n disableAnimations={disableAnimations}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n useWrapper={useWrapper}\n ref={this.popupRef}\n withoutMobile\n >\n {this.renderContent()}\n </Popup>\n </CommonWrapper>\n );\n }\n\n public getAnchorElement = (): Nullable<Element> => {\n return this.popupRef.current?.anchorElement;\n };\n\n private renderContent() {\n if (!this.props.text) {\n return null;\n }\n\n const { maxWidth } = this.getProps();\n const centerAlignPositions = ['top', 'top center', 'bottom', 'bottom center'];\n const className = this.cx({\n [this.styles.content(this.theme)]: true,\n [this.styles.contentCenter(this.theme)]: centerAlignPositions.includes(this.state.position),\n });\n return (\n <div className={className} style={{ maxWidth }}>\n {this.props.text}\n </div>\n );\n }\n\n private getPositions = (): PopupPinnablePositionsType[] | undefined => {\n return this.props.allowedPositions;\n };\n\n private handleMouseEnter = (e: MouseEventType) => {\n if (!this.getProps().manual && !this.timer) {\n this.timer = setTimeout(this.open, 400);\n }\n\n if (this.props.onMouseEnter) {\n this.props.onMouseEnter(e);\n }\n };\n\n private handleMouseLeave = (e: MouseEventType) => {\n if (!this.getProps().manual && this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n this.setState({ opened: false });\n }\n\n if (this.props.onMouseLeave) {\n this.props.onMouseLeave(e);\n }\n };\n\n private open = () => {\n this.setState({ opened: true });\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Hint.js","sourceRoot":"","sources":["../../../components/Hint/Hint.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport React from 'react';\n\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { DUMMY_LOCATION, Popup } from '../../internal/Popup/index.js';\nimport type { PopupPinnablePositionsType, ShortPopupPositionsType } from '../../internal/Popup/index.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { isTestEnv } from '../../lib/currentEnvironment.js';\nimport type { SafeTimer } from '../../lib/globalObject.js';\nimport type { InstanceWithAnchorElement } from '../../lib/InstanceWithAnchorElement.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory.js';\nimport type { MouseEventType } from '../../typings/event-types.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport { getStyles } from './Hint.styles.js';\n\nconst HINT_BORDER_COLOR = 'transparent';\n\nexport interface HintProps extends CommonProps {\n /** @ignore */\n children?: React.ReactNode;\n\n /** Текст подсказки. */\n text: React.ReactNode;\n\n /** Максимальная ширина подсказки. */\n maxWidth?: React.CSSProperties['maxWidth'];\n\n /** Приоритетное расположение подсказки относительно текста. */\n pos?: ShortPopupPositionsType | PopupPinnablePositionsType;\n\n /** Список позиций, которые может занимать подсказка. В списке обязательно должна быть позиция из пропа `pos`. */\n allowedPositions?: PopupPinnablePositionsType[];\n\n /** Переводит отображение подсказки в ручной режим, где состояние контролируется значением пропа `opened`. */\n manual?: boolean;\n\n /** Открывает подсказку. Работает только при `manual=true`. */\n opened?: boolean;\n\n /** Отключает анимацию. */\n disableAnimations?: boolean;\n\n /** Оборачивает вложенные элементы в `<span />`.\n *\n * _Примечание_: при двух и более вложенных элементах обёртка будет добавлена автоматически. */\n useWrapper?: boolean;\n\n /** Вызывается при наведении курсора (событие `onmouseenter`). */\n onMouseEnter?: (event: MouseEventType) => void;\n\n /** Вызывается при уходе курсора с объекта (событие `onmouseleave`). */\n onMouseLeave?: (event: MouseEventType) => void;\n}\n\nexport interface HintState {\n opened: boolean;\n position: PopupPinnablePositionsType;\n}\n\ntype DefaultProps = Required<Pick<HintProps, 'manual' | 'opened' | 'maxWidth' | 'disableAnimations' | 'useWrapper'>>;\n\n/** Краткая подсказка, которая объясняет контрол, иконку и добавляет контекста.\n * Всплывает при наведении на элемент. */\n@withRenderEnvironment\n@rootNode\nexport class Hint extends React.PureComponent<HintProps, HintState> implements InstanceWithAnchorElement {\n public static __KONTUR_REACT_UI__ = 'Hint';\n public static displayName = 'Hint';\n\n public static defaultProps: DefaultProps = {\n manual: false,\n opened: false,\n maxWidth: 200,\n disableAnimations: isTestEnv,\n useWrapper: false,\n };\n\n private getProps = createPropsGetter(Hint.defaultProps);\n\n public state: HintState = {\n opened: this.getProps().manual ? !!this.getProps().opened : false,\n position: DUMMY_LOCATION.position,\n };\n\n private timer: SafeTimer;\n private theme!: Theme;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private styles!: ReturnType<typeof getStyles>;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n\n private popupRef = React.createRef<Popup>();\n\n public getAllowedPositions(): string[] | undefined {\n return this.props.allowedPositions;\n }\n\n public componentDidUpdate(prevProps: HintProps) {\n const { opened, manual } = this.getProps();\n if (!manual) {\n return;\n }\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n if (opened !== prevProps.opened) {\n this.setState({ opened: !!opened });\n }\n }\n\n public componentWillUnmount() {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n }\n\n public render(): React.JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupMargin: theme.hintMargin,\n popupBorder: theme.hintBorder,\n popupBorderRadius: theme.hintBorderRadius,\n },\n this.theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain(): React.JSX.Element {\n const { disableAnimations, useWrapper } = this.getProps();\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <Popup\n hasPin={false}\n opened={this.state.opened}\n anchorElement={this.props.children}\n positions={this.getPositions()}\n pos={this.props.pos}\n backgroundColor={this.theme.hintBgColor}\n borderColor={HINT_BORDER_COLOR}\n onPositionChange={(position) => this.setState({ position })}\n disableAnimations={disableAnimations}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n useWrapper={useWrapper}\n ref={this.popupRef}\n withoutMobile\n >\n {this.renderContent()}\n </Popup>\n </CommonWrapper>\n );\n }\n\n public getAnchorElement = (): Nullable<Element> => {\n return this.popupRef.current?.anchorElement;\n };\n\n private renderContent() {\n if (!this.props.text) {\n return null;\n }\n\n const { maxWidth } = this.getProps();\n const centerAlignPositions = ['top', 'top center', 'bottom', 'bottom center'];\n const className = this.cx({\n [this.styles.content(this.theme)]: true,\n [this.styles.contentCenter(this.theme)]: centerAlignPositions.includes(this.state.position),\n });\n return (\n <div className={className} style={{ maxWidth }}>\n {this.props.text}\n </div>\n );\n }\n\n private getPositions = (): PopupPinnablePositionsType[] | undefined => {\n return this.props.allowedPositions;\n };\n\n private handleMouseEnter = (e: MouseEventType) => {\n if (!this.getProps().manual && !this.timer) {\n this.timer = setTimeout(this.open, 400);\n }\n\n if (this.props.onMouseEnter) {\n this.props.onMouseEnter(e);\n }\n };\n\n private handleMouseLeave = (e: MouseEventType) => {\n if (!this.getProps().manual && this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n this.setState({ opened: false });\n }\n\n if (this.props.onMouseLeave) {\n this.props.onMouseLeave(e);\n }\n };\n\n private open = () => {\n this.setState({ opened: true });\n };\n}\n"]}
|
|
@@ -49,6 +49,7 @@ import { scrollYCenterIntoNearestScrollable } from '../../lib/dom/scrollYCenterI
|
|
|
49
49
|
import { isBrowser } from '../../lib/globalObject.js';
|
|
50
50
|
import { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';
|
|
51
51
|
import { rootNode } from '../../lib/rootNode/index.js';
|
|
52
|
+
import { withSize } from '../../lib/size/SizeDecorator.js';
|
|
52
53
|
import { ThemeContext } from '../../lib/theming/ThemeContext.js';
|
|
53
54
|
import { isExternalLink, isFunction, isNonNullable, isReactUIComponent } from '../../lib/utils.js';
|
|
54
55
|
import { getStyles } from './MenuItem.styles.js';
|
|
@@ -99,7 +100,7 @@ var MenuItem = /** @class */ (function (_super) {
|
|
|
99
100
|
};
|
|
100
101
|
_this.renderMain = function () {
|
|
101
102
|
var _a, _b, _c, _d;
|
|
102
|
-
var _e = _this.props, comment = _e.comment, icon = _e.icon, loose = _e.loose, state = _e.state,
|
|
103
|
+
var _e = _this.props, comment = _e.comment, icon = _e.icon, loose = _e.loose, state = _e.state, sizeProp = _e.size, _enableIconPadding = _e._enableIconPadding, component = _e.component, onMouseEnter = _e.onMouseEnter, onMouseLeave = _e.onMouseLeave, isMobile = _e.isMobile, href = _e.href, disabled = _e.disabled, scrollIntoView = _e.scrollIntoView, _f = _e.rel, rel = _f === void 0 ? href && isExternalLink(href, _this.globalObject) ? 'noopener noreferrer' : _this.props.rel : _f, isNotSelectable = _e.isNotSelectable, children = _e.children, unusedClasses = _e.className, style = _e.style, dataTid = _e["data-tid"], rest = __rest(_e, ["comment", "icon", "loose", "state", "size", "_enableIconPadding", "component", "onMouseEnter", "onMouseLeave", "isMobile", "href", "disabled", "scrollIntoView", "rel", "isNotSelectable", "children", "className", "style", 'data-tid']);
|
|
103
104
|
var iconElement = null;
|
|
104
105
|
if (icon) {
|
|
105
106
|
iconElement = (React.createElement("div", { style: { top: _this.state.iconOffsetTop }, className: _this.cx((_a = {},
|
|
@@ -231,7 +232,7 @@ var MenuItem = /** @class */ (function (_super) {
|
|
|
231
232
|
}
|
|
232
233
|
};
|
|
233
234
|
MenuItem.prototype.getRootSizeClassName = function () {
|
|
234
|
-
switch (this.
|
|
235
|
+
switch (this.size) {
|
|
235
236
|
case 'large':
|
|
236
237
|
return this.styles.rootLarge(this.theme);
|
|
237
238
|
case 'medium':
|
|
@@ -242,7 +243,7 @@ var MenuItem = /** @class */ (function (_super) {
|
|
|
242
243
|
}
|
|
243
244
|
};
|
|
244
245
|
MenuItem.prototype.getIconSizeClassName = function () {
|
|
245
|
-
switch (this.
|
|
246
|
+
switch (this.size) {
|
|
246
247
|
case 'large':
|
|
247
248
|
return this.styles.iconLarge(this.theme);
|
|
248
249
|
case 'medium':
|
|
@@ -253,7 +254,7 @@ var MenuItem = /** @class */ (function (_super) {
|
|
|
253
254
|
}
|
|
254
255
|
};
|
|
255
256
|
MenuItem.prototype.getWithIconSizeClassName = function () {
|
|
256
|
-
switch (this.
|
|
257
|
+
switch (this.size) {
|
|
257
258
|
case 'large':
|
|
258
259
|
return this.styles.withIconLarge(this.theme);
|
|
259
260
|
case 'medium':
|
|
@@ -290,6 +291,7 @@ var MenuItem = /** @class */ (function (_super) {
|
|
|
290
291
|
MenuItem.contextType = MenuContext;
|
|
291
292
|
MenuItem = __decorate([
|
|
292
293
|
withRenderEnvironment,
|
|
294
|
+
withSize,
|
|
293
295
|
rootNode
|
|
294
296
|
], MenuItem);
|
|
295
297
|
return MenuItem;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuItem.js","sourceRoot":"","sources":["../../../components/MenuItem/MenuItem.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport type { AriaAttributes, HTMLAttributes } from 'react';\nimport React from 'react';\n\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes.js';\nimport { MenuContext } from '../../internal/Menu/MenuContext.js';\nimport type { MenuContextType } from '../../internal/Menu/MenuContext.js';\nimport { scrollYCenterIntoNearestScrollable } from '../../lib/dom/scrollYCenterIntoNearestScrollable.js';\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport { isBrowser } from '../../lib/globalObject.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport { isExternalLink, isFunction, isNonNullable, isReactUIComponent } from '../../lib/utils.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport { getStyles } from './MenuItem.styles.js';\n\nexport type MenuItemState = null | 'hover' | 'selected' | void;\n\nexport interface MenuItemProps\n extends\n Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'>,\n Omit<CommonProps, 'children'> {\n /** Добавляет отступ иконке.\n * @ignore */\n _enableIconPadding?: boolean;\n\n /** Добавляет описание для элемента меню. */\n comment?: React.ReactNode;\n\n /** Делает компонент недоступным. */\n disabled?: boolean;\n\n /** Добавляет иконку элементу меню. */\n icon?: React.ReactElement;\n\n /** Задает размер контрола. */\n size?: SizeProp;\n\n /** @ignore */\n loose?: boolean;\n\n /** @ignore */\n state?: MenuItemState;\n\n /** Задает функцию, которая вызывается при клике. */\n onClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n\n /** Задает функцию, которая вызывается при наведении мышкой (событие `onmouseenter`). */\n onMouseEnter?: React.MouseEventHandler;\n\n /** Задает функцию, которая вызывается при уходе мышки с объекта (событие `onmouseleave`). */\n onMouseLeave?: React.MouseEventHandler;\n\n /** @ignore */\n children?: React.ReactNode | ((state: MenuItemState) => React.ReactNode);\n\n /** Задает HTML-атрибут `target`. */\n target?: React.AnchorHTMLAttributes<HTMLAnchorElement>['target'];\n\n /** Задает HTML-атрибут `title`. */\n title?: React.AnchorHTMLAttributes<HTMLAnchorElement>['title'];\n\n /** Задает HTML-атрибут `href` - адрес, на который следует перейти. */\n href?: React.AnchorHTMLAttributes<HTMLAnchorElement>['href'];\n\n /** Задает HTML-атрибут `rel`. Для внешних ссылок аттрибут rel по умолчанию равен \"noopener noreferrer\". */\n rel?: React.AnchorHTMLAttributes<HTMLAnchorElement>['rel'];\n\n /** Заменяет корневой элемент, на компонент переданный в проп.\n * По умолчанию корневой элемент рендерится как `button`. <br />Если передан `href`, то вместо `button` рендерится `a`. */\n component?: React.ComponentType<any>;\n\n /** Запрещает выделение и выбор данного пункта меню. */\n isNotSelectable?: boolean;\n\n /** Устанавливает стиль для отображения в мобильной версии. */\n isMobile?: boolean;\n /** @ignore */\n scrollIntoView?: boolean;\n}\n\nexport const MenuItemDataTids = {\n root: 'MenuItem__root',\n content: 'MenuItem__content',\n comment: 'MenuItem__comment',\n} as const;\n\n/**\n * `MenuItem` - это вложенный компонент, задающий базовые стили для элемента меню и позволяющий навигироваться по элементам меню с помощью клавиатуры.\n *\n * Сущности в которых может быть использован `MenuItem`: DropdownMenu, Kebab, TooltipMenu и Select.\n */\n@withRenderEnvironment\n@rootNode\nexport class MenuItem extends React.Component<MenuItemProps> {\n public static __KONTUR_REACT_UI__ = 'MenuItem';\n public static displayName = 'MenuItem';\n public static __MENU_ITEM__ = true;\n\n public state = {\n iconOffsetTop: 0,\n highlighted: false,\n };\n\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n private mouseEntered = false;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private rootRef: Nullable<HTMLElement> = null;\n private contentRef = React.createRef<HTMLElement>();\n static contextType = MenuContext;\n\n public context!: MenuContextType;\n\n public render(): React.JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public componentDidMount() {\n if (this.props.scrollIntoView && this.rootRef) {\n scrollYCenterIntoNearestScrollable(this.rootRef);\n }\n if (this.rootRef && isBrowser(this.globalObject)) {\n this.setState({\n iconOffsetTop: this.globalObject.getComputedStyle(this.rootRef).getPropertyValue('padding-top'),\n });\n }\n if (this.contentRef.current && !this.props.isNotSelectable) {\n this.context.navigation?.add(this.contentRef.current, this);\n }\n if (this.props.icon) {\n this.context.setEnableIconPadding?.(true);\n }\n }\n\n public componentWillUnmount() {\n if (this.contentRef.current) {\n !this.props.isNotSelectable && this.context.navigation?.remove(this.contentRef.current);\n this.context.setEnableIconPadding?.(this.hasIconAmongItems());\n }\n }\n\n public componentDidUpdate(prevProps: Readonly<MenuItemProps>) {\n if (prevProps.icon !== this.props.icon) {\n this.context.setEnableIconPadding?.(!!this.props.icon || this.hasIconAmongItems());\n }\n if (this.contentRef.current && prevProps.isNotSelectable !== this.props.isNotSelectable) {\n if (this.props.isNotSelectable) {\n this.unhighlight();\n this.context.navigation?.remove(this.contentRef.current);\n } else {\n this.context.navigation?.add(this.contentRef.current, this);\n }\n }\n }\n\n public highlight = (): void => {\n this.setState({ highlighted: true });\n };\n\n public unhighlight = (): void => {\n this.setState({ highlighted: false });\n };\n\n public select = (event: React.SyntheticEvent<HTMLElement>): void => {\n this.handleClick(event as React.MouseEvent<HTMLElement>);\n };\n\n public isEnabled = (): boolean => {\n return !this.props.disabled;\n };\n\n public navigate = (): void => {\n if (!this.props.href) {\n return;\n }\n if (this.props.target) {\n this.globalObject.open?.(this.props.href, this.props.target);\n } else if (this.globalObject.location) {\n this.globalObject.location.href = this.props.href;\n }\n };\n\n private getRootSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return this.styles.rootLarge(this.theme);\n case 'medium':\n return this.styles.rootMedium(this.theme);\n case 'small':\n default:\n return this.styles.rootSmall(this.theme);\n }\n }\n\n private getIconSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return this.styles.iconLarge(this.theme);\n case 'medium':\n return this.styles.iconMedium(this.theme);\n case 'small':\n default:\n return this.styles.iconSmall(this.theme);\n }\n }\n\n private getWithIconSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return this.styles.withIconLarge(this.theme);\n case 'medium':\n return this.styles.withIconMedium(this.theme);\n case 'small':\n default:\n return this.styles.withIconSmall(this.theme);\n }\n }\n\n private renderMain = () => {\n const {\n comment,\n icon,\n loose,\n state,\n size,\n _enableIconPadding,\n component,\n onMouseEnter,\n onMouseLeave,\n isMobile,\n href,\n disabled,\n scrollIntoView,\n rel = href && isExternalLink(href, this.globalObject) ? 'noopener noreferrer' : this.props.rel,\n isNotSelectable,\n children,\n className: unusedClasses,\n style,\n 'data-tid': dataTid,\n ...rest\n } = this.props;\n\n let iconElement = null;\n if (icon) {\n iconElement = (\n <div\n style={{ top: this.state.iconOffsetTop }}\n className={this.cx({\n [this.styles.icon()]: true,\n [this.getIconSizeClassName()]: true,\n })}\n >\n {icon}\n </div>\n );\n }\n\n const className = this.cx({\n [this.styles.root(this.theme)]: true,\n [this.getRootSizeClassName()]: true,\n [this.styles.rootMobile(this.theme)]: isMobile,\n [this.styles.loose()]: !!loose,\n [this.styles.hover(this.theme)]: this.isHover,\n [this.styles.selected(this.theme)]: this.isSelected,\n [this.getWithIconSizeClassName()]: Boolean(iconElement) || !!_enableIconPadding || this.context.enableIconPadding,\n [this.styles.nonSelectable()]: !!isNotSelectable,\n [this.styles.disabled(this.theme)]: !!disabled,\n });\n\n let content = children;\n if (isFunction(children)) {\n content = children(this.activeState);\n }\n\n const Component = this.getComponent();\n\n return (\n <CommonWrapper\n rootNodeRef={this.setRootNode}\n {...getVisualStateDataAttributes({\n hover: this.isHover,\n selected: this.isSelected,\n })}\n {...this.props}\n >\n <Component\n ref={this.setRootRef}\n data-tid={MenuItemDataTids.root}\n {...rest}\n disabled={disabled}\n state={this.activeState}\n onMouseOver={this.handleMouseEnterFix}\n onMouseLeave={this.handleMouseLeave}\n onClick={this.handleClick}\n className={className}\n href={href}\n rel={href ? rel : undefined}\n tabIndex={-1}\n >\n {iconElement}\n <span\n className={this.cx({\n [this.styles.mobileContentWithIcon()]: isMobile && isNonNullable(icon),\n })}\n ref={this.contentRef}\n data-tid={MenuItemDataTids.content}\n >\n {typeof content === 'function' ? content() : content}\n </span>\n {comment && (\n <div\n data-tid={MenuItemDataTids.comment}\n className={this.cx({\n [this.styles.comment(this.theme)]: true,\n [this.styles.commentHover(this.theme)]: this.isHover,\n })}\n >\n {comment}\n </div>\n )}\n </Component>\n </CommonWrapper>\n );\n };\n\n private get activeState() {\n return this.state.highlighted ? 'hover' : this.props.state;\n }\n\n private get isHover(): boolean {\n return (this.state.highlighted || this.props.state === 'hover') && !this.props.disabled;\n }\n\n private get isSelected(): boolean {\n return this.props.state === 'selected' && !this.state.highlighted;\n }\n\n // https://github.com/facebook/react/issues/10109\n // Mouseenter event not triggered when cursor moves from disabled button\n private handleMouseEnterFix = (e: React.MouseEvent<HTMLElement>) => {\n if (!this.mouseEntered) {\n this.mouseEntered = true;\n this.props.onMouseEnter?.(e);\n !this.props.isNotSelectable && this.context.navigation?.highlight(this);\n }\n };\n\n private handleMouseLeave = (e: React.MouseEvent<HTMLElement>) => {\n this.mouseEntered = false;\n this.props.onMouseLeave?.(e);\n !this.props.isNotSelectable && this.context.navigation?.unhighlight();\n };\n\n private handleClick = (e: React.MouseEvent<HTMLElement>) => {\n if (this.props.isNotSelectable) {\n return;\n }\n this.props.onClick?.(e);\n this.context.onItemClick?.(e);\n };\n\n private setRootRef = (element: HTMLElement) => {\n this.rootRef = element;\n };\n\n private getComponent = () => {\n const { disabled, component, href } = this.props;\n\n if (component) {\n return component;\n }\n\n if (disabled) {\n return 'button';\n }\n\n if (href) {\n return 'a';\n }\n\n return 'button';\n };\n\n private hasIconAmongItems = () => {\n return Boolean(this.context.navigation?.items.some((item) => item.props.icon));\n };\n}\n\nexport const isMenuItem = isReactUIComponent('MenuItem');\n"]}
|
|
1
|
+
{"version":3,"file":"MenuItem.js","sourceRoot":"","sources":["../../../components/MenuItem/MenuItem.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAE,4BAA4B,EAAE,MAAM,oEAAoE,CAAC;AAClH,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAEjE,OAAO,EAAE,kCAAkC,EAAE,MAAM,qDAAqD,CAAC;AAEzG,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAE7E,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEjE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAEnG,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAoEjD,MAAM,CAAC,IAAM,gBAAgB,GAAG;IAC9B,IAAI,EAAE,gBAAgB;IACtB,OAAO,EAAE,mBAAmB;IAC5B,OAAO,EAAE,mBAAmB;CACpB,CAAC;AAEX;;;;GAIG;AAIH;IAA8B,4BAA8B;IAA5D;;QAKS,WAAK,GAAG;YACb,aAAa,EAAE,CAAC;YAChB,WAAW,EAAE,KAAK;SACnB,CAAC;QAQM,kBAAY,GAAG,KAAK,CAAC;QAGrB,aAAO,GAA0B,IAAI,CAAC;QACtC,gBAAU,GAAG,KAAK,CAAC,SAAS,EAAe,CAAC;QAwD7C,eAAS,GAAG;YACjB,KAAI,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,CAAC,CAAC;QAEK,iBAAW,GAAG;YACnB,KAAI,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;QACxC,CAAC,CAAC;QAEK,YAAM,GAAG,UAAC,KAAwC;YACvD,KAAI,CAAC,WAAW,CAAC,KAAsC,CAAC,CAAC;QAC3D,CAAC,CAAC;QAEK,eAAS,GAAG;YACjB,OAAO,CAAC,KAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC9B,CAAC,CAAC;QAEK,cAAQ,GAAG;;YAChB,IAAI,CAAC,KAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACrB,OAAO;YACT,CAAC;YACD,IAAI,KAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBACtB,MAAA,MAAA,KAAI,CAAC,YAAY,EAAC,IAAI,mDAAG,KAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC/D,CAAC;iBAAM,IAAI,KAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;gBACtC,KAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YACpD,CAAC;QACH,CAAC,CAAC;QAsCM,gBAAU,GAAG;;YACnB,IAAM,KAqBF,KAAI,CAAC,KAAK,EApBZ,OAAO,aAAA,EACP,IAAI,UAAA,EACJ,KAAK,WAAA,EACL,KAAK,WAAA,EACC,QAAQ,UAAA,EACd,kBAAkB,wBAAA,EAClB,SAAS,eAAA,EACT,YAAY,kBAAA,EACZ,YAAY,kBAAA,EACZ,QAAQ,cAAA,EACR,IAAI,UAAA,EACJ,QAAQ,cAAA,EACR,cAAc,oBAAA,EACd,WAA8F,EAA9F,GAAG,mBAAG,IAAI,IAAI,cAAc,CAAC,IAAI,EAAE,KAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,KAAI,CAAC,KAAK,CAAC,GAAG,KAAA,EAC9F,eAAe,qBAAA,EACf,QAAQ,cAAA,EACG,aAAa,eAAA,EACxB,KAAK,WAAA,EACO,OAAO,iBAAA,EAChB,IAAI,cApBH,0OAqBL,CAAa,CAAC;YAEf,IAAI,WAAW,GAAG,IAAI,CAAC;YACvB,IAAI,IAAI,EAAE,CAAC;gBACT,WAAW,GAAG,CACZ,6BACE,KAAK,EAAE,EAAE,GAAG,EAAE,KAAI,CAAC,KAAK,CAAC,aAAa,EAAE,EACxC,SAAS,EAAE,KAAI,CAAC,EAAE;wBAChB,GAAC,KAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAG,IAAI;wBAC1B,GAAC,KAAI,CAAC,oBAAoB,EAAE,IAAG,IAAI;4BACnC,IAED,IAAI,CACD,CACP,CAAC;YACJ,CAAC;YAED,IAAM,SAAS,GAAG,KAAI,CAAC,EAAE;gBACvB,GAAC,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAI,CAAC,KAAK,CAAC,IAAG,IAAI;gBACpC,GAAC,KAAI,CAAC,oBAAoB,EAAE,IAAG,IAAI;gBACnC,GAAC,KAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAI,CAAC,KAAK,CAAC,IAAG,QAAQ;gBAC9C,GAAC,KAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAG,CAAC,CAAC,KAAK;gBAC9B,GAAC,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAI,CAAC,KAAK,CAAC,IAAG,KAAI,CAAC,OAAO;gBAC7C,GAAC,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAI,CAAC,KAAK,CAAC,IAAG,KAAI,CAAC,UAAU;gBACnD,GAAC,KAAI,CAAC,wBAAwB,EAAE,IAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,kBAAkB,IAAI,KAAI,CAAC,OAAO,CAAC,iBAAiB;gBACjH,GAAC,KAAI,CAAC,MAAM,CAAC,aAAa,EAAE,IAAG,CAAC,CAAC,eAAe;gBAChD,GAAC,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAI,CAAC,KAAK,CAAC,IAAG,CAAC,CAAC,QAAQ;oBAC9C,CAAC;YAEH,IAAI,OAAO,GAAG,QAAQ,CAAC;YACvB,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACzB,OAAO,GAAG,QAAQ,CAAC,KAAI,CAAC,WAAW,CAAC,CAAC;YACvC,CAAC;YAED,IAAM,SAAS,GAAG,KAAI,CAAC,YAAY,EAAE,CAAC;YAEtC,OAAO,CACL,oBAAC,aAAa,aACZ,WAAW,EAAE,KAAI,CAAC,WAAW,IACzB,4BAA4B,CAAC;gBAC/B,KAAK,EAAE,KAAI,CAAC,OAAO;gBACnB,QAAQ,EAAE,KAAI,CAAC,UAAU;aAC1B,CAAC,EACE,KAAI,CAAC,KAAK;gBAEd,oBAAC,SAAS,aACR,GAAG,EAAE,KAAI,CAAC,UAAU,cACV,gBAAgB,CAAC,IAAI,IAC3B,IAAI,IACR,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAI,CAAC,WAAW,EACvB,WAAW,EAAE,KAAI,CAAC,mBAAmB,EACrC,YAAY,EAAE,KAAI,CAAC,gBAAgB,EACnC,OAAO,EAAE,KAAI,CAAC,WAAW,EACzB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAC3B,QAAQ,EAAE,CAAC,CAAC;oBAEX,WAAW;oBACZ,8BACE,SAAS,EAAE,KAAI,CAAC,EAAE;4BAChB,GAAC,KAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,IAAG,QAAQ,IAAI,aAAa,CAAC,IAAI,CAAC;gCACtE,EACF,GAAG,EAAE,KAAI,CAAC,UAAU,cACV,gBAAgB,CAAC,OAAO,IAEjC,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAC/C;oBACN,OAAO,IAAI,CACV,yCACY,gBAAgB,CAAC,OAAO,EAClC,SAAS,EAAE,KAAI,CAAC,EAAE;4BAChB,GAAC,KAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAI,CAAC,KAAK,CAAC,IAAG,IAAI;4BACvC,GAAC,KAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAI,CAAC,KAAK,CAAC,IAAG,KAAI,CAAC,OAAO;gCACpD,IAED,OAAO,CACJ,CACP,CACS,CACE,CACjB,CAAC;QACJ,CAAC,CAAC;QAcF,iDAAiD;QACjD,wEAAwE;QAChE,yBAAmB,GAAG,UAAC,CAAgC;;YAC7D,IAAI,CAAC,KAAI,CAAC,YAAY,EAAE,CAAC;gBACvB,KAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gBACzB,MAAA,MAAA,KAAI,CAAC,KAAK,EAAC,YAAY,mDAAG,CAAC,CAAC,CAAC;gBAC7B,CAAC,KAAI,CAAC,KAAK,CAAC,eAAe,KAAI,MAAA,KAAI,CAAC,OAAO,CAAC,UAAU,0CAAE,SAAS,CAAC,KAAI,CAAC,CAAA,CAAC;YAC1E,CAAC;QACH,CAAC,CAAC;QAEM,sBAAgB,GAAG,UAAC,CAAgC;;YAC1D,KAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,MAAA,MAAA,KAAI,CAAC,KAAK,EAAC,YAAY,mDAAG,CAAC,CAAC,CAAC;YAC7B,CAAC,KAAI,CAAC,KAAK,CAAC,eAAe,KAAI,MAAA,KAAI,CAAC,OAAO,CAAC,UAAU,0CAAE,WAAW,EAAE,CAAA,CAAC;QACxE,CAAC,CAAC;QAEM,iBAAW,GAAG,UAAC,CAAgC;;YACrD,IAAI,KAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;gBAC/B,OAAO;YACT,CAAC;YACD,MAAA,MAAA,KAAI,CAAC,KAAK,EAAC,OAAO,mDAAG,CAAC,CAAC,CAAC;YACxB,MAAA,MAAA,KAAI,CAAC,OAAO,EAAC,WAAW,mDAAG,CAAC,CAAC,CAAC;QAChC,CAAC,CAAC;QAEM,gBAAU,GAAG,UAAC,OAAoB;YACxC,KAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACzB,CAAC,CAAC;QAEM,kBAAY,GAAG;YACf,IAAA,KAAgC,KAAI,CAAC,KAAK,EAAxC,QAAQ,cAAA,EAAE,SAAS,eAAA,EAAE,IAAI,UAAe,CAAC;YAEjD,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,QAAQ,CAAC;YAClB,CAAC;YAED,IAAI,IAAI,EAAE,CAAC;gBACT,OAAO,GAAG,CAAC;YACb,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC,CAAC;QAEM,uBAAiB,GAAG;;YAC1B,OAAO,OAAO,CAAC,MAAA,KAAI,CAAC,OAAO,CAAC,UAAU,0CAAE,KAAK,CAAC,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAf,CAAe,CAAC,CAAC,CAAC;QACjF,CAAC,CAAC;;IACJ,CAAC;IA1RQ,yBAAM,GAAb;QAAA,iBAWC;QAVC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEtC,OAAO,CACL,oBAAC,YAAY,CAAC,QAAQ,QACnB,UAAC,KAAK;YACL,KAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,OAAO,KAAI,CAAC,UAAU,EAAE,CAAC;QAC3B,CAAC,CACqB,CACzB,CAAC;IACJ,CAAC;IAEM,oCAAiB,GAAxB;;QACE,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC9C,kCAAkC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,QAAQ,CAAC;gBACZ,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,aAAa,CAAC;aAChG,CAAC,CAAC;QACL,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;YAC3D,MAAA,IAAI,CAAC,OAAO,CAAC,UAAU,0CAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACpB,MAAA,MAAA,IAAI,CAAC,OAAO,EAAC,oBAAoB,mDAAG,IAAI,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAEM,uCAAoB,GAA3B;;QACE,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YAC5B,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,KAAI,MAAA,IAAI,CAAC,OAAO,CAAC,UAAU,0CAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA,CAAC;YACxF,MAAA,MAAA,IAAI,CAAC,OAAO,EAAC,oBAAoB,mDAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAEM,qCAAkB,GAAzB,UAA0B,SAAkC;;QAC1D,IAAI,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACvC,MAAA,MAAA,IAAI,CAAC,OAAO,EAAC,oBAAoB,mDAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACrF,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,SAAS,CAAC,eAAe,KAAK,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;YACxF,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;gBAC/B,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,MAAA,IAAI,CAAC,OAAO,CAAC,UAAU,0CAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAC3D,CAAC;iBAAM,CAAC;gBACN,MAAA,IAAI,CAAC,OAAO,CAAC,UAAU,0CAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;IACH,CAAC;IA6BO,uCAAoB,GAA5B;QACE,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3C,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5C,KAAK,OAAO,CAAC;YACb;gBACE,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAEO,uCAAoB,GAA5B;QACE,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3C,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5C,KAAK,OAAO,CAAC;YACb;gBACE,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAEO,2CAAwB,GAAhC;QACE,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/C,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChD,KAAK,OAAO,CAAC;YACb;gBACE,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IA6GD,sBAAY,iCAAW;aAAvB;YACE,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC7D,CAAC;;;OAAA;IAED,sBAAY,6BAAO;aAAnB;YACE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC1F,CAAC;;;OAAA;IAED,sBAAY,gCAAU;aAAtB;YACE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;QACpE,CAAC;;;OAAA;IA/Pa,4BAAmB,GAAG,UAAU,AAAb,CAAc;IACjC,oBAAW,GAAG,UAAU,AAAb,CAAc;IACzB,sBAAa,GAAG,IAAI,AAAP,CAAQ;IAkB5B,oBAAW,GAAG,WAAW,AAAd,CAAe;IArBtB,QAAQ;QAHpB,qBAAqB;QACrB,QAAQ;QACR,QAAQ;OACI,QAAQ,CAmTpB;IAAD,eAAC;CAAA,AAnTD,CAA8B,KAAK,CAAC,SAAS,GAmT5C;SAnTY,QAAQ;AAqTrB,MAAM,CAAC,IAAM,UAAU,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport type { AriaAttributes, HTMLAttributes } from 'react';\nimport React from 'react';\n\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes.js';\nimport { MenuContext } from '../../internal/Menu/MenuContext.js';\nimport type { MenuContextType } from '../../internal/Menu/MenuContext.js';\nimport { scrollYCenterIntoNearestScrollable } from '../../lib/dom/scrollYCenterIntoNearestScrollable.js';\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport { isBrowser } from '../../lib/globalObject.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport { withSize } from '../../lib/size/SizeDecorator.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport { isExternalLink, isFunction, isNonNullable, isReactUIComponent } from '../../lib/utils.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport { getStyles } from './MenuItem.styles.js';\n\nexport type MenuItemState = null | 'hover' | 'selected' | void;\n\nexport interface MenuItemProps\n extends\n Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'>,\n Omit<CommonProps, 'children'> {\n /** Добавляет отступ иконке.\n * @ignore */\n _enableIconPadding?: boolean;\n\n /** Добавляет описание для элемента меню. */\n comment?: React.ReactNode;\n\n /** Делает компонент недоступным. */\n disabled?: boolean;\n\n /** Добавляет иконку элементу меню. */\n icon?: React.ReactElement;\n\n /** Задает размер контрола. */\n size?: SizeProp;\n\n /** @ignore */\n loose?: boolean;\n\n /** @ignore */\n state?: MenuItemState;\n\n /** Задает функцию, которая вызывается при клике. */\n onClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n\n /** Задает функцию, которая вызывается при наведении мышкой (событие `onmouseenter`). */\n onMouseEnter?: React.MouseEventHandler;\n\n /** Задает функцию, которая вызывается при уходе мышки с объекта (событие `onmouseleave`). */\n onMouseLeave?: React.MouseEventHandler;\n\n /** @ignore */\n children?: React.ReactNode | ((state: MenuItemState) => React.ReactNode);\n\n /** Задает HTML-атрибут `target`. */\n target?: React.AnchorHTMLAttributes<HTMLAnchorElement>['target'];\n\n /** Задает HTML-атрибут `title`. */\n title?: React.AnchorHTMLAttributes<HTMLAnchorElement>['title'];\n\n /** Задает HTML-атрибут `href` - адрес, на который следует перейти. */\n href?: React.AnchorHTMLAttributes<HTMLAnchorElement>['href'];\n\n /** Задает HTML-атрибут `rel`. Для внешних ссылок аттрибут rel по умолчанию равен \"noopener noreferrer\". */\n rel?: React.AnchorHTMLAttributes<HTMLAnchorElement>['rel'];\n\n /** Заменяет корневой элемент, на компонент переданный в проп.\n * По умолчанию корневой элемент рендерится как `button`. <br />Если передан `href`, то вместо `button` рендерится `a`. */\n component?: React.ComponentType<any>;\n\n /** Запрещает выделение и выбор данного пункта меню. */\n isNotSelectable?: boolean;\n\n /** Устанавливает стиль для отображения в мобильной версии. */\n isMobile?: boolean;\n /** @ignore */\n scrollIntoView?: boolean;\n}\n\nexport const MenuItemDataTids = {\n root: 'MenuItem__root',\n content: 'MenuItem__content',\n comment: 'MenuItem__comment',\n} as const;\n\n/**\n * `MenuItem` - это вложенный компонент, задающий базовые стили для элемента меню и позволяющий навигироваться по элементам меню с помощью клавиатуры.\n *\n * Сущности в которых может быть использован `MenuItem`: DropdownMenu, Kebab, TooltipMenu и Select.\n */\n@withRenderEnvironment\n@withSize\n@rootNode\nexport class MenuItem extends React.Component<MenuItemProps> {\n public static __KONTUR_REACT_UI__ = 'MenuItem';\n public static displayName = 'MenuItem';\n public static __MENU_ITEM__ = true;\n\n public state = {\n iconOffsetTop: 0,\n highlighted: false,\n };\n\n private size!: SizeProp;\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n private mouseEntered = false;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private rootRef: Nullable<HTMLElement> = null;\n private contentRef = React.createRef<HTMLElement>();\n static contextType = MenuContext;\n\n public context!: MenuContextType;\n\n public render(): React.JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public componentDidMount() {\n if (this.props.scrollIntoView && this.rootRef) {\n scrollYCenterIntoNearestScrollable(this.rootRef);\n }\n if (this.rootRef && isBrowser(this.globalObject)) {\n this.setState({\n iconOffsetTop: this.globalObject.getComputedStyle(this.rootRef).getPropertyValue('padding-top'),\n });\n }\n if (this.contentRef.current && !this.props.isNotSelectable) {\n this.context.navigation?.add(this.contentRef.current, this);\n }\n if (this.props.icon) {\n this.context.setEnableIconPadding?.(true);\n }\n }\n\n public componentWillUnmount() {\n if (this.contentRef.current) {\n !this.props.isNotSelectable && this.context.navigation?.remove(this.contentRef.current);\n this.context.setEnableIconPadding?.(this.hasIconAmongItems());\n }\n }\n\n public componentDidUpdate(prevProps: Readonly<MenuItemProps>) {\n if (prevProps.icon !== this.props.icon) {\n this.context.setEnableIconPadding?.(!!this.props.icon || this.hasIconAmongItems());\n }\n if (this.contentRef.current && prevProps.isNotSelectable !== this.props.isNotSelectable) {\n if (this.props.isNotSelectable) {\n this.unhighlight();\n this.context.navigation?.remove(this.contentRef.current);\n } else {\n this.context.navigation?.add(this.contentRef.current, this);\n }\n }\n }\n\n public highlight = (): void => {\n this.setState({ highlighted: true });\n };\n\n public unhighlight = (): void => {\n this.setState({ highlighted: false });\n };\n\n public select = (event: React.SyntheticEvent<HTMLElement>): void => {\n this.handleClick(event as React.MouseEvent<HTMLElement>);\n };\n\n public isEnabled = (): boolean => {\n return !this.props.disabled;\n };\n\n public navigate = (): void => {\n if (!this.props.href) {\n return;\n }\n if (this.props.target) {\n this.globalObject.open?.(this.props.href, this.props.target);\n } else if (this.globalObject.location) {\n this.globalObject.location.href = this.props.href;\n }\n };\n\n private getRootSizeClassName() {\n switch (this.size) {\n case 'large':\n return this.styles.rootLarge(this.theme);\n case 'medium':\n return this.styles.rootMedium(this.theme);\n case 'small':\n default:\n return this.styles.rootSmall(this.theme);\n }\n }\n\n private getIconSizeClassName() {\n switch (this.size) {\n case 'large':\n return this.styles.iconLarge(this.theme);\n case 'medium':\n return this.styles.iconMedium(this.theme);\n case 'small':\n default:\n return this.styles.iconSmall(this.theme);\n }\n }\n\n private getWithIconSizeClassName() {\n switch (this.size) {\n case 'large':\n return this.styles.withIconLarge(this.theme);\n case 'medium':\n return this.styles.withIconMedium(this.theme);\n case 'small':\n default:\n return this.styles.withIconSmall(this.theme);\n }\n }\n\n private renderMain = () => {\n const {\n comment,\n icon,\n loose,\n state,\n size: sizeProp,\n _enableIconPadding,\n component,\n onMouseEnter,\n onMouseLeave,\n isMobile,\n href,\n disabled,\n scrollIntoView,\n rel = href && isExternalLink(href, this.globalObject) ? 'noopener noreferrer' : this.props.rel,\n isNotSelectable,\n children,\n className: unusedClasses,\n style,\n 'data-tid': dataTid,\n ...rest\n } = this.props;\n\n let iconElement = null;\n if (icon) {\n iconElement = (\n <div\n style={{ top: this.state.iconOffsetTop }}\n className={this.cx({\n [this.styles.icon()]: true,\n [this.getIconSizeClassName()]: true,\n })}\n >\n {icon}\n </div>\n );\n }\n\n const className = this.cx({\n [this.styles.root(this.theme)]: true,\n [this.getRootSizeClassName()]: true,\n [this.styles.rootMobile(this.theme)]: isMobile,\n [this.styles.loose()]: !!loose,\n [this.styles.hover(this.theme)]: this.isHover,\n [this.styles.selected(this.theme)]: this.isSelected,\n [this.getWithIconSizeClassName()]: Boolean(iconElement) || !!_enableIconPadding || this.context.enableIconPadding,\n [this.styles.nonSelectable()]: !!isNotSelectable,\n [this.styles.disabled(this.theme)]: !!disabled,\n });\n\n let content = children;\n if (isFunction(children)) {\n content = children(this.activeState);\n }\n\n const Component = this.getComponent();\n\n return (\n <CommonWrapper\n rootNodeRef={this.setRootNode}\n {...getVisualStateDataAttributes({\n hover: this.isHover,\n selected: this.isSelected,\n })}\n {...this.props}\n >\n <Component\n ref={this.setRootRef}\n data-tid={MenuItemDataTids.root}\n {...rest}\n disabled={disabled}\n state={this.activeState}\n onMouseOver={this.handleMouseEnterFix}\n onMouseLeave={this.handleMouseLeave}\n onClick={this.handleClick}\n className={className}\n href={href}\n rel={href ? rel : undefined}\n tabIndex={-1}\n >\n {iconElement}\n <span\n className={this.cx({\n [this.styles.mobileContentWithIcon()]: isMobile && isNonNullable(icon),\n })}\n ref={this.contentRef}\n data-tid={MenuItemDataTids.content}\n >\n {typeof content === 'function' ? content() : content}\n </span>\n {comment && (\n <div\n data-tid={MenuItemDataTids.comment}\n className={this.cx({\n [this.styles.comment(this.theme)]: true,\n [this.styles.commentHover(this.theme)]: this.isHover,\n })}\n >\n {comment}\n </div>\n )}\n </Component>\n </CommonWrapper>\n );\n };\n\n private get activeState() {\n return this.state.highlighted ? 'hover' : this.props.state;\n }\n\n private get isHover(): boolean {\n return (this.state.highlighted || this.props.state === 'hover') && !this.props.disabled;\n }\n\n private get isSelected(): boolean {\n return this.props.state === 'selected' && !this.state.highlighted;\n }\n\n // https://github.com/facebook/react/issues/10109\n // Mouseenter event not triggered when cursor moves from disabled button\n private handleMouseEnterFix = (e: React.MouseEvent<HTMLElement>) => {\n if (!this.mouseEntered) {\n this.mouseEntered = true;\n this.props.onMouseEnter?.(e);\n !this.props.isNotSelectable && this.context.navigation?.highlight(this);\n }\n };\n\n private handleMouseLeave = (e: React.MouseEvent<HTMLElement>) => {\n this.mouseEntered = false;\n this.props.onMouseLeave?.(e);\n !this.props.isNotSelectable && this.context.navigation?.unhighlight();\n };\n\n private handleClick = (e: React.MouseEvent<HTMLElement>) => {\n if (this.props.isNotSelectable) {\n return;\n }\n this.props.onClick?.(e);\n this.context.onItemClick?.(e);\n };\n\n private setRootRef = (element: HTMLElement) => {\n this.rootRef = element;\n };\n\n private getComponent = () => {\n const { disabled, component, href } = this.props;\n\n if (component) {\n return component;\n }\n\n if (disabled) {\n return 'button';\n }\n\n if (href) {\n return 'a';\n }\n\n return 'button';\n };\n\n private hasIconAmongItems = () => {\n return Boolean(this.context.navigation?.items.some((item) => item.props.icon));\n };\n}\n\nexport const isMenuItem = isReactUIComponent('MenuItem');\n"]}
|
|
@@ -13,9 +13,15 @@ export declare const MiniModalDataTids: {
|
|
|
13
13
|
};
|
|
14
14
|
/**
|
|
15
15
|
* `MiniModal` — модальное диалоговое окно, которое предполагает обязательный отклик пользователя по одному из доступных действий. Обёртка над Modal.
|
|
16
|
-
* Закрытие окна по клику на фон или "крестик" не рекомендуется, т.к. у этих действий нет однозначного описания в отличие от кнопок с названиями, наподобие "Сохранить", "Подтвердить" и т.п.
|
|
17
16
|
*
|
|
18
|
-
*
|
|
17
|
+
* Состоит из набора подкомпонентов:
|
|
18
|
+
* - `MiniModal.Header`
|
|
19
|
+
* - `MiniModal.Body`
|
|
20
|
+
* - `MiniModal.Footer`
|
|
21
|
+
* - `MiniModal.Indent`
|
|
22
|
+
*
|
|
23
|
+
* Тот же набор доступен как `MiniModalHeader`, `MiniModalBody`, `MiniModalFooter`, `MiniModalIndent`.
|
|
24
|
+
*
|
|
19
25
|
*/
|
|
20
26
|
export declare const MiniModal: import("../../lib/forwardRefAndName.js").ReactUIComponentWithRef<Modal, ModalProps> & {
|
|
21
27
|
Header: typeof MiniModalHeader;
|
|
@@ -38,15 +38,21 @@ export var MiniModalDataTids = {
|
|
|
38
38
|
};
|
|
39
39
|
/**
|
|
40
40
|
* `MiniModal` — модальное диалоговое окно, которое предполагает обязательный отклик пользователя по одному из доступных действий. Обёртка над Modal.
|
|
41
|
-
* Закрытие окна по клику на фон или "крестик" не рекомендуется, т.к. у этих действий нет однозначного описания в отличие от кнопок с названиями, наподобие "Сохранить", "Подтвердить" и т.п.
|
|
42
41
|
*
|
|
43
|
-
*
|
|
42
|
+
* Состоит из набора подкомпонентов:
|
|
43
|
+
* - `MiniModal.Header`
|
|
44
|
+
* - `MiniModal.Body`
|
|
45
|
+
* - `MiniModal.Footer`
|
|
46
|
+
* - `MiniModal.Indent`
|
|
47
|
+
*
|
|
48
|
+
* Тот же набор доступен как `MiniModalHeader`, `MiniModalBody`, `MiniModalFooter`, `MiniModalIndent`.
|
|
49
|
+
*
|
|
44
50
|
*/
|
|
45
51
|
export var MiniModal = forwardRefAndName('MiniModal', function (_a, ref) {
|
|
46
|
-
var children = _a.children, propsTheme = _a.theme, mobileAppearance = _a.mobileAppearance, rest = __rest(_a, ["children", "theme", "mobileAppearance"]);
|
|
52
|
+
var children = _a.children, propsTheme = _a.theme, mobileAppearance = _a.mobileAppearance, width = _a.width, rest = __rest(_a, ["children", "theme", "mobileAppearance", "width"]);
|
|
47
53
|
var contextTheme = useContext(ThemeContext);
|
|
48
54
|
return (React.createElement(ThemeContext.Provider, { value: getMiniModalTheme(contextTheme, propsTheme) },
|
|
49
|
-
React.createElement(Modal, __assign({ width: 400, mobileAppearance: mobileAppearance !== null && mobileAppearance !== void 0 ? mobileAppearance : 'center', noClose: true, ref: ref }, rest), children)));
|
|
55
|
+
React.createElement(Modal, __assign({ width: width !== null && width !== void 0 ? width : 400, mobileAppearance: mobileAppearance !== null && mobileAppearance !== void 0 ? mobileAppearance : 'center', noClose: true, ref: ref }, rest), children)));
|
|
50
56
|
});
|
|
51
57
|
MiniModal.Header = MiniModalHeader;
|
|
52
58
|
MiniModal.Footer = MiniModalFooter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MiniModal.js","sourceRoot":"","sources":["../../../components/MiniModal/MiniModal.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,CAAC,IAAM,iBAAiB,GAAG;IAC/B,IAAI,EAAE,iBAAiB;IACvB,KAAK,EAAE,kBAAkB;IACzB,WAAW,EAAE,wBAAwB;IACrC,OAAO,EAAE,oBAAoB;IAC7B,MAAM,EAAE,mBAAmB;CACnB,CAAC;AAEX
|
|
1
|
+
{"version":3,"file":"MiniModal.js","sourceRoot":"","sources":["../../../components/MiniModal/MiniModal.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,CAAC,IAAM,iBAAiB,GAAG;IAC/B,IAAI,EAAE,iBAAiB;IACvB,KAAK,EAAE,kBAAkB;IACzB,WAAW,EAAE,wBAAwB;IACrC,OAAO,EAAE,oBAAoB;IAC7B,MAAM,EAAE,mBAAmB;CACnB,CAAC;AAEX;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,IAAM,SAAS,GAAG,iBAAiB,CASxC,WAAW,EAAE,UAAC,EAAiE,EAAE,GAAG;IAApE,IAAA,QAAQ,cAAA,EAAS,UAAU,WAAA,EAAE,gBAAgB,sBAAA,EAAE,KAAK,WAAA,EAAK,IAAI,cAA/D,kDAAiE,CAAF;IAC7E,IAAM,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IAE9C,OAAO,CACL,oBAAC,YAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,iBAAiB,CAAC,YAAY,EAAE,UAAU,CAAC;QACvE,oBAAC,KAAK,aAAC,KAAK,EAAE,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,GAAG,EAAE,gBAAgB,EAAE,gBAAgB,aAAhB,gBAAgB,cAAhB,gBAAgB,GAAI,QAAQ,EAAE,OAAO,QAAC,GAAG,EAAE,GAAG,IAAM,IAAI,GACnG,QAAQ,CACH,CACc,CACzB,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,SAAS,CAAC,MAAM,GAAG,eAAe,CAAC;AACnC,SAAS,CAAC,MAAM,GAAG,eAAe,CAAC;AACnC,SAAS,CAAC,MAAM,GAAG,eAAe,CAAC;AACnC,SAAS,CAAC,IAAI,GAAG,aAAa,CAAC","sourcesContent":["import React, { useContext } from 'react';\n\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { Modal } from '../Modal/index.js';\nimport type { ModalProps } from '../Modal/index.js';\nimport { getMiniModalTheme } from './getMiniModalTheme.js';\nimport { MiniModalBody } from './MiniModalBody.js';\nimport { MiniModalFooter } from './MiniModalFooter.js';\nimport { MiniModalHeader } from './MiniModalHeader.js';\nimport { MiniModalIndent } from './MiniModalIndent.js';\n\nexport const MiniModalDataTids = {\n icon: 'MiniModal__icon',\n title: 'MiniModal__title',\n description: 'MiniModal__description',\n actions: 'MiniModal__actions',\n indent: 'MiniModal__indent',\n} as const;\n\n/**\n * `MiniModal` — модальное диалоговое окно, которое предполагает обязательный отклик пользователя по одному из доступных действий. Обёртка над Modal.\n *\n * Состоит из набора подкомпонентов:\n * - `MiniModal.Header`\n * - `MiniModal.Body`\n * - `MiniModal.Footer`\n * - `MiniModal.Indent`\n *\n * Тот же набор доступен как `MiniModalHeader`, `MiniModalBody`, `MiniModalFooter`, `MiniModalIndent`.\n *\n */\nexport const MiniModal = forwardRefAndName<\n Modal,\n ModalProps,\n {\n Header: typeof MiniModalHeader;\n Indent: typeof MiniModalIndent;\n Footer: typeof MiniModalFooter;\n Body: typeof MiniModalBody;\n }\n>('MiniModal', ({ children, theme: propsTheme, mobileAppearance, width, ...rest }, ref) => {\n const contextTheme = useContext(ThemeContext);\n\n return (\n <ThemeContext.Provider value={getMiniModalTheme(contextTheme, propsTheme)}>\n <Modal width={width ?? 400} mobileAppearance={mobileAppearance ?? 'center'} noClose ref={ref} {...rest}>\n {children}\n </Modal>\n </ThemeContext.Provider>\n );\n});\n\nMiniModal.Header = MiniModalHeader;\nMiniModal.Footer = MiniModalFooter;\nMiniModal.Indent = MiniModalIndent;\nMiniModal.Body = MiniModalBody;\n"]}
|
|
@@ -28,7 +28,7 @@ import { Modal } from '../Modal/index.js';
|
|
|
28
28
|
import { MiniModalDataTids } from './MiniModal.js';
|
|
29
29
|
import { getStyles } from './MiniModal.styles.js';
|
|
30
30
|
/**
|
|
31
|
-
* Обёртка над Modal.Body
|
|
31
|
+
* Текстовый блок пояснения в мини-модалке. Обёртка над Modal.Body.
|
|
32
32
|
*
|
|
33
33
|
* @visibleName MiniModal.Body
|
|
34
34
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MiniModalBody.js","sourceRoot":"","sources":["../../../components/MiniModal/MiniModalBody.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD;;;;GAIG;AACH,MAAM,CAAC,IAAM,aAAa,GAAG,iBAAiB,CAC5C,eAAe,EACf,UAAC,EAAqB,EAAE,GAAG;IAAxB,IAAA,QAAQ,cAAA,EAAK,IAAI,cAAnB,YAAqB,CAAF;IACV,IAAA,EAAE,GAAK,UAAU,EAAE,GAAjB,CAAkB;IAC5B,IAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IAEpC,OAAO,CACL,oBAAC,KAAK,CAAC,IAAI,eAAK,IAAI;QAClB,oBAAC,YAAY,CAAC,QAAQ,QACnB,UAAC,KAAK;YACL,OAAO,CACL,yCAAe,iBAAiB,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAC7F,QAAQ,CACL,CACP,CAAC;QACJ,CAAC,CACqB,CACb,CACd,CAAC;AACJ,CAAC,CACF,CAAC","sourcesContent":["import React from 'react';\n\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport { useEmotion, useStyles } from '../../lib/renderEnvironment/index.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { Modal } from '../Modal/index.js';\nimport type { ModalBodyProps } from '../Modal/index.js';\nimport { MiniModalDataTids } from './MiniModal.js';\nimport { getStyles } from './MiniModal.styles.js';\n\n/**\n * Обёртка над Modal.Body
|
|
1
|
+
{"version":3,"file":"MiniModalBody.js","sourceRoot":"","sources":["../../../components/MiniModal/MiniModalBody.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD;;;;GAIG;AACH,MAAM,CAAC,IAAM,aAAa,GAAG,iBAAiB,CAC5C,eAAe,EACf,UAAC,EAAqB,EAAE,GAAG;IAAxB,IAAA,QAAQ,cAAA,EAAK,IAAI,cAAnB,YAAqB,CAAF;IACV,IAAA,EAAE,GAAK,UAAU,EAAE,GAAjB,CAAkB;IAC5B,IAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IAEpC,OAAO,CACL,oBAAC,KAAK,CAAC,IAAI,eAAK,IAAI;QAClB,oBAAC,YAAY,CAAC,QAAQ,QACnB,UAAC,KAAK;YACL,OAAO,CACL,yCAAe,iBAAiB,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAC7F,QAAQ,CACL,CACP,CAAC;QACJ,CAAC,CACqB,CACb,CACd,CAAC;AACJ,CAAC,CACF,CAAC","sourcesContent":["import React from 'react';\n\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport { useEmotion, useStyles } from '../../lib/renderEnvironment/index.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { Modal } from '../Modal/index.js';\nimport type { ModalBodyProps } from '../Modal/index.js';\nimport { MiniModalDataTids } from './MiniModal.js';\nimport { getStyles } from './MiniModal.styles.js';\n\n/**\n * Текстовый блок пояснения в мини-модалке. Обёртка над Modal.Body.\n *\n * @visibleName MiniModal.Body\n */\nexport const MiniModalBody = forwardRefAndName<HTMLDivElement, ModalBodyProps>(\n 'MiniModalBody',\n ({ children, ...rest }, ref) => {\n const { cx } = useEmotion();\n const styles = useStyles(getStyles);\n\n return (\n <Modal.Body {...rest}>\n <ThemeContext.Consumer>\n {(theme) => {\n return (\n <div data-tid={MiniModalDataTids.description} ref={ref} className={cx(styles.description(theme))}>\n {children}\n </div>\n );\n }}\n </ThemeContext.Consumer>\n </Modal.Body>\n );\n },\n);\n"]}
|
|
@@ -28,7 +28,7 @@ import { Modal } from '../Modal/index.js';
|
|
|
28
28
|
import { MiniModalDataTids } from './MiniModal.js';
|
|
29
29
|
import { getStyles } from './MiniModal.styles.js';
|
|
30
30
|
/**
|
|
31
|
-
* Обёртка над Modal.Footer
|
|
31
|
+
* Футер мини-модалки: зона действий с раскладкой кнопок. Обёртка над Modal.Footer.
|
|
32
32
|
*
|
|
33
33
|
* @visibleName MiniModal.Footer
|
|
34
34
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MiniModalFooter.js","sourceRoot":"","sources":["../../../components/MiniModal/MiniModalFooter.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAQlD;;;;GAIG;AACH,MAAM,CAAC,IAAM,eAAe,GAAG,iBAAiB,CAC9C,iBAAiB,EACjB,UAAC,EAAwC,EAAE,GAAG;IAA3C,IAAA,iBAAiB,EAAjB,SAAS,mBAAG,KAAK,KAAA,EAAE,QAAQ,cAAA,EAAK,IAAI,cAAtC,yBAAwC,CAAF;IACrC,IAAM,KAAK,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IAC/B,IAAA,EAAE,GAAK,UAAU,EAAE,GAAjB,CAAkB;IAC5B,IAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IAEpC,IAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACrD,IAAM,UAAU,GAAG,aAAa,GAAG,CAAC,IAAI,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAEnF,OAAO,CACL,oBAAC,KAAK,CAAC,MAAM,eAAK,IAAI;QACpB,6BACE,GAAG,EAAE,GAAG,cACE,iBAAiB,CAAC,OAAO,EACnC,SAAS,EAAE,EAAE,CACX,MAAM,CAAC,OAAO,EAAE,EAChB,UAAU,KAAK,KAAK,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,EAChD,UAAU,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CACvD,IAEA,QAAQ,CACL,CACO,CAChB,CAAC;AACJ,CAAC,CACF,CAAC","sourcesContent":["import React, { useContext } from 'react';\n\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport { useEmotion, useStyles } from '../../lib/renderEnvironment/index.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { Modal } from '../Modal/index.js';\nimport type { ModalFooterProps } from '../Modal/index.js';\nimport { MiniModalDataTids } from './MiniModal.js';\nimport { getStyles } from './MiniModal.styles.js';\n\ninterface MiniModalFooterProps extends ModalFooterProps {\n /** Задает направление позиционирования кнопок. `row` работает только для 2 элементов, в других случаях автоматически включиться `column`.\n * @default row */\n direction?: 'row' | 'column';\n}\n\n/**\n * Обёртка над Modal.Footer
|
|
1
|
+
{"version":3,"file":"MiniModalFooter.js","sourceRoot":"","sources":["../../../components/MiniModal/MiniModalFooter.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAQlD;;;;GAIG;AACH,MAAM,CAAC,IAAM,eAAe,GAAG,iBAAiB,CAC9C,iBAAiB,EACjB,UAAC,EAAwC,EAAE,GAAG;IAA3C,IAAA,iBAAiB,EAAjB,SAAS,mBAAG,KAAK,KAAA,EAAE,QAAQ,cAAA,EAAK,IAAI,cAAtC,yBAAwC,CAAF;IACrC,IAAM,KAAK,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IAC/B,IAAA,EAAE,GAAK,UAAU,EAAE,GAAjB,CAAkB;IAC5B,IAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IAEpC,IAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACrD,IAAM,UAAU,GAAG,aAAa,GAAG,CAAC,IAAI,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAEnF,OAAO,CACL,oBAAC,KAAK,CAAC,MAAM,eAAK,IAAI;QACpB,6BACE,GAAG,EAAE,GAAG,cACE,iBAAiB,CAAC,OAAO,EACnC,SAAS,EAAE,EAAE,CACX,MAAM,CAAC,OAAO,EAAE,EAChB,UAAU,KAAK,KAAK,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,EAChD,UAAU,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CACvD,IAEA,QAAQ,CACL,CACO,CAChB,CAAC;AACJ,CAAC,CACF,CAAC","sourcesContent":["import React, { useContext } from 'react';\n\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport { useEmotion, useStyles } from '../../lib/renderEnvironment/index.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { Modal } from '../Modal/index.js';\nimport type { ModalFooterProps } from '../Modal/index.js';\nimport { MiniModalDataTids } from './MiniModal.js';\nimport { getStyles } from './MiniModal.styles.js';\n\ninterface MiniModalFooterProps extends ModalFooterProps {\n /** Задает направление позиционирования кнопок. `row` работает только для 2 элементов, в других случаях автоматически включиться `column`.\n * @default row */\n direction?: 'row' | 'column';\n}\n\n/**\n * Футер мини-модалки: зона действий с раскладкой кнопок. Обёртка над Modal.Footer.\n *\n * @visibleName MiniModal.Footer\n */\nexport const MiniModalFooter = forwardRefAndName<HTMLDivElement, MiniModalFooterProps>(\n 'MiniModalFooter',\n ({ direction = 'row', children, ...rest }, ref) => {\n const theme = useContext(ThemeContext);\n const { cx } = useEmotion();\n const styles = useStyles(getStyles);\n\n const childrenCount = React.Children.count(children);\n const _direction = childrenCount > 2 || childrenCount === 1 ? 'column' : direction;\n\n return (\n <Modal.Footer {...rest}>\n <div\n ref={ref}\n data-tid={MiniModalDataTids.actions}\n className={cx(\n styles.actions(),\n _direction === 'row' && styles.actionsRow(theme),\n _direction === 'column' && styles.actionsColumn(theme),\n )}\n >\n {children}\n </div>\n </Modal.Footer>\n );\n },\n);\n"]}
|
|
@@ -29,7 +29,7 @@ import { Modal } from '../Modal/index.js';
|
|
|
29
29
|
import { MiniModalDataTids } from './MiniModal.js';
|
|
30
30
|
import { getStyles } from './MiniModal.styles.js';
|
|
31
31
|
/**
|
|
32
|
-
* Обёртка над Modal.Header
|
|
32
|
+
* Шапка мини-модалки: заголовок и опциональная иконка. Обёртка над Modal.Header.
|
|
33
33
|
*
|
|
34
34
|
* @visibleName MiniModal.Header
|
|
35
35
|
*/
|