@skbkontur/react-ui 4.15.6 → 4.15.7-Toggle-disableAnimations
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 +12 -0
- package/cjs/components/Input/InputLayout/InputLayoutAside.js +1 -1
- package/cjs/components/Input/InputLayout/InputLayoutAside.js.map +1 -1
- package/cjs/components/Input/InputLayout/InputLayoutAsideIcon.js +4 -4
- package/cjs/components/Input/InputLayout/InputLayoutAsideIcon.js.map +1 -1
- package/cjs/components/Toggle/Toggle.styles.js +4 -1
- package/cjs/components/Toggle/Toggle.styles.js.map +1 -1
- package/cjs/internal/CustomComboBox/CustomComboBox.js +3 -3
- package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
- package/components/Input/InputLayout/InputLayoutAside/InputLayoutAside.js +1 -2
- package/components/Input/InputLayout/InputLayoutAside/InputLayoutAside.js.map +1 -1
- package/components/Input/InputLayout/InputLayoutAsideIcon/InputLayoutAsideIcon.js +7 -5
- package/components/Input/InputLayout/InputLayoutAsideIcon/InputLayoutAsideIcon.js.map +1 -1
- package/components/Toggle/Toggle.styles/Toggle.styles.js +1 -1
- package/components/Toggle/Toggle.styles/Toggle.styles.js.map +1 -1
- package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js +8 -4
- package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
- package/package.json +3 -6
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,18 @@
|
|
|
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
|
+
## [4.15.7](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@4.15.6...@skbkontur/react-ui@4.15.7) (2023-08-25)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **ComboBox:** remove flushSync console error for React18 ([#3253](https://github.com/skbkontur/retail-ui/issues/3253)) ([e71cbad](https://github.com/skbkontur/retail-ui/commit/e71cbad60e3c7be20ead3381b49800cda9c383f7))
|
|
12
|
+
* **Input:** repair icon props ([#3248](https://github.com/skbkontur/retail-ui/issues/3248)) ([54d0349](https://github.com/skbkontur/retail-ui/commit/54d03496a834aa044314f51788048eea2af0ed58))
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
6
18
|
## [4.15.6](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@4.15.5...@skbkontur/react-ui@4.15.6) (2023-08-02)
|
|
7
19
|
|
|
8
20
|
**Note:** Version bump only for package @skbkontur/react-ui
|
|
@@ -13,7 +13,7 @@ var _InputLayoutAsideText = require("./InputLayoutAsideText");
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
var InputLayoutAside = function InputLayoutAside(_ref) {var
|
|
16
|
+
var InputLayoutAside = function InputLayoutAside(_ref) {var icon = _ref.icon,text = _ref.text,side = _ref.side;
|
|
17
17
|
var asideClassName = _InputLayout.stylesLayout.aside();
|
|
18
18
|
|
|
19
19
|
var _icon = /*#__PURE__*/_react.default.createElement(_InputLayoutAsideIcon.InputLayoutAsideIcon, { key: "icon", icon: icon, side: side });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["InputLayoutAside.tsx"],"names":["InputLayoutAside","icon","text","side","asideClassName","stylesLayout","aside","_icon","_text","child","ZERO_WIDTH_SPACE"],"mappings":"8JAAA;;;AAGA;;AAEA;AACA;AACA;;;;;;;;AAQO,IAAMA,gBAAgE,GAAG,SAAnEA,gBAAmE,
|
|
1
|
+
{"version":3,"sources":["InputLayoutAside.tsx"],"names":["InputLayoutAside","icon","text","side","asideClassName","stylesLayout","aside","_icon","_text","child","ZERO_WIDTH_SPACE"],"mappings":"8JAAA;;;AAGA;;AAEA;AACA;AACA;;;;;;;;AAQO,IAAMA,gBAAgE,GAAG,SAAnEA,gBAAmE,OAA0B,KAAvBC,IAAuB,QAAvBA,IAAuB,CAAjBC,IAAiB,QAAjBA,IAAiB,CAAXC,IAAW,QAAXA,IAAW;AACxG,MAAMC,cAAc,GAAGC,0BAAaC,KAAb,EAAvB;;AAEA,MAAMC,KAAK,gBAAG,6BAAC,0CAAD,IAAsB,GAAG,EAAC,MAA1B,EAAiC,IAAI,EAAEN,IAAvC,EAA6C,IAAI,EAAEE,IAAnD,GAAd;AACA,MAAMK,KAAK,gBAAG,6BAAC,0CAAD,IAAsB,GAAG,EAAC,MAA1B,EAAiC,IAAI,EAAEN,IAAvC,GAAd;;AAEA,MAAMO,KAAK,GAAGN,IAAI,KAAK,MAAT,GAAkB,CAACI,KAAD,EAAQC,KAAR,CAAlB,GAAmC,CAACA,KAAD,EAAQD,KAAR,CAAjD;;AAEA;AACE,2CAAM,SAAS,EAAEH,cAAjB;AACGM,2BADH;AAEGD,IAAAA,KAFH,CADF;;;AAMD,CAdM,C","sourcesContent":["import React from 'react';\n\nimport { InputProps } from '../Input';\nimport { ZERO_WIDTH_SPACE } from '../../../lib/chars';\n\nimport { stylesLayout } from './InputLayout.styles';\nimport { InputLayoutAsideIcon } from './InputLayoutAsideIcon';\nimport { InputLayoutAsideText } from './InputLayoutAsideText';\n\nexport interface InputLayoutAsideProps {\n icon: InputProps['leftIcon'] | InputProps['rightIcon'];\n text: InputProps['prefix'] | InputProps['suffix'];\n side: 'left' | 'right';\n}\n\nexport const InputLayoutAside: React.FunctionComponent<InputLayoutAsideProps> = ({ icon, text, side }) => {\n const asideClassName = stylesLayout.aside();\n\n const _icon = <InputLayoutAsideIcon key=\"icon\" icon={icon} side={side} />;\n const _text = <InputLayoutAsideText key=\"text\" text={text} />;\n\n const child = side === 'left' ? [_icon, _text] : [_text, _icon];\n\n return (\n <span className={asideClassName}>\n {ZERO_WIDTH_SPACE}\n {child}\n </span>\n );\n};\n"]}
|
|
@@ -13,7 +13,7 @@ var _InputLayout = require("./InputLayout.styles");
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
var InputLayoutAsideIcon = function InputLayoutAsideIcon(_ref) {var icon = _ref.icon,side = _ref.side;
|
|
16
|
+
var InputLayoutAsideIcon = function InputLayoutAsideIcon(_ref) {var _ref$icon = _ref.icon,icon = _ref$icon === void 0 ? null : _ref$icon,side = _ref.side;
|
|
17
17
|
var theme = _react.default.useContext(_ThemeContext.ThemeContext);
|
|
18
18
|
var _React$useContext = _react.default.useContext(_InputLayoutContext.InputLayoutContext),focused = _React$useContext.focused,disabled = _React$useContext.disabled,size = _React$useContext.size;
|
|
19
19
|
|
|
@@ -28,9 +28,9 @@ var InputLayoutAsideIcon = function InputLayoutAsideIcon(_ref) {var icon = _ref.
|
|
|
28
28
|
large: parseInt(theme.inputIconGapLarge) };
|
|
29
29
|
|
|
30
30
|
|
|
31
|
-
var _icon =
|
|
32
|
-
if (icon && (0,
|
|
33
|
-
_icon =
|
|
31
|
+
var _icon = icon instanceof Function ? icon() : icon;
|
|
32
|
+
if ((0, _reactIs.isElement)(icon) && (0, _utils.isKonturIcon)(icon)) {var _icon$props$size;
|
|
33
|
+
_icon = /*#__PURE__*/_react.default.cloneElement(icon, { size: (_icon$props$size = icon.props.size) != null ? _icon$props$size : sizes[size] });
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
var style = {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["InputLayoutAsideIcon.tsx"],"names":["InputLayoutAsideIcon","icon","side","theme","React","useContext","ThemeContext","InputLayoutContext","focused","disabled","size","sizes","small","parseInt","inputIconSizeSmall","medium","inputIconSizeMedium","large","inputIconSizeLarge","gaps","inputIconGapSmall","inputIconGapMedium","inputIconGapLarge","_icon","cloneElement","props","style","marginLeft","marginRight","stylesLayout","aside","iconFocus","iconDisabled"],"mappings":"kKAAA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;;;;;AAMO,IAAMA,oBAAwE,GAAG,SAA3EA,oBAA2E,
|
|
1
|
+
{"version":3,"sources":["InputLayoutAsideIcon.tsx"],"names":["InputLayoutAsideIcon","icon","side","theme","React","useContext","ThemeContext","InputLayoutContext","focused","disabled","size","sizes","small","parseInt","inputIconSizeSmall","medium","inputIconSizeMedium","large","inputIconSizeLarge","gaps","inputIconGapSmall","inputIconGapMedium","inputIconGapLarge","_icon","Function","cloneElement","props","style","marginLeft","marginRight","stylesLayout","aside","iconFocus","iconDisabled"],"mappings":"kKAAA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;;;;;AAMO,IAAMA,oBAAwE,GAAG,SAA3EA,oBAA2E,OAA2B,sBAAxBC,IAAwB,CAAxBA,IAAwB,0BAAjB,IAAiB,aAAXC,IAAW,QAAXA,IAAW;AACjH,MAAMC,KAAK,GAAGC,eAAMC,UAAN,CAAiBC,0BAAjB,CAAd;AACA,0BAAoCF,eAAMC,UAAN,CAAiBE,sCAAjB,CAApC,CAAQC,OAAR,qBAAQA,OAAR,CAAiBC,QAAjB,qBAAiBA,QAAjB,CAA2BC,IAA3B,qBAA2BA,IAA3B;;AAEA,MAAMC,KAAgC,GAAG;AACvCC,IAAAA,KAAK,EAAEC,QAAQ,CAACV,KAAK,CAACW,kBAAP,CADwB;AAEvCC,IAAAA,MAAM,EAAEF,QAAQ,CAACV,KAAK,CAACa,mBAAP,CAFuB;AAGvCC,IAAAA,KAAK,EAAEJ,QAAQ,CAACV,KAAK,CAACe,kBAAP,CAHwB,EAAzC;;AAKA,MAAMC,IAA+B,GAAG;AACtCP,IAAAA,KAAK,EAAEC,QAAQ,CAACV,KAAK,CAACiB,iBAAP,CADuB;AAEtCL,IAAAA,MAAM,EAAEF,QAAQ,CAACV,KAAK,CAACkB,kBAAP,CAFsB;AAGtCJ,IAAAA,KAAK,EAAEJ,QAAQ,CAACV,KAAK,CAACmB,iBAAP,CAHuB,EAAxC;;;AAMA,MAAIC,KAAK,GAAGtB,IAAI,YAAYuB,QAAhB,GAA2BvB,IAAI,EAA/B,GAAoCA,IAAhD;AACA,MAAI,wBAAUA,IAAV,KAAmB,yBAAaA,IAAb,CAAvB,EAA2C;AACzCsB,IAAAA,KAAK,gBAAGnB,eAAMqB,YAAN,CAAmBxB,IAAnB,EAAyB,EAAES,IAAI,sBAAET,IAAI,CAACyB,KAAL,CAAWhB,IAAb,+BAAqBC,KAAK,CAACD,IAAD,CAAhC,EAAzB,CAAR;AACD;;AAED,MAAMiB,KAA0B,GAAG,EAAnC;AACA,MAAIzB,IAAJ,EAAU;AACR,QAAIA,IAAI,KAAK,OAAb,EAAsB;AACpByB,MAAAA,KAAK,CAACC,UAAN,GAAmBT,IAAI,CAACT,IAAD,CAAvB;AACD,KAFD,MAEO;AACLiB,MAAAA,KAAK,CAACE,WAAN,GAAoBV,IAAI,CAACT,IAAD,CAAxB;AACD;AACF;;AAED;AACEa,IAAAA,KAAK;AACH;AACE,MAAA,KAAK,EAAEI,KADT;AAEE,MAAA,SAAS,EAAE;AACTG,gCAAaC,KAAb,EADS;AAETD,gCAAa7B,IAAb,CAAkBE,KAAlB,CAFS;AAGTK,MAAAA,OAAO,IAAIsB,0BAAaE,SAAb,CAAuB7B,KAAvB,CAHF;AAITM,MAAAA,QAAQ,IAAIqB,0BAAaG,YAAb,EAJH,CAFb;;;AASGV,IAAAA,KATH,CAFJ;;;;AAeD,CA5CM,C","sourcesContent":["import React from 'react';\nimport { isElement } from 'react-is';\n\nimport { isKonturIcon } from '../../../lib/utils';\nimport { InputProps, InputSize } from '../Input';\nimport { cx } from '../../../lib/theming/Emotion';\nimport { ThemeContext } from '../../../lib/theming/ThemeContext';\n\nimport { InputLayoutContext } from './InputLayoutContext';\nimport { stylesLayout } from './InputLayout.styles';\nexport interface InputLayoutAsideIconProps {\n icon: InputProps['leftIcon'] | InputProps['rightIcon'];\n side: 'left' | 'right';\n}\n\nexport const InputLayoutAsideIcon: React.FunctionComponent<InputLayoutAsideIconProps> = ({ icon = null, side }) => {\n const theme = React.useContext(ThemeContext);\n const { focused, disabled, size } = React.useContext(InputLayoutContext);\n\n const sizes: Record<InputSize, number> = {\n small: parseInt(theme.inputIconSizeSmall),\n medium: parseInt(theme.inputIconSizeMedium),\n large: parseInt(theme.inputIconSizeLarge),\n };\n const gaps: Record<InputSize, number> = {\n small: parseInt(theme.inputIconGapSmall),\n medium: parseInt(theme.inputIconGapMedium),\n large: parseInt(theme.inputIconGapLarge),\n };\n\n let _icon = icon instanceof Function ? icon() : icon;\n if (isElement(icon) && isKonturIcon(icon)) {\n _icon = React.cloneElement(icon, { size: icon.props.size ?? sizes[size] });\n }\n\n const style: React.CSSProperties = {};\n if (side) {\n if (side === 'right') {\n style.marginLeft = gaps[size];\n } else {\n style.marginRight = gaps[size];\n }\n }\n\n return (\n _icon && (\n <span\n style={style}\n className={cx(\n stylesLayout.aside(),\n stylesLayout.icon(theme),\n focused && stylesLayout.iconFocus(theme),\n disabled && stylesLayout.iconDisabled(),\n )}\n >\n {_icon}\n </span>\n )\n );\n};\n"]}
|
|
@@ -51,10 +51,13 @@ var styles = (0, _Emotion.memoizeStyle)({
|
|
|
51
51
|
},
|
|
52
52
|
|
|
53
53
|
disableAnimation: function disableAnimation() {
|
|
54
|
-
return (0, _Emotion.css)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteralLoose2.default)(["\n &,\n
|
|
54
|
+
return (0, _Emotion.css)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteralLoose2.default)(["\n &,\n *,\n & input:enabled {\n ~ .", ", ~ .", " {\n transition: none !important;\n }\n }\n "])),
|
|
55
55
|
|
|
56
56
|
|
|
57
57
|
|
|
58
|
+
globalClasses.container, globalClasses.handle);
|
|
59
|
+
|
|
60
|
+
|
|
58
61
|
|
|
59
62
|
|
|
60
63
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Toggle.styles.ts"],"names":["globalClasses","handle","container","disabled","containerDisabled","containerLoading","background","styles","root","t","css","toggleLineHeight","toggleFontSize","toggleBgHover","toggleWidth","activeHandle","handleWidthWithBorders","toggleHeight","handleActiveWidth","toggleBorderWidth","toggleHandleActiveWidthIncrement","disableAnimation","toggleHandleBg","toggleHandleBorderRadius","toggleHandleBoxShadowOld","toggleHandleSize","toggleHandleLeft","toggleHandleTop","handleDisabled","toggleDisabledHandleBg","input","toggleBgChecked","toggleBorderColorDisabledChecked","toggleBgDisabledChecked","toggleBorderColor","toggleCheckedBg","toggleCheckedBgHover","input2022","toggleContainerBg","toggleContainerBoxShadow","toggleHandleBoxShadow","toggleContainerBgChecked","toggleContainerBoxShadowChecked","toggleHandleBgChecked","toggleHandleBoxShadowChecked","toggleContainerBgHover","toggleContainerBoxShadowHover","toggleHandleBgHover","toggleHandleBoxShadowHover","toggleContainerBgCheckedHover","toggleContainerBoxShadowCheckedHover","toggleHandleBgCheckedHover","toggleHandleBoxShadowCheckedHover","toggleContainerBgDisabled","toggleContainerBoxShadowDisabled","toggleHandleBgDisabled","toggleHandleBoxShadowDisabled","toggleContainerBgDisabledChecked","toggleContainerBoxShadowDisabledChecked","toggleHandleBgDisabledChecked","toggleHandleBoxShadowDisabledChecked","toggleBorderRadius","toggleBgDisabled","toggleBorderColorDisabled","focused","toggleOutlineColorFocus","toggleOutlineWidth","toggleFocusShadowColor","activeBackground","disabledBackground","activeBackgroundLoading","toggleBgActive","isWarning","toggleShadowColorWarning","isError","toggleShadowColorError","button","labGrotesqueCompenstation","parseInt","labGrotesqueBaselineCompensation","fontSize","checkboxFontSize","baselineCompensation","isChrome","toggleBaseBg","toggleButtonOffsetY","buttonRight","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';\nimport { isChrome } from '../../lib/client';\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 return css`\n display: inline-flex;\n cursor: pointer;\n align-items: baseline;\n position: relative;\n line-height: ${t.toggleLineHeight};\n font-size: ${t.toggleFontSize};\n\n &:hover .${globalClasses.handle} {\n background: ${t.toggleBgHover};\n }\n\n &::before {\n // non-breaking space.\n // makes a correct space for absolutely positioned button,\n // and also height and baseline for toggle without caption.\n content: '\\\\00A0';\n display: inline-block;\n width: ${t.toggleWidth};\n flex: 0 0 auto;\n }\n `;\n },\n\n activeHandle(t: Theme) {\n const handleWidthWithBorders = t.toggleHeight;\n const handleActiveWidth = `calc(${handleWidthWithBorders} - 2 * ${t.toggleBorderWidth} + ${t.toggleHandleActiveWidthIncrement})`;\n return css`\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}) translateX(-4px);\n }\n `;\n },\n\n disableAnimation() {\n return css`\n &,\n * {\n transition: none !important;\n }\n `;\n },\n\n handle(t: Theme) {\n return css`\n background: ${t.toggleHandleBg};\n border-radius: ${t.toggleHandleBorderRadius};\n bottom: ${t.toggleBorderWidth};\n box-shadow: ${t.toggleHandleBoxShadowOld};\n height: ${t.toggleHandleSize};\n left: ${t.toggleHandleLeft};\n position: absolute;\n top: ${t.toggleHandleTop};\n transition: 0.2s ease-in;\n width: ${t.toggleHandleSize};\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 background: ${t.toggleCheckedBg};\n &:hover {\n background: ${t.toggleCheckedBgHover};\n }\n }\n `;\n },\n\n input2022(t: Theme) {\n return css`\n &:enabled {\n ~ .${globalClasses.container}, ~ .${globalClasses.handle} {\n transition: 0.2s ease-in !important;\n }\n :not(:checked) {\n ~ .${globalClasses.container} {\n background: ${t.toggleContainerBg};\n box-shadow: ${t.toggleContainerBoxShadow};\n }\n ~ .${globalClasses.handle} {\n background: ${t.toggleHandleBg};\n box-shadow: ${t.toggleHandleBoxShadow};\n }\n }\n :checked {\n ~ .${globalClasses.container} {\n background: ${t.toggleContainerBgChecked};\n box-shadow: ${t.toggleContainerBoxShadowChecked};\n }\n ~ .${globalClasses.handle} {\n background: ${t.toggleHandleBgChecked};\n box-shadow: ${t.toggleHandleBoxShadowChecked};\n }\n }\n }\n &:enabled:hover {\n :not(:checked) {\n ~ .${globalClasses.container} {\n background: ${t.toggleContainerBgHover};\n box-shadow: ${t.toggleContainerBoxShadowHover};\n }\n ~ .${globalClasses.handle} {\n background: ${t.toggleHandleBgHover};\n box-shadow: ${t.toggleHandleBoxShadowHover};\n }\n }\n :checked {\n ~ .${globalClasses.container} {\n background: ${t.toggleContainerBgCheckedHover};\n box-shadow: ${t.toggleContainerBoxShadowCheckedHover};\n }\n ~ .${globalClasses.handle} {\n background: ${t.toggleHandleBgCheckedHover};\n box-shadow: ${t.toggleHandleBoxShadowCheckedHover};\n }\n }\n }\n &:disabled {\n :not(:checked) {\n ~ .${globalClasses.container} {\n background: ${t.toggleContainerBgDisabled};\n box-shadow: ${t.toggleContainerBoxShadowDisabled};\n }\n ~ .${globalClasses.handle} {\n background: ${t.toggleHandleBgDisabled} !important;\n box-shadow: ${t.toggleHandleBoxShadowDisabled};\n }\n }\n :checked {\n ~ .${globalClasses.container} {\n background: ${t.toggleContainerBgDisabledChecked};\n box-shadow: ${t.toggleContainerBoxShadowDisabledChecked};\n }\n ~ .${globalClasses.handle} {\n background: ${t.toggleHandleBgDisabledChecked} !important;\n box-shadow: ${t.toggleHandleBoxShadowDisabledChecked};\n }\n }\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.toggleOutlineColorFocus}, 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.toggleOutlineColorFocus}, 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.toggleOutlineColorFocus}, 0 0 0 ${t.toggleOutlineWidth} ${t.toggleShadowColorError};\n `;\n },\n\n button(t: Theme) {\n const labGrotesqueCompenstation = parseInt(t.labGrotesqueBaselineCompensation);\n const fontSize = parseInt(t.checkboxFontSize);\n const baselineCompensation = fontSize <= 16 && isChrome ? -labGrotesqueCompenstation : 0;\n return css`\n position: absolute;\n left: 0;\n top: 0;\n height: ${t.toggleHeight};\n width: ${t.toggleWidth};\n flex: 1 0 ${t.toggleWidth};\n\n background: ${t.toggleBaseBg};\n border-radius: ${t.toggleBorderRadius};\n line-height: ${t.toggleHeight};\n\n margin-top: calc(${t.toggleButtonOffsetY} + ${baselineCompensation}px);\n `;\n },\n\n buttonRight() {\n return css`\n right: 0;\n left: auto;\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 line-height: ${t.toggleLineHeight};\n font-size: ${t.toggleFontSize};\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":["globalClasses","handle","container","disabled","containerDisabled","containerLoading","background","styles","root","t","css","toggleLineHeight","toggleFontSize","toggleBgHover","toggleWidth","activeHandle","handleWidthWithBorders","toggleHeight","handleActiveWidth","toggleBorderWidth","toggleHandleActiveWidthIncrement","disableAnimation","toggleHandleBg","toggleHandleBorderRadius","toggleHandleBoxShadowOld","toggleHandleSize","toggleHandleLeft","toggleHandleTop","handleDisabled","toggleDisabledHandleBg","input","toggleBgChecked","toggleBorderColorDisabledChecked","toggleBgDisabledChecked","toggleBorderColor","toggleCheckedBg","toggleCheckedBgHover","input2022","toggleContainerBg","toggleContainerBoxShadow","toggleHandleBoxShadow","toggleContainerBgChecked","toggleContainerBoxShadowChecked","toggleHandleBgChecked","toggleHandleBoxShadowChecked","toggleContainerBgHover","toggleContainerBoxShadowHover","toggleHandleBgHover","toggleHandleBoxShadowHover","toggleContainerBgCheckedHover","toggleContainerBoxShadowCheckedHover","toggleHandleBgCheckedHover","toggleHandleBoxShadowCheckedHover","toggleContainerBgDisabled","toggleContainerBoxShadowDisabled","toggleHandleBgDisabled","toggleHandleBoxShadowDisabled","toggleContainerBgDisabledChecked","toggleContainerBoxShadowDisabledChecked","toggleHandleBgDisabledChecked","toggleHandleBoxShadowDisabledChecked","toggleBorderRadius","toggleBgDisabled","toggleBorderColorDisabled","focused","toggleOutlineColorFocus","toggleOutlineWidth","toggleFocusShadowColor","activeBackground","disabledBackground","activeBackgroundLoading","toggleBgActive","isWarning","toggleShadowColorWarning","isError","toggleShadowColorError","button","labGrotesqueCompenstation","parseInt","labGrotesqueBaselineCompensation","fontSize","checkboxFontSize","baselineCompensation","isChrome","toggleBaseBg","toggleButtonOffsetY","buttonRight","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';\nimport { isChrome } from '../../lib/client';\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 return css`\n display: inline-flex;\n cursor: pointer;\n align-items: baseline;\n position: relative;\n line-height: ${t.toggleLineHeight};\n font-size: ${t.toggleFontSize};\n\n &:hover .${globalClasses.handle} {\n background: ${t.toggleBgHover};\n }\n\n &::before {\n // non-breaking space.\n // makes a correct space for absolutely positioned button,\n // and also height and baseline for toggle without caption.\n content: '\\\\00A0';\n display: inline-block;\n width: ${t.toggleWidth};\n flex: 0 0 auto;\n }\n `;\n },\n\n activeHandle(t: Theme) {\n const handleWidthWithBorders = t.toggleHeight;\n const handleActiveWidth = `calc(${handleWidthWithBorders} - 2 * ${t.toggleBorderWidth} + ${t.toggleHandleActiveWidthIncrement})`;\n return css`\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}) translateX(-4px);\n }\n `;\n },\n\n disableAnimation() {\n return css`\n &,\n *,\n & input:enabled {\n ~ .${globalClasses.container}, ~ .${globalClasses.handle} {\n transition: none !important;\n }\n }\n `;\n },\n\n handle(t: Theme) {\n return css`\n background: ${t.toggleHandleBg};\n border-radius: ${t.toggleHandleBorderRadius};\n bottom: ${t.toggleBorderWidth};\n box-shadow: ${t.toggleHandleBoxShadowOld};\n height: ${t.toggleHandleSize};\n left: ${t.toggleHandleLeft};\n position: absolute;\n top: ${t.toggleHandleTop};\n transition: 0.2s ease-in;\n width: ${t.toggleHandleSize};\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 background: ${t.toggleCheckedBg};\n &:hover {\n background: ${t.toggleCheckedBgHover};\n }\n }\n `;\n },\n\n input2022(t: Theme) {\n return css`\n &:enabled {\n ~ .${globalClasses.container}, ~ .${globalClasses.handle} {\n transition: 0.2s ease-in !important;\n }\n :not(:checked) {\n ~ .${globalClasses.container} {\n background: ${t.toggleContainerBg};\n box-shadow: ${t.toggleContainerBoxShadow};\n }\n ~ .${globalClasses.handle} {\n background: ${t.toggleHandleBg};\n box-shadow: ${t.toggleHandleBoxShadow};\n }\n }\n :checked {\n ~ .${globalClasses.container} {\n background: ${t.toggleContainerBgChecked};\n box-shadow: ${t.toggleContainerBoxShadowChecked};\n }\n ~ .${globalClasses.handle} {\n background: ${t.toggleHandleBgChecked};\n box-shadow: ${t.toggleHandleBoxShadowChecked};\n }\n }\n }\n &:enabled:hover {\n :not(:checked) {\n ~ .${globalClasses.container} {\n background: ${t.toggleContainerBgHover};\n box-shadow: ${t.toggleContainerBoxShadowHover};\n }\n ~ .${globalClasses.handle} {\n background: ${t.toggleHandleBgHover};\n box-shadow: ${t.toggleHandleBoxShadowHover};\n }\n }\n :checked {\n ~ .${globalClasses.container} {\n background: ${t.toggleContainerBgCheckedHover};\n box-shadow: ${t.toggleContainerBoxShadowCheckedHover};\n }\n ~ .${globalClasses.handle} {\n background: ${t.toggleHandleBgCheckedHover};\n box-shadow: ${t.toggleHandleBoxShadowCheckedHover};\n }\n }\n }\n &:disabled {\n :not(:checked) {\n ~ .${globalClasses.container} {\n background: ${t.toggleContainerBgDisabled};\n box-shadow: ${t.toggleContainerBoxShadowDisabled};\n }\n ~ .${globalClasses.handle} {\n background: ${t.toggleHandleBgDisabled} !important;\n box-shadow: ${t.toggleHandleBoxShadowDisabled};\n }\n }\n :checked {\n ~ .${globalClasses.container} {\n background: ${t.toggleContainerBgDisabledChecked};\n box-shadow: ${t.toggleContainerBoxShadowDisabledChecked};\n }\n ~ .${globalClasses.handle} {\n background: ${t.toggleHandleBgDisabledChecked} !important;\n box-shadow: ${t.toggleHandleBoxShadowDisabledChecked};\n }\n }\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.toggleOutlineColorFocus}, 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.toggleOutlineColorFocus}, 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.toggleOutlineColorFocus}, 0 0 0 ${t.toggleOutlineWidth} ${t.toggleShadowColorError};\n `;\n },\n\n button(t: Theme) {\n const labGrotesqueCompenstation = parseInt(t.labGrotesqueBaselineCompensation);\n const fontSize = parseInt(t.checkboxFontSize);\n const baselineCompensation = fontSize <= 16 && isChrome ? -labGrotesqueCompenstation : 0;\n return css`\n position: absolute;\n left: 0;\n top: 0;\n height: ${t.toggleHeight};\n width: ${t.toggleWidth};\n flex: 1 0 ${t.toggleWidth};\n\n background: ${t.toggleBaseBg};\n border-radius: ${t.toggleBorderRadius};\n line-height: ${t.toggleHeight};\n\n margin-top: calc(${t.toggleButtonOffsetY} + ${baselineCompensation}px);\n `;\n },\n\n buttonRight() {\n return css`\n right: 0;\n left: auto;\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 line-height: ${t.toggleLineHeight};\n font-size: ${t.toggleFontSize};\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"]}
|
|
@@ -329,7 +329,7 @@ CustomComboBox = (0, _decorator.responsiveLayout)(_class = (0, _rootNode.rootNod
|
|
|
329
329
|
|
|
330
330
|
|
|
331
331
|
|
|
332
|
-
dispatch = function (action) {
|
|
332
|
+
dispatch = function (action, sync) {if (sync === void 0) {sync = true;}
|
|
333
333
|
var updateState = function updateState(action) {
|
|
334
334
|
var effects;
|
|
335
335
|
var nextState;
|
|
@@ -348,7 +348,7 @@ CustomComboBox = (0, _decorator.responsiveLayout)(_class = (0, _rootNode.rootNod
|
|
|
348
348
|
|
|
349
349
|
// Auto-batching React@18 creates problems that are fixed with flushSync
|
|
350
350
|
// https://github.com/skbkontur/retail-ui/pull/3144#issuecomment-1535235366
|
|
351
|
-
if (_react.default.version.search('18') === 0) {
|
|
351
|
+
if (sync && _react.default.version.search('18') === 0) {
|
|
352
352
|
_reactDom.default.flushSync(function () {return updateState(action);});
|
|
353
353
|
} else {
|
|
354
354
|
updateState(action);
|
|
@@ -426,6 +426,6 @@ CustomComboBox = (0, _decorator.responsiveLayout)(_class = (0, _rootNode.rootNod
|
|
|
426
426
|
* @public
|
|
427
427
|
*/;_proto.open = function open() {this.dispatch({ type: 'Open' });} /**
|
|
428
428
|
* @public
|
|
429
|
-
*/;_proto.close = function close() {this.dispatch({ type: 'Close' });};_proto.render = function render() {var _this3 = this;var viewProps = { align: this.props.align, borderless: this.props.borderless, disabled: this.props.disabled, disablePortal: this.props.disablePortal, editing: this.state.editing, error: this.props.error, items: this.state.items, loading: this.state.loading, menuAlign: this.props.menuAlign, opened: this.state.opened, drawArrow: this.props.drawArrow, menuPos: this.props.menuPos, placeholder: this.props.placeholder, size: this.props.size, textValue: this.state.textValue, totalCount: this.props.totalCount, value: this.props.value, warning: this.props.warning, 'aria-describedby': this.props['aria-describedby'], width: this.props.width, maxLength: this.props.maxLength, maxMenuHeight: this.props.maxMenuHeight, leftIcon: this.props.leftIcon, rightIcon: this.props.rightIcon, inputMode: this.props.inputMode, onValueChange: this.handleValueChange, onClickOutside: this.handleClickOutside, onFocus: this.handleFocus, onFocusOutside: this.handleBlur, onInputBlur: this.handleInputBlur, onInputValueChange: function onInputValueChange(value) {return _this3.dispatch({ type: 'TextChange', value: value });}, onInputFocus: this.handleFocus, onInputClick: this.handleInputClick, onInputKeyDown: function onInputKeyDown(event) {event.persist();_this3.dispatch({ type: 'KeyPress', event: event });}, onMouseEnter: this.props.onMouseEnter, onMouseOver: this.props.onMouseOver, onMouseLeave: this.props.onMouseLeave, renderItem: this.props.renderItem, renderNotFound: this.props.renderNotFound, itemWrapper: this.props.itemWrapper, renderValue: this.props.renderValue, renderTotalCount: this.props.renderTotalCount, renderAddButton: this.props.renderAddButton, repeatRequest: this.state.repeatRequest, requestStatus: this.state.requestStatus, refInput: function refInput(input) {_this3.input = input;}, refMenu: function refMenu(menu) {_this3.menu = menu;}, refInputLikeText: function refInputLikeText(inputLikeText) {_this3.inputLikeText = inputLikeText;} };return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, this.props, /*#__PURE__*/_react.default.createElement(_ComboBoxView.ComboBoxView, (0, _extends2.default)({}, viewProps, { ref: this.setRootNode })));};_proto.componentDidMount = function componentDidMount() {this.dispatch({ type: 'Mount' });if (this.props.autoFocus) {this.focus();}};_proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {if (prevState.editing && !this.state.editing) {this.handleBlur();}this.dispatch({ type: 'DidUpdate', prevProps: prevProps, prevState: prevState });} /**
|
|
429
|
+
*/;_proto.close = function close() {this.dispatch({ type: 'Close' });};_proto.render = function render() {var _this3 = this;var viewProps = { align: this.props.align, borderless: this.props.borderless, disabled: this.props.disabled, disablePortal: this.props.disablePortal, editing: this.state.editing, error: this.props.error, items: this.state.items, loading: this.state.loading, menuAlign: this.props.menuAlign, opened: this.state.opened, drawArrow: this.props.drawArrow, menuPos: this.props.menuPos, placeholder: this.props.placeholder, size: this.props.size, textValue: this.state.textValue, totalCount: this.props.totalCount, value: this.props.value, warning: this.props.warning, 'aria-describedby': this.props['aria-describedby'], width: this.props.width, maxLength: this.props.maxLength, maxMenuHeight: this.props.maxMenuHeight, leftIcon: this.props.leftIcon, rightIcon: this.props.rightIcon, inputMode: this.props.inputMode, onValueChange: this.handleValueChange, onClickOutside: this.handleClickOutside, onFocus: this.handleFocus, onFocusOutside: this.handleBlur, onInputBlur: this.handleInputBlur, onInputValueChange: function onInputValueChange(value) {return _this3.dispatch({ type: 'TextChange', value: value });}, onInputFocus: this.handleFocus, onInputClick: this.handleInputClick, onInputKeyDown: function onInputKeyDown(event) {event.persist();_this3.dispatch({ type: 'KeyPress', event: event });}, onMouseEnter: this.props.onMouseEnter, onMouseOver: this.props.onMouseOver, onMouseLeave: this.props.onMouseLeave, renderItem: this.props.renderItem, renderNotFound: this.props.renderNotFound, itemWrapper: this.props.itemWrapper, renderValue: this.props.renderValue, renderTotalCount: this.props.renderTotalCount, renderAddButton: this.props.renderAddButton, repeatRequest: this.state.repeatRequest, requestStatus: this.state.requestStatus, refInput: function refInput(input) {_this3.input = input;}, refMenu: function refMenu(menu) {_this3.menu = menu;}, refInputLikeText: function refInputLikeText(inputLikeText) {_this3.inputLikeText = inputLikeText;} };return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, this.props, /*#__PURE__*/_react.default.createElement(_ComboBoxView.ComboBoxView, (0, _extends2.default)({}, viewProps, { ref: this.setRootNode })));};_proto.componentDidMount = function componentDidMount() {this.dispatch({ type: 'Mount' }, false);if (this.props.autoFocus) {this.focus();}};_proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {if (prevState.editing && !this.state.editing) {this.handleBlur();}this.dispatch({ type: 'DidUpdate', prevProps: prevProps, prevState: prevState }, false);} /**
|
|
430
430
|
* @public
|
|
431
431
|
*/;_proto.reset = function reset() {this.dispatch({ type: 'Reset' });};return CustomComboBox;}(_react.default.PureComponent), _class2.__KONTUR_REACT_UI__ = 'CustomComboBox', _temp)) || _class) || _class;exports.CustomComboBox = CustomComboBox;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["CustomComboBox.tsx"],"names":["DELAY_BEFORE_SHOW_LOADER","LOADER_SHOW_TIME","DefaultState","inputChanged","editing","items","loading","opened","focused","textValue","repeatRequest","undefined","requestStatus","ComboBoxRequestStatus","Unknown","CustomComboBoxDataTids","comboBoxView","CustomComboBox","responsiveLayout","rootNode","state","requestId","cancelationToken","reducer","cancelLoaderDelay","focus","props","disabled","input","inputLikeText","selectInputText","selectAll","blur","handleBlur","dispatch","action","updateState","effects","nextState","setState","stateAndEffect","Array","forEach","handleEffect","React","version","search","ReactDOM","flushSync","effect","getState","getProps","handleValueChange","value","type","keepFocus","isMobileLayout","handleFocus","handleClickOutside","e","close","setTimeout","handleInputBlur","handleInputClick","query","getItems","cancelPromise","Promise","_","reject","expectingId","loaderShowDelay","resolve","cancelLoader","catch","race","code","cancelSearch","CancelationError","open","render","viewProps","align","borderless","disablePortal","error","menuAlign","drawArrow","menuPos","placeholder","size","totalCount","warning","width","maxLength","maxMenuHeight","leftIcon","rightIcon","inputMode","onValueChange","onClickOutside","onFocus","onFocusOutside","onInputBlur","onInputValueChange","onInputFocus","onInputClick","onInputKeyDown","event","persist","onMouseEnter","onMouseOver","onMouseLeave","renderItem","renderNotFound","itemWrapper","renderValue","renderTotalCount","renderAddButton","refInput","refMenu","menu","refInputLikeText","setRootNode","componentDidMount","autoFocus","componentDidUpdate","prevProps","prevState","reset","PureComponent","__KONTUR_REACT_UI__"],"mappings":"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","sourcesContent":["import React, { AriaAttributes } from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { Nullable } from '../../typings/utility-types';\nimport { Input, InputIconType } from '../../components/Input';\nimport { Menu } from '../Menu';\nimport { InputLikeText } from '../InputLikeText';\nimport { MenuItemState } from '../../components/MenuItem';\nimport { CancelationError, taskWithDelay } from '../../lib/utils';\nimport { fixClickFocusIE } from '../../lib/events/fixClickFocusIE';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { DropdownContainerProps } from '../DropdownContainer';\n\nimport { ComboBoxRequestStatus } from './CustomComboBoxTypes';\nimport { CustomComboBoxAction, CustomComboBoxEffect, reducer } from './CustomComboBoxReducer';\nimport { ComboBoxView } from './ComboBoxView';\n\nexport interface CustomComboBoxProps<T> extends Pick<DropdownContainerProps, 'menuPos'>, CommonProps {\n align?: 'left' | 'center' | 'right';\n autoFocus?: boolean;\n borderless?: boolean;\n disablePortal?: boolean;\n disabled?: boolean;\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n maxLength?: number;\n menuAlign?: 'left' | 'right';\n drawArrow?: boolean;\n leftIcon?: InputIconType;\n rightIcon?: InputIconType;\n searchOnFocus?: boolean;\n onValueChange?: (value: T) => void;\n onInputValueChange?: (value: string) => Nullable<string> | void;\n onUnexpectedInput?: (value: string) => void | null | T;\n onFocus?: () => void;\n onBlur?: () => void;\n onMouseEnter?: (e: React.MouseEvent) => void;\n onMouseOver?: (e: React.MouseEvent) => void;\n onMouseLeave?: (e: React.MouseEvent) => void;\n onInputKeyDown?: (e: React.KeyboardEvent<HTMLElement>) => void;\n placeholder?: string;\n size?: 'small' | 'medium' | 'large';\n totalCount?: number;\n value?: Nullable<T>;\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n 'aria-describedby'?: AriaAttributes['aria-describedby'];\n width?: string | number;\n maxMenuHeight?: number | string;\n renderNotFound?: () => React.ReactNode;\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n renderItem: (item: T, state?: MenuItemState) => React.ReactNode;\n itemWrapper?: (item?: T) => React.ComponentType<unknown>;\n renderValue: (value: T) => React.ReactNode;\n renderAddButton?: (query?: string) => React.ReactNode;\n valueToString: (value: T) => string;\n itemToValue: (item: T) => string | number;\n getItems: (query: string) => Promise<T[]>;\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode'];\n}\n\nexport interface CustomComboBoxState<T> {\n editing: boolean;\n loading: boolean;\n opened: boolean;\n textValue: string;\n items: Nullable<T[]>;\n inputChanged: boolean;\n focused: boolean;\n repeatRequest: () => void;\n requestStatus: ComboBoxRequestStatus;\n}\n\nexport const DELAY_BEFORE_SHOW_LOADER = 300;\nexport const LOADER_SHOW_TIME = 1000;\n\nexport const DefaultState = {\n inputChanged: false,\n editing: false,\n items: null,\n loading: false,\n opened: false,\n focused: false,\n textValue: '',\n repeatRequest: () => undefined,\n requestStatus: ComboBoxRequestStatus.Unknown,\n};\n\nexport const CustomComboBoxDataTids = {\n comboBoxView: 'ComboBoxView__root',\n} as const;\n\n@responsiveLayout\n@rootNode\nexport class CustomComboBox<T> extends React.PureComponent<CustomComboBoxProps<T>, CustomComboBoxState<T>> {\n public static __KONTUR_REACT_UI__ = 'CustomComboBox';\n\n public state: CustomComboBoxState<T> = DefaultState;\n public input: Nullable<Input>;\n public menu: Nullable<Menu>;\n public inputLikeText: Nullable<InputLikeText>;\n public requestId = 0;\n public loaderShowDelay: Nullable<Promise<void>>;\n private focused = false;\n private cancelationToken: Nullable<(reason?: Error) => void> = null;\n private isMobileLayout!: boolean;\n\n private reducer = reducer;\n public cancelLoaderDelay: () => void = () => null;\n\n /**\n * @public\n */\n public focus = () => {\n if (this.props.disabled) {\n return;\n }\n\n if (this.input) {\n this.input.focus();\n } else if (this.inputLikeText) {\n this.inputLikeText.focus();\n }\n };\n\n /**\n * @public\n */\n public selectInputText = () => {\n if (this.props.disabled) {\n return;\n }\n if (this.input) {\n this.input.selectAll();\n }\n };\n\n /**\n * @public\n */\n public blur = () => {\n if (this.props.disabled) {\n return;\n }\n\n this.handleBlur();\n };\n private setRootNode!: TSetRootNode;\n\n /**\n * @public\n */\n public async search(query: string = this.state.textValue) {\n const { getItems } = this.props;\n\n const cancelPromise: Promise<never> = new Promise((_, reject) => (this.cancelationToken = reject));\n this.requestId += 1;\n const expectingId = this.requestId;\n\n if (!this.loaderShowDelay) {\n this.loaderShowDelay = new Promise<void>((resolve) => {\n const cancelLoader = taskWithDelay(() => {\n this.dispatch({ type: 'RequestItems' });\n setTimeout(resolve, LOADER_SHOW_TIME);\n }, DELAY_BEFORE_SHOW_LOADER);\n\n cancelPromise.catch(() => cancelLoader());\n\n this.cancelLoaderDelay = () => {\n cancelLoader();\n resolve();\n };\n });\n }\n\n try {\n const items = await Promise.race([getItems(query), cancelPromise]);\n if (this.state.loading) {\n await Promise.race([this.loaderShowDelay, cancelPromise]);\n }\n if (expectingId === this.requestId) {\n this.dispatch({\n type: 'ReceiveItems',\n items,\n });\n }\n } catch (error) {\n if (error && error.code === 'CancelationError') {\n this.dispatch({ type: 'CancelRequest' });\n } else if (expectingId === this.requestId) {\n this.dispatch({\n type: 'RequestFailure',\n repeatRequest: () => {\n this.search(query);\n if (this.input) {\n this.input.focus();\n }\n },\n });\n }\n } finally {\n if (expectingId === this.requestId) {\n if (!this.state.loading) {\n this.cancelLoaderDelay();\n }\n this.cancelationToken = null;\n this.loaderShowDelay = null;\n }\n }\n }\n\n /**\n * @public\n */\n public cancelSearch() {\n if (this.cancelationToken) {\n this.cancelationToken(new CancelationError());\n }\n }\n\n /**\n * @public\n */\n public open() {\n this.dispatch({ type: 'Open' });\n }\n\n /**\n * @public\n */\n public close() {\n this.dispatch({ type: 'Close' });\n }\n\n public render() {\n const viewProps = {\n align: this.props.align,\n borderless: this.props.borderless,\n disabled: this.props.disabled,\n disablePortal: this.props.disablePortal,\n editing: this.state.editing,\n error: this.props.error,\n items: this.state.items,\n loading: this.state.loading,\n menuAlign: this.props.menuAlign,\n opened: this.state.opened,\n drawArrow: this.props.drawArrow,\n menuPos: this.props.menuPos,\n placeholder: this.props.placeholder,\n size: this.props.size,\n textValue: this.state.textValue,\n totalCount: this.props.totalCount,\n value: this.props.value,\n warning: this.props.warning,\n 'aria-describedby': this.props['aria-describedby'],\n width: this.props.width,\n maxLength: this.props.maxLength,\n maxMenuHeight: this.props.maxMenuHeight,\n leftIcon: this.props.leftIcon,\n rightIcon: this.props.rightIcon,\n inputMode: this.props.inputMode,\n\n onValueChange: this.handleValueChange,\n onClickOutside: this.handleClickOutside,\n onFocus: this.handleFocus,\n onFocusOutside: this.handleBlur,\n onInputBlur: this.handleInputBlur,\n onInputValueChange: (value: string) => this.dispatch({ type: 'TextChange', value }),\n onInputFocus: this.handleFocus,\n onInputClick: this.handleInputClick,\n onInputKeyDown: (event: React.KeyboardEvent) => {\n event.persist();\n this.dispatch({ type: 'KeyPress', event });\n },\n onMouseEnter: this.props.onMouseEnter,\n onMouseOver: this.props.onMouseOver,\n onMouseLeave: this.props.onMouseLeave,\n renderItem: this.props.renderItem,\n renderNotFound: this.props.renderNotFound,\n itemWrapper: this.props.itemWrapper,\n renderValue: this.props.renderValue,\n renderTotalCount: this.props.renderTotalCount,\n renderAddButton: this.props.renderAddButton,\n repeatRequest: this.state.repeatRequest,\n requestStatus: this.state.requestStatus,\n\n refInput: (input: Nullable<Input>) => {\n this.input = input;\n },\n refMenu: (menu: Nullable<Menu>) => {\n this.menu = menu;\n },\n refInputLikeText: (inputLikeText: Nullable<InputLikeText>) => {\n this.inputLikeText = inputLikeText;\n },\n };\n\n return (\n <CommonWrapper {...this.props}>\n <ComboBoxView {...viewProps} ref={this.setRootNode} />\n </CommonWrapper>\n );\n }\n\n public componentDidMount() {\n this.dispatch({ type: 'Mount' });\n if (this.props.autoFocus) {\n this.focus();\n }\n }\n\n public componentDidUpdate(prevProps: CustomComboBoxProps<T>, prevState: CustomComboBoxState<T>) {\n if (prevState.editing && !this.state.editing) {\n this.handleBlur();\n }\n this.dispatch({ type: 'DidUpdate', prevProps, prevState });\n }\n\n /**\n * @public\n */\n public reset() {\n this.dispatch({ type: 'Reset' });\n }\n\n private dispatch = (action: CustomComboBoxAction<T>) => {\n const updateState = (action: CustomComboBoxAction<T>) => {\n let effects: Array<CustomComboBoxEffect<T>>;\n let nextState: Pick<CustomComboBoxState<T>, never>;\n\n this.setState(\n (state) => {\n const stateAndEffect = this.reducer(state, this.props, action);\n [nextState, effects] = stateAndEffect instanceof Array ? stateAndEffect : [stateAndEffect, []];\n return nextState;\n },\n () => {\n effects.forEach(this.handleEffect);\n },\n );\n };\n\n // Auto-batching React@18 creates problems that are fixed with flushSync\n // https://github.com/skbkontur/retail-ui/pull/3144#issuecomment-1535235366\n if (React.version.search('18') === 0) {\n ReactDOM.flushSync(() => updateState(action));\n } else {\n updateState(action);\n }\n };\n\n private handleEffect = (effect: CustomComboBoxEffect<T>) => {\n effect(this.dispatch, this.getState, this.getProps, () => this);\n };\n\n private getProps = () => this.props;\n\n private getState = () => this.state;\n\n private handleValueChange = (value: T) => {\n this.dispatch({\n type: 'ValueChange',\n value,\n keepFocus: !this.isMobileLayout,\n });\n };\n\n private handleFocus = () => {\n if (this.focused) {\n return;\n }\n this.focused = true;\n this.dispatch({ type: 'Focus' });\n };\n\n private handleClickOutside = (e: Event) => {\n fixClickFocusIE(e);\n this.handleBlur();\n };\n\n private handleBlur = () => {\n if (!this.focused) {\n if (this.state.opened) {\n this.close();\n }\n return;\n }\n\n this.focused = false;\n // workaround for the similar bug with focusout\n // in Firefox, Chrome and IE\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1363964\n setTimeout(() => {\n this.dispatch({ type: 'Blur' });\n });\n };\n\n private handleInputBlur = () => {\n // If menu opened, RenderLayer is active and\n // it would call handleFocusOutside\n // In that way handleBlur would be called\n\n // TODO: add check for mobile layout, to call `handleBlur`\n\n if (this.state.opened) {\n return;\n }\n this.handleBlur();\n };\n\n private handleInputClick = () => {\n if (!this.cancelationToken) {\n this.dispatch({ type: 'InputClick' });\n }\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["CustomComboBox.tsx"],"names":["DELAY_BEFORE_SHOW_LOADER","LOADER_SHOW_TIME","DefaultState","inputChanged","editing","items","loading","opened","focused","textValue","repeatRequest","undefined","requestStatus","ComboBoxRequestStatus","Unknown","CustomComboBoxDataTids","comboBoxView","CustomComboBox","responsiveLayout","rootNode","state","requestId","cancelationToken","reducer","cancelLoaderDelay","focus","props","disabled","input","inputLikeText","selectInputText","selectAll","blur","handleBlur","dispatch","action","sync","updateState","effects","nextState","setState","stateAndEffect","Array","forEach","handleEffect","React","version","search","ReactDOM","flushSync","effect","getState","getProps","handleValueChange","value","type","keepFocus","isMobileLayout","handleFocus","handleClickOutside","e","close","setTimeout","handleInputBlur","handleInputClick","query","getItems","cancelPromise","Promise","_","reject","expectingId","loaderShowDelay","resolve","cancelLoader","catch","race","code","cancelSearch","CancelationError","open","render","viewProps","align","borderless","disablePortal","error","menuAlign","drawArrow","menuPos","placeholder","size","totalCount","warning","width","maxLength","maxMenuHeight","leftIcon","rightIcon","inputMode","onValueChange","onClickOutside","onFocus","onFocusOutside","onInputBlur","onInputValueChange","onInputFocus","onInputClick","onInputKeyDown","event","persist","onMouseEnter","onMouseOver","onMouseLeave","renderItem","renderNotFound","itemWrapper","renderValue","renderTotalCount","renderAddButton","refInput","refMenu","menu","refInputLikeText","setRootNode","componentDidMount","autoFocus","componentDidUpdate","prevProps","prevState","reset","PureComponent","__KONTUR_REACT_UI__"],"mappings":"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","sourcesContent":["import React, { AriaAttributes } from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { Nullable } from '../../typings/utility-types';\nimport { Input, InputIconType } from '../../components/Input';\nimport { Menu } from '../Menu';\nimport { InputLikeText } from '../InputLikeText';\nimport { MenuItemState } from '../../components/MenuItem';\nimport { CancelationError, taskWithDelay } from '../../lib/utils';\nimport { fixClickFocusIE } from '../../lib/events/fixClickFocusIE';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { DropdownContainerProps } from '../DropdownContainer';\n\nimport { ComboBoxRequestStatus } from './CustomComboBoxTypes';\nimport { CustomComboBoxAction, CustomComboBoxEffect, reducer } from './CustomComboBoxReducer';\nimport { ComboBoxView } from './ComboBoxView';\n\nexport interface CustomComboBoxProps<T> extends Pick<DropdownContainerProps, 'menuPos'>, CommonProps {\n align?: 'left' | 'center' | 'right';\n autoFocus?: boolean;\n borderless?: boolean;\n disablePortal?: boolean;\n disabled?: boolean;\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n maxLength?: number;\n menuAlign?: 'left' | 'right';\n drawArrow?: boolean;\n leftIcon?: InputIconType;\n rightIcon?: InputIconType;\n searchOnFocus?: boolean;\n onValueChange?: (value: T) => void;\n onInputValueChange?: (value: string) => Nullable<string> | void;\n onUnexpectedInput?: (value: string) => void | null | T;\n onFocus?: () => void;\n onBlur?: () => void;\n onMouseEnter?: (e: React.MouseEvent) => void;\n onMouseOver?: (e: React.MouseEvent) => void;\n onMouseLeave?: (e: React.MouseEvent) => void;\n onInputKeyDown?: (e: React.KeyboardEvent<HTMLElement>) => void;\n placeholder?: string;\n size?: 'small' | 'medium' | 'large';\n totalCount?: number;\n value?: Nullable<T>;\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n 'aria-describedby'?: AriaAttributes['aria-describedby'];\n width?: string | number;\n maxMenuHeight?: number | string;\n renderNotFound?: () => React.ReactNode;\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n renderItem: (item: T, state?: MenuItemState) => React.ReactNode;\n itemWrapper?: (item?: T) => React.ComponentType<unknown>;\n renderValue: (value: T) => React.ReactNode;\n renderAddButton?: (query?: string) => React.ReactNode;\n valueToString: (value: T) => string;\n itemToValue: (item: T) => string | number;\n getItems: (query: string) => Promise<T[]>;\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode'];\n}\n\nexport interface CustomComboBoxState<T> {\n editing: boolean;\n loading: boolean;\n opened: boolean;\n textValue: string;\n items: Nullable<T[]>;\n inputChanged: boolean;\n focused: boolean;\n repeatRequest: () => void;\n requestStatus: ComboBoxRequestStatus;\n}\n\nexport const DELAY_BEFORE_SHOW_LOADER = 300;\nexport const LOADER_SHOW_TIME = 1000;\n\nexport const DefaultState = {\n inputChanged: false,\n editing: false,\n items: null,\n loading: false,\n opened: false,\n focused: false,\n textValue: '',\n repeatRequest: () => undefined,\n requestStatus: ComboBoxRequestStatus.Unknown,\n};\n\nexport const CustomComboBoxDataTids = {\n comboBoxView: 'ComboBoxView__root',\n} as const;\n\n@responsiveLayout\n@rootNode\nexport class CustomComboBox<T> extends React.PureComponent<CustomComboBoxProps<T>, CustomComboBoxState<T>> {\n public static __KONTUR_REACT_UI__ = 'CustomComboBox';\n\n public state: CustomComboBoxState<T> = DefaultState;\n public input: Nullable<Input>;\n public menu: Nullable<Menu>;\n public inputLikeText: Nullable<InputLikeText>;\n public requestId = 0;\n public loaderShowDelay: Nullable<Promise<void>>;\n private focused = false;\n private cancelationToken: Nullable<(reason?: Error) => void> = null;\n private isMobileLayout!: boolean;\n\n private reducer = reducer;\n public cancelLoaderDelay: () => void = () => null;\n\n /**\n * @public\n */\n public focus = () => {\n if (this.props.disabled) {\n return;\n }\n\n if (this.input) {\n this.input.focus();\n } else if (this.inputLikeText) {\n this.inputLikeText.focus();\n }\n };\n\n /**\n * @public\n */\n public selectInputText = () => {\n if (this.props.disabled) {\n return;\n }\n if (this.input) {\n this.input.selectAll();\n }\n };\n\n /**\n * @public\n */\n public blur = () => {\n if (this.props.disabled) {\n return;\n }\n\n this.handleBlur();\n };\n private setRootNode!: TSetRootNode;\n\n /**\n * @public\n */\n public async search(query: string = this.state.textValue) {\n const { getItems } = this.props;\n\n const cancelPromise: Promise<never> = new Promise((_, reject) => (this.cancelationToken = reject));\n this.requestId += 1;\n const expectingId = this.requestId;\n\n if (!this.loaderShowDelay) {\n this.loaderShowDelay = new Promise<void>((resolve) => {\n const cancelLoader = taskWithDelay(() => {\n this.dispatch({ type: 'RequestItems' });\n setTimeout(resolve, LOADER_SHOW_TIME);\n }, DELAY_BEFORE_SHOW_LOADER);\n\n cancelPromise.catch(() => cancelLoader());\n\n this.cancelLoaderDelay = () => {\n cancelLoader();\n resolve();\n };\n });\n }\n\n try {\n const items = await Promise.race([getItems(query), cancelPromise]);\n if (this.state.loading) {\n await Promise.race([this.loaderShowDelay, cancelPromise]);\n }\n if (expectingId === this.requestId) {\n this.dispatch({\n type: 'ReceiveItems',\n items,\n });\n }\n } catch (error) {\n if (error && error.code === 'CancelationError') {\n this.dispatch({ type: 'CancelRequest' });\n } else if (expectingId === this.requestId) {\n this.dispatch({\n type: 'RequestFailure',\n repeatRequest: () => {\n this.search(query);\n if (this.input) {\n this.input.focus();\n }\n },\n });\n }\n } finally {\n if (expectingId === this.requestId) {\n if (!this.state.loading) {\n this.cancelLoaderDelay();\n }\n this.cancelationToken = null;\n this.loaderShowDelay = null;\n }\n }\n }\n\n /**\n * @public\n */\n public cancelSearch() {\n if (this.cancelationToken) {\n this.cancelationToken(new CancelationError());\n }\n }\n\n /**\n * @public\n */\n public open() {\n this.dispatch({ type: 'Open' });\n }\n\n /**\n * @public\n */\n public close() {\n this.dispatch({ type: 'Close' });\n }\n\n public render() {\n const viewProps = {\n align: this.props.align,\n borderless: this.props.borderless,\n disabled: this.props.disabled,\n disablePortal: this.props.disablePortal,\n editing: this.state.editing,\n error: this.props.error,\n items: this.state.items,\n loading: this.state.loading,\n menuAlign: this.props.menuAlign,\n opened: this.state.opened,\n drawArrow: this.props.drawArrow,\n menuPos: this.props.menuPos,\n placeholder: this.props.placeholder,\n size: this.props.size,\n textValue: this.state.textValue,\n totalCount: this.props.totalCount,\n value: this.props.value,\n warning: this.props.warning,\n 'aria-describedby': this.props['aria-describedby'],\n width: this.props.width,\n maxLength: this.props.maxLength,\n maxMenuHeight: this.props.maxMenuHeight,\n leftIcon: this.props.leftIcon,\n rightIcon: this.props.rightIcon,\n inputMode: this.props.inputMode,\n\n onValueChange: this.handleValueChange,\n onClickOutside: this.handleClickOutside,\n onFocus: this.handleFocus,\n onFocusOutside: this.handleBlur,\n onInputBlur: this.handleInputBlur,\n onInputValueChange: (value: string) => this.dispatch({ type: 'TextChange', value }),\n onInputFocus: this.handleFocus,\n onInputClick: this.handleInputClick,\n onInputKeyDown: (event: React.KeyboardEvent) => {\n event.persist();\n this.dispatch({ type: 'KeyPress', event });\n },\n onMouseEnter: this.props.onMouseEnter,\n onMouseOver: this.props.onMouseOver,\n onMouseLeave: this.props.onMouseLeave,\n renderItem: this.props.renderItem,\n renderNotFound: this.props.renderNotFound,\n itemWrapper: this.props.itemWrapper,\n renderValue: this.props.renderValue,\n renderTotalCount: this.props.renderTotalCount,\n renderAddButton: this.props.renderAddButton,\n repeatRequest: this.state.repeatRequest,\n requestStatus: this.state.requestStatus,\n\n refInput: (input: Nullable<Input>) => {\n this.input = input;\n },\n refMenu: (menu: Nullable<Menu>) => {\n this.menu = menu;\n },\n refInputLikeText: (inputLikeText: Nullable<InputLikeText>) => {\n this.inputLikeText = inputLikeText;\n },\n };\n\n return (\n <CommonWrapper {...this.props}>\n <ComboBoxView {...viewProps} ref={this.setRootNode} />\n </CommonWrapper>\n );\n }\n\n public componentDidMount() {\n this.dispatch({ type: 'Mount' }, false);\n if (this.props.autoFocus) {\n this.focus();\n }\n }\n\n public componentDidUpdate(prevProps: CustomComboBoxProps<T>, prevState: CustomComboBoxState<T>) {\n if (prevState.editing && !this.state.editing) {\n this.handleBlur();\n }\n this.dispatch({ type: 'DidUpdate', prevProps, prevState }, false);\n }\n\n /**\n * @public\n */\n public reset() {\n this.dispatch({ type: 'Reset' });\n }\n\n private dispatch = (action: CustomComboBoxAction<T>, sync = true) => {\n const updateState = (action: CustomComboBoxAction<T>) => {\n let effects: Array<CustomComboBoxEffect<T>>;\n let nextState: Pick<CustomComboBoxState<T>, never>;\n\n this.setState(\n (state) => {\n const stateAndEffect = this.reducer(state, this.props, action);\n [nextState, effects] = stateAndEffect instanceof Array ? stateAndEffect : [stateAndEffect, []];\n return nextState;\n },\n () => {\n effects.forEach(this.handleEffect);\n },\n );\n };\n\n // Auto-batching React@18 creates problems that are fixed with flushSync\n // https://github.com/skbkontur/retail-ui/pull/3144#issuecomment-1535235366\n if (sync && React.version.search('18') === 0) {\n ReactDOM.flushSync(() => updateState(action));\n } else {\n updateState(action);\n }\n };\n\n private handleEffect = (effect: CustomComboBoxEffect<T>) => {\n effect(this.dispatch, this.getState, this.getProps, () => this);\n };\n\n private getProps = () => this.props;\n\n private getState = () => this.state;\n\n private handleValueChange = (value: T) => {\n this.dispatch({\n type: 'ValueChange',\n value,\n keepFocus: !this.isMobileLayout,\n });\n };\n\n private handleFocus = () => {\n if (this.focused) {\n return;\n }\n this.focused = true;\n this.dispatch({ type: 'Focus' });\n };\n\n private handleClickOutside = (e: Event) => {\n fixClickFocusIE(e);\n this.handleBlur();\n };\n\n private handleBlur = () => {\n if (!this.focused) {\n if (this.state.opened) {\n this.close();\n }\n return;\n }\n\n this.focused = false;\n // workaround for the similar bug with focusout\n // in Firefox, Chrome and IE\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1363964\n setTimeout(() => {\n this.dispatch({ type: 'Blur' });\n });\n };\n\n private handleInputBlur = () => {\n // If menu opened, RenderLayer is active and\n // it would call handleFocusOutside\n // In that way handleBlur would be called\n\n // TODO: add check for mobile layout, to call `handleBlur`\n\n if (this.state.opened) {\n return;\n }\n this.handleBlur();\n };\n\n private handleInputClick = () => {\n if (!this.cancelationToken) {\n this.dispatch({ type: 'InputClick' });\n }\n };\n}\n"]}
|
|
@@ -4,8 +4,7 @@ import { stylesLayout } from "../InputLayout.styles";
|
|
|
4
4
|
import { InputLayoutAsideIcon } from "../InputLayoutAsideIcon";
|
|
5
5
|
import { InputLayoutAsideText } from "../InputLayoutAsideText";
|
|
6
6
|
export var InputLayoutAside = function InputLayoutAside(_ref) {
|
|
7
|
-
var
|
|
8
|
-
icon = _ref$icon === void 0 ? null : _ref$icon,
|
|
7
|
+
var icon = _ref.icon,
|
|
9
8
|
text = _ref.text,
|
|
10
9
|
side = _ref.side;
|
|
11
10
|
var asideClassName = stylesLayout.aside();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["InputLayoutAside.tsx"],"names":["React","ZERO_WIDTH_SPACE","stylesLayout","InputLayoutAsideIcon","InputLayoutAsideText","InputLayoutAside","icon","text","side","asideClassName","aside","_icon","_text","child"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;;;AAGA,SAASC,gBAAT,QAAiC,oBAAjC;;AAEA,SAASC,YAAT,QAA6B,sBAA7B;AACA,SAASC,oBAAT,QAAqC,wBAArC;AACA,SAASC,oBAAT,QAAqC,wBAArC;;;;;;;;AAQA,OAAO,IAAMC,gBAAgE,GAAG,SAAnEA,gBAAmE,
|
|
1
|
+
{"version":3,"sources":["InputLayoutAside.tsx"],"names":["React","ZERO_WIDTH_SPACE","stylesLayout","InputLayoutAsideIcon","InputLayoutAsideText","InputLayoutAside","icon","text","side","asideClassName","aside","_icon","_text","child"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;;;AAGA,SAASC,gBAAT,QAAiC,oBAAjC;;AAEA,SAASC,YAAT,QAA6B,sBAA7B;AACA,SAASC,oBAAT,QAAqC,wBAArC;AACA,SAASC,oBAAT,QAAqC,wBAArC;;;;;;;;AAQA,OAAO,IAAMC,gBAAgE,GAAG,SAAnEA,gBAAmE,OAA0B,KAAvBC,IAAuB,QAAvBA,IAAuB,CAAjBC,IAAiB,QAAjBA,IAAiB,CAAXC,IAAW,QAAXA,IAAW;AACxG,MAAMC,cAAc,GAAGP,YAAY,CAACQ,KAAb,EAAvB;;AAEA,MAAMC,KAAK,gBAAG,oBAAC,oBAAD,IAAsB,GAAG,EAAC,MAA1B,EAAiC,IAAI,EAAEL,IAAvC,EAA6C,IAAI,EAAEE,IAAnD,GAAd;AACA,MAAMI,KAAK,gBAAG,oBAAC,oBAAD,IAAsB,GAAG,EAAC,MAA1B,EAAiC,IAAI,EAAEL,IAAvC,GAAd;;AAEA,MAAMM,KAAK,GAAGL,IAAI,KAAK,MAAT,GAAkB,CAACG,KAAD,EAAQC,KAAR,CAAlB,GAAmC,CAACA,KAAD,EAAQD,KAAR,CAAjD;;AAEA;AACE,kCAAM,SAAS,EAAEF,cAAjB;AACGR,IAAAA,gBADH;AAEGY,IAAAA,KAFH,CADF;;;AAMD,CAdM","sourcesContent":["import React from 'react';\n\nimport { InputProps } from '../Input';\nimport { ZERO_WIDTH_SPACE } from '../../../lib/chars';\n\nimport { stylesLayout } from './InputLayout.styles';\nimport { InputLayoutAsideIcon } from './InputLayoutAsideIcon';\nimport { InputLayoutAsideText } from './InputLayoutAsideText';\n\nexport interface InputLayoutAsideProps {\n icon: InputProps['leftIcon'] | InputProps['rightIcon'];\n text: InputProps['prefix'] | InputProps['suffix'];\n side: 'left' | 'right';\n}\n\nexport const InputLayoutAside: React.FunctionComponent<InputLayoutAsideProps> = ({ icon, text, side }) => {\n const asideClassName = stylesLayout.aside();\n\n const _icon = <InputLayoutAsideIcon key=\"icon\" icon={icon} side={side} />;\n const _text = <InputLayoutAsideText key=\"text\" text={text} />;\n\n const child = side === 'left' ? [_icon, _text] : [_text, _icon];\n\n return (\n <span className={asideClassName}>\n {ZERO_WIDTH_SPACE}\n {child}\n </span>\n );\n};\n"]}
|
|
@@ -6,7 +6,8 @@ import { ThemeContext } from "../../../../lib/theming/ThemeContext";
|
|
|
6
6
|
import { InputLayoutContext } from "../InputLayoutContext";
|
|
7
7
|
import { stylesLayout } from "../InputLayout.styles";
|
|
8
8
|
export var InputLayoutAsideIcon = function InputLayoutAsideIcon(_ref) {
|
|
9
|
-
var icon = _ref.icon,
|
|
9
|
+
var _ref$icon = _ref.icon,
|
|
10
|
+
icon = _ref$icon === void 0 ? null : _ref$icon,
|
|
10
11
|
side = _ref.side;
|
|
11
12
|
var theme = React.useContext(ThemeContext);
|
|
12
13
|
|
|
@@ -25,14 +26,15 @@ export var InputLayoutAsideIcon = function InputLayoutAsideIcon(_ref) {
|
|
|
25
26
|
medium: parseInt(theme.inputIconGapMedium),
|
|
26
27
|
large: parseInt(theme.inputIconGapLarge)
|
|
27
28
|
};
|
|
28
|
-
var _icon = null;
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
var _icon = icon instanceof Function ? icon() : icon;
|
|
31
|
+
|
|
32
|
+
if (isElement(icon) && isKonturIcon(icon)) {
|
|
31
33
|
var _icon$props$size;
|
|
32
34
|
|
|
33
|
-
_icon =
|
|
35
|
+
_icon = /*#__PURE__*/React.cloneElement(icon, {
|
|
34
36
|
size: (_icon$props$size = icon.props.size) != null ? _icon$props$size : sizes[size]
|
|
35
|
-
})
|
|
37
|
+
});
|
|
36
38
|
}
|
|
37
39
|
|
|
38
40
|
var style = {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["InputLayoutAsideIcon.tsx"],"names":["React","isElement","isKonturIcon","cx","ThemeContext","InputLayoutContext","stylesLayout","InputLayoutAsideIcon","icon","side","theme","useContext","focused","disabled","size","sizes","small","parseInt","inputIconSizeSmall","medium","inputIconSizeMedium","large","inputIconSizeLarge","gaps","inputIconGapSmall","inputIconGapMedium","inputIconGapLarge","_icon","cloneElement","props","style","marginLeft","marginRight","aside","iconFocus","iconDisabled"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,SAAT,QAA0B,UAA1B;;AAEA,SAASC,YAAT,QAA6B,oBAA7B;;AAEA,SAASC,EAAT,QAAmB,8BAAnB;AACA,SAASC,YAAT,QAA6B,mCAA7B;;AAEA,SAASC,kBAAT,QAAmC,sBAAnC;AACA,SAASC,YAAT,QAA6B,sBAA7B;;;;;;AAMA,OAAO,IAAMC,oBAAwE,GAAG,SAA3EA,oBAA2E,
|
|
1
|
+
{"version":3,"sources":["InputLayoutAsideIcon.tsx"],"names":["React","isElement","isKonturIcon","cx","ThemeContext","InputLayoutContext","stylesLayout","InputLayoutAsideIcon","icon","side","theme","useContext","focused","disabled","size","sizes","small","parseInt","inputIconSizeSmall","medium","inputIconSizeMedium","large","inputIconSizeLarge","gaps","inputIconGapSmall","inputIconGapMedium","inputIconGapLarge","_icon","Function","cloneElement","props","style","marginLeft","marginRight","aside","iconFocus","iconDisabled"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,SAAT,QAA0B,UAA1B;;AAEA,SAASC,YAAT,QAA6B,oBAA7B;;AAEA,SAASC,EAAT,QAAmB,8BAAnB;AACA,SAASC,YAAT,QAA6B,mCAA7B;;AAEA,SAASC,kBAAT,QAAmC,sBAAnC;AACA,SAASC,YAAT,QAA6B,sBAA7B;;;;;;AAMA,OAAO,IAAMC,oBAAwE,GAAG,SAA3EA,oBAA2E,OAA2B,sBAAxBC,IAAwB,CAAxBA,IAAwB,0BAAjB,IAAiB,aAAXC,IAAW,QAAXA,IAAW;AACjH,MAAMC,KAAK,GAAGV,KAAK,CAACW,UAAN,CAAiBP,YAAjB,CAAd;AACA,0BAAoCJ,KAAK,CAACW,UAAN,CAAiBN,kBAAjB,CAApC,CAAQO,OAAR,qBAAQA,OAAR,CAAiBC,QAAjB,qBAAiBA,QAAjB,CAA2BC,IAA3B,qBAA2BA,IAA3B;;AAEA,MAAMC,KAAgC,GAAG;AACvCC,IAAAA,KAAK,EAAEC,QAAQ,CAACP,KAAK,CAACQ,kBAAP,CADwB;AAEvCC,IAAAA,MAAM,EAAEF,QAAQ,CAACP,KAAK,CAACU,mBAAP,CAFuB;AAGvCC,IAAAA,KAAK,EAAEJ,QAAQ,CAACP,KAAK,CAACY,kBAAP,CAHwB,EAAzC;;AAKA,MAAMC,IAA+B,GAAG;AACtCP,IAAAA,KAAK,EAAEC,QAAQ,CAACP,KAAK,CAACc,iBAAP,CADuB;AAEtCL,IAAAA,MAAM,EAAEF,QAAQ,CAACP,KAAK,CAACe,kBAAP,CAFsB;AAGtCJ,IAAAA,KAAK,EAAEJ,QAAQ,CAACP,KAAK,CAACgB,iBAAP,CAHuB,EAAxC;;;AAMA,MAAIC,KAAK,GAAGnB,IAAI,YAAYoB,QAAhB,GAA2BpB,IAAI,EAA/B,GAAoCA,IAAhD;AACA,MAAIP,SAAS,CAACO,IAAD,CAAT,IAAmBN,YAAY,CAACM,IAAD,CAAnC,EAA2C;AACzCmB,IAAAA,KAAK,gBAAG3B,KAAK,CAAC6B,YAAN,CAAmBrB,IAAnB,EAAyB,EAAEM,IAAI,sBAAEN,IAAI,CAACsB,KAAL,CAAWhB,IAAb,+BAAqBC,KAAK,CAACD,IAAD,CAAhC,EAAzB,CAAR;AACD;;AAED,MAAMiB,KAA0B,GAAG,EAAnC;AACA,MAAItB,IAAJ,EAAU;AACR,QAAIA,IAAI,KAAK,OAAb,EAAsB;AACpBsB,MAAAA,KAAK,CAACC,UAAN,GAAmBT,IAAI,CAACT,IAAD,CAAvB;AACD,KAFD,MAEO;AACLiB,MAAAA,KAAK,CAACE,WAAN,GAAoBV,IAAI,CAACT,IAAD,CAAxB;AACD;AACF;;AAED;AACEa,IAAAA,KAAK;AACH;AACE,MAAA,KAAK,EAAEI,KADT;AAEE,MAAA,SAAS,EAAE5B,EAAE;AACXG,MAAAA,YAAY,CAAC4B,KAAb,EADW;AAEX5B,MAAAA,YAAY,CAACE,IAAb,CAAkBE,KAAlB,CAFW;AAGXE,MAAAA,OAAO,IAAIN,YAAY,CAAC6B,SAAb,CAAuBzB,KAAvB,CAHA;AAIXG,MAAAA,QAAQ,IAAIP,YAAY,CAAC8B,YAAb,EAJD,CAFf;;;AASGT,IAAAA,KATH,CAFJ;;;;AAeD,CA5CM","sourcesContent":["import React from 'react';\nimport { isElement } from 'react-is';\n\nimport { isKonturIcon } from '../../../lib/utils';\nimport { InputProps, InputSize } from '../Input';\nimport { cx } from '../../../lib/theming/Emotion';\nimport { ThemeContext } from '../../../lib/theming/ThemeContext';\n\nimport { InputLayoutContext } from './InputLayoutContext';\nimport { stylesLayout } from './InputLayout.styles';\nexport interface InputLayoutAsideIconProps {\n icon: InputProps['leftIcon'] | InputProps['rightIcon'];\n side: 'left' | 'right';\n}\n\nexport const InputLayoutAsideIcon: React.FunctionComponent<InputLayoutAsideIconProps> = ({ icon = null, side }) => {\n const theme = React.useContext(ThemeContext);\n const { focused, disabled, size } = React.useContext(InputLayoutContext);\n\n const sizes: Record<InputSize, number> = {\n small: parseInt(theme.inputIconSizeSmall),\n medium: parseInt(theme.inputIconSizeMedium),\n large: parseInt(theme.inputIconSizeLarge),\n };\n const gaps: Record<InputSize, number> = {\n small: parseInt(theme.inputIconGapSmall),\n medium: parseInt(theme.inputIconGapMedium),\n large: parseInt(theme.inputIconGapLarge),\n };\n\n let _icon = icon instanceof Function ? icon() : icon;\n if (isElement(icon) && isKonturIcon(icon)) {\n _icon = React.cloneElement(icon, { size: icon.props.size ?? sizes[size] });\n }\n\n const style: React.CSSProperties = {};\n if (side) {\n if (side === 'right') {\n style.marginLeft = gaps[size];\n } else {\n style.marginRight = gaps[size];\n }\n }\n\n return (\n _icon && (\n <span\n style={style}\n className={cx(\n stylesLayout.aside(),\n stylesLayout.icon(theme),\n focused && stylesLayout.iconFocus(theme),\n disabled && stylesLayout.iconDisabled(),\n )}\n >\n {_icon}\n </span>\n )\n );\n};\n"]}
|
|
@@ -22,7 +22,7 @@ export var styles = memoizeStyle({
|
|
|
22
22
|
return css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n &:active:not(.", ") .", " {\n width: ", ";\n }\n &:active:not(.", ") input:checked ~ .", " {\n transform: translateX(", ") translateX(-", ") translateX(-4px);\n }\n "])), globalClasses.disabled, globalClasses.handle, handleActiveWidth, globalClasses.disabled, globalClasses.handle, t.toggleWidth, handleWidthWithBorders);
|
|
23
23
|
},
|
|
24
24
|
disableAnimation: function disableAnimation() {
|
|
25
|
-
return css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose(["\n &,\n
|
|
25
|
+
return css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose(["\n &,\n *,\n & input:enabled {\n ~ .", ", ~ .", " {\n transition: none !important;\n }\n }\n "])), globalClasses.container, globalClasses.handle);
|
|
26
26
|
},
|
|
27
27
|
handle: function handle(t) {
|
|
28
28
|
return css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteralLoose(["\n background: ", ";\n border-radius: ", ";\n bottom: ", ";\n box-shadow: ", ";\n height: ", ";\n left: ", ";\n position: absolute;\n top: ", ";\n transition: 0.2s ease-in;\n width: ", ";\n "])), t.toggleHandleBg, t.toggleHandleBorderRadius, t.toggleBorderWidth, t.toggleHandleBoxShadowOld, t.toggleHandleSize, t.toggleHandleLeft, t.toggleHandleTop, t.toggleHandleSize);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Toggle.styles.ts"],"names":["css","memoizeStyle","prefix","isChrome","globalClasses","handle","container","disabled","containerDisabled","containerLoading","background","styles","root","t","toggleLineHeight","toggleFontSize","toggleBgHover","toggleWidth","activeHandle","handleWidthWithBorders","toggleHeight","handleActiveWidth","toggleBorderWidth","toggleHandleActiveWidthIncrement","disableAnimation","toggleHandleBg","toggleHandleBorderRadius","toggleHandleBoxShadowOld","toggleHandleSize","toggleHandleLeft","toggleHandleTop","handleDisabled","toggleDisabledHandleBg","input","toggleBgChecked","toggleBorderColorDisabledChecked","toggleBgDisabledChecked","toggleBorderColor","toggleCheckedBg","toggleCheckedBgHover","input2022","toggleContainerBg","toggleContainerBoxShadow","toggleHandleBoxShadow","toggleContainerBgChecked","toggleContainerBoxShadowChecked","toggleHandleBgChecked","toggleHandleBoxShadowChecked","toggleContainerBgHover","toggleContainerBoxShadowHover","toggleHandleBgHover","toggleHandleBoxShadowHover","toggleContainerBgCheckedHover","toggleContainerBoxShadowCheckedHover","toggleHandleBgCheckedHover","toggleHandleBoxShadowCheckedHover","toggleContainerBgDisabled","toggleContainerBoxShadowDisabled","toggleHandleBgDisabled","toggleHandleBoxShadowDisabled","toggleContainerBgDisabledChecked","toggleContainerBoxShadowDisabledChecked","toggleHandleBgDisabledChecked","toggleHandleBoxShadowDisabledChecked","toggleBorderRadius","toggleBgDisabled","toggleBorderColorDisabled","focused","toggleOutlineColorFocus","toggleOutlineWidth","toggleFocusShadowColor","activeBackground","disabledBackground","activeBackgroundLoading","toggleBgActive","isWarning","toggleShadowColorWarning","isError","toggleShadowColorError","button","labGrotesqueCompenstation","parseInt","labGrotesqueBaselineCompensation","fontSize","checkboxFontSize","baselineCompensation","toggleBaseBg","toggleButtonOffsetY","buttonRight","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';\nimport { isChrome } from '../../lib/client';\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 return css`\n display: inline-flex;\n cursor: pointer;\n align-items: baseline;\n position: relative;\n line-height: ${t.toggleLineHeight};\n font-size: ${t.toggleFontSize};\n\n &:hover .${globalClasses.handle} {\n background: ${t.toggleBgHover};\n }\n\n &::before {\n // non-breaking space.\n // makes a correct space for absolutely positioned button,\n // and also height and baseline for toggle without caption.\n content: '\\\\00A0';\n display: inline-block;\n width: ${t.toggleWidth};\n flex: 0 0 auto;\n }\n `;\n },\n\n activeHandle(t: Theme) {\n const handleWidthWithBorders = t.toggleHeight;\n const handleActiveWidth = `calc(${handleWidthWithBorders} - 2 * ${t.toggleBorderWidth} + ${t.toggleHandleActiveWidthIncrement})`;\n return css`\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}) translateX(-4px);\n }\n `;\n },\n\n disableAnimation() {\n return css`\n &,\n * {\n transition: none !important;\n }\n `;\n },\n\n handle(t: Theme) {\n return css`\n background: ${t.toggleHandleBg};\n border-radius: ${t.toggleHandleBorderRadius};\n bottom: ${t.toggleBorderWidth};\n box-shadow: ${t.toggleHandleBoxShadowOld};\n height: ${t.toggleHandleSize};\n left: ${t.toggleHandleLeft};\n position: absolute;\n top: ${t.toggleHandleTop};\n transition: 0.2s ease-in;\n width: ${t.toggleHandleSize};\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 background: ${t.toggleCheckedBg};\n &:hover {\n background: ${t.toggleCheckedBgHover};\n }\n }\n `;\n },\n\n input2022(t: Theme) {\n return css`\n &:enabled {\n ~ .${globalClasses.container}, ~ .${globalClasses.handle} {\n transition: 0.2s ease-in !important;\n }\n :not(:checked) {\n ~ .${globalClasses.container} {\n background: ${t.toggleContainerBg};\n box-shadow: ${t.toggleContainerBoxShadow};\n }\n ~ .${globalClasses.handle} {\n background: ${t.toggleHandleBg};\n box-shadow: ${t.toggleHandleBoxShadow};\n }\n }\n :checked {\n ~ .${globalClasses.container} {\n background: ${t.toggleContainerBgChecked};\n box-shadow: ${t.toggleContainerBoxShadowChecked};\n }\n ~ .${globalClasses.handle} {\n background: ${t.toggleHandleBgChecked};\n box-shadow: ${t.toggleHandleBoxShadowChecked};\n }\n }\n }\n &:enabled:hover {\n :not(:checked) {\n ~ .${globalClasses.container} {\n background: ${t.toggleContainerBgHover};\n box-shadow: ${t.toggleContainerBoxShadowHover};\n }\n ~ .${globalClasses.handle} {\n background: ${t.toggleHandleBgHover};\n box-shadow: ${t.toggleHandleBoxShadowHover};\n }\n }\n :checked {\n ~ .${globalClasses.container} {\n background: ${t.toggleContainerBgCheckedHover};\n box-shadow: ${t.toggleContainerBoxShadowCheckedHover};\n }\n ~ .${globalClasses.handle} {\n background: ${t.toggleHandleBgCheckedHover};\n box-shadow: ${t.toggleHandleBoxShadowCheckedHover};\n }\n }\n }\n &:disabled {\n :not(:checked) {\n ~ .${globalClasses.container} {\n background: ${t.toggleContainerBgDisabled};\n box-shadow: ${t.toggleContainerBoxShadowDisabled};\n }\n ~ .${globalClasses.handle} {\n background: ${t.toggleHandleBgDisabled} !important;\n box-shadow: ${t.toggleHandleBoxShadowDisabled};\n }\n }\n :checked {\n ~ .${globalClasses.container} {\n background: ${t.toggleContainerBgDisabledChecked};\n box-shadow: ${t.toggleContainerBoxShadowDisabledChecked};\n }\n ~ .${globalClasses.handle} {\n background: ${t.toggleHandleBgDisabledChecked} !important;\n box-shadow: ${t.toggleHandleBoxShadowDisabledChecked};\n }\n }\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.toggleOutlineColorFocus}, 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.toggleOutlineColorFocus}, 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.toggleOutlineColorFocus}, 0 0 0 ${t.toggleOutlineWidth} ${t.toggleShadowColorError};\n `;\n },\n\n button(t: Theme) {\n const labGrotesqueCompenstation = parseInt(t.labGrotesqueBaselineCompensation);\n const fontSize = parseInt(t.checkboxFontSize);\n const baselineCompensation = fontSize <= 16 && isChrome ? -labGrotesqueCompenstation : 0;\n return css`\n position: absolute;\n left: 0;\n top: 0;\n height: ${t.toggleHeight};\n width: ${t.toggleWidth};\n flex: 1 0 ${t.toggleWidth};\n\n background: ${t.toggleBaseBg};\n border-radius: ${t.toggleBorderRadius};\n line-height: ${t.toggleHeight};\n\n margin-top: calc(${t.toggleButtonOffsetY} + ${baselineCompensation}px);\n `;\n },\n\n buttonRight() {\n return css`\n right: 0;\n left: auto;\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 line-height: ${t.toggleLineHeight};\n font-size: ${t.toggleFontSize};\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","isChrome","globalClasses","handle","container","disabled","containerDisabled","containerLoading","background","styles","root","t","toggleLineHeight","toggleFontSize","toggleBgHover","toggleWidth","activeHandle","handleWidthWithBorders","toggleHeight","handleActiveWidth","toggleBorderWidth","toggleHandleActiveWidthIncrement","disableAnimation","toggleHandleBg","toggleHandleBorderRadius","toggleHandleBoxShadowOld","toggleHandleSize","toggleHandleLeft","toggleHandleTop","handleDisabled","toggleDisabledHandleBg","input","toggleBgChecked","toggleBorderColorDisabledChecked","toggleBgDisabledChecked","toggleBorderColor","toggleCheckedBg","toggleCheckedBgHover","input2022","toggleContainerBg","toggleContainerBoxShadow","toggleHandleBoxShadow","toggleContainerBgChecked","toggleContainerBoxShadowChecked","toggleHandleBgChecked","toggleHandleBoxShadowChecked","toggleContainerBgHover","toggleContainerBoxShadowHover","toggleHandleBgHover","toggleHandleBoxShadowHover","toggleContainerBgCheckedHover","toggleContainerBoxShadowCheckedHover","toggleHandleBgCheckedHover","toggleHandleBoxShadowCheckedHover","toggleContainerBgDisabled","toggleContainerBoxShadowDisabled","toggleHandleBgDisabled","toggleHandleBoxShadowDisabled","toggleContainerBgDisabledChecked","toggleContainerBoxShadowDisabledChecked","toggleHandleBgDisabledChecked","toggleHandleBoxShadowDisabledChecked","toggleBorderRadius","toggleBgDisabled","toggleBorderColorDisabled","focused","toggleOutlineColorFocus","toggleOutlineWidth","toggleFocusShadowColor","activeBackground","disabledBackground","activeBackgroundLoading","toggleBgActive","isWarning","toggleShadowColorWarning","isError","toggleShadowColorError","button","labGrotesqueCompenstation","parseInt","labGrotesqueBaselineCompensation","fontSize","checkboxFontSize","baselineCompensation","toggleBaseBg","toggleButtonOffsetY","buttonRight","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';\nimport { isChrome } from '../../lib/client';\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 return css`\n display: inline-flex;\n cursor: pointer;\n align-items: baseline;\n position: relative;\n line-height: ${t.toggleLineHeight};\n font-size: ${t.toggleFontSize};\n\n &:hover .${globalClasses.handle} {\n background: ${t.toggleBgHover};\n }\n\n &::before {\n // non-breaking space.\n // makes a correct space for absolutely positioned button,\n // and also height and baseline for toggle without caption.\n content: '\\\\00A0';\n display: inline-block;\n width: ${t.toggleWidth};\n flex: 0 0 auto;\n }\n `;\n },\n\n activeHandle(t: Theme) {\n const handleWidthWithBorders = t.toggleHeight;\n const handleActiveWidth = `calc(${handleWidthWithBorders} - 2 * ${t.toggleBorderWidth} + ${t.toggleHandleActiveWidthIncrement})`;\n return css`\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}) translateX(-4px);\n }\n `;\n },\n\n disableAnimation() {\n return css`\n &,\n *,\n & input:enabled {\n ~ .${globalClasses.container}, ~ .${globalClasses.handle} {\n transition: none !important;\n }\n }\n `;\n },\n\n handle(t: Theme) {\n return css`\n background: ${t.toggleHandleBg};\n border-radius: ${t.toggleHandleBorderRadius};\n bottom: ${t.toggleBorderWidth};\n box-shadow: ${t.toggleHandleBoxShadowOld};\n height: ${t.toggleHandleSize};\n left: ${t.toggleHandleLeft};\n position: absolute;\n top: ${t.toggleHandleTop};\n transition: 0.2s ease-in;\n width: ${t.toggleHandleSize};\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 background: ${t.toggleCheckedBg};\n &:hover {\n background: ${t.toggleCheckedBgHover};\n }\n }\n `;\n },\n\n input2022(t: Theme) {\n return css`\n &:enabled {\n ~ .${globalClasses.container}, ~ .${globalClasses.handle} {\n transition: 0.2s ease-in !important;\n }\n :not(:checked) {\n ~ .${globalClasses.container} {\n background: ${t.toggleContainerBg};\n box-shadow: ${t.toggleContainerBoxShadow};\n }\n ~ .${globalClasses.handle} {\n background: ${t.toggleHandleBg};\n box-shadow: ${t.toggleHandleBoxShadow};\n }\n }\n :checked {\n ~ .${globalClasses.container} {\n background: ${t.toggleContainerBgChecked};\n box-shadow: ${t.toggleContainerBoxShadowChecked};\n }\n ~ .${globalClasses.handle} {\n background: ${t.toggleHandleBgChecked};\n box-shadow: ${t.toggleHandleBoxShadowChecked};\n }\n }\n }\n &:enabled:hover {\n :not(:checked) {\n ~ .${globalClasses.container} {\n background: ${t.toggleContainerBgHover};\n box-shadow: ${t.toggleContainerBoxShadowHover};\n }\n ~ .${globalClasses.handle} {\n background: ${t.toggleHandleBgHover};\n box-shadow: ${t.toggleHandleBoxShadowHover};\n }\n }\n :checked {\n ~ .${globalClasses.container} {\n background: ${t.toggleContainerBgCheckedHover};\n box-shadow: ${t.toggleContainerBoxShadowCheckedHover};\n }\n ~ .${globalClasses.handle} {\n background: ${t.toggleHandleBgCheckedHover};\n box-shadow: ${t.toggleHandleBoxShadowCheckedHover};\n }\n }\n }\n &:disabled {\n :not(:checked) {\n ~ .${globalClasses.container} {\n background: ${t.toggleContainerBgDisabled};\n box-shadow: ${t.toggleContainerBoxShadowDisabled};\n }\n ~ .${globalClasses.handle} {\n background: ${t.toggleHandleBgDisabled} !important;\n box-shadow: ${t.toggleHandleBoxShadowDisabled};\n }\n }\n :checked {\n ~ .${globalClasses.container} {\n background: ${t.toggleContainerBgDisabledChecked};\n box-shadow: ${t.toggleContainerBoxShadowDisabledChecked};\n }\n ~ .${globalClasses.handle} {\n background: ${t.toggleHandleBgDisabledChecked} !important;\n box-shadow: ${t.toggleHandleBoxShadowDisabledChecked};\n }\n }\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.toggleOutlineColorFocus}, 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.toggleOutlineColorFocus}, 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.toggleOutlineColorFocus}, 0 0 0 ${t.toggleOutlineWidth} ${t.toggleShadowColorError};\n `;\n },\n\n button(t: Theme) {\n const labGrotesqueCompenstation = parseInt(t.labGrotesqueBaselineCompensation);\n const fontSize = parseInt(t.checkboxFontSize);\n const baselineCompensation = fontSize <= 16 && isChrome ? -labGrotesqueCompenstation : 0;\n return css`\n position: absolute;\n left: 0;\n top: 0;\n height: ${t.toggleHeight};\n width: ${t.toggleWidth};\n flex: 1 0 ${t.toggleWidth};\n\n background: ${t.toggleBaseBg};\n border-radius: ${t.toggleBorderRadius};\n line-height: ${t.toggleHeight};\n\n margin-top: calc(${t.toggleButtonOffsetY} + ${baselineCompensation}px);\n `;\n },\n\n buttonRight() {\n return css`\n right: 0;\n left: auto;\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 line-height: ${t.toggleLineHeight};\n font-size: ${t.toggleFontSize};\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"]}
|
|
@@ -85,7 +85,11 @@ export var CustomComboBox = responsiveLayout(_class = rootNode(_class = (_temp =
|
|
|
85
85
|
_this.handleBlur();
|
|
86
86
|
};
|
|
87
87
|
|
|
88
|
-
_this.dispatch = function (action) {
|
|
88
|
+
_this.dispatch = function (action, sync) {
|
|
89
|
+
if (sync === void 0) {
|
|
90
|
+
sync = true;
|
|
91
|
+
}
|
|
92
|
+
|
|
89
93
|
var updateState = function updateState(action) {
|
|
90
94
|
var effects;
|
|
91
95
|
var nextState;
|
|
@@ -105,7 +109,7 @@ export var CustomComboBox = responsiveLayout(_class = rootNode(_class = (_temp =
|
|
|
105
109
|
// https://github.com/skbkontur/retail-ui/pull/3144#issuecomment-1535235366
|
|
106
110
|
|
|
107
111
|
|
|
108
|
-
if (React.version.search('18') === 0) {
|
|
112
|
+
if (sync && React.version.search('18') === 0) {
|
|
109
113
|
ReactDOM.flushSync(function () {
|
|
110
114
|
return updateState(action);
|
|
111
115
|
});
|
|
@@ -427,7 +431,7 @@ export var CustomComboBox = responsiveLayout(_class = rootNode(_class = (_temp =
|
|
|
427
431
|
_proto.componentDidMount = function componentDidMount() {
|
|
428
432
|
this.dispatch({
|
|
429
433
|
type: 'Mount'
|
|
430
|
-
});
|
|
434
|
+
}, false);
|
|
431
435
|
|
|
432
436
|
if (this.props.autoFocus) {
|
|
433
437
|
this.focus();
|
|
@@ -443,7 +447,7 @@ export var CustomComboBox = responsiveLayout(_class = rootNode(_class = (_temp =
|
|
|
443
447
|
type: 'DidUpdate',
|
|
444
448
|
prevProps: prevProps,
|
|
445
449
|
prevState: prevState
|
|
446
|
-
});
|
|
450
|
+
}, false);
|
|
447
451
|
}
|
|
448
452
|
/**
|
|
449
453
|
* @public
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["CustomComboBox.tsx"],"names":["React","ReactDOM","CancelationError","taskWithDelay","fixClickFocusIE","CommonWrapper","responsiveLayout","rootNode","ComboBoxRequestStatus","reducer","ComboBoxView","DELAY_BEFORE_SHOW_LOADER","LOADER_SHOW_TIME","DefaultState","inputChanged","editing","items","loading","opened","focused","textValue","repeatRequest","undefined","requestStatus","Unknown","CustomComboBoxDataTids","comboBoxView","CustomComboBox","state","requestId","cancelationToken","cancelLoaderDelay","focus","props","disabled","input","inputLikeText","selectInputText","selectAll","blur","handleBlur","dispatch","action","updateState","effects","nextState","setState","stateAndEffect","Array","forEach","handleEffect","version","search","flushSync","effect","getState","getProps","handleValueChange","value","type","keepFocus","isMobileLayout","handleFocus","handleClickOutside","e","close","setTimeout","handleInputBlur","handleInputClick","query","getItems","cancelPromise","Promise","_","reject","expectingId","loaderShowDelay","resolve","cancelLoader","race","code","cancelSearch","open","render","viewProps","align","borderless","disablePortal","error","menuAlign","drawArrow","menuPos","placeholder","size","totalCount","warning","width","maxLength","maxMenuHeight","leftIcon","rightIcon","inputMode","onValueChange","onClickOutside","onFocus","onFocusOutside","onInputBlur","onInputValueChange","onInputFocus","onInputClick","onInputKeyDown","event","persist","onMouseEnter","onMouseOver","onMouseLeave","renderItem","renderNotFound","itemWrapper","renderValue","renderTotalCount","renderAddButton","refInput","refMenu","menu","refInputLikeText","setRootNode","componentDidMount","autoFocus","componentDidUpdate","prevProps","prevState","reset","PureComponent","__KONTUR_REACT_UI__"],"mappings":"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","sourcesContent":["import React, { AriaAttributes } from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { Nullable } from '../../typings/utility-types';\nimport { Input, InputIconType } from '../../components/Input';\nimport { Menu } from '../Menu';\nimport { InputLikeText } from '../InputLikeText';\nimport { MenuItemState } from '../../components/MenuItem';\nimport { CancelationError, taskWithDelay } from '../../lib/utils';\nimport { fixClickFocusIE } from '../../lib/events/fixClickFocusIE';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { DropdownContainerProps } from '../DropdownContainer';\n\nimport { ComboBoxRequestStatus } from './CustomComboBoxTypes';\nimport { CustomComboBoxAction, CustomComboBoxEffect, reducer } from './CustomComboBoxReducer';\nimport { ComboBoxView } from './ComboBoxView';\n\nexport interface CustomComboBoxProps<T> extends Pick<DropdownContainerProps, 'menuPos'>, CommonProps {\n align?: 'left' | 'center' | 'right';\n autoFocus?: boolean;\n borderless?: boolean;\n disablePortal?: boolean;\n disabled?: boolean;\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n maxLength?: number;\n menuAlign?: 'left' | 'right';\n drawArrow?: boolean;\n leftIcon?: InputIconType;\n rightIcon?: InputIconType;\n searchOnFocus?: boolean;\n onValueChange?: (value: T) => void;\n onInputValueChange?: (value: string) => Nullable<string> | void;\n onUnexpectedInput?: (value: string) => void | null | T;\n onFocus?: () => void;\n onBlur?: () => void;\n onMouseEnter?: (e: React.MouseEvent) => void;\n onMouseOver?: (e: React.MouseEvent) => void;\n onMouseLeave?: (e: React.MouseEvent) => void;\n onInputKeyDown?: (e: React.KeyboardEvent<HTMLElement>) => void;\n placeholder?: string;\n size?: 'small' | 'medium' | 'large';\n totalCount?: number;\n value?: Nullable<T>;\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n 'aria-describedby'?: AriaAttributes['aria-describedby'];\n width?: string | number;\n maxMenuHeight?: number | string;\n renderNotFound?: () => React.ReactNode;\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n renderItem: (item: T, state?: MenuItemState) => React.ReactNode;\n itemWrapper?: (item?: T) => React.ComponentType<unknown>;\n renderValue: (value: T) => React.ReactNode;\n renderAddButton?: (query?: string) => React.ReactNode;\n valueToString: (value: T) => string;\n itemToValue: (item: T) => string | number;\n getItems: (query: string) => Promise<T[]>;\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode'];\n}\n\nexport interface CustomComboBoxState<T> {\n editing: boolean;\n loading: boolean;\n opened: boolean;\n textValue: string;\n items: Nullable<T[]>;\n inputChanged: boolean;\n focused: boolean;\n repeatRequest: () => void;\n requestStatus: ComboBoxRequestStatus;\n}\n\nexport const DELAY_BEFORE_SHOW_LOADER = 300;\nexport const LOADER_SHOW_TIME = 1000;\n\nexport const DefaultState = {\n inputChanged: false,\n editing: false,\n items: null,\n loading: false,\n opened: false,\n focused: false,\n textValue: '',\n repeatRequest: () => undefined,\n requestStatus: ComboBoxRequestStatus.Unknown,\n};\n\nexport const CustomComboBoxDataTids = {\n comboBoxView: 'ComboBoxView__root',\n} as const;\n\n@responsiveLayout\n@rootNode\nexport class CustomComboBox<T> extends React.PureComponent<CustomComboBoxProps<T>, CustomComboBoxState<T>> {\n public static __KONTUR_REACT_UI__ = 'CustomComboBox';\n\n public state: CustomComboBoxState<T> = DefaultState;\n public input: Nullable<Input>;\n public menu: Nullable<Menu>;\n public inputLikeText: Nullable<InputLikeText>;\n public requestId = 0;\n public loaderShowDelay: Nullable<Promise<void>>;\n private focused = false;\n private cancelationToken: Nullable<(reason?: Error) => void> = null;\n private isMobileLayout!: boolean;\n\n private reducer = reducer;\n public cancelLoaderDelay: () => void = () => null;\n\n /**\n * @public\n */\n public focus = () => {\n if (this.props.disabled) {\n return;\n }\n\n if (this.input) {\n this.input.focus();\n } else if (this.inputLikeText) {\n this.inputLikeText.focus();\n }\n };\n\n /**\n * @public\n */\n public selectInputText = () => {\n if (this.props.disabled) {\n return;\n }\n if (this.input) {\n this.input.selectAll();\n }\n };\n\n /**\n * @public\n */\n public blur = () => {\n if (this.props.disabled) {\n return;\n }\n\n this.handleBlur();\n };\n private setRootNode!: TSetRootNode;\n\n /**\n * @public\n */\n public async search(query: string = this.state.textValue) {\n const { getItems } = this.props;\n\n const cancelPromise: Promise<never> = new Promise((_, reject) => (this.cancelationToken = reject));\n this.requestId += 1;\n const expectingId = this.requestId;\n\n if (!this.loaderShowDelay) {\n this.loaderShowDelay = new Promise<void>((resolve) => {\n const cancelLoader = taskWithDelay(() => {\n this.dispatch({ type: 'RequestItems' });\n setTimeout(resolve, LOADER_SHOW_TIME);\n }, DELAY_BEFORE_SHOW_LOADER);\n\n cancelPromise.catch(() => cancelLoader());\n\n this.cancelLoaderDelay = () => {\n cancelLoader();\n resolve();\n };\n });\n }\n\n try {\n const items = await Promise.race([getItems(query), cancelPromise]);\n if (this.state.loading) {\n await Promise.race([this.loaderShowDelay, cancelPromise]);\n }\n if (expectingId === this.requestId) {\n this.dispatch({\n type: 'ReceiveItems',\n items,\n });\n }\n } catch (error) {\n if (error && error.code === 'CancelationError') {\n this.dispatch({ type: 'CancelRequest' });\n } else if (expectingId === this.requestId) {\n this.dispatch({\n type: 'RequestFailure',\n repeatRequest: () => {\n this.search(query);\n if (this.input) {\n this.input.focus();\n }\n },\n });\n }\n } finally {\n if (expectingId === this.requestId) {\n if (!this.state.loading) {\n this.cancelLoaderDelay();\n }\n this.cancelationToken = null;\n this.loaderShowDelay = null;\n }\n }\n }\n\n /**\n * @public\n */\n public cancelSearch() {\n if (this.cancelationToken) {\n this.cancelationToken(new CancelationError());\n }\n }\n\n /**\n * @public\n */\n public open() {\n this.dispatch({ type: 'Open' });\n }\n\n /**\n * @public\n */\n public close() {\n this.dispatch({ type: 'Close' });\n }\n\n public render() {\n const viewProps = {\n align: this.props.align,\n borderless: this.props.borderless,\n disabled: this.props.disabled,\n disablePortal: this.props.disablePortal,\n editing: this.state.editing,\n error: this.props.error,\n items: this.state.items,\n loading: this.state.loading,\n menuAlign: this.props.menuAlign,\n opened: this.state.opened,\n drawArrow: this.props.drawArrow,\n menuPos: this.props.menuPos,\n placeholder: this.props.placeholder,\n size: this.props.size,\n textValue: this.state.textValue,\n totalCount: this.props.totalCount,\n value: this.props.value,\n warning: this.props.warning,\n 'aria-describedby': this.props['aria-describedby'],\n width: this.props.width,\n maxLength: this.props.maxLength,\n maxMenuHeight: this.props.maxMenuHeight,\n leftIcon: this.props.leftIcon,\n rightIcon: this.props.rightIcon,\n inputMode: this.props.inputMode,\n\n onValueChange: this.handleValueChange,\n onClickOutside: this.handleClickOutside,\n onFocus: this.handleFocus,\n onFocusOutside: this.handleBlur,\n onInputBlur: this.handleInputBlur,\n onInputValueChange: (value: string) => this.dispatch({ type: 'TextChange', value }),\n onInputFocus: this.handleFocus,\n onInputClick: this.handleInputClick,\n onInputKeyDown: (event: React.KeyboardEvent) => {\n event.persist();\n this.dispatch({ type: 'KeyPress', event });\n },\n onMouseEnter: this.props.onMouseEnter,\n onMouseOver: this.props.onMouseOver,\n onMouseLeave: this.props.onMouseLeave,\n renderItem: this.props.renderItem,\n renderNotFound: this.props.renderNotFound,\n itemWrapper: this.props.itemWrapper,\n renderValue: this.props.renderValue,\n renderTotalCount: this.props.renderTotalCount,\n renderAddButton: this.props.renderAddButton,\n repeatRequest: this.state.repeatRequest,\n requestStatus: this.state.requestStatus,\n\n refInput: (input: Nullable<Input>) => {\n this.input = input;\n },\n refMenu: (menu: Nullable<Menu>) => {\n this.menu = menu;\n },\n refInputLikeText: (inputLikeText: Nullable<InputLikeText>) => {\n this.inputLikeText = inputLikeText;\n },\n };\n\n return (\n <CommonWrapper {...this.props}>\n <ComboBoxView {...viewProps} ref={this.setRootNode} />\n </CommonWrapper>\n );\n }\n\n public componentDidMount() {\n this.dispatch({ type: 'Mount' });\n if (this.props.autoFocus) {\n this.focus();\n }\n }\n\n public componentDidUpdate(prevProps: CustomComboBoxProps<T>, prevState: CustomComboBoxState<T>) {\n if (prevState.editing && !this.state.editing) {\n this.handleBlur();\n }\n this.dispatch({ type: 'DidUpdate', prevProps, prevState });\n }\n\n /**\n * @public\n */\n public reset() {\n this.dispatch({ type: 'Reset' });\n }\n\n private dispatch = (action: CustomComboBoxAction<T>) => {\n const updateState = (action: CustomComboBoxAction<T>) => {\n let effects: Array<CustomComboBoxEffect<T>>;\n let nextState: Pick<CustomComboBoxState<T>, never>;\n\n this.setState(\n (state) => {\n const stateAndEffect = this.reducer(state, this.props, action);\n [nextState, effects] = stateAndEffect instanceof Array ? stateAndEffect : [stateAndEffect, []];\n return nextState;\n },\n () => {\n effects.forEach(this.handleEffect);\n },\n );\n };\n\n // Auto-batching React@18 creates problems that are fixed with flushSync\n // https://github.com/skbkontur/retail-ui/pull/3144#issuecomment-1535235366\n if (React.version.search('18') === 0) {\n ReactDOM.flushSync(() => updateState(action));\n } else {\n updateState(action);\n }\n };\n\n private handleEffect = (effect: CustomComboBoxEffect<T>) => {\n effect(this.dispatch, this.getState, this.getProps, () => this);\n };\n\n private getProps = () => this.props;\n\n private getState = () => this.state;\n\n private handleValueChange = (value: T) => {\n this.dispatch({\n type: 'ValueChange',\n value,\n keepFocus: !this.isMobileLayout,\n });\n };\n\n private handleFocus = () => {\n if (this.focused) {\n return;\n }\n this.focused = true;\n this.dispatch({ type: 'Focus' });\n };\n\n private handleClickOutside = (e: Event) => {\n fixClickFocusIE(e);\n this.handleBlur();\n };\n\n private handleBlur = () => {\n if (!this.focused) {\n if (this.state.opened) {\n this.close();\n }\n return;\n }\n\n this.focused = false;\n // workaround for the similar bug with focusout\n // in Firefox, Chrome and IE\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1363964\n setTimeout(() => {\n this.dispatch({ type: 'Blur' });\n });\n };\n\n private handleInputBlur = () => {\n // If menu opened, RenderLayer is active and\n // it would call handleFocusOutside\n // In that way handleBlur would be called\n\n // TODO: add check for mobile layout, to call `handleBlur`\n\n if (this.state.opened) {\n return;\n }\n this.handleBlur();\n };\n\n private handleInputClick = () => {\n if (!this.cancelationToken) {\n this.dispatch({ type: 'InputClick' });\n }\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["CustomComboBox.tsx"],"names":["React","ReactDOM","CancelationError","taskWithDelay","fixClickFocusIE","CommonWrapper","responsiveLayout","rootNode","ComboBoxRequestStatus","reducer","ComboBoxView","DELAY_BEFORE_SHOW_LOADER","LOADER_SHOW_TIME","DefaultState","inputChanged","editing","items","loading","opened","focused","textValue","repeatRequest","undefined","requestStatus","Unknown","CustomComboBoxDataTids","comboBoxView","CustomComboBox","state","requestId","cancelationToken","cancelLoaderDelay","focus","props","disabled","input","inputLikeText","selectInputText","selectAll","blur","handleBlur","dispatch","action","sync","updateState","effects","nextState","setState","stateAndEffect","Array","forEach","handleEffect","version","search","flushSync","effect","getState","getProps","handleValueChange","value","type","keepFocus","isMobileLayout","handleFocus","handleClickOutside","e","close","setTimeout","handleInputBlur","handleInputClick","query","getItems","cancelPromise","Promise","_","reject","expectingId","loaderShowDelay","resolve","cancelLoader","race","code","cancelSearch","open","render","viewProps","align","borderless","disablePortal","error","menuAlign","drawArrow","menuPos","placeholder","size","totalCount","warning","width","maxLength","maxMenuHeight","leftIcon","rightIcon","inputMode","onValueChange","onClickOutside","onFocus","onFocusOutside","onInputBlur","onInputValueChange","onInputFocus","onInputClick","onInputKeyDown","event","persist","onMouseEnter","onMouseOver","onMouseLeave","renderItem","renderNotFound","itemWrapper","renderValue","renderTotalCount","renderAddButton","refInput","refMenu","menu","refInputLikeText","setRootNode","componentDidMount","autoFocus","componentDidUpdate","prevProps","prevState","reset","PureComponent","__KONTUR_REACT_UI__"],"mappings":"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","sourcesContent":["import React, { AriaAttributes } from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { Nullable } from '../../typings/utility-types';\nimport { Input, InputIconType } from '../../components/Input';\nimport { Menu } from '../Menu';\nimport { InputLikeText } from '../InputLikeText';\nimport { MenuItemState } from '../../components/MenuItem';\nimport { CancelationError, taskWithDelay } from '../../lib/utils';\nimport { fixClickFocusIE } from '../../lib/events/fixClickFocusIE';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { DropdownContainerProps } from '../DropdownContainer';\n\nimport { ComboBoxRequestStatus } from './CustomComboBoxTypes';\nimport { CustomComboBoxAction, CustomComboBoxEffect, reducer } from './CustomComboBoxReducer';\nimport { ComboBoxView } from './ComboBoxView';\n\nexport interface CustomComboBoxProps<T> extends Pick<DropdownContainerProps, 'menuPos'>, CommonProps {\n align?: 'left' | 'center' | 'right';\n autoFocus?: boolean;\n borderless?: boolean;\n disablePortal?: boolean;\n disabled?: boolean;\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n maxLength?: number;\n menuAlign?: 'left' | 'right';\n drawArrow?: boolean;\n leftIcon?: InputIconType;\n rightIcon?: InputIconType;\n searchOnFocus?: boolean;\n onValueChange?: (value: T) => void;\n onInputValueChange?: (value: string) => Nullable<string> | void;\n onUnexpectedInput?: (value: string) => void | null | T;\n onFocus?: () => void;\n onBlur?: () => void;\n onMouseEnter?: (e: React.MouseEvent) => void;\n onMouseOver?: (e: React.MouseEvent) => void;\n onMouseLeave?: (e: React.MouseEvent) => void;\n onInputKeyDown?: (e: React.KeyboardEvent<HTMLElement>) => void;\n placeholder?: string;\n size?: 'small' | 'medium' | 'large';\n totalCount?: number;\n value?: Nullable<T>;\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n 'aria-describedby'?: AriaAttributes['aria-describedby'];\n width?: string | number;\n maxMenuHeight?: number | string;\n renderNotFound?: () => React.ReactNode;\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n renderItem: (item: T, state?: MenuItemState) => React.ReactNode;\n itemWrapper?: (item?: T) => React.ComponentType<unknown>;\n renderValue: (value: T) => React.ReactNode;\n renderAddButton?: (query?: string) => React.ReactNode;\n valueToString: (value: T) => string;\n itemToValue: (item: T) => string | number;\n getItems: (query: string) => Promise<T[]>;\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode'];\n}\n\nexport interface CustomComboBoxState<T> {\n editing: boolean;\n loading: boolean;\n opened: boolean;\n textValue: string;\n items: Nullable<T[]>;\n inputChanged: boolean;\n focused: boolean;\n repeatRequest: () => void;\n requestStatus: ComboBoxRequestStatus;\n}\n\nexport const DELAY_BEFORE_SHOW_LOADER = 300;\nexport const LOADER_SHOW_TIME = 1000;\n\nexport const DefaultState = {\n inputChanged: false,\n editing: false,\n items: null,\n loading: false,\n opened: false,\n focused: false,\n textValue: '',\n repeatRequest: () => undefined,\n requestStatus: ComboBoxRequestStatus.Unknown,\n};\n\nexport const CustomComboBoxDataTids = {\n comboBoxView: 'ComboBoxView__root',\n} as const;\n\n@responsiveLayout\n@rootNode\nexport class CustomComboBox<T> extends React.PureComponent<CustomComboBoxProps<T>, CustomComboBoxState<T>> {\n public static __KONTUR_REACT_UI__ = 'CustomComboBox';\n\n public state: CustomComboBoxState<T> = DefaultState;\n public input: Nullable<Input>;\n public menu: Nullable<Menu>;\n public inputLikeText: Nullable<InputLikeText>;\n public requestId = 0;\n public loaderShowDelay: Nullable<Promise<void>>;\n private focused = false;\n private cancelationToken: Nullable<(reason?: Error) => void> = null;\n private isMobileLayout!: boolean;\n\n private reducer = reducer;\n public cancelLoaderDelay: () => void = () => null;\n\n /**\n * @public\n */\n public focus = () => {\n if (this.props.disabled) {\n return;\n }\n\n if (this.input) {\n this.input.focus();\n } else if (this.inputLikeText) {\n this.inputLikeText.focus();\n }\n };\n\n /**\n * @public\n */\n public selectInputText = () => {\n if (this.props.disabled) {\n return;\n }\n if (this.input) {\n this.input.selectAll();\n }\n };\n\n /**\n * @public\n */\n public blur = () => {\n if (this.props.disabled) {\n return;\n }\n\n this.handleBlur();\n };\n private setRootNode!: TSetRootNode;\n\n /**\n * @public\n */\n public async search(query: string = this.state.textValue) {\n const { getItems } = this.props;\n\n const cancelPromise: Promise<never> = new Promise((_, reject) => (this.cancelationToken = reject));\n this.requestId += 1;\n const expectingId = this.requestId;\n\n if (!this.loaderShowDelay) {\n this.loaderShowDelay = new Promise<void>((resolve) => {\n const cancelLoader = taskWithDelay(() => {\n this.dispatch({ type: 'RequestItems' });\n setTimeout(resolve, LOADER_SHOW_TIME);\n }, DELAY_BEFORE_SHOW_LOADER);\n\n cancelPromise.catch(() => cancelLoader());\n\n this.cancelLoaderDelay = () => {\n cancelLoader();\n resolve();\n };\n });\n }\n\n try {\n const items = await Promise.race([getItems(query), cancelPromise]);\n if (this.state.loading) {\n await Promise.race([this.loaderShowDelay, cancelPromise]);\n }\n if (expectingId === this.requestId) {\n this.dispatch({\n type: 'ReceiveItems',\n items,\n });\n }\n } catch (error) {\n if (error && error.code === 'CancelationError') {\n this.dispatch({ type: 'CancelRequest' });\n } else if (expectingId === this.requestId) {\n this.dispatch({\n type: 'RequestFailure',\n repeatRequest: () => {\n this.search(query);\n if (this.input) {\n this.input.focus();\n }\n },\n });\n }\n } finally {\n if (expectingId === this.requestId) {\n if (!this.state.loading) {\n this.cancelLoaderDelay();\n }\n this.cancelationToken = null;\n this.loaderShowDelay = null;\n }\n }\n }\n\n /**\n * @public\n */\n public cancelSearch() {\n if (this.cancelationToken) {\n this.cancelationToken(new CancelationError());\n }\n }\n\n /**\n * @public\n */\n public open() {\n this.dispatch({ type: 'Open' });\n }\n\n /**\n * @public\n */\n public close() {\n this.dispatch({ type: 'Close' });\n }\n\n public render() {\n const viewProps = {\n align: this.props.align,\n borderless: this.props.borderless,\n disabled: this.props.disabled,\n disablePortal: this.props.disablePortal,\n editing: this.state.editing,\n error: this.props.error,\n items: this.state.items,\n loading: this.state.loading,\n menuAlign: this.props.menuAlign,\n opened: this.state.opened,\n drawArrow: this.props.drawArrow,\n menuPos: this.props.menuPos,\n placeholder: this.props.placeholder,\n size: this.props.size,\n textValue: this.state.textValue,\n totalCount: this.props.totalCount,\n value: this.props.value,\n warning: this.props.warning,\n 'aria-describedby': this.props['aria-describedby'],\n width: this.props.width,\n maxLength: this.props.maxLength,\n maxMenuHeight: this.props.maxMenuHeight,\n leftIcon: this.props.leftIcon,\n rightIcon: this.props.rightIcon,\n inputMode: this.props.inputMode,\n\n onValueChange: this.handleValueChange,\n onClickOutside: this.handleClickOutside,\n onFocus: this.handleFocus,\n onFocusOutside: this.handleBlur,\n onInputBlur: this.handleInputBlur,\n onInputValueChange: (value: string) => this.dispatch({ type: 'TextChange', value }),\n onInputFocus: this.handleFocus,\n onInputClick: this.handleInputClick,\n onInputKeyDown: (event: React.KeyboardEvent) => {\n event.persist();\n this.dispatch({ type: 'KeyPress', event });\n },\n onMouseEnter: this.props.onMouseEnter,\n onMouseOver: this.props.onMouseOver,\n onMouseLeave: this.props.onMouseLeave,\n renderItem: this.props.renderItem,\n renderNotFound: this.props.renderNotFound,\n itemWrapper: this.props.itemWrapper,\n renderValue: this.props.renderValue,\n renderTotalCount: this.props.renderTotalCount,\n renderAddButton: this.props.renderAddButton,\n repeatRequest: this.state.repeatRequest,\n requestStatus: this.state.requestStatus,\n\n refInput: (input: Nullable<Input>) => {\n this.input = input;\n },\n refMenu: (menu: Nullable<Menu>) => {\n this.menu = menu;\n },\n refInputLikeText: (inputLikeText: Nullable<InputLikeText>) => {\n this.inputLikeText = inputLikeText;\n },\n };\n\n return (\n <CommonWrapper {...this.props}>\n <ComboBoxView {...viewProps} ref={this.setRootNode} />\n </CommonWrapper>\n );\n }\n\n public componentDidMount() {\n this.dispatch({ type: 'Mount' }, false);\n if (this.props.autoFocus) {\n this.focus();\n }\n }\n\n public componentDidUpdate(prevProps: CustomComboBoxProps<T>, prevState: CustomComboBoxState<T>) {\n if (prevState.editing && !this.state.editing) {\n this.handleBlur();\n }\n this.dispatch({ type: 'DidUpdate', prevProps, prevState }, false);\n }\n\n /**\n * @public\n */\n public reset() {\n this.dispatch({ type: 'Reset' });\n }\n\n private dispatch = (action: CustomComboBoxAction<T>, sync = true) => {\n const updateState = (action: CustomComboBoxAction<T>) => {\n let effects: Array<CustomComboBoxEffect<T>>;\n let nextState: Pick<CustomComboBoxState<T>, never>;\n\n this.setState(\n (state) => {\n const stateAndEffect = this.reducer(state, this.props, action);\n [nextState, effects] = stateAndEffect instanceof Array ? stateAndEffect : [stateAndEffect, []];\n return nextState;\n },\n () => {\n effects.forEach(this.handleEffect);\n },\n );\n };\n\n // Auto-batching React@18 creates problems that are fixed with flushSync\n // https://github.com/skbkontur/retail-ui/pull/3144#issuecomment-1535235366\n if (sync && React.version.search('18') === 0) {\n ReactDOM.flushSync(() => updateState(action));\n } else {\n updateState(action);\n }\n };\n\n private handleEffect = (effect: CustomComboBoxEffect<T>) => {\n effect(this.dispatch, this.getState, this.getProps, () => this);\n };\n\n private getProps = () => this.props;\n\n private getState = () => this.state;\n\n private handleValueChange = (value: T) => {\n this.dispatch({\n type: 'ValueChange',\n value,\n keepFocus: !this.isMobileLayout,\n });\n };\n\n private handleFocus = () => {\n if (this.focused) {\n return;\n }\n this.focused = true;\n this.dispatch({ type: 'Focus' });\n };\n\n private handleClickOutside = (e: Event) => {\n fixClickFocusIE(e);\n this.handleBlur();\n };\n\n private handleBlur = () => {\n if (!this.focused) {\n if (this.state.opened) {\n this.close();\n }\n return;\n }\n\n this.focused = false;\n // workaround for the similar bug with focusout\n // in Firefox, Chrome and IE\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1363964\n setTimeout(() => {\n this.dispatch({ type: 'Blur' });\n });\n };\n\n private handleInputBlur = () => {\n // If menu opened, RenderLayer is active and\n // it would call handleFocusOutside\n // In that way handleBlur would be called\n\n // TODO: add check for mobile layout, to call `handleBlur`\n\n if (this.state.opened) {\n return;\n }\n this.handleBlur();\n };\n\n private handleInputClick = () => {\n if (!this.cancelationToken) {\n this.dispatch({ type: 'InputClick' });\n }\n };\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skbkontur/react-ui",
|
|
3
|
-
"version": "4.15.
|
|
3
|
+
"version": "4.15.7-Toggle-disableAnimations",
|
|
4
4
|
"description": "UI Components",
|
|
5
5
|
"main": "cjs/index.js",
|
|
6
6
|
"module": "index.js",
|
|
7
7
|
"sideEffects": false,
|
|
8
|
-
"homepage": "https://tech.skbkontur.ru/react-ui
|
|
8
|
+
"homepage": "https://tech.skbkontur.ru/react-ui",
|
|
9
9
|
"repository": {
|
|
10
10
|
"type": "git",
|
|
11
11
|
"url": "git@github.com:skbkontur/retail-ui.git"
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"build": "run-p build:esm build:cjs && node scripts/build/postbuild",
|
|
22
22
|
"clean": "git clean -fdxqe node_modules",
|
|
23
23
|
"prerelease": "node scripts/publish/prepublish && yarn build",
|
|
24
|
-
"release": "
|
|
24
|
+
"release": "npm publish ./build --workspaces=false",
|
|
25
25
|
"postrelease": "yarn deploy",
|
|
26
26
|
"predeploy": "rimraf .styleguide/deploy && yarn run styleguide:build",
|
|
27
27
|
"deploy": "gh-pages -a -d .styleguide/deploy -r git@github.com:skbkontur/react-ui.git",
|
|
@@ -151,8 +151,5 @@
|
|
|
151
151
|
"peerDependencies": {
|
|
152
152
|
"react": ">=16.9",
|
|
153
153
|
"react-dom": ">=16.9"
|
|
154
|
-
},
|
|
155
|
-
"publishConfig": {
|
|
156
|
-
"tag": "latest"
|
|
157
154
|
}
|
|
158
155
|
}
|