@skbkontur/react-ui 3.8.1 → 3.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -2
- package/cjs/components/CurrencyLabel/CurrencyLabel.js +5 -14
- package/cjs/components/CurrencyLabel/CurrencyLabel.js.map +1 -1
- package/cjs/components/Dropdown/Dropdown.d.ts +1 -0
- package/cjs/components/Dropdown/Dropdown.js +1 -0
- package/cjs/components/Dropdown/Dropdown.js.map +1 -1
- package/cjs/components/Dropdown/Dropdown.md +0 -1
- package/cjs/components/DropdownMenu/DropdownMenu.d.ts +17 -3
- package/cjs/components/DropdownMenu/DropdownMenu.js +15 -1
- package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
- package/cjs/components/DropdownMenu/DropdownMenu.md +87 -6
- package/cjs/components/Kebab/Kebab.d.ts +5 -2
- package/cjs/components/Kebab/Kebab.js +3 -0
- package/cjs/components/Kebab/Kebab.js.map +1 -1
- package/cjs/components/Kebab/Kebab.md +249 -3
- package/cjs/components/MenuHeader/MenuHeader.d.ts +5 -1
- package/cjs/components/MenuHeader/MenuHeader.js +5 -1
- package/cjs/components/MenuHeader/MenuHeader.js.map +1 -1
- package/cjs/components/MenuHeader/MenuHeader.md +23 -0
- package/cjs/components/MenuItem/MenuItem.d.ts +10 -1
- package/cjs/components/MenuItem/MenuItem.js +11 -1
- package/cjs/components/MenuItem/MenuItem.js.map +1 -1
- package/cjs/components/MenuItem/MenuItem.md +106 -4
- package/cjs/components/MenuSeparator/MenuSeparator.d.ts +3 -1
- package/cjs/components/MenuSeparator/MenuSeparator.js +3 -1
- package/cjs/components/MenuSeparator/MenuSeparator.js.map +1 -1
- package/cjs/components/MenuSeparator/MenuSeparator.md +14 -0
- package/cjs/components/Toggle/Toggle.d.ts +4 -0
- package/cjs/components/Toggle/Toggle.js +7 -1
- package/cjs/components/Toggle/Toggle.js.map +1 -1
- package/cjs/components/Toggle/Toggle.md +13 -0
- package/cjs/components/Toggle/Toggle.styles.d.ts +1 -0
- package/cjs/components/Toggle/Toggle.styles.js +6 -7
- package/cjs/components/Toggle/Toggle.styles.js.map +1 -1
- package/cjs/components/TooltipMenu/TooltipMenu.d.ts +26 -8
- package/cjs/components/TooltipMenu/TooltipMenu.js +24 -6
- package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
- package/cjs/components/TooltipMenu/TooltipMenu.md +76 -8
- package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js +5 -11
- package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js.map +1 -1
- package/components/Dropdown/Dropdown/Dropdown.js +1 -0
- package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
- package/components/Dropdown/Dropdown.d.ts +1 -0
- package/components/Dropdown/Dropdown.md +0 -1
- package/components/DropdownMenu/DropdownMenu/DropdownMenu.js +1 -1
- package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
- package/components/DropdownMenu/DropdownMenu.d.ts +17 -3
- package/components/DropdownMenu/DropdownMenu.md +87 -6
- package/components/Kebab/Kebab/Kebab.js.map +1 -1
- package/components/Kebab/Kebab.d.ts +5 -2
- package/components/Kebab/Kebab.md +249 -3
- package/components/MenuHeader/MenuHeader/MenuHeader.js +5 -1
- package/components/MenuHeader/MenuHeader/MenuHeader.js.map +1 -1
- package/components/MenuHeader/MenuHeader.d.ts +5 -1
- package/components/MenuHeader/MenuHeader.md +23 -0
- package/components/MenuItem/MenuItem/MenuItem.js +4 -1
- package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
- package/components/MenuItem/MenuItem.d.ts +10 -1
- package/components/MenuItem/MenuItem.md +106 -4
- package/components/MenuSeparator/MenuSeparator/MenuSeparator.js +3 -1
- package/components/MenuSeparator/MenuSeparator/MenuSeparator.js.map +1 -1
- package/components/MenuSeparator/MenuSeparator.d.ts +3 -1
- package/components/MenuSeparator/MenuSeparator.md +14 -0
- package/components/Toggle/Toggle/Toggle.js +5 -3
- package/components/Toggle/Toggle/Toggle.js.map +1 -1
- package/components/Toggle/Toggle.d.ts +4 -0
- package/components/Toggle/Toggle.md +13 -0
- package/components/Toggle/Toggle.styles/Toggle.styles.js +3 -3
- package/components/Toggle/Toggle.styles/Toggle.styles.js.map +1 -1
- package/components/Toggle/Toggle.styles.d.ts +1 -0
- package/components/TooltipMenu/TooltipMenu/TooltipMenu.js +9 -6
- package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
- package/components/TooltipMenu/TooltipMenu.d.ts +26 -8
- package/components/TooltipMenu/TooltipMenu.md +76 -8
- package/package.json +2 -2
- package/cjs/components/CurrencyLabel/CurrencyLabel.styles.d.ts +0 -4
- package/cjs/components/CurrencyLabel/CurrencyLabel.styles.js +0 -9
- package/cjs/components/CurrencyLabel/CurrencyLabel.styles.js.map +0 -1
- package/components/CurrencyLabel/CurrencyLabel.styles/CurrencyLabel.styles.js +0 -10
- package/components/CurrencyLabel/CurrencyLabel.styles/CurrencyLabel.styles.js.map +0 -1
- package/components/CurrencyLabel/CurrencyLabel.styles/package.json +0 -6
- package/components/CurrencyLabel/CurrencyLabel.styles.d.ts +0 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["MenuHeader.tsx"],"names":["React","useContext","ThemeContext","CommonWrapper","cx","styles","MenuHeader","_enableIconPadding","children","rest","theme","root","withLeftPadding","__KONTUR_REACT_UI__","__MENU_HEADER__","isMenuHeader","child","isValidElement","Object","prototype","hasOwnProperty","call","type"],"mappings":"oGAAA,OAAOA,KAAP,IAA2BC,UAA3B,QAA6C,OAA7C;;AAEA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAAsBC,aAAtB,QAA2C,8BAA3C;AACA,SAASC,EAAT,QAAmB,2BAAnB;;AAEA,SAASC,MAAT,QAAuB,qBAAvB;;;;;;;AAOA;AACA;AACA;AACA,SAASC,UAAT,OAAwF,0CAAlEC,kBAAkE,CAAlEA,kBAAkE,sCAA7C,KAA6C,yBAAtCC,QAAsC,QAAtCA,QAAsC,CAAzBC,IAAyB;AACtF,MAAMC,KAAK,GAAGT,UAAU,CAACC,YAAD,CAAxB;;AAEA;AACE,wBAAC,aAAD,EAAmBO,IAAnB;AACE;AACE,MAAA,SAAS,EAAEL,EAAE;AACVC,MAAAA,MAAM,CAACM,IAAP,CAAYD,KAAZ,CADU,IACW,IADX;AAEVL,MAAAA,MAAM,CAACO,eAAP,CAAuBF,KAAvB,CAFU,IAEsBH,kBAFtB,OADf;;;AAMGC,IAAAA,QANH,CADF,CADF;;;;AAYD;;AAEDF,UAAU,CAACO,mBAAX,GAAiC,YAAjC;AACAP,UAAU,CAACQ,eAAX,GAA6B,IAA7B;;AAEA,SAASR,UAAT;;AAEA,OAAO,IAAMS,YAAY,GAAG,SAAfA,YAAe,CAACC,KAAD,EAA0E;AACpG,SAAO,aAAAhB,KAAK,CAACiB,cAAN,CAAsCD,KAAtC;AACHE,EAAAA,MAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCL,KAAK,CAACM,IAA3C,EAAiD,iBAAjD,CADG;AAEH,OAFJ;AAGD,CAJM","sourcesContent":["import React, { ReactNode, useContext } from 'react';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './MenuHeader.styles';\n\nexport interface MenuHeaderProps extends CommonProps {\n _enableIconPadding?: boolean;\n children: ReactNode;\n}\n\n/**\n *
|
|
1
|
+
{"version":3,"sources":["MenuHeader.tsx"],"names":["React","useContext","ThemeContext","CommonWrapper","cx","styles","MenuHeader","_enableIconPadding","children","rest","theme","root","withLeftPadding","__KONTUR_REACT_UI__","__MENU_HEADER__","isMenuHeader","child","isValidElement","Object","prototype","hasOwnProperty","call","type"],"mappings":"oGAAA,OAAOA,KAAP,IAA2BC,UAA3B,QAA6C,OAA7C;;AAEA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAAsBC,aAAtB,QAA2C,8BAA3C;AACA,SAASC,EAAT,QAAmB,2BAAnB;;AAEA,SAASC,MAAT,QAAuB,qBAAvB;;;;;;;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,UAAT,OAAwF,0CAAlEC,kBAAkE,CAAlEA,kBAAkE,sCAA7C,KAA6C,yBAAtCC,QAAsC,QAAtCA,QAAsC,CAAzBC,IAAyB;AACtF,MAAMC,KAAK,GAAGT,UAAU,CAACC,YAAD,CAAxB;;AAEA;AACE,wBAAC,aAAD,EAAmBO,IAAnB;AACE;AACE,MAAA,SAAS,EAAEL,EAAE;AACVC,MAAAA,MAAM,CAACM,IAAP,CAAYD,KAAZ,CADU,IACW,IADX;AAEVL,MAAAA,MAAM,CAACO,eAAP,CAAuBF,KAAvB,CAFU,IAEsBH,kBAFtB,OADf;;;AAMGC,IAAAA,QANH,CADF,CADF;;;;AAYD;;AAEDF,UAAU,CAACO,mBAAX,GAAiC,YAAjC;AACAP,UAAU,CAACQ,eAAX,GAA6B,IAA7B;;AAEA,SAASR,UAAT;;AAEA,OAAO,IAAMS,YAAY,GAAG,SAAfA,YAAe,CAACC,KAAD,EAA0E;AACpG,SAAO,aAAAhB,KAAK,CAACiB,cAAN,CAAsCD,KAAtC;AACHE,EAAAA,MAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCL,KAAK,CAACM,IAA3C,EAAiD,iBAAjD,CADG;AAEH,OAFJ;AAGD,CAJM","sourcesContent":["import React, { ReactNode, useContext } from 'react';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './MenuHeader.styles';\n\nexport interface MenuHeaderProps extends CommonProps {\n _enableIconPadding?: boolean;\n children: ReactNode;\n}\n\n/**\n * `Заголовок меню` используется для того, чтобы разделить `элементы меню` на категории в рамках одного меню.\n *\n * _Примечание_: `заголовок меню`, в отличие от `элемента меню` нельзя затаргетить с клавиатуры.\n *\n * Сущности в которых может быть использован `MenuHeader`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).\n */\nfunction MenuHeader({ _enableIconPadding = false, children, ...rest }: MenuHeaderProps) {\n const theme = useContext(ThemeContext);\n\n return (\n <CommonWrapper {...rest}>\n <div\n className={cx({\n [styles.root(theme)]: true,\n [styles.withLeftPadding(theme)]: _enableIconPadding,\n })}\n >\n {children}\n </div>\n </CommonWrapper>\n );\n}\n\nMenuHeader.__KONTUR_REACT_UI__ = 'MenuHeader';\nMenuHeader.__MENU_HEADER__ = true;\n\nexport { MenuHeader };\n\nexport const isMenuHeader = (child: React.ReactNode): child is React.ReactElement<MenuHeaderProps> => {\n return React.isValidElement<MenuHeaderProps>(child)\n ? Object.prototype.hasOwnProperty.call(child.type, '__MENU_HEADER__')\n : false;\n};\n"]}
|
|
@@ -5,7 +5,11 @@ export interface MenuHeaderProps extends CommonProps {
|
|
|
5
5
|
children: ReactNode;
|
|
6
6
|
}
|
|
7
7
|
/**
|
|
8
|
-
*
|
|
8
|
+
* `Заголовок меню` используется для того, чтобы разделить `элементы меню` на категории в рамках одного меню.
|
|
9
|
+
*
|
|
10
|
+
* _Примечание_: `заголовок меню`, в отличие от `элемента меню` нельзя затаргетить с клавиатуры.
|
|
11
|
+
*
|
|
12
|
+
* Сущности в которых может быть использован `MenuHeader`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).
|
|
9
13
|
*/
|
|
10
14
|
declare function MenuHeader({ _enableIconPadding, children, ...rest }: MenuHeaderProps): JSX.Element;
|
|
11
15
|
declare namespace MenuHeader {
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
Базовый пример меню с заголовками.
|
|
2
|
+
|
|
3
|
+
```jsx harmony
|
|
4
|
+
import { Button, MenuItem, DropdownMenu } from '@skbkontur/react-ui';
|
|
5
|
+
|
|
6
|
+
<DropdownMenu
|
|
7
|
+
menuMaxHeight="10rem"
|
|
8
|
+
caption={<Button use="primary">Сотрудники компании</Button>}
|
|
9
|
+
>
|
|
10
|
+
<MenuHeader>Разработчики</MenuHeader>
|
|
11
|
+
<MenuItem>Вася</MenuItem>
|
|
12
|
+
<MenuItem>Петя</MenuItem>
|
|
13
|
+
<MenuItem>Маша</MenuItem>
|
|
14
|
+
<MenuHeader>Дизайнеры</MenuHeader>
|
|
15
|
+
<MenuItem>Галя</MenuItem>
|
|
16
|
+
<MenuItem>Гриша</MenuItem>
|
|
17
|
+
<MenuItem>Гена</MenuItem>
|
|
18
|
+
<MenuHeader>Продакты</MenuHeader>
|
|
19
|
+
<MenuItem>Валя</MenuItem>
|
|
20
|
+
<MenuItem>Аля</MenuItem>
|
|
21
|
+
<MenuItem>Артём</MenuItem>
|
|
22
|
+
</DropdownMenu>
|
|
23
|
+
```
|
|
@@ -9,7 +9,10 @@ import { CommonWrapper } from "../../../internal/CommonWrapper";
|
|
|
9
9
|
import { cx } from "../../../lib/theming/Emotion";
|
|
10
10
|
import { styles } from "../MenuItem.styles";
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
12
|
+
*
|
|
13
|
+
* `MenuItem` - это вложенный компонент, задающий базовые стили для элемента меню и позволяющий навигироваться по элементам меню с помощью клавиатуры.
|
|
14
|
+
*
|
|
15
|
+
* Сущности в которых может быть использован `MenuItem`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).
|
|
13
16
|
*/
|
|
14
17
|
|
|
15
18
|
export var MenuItem = /*#__PURE__*/function (_React$Component) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["MenuItem.tsx"],"names":["React","PropTypes","isFunction","ThemeContext","CommonWrapper","cx","styles","MenuItem","theme","mouseEntered","renderMain","props","link","comment","icon","loose","state","_enableIconPadding","component","onMouseEnter","onMouseLeave","rest","hover","disabled","iconElement","className","root","selected","withIcon","Boolean","children","content","Component","getComponent","handleMouseEnterFix","handleMouseLeave","commentHover","e","href","render","__KONTUR_REACT_UI__","__MENU_ITEM__","propTypes","node","bool","string","oneOfType","target","onClick","func","isMenuItem","child","isValidElement","Object","prototype","hasOwnProperty","call","type"],"mappings":"oOAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,SAAP,MAAsB,YAAtB;;AAEA,SAASC,UAAT,QAA2B,iBAA3B;AACA,SAASC,YAAT,QAA6B,gCAA7B;;AAEA,SAAsBC,aAAtB,QAAmE,8BAAnE;AACA,SAASC,EAAT,QAAmB,2BAAnB;;AAEA,SAASC,MAAT,QAAuB,mBAAvB
|
|
1
|
+
{"version":3,"sources":["MenuItem.tsx"],"names":["React","PropTypes","isFunction","ThemeContext","CommonWrapper","cx","styles","MenuItem","theme","mouseEntered","renderMain","props","link","comment","icon","loose","state","_enableIconPadding","component","onMouseEnter","onMouseLeave","rest","hover","disabled","iconElement","className","root","selected","withIcon","Boolean","children","content","Component","getComponent","handleMouseEnterFix","handleMouseLeave","commentHover","e","href","render","__KONTUR_REACT_UI__","__MENU_ITEM__","propTypes","node","bool","string","oneOfType","target","onClick","func","isMenuItem","child","isValidElement","Object","prototype","hasOwnProperty","call","type"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { isFunction } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './MenuItem.styles';\n\nexport type MenuItemState = null | 'hover' | 'selected' | void;\n\nexport interface MenuItemProps extends CommonProps {\n /** @ignore */\n _enableIconPadding?: boolean;\n\n comment?: React.ReactNode;\n disabled?: boolean;\n icon?: React.ReactElement<any>;\n\n /**\n * Меняет цвет текста на синий\n */\n link?: boolean;\n\n /** @ignore */\n loose?: boolean;\n\n /** @ignore */\n state?: MenuItemState;\n onClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n children?: React.ReactNode | ((state: MenuItemState) => React.ReactNode);\n target?: React.AnchorHTMLAttributes<HTMLAnchorElement>['target'];\n /**\n * HTML-атрибут title\n */\n title?: React.AnchorHTMLAttributes<HTMLAnchorElement>['title'];\n href?: React.AnchorHTMLAttributes<HTMLAnchorElement>['href'];\n onMouseEnter?: React.MouseEventHandler;\n onMouseLeave?: React.MouseEventHandler;\n\n component?: React.ComponentType<any>;\n}\n\n/**\n *\n * `MenuItem` - это вложенный компонент, задающий базовые стили для элемента меню и позволяющий навигироваться по элементам меню с помощью клавиатуры.\n *\n * Сущности в которых может быть использован `MenuItem`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).\n */\nexport class MenuItem extends React.Component<MenuItemProps> {\n public static __KONTUR_REACT_UI__ = 'MenuItem';\n public static __MENU_ITEM__ = true;\n\n public static propTypes = {\n comment: PropTypes.node,\n\n disabled: PropTypes.bool,\n\n href: PropTypes.string,\n\n icon: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n\n loose: PropTypes.bool,\n\n state: PropTypes.string,\n\n target: PropTypes.string,\n\n onClick: PropTypes.func,\n };\n\n private theme!: Theme;\n private mouseEntered = false;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return <CommonWrapper {...this.props}>{this.renderMain}</CommonWrapper>;\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain = (props: CommonWrapperRestProps<MenuItemProps>) => {\n const { link, comment, icon, loose, state, _enableIconPadding, component, onMouseEnter, onMouseLeave, ...rest } =\n props;\n\n const hover = state === 'hover' && !this.props.disabled;\n\n let iconElement = null;\n if (icon) {\n iconElement = <div className={styles.icon(this.theme)}>{icon}</div>;\n }\n\n const className = cx({\n [styles.root(this.theme)]: true,\n [styles.loose()]: !!loose,\n [styles.hover(this.theme)]: hover,\n [styles.selected(this.theme)]: state === 'selected',\n [styles.link(this.theme)]: !!link,\n [styles.withIcon(this.theme)]: Boolean(iconElement) || !!_enableIconPadding,\n [styles.disabled(this.theme)]: !!this.props.disabled,\n });\n\n const { children } = this.props;\n\n let content = children;\n if (isFunction(children)) {\n content = children(this.props.state);\n }\n\n const Component = this.getComponent();\n\n return (\n <Component\n {...rest}\n state={state}\n onMouseOver={this.handleMouseEnterFix}\n onMouseLeave={this.handleMouseLeave}\n className={className}\n tabIndex={-1}\n >\n {iconElement}\n {content}\n {this.props.comment && (\n <div\n data-tid=\"MenuItem__comment\"\n className={cx({\n [styles.comment(this.theme)]: true,\n [styles.commentHover(this.theme)]: hover,\n })}\n >\n {comment}\n </div>\n )}\n </Component>\n );\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 && this.props.onMouseEnter) {\n this.mouseEntered = true;\n this.props.onMouseEnter(e);\n }\n };\n\n private handleMouseLeave = (e: React.MouseEvent<HTMLElement>) => {\n this.mouseEntered = false;\n if (this.props.onMouseLeave) {\n this.props.onMouseLeave(e);\n }\n };\n\n private getComponent = () => {\n const { disabled, component, href } = this.props;\n\n if (disabled) {\n return 'button';\n }\n\n if (component) {\n return component;\n }\n\n if (href) {\n return 'a';\n }\n\n return 'button';\n };\n}\n\nexport const isMenuItem = (child: React.ReactNode): child is React.ReactElement<MenuItemProps> => {\n return React.isValidElement<MenuItemProps>(child)\n ? Object.prototype.hasOwnProperty.call(child.type, '__MENU_ITEM__')\n : false;\n};\n"]}
|
|
@@ -8,6 +8,9 @@ export interface MenuItemProps extends CommonProps {
|
|
|
8
8
|
comment?: React.ReactNode;
|
|
9
9
|
disabled?: boolean;
|
|
10
10
|
icon?: React.ReactElement<any>;
|
|
11
|
+
/**
|
|
12
|
+
* Меняет цвет текста на синий
|
|
13
|
+
*/
|
|
11
14
|
link?: boolean;
|
|
12
15
|
/** @ignore */
|
|
13
16
|
loose?: boolean;
|
|
@@ -16,6 +19,9 @@ export interface MenuItemProps extends CommonProps {
|
|
|
16
19
|
onClick?: (event: React.SyntheticEvent<HTMLElement>) => void;
|
|
17
20
|
children?: React.ReactNode | ((state: MenuItemState) => React.ReactNode);
|
|
18
21
|
target?: React.AnchorHTMLAttributes<HTMLAnchorElement>['target'];
|
|
22
|
+
/**
|
|
23
|
+
* HTML-атрибут title
|
|
24
|
+
*/
|
|
19
25
|
title?: React.AnchorHTMLAttributes<HTMLAnchorElement>['title'];
|
|
20
26
|
href?: React.AnchorHTMLAttributes<HTMLAnchorElement>['href'];
|
|
21
27
|
onMouseEnter?: React.MouseEventHandler;
|
|
@@ -23,7 +29,10 @@ export interface MenuItemProps extends CommonProps {
|
|
|
23
29
|
component?: React.ComponentType<any>;
|
|
24
30
|
}
|
|
25
31
|
/**
|
|
26
|
-
*
|
|
32
|
+
*
|
|
33
|
+
* `MenuItem` - это вложенный компонент, задающий базовые стили для элемента меню и позволяющий навигироваться по элементам меню с помощью клавиатуры.
|
|
34
|
+
*
|
|
35
|
+
* Сущности в которых может быть использован `MenuItem`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).
|
|
27
36
|
*/
|
|
28
37
|
export declare class MenuItem extends React.Component<MenuItemProps> {
|
|
29
38
|
static __KONTUR_REACT_UI__: string;
|
|
@@ -1,7 +1,109 @@
|
|
|
1
|
+
Меню с базовыми элементами меню.
|
|
2
|
+
|
|
3
|
+
```jsx harmony
|
|
4
|
+
import { Button, MenuItem, DropdownMenu } from '@skbkontur/react-ui';
|
|
5
|
+
|
|
6
|
+
<DropdownMenu
|
|
7
|
+
caption={<Button use="primary">Открыть меню с базовыми элементами меню</Button>}
|
|
8
|
+
>
|
|
9
|
+
<MenuItem>Базовый элемент меню</MenuItem>
|
|
10
|
+
<MenuItem>Ещё один базовый элемент меню</MenuItem>
|
|
11
|
+
<MenuItem>И ещё один</MenuItem>
|
|
12
|
+
</DropdownMenu>
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Меню с отключёнными и базовыми элементами меню.
|
|
16
|
+
<br/>
|
|
17
|
+
К отключённым элементам меню не применяются стили при наведении и их нельзя затаргетить с клавиатуры.
|
|
18
|
+
|
|
1
19
|
```jsx harmony
|
|
2
|
-
import {
|
|
20
|
+
import { Button, MenuItem, DropdownMenu } from '@skbkontur/react-ui';
|
|
21
|
+
|
|
22
|
+
<DropdownMenu
|
|
23
|
+
caption={<Button use="primary">Открыть меню с базовыми и отключёнными элементами</Button>}
|
|
24
|
+
>
|
|
25
|
+
<MenuItem>Это базовый элемент меню</MenuItem>
|
|
26
|
+
<MenuItem disabled>А это отключённый</MenuItem>
|
|
27
|
+
<MenuItem>А это снова базовый</MenuItem>
|
|
28
|
+
<MenuItem disabled>И снова отключённый</MenuItem>
|
|
29
|
+
<MenuItem disabled>И вот ещё один отключённый</MenuItem>
|
|
30
|
+
</DropdownMenu>
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Меню с элементами меню содержащими описание.
|
|
34
|
+
|
|
35
|
+
```jsx harmony
|
|
36
|
+
import { Button, MenuItem, DropdownMenu } from '@skbkontur/react-ui';
|
|
37
|
+
|
|
38
|
+
<DropdownMenu
|
|
39
|
+
caption={<Button use="primary">Открыть меню с причастными к Pied Piper</Button>}
|
|
40
|
+
>
|
|
41
|
+
<MenuItem comment="Системный инженер">Bertram Gilfoyle</MenuItem>
|
|
42
|
+
<MenuItem comment="Hooli CEO">Gavin Belson</MenuItem>
|
|
43
|
+
<MenuItem comment="Java-разработчик">Dinesh Chugtai</MenuItem>
|
|
44
|
+
<MenuItem comment="Основатель Pied Piper">Richard Hendricks</MenuItem>
|
|
45
|
+
<MenuItem comment="Владелец инкубатора">Erlich Bachman</MenuItem>
|
|
46
|
+
</DropdownMenu>
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Меню с элементами меню содержащими иконки.
|
|
50
|
+
|
|
51
|
+
```jsx harmony
|
|
52
|
+
import { Button, MenuItem, DropdownMenu } from '@skbkontur/react-ui';
|
|
53
|
+
import DeviceSmartphoneIcon from '@skbkontur/react-icons/DeviceSmartphone';
|
|
54
|
+
import OkIcon from '@skbkontur/react-icons/Ok';
|
|
55
|
+
import ThumbDownIcon from '@skbkontur/react-icons/ThumbDown';
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
<DropdownMenu
|
|
59
|
+
caption={<Button use="primary">Открыть меню с иконками</Button>}
|
|
60
|
+
>
|
|
61
|
+
<MenuItem icon={<OkIcon />}>Базовый элемент меню c иконкой</MenuItem>
|
|
62
|
+
<MenuItem
|
|
63
|
+
disabled
|
|
64
|
+
icon={<ThumbDownIcon />}
|
|
65
|
+
>
|
|
66
|
+
Отключённый элемент меню с иконкой
|
|
67
|
+
</MenuItem>
|
|
68
|
+
<MenuItem
|
|
69
|
+
icon={<DeviceSmartphoneIcon />}
|
|
70
|
+
comment="А слева вы можете видеть икону 21-го века"
|
|
71
|
+
>
|
|
72
|
+
Элемент меню с описанием и иконкой
|
|
73
|
+
</MenuItem>
|
|
74
|
+
</DropdownMenu>
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Меню с элементами меню обёрнутыми в контрол ссылки.
|
|
78
|
+
|
|
79
|
+
```jsx harmony
|
|
80
|
+
import { Button, MenuItem, DropdownMenu, Link } from '@skbkontur/react-ui';
|
|
81
|
+
|
|
82
|
+
const LinkMenuItem = ({link, title}) => {
|
|
83
|
+
return <MenuItem
|
|
84
|
+
href={link}
|
|
85
|
+
component={({ href, ...rest }) => {
|
|
86
|
+
return <Link target="_blank" rel="noopener noreferrer" href={href} {...rest} />
|
|
87
|
+
}}
|
|
88
|
+
>
|
|
89
|
+
{title}
|
|
90
|
+
</MenuItem>
|
|
91
|
+
}
|
|
3
92
|
|
|
4
|
-
<
|
|
5
|
-
|
|
6
|
-
|
|
93
|
+
<DropdownMenu
|
|
94
|
+
caption={<Button use="primary">Открыть меню с ссылками</Button>}
|
|
95
|
+
>
|
|
96
|
+
<LinkMenuItem
|
|
97
|
+
link="http://tech.skbkontur.ru/react-ui/"
|
|
98
|
+
title="Начало документации"
|
|
99
|
+
/>
|
|
100
|
+
<LinkMenuItem
|
|
101
|
+
link="https://guides.kontur.ru/"
|
|
102
|
+
title="Контур Гайды"
|
|
103
|
+
/>
|
|
104
|
+
<LinkMenuItem
|
|
105
|
+
link="https://github.com/skbkontur/retail-ui/graphs/contributors"
|
|
106
|
+
title="Список прекрасных людей"
|
|
107
|
+
/>
|
|
108
|
+
</DropdownMenu>
|
|
7
109
|
```
|
|
@@ -3,7 +3,9 @@ import { ThemeContext } from "../../../lib/theming/ThemeContext";
|
|
|
3
3
|
import { CommonWrapper } from "../../../internal/CommonWrapper";
|
|
4
4
|
import { styles } from "../MenuSeparator.styles";
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
6
|
+
* Добавляет разделительную линию между элементами меню.
|
|
7
|
+
*
|
|
8
|
+
* Сущности в которых может быть использован `MenuSeparator`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).
|
|
7
9
|
*/
|
|
8
10
|
|
|
9
11
|
function MenuSeparator(props) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["MenuSeparator.tsx"],"names":["React","useContext","ThemeContext","CommonWrapper","styles","MenuSeparator","props","theme","root","__KONTUR_REACT_UI__"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;;AAEA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAAsBC,aAAtB,QAA2C,8BAA3C;;AAEA,SAASC,MAAT,QAAuB,wBAAvB;;;AAGA;AACA;AACA;AACA,SAASC,aAAT,CAAuBC,KAAvB,EAAkD;AAChD,MAAMC,KAAK,GAAGN,UAAU,CAACC,YAAD,CAAxB;;AAEA;AACE,wBAAC,aAAD,EAAmBI,KAAnB;AACE,iCAAK,SAAS,EAAEF,MAAM,CAACI,IAAP,CAAYD,KAAZ,CAAhB,GADF,CADF;;;AAKD;;AAEDF,aAAa,CAACI,mBAAd,GAAoC,eAApC;;AAEA,SAASJ,aAAT","sourcesContent":["import React, { useContext } from 'react';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\n\nimport { styles } from './MenuSeparator.styles';\n\nexport type MenuSeparatorProps = CommonProps;\n/**\n *
|
|
1
|
+
{"version":3,"sources":["MenuSeparator.tsx"],"names":["React","useContext","ThemeContext","CommonWrapper","styles","MenuSeparator","props","theme","root","__KONTUR_REACT_UI__"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;;AAEA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAAsBC,aAAtB,QAA2C,8BAA3C;;AAEA,SAASC,MAAT,QAAuB,wBAAvB;;;AAGA;AACA;AACA;AACA;AACA;AACA,SAASC,aAAT,CAAuBC,KAAvB,EAAkD;AAChD,MAAMC,KAAK,GAAGN,UAAU,CAACC,YAAD,CAAxB;;AAEA;AACE,wBAAC,aAAD,EAAmBI,KAAnB;AACE,iCAAK,SAAS,EAAEF,MAAM,CAACI,IAAP,CAAYD,KAAZ,CAAhB,GADF,CADF;;;AAKD;;AAEDF,aAAa,CAACI,mBAAd,GAAoC,eAApC;;AAEA,SAASJ,aAAT","sourcesContent":["import React, { useContext } from 'react';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\n\nimport { styles } from './MenuSeparator.styles';\n\nexport type MenuSeparatorProps = CommonProps;\n/**\n * Добавляет разделительную линию между элементами меню.\n *\n * Сущности в которых может быть использован `MenuSeparator`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).\n */\nfunction MenuSeparator(props: MenuSeparatorProps) {\n const theme = useContext(ThemeContext);\n\n return (\n <CommonWrapper {...props}>\n <div className={styles.root(theme)} />\n </CommonWrapper>\n );\n}\n\nMenuSeparator.__KONTUR_REACT_UI__ = 'MenuSeparator';\n\nexport { MenuSeparator };\n"]}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { CommonProps } from '../../internal/CommonWrapper';
|
|
2
2
|
export declare type MenuSeparatorProps = CommonProps;
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* Добавляет разделительную линию между элементами меню.
|
|
5
|
+
*
|
|
6
|
+
* Сущности в которых может быть использован `MenuSeparator`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).
|
|
5
7
|
*/
|
|
6
8
|
declare function MenuSeparator(props: MenuSeparatorProps): JSX.Element;
|
|
7
9
|
declare namespace MenuSeparator {
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
Пример меню с разделителями.
|
|
2
|
+
|
|
3
|
+
```jsx harmony
|
|
4
|
+
import { Button, MenuHeader, MenuItem, DropdownMenu } from '@skbkontur/react-ui';
|
|
5
|
+
|
|
6
|
+
<DropdownMenu caption={<Button use="primary">Открыть меню с разделителями</Button>}>
|
|
7
|
+
<MenuItem>У меня есть разделитель</MenuItem>
|
|
8
|
+
<MenuSeparator />
|
|
9
|
+
<MenuItem>У меня тоже!</MenuItem>
|
|
10
|
+
<MenuSeparator />
|
|
11
|
+
<MenuItem>А у меня нет :(</MenuItem>
|
|
12
|
+
<MenuItem>Как и у меня :(</MenuItem>
|
|
13
|
+
</DropdownMenu>;
|
|
14
|
+
```
|
|
@@ -110,11 +110,12 @@ export var Toggle = /*#__PURE__*/function (_React$Component) {
|
|
|
110
110
|
warning = _this$props.warning,
|
|
111
111
|
error = _this$props.error,
|
|
112
112
|
loading = _this$props.loading,
|
|
113
|
-
color = _this$props.color
|
|
113
|
+
color = _this$props.color,
|
|
114
|
+
id = _this$props.id;
|
|
114
115
|
var disabled = this.props.disabled || loading;
|
|
115
116
|
var checked = this.isUncontrolled() ? this.state.checked : this.props.checked;
|
|
116
117
|
var containerClassNames = cx(styles.container(this.theme), (_cx = {}, _cx[styles.containerDisabled(this.theme)] = !!disabled, _cx[globalClasses.container] = true, _cx[globalClasses.containerDisabled] = !!disabled, _cx[globalClasses.containerLoading] = loading, _cx));
|
|
117
|
-
var labelClassNames = cx(styles.root(this.theme), (_cx2 = {}, _cx2[styles.rootLeft()] = captionPosition === 'left', _cx2[styles.disabled()] = !!disabled, _cx2));
|
|
118
|
+
var labelClassNames = cx(styles.root(this.theme), (_cx2 = {}, _cx2[styles.rootLeft()] = captionPosition === 'left', _cx2[styles.disabled()] = !!disabled, _cx2[globalClasses.disabled] = !!disabled, _cx2));
|
|
118
119
|
var caption = null;
|
|
119
120
|
|
|
120
121
|
if (children) {
|
|
@@ -140,7 +141,8 @@ export var Toggle = /*#__PURE__*/function (_React$Component) {
|
|
|
140
141
|
onFocus: this.handleFocus,
|
|
141
142
|
onBlur: this.handleBlur,
|
|
142
143
|
ref: this.inputRef,
|
|
143
|
-
disabled: disabled
|
|
144
|
+
disabled: disabled,
|
|
145
|
+
id: id
|
|
144
146
|
}), /*#__PURE__*/React.createElement("div", {
|
|
145
147
|
className: containerClassNames,
|
|
146
148
|
style: checked && color && !disabled ? {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Toggle.tsx"],"names":["React","PropTypes","warning","keyListener","ThemeContext","CommonWrapper","cx","styles","globalClasses","colorWarningShown","Toggle","props","theme","input","focus","isTabPressed","inputRef","element","handleChange","event","onValueChange","target","checked","isUncontrolled","setState","onChange","handleFocus","onFocus","focusByTab","handleBlur","onBlur","state","defaultChecked","componentDidMount","autoFocus","render","renderMain","children","captionPosition","error","loading","color","disabled","containerClassNames","container","containerDisabled","containerLoading","labelClassNames","root","rootLeft","caption","captionClass","captionLeft","disabledCaption","outline","isWarning","isError","focused","wrapper","backgroundColor","boxShadow","undefined","activeBackground","background","activeBackgroundLoading","disabledBackground","handle","handleDisabled","Component","__KONTUR_REACT_UI__","propTypes","bool","func","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport warning from 'warning';\n\nimport { keyListener } from '../../lib/events/keyListener';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles, globalClasses } from './Toggle.styles';\n\nlet colorWarningShown = false;\n\nexport interface ToggleProps extends CommonProps {\n children?: React.ReactNode;\n /**\n * Положение `children` относительно переключателя.\n * @default 'right'\n */\n captionPosition: 'left' | 'right';\n /**\n * Состояние `тогла`, если `true` - `тогл` будет включён, иначе выключен.\n * @default false\n */\n checked?: boolean;\n /**\n * Делает `тогл` включенным по умолчанию.\n */\n defaultChecked?: boolean;\n /**\n * Отключает `тогл`.\n */\n disabled?: boolean;\n /**\n * Событие вызывающееся, когда значение `тогла` меняется, передаёт текущее значение тогла в переданную функцию.\n */\n onValueChange?: (value: boolean) => void;\n /**\n * Событие вызывающееся при клике на `тогл`.\n */\n onChange?: React.ChangeEventHandler<HTMLInputElement>;\n /**\n * Добавляет оранжевую обводку вокруг переключателя.\n * @default false\n */\n warning?: boolean;\n /**\n * Добавляет красную обводку вокруг переключателя.\n * @default false\n */\n error?: boolean;\n /**\n * Добавляет стили для состояния `loading` и отключает `тогл`.\n */\n loading?: boolean;\n /**\n * Если true, выставляет фокус на `тогле` после загрузки страницы.\n */\n autoFocus?: boolean;\n /**\n * Событие вызывающееся, когда `тогл` получает фокус.\n */\n onFocus?: React.FocusEventHandler<HTMLInputElement>;\n /**\n * Событие вызывающееся, когда `тогл` теряет фокус.\n */\n onBlur?: React.FocusEventHandler<HTMLInputElement>;\n /**\n * @deprecated используйте переменную темы `toggleBgChecked` вместо этого пропа.\n */\n color?: React.CSSProperties['color'];\n}\n\nexport interface ToggleState {\n checked?: boolean;\n focusByTab?: boolean;\n}\n\n/**\n * _Примечание:_ под тоглом понимается полный компонент т.е. надпись + переключатель, а не просто переключатель.\n */\nexport class Toggle extends React.Component<ToggleProps, ToggleState> {\n public static __KONTUR_REACT_UI__ = 'Toggle';\n\n public static propTypes = {\n checked: PropTypes.bool,\n defaultChecked: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n loading: PropTypes.bool,\n warning: PropTypes.bool,\n onValueChange: PropTypes.func,\n color(props: ToggleProps) {\n if (props.color && !colorWarningShown) {\n warning(false, `[Toggle]: prop 'color' is deprecated. Please, use theme variable 'toggleBgChecked' instead. `);\n colorWarningShown = true;\n }\n },\n };\n\n public static defaultProps = {\n disabled: false,\n loading: false,\n captionPosition: 'right',\n };\n\n private theme!: Theme;\n private input: HTMLInputElement | null = null;\n\n constructor(props: ToggleProps) {\n super(props);\n\n this.state = {\n focusByTab: false,\n checked: props.defaultChecked,\n };\n }\n\n public componentDidMount() {\n if (this.props.autoFocus) {\n keyListener.isTabPressed = true;\n this.focus();\n }\n }\n\n /**\n * @public\n */\n public focus = () => {\n if (this.input) {\n keyListener.isTabPressed = true;\n this.input.focus();\n }\n };\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 renderMain() {\n const { children, captionPosition, warning, error, loading, color } = this.props;\n const disabled = this.props.disabled || loading;\n const checked = this.isUncontrolled() ? this.state.checked : this.props.checked;\n\n const containerClassNames = cx(styles.container(this.theme), {\n [styles.containerDisabled(this.theme)]: !!disabled,\n [globalClasses.container]: true,\n [globalClasses.containerDisabled]: !!disabled,\n [globalClasses.containerLoading]: loading,\n });\n\n const labelClassNames = cx(styles.root(this.theme), {\n [styles.rootLeft()]: captionPosition === 'left',\n [styles.disabled()]: !!disabled,\n });\n\n let caption = null;\n if (children) {\n const captionClass = cx(styles.caption(this.theme), {\n [styles.captionLeft(this.theme)]: captionPosition === 'left',\n [styles.disabledCaption(this.theme)]: !!disabled,\n });\n caption = <span className={captionClass}>{children}</span>;\n }\n\n return (\n <CommonWrapper {...this.props}>\n <label className={labelClassNames}>\n <div\n className={cx(styles.outline(this.theme), {\n [styles.isWarning(this.theme)]: !!warning,\n [styles.isError(this.theme)]: !!error,\n [styles.focused(this.theme)]: !disabled && !!this.state.focusByTab,\n })}\n >\n <span className={cx(styles.wrapper(this.theme))}>\n <input\n type=\"checkbox\"\n checked={checked}\n onChange={this.handleChange}\n className={styles.input(this.theme)}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n ref={this.inputRef}\n disabled={disabled}\n />\n <div\n className={containerClassNames}\n style={\n checked && color && !disabled\n ? {\n backgroundColor: color,\n boxShadow: `inset 0 0 0 1px ${color}`,\n }\n : undefined\n }\n >\n <div\n className={cx(styles.activeBackground(), globalClasses.background, {\n [styles.activeBackgroundLoading(this.theme)]: loading,\n [styles.disabledBackground(this.theme)]: disabled,\n })}\n style={\n checked && color && !disabled\n ? {\n backgroundColor: color,\n boxShadow: `inset 0 0 0 1px ${color}`,\n }\n : undefined\n }\n />\n </div>\n <div\n className={cx(styles.handle(this.theme), globalClasses.handle, {\n [styles.handleDisabled(this.theme)]: disabled,\n })}\n />\n </span>\n </div>\n {caption}\n </label>\n </CommonWrapper>\n );\n }\n\n private inputRef = (element: HTMLInputElement) => {\n this.input = element;\n };\n\n private handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (this.props.onValueChange) {\n this.props.onValueChange(event.target.checked);\n }\n\n if (this.isUncontrolled()) {\n this.setState({\n checked: event.target.checked,\n });\n }\n\n if (this.props.onChange) {\n this.props.onChange(event);\n }\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n\n if (keyListener.isTabPressed) {\n this.setState({ focusByTab: true });\n }\n };\n\n private handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n if (this.props.onBlur) {\n this.props.onBlur(event);\n }\n this.setState({\n focusByTab: false,\n });\n };\n\n private isUncontrolled() {\n return this.props.checked === undefined;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["Toggle.tsx"],"names":["React","PropTypes","warning","keyListener","ThemeContext","CommonWrapper","cx","styles","globalClasses","colorWarningShown","Toggle","props","theme","input","focus","isTabPressed","inputRef","element","handleChange","event","onValueChange","target","checked","isUncontrolled","setState","onChange","handleFocus","onFocus","focusByTab","handleBlur","onBlur","state","defaultChecked","componentDidMount","autoFocus","render","renderMain","children","captionPosition","error","loading","color","id","disabled","containerClassNames","container","containerDisabled","containerLoading","labelClassNames","root","rootLeft","caption","captionClass","captionLeft","disabledCaption","outline","isWarning","isError","focused","wrapper","backgroundColor","boxShadow","undefined","activeBackground","background","activeBackgroundLoading","disabledBackground","handle","handleDisabled","Component","__KONTUR_REACT_UI__","propTypes","bool","func","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport warning from 'warning';\n\nimport { keyListener } from '../../lib/events/keyListener';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles, globalClasses } from './Toggle.styles';\n\nlet colorWarningShown = false;\n\nexport interface ToggleProps extends CommonProps {\n children?: React.ReactNode;\n /**\n * Положение `children` относительно переключателя.\n * @default 'right'\n */\n captionPosition: 'left' | 'right';\n /**\n * Состояние `тогла`, если `true` - `тогл` будет включён, иначе выключен.\n * @default false\n */\n checked?: boolean;\n /**\n * Делает `тогл` включенным по умолчанию.\n */\n defaultChecked?: boolean;\n /**\n * Отключает `тогл`.\n */\n disabled?: boolean;\n /**\n * Событие вызывающееся, когда значение `тогла` меняется, передаёт текущее значение тогла в переданную функцию.\n */\n onValueChange?: (value: boolean) => void;\n /**\n * Событие вызывающееся при клике на `тогл`.\n */\n onChange?: React.ChangeEventHandler<HTMLInputElement>;\n /**\n * Добавляет оранжевую обводку вокруг переключателя.\n * @default false\n */\n warning?: boolean;\n /**\n * Добавляет красную обводку вокруг переключателя.\n * @default false\n */\n error?: boolean;\n /**\n * Добавляет стили для состояния `loading` и отключает `тогл`.\n */\n loading?: boolean;\n /**\n * Если true, выставляет фокус на `тогле` после загрузки страницы.\n */\n autoFocus?: boolean;\n /**\n * Событие вызывающееся, когда `тогл` получает фокус.\n */\n onFocus?: React.FocusEventHandler<HTMLInputElement>;\n /**\n * Событие вызывающееся, когда `тогл` теряет фокус.\n */\n onBlur?: React.FocusEventHandler<HTMLInputElement>;\n /**\n * @deprecated используйте переменную темы `toggleBgChecked` вместо этого пропа.\n */\n color?: React.CSSProperties['color'];\n /**\n * HTML-атрибут `id` для передачи во внутренний `<input />`.\n */\n id?: string;\n}\n\nexport interface ToggleState {\n checked?: boolean;\n focusByTab?: boolean;\n}\n\n/**\n * _Примечание:_ под тоглом понимается полный компонент т.е. надпись + переключатель, а не просто переключатель.\n */\nexport class Toggle extends React.Component<ToggleProps, ToggleState> {\n public static __KONTUR_REACT_UI__ = 'Toggle';\n\n public static propTypes = {\n checked: PropTypes.bool,\n defaultChecked: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n loading: PropTypes.bool,\n warning: PropTypes.bool,\n onValueChange: PropTypes.func,\n color(props: ToggleProps) {\n if (props.color && !colorWarningShown) {\n warning(false, `[Toggle]: prop 'color' is deprecated. Please, use theme variable 'toggleBgChecked' instead. `);\n colorWarningShown = true;\n }\n },\n };\n\n public static defaultProps = {\n disabled: false,\n loading: false,\n captionPosition: 'right',\n };\n\n private theme!: Theme;\n private input: HTMLInputElement | null = null;\n\n constructor(props: ToggleProps) {\n super(props);\n\n this.state = {\n focusByTab: false,\n checked: props.defaultChecked,\n };\n }\n\n public componentDidMount() {\n if (this.props.autoFocus) {\n keyListener.isTabPressed = true;\n this.focus();\n }\n }\n\n /**\n * @public\n */\n public focus = () => {\n if (this.input) {\n keyListener.isTabPressed = true;\n this.input.focus();\n }\n };\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 renderMain() {\n const { children, captionPosition, warning, error, loading, color, id } = this.props;\n const disabled = this.props.disabled || loading;\n const checked = this.isUncontrolled() ? this.state.checked : this.props.checked;\n\n const containerClassNames = cx(styles.container(this.theme), {\n [styles.containerDisabled(this.theme)]: !!disabled,\n [globalClasses.container]: true,\n [globalClasses.containerDisabled]: !!disabled,\n [globalClasses.containerLoading]: loading,\n });\n\n const labelClassNames = cx(styles.root(this.theme), {\n [styles.rootLeft()]: captionPosition === 'left',\n [styles.disabled()]: !!disabled,\n [globalClasses.disabled]: !!disabled,\n });\n\n let caption = null;\n if (children) {\n const captionClass = cx(styles.caption(this.theme), {\n [styles.captionLeft(this.theme)]: captionPosition === 'left',\n [styles.disabledCaption(this.theme)]: !!disabled,\n });\n caption = <span className={captionClass}>{children}</span>;\n }\n\n return (\n <CommonWrapper {...this.props}>\n <label className={labelClassNames}>\n <div\n className={cx(styles.outline(this.theme), {\n [styles.isWarning(this.theme)]: !!warning,\n [styles.isError(this.theme)]: !!error,\n [styles.focused(this.theme)]: !disabled && !!this.state.focusByTab,\n })}\n >\n <span className={cx(styles.wrapper(this.theme))}>\n <input\n type=\"checkbox\"\n checked={checked}\n onChange={this.handleChange}\n className={styles.input(this.theme)}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n ref={this.inputRef}\n disabled={disabled}\n id={id}\n />\n <div\n className={containerClassNames}\n style={\n checked && color && !disabled\n ? {\n backgroundColor: color,\n boxShadow: `inset 0 0 0 1px ${color}`,\n }\n : undefined\n }\n >\n <div\n className={cx(styles.activeBackground(), globalClasses.background, {\n [styles.activeBackgroundLoading(this.theme)]: loading,\n [styles.disabledBackground(this.theme)]: disabled,\n })}\n style={\n checked && color && !disabled\n ? {\n backgroundColor: color,\n boxShadow: `inset 0 0 0 1px ${color}`,\n }\n : undefined\n }\n />\n </div>\n <div\n className={cx(styles.handle(this.theme), globalClasses.handle, {\n [styles.handleDisabled(this.theme)]: disabled,\n })}\n />\n </span>\n </div>\n {caption}\n </label>\n </CommonWrapper>\n );\n }\n\n private inputRef = (element: HTMLInputElement) => {\n this.input = element;\n };\n\n private handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (this.props.onValueChange) {\n this.props.onValueChange(event.target.checked);\n }\n\n if (this.isUncontrolled()) {\n this.setState({\n checked: event.target.checked,\n });\n }\n\n if (this.props.onChange) {\n this.props.onChange(event);\n }\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n\n if (keyListener.isTabPressed) {\n this.setState({ focusByTab: true });\n }\n };\n\n private handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n if (this.props.onBlur) {\n this.props.onBlur(event);\n }\n this.setState({\n focusByTab: false,\n });\n };\n\n private isUncontrolled() {\n return this.props.checked === undefined;\n }\n}\n"]}
|
|
@@ -59,6 +59,10 @@ export interface ToggleProps extends CommonProps {
|
|
|
59
59
|
* @deprecated используйте переменную темы `toggleBgChecked` вместо этого пропа.
|
|
60
60
|
*/
|
|
61
61
|
color?: React.CSSProperties['color'];
|
|
62
|
+
/**
|
|
63
|
+
* HTML-атрибут `id` для передачи во внутренний `<input />`.
|
|
64
|
+
*/
|
|
65
|
+
id?: string;
|
|
62
66
|
}
|
|
63
67
|
export interface ToggleState {
|
|
64
68
|
checked?: boolean;
|
|
@@ -26,6 +26,19 @@ const [checked, setChecked] = React.useState(false);
|
|
|
26
26
|
</Toggle>
|
|
27
27
|
```
|
|
28
28
|
|
|
29
|
+
Тогл с внешним `<label/>`.
|
|
30
|
+
|
|
31
|
+
```jsx harmony
|
|
32
|
+
import { Gapped } from '@skbkontur/react-ui';
|
|
33
|
+
|
|
34
|
+
const [checked, setChecked] = React.useState(false);
|
|
35
|
+
|
|
36
|
+
<Gapped>
|
|
37
|
+
<Toggle id="toggle-1" checked={checked} onValueChange={setChecked}/>
|
|
38
|
+
<label htmlFor="toggle-1">Внешний label</label>
|
|
39
|
+
</Gapped>
|
|
40
|
+
```
|
|
41
|
+
|
|
29
42
|
Тогл получающий фокус после загрузки страницы.
|
|
30
43
|
|
|
31
44
|
```jsx harmony
|
|
@@ -6,6 +6,7 @@ import { css, memoizeStyle, prefix } from "../../../lib/theming/Emotion";
|
|
|
6
6
|
export var globalClasses = prefix('toggle')({
|
|
7
7
|
handle: 'handle',
|
|
8
8
|
container: 'container',
|
|
9
|
+
disabled: 'disabled',
|
|
9
10
|
containerDisabled: 'container-disabled',
|
|
10
11
|
containerLoading: 'container-loading',
|
|
11
12
|
background: 'background'
|
|
@@ -14,15 +15,14 @@ export var styles = memoizeStyle({
|
|
|
14
15
|
root: function root(t) {
|
|
15
16
|
var handleWidthWithBorders = t.toggleHeight;
|
|
16
17
|
var handleActiveWidth = "calc(" + handleWidthWithBorders + " - 2 * " + t.toggleBorderWidth + " + " + t.toggleHandleActiveWidthIncrement + ")";
|
|
17
|
-
return css(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n display: inline-flex;\n cursor: pointer;\n\n &:hover .", " {\n background: ", ";\n }\n &:active .", " {\n width: ", ";\n }\n &:active input:checked ~ .", " {\n transform: translateX(", ") translateX(-", ")\n translateX(-", ");\n }\n "])), globalClasses.handle, t.toggleBgHover, globalClasses.handle, handleActiveWidth, globalClasses.handle, t.toggleWidth, handleWidthWithBorders, t.toggleHandleActiveWidthIncrement);
|
|
18
|
+
return css(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n display: inline-flex;\n cursor: pointer;\n\n &:hover .", " {\n background: ", ";\n }\n &:active:not(.", ") .", " {\n width: ", ";\n }\n &:active:not(.", ") input:checked ~ .", " {\n transform: translateX(", ") translateX(-", ")\n translateX(-", ");\n }\n "])), globalClasses.handle, t.toggleBgHover, globalClasses.disabled, globalClasses.handle, handleActiveWidth, globalClasses.disabled, globalClasses.handle, t.toggleWidth, handleWidthWithBorders, t.toggleHandleActiveWidthIncrement);
|
|
18
19
|
},
|
|
19
20
|
handle: function handle(t) {
|
|
20
21
|
var handleSize = "calc(" + t.toggleHeight + " - 2 * " + t.toggleBorderWidth + ")";
|
|
21
22
|
return css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n background: ", ";\n border-radius: ", ";\n bottom: ", ";\n box-shadow: 0 ", " 0 0 rgba(0, 0, 0, 0.15), 0 0 0 ", " rgba(0, 0, 0, 0.15);\n height: ", ";\n left: ", ";\n position: absolute;\n top: ", ";\n transition: 0.2s ease-in;\n width: ", ";\n "])), t.toggleBg, t.toggleHandleBorderRadius, t.toggleBorderWidth, t.toggleBorderWidth, t.toggleBorderWidth, handleSize, t.toggleBorderWidth, t.toggleBorderWidth, handleSize);
|
|
22
23
|
},
|
|
23
24
|
handleDisabled: function handleDisabled(t) {
|
|
24
|
-
|
|
25
|
-
return css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose(["\n background: ", " !important; // override root hover/active styles\n width: ", " !important; // override root active styles\n "])), t.toggleDisabledHandleBg, handleSize);
|
|
25
|
+
return css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose(["\n background: ", " !important; // override root hover/active styles\n "])), t.toggleDisabledHandleBg);
|
|
26
26
|
},
|
|
27
27
|
input: function input(t) {
|
|
28
28
|
var handleWidthWithBorders = t.toggleHeight;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Toggle.styles.ts"],"names":["css","memoizeStyle","prefix","globalClasses","handle","container","containerDisabled","containerLoading","background","styles","root","t","handleWidthWithBorders","toggleHeight","handleActiveWidth","toggleBorderWidth","toggleHandleActiveWidthIncrement","toggleBgHover","toggleWidth","handleSize","toggleBg","toggleHandleBorderRadius","handleDisabled","toggleDisabledHandleBg","input","toggleBgChecked","toggleBorderColorDisabledChecked","toggleBgDisabledChecked","toggleBorderColor","toggleBorderRadius","toggleBgDisabled","toggleBorderColorDisabled","focused","outlineColorFocus","toggleOutlineWidth","toggleFocusShadowColor","activeBackground","disabledBackground","activeBackgroundLoading","toggleBgActive","isWarning","toggleShadowColorWarning","isError","toggleShadowColorError","outline","toggleBaseBg","wrapper","disabled","rootLeft","caption","toggleTextColor","toggleCaptionGap","disabledCaption","textColorDisabled","captionLeft"],"mappings":"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","sourcesContent":["import { css, memoizeStyle, prefix } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const globalClasses = prefix('toggle')({\n handle: 'handle',\n container: 'container',\n containerDisabled: 'container-disabled',\n containerLoading: 'container-loading',\n background: 'background',\n});\n\nexport const styles = memoizeStyle({\n root(t: Theme) {\n const handleWidthWithBorders = t.toggleHeight;\n const handleActiveWidth = `calc(${handleWidthWithBorders} - 2 * ${t.toggleBorderWidth} + ${t.toggleHandleActiveWidthIncrement})`;\n return css`\n display: inline-flex;\n cursor: pointer;\n\n &:hover .${globalClasses.handle} {\n background: ${t.toggleBgHover};\n }\n &:active .${globalClasses.handle} {\n width: ${handleActiveWidth};\n }\n &:active input:checked ~ .${globalClasses.handle} {\n transform: translateX(${t.toggleWidth}) translateX(-${handleWidthWithBorders})\n translateX(-${t.toggleHandleActiveWidthIncrement});\n }\n `;\n },\n\n handle(t: Theme) {\n const handleSize = `calc(${t.toggleHeight} - 2 * ${t.toggleBorderWidth})`;\n return css`\n background: ${t.toggleBg};\n border-radius: ${t.toggleHandleBorderRadius};\n bottom: ${t.toggleBorderWidth};\n box-shadow: 0 ${t.toggleBorderWidth} 0 0 rgba(0, 0, 0, 0.15), 0 0 0 ${t.toggleBorderWidth} rgba(0, 0, 0, 0.15);\n height: ${handleSize};\n left: ${t.toggleBorderWidth};\n position: absolute;\n top: ${t.toggleBorderWidth};\n transition: 0.2s ease-in;\n width: ${handleSize};\n `;\n },\n\n handleDisabled(t: Theme) {\n const handleSize = `calc(${t.toggleHeight} - 2 * ${t.toggleBorderWidth})`;\n return css`\n background: ${t.toggleDisabledHandleBg} !important; // override root hover/active styles\n width: ${handleSize} !important; // override root active styles\n `;\n },\n\n input(t: Theme) {\n const handleWidthWithBorders = t.toggleHeight;\n return css`\n position: absolute;\n opacity: 0;\n\n &:focus {\n outline: none;\n }\n &:checked ~ .${globalClasses.container} {\n box-shadow: inset 0 0 0 ${t.toggleBorderWidth} ${t.toggleBgChecked};\n background: ${t.toggleBgChecked};\n transition: background 0s 0.2s;\n }\n &:checked ~ .${globalClasses.containerDisabled} {\n box-shadow: inset 0 0 0 ${t.toggleBorderWidth} ${t.toggleBorderColorDisabledChecked};\n background: ${t.toggleBgDisabledChecked};\n transition: background 0s 0.2s;\n }\n &:checked ~ .${globalClasses.containerLoading} {\n background: ${t.toggleBorderColor};\n box-shadow: inset 0 0 0 ${t.toggleBorderWidth} ${t.toggleBorderColor};\n }\n &:checked ~ .${globalClasses.container} .${globalClasses.background} {\n width: 70%;\n background: ${t.toggleBgChecked};\n }\n &:checked ~ .${globalClasses.containerDisabled} .${globalClasses.background} {\n width: 70%;\n background: ${t.toggleBgDisabledChecked};\n border-radius: calc(${t.toggleHeight} * 0.5) 0 0 calc(${t.toggleHeight} * 0.5);\n box-shadow: inset 0 0 0 1px ${t.toggleBorderColorDisabledChecked};\n }\n &:checked ~ .${globalClasses.handle} {\n transform: translateX(${t.toggleWidth}) translateX(-${handleWidthWithBorders});\n }\n `;\n },\n\n container(t: Theme) {\n return css`\n border-radius: ${t.toggleBorderRadius};\n box-shadow: inset 0 0 0 ${t.toggleBorderWidth} ${t.toggleBorderColor};\n height: 100%;\n overflow: hidden;\n position: absolute;\n width: 100%;\n /* fixes overflow issue in Safari: https://bugs.webkit.org/show_bug.cgi?id=98538 */\n z-index: 0;\n `;\n },\n\n containerDisabled(t: Theme) {\n return css`\n background: ${t.toggleBgDisabled};\n box-shadow: inset 0 0 0 1px ${t.toggleBorderColorDisabled};\n `;\n },\n\n focused(t: Theme) {\n return css`\n box-shadow: 0 0 0 1px ${t.outlineColorFocus}, 0 0 0 ${t.toggleOutlineWidth} ${t.toggleFocusShadowColor};\n `;\n },\n\n activeBackground() {\n return css`\n background: inherit;\n bottom: 0;\n left: 0;\n position: absolute;\n top: 0;\n transition: 0.2s ease-in;\n width: 10px;\n `;\n },\n\n disabledBackground(t: Theme) {\n return css`\n box-shadow: inset 0 0 0 1px ${t.toggleBorderColorDisabled};\n width: 0;\n `;\n },\n\n activeBackgroundLoading(t: Theme) {\n return css`\n background: ${t.toggleBgActive};\n `;\n },\n\n isWarning(t: Theme) {\n return css`\n box-shadow: 0 0 0 1px ${t.outlineColorFocus}, 0 0 0 ${t.toggleOutlineWidth} ${t.toggleShadowColorWarning};\n `;\n },\n\n isError(t: Theme) {\n return css`\n box-shadow: 0 0 0 1px ${t.outlineColorFocus}, 0 0 0 ${t.toggleOutlineWidth} ${t.toggleShadowColorError};\n `;\n },\n\n outline(t: Theme) {\n return css`\n background: ${t.toggleBaseBg};\n border-radius: ${t.toggleBorderRadius};\n `;\n },\n\n wrapper(t: Theme) {\n return css`\n display: inline-block;\n height: ${t.toggleHeight};\n position: relative;\n width: ${t.toggleWidth};\n flex: 1 0 ${t.toggleWidth};\n\n &::after {\n content: '';\n display: inline-block;\n }\n `;\n },\n\n disabled() {\n return css`\n cursor: default;\n `;\n },\n\n rootLeft() {\n return css`\n flex-direction: row-reverse;\n `;\n },\n\n caption(t: Theme) {\n return css`\n color: ${t.toggleTextColor};\n padding: 0 0 0 ${t.toggleCaptionGap};\n `;\n },\n\n disabledCaption(t: Theme) {\n return css`\n color: ${t.textColorDisabled};\n `;\n },\n\n captionLeft(t: Theme) {\n return css`\n color: ${t.toggleTextColor};\n padding: 0 ${t.toggleCaptionGap} 0 0;\n `;\n },\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["Toggle.styles.ts"],"names":["css","memoizeStyle","prefix","globalClasses","handle","container","disabled","containerDisabled","containerLoading","background","styles","root","t","handleWidthWithBorders","toggleHeight","handleActiveWidth","toggleBorderWidth","toggleHandleActiveWidthIncrement","toggleBgHover","toggleWidth","handleSize","toggleBg","toggleHandleBorderRadius","handleDisabled","toggleDisabledHandleBg","input","toggleBgChecked","toggleBorderColorDisabledChecked","toggleBgDisabledChecked","toggleBorderColor","toggleBorderRadius","toggleBgDisabled","toggleBorderColorDisabled","focused","outlineColorFocus","toggleOutlineWidth","toggleFocusShadowColor","activeBackground","disabledBackground","activeBackgroundLoading","toggleBgActive","isWarning","toggleShadowColorWarning","isError","toggleShadowColorError","outline","toggleBaseBg","wrapper","rootLeft","caption","toggleTextColor","toggleCaptionGap","disabledCaption","textColorDisabled","captionLeft"],"mappings":"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","sourcesContent":["import { css, memoizeStyle, prefix } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const globalClasses = prefix('toggle')({\n handle: 'handle',\n container: 'container',\n disabled: 'disabled',\n containerDisabled: 'container-disabled',\n containerLoading: 'container-loading',\n background: 'background',\n});\n\nexport const styles = memoizeStyle({\n root(t: Theme) {\n const handleWidthWithBorders = t.toggleHeight;\n const handleActiveWidth = `calc(${handleWidthWithBorders} - 2 * ${t.toggleBorderWidth} + ${t.toggleHandleActiveWidthIncrement})`;\n return css`\n display: inline-flex;\n cursor: pointer;\n\n &:hover .${globalClasses.handle} {\n background: ${t.toggleBgHover};\n }\n &:active:not(.${globalClasses.disabled}) .${globalClasses.handle} {\n width: ${handleActiveWidth};\n }\n &:active:not(.${globalClasses.disabled}) input:checked ~ .${globalClasses.handle} {\n transform: translateX(${t.toggleWidth}) translateX(-${handleWidthWithBorders})\n translateX(-${t.toggleHandleActiveWidthIncrement});\n }\n `;\n },\n\n handle(t: Theme) {\n const handleSize = `calc(${t.toggleHeight} - 2 * ${t.toggleBorderWidth})`;\n return css`\n background: ${t.toggleBg};\n border-radius: ${t.toggleHandleBorderRadius};\n bottom: ${t.toggleBorderWidth};\n box-shadow: 0 ${t.toggleBorderWidth} 0 0 rgba(0, 0, 0, 0.15), 0 0 0 ${t.toggleBorderWidth} rgba(0, 0, 0, 0.15);\n height: ${handleSize};\n left: ${t.toggleBorderWidth};\n position: absolute;\n top: ${t.toggleBorderWidth};\n transition: 0.2s ease-in;\n width: ${handleSize};\n `;\n },\n\n handleDisabled(t: Theme) {\n return css`\n background: ${t.toggleDisabledHandleBg} !important; // override root hover/active styles\n `;\n },\n\n input(t: Theme) {\n const handleWidthWithBorders = t.toggleHeight;\n return css`\n position: absolute;\n opacity: 0;\n\n &:focus {\n outline: none;\n }\n &:checked ~ .${globalClasses.container} {\n box-shadow: inset 0 0 0 ${t.toggleBorderWidth} ${t.toggleBgChecked};\n background: ${t.toggleBgChecked};\n transition: background 0s 0.2s;\n }\n &:checked ~ .${globalClasses.containerDisabled} {\n box-shadow: inset 0 0 0 ${t.toggleBorderWidth} ${t.toggleBorderColorDisabledChecked};\n background: ${t.toggleBgDisabledChecked};\n transition: background 0s 0.2s;\n }\n &:checked ~ .${globalClasses.containerLoading} {\n background: ${t.toggleBorderColor};\n box-shadow: inset 0 0 0 ${t.toggleBorderWidth} ${t.toggleBorderColor};\n }\n &:checked ~ .${globalClasses.container} .${globalClasses.background} {\n width: 70%;\n background: ${t.toggleBgChecked};\n }\n &:checked ~ .${globalClasses.containerDisabled} .${globalClasses.background} {\n width: 70%;\n background: ${t.toggleBgDisabledChecked};\n border-radius: calc(${t.toggleHeight} * 0.5) 0 0 calc(${t.toggleHeight} * 0.5);\n box-shadow: inset 0 0 0 1px ${t.toggleBorderColorDisabledChecked};\n }\n &:checked ~ .${globalClasses.handle} {\n transform: translateX(${t.toggleWidth}) translateX(-${handleWidthWithBorders});\n }\n `;\n },\n\n container(t: Theme) {\n return css`\n border-radius: ${t.toggleBorderRadius};\n box-shadow: inset 0 0 0 ${t.toggleBorderWidth} ${t.toggleBorderColor};\n height: 100%;\n overflow: hidden;\n position: absolute;\n width: 100%;\n /* fixes overflow issue in Safari: https://bugs.webkit.org/show_bug.cgi?id=98538 */\n z-index: 0;\n `;\n },\n\n containerDisabled(t: Theme) {\n return css`\n background: ${t.toggleBgDisabled};\n box-shadow: inset 0 0 0 1px ${t.toggleBorderColorDisabled};\n `;\n },\n\n focused(t: Theme) {\n return css`\n box-shadow: 0 0 0 1px ${t.outlineColorFocus}, 0 0 0 ${t.toggleOutlineWidth} ${t.toggleFocusShadowColor};\n `;\n },\n\n activeBackground() {\n return css`\n background: inherit;\n bottom: 0;\n left: 0;\n position: absolute;\n top: 0;\n transition: 0.2s ease-in;\n width: 10px;\n `;\n },\n\n disabledBackground(t: Theme) {\n return css`\n box-shadow: inset 0 0 0 1px ${t.toggleBorderColorDisabled};\n width: 0;\n `;\n },\n\n activeBackgroundLoading(t: Theme) {\n return css`\n background: ${t.toggleBgActive};\n `;\n },\n\n isWarning(t: Theme) {\n return css`\n box-shadow: 0 0 0 1px ${t.outlineColorFocus}, 0 0 0 ${t.toggleOutlineWidth} ${t.toggleShadowColorWarning};\n `;\n },\n\n isError(t: Theme) {\n return css`\n box-shadow: 0 0 0 1px ${t.outlineColorFocus}, 0 0 0 ${t.toggleOutlineWidth} ${t.toggleShadowColorError};\n `;\n },\n\n outline(t: Theme) {\n return css`\n background: ${t.toggleBaseBg};\n border-radius: ${t.toggleBorderRadius};\n `;\n },\n\n wrapper(t: Theme) {\n return css`\n display: inline-block;\n height: ${t.toggleHeight};\n position: relative;\n width: ${t.toggleWidth};\n flex: 1 0 ${t.toggleWidth};\n\n &::after {\n content: '';\n display: inline-block;\n }\n `;\n },\n\n disabled() {\n return css`\n cursor: default;\n `;\n },\n\n rootLeft() {\n return css`\n flex-direction: row-reverse;\n `;\n },\n\n caption(t: Theme) {\n return css`\n color: ${t.toggleTextColor};\n padding: 0 0 0 ${t.toggleCaptionGap};\n `;\n },\n\n disabledCaption(t: Theme) {\n return css`\n color: ${t.textColorDisabled};\n `;\n },\n\n captionLeft(t: Theme) {\n return css`\n color: ${t.toggleTextColor};\n padding: 0 ${t.toggleCaptionGap} 0 0;\n `;\n },\n});\n"]}
|
|
@@ -6,12 +6,15 @@ import { PopupMenu } from "../../../internal/PopupMenu";
|
|
|
6
6
|
import { isProductionEnv, isTestEnv } from "../../../lib/currentEnvironment";
|
|
7
7
|
import { CommonWrapper } from "../../../internal/CommonWrapper";
|
|
8
8
|
/**
|
|
9
|
-
* Меню, раскрывающееся по клику на переданный в
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* Если
|
|
14
|
-
*
|
|
9
|
+
* Меню, раскрывающееся по клику на переданный в `caption` элемент.
|
|
10
|
+
*
|
|
11
|
+
* Положение меню задаётся с помощью массива `positions` и работает так:
|
|
12
|
+
* первое значение в массиве - дефолтная позиция, меню раскроется на этой позиции, если оно не будет выходить за пределы `viewport`,
|
|
13
|
+
* если раскрыться в дефолтной позиции не получится - будет использована следующая позиция, и так далее, пока не будет достигнут конец массива. Если все положения из списка будут выходить за пределы `viewport`, в качестве положения будет использовано первое значение в массиве.
|
|
14
|
+
*
|
|
15
|
+
* Если меню должно раскрываться только в одну сторону - массив `positions` должен содержать только один элемент: сторону, в которую должно открываться меню.
|
|
16
|
+
*
|
|
17
|
+
* Если массив `positions` не передан (или передан пустой массив), будут использованы всевозможные значения.
|
|
15
18
|
*/
|
|
16
19
|
|
|
17
20
|
export var TooltipMenu = /*#__PURE__*/function (_React$Component) {
|