@skbkontur/react-ui 4.22.2 → 4.22.3
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 +8 -0
- package/cjs/components/Checkbox/Checkbox.d.ts +1 -0
- package/cjs/components/Checkbox/Checkbox.js +7 -2
- package/cjs/components/Checkbox/Checkbox.js.map +1 -1
- package/cjs/components/CurrencyInput/CurrencyInput.d.ts +1 -0
- package/cjs/components/CurrencyInput/CurrencyInput.js +9 -5
- package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
- package/cjs/components/DateInput/DateInput.d.ts +1 -0
- package/cjs/components/DateInput/DateInput.js +8 -3
- package/cjs/components/DateInput/DateInput.js.map +1 -1
- package/cjs/components/FileUploader/FileUploader.js +4 -1
- package/cjs/components/FileUploader/FileUploader.js.map +1 -1
- package/cjs/components/Input/Input.d.ts +1 -0
- package/cjs/components/Input/Input.js +8 -6
- package/cjs/components/Input/Input.js.map +1 -1
- package/cjs/components/Radio/Radio.d.ts +1 -0
- package/cjs/components/Radio/Radio.js +7 -2
- package/cjs/components/Radio/Radio.js.map +1 -1
- package/cjs/components/Toggle/Toggle.d.ts +1 -0
- package/cjs/components/Toggle/Toggle.js +8 -7
- package/cjs/components/Toggle/Toggle.js.map +1 -1
- package/cjs/internal/CommonWrapper/CommonWrapper.js +9 -2
- package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
- package/cjs/internal/FocusControlWrapper/FocusControlWrapper.d.ts +17 -0
- package/cjs/internal/FocusControlWrapper/FocusControlWrapper.js +46 -0
- package/cjs/internal/FocusControlWrapper/FocusControlWrapper.js.map +1 -0
- package/cjs/internal/FocusControlWrapper/FocusControlWrapper.stories.d.ts +5 -0
- package/cjs/internal/FocusControlWrapper/index.d.ts +1 -0
- package/cjs/internal/FocusControlWrapper/index.js +1 -0
- package/cjs/internal/FocusControlWrapper/index.js.map +1 -0
- package/cjs/internal/FocusControlWrapper/useFocusControl.d.ts +12 -0
- package/cjs/internal/FocusControlWrapper/useFocusControl.js +34 -0
- package/cjs/internal/FocusControlWrapper/useFocusControl.js.map +1 -0
- package/cjs/internal/InputLikeText/InputLikeText.d.ts +1 -0
- package/cjs/internal/InputLikeText/InputLikeText.js +25 -13
- package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
- package/cjs/{components/DateInput/helpers/SelectionHelpers.js.map → lib/dom/selectionHelpers.js.map} +1 -1
- package/components/Checkbox/Checkbox/Checkbox.js +12 -5
- package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
- package/components/Checkbox/Checkbox.d.ts +1 -0
- package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +11 -6
- package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
- package/components/CurrencyInput/CurrencyInput.d.ts +1 -0
- package/components/DateInput/DateInput/DateInput.js +13 -6
- package/components/DateInput/DateInput/DateInput.js.map +1 -1
- package/components/DateInput/DateInput.d.ts +1 -0
- package/components/FileUploader/FileUploader/FileUploader.js +7 -2
- package/components/FileUploader/FileUploader/FileUploader.js.map +1 -1
- package/components/Input/Input/Input.js +11 -6
- package/components/Input/Input/Input.js.map +1 -1
- package/components/Input/Input.d.ts +1 -0
- package/components/Radio/Radio/Radio.js +12 -5
- package/components/Radio/Radio/Radio.js.map +1 -1
- package/components/Radio/Radio.d.ts +1 -0
- package/components/Toggle/Toggle/Toggle.js +12 -7
- package/components/Toggle/Toggle/Toggle.js.map +1 -1
- package/components/Toggle/Toggle.d.ts +1 -0
- package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js +17 -6
- package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
- package/internal/FocusControlWrapper/FocusControlWrapper/FocusControlWrapper.js +33 -0
- package/internal/FocusControlWrapper/FocusControlWrapper/FocusControlWrapper.js.map +1 -0
- package/internal/FocusControlWrapper/FocusControlWrapper/package.json +6 -0
- package/internal/FocusControlWrapper/FocusControlWrapper.d.ts +17 -0
- package/internal/FocusControlWrapper/FocusControlWrapper.stories.d.ts +5 -0
- package/internal/FocusControlWrapper/index/index.js +1 -0
- package/internal/FocusControlWrapper/index/index.js.map +1 -0
- package/internal/FocusControlWrapper/index/package.json +6 -0
- package/internal/FocusControlWrapper/index.d.ts +1 -0
- package/internal/FocusControlWrapper/package.json +6 -0
- package/internal/FocusControlWrapper/useFocusControl/package.json +6 -0
- package/internal/FocusControlWrapper/useFocusControl/useFocusControl.js +33 -0
- package/internal/FocusControlWrapper/useFocusControl/useFocusControl.js.map +1 -0
- package/internal/FocusControlWrapper/useFocusControl.d.ts +12 -0
- package/internal/InputLikeText/InputLikeText/InputLikeText.js +34 -8
- package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
- package/internal/InputLikeText/InputLikeText.d.ts +1 -0
- package/lib/dom/selectionHelpers/package.json +6 -0
- package/{components/DateInput/helpers/SelectionHelpers/SelectionHelpers.js.map → lib/dom/selectionHelpers/selectionHelpers.js.map} +1 -1
- package/package.json +3 -3
- package/components/DateInput/helpers/SelectionHelpers/package.json +0 -6
- /package/cjs/{components/DateInput/helpers/SelectionHelpers.d.ts → lib/dom/selectionHelpers.d.ts} +0 -0
- /package/cjs/{components/DateInput/helpers/SelectionHelpers.js → lib/dom/selectionHelpers.js} +0 -0
- /package/{components/DateInput/helpers/SelectionHelpers/SelectionHelpers.js → lib/dom/selectionHelpers/selectionHelpers.js} +0 -0
- /package/{components/DateInput/helpers/SelectionHelpers.d.ts → lib/dom/selectionHelpers.d.ts} +0 -0
|
@@ -54,7 +54,8 @@ export var CommonWrapper = rootNode(_class = (_temp = _class2 = /*#__PURE__*/fun
|
|
|
54
54
|
var _proto = CommonWrapper.prototype;
|
|
55
55
|
|
|
56
56
|
_proto.render = function render() {
|
|
57
|
-
|
|
57
|
+
var _this2 = this;
|
|
58
|
+
|
|
58
59
|
var _extractCommonProps = extractCommonProps(this.props),
|
|
59
60
|
_extractCommonProps$ = _extractCommonProps[0],
|
|
60
61
|
className = _extractCommonProps$.className,
|
|
@@ -65,11 +66,21 @@ export var CommonWrapper = rootNode(_class = (_temp = _class2 = /*#__PURE__*/fun
|
|
|
65
66
|
rest = _extends({}, _extractCommonProps[1]);
|
|
66
67
|
|
|
67
68
|
this.child = isFunction(children) ? children(rest) : children;
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
69
|
+
|
|
70
|
+
var getChildProps = function getChildProps(child) {
|
|
71
|
+
var childProps = _extends({}, getCommonVisualStateDataAttributes(rest), dataProps);
|
|
72
|
+
|
|
73
|
+
isRefableElement(child) && (childProps.ref = _this2.ref);
|
|
74
|
+
var classNames = cx(child.props.className, className);
|
|
75
|
+
classNames && (childProps.className = classNames);
|
|
76
|
+
|
|
77
|
+
var styles = _extends({}, child.props.style, style);
|
|
78
|
+
|
|
79
|
+
Object.keys(styles).length && (childProps.style = styles);
|
|
80
|
+
return childProps;
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
return /*#__PURE__*/React.isValidElement(this.child) ? /*#__PURE__*/React.cloneElement(this.child, getChildProps(this.child)) : this.child;
|
|
73
84
|
};
|
|
74
85
|
|
|
75
86
|
return CommonWrapper;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["CommonWrapper.tsx"],"names":["React","isFunction","isRefableElement","cx","getRootNode","isInstanceWithRootNode","rootNode","callChildRef","extractCommonProps","getCommonVisualStateDataAttributes","CommonWrapper","rootNodeSubscription","ref","instance","setRootNode","props","rootNodeRef","remove","addRootNodeChangeListener","node","originalRef","child","render","className","style","children","dataProps","rest","isValidElement","cloneElement","Component","__KONTUR_REACT_UI__","displayName"],"mappings":"iUAAA,OAAOA,KAAP,MAAkB,OAAlB;;AAEA,SAASC,UAAT,EAAqBC,gBAArB,QAA6C,iBAA7C;AACA,SAASC,EAAT,QAAmB,2BAAnB;;AAEA,SAASC,WAAT,EAAsBC,sBAAtB,EAA8CC,QAA9C,QAAmG,oBAAnG;AACA,SAASC,YAAT,QAA6B,qCAA7B;;;AAGA,SAASC,kBAAT,QAAmC,sBAAnC;AACA,SAASC,kCAAT,QAAmD,sCAAnD;;;;;AAKA,WAAaC,aAAb,GADCJ,QACD;;;;;;;;AAQUK,IAAAA,oBARV,GAQkE,IARlE
|
|
1
|
+
{"version":3,"sources":["CommonWrapper.tsx"],"names":["React","isFunction","isRefableElement","cx","getRootNode","isInstanceWithRootNode","rootNode","callChildRef","extractCommonProps","getCommonVisualStateDataAttributes","CommonWrapper","rootNodeSubscription","ref","instance","setRootNode","props","rootNodeRef","remove","addRootNodeChangeListener","node","originalRef","child","render","className","style","children","dataProps","rest","getChildProps","childProps","classNames","styles","Object","keys","length","isValidElement","cloneElement","Component","__KONTUR_REACT_UI__","displayName"],"mappings":"iUAAA,OAAOA,KAAP,MAAkB,OAAlB;;AAEA,SAASC,UAAT,EAAqBC,gBAArB,QAA6C,iBAA7C;AACA,SAASC,EAAT,QAAmB,2BAAnB;;AAEA,SAASC,WAAT,EAAsBC,sBAAtB,EAA8CC,QAA9C,QAAmG,oBAAnG;AACA,SAASC,YAAT,QAA6B,qCAA7B;;;AAGA,SAASC,kBAAT,QAAmC,sBAAnC;AACA,SAASC,kCAAT,QAAmD,sCAAnD;;;;;AAKA,WAAaC,aAAb,GADCJ,QACD;;;;;;;;AAQUK,IAAAA,oBARV,GAQkE,IARlE;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCUC,IAAAA,GApCV,GAoCgB,UAACC,QAAD,EAA6C;AACzD,YAAKC,WAAL,CAAiBD,QAAjB;AACA,YAAKE,KAAL,CAAWC,WAAX,0BAAKD,KAAL,CAAWC,WAAX,CAAyBZ,WAAW,CAACS,QAAD,CAApC;;AAEA;AACA;AACA,qCAAKF,oBAAL,2CAA2BM,MAA3B;AACA,YAAKN,oBAAL,GAA4B,IAA5B;;AAEA,UAAIE,QAAQ,IAAIR,sBAAsB,CAACQ,QAAD,CAAtC,EAAkD;AAChD,cAAKF,oBAAL,GAA4BE,QAAQ,CAACK,yBAArC,oBAA4BL,QAAQ,CAACK,yBAAT,CAAqC,UAACC,IAAD,EAAU;AACzE,gBAAKL,WAAL,CAAiBK,IAAjB;AACA,gBAAKJ,KAAL,CAAWC,WAAX,0BAAKD,KAAL,CAAWC,WAAX,CAAyBG,IAAzB;AACD,SAH2B,CAA5B;AAID;;AAED,UAAMC,WAAW,kBAAI,MAAKC,KAAT,qBAAG,YAA0CT,GAA9D;AACAQ,MAAAA,WAAW,IAAIb,YAAY,CAACa,WAAD,EAAcP,QAAd,CAA3B;AACD,KAtDH,2DAUES,MAVF,GAUE,kBAAS,mBACP,0BAAiFd,kBAAkB,CAAC,KAAKO,KAAN,CAAnG,+CAASQ,SAAT,wBAASA,SAAT,CAAoBC,KAApB,wBAAoBA,KAApB,CAA2BC,QAA3B,wBAA2BA,QAA3B,CAAqCT,WAArC,wBAAqCA,WAArC,CAAqDU,SAArD,kEAAuEC,IAAvE,wCACA,KAAKN,KAAL,GAAapB,UAAU,CAACwB,QAAD,CAAV,GAAuBA,QAAQ,CAACE,IAAD,CAA/B,GAAwCF,QAArD,CAEA,IAAMG,aAAa,GAAG,SAAhBA,aAAgB,CAACP,KAAD,EAAuE,CAC3F,IAAMQ,UAAmC,gBACpCpB,kCAAkC,CAACkB,IAAD,CADE,EAEpCD,SAFoC,CAAzC,CAKAxB,gBAAgB,CAACmB,KAAD,CAAhB,KAA4BQ,UAAU,CAACjB,GAAX,GAAiB,MAAI,CAACA,GAAlD,EAEA,IAAMkB,UAAkB,GAAG3B,EAAE,CAACkB,KAAK,CAACN,KAAN,CAAYQ,SAAb,EAAwBA,SAAxB,CAA7B,CACAO,UAAU,KAAKD,UAAU,CAACN,SAAX,GAAuBO,UAA5B,CAAV,CAEA,IAAMC,MAA2B,gBAAQV,KAAK,CAACN,KAAN,CAAYS,KAApB,EAA8BA,KAA9B,CAAjC,CACAQ,MAAM,CAACC,IAAP,CAAYF,MAAZ,EAAoBG,MAApB,KAA+BL,UAAU,CAACL,KAAX,GAAmBO,MAAlD,EAEA,OAAOF,UAAP,CACD,CAfD,CAiBA,OAAO,aAAA7B,KAAK,CAACmC,cAAN,CAA6D,KAAKd,KAAlE,iBACHrB,KAAK,CAACoC,YAAN,CAAmB,KAAKf,KAAxB,EAA+BO,aAAa,CAAC,KAAKP,KAAN,CAA5C,CADG,GAEH,KAAKA,KAFT,CAGD,CAlCH,wBAAyErB,KAAK,CAACqC,SAA/E,WAGgBC,mBAHhB,GAGsC,eAHtC,UAIgBC,WAJhB,GAI8B,eAJ9B","sourcesContent":["import React from 'react';\n\nimport { isFunction, isRefableElement } from '../../lib/utils';\nimport { cx } from '../../lib/theming/Emotion';\nimport { Nullable } from '../../typings/utility-types';\nimport { getRootNode, isInstanceWithRootNode, rootNode, TRootNodeSubscription, TSetRootNode } from '../../lib/rootNode';\nimport { callChildRef } from '../../lib/callChildRef/callChildRef';\n\nimport type { CommonProps, CommonPropsRootNodeRef, CommonWrapperProps } from './types';\nimport { extractCommonProps } from './extractCommonProps';\nimport { getCommonVisualStateDataAttributes } from './getCommonVisualStateDataAttributes';\n\nexport type CommonPropsWithRootNodeRef = CommonProps & CommonPropsRootNodeRef;\n\n@rootNode\nexport class CommonWrapper<P extends CommonPropsWithRootNodeRef> extends React.Component<\n CommonWrapperProps<P> & CommonPropsRootNodeRef\n> {\n public static __KONTUR_REACT_UI__ = 'CommonWrapper';\n public static displayName = 'CommonWrapper';\n\n private child: React.ReactNode;\n private setRootNode!: TSetRootNode;\n private rootNodeSubscription: Nullable<TRootNodeSubscription> = null;\n\n render() {\n const [{ className, style, children, rootNodeRef, ...dataProps }, { ...rest }] = extractCommonProps(this.props);\n this.child = isFunction(children) ? children(rest) : children;\n\n const getChildProps = (child: React.ReactElement<CommonProps & React.RefAttributes<any>>) => {\n const childProps: Record<string, unknown> = {\n ...getCommonVisualStateDataAttributes(rest),\n ...dataProps,\n };\n\n isRefableElement(child) && (childProps.ref = this.ref);\n\n const classNames: string = cx(child.props.className, className);\n classNames && (childProps.className = classNames);\n\n const styles: React.CSSProperties = { ...child.props.style, ...style };\n Object.keys(styles).length && (childProps.style = styles);\n\n return childProps;\n };\n\n return React.isValidElement<CommonProps & React.RefAttributes<any>>(this.child)\n ? React.cloneElement(this.child, getChildProps(this.child))\n : this.child;\n }\n\n private ref = (instance: Nullable<React.ReactInstance>) => {\n this.setRootNode(instance);\n this.props.rootNodeRef?.(getRootNode(instance));\n\n // refs are called when instances change,\n // so we have to renew or remove old subscription\n this.rootNodeSubscription?.remove();\n this.rootNodeSubscription = null;\n\n if (instance && isInstanceWithRootNode(instance)) {\n this.rootNodeSubscription = instance.addRootNodeChangeListener?.((node) => {\n this.setRootNode(node);\n this.props.rootNodeRef?.(node);\n });\n }\n\n const originalRef = (this.child as React.RefAttributes<any>)?.ref;\n originalRef && callChildRef(originalRef, instance);\n };\n}\n"]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
2
|
+
var _excluded = ["disabled", "children", "onBlurWhenDisabled"];
|
|
3
|
+
import React, { isValidElement, cloneElement } from 'react';
|
|
4
|
+
import { CommonWrapper } from "../../CommonWrapper";
|
|
5
|
+
import { useFocusControl } from "../useFocusControl";
|
|
6
|
+
export function FocusControlWrapper(_ref) {
|
|
7
|
+
var disabled = _ref.disabled,
|
|
8
|
+
children = _ref.children,
|
|
9
|
+
onBlurWhenDisabled = _ref.onBlurWhenDisabled,
|
|
10
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
11
|
+
|
|
12
|
+
var isValidChildren = children && /*#__PURE__*/isValidElement(children);
|
|
13
|
+
|
|
14
|
+
var _useFocusControl = useFocusControl({
|
|
15
|
+
disabled: disabled != null ? disabled : isValidChildren ? children.props.disabled : undefined,
|
|
16
|
+
onFocus: isValidChildren ? children.props.onFocus : undefined,
|
|
17
|
+
onBlur: isValidChildren ? children.props.onBlur : undefined,
|
|
18
|
+
onBlurWhenDisabled: onBlurWhenDisabled
|
|
19
|
+
}),
|
|
20
|
+
handleFocus = _useFocusControl.handleFocus,
|
|
21
|
+
handleBlur = _useFocusControl.handleBlur;
|
|
22
|
+
|
|
23
|
+
if (!isValidChildren) {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return /*#__PURE__*/React.createElement(CommonWrapper, rest, React.Children.only( /*#__PURE__*/cloneElement(children, {
|
|
28
|
+
onFocus: handleFocus,
|
|
29
|
+
onBlur: handleBlur
|
|
30
|
+
})));
|
|
31
|
+
}
|
|
32
|
+
FocusControlWrapper.__KONTUR_REACT_UI__ = 'FocusControlWrapper';
|
|
33
|
+
FocusControlWrapper.displayName = 'FocusControlWrapper';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["FocusControlWrapper.tsx"],"names":["React","isValidElement","cloneElement","CommonWrapper","useFocusControl","FocusControlWrapper","disabled","children","onBlurWhenDisabled","rest","isValidChildren","props","undefined","onFocus","onBlur","handleFocus","handleBlur","Children","only","__KONTUR_REACT_UI__","displayName"],"mappings":"mKAAA,OAAOA,KAAP,IAAmCC,cAAnC,EAAmDC,YAAnD,QAAuE,OAAvE;;AAEA,SAASC,aAAT,QAA8B,kBAA9B;;AAEA,SAASC,eAAT,QAAgC,mBAAhC;;;;;;;;;;;;;;AAcA,OAAO,SAASC,mBAAT,OAA4G,KAA7EC,QAA6E,QAA7EA,QAA6E,CAAnEC,QAAmE,QAAnEA,QAAmE,CAAzDC,kBAAyD,QAAzDA,kBAAyD,CAAlCC,IAAkC;AACjH,MAAMC,eAAe,GAAGH,QAAQ,iBAAIN,cAAc,CAACM,QAAD,CAAlD;;AAEA,yBAAoCH,eAAe,CAAC;AAClDE,IAAAA,QAAQ,EAAEA,QAAF,WAAEA,QAAF,GAAeI,eAAe,GAAGH,QAAQ,CAACI,KAAT,CAAeL,QAAlB,GAA6BM,SADjB;AAElDC,IAAAA,OAAO,EAAEH,eAAe,GAAGH,QAAQ,CAACI,KAAT,CAAeE,OAAlB,GAA4BD,SAFF;AAGlDE,IAAAA,MAAM,EAAEJ,eAAe,GAAGH,QAAQ,CAACI,KAAT,CAAeG,MAAlB,GAA2BF,SAHA;AAIlDJ,IAAAA,kBAAkB,EAAlBA,kBAJkD,EAAD,CAAnD,CAAQO,WAAR,oBAAQA,WAAR,CAAqBC,UAArB,oBAAqBA,UAArB;;;AAOA,MAAI,CAACN,eAAL,EAAsB;AACpB,WAAO,IAAP;AACD;;AAED;AACE,wBAAC,aAAD,EAAmBD,IAAnB;AACGT,IAAAA,KAAK,CAACiB,QAAN,CAAeC,IAAf;AACChB,IAAAA,YAAY,CAACK,QAAD,EAAW;AACrBM,MAAAA,OAAO,EAAEE,WADY;AAErBD,MAAAA,MAAM,EAAEE,UAFa,EAAX,CADb,CADH,CADF;;;;;AAUD;;AAEDX,mBAAmB,CAACc,mBAApB,GAA0C,qBAA1C;AACAd,mBAAmB,CAACe,WAApB,GAAkC,qBAAlC","sourcesContent":["import React, { PropsWithChildren, isValidElement, cloneElement } from 'react';\n\nimport { CommonWrapper } from '../CommonWrapper';\n\nimport { useFocusControl } from './useFocusControl';\n\ninterface Props {\n /**\n * Использовать только когда на children нет пропса disabled\n */\n disabled?: boolean;\n\n /**\n * Событие вызывается когда элемент потеряет фокус, и при этом он задисэйблен\n */\n onBlurWhenDisabled(): void | undefined;\n}\n\nexport function FocusControlWrapper({ disabled, children, onBlurWhenDisabled, ...rest }: PropsWithChildren<Props>) {\n const isValidChildren = children && isValidElement(children);\n\n const { handleFocus, handleBlur } = useFocusControl({\n disabled: disabled ?? (isValidChildren ? children.props.disabled : undefined),\n onFocus: isValidChildren ? children.props.onFocus : undefined,\n onBlur: isValidChildren ? children.props.onBlur : undefined,\n onBlurWhenDisabled,\n });\n\n if (!isValidChildren) {\n return null;\n }\n\n return (\n <CommonWrapper {...rest}>\n {React.Children.only(\n cloneElement(children, {\n onFocus: handleFocus,\n onBlur: handleBlur,\n }),\n )}\n </CommonWrapper>\n );\n}\n\nFocusControlWrapper.__KONTUR_REACT_UI__ = 'FocusControlWrapper';\nFocusControlWrapper.displayName = 'FocusControlWrapper';\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { PropsWithChildren } from 'react';
|
|
2
|
+
interface Props {
|
|
3
|
+
/**
|
|
4
|
+
* Использовать только когда на children нет пропса disabled
|
|
5
|
+
*/
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
/**
|
|
8
|
+
* Событие вызывается когда элемент потеряет фокус, и при этом он задисэйблен
|
|
9
|
+
*/
|
|
10
|
+
onBlurWhenDisabled(): void | undefined;
|
|
11
|
+
}
|
|
12
|
+
export declare function FocusControlWrapper({ disabled, children, onBlurWhenDisabled, ...rest }: PropsWithChildren<Props>): JSX.Element | null;
|
|
13
|
+
export declare namespace FocusControlWrapper {
|
|
14
|
+
var __KONTUR_REACT_UI__: string;
|
|
15
|
+
var displayName: string;
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "../FocusControlWrapper";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["index.tsx"],"names":[],"mappings":"AAAA,cAAc,uBAAd","sourcesContent":["export * from './FocusControlWrapper';\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './FocusControlWrapper';
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { useEffect, useState } from 'react';
|
|
2
|
+
export function useFocusControl(_ref) {
|
|
3
|
+
var disabled = _ref.disabled,
|
|
4
|
+
onFocus = _ref.onFocus,
|
|
5
|
+
onBlur = _ref.onBlur,
|
|
6
|
+
onBlurWhenDisabled = _ref.onBlurWhenDisabled;
|
|
7
|
+
|
|
8
|
+
var _useState = useState(false),
|
|
9
|
+
isFocused = _useState[0],
|
|
10
|
+
setFocused = _useState[1];
|
|
11
|
+
|
|
12
|
+
useEffect(function () {
|
|
13
|
+
if (disabled && isFocused && onBlurWhenDisabled) {
|
|
14
|
+
// force calling custom blur event, try "fix" bug in react https://github.com/facebook/react/issues/9142
|
|
15
|
+
onBlurWhenDisabled();
|
|
16
|
+
}
|
|
17
|
+
}, [disabled, isFocused]);
|
|
18
|
+
|
|
19
|
+
var handleFocus = function handleFocus(e) {
|
|
20
|
+
setFocused(true);
|
|
21
|
+
onFocus == null ? void 0 : onFocus(e);
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
var handleBlur = function handleBlur(e) {
|
|
25
|
+
setFocused(false);
|
|
26
|
+
onBlur == null ? void 0 : onBlur(e);
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
return {
|
|
30
|
+
handleFocus: handleFocus,
|
|
31
|
+
handleBlur: handleBlur
|
|
32
|
+
};
|
|
33
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["useFocusControl.tsx"],"names":["useEffect","useState","useFocusControl","disabled","onFocus","onBlur","onBlurWhenDisabled","isFocused","setFocused","handleFocus","e","handleBlur"],"mappings":"AAAA,SAAgBA,SAAhB,EAA2BC,QAA3B,QAA2C,OAA3C;;;;;;;;;AASA,OAAO,SAASC,eAAT,OAAmF,KAAxDC,QAAwD,QAAxDA,QAAwD,CAA9CC,OAA8C,QAA9CA,OAA8C,CAArCC,MAAqC,QAArCA,MAAqC,CAA7BC,kBAA6B,QAA7BA,kBAA6B;AACxF,kBAAgCL,QAAQ,CAAU,KAAV,CAAxC,CAAOM,SAAP,gBAAkBC,UAAlB;;AAEAR,EAAAA,SAAS,CAAC,YAAM;AACd,QAAIG,QAAQ,IAAII,SAAZ,IAAyBD,kBAA7B,EAAiD;AAC/C;AACAA,MAAAA,kBAAkB;AACnB;AACF,GALQ,EAKN,CAACH,QAAD,EAAWI,SAAX,CALM,CAAT;;AAOA,MAAME,WAAW,GAAG,SAAdA,WAAc,CAACC,CAAD,EAAyB;AAC3CF,IAAAA,UAAU,CAAC,IAAD,CAAV;AACAJ,IAAAA,OAAO,QAAP,YAAAA,OAAO,CAAGM,CAAH,CAAP;AACD,GAHD;;AAKA,MAAMC,UAAU,GAAG,SAAbA,UAAa,CAACD,CAAD,EAAyB;AAC1CF,IAAAA,UAAU,CAAC,KAAD,CAAV;AACAH,IAAAA,MAAM,QAAN,YAAAA,MAAM,CAAGK,CAAH,CAAN;AACD,GAHD;;AAKA,SAAO;AACLD,IAAAA,WAAW,EAAXA,WADK;AAELE,IAAAA,UAAU,EAAVA,UAFK,EAAP;;AAID","sourcesContent":["import React, { useEffect, useState } from 'react';\n\ninterface Props {\n disabled?: boolean;\n onFocus?: React.FocusEventHandler;\n onBlur?: React.FocusEventHandler;\n onBlurWhenDisabled?(): void;\n}\n\nexport function useFocusControl({ disabled, onFocus, onBlur, onBlurWhenDisabled }: Props) {\n const [isFocused, setFocused] = useState<boolean>(false);\n\n useEffect(() => {\n if (disabled && isFocused && onBlurWhenDisabled) {\n // force calling custom blur event, try \"fix\" bug in react https://github.com/facebook/react/issues/9142\n onBlurWhenDisabled();\n }\n }, [disabled, isFocused]);\n\n const handleFocus = (e: React.FocusEvent) => {\n setFocused(true);\n onFocus?.(e);\n };\n\n const handleBlur = (e: React.FocusEvent) => {\n setFocused(false);\n onBlur?.(e);\n };\n\n return {\n handleFocus,\n handleBlur,\n };\n}\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface Props {
|
|
3
|
+
disabled?: boolean;
|
|
4
|
+
onFocus?: React.FocusEventHandler;
|
|
5
|
+
onBlur?: React.FocusEventHandler;
|
|
6
|
+
onBlurWhenDisabled?(): void;
|
|
7
|
+
}
|
|
8
|
+
export declare function useFocusControl({ disabled, onFocus, onBlur, onBlurWhenDisabled }: Props): {
|
|
9
|
+
handleFocus: (e: React.FocusEvent) => void;
|
|
10
|
+
handleBlur: (e: React.FocusEvent) => void;
|
|
11
|
+
};
|
|
12
|
+
export {};
|
|
@@ -16,7 +16,7 @@ import { isFunction, isNonNullable } from "../../../lib/utils";
|
|
|
16
16
|
import { isKeyTab, isShortcutPaste } from "../../../lib/events/keyboard/identifiers";
|
|
17
17
|
import { MouseDrag } from "../../../lib/events/MouseDrag";
|
|
18
18
|
import { isEdge, isIE11, isMobile } from "../../../lib/client";
|
|
19
|
-
import { removeAllSelections, selectNodeContents } from "../../../
|
|
19
|
+
import { removeAllSelections, selectNodeContents } from "../../../lib/dom/selectionHelpers";
|
|
20
20
|
import { styles as jsInputStyles } from "../../../components/Input/Input.styles";
|
|
21
21
|
import { ThemeContext } from "../../../lib/theming/ThemeContext";
|
|
22
22
|
import { CommonWrapper } from "../../CommonWrapper";
|
|
@@ -28,6 +28,7 @@ import { isTheme2022 } from "../../../lib/theming/ThemeHelpers";
|
|
|
28
28
|
import { InputLayoutAside } from "../../../components/Input/InputLayout/InputLayoutAside";
|
|
29
29
|
import { InputLayoutContext, InputLayoutContextDefault } from "../../../components/Input/InputLayout/InputLayoutContext";
|
|
30
30
|
import { isInstanceOf } from "../../../lib/isInstanceOf";
|
|
31
|
+
import { FocusControlWrapper } from "../../FocusControlWrapper";
|
|
31
32
|
import { HiddenInput } from "../HiddenInput";
|
|
32
33
|
import { styles } from "../InputLikeText.styles";
|
|
33
34
|
export var InputLikeTextDataTids = {
|
|
@@ -138,7 +139,10 @@ export var InputLikeText = rootNode(_class = (_temp = _class2 = /*#__PURE__*/fun
|
|
|
138
139
|
focused: focused,
|
|
139
140
|
size: size
|
|
140
141
|
});
|
|
141
|
-
return /*#__PURE__*/React.createElement(
|
|
142
|
+
return /*#__PURE__*/React.createElement(FocusControlWrapper, {
|
|
143
|
+
disabled: disabled,
|
|
144
|
+
onBlurWhenDisabled: _this.resetFocus
|
|
145
|
+
}, /*#__PURE__*/React.createElement("span", _extends({
|
|
142
146
|
"data-tid": InputLikeTextDataTids.root
|
|
143
147
|
}, rest, {
|
|
144
148
|
className: className,
|
|
@@ -167,7 +171,7 @@ export var InputLikeText = rootNode(_class = (_temp = _class2 = /*#__PURE__*/fun
|
|
|
167
171
|
className: cx(jsInputStyles.input(_this.theme), (_cx3 = {}, _cx3[styles.absolute()] = !takeContentWidth, _cx3[jsInputStyles.inputFocus(_this.theme)] = focused, _cx3[jsInputStyles.inputDisabled(_this.theme)] = disabled, _cx3))
|
|
168
172
|
}, _this.props.children), _this.renderPlaceholder()), rightSide, isIE11 && focused && /*#__PURE__*/React.createElement(HiddenInput, {
|
|
169
173
|
nodeRef: _this.hiddenInputRef
|
|
170
|
-
})));
|
|
174
|
+
}))));
|
|
171
175
|
};
|
|
172
176
|
|
|
173
177
|
_this.renderLeftIcon = function () {
|
|
@@ -341,7 +345,9 @@ export var InputLikeText = rootNode(_class = (_temp = _class2 = /*#__PURE__*/fun
|
|
|
341
345
|
|
|
342
346
|
_this.handleFocus = function (e) {
|
|
343
347
|
if (isMobile) {
|
|
344
|
-
|
|
348
|
+
var _this$node;
|
|
349
|
+
|
|
350
|
+
(_this$node = _this.node) == null ? void 0 : _this$node.setAttribute('contenteditable', 'true');
|
|
345
351
|
}
|
|
346
352
|
|
|
347
353
|
if (_this.props.disabled) {
|
|
@@ -379,11 +385,33 @@ export var InputLikeText = rootNode(_class = (_temp = _class2 = /*#__PURE__*/fun
|
|
|
379
385
|
}
|
|
380
386
|
};
|
|
381
387
|
|
|
388
|
+
_this.resetFocus = function () {
|
|
389
|
+
_this.selectNodeContentsDebounced.cancel();
|
|
390
|
+
|
|
391
|
+
if (isMobile) {
|
|
392
|
+
var _this$node2;
|
|
393
|
+
|
|
394
|
+
(_this$node2 = _this.node) == null ? void 0 : _this$node2.removeAttribute('contenteditable');
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
if ((isIE11 || isEdge) && _this.frozenBlur) {
|
|
398
|
+
_this.frozenBlur = false;
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
removeAllSelections();
|
|
402
|
+
|
|
403
|
+
_this.setState({
|
|
404
|
+
focused: false
|
|
405
|
+
});
|
|
406
|
+
};
|
|
407
|
+
|
|
382
408
|
_this.handleBlur = function (e) {
|
|
383
409
|
_this.selectNodeContentsDebounced.cancel();
|
|
384
410
|
|
|
385
411
|
if (isMobile) {
|
|
386
|
-
|
|
412
|
+
var _this$node3;
|
|
413
|
+
|
|
414
|
+
(_this$node3 = _this.node) == null ? void 0 : _this$node3.removeAttribute('contenteditable');
|
|
387
415
|
}
|
|
388
416
|
|
|
389
417
|
if (_this.props.disabled) {
|
|
@@ -406,9 +434,7 @@ export var InputLikeText = rootNode(_class = (_temp = _class2 = /*#__PURE__*/fun
|
|
|
406
434
|
focused: false
|
|
407
435
|
});
|
|
408
436
|
|
|
409
|
-
|
|
410
|
-
_this.props.onBlur(e);
|
|
411
|
-
}
|
|
437
|
+
_this.props.onBlur == null ? void 0 : _this.props.onBlur(e);
|
|
412
438
|
};
|
|
413
439
|
|
|
414
440
|
_this.hiddenInputRef = function (el) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["InputLikeText.tsx"],"names":["React","ReactDOM","debounce","globalObject","isFunction","isNonNullable","isKeyTab","isShortcutPaste","MouseDrag","isEdge","isIE11","isMobile","removeAllSelections","selectNodeContents","styles","jsInputStyles","ThemeContext","CommonWrapper","cx","findRenderContainer","rootNode","createPropsGetter","isTheme2022","InputLayoutAside","InputLayoutContext","InputLayoutContextDefault","isInstanceOf","HiddenInput","InputLikeTextDataTids","root","input","nativeInput","InputLikeText","getProps","defaultProps","state","blinking","focused","node","hiddenInput","lastSelectedInnerNode","frozen","frozenBlur","dragging","selectNodeContentsDebounced","selectInnerNode","start","end","document","body","focusTimeout","clearInterval","setTimeout","focus","renderMain","props","innerRef","tabIndex","placeholder","align","borderless","width","size","error","warning","onValueChange","disabled","prefix","suffix","leftIcon","rightIcon","value","onMouseDragStart","onMouseDragEnd","takeContentWidth","ariaDescribedby","rest","leftSide","theme","renderLeftSide","rightSide","renderRightSide","className","getSizeClassName","hovering","blink","focusFallback","warningFallback","errorFallback","hideBlinkingCursor","wrapperClass","wrapper","userSelectContain","context","Object","assign","textAlign","undefined","handleFocus","handleBlur","handleKeyDown","handleMouseDown","absolute","inputFocus","inputDisabled","children","renderPlaceholder","hiddenInputRef","renderLeftIcon","renderIcon","getIconClassname","renderRightIcon","icon","iconNode","useDefaultColor","iconDisabled","renderPrefix","prefixDisabled","renderSuffix","suffixDisabled","sideContainer","rightContainer","hasValue","placeholderDisabled","placeholderFocus","handleDocumentMouseDown","e","target","Node","contains","defrost","handleDocumentKeyDown","onKeyDown","handleMouseDragStart","documentElement","classList","add","userSelectNone","handleMouseDragEnd","remove","setAttribute","version","search","flushSync","setState","onFocus","cancel","removeAttribute","stopPropagation","onBlur","el","sizeLarge","sizeLargeFallback","sizeMedium","sizeMediumFallback","sizeSmall","sizeSmallFallback","blur","blinkTimeout","getNode","componentDidMount","listen","addEventListener","componentWillUnmount","clearTimeout","stop","removeEventListener","render","setRootNode","right","rightIconLarge","leftIconLarge","rightIconMedium","leftIconMedium","rightIconSmall","leftIconSmall","Component","__KONTUR_REACT_UI__","displayName"],"mappings":"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","sourcesContent":["// TODO: Enable this rule in functional components.\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport debounce from 'lodash.debounce';\nimport { globalObject, SafeTimer } from '@skbkontur/global-object';\n\nimport { isFunction, isNonNullable } from '../../lib/utils';\nimport { isKeyTab, isShortcutPaste } from '../../lib/events/keyboard/identifiers';\nimport { MouseDrag, MouseDragEventHandler } from '../../lib/events/MouseDrag';\nimport { isEdge, isIE11, isMobile } from '../../lib/client';\nimport { removeAllSelections, selectNodeContents } from '../../components/DateInput/helpers/SelectionHelpers';\nimport { InputProps, InputIconType, InputState } from '../../components/Input';\nimport { styles as jsInputStyles } from '../../components/Input/Input.styles';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { findRenderContainer } from '../../lib/listenFocusOutside';\nimport { TSetRootNode, rootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { InputLayoutAside } from '../../components/Input/InputLayout/InputLayoutAside';\nimport { InputLayoutContext, InputLayoutContextDefault } from '../../components/Input/InputLayout/InputLayoutContext';\nimport { isInstanceOf } from '../../lib/isInstanceOf';\n\nimport { HiddenInput } from './HiddenInput';\nimport { styles } from './InputLikeText.styles';\n\nexport interface InputLikeTextProps extends CommonProps, InputProps {\n children?: React.ReactNode;\n innerRef?: (el: HTMLElement | null) => void;\n onFocus?: React.FocusEventHandler<HTMLElement>;\n onBlur?: React.FocusEventHandler<HTMLElement>;\n onMouseDragStart?: MouseDragEventHandler;\n onMouseDragEnd?: MouseDragEventHandler;\n takeContentWidth?: boolean;\n}\n\nexport type InputLikeTextState = Omit<InputState, 'needsPolyfillPlaceholder'>;\n\nexport const InputLikeTextDataTids = {\n root: 'InputLikeText__root',\n input: 'InputLikeText__input',\n nativeInput: 'InputLikeText__nativeInput',\n} as const;\n\ntype DefaultProps = Required<Pick<InputLikeTextProps, 'size'>>;\n\n@rootNode\nexport class InputLikeText extends React.Component<InputLikeTextProps, InputLikeTextState> {\n public static __KONTUR_REACT_UI__ = 'InputLikeText';\n public static displayName = 'InputLikeText';\n\n public static defaultProps: DefaultProps = { size: 'small' };\n\n private getProps = createPropsGetter(InputLikeText.defaultProps);\n\n public state = { blinking: false, focused: false };\n\n private theme!: Theme;\n private node: HTMLElement | null = null;\n private hiddenInput: HTMLInputElement | null = null;\n private lastSelectedInnerNode: [HTMLElement, number, number] | null = null;\n private frozen = false;\n private frozenBlur = false;\n private dragging = false;\n private focusTimeout: SafeTimer;\n private blinkTimeout: SafeTimer;\n private setRootNode!: TSetRootNode;\n\n /**\n * @public\n */\n public focus() {\n if (this.node) {\n this.node.focus();\n }\n }\n\n /**\n * @public\n */\n public blur() {\n if (this.node) {\n this.node.blur();\n }\n }\n\n /**\n * @public\n */\n public blink() {\n if (this.props.disabled) {\n return;\n }\n this.setState({ blinking: true }, () => {\n this.blinkTimeout = globalObject.setTimeout(() => this.setState({ blinking: false }), 150);\n });\n }\n\n public getNode(): HTMLElement | null {\n return this.node;\n }\n\n // Async call required for Firefox\n private selectNodeContentsDebounced = debounce(selectNodeContents, 0);\n\n public selectInnerNode = (node: HTMLElement | null, start = 0, end = 1) => {\n if (this.dragging || !node) {\n return;\n }\n if (isIE11 && globalObject.document && findRenderContainer(node, globalObject.document.body)) {\n // Code below causes Popup to close after triggering the focus event on the body in IE11\n return;\n }\n this.frozen = true;\n this.frozenBlur = true;\n\n this.lastSelectedInnerNode = [node, start, end];\n this.selectNodeContentsDebounced(node, start, end);\n\n if (this.focusTimeout) {\n globalObject.clearInterval(this.focusTimeout);\n }\n this.focusTimeout = globalObject.setTimeout(() => (isIE11 || isEdge) && this.node && this.node.focus(), 0);\n };\n\n public componentDidMount() {\n if (this.node) {\n MouseDrag.listen(this.node).onMouseDragStart(this.handleMouseDragStart).onMouseDragEnd(this.handleMouseDragEnd);\n }\n globalObject.document?.addEventListener('mousedown', this.handleDocumentMouseDown);\n globalObject.document?.addEventListener('keydown', this.handleDocumentKeyDown);\n }\n\n public componentWillUnmount() {\n if (this.blinkTimeout) {\n globalObject.clearTimeout(this.blinkTimeout);\n }\n MouseDrag.stop(this.node);\n globalObject.document?.removeEventListener('mousedown', this.handleDocumentMouseDown);\n globalObject.document?.removeEventListener('keydown', this.handleDocumentKeyDown);\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain = (props: CommonWrapperRestProps<InputLikeTextProps>) => {\n const {\n innerRef,\n tabIndex,\n placeholder,\n align,\n borderless,\n width,\n size,\n error,\n warning,\n onValueChange,\n disabled,\n prefix,\n suffix,\n leftIcon,\n rightIcon,\n value,\n onMouseDragStart,\n onMouseDragEnd,\n takeContentWidth,\n 'aria-describedby': ariaDescribedby,\n ...rest\n } = props;\n\n const { focused, blinking } = this.state;\n\n const leftSide = isTheme2022(this.theme) ? (\n <InputLayoutAside icon={leftIcon} text={prefix} side=\"left\" />\n ) : (\n this.renderLeftSide()\n );\n const rightSide = isTheme2022(this.theme) ? (\n <InputLayoutAside icon={rightIcon} text={suffix} side=\"right\" />\n ) : (\n this.renderRightSide()\n );\n\n const className = cx(styles.root(), jsInputStyles.root(this.theme), this.getSizeClassName(), {\n [jsInputStyles.disabled(this.theme)]: !!disabled,\n [jsInputStyles.borderless()]: !!borderless,\n [jsInputStyles.focus(this.theme)]: focused,\n [jsInputStyles.hovering(this.theme)]: !focused && !disabled && !warning && !error && !borderless,\n [jsInputStyles.blink(this.theme)]: blinking,\n [jsInputStyles.warning(this.theme)]: !!warning,\n [jsInputStyles.error(this.theme)]: !!error,\n [jsInputStyles.focusFallback(this.theme)]: focused && (isIE11 || isEdge),\n [jsInputStyles.warningFallback(this.theme)]: !!warning && (isIE11 || isEdge),\n [jsInputStyles.errorFallback(this.theme)]: !!error && (isIE11 || isEdge),\n [jsInputStyles.hideBlinkingCursor()]: isMobile,\n });\n\n const wrapperClass = cx(jsInputStyles.wrapper(), {\n [styles.userSelectContain()]: focused,\n });\n\n const context = InputLayoutContextDefault;\n Object.assign(context, { disabled, focused, size });\n\n return (\n <span\n data-tid={InputLikeTextDataTids.root}\n {...rest}\n className={className}\n style={{ width, textAlign: align }}\n tabIndex={disabled ? undefined : 0}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n ref={this.innerRef}\n onKeyDown={this.handleKeyDown}\n onMouseDown={this.handleMouseDown}\n >\n <InputLayoutContext.Provider value={context}>\n <input\n data-tid={InputLikeTextDataTids.nativeInput}\n type=\"hidden\"\n value={value}\n disabled={disabled}\n aria-describedby={ariaDescribedby}\n />\n {leftSide}\n <span className={wrapperClass}>\n <span\n data-tid={InputLikeTextDataTids.input}\n className={cx(jsInputStyles.input(this.theme), {\n [styles.absolute()]: !takeContentWidth,\n [jsInputStyles.inputFocus(this.theme)]: focused,\n [jsInputStyles.inputDisabled(this.theme)]: disabled,\n })}\n >\n {this.props.children}\n </span>\n {this.renderPlaceholder()}\n </span>\n {rightSide}\n {isIE11 && focused && <HiddenInput nodeRef={this.hiddenInputRef} />}\n </InputLayoutContext.Provider>\n </span>\n );\n };\n\n private getIconClassname(right = false) {\n switch (this.getProps().size) {\n case 'large':\n return right ? jsInputStyles.rightIconLarge(this.theme) : jsInputStyles.leftIconLarge(this.theme);\n case 'medium':\n return right ? jsInputStyles.rightIconMedium(this.theme) : jsInputStyles.leftIconMedium(this.theme);\n case 'small':\n default:\n return right ? jsInputStyles.rightIconSmall(this.theme) : jsInputStyles.leftIconSmall(this.theme);\n }\n }\n\n private renderLeftIcon = () => {\n return this.renderIcon(this.props.leftIcon, this.getIconClassname());\n };\n\n private renderRightIcon = () => {\n return this.renderIcon(this.props.rightIcon, this.getIconClassname(true));\n };\n\n private renderIcon = (icon: InputIconType, className: string): JSX.Element | null => {\n if (!icon) {\n return null;\n }\n\n const { disabled } = this.props;\n const iconNode = isFunction(icon) ? icon() : icon;\n\n return (\n <span\n className={cx(jsInputStyles.icon(), className, jsInputStyles.useDefaultColor(this.theme), {\n [jsInputStyles.iconDisabled()]: disabled,\n })}\n >\n {iconNode}\n </span>\n );\n };\n\n private renderPrefix = (): JSX.Element | null => {\n const { prefix, disabled } = this.props;\n\n if (!prefix) {\n return null;\n }\n\n return (\n <span className={cx(jsInputStyles.prefix(this.theme), { [jsInputStyles.prefixDisabled(this.theme)]: disabled })}>\n {prefix}\n </span>\n );\n };\n\n private renderSuffix = (): JSX.Element | null => {\n const { suffix, disabled } = this.props;\n\n if (!suffix) {\n return null;\n }\n\n return (\n <span className={cx(jsInputStyles.suffix(this.theme), { [jsInputStyles.suffixDisabled(this.theme)]: disabled })}>\n {suffix}\n </span>\n );\n };\n\n private renderLeftSide = (): JSX.Element | null => {\n const leftIcon = this.renderLeftIcon();\n const prefix = this.renderPrefix();\n\n if (!leftIcon && !prefix) {\n return null;\n }\n\n return (\n <span className={jsInputStyles.sideContainer()}>\n {leftIcon}\n {prefix}\n </span>\n );\n };\n\n private renderRightSide = (): JSX.Element | null => {\n const rightIcon = this.renderRightIcon();\n const suffix = this.renderSuffix();\n\n if (!rightIcon && !suffix) {\n return null;\n }\n\n return (\n <span className={cx(jsInputStyles.sideContainer(), jsInputStyles.rightContainer())}>\n {rightIcon}\n {suffix}\n </span>\n );\n };\n\n private renderPlaceholder = (): JSX.Element | null => {\n const { children, placeholder, disabled } = this.props;\n const { focused } = this.state;\n const hasValue = isNonNullable(children) && children !== '';\n\n if (!hasValue && placeholder) {\n return (\n <span\n className={cx(jsInputStyles.placeholder(this.theme), {\n [jsInputStyles.placeholderDisabled(this.theme)]: disabled,\n [jsInputStyles.placeholderFocus(this.theme)]: focused,\n })}\n >\n {placeholder}\n </span>\n );\n }\n return null;\n };\n\n private handleDocumentMouseDown = (e: MouseEvent) => {\n if (this.state.focused && this.node && isInstanceOf(e.target, globalObject.Node) && !this.node.contains(e.target)) {\n this.defrost();\n }\n };\n\n private handleDocumentKeyDown = (e: KeyboardEvent) => {\n if (this.state.focused && isKeyTab(e)) {\n this.defrost();\n }\n };\n\n private handleMouseDown = () => {\n this.frozen = true;\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (this.props.disabled) {\n return;\n }\n\n if (isIE11 && isShortcutPaste(e) && this.hiddenInput) {\n this.frozen = true;\n globalObject.setTimeout(() => {\n if (this.lastSelectedInnerNode) {\n this.selectInnerNode(...this.lastSelectedInnerNode);\n }\n if (this.node) {\n this.node.focus();\n }\n }, 0);\n\n this.hiddenInput.focus();\n }\n\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e as React.KeyboardEvent<HTMLInputElement>);\n }\n };\n\n private handleMouseDragStart: MouseDragEventHandler = (e) => {\n this.dragging = true;\n globalObject.document?.documentElement.classList.add(styles.userSelectNone());\n\n if (this.props.onMouseDragStart) {\n this.props.onMouseDragStart(e);\n }\n };\n\n private handleMouseDragEnd: MouseDragEventHandler = (e) => {\n // Дожидаемся onMouseUp\n globalObject.setTimeout(() => {\n this.dragging = false;\n\n if (this.props.onMouseDragEnd) {\n this.props.onMouseDragEnd(e);\n }\n }, 0);\n\n globalObject.document?.documentElement.classList.remove(styles.userSelectNone());\n };\n\n private handleFocus = (e: React.FocusEvent<HTMLElement>) => {\n if (isMobile) {\n e.target.setAttribute('contenteditable', 'true');\n }\n\n if (this.props.disabled) {\n if (isIE11 && globalObject.document) {\n selectNodeContents(globalObject.document.body, 0, 0);\n }\n return;\n }\n\n if ((isIE11 || isEdge) && this.frozen) {\n this.frozen = false;\n if (this.state.focused) {\n return;\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(() => this.setState({ focused: true }));\n } else {\n this.setState({ focused: true });\n }\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLElement>) => {\n this.selectNodeContentsDebounced.cancel();\n if (isMobile) {\n e.target.removeAttribute('contenteditable');\n }\n\n if (this.props.disabled) {\n e.stopPropagation();\n return;\n }\n\n if ((isIE11 || isEdge) && this.frozenBlur) {\n this.frozenBlur = false;\n return;\n }\n if ((isIE11 || isEdge) && this.frozen) {\n return;\n }\n\n removeAllSelections();\n\n this.setState({ focused: false });\n\n if (this.props.onBlur) {\n this.props.onBlur(e);\n }\n };\n\n private hiddenInputRef = (el: HTMLInputElement | null) => {\n this.hiddenInput = el;\n };\n\n private innerRef = (el: HTMLElement | null) => {\n if (this.props.innerRef) {\n this.props.innerRef(el);\n }\n this.node = el;\n };\n\n private defrost = (): void => {\n this.frozen = false;\n this.frozenBlur = false;\n };\n\n private getSizeClassName = () => {\n switch (this.getProps().size) {\n case 'large':\n return cx({\n [jsInputStyles.sizeLarge(this.theme)]: true,\n [jsInputStyles.sizeLargeFallback(this.theme)]: isIE11 || isEdge,\n });\n case 'medium':\n return cx({\n [jsInputStyles.sizeMedium(this.theme)]: true,\n [jsInputStyles.sizeMediumFallback(this.theme)]: isIE11 || isEdge,\n });\n case 'small':\n default:\n return cx({\n [jsInputStyles.sizeSmall(this.theme)]: true,\n [jsInputStyles.sizeSmallFallback(this.theme)]: isIE11 || isEdge,\n });\n }\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["InputLikeText.tsx"],"names":["React","ReactDOM","debounce","globalObject","isFunction","isNonNullable","isKeyTab","isShortcutPaste","MouseDrag","isEdge","isIE11","isMobile","removeAllSelections","selectNodeContents","styles","jsInputStyles","ThemeContext","CommonWrapper","cx","findRenderContainer","rootNode","createPropsGetter","isTheme2022","InputLayoutAside","InputLayoutContext","InputLayoutContextDefault","isInstanceOf","FocusControlWrapper","HiddenInput","InputLikeTextDataTids","root","input","nativeInput","InputLikeText","getProps","defaultProps","state","blinking","focused","node","hiddenInput","lastSelectedInnerNode","frozen","frozenBlur","dragging","selectNodeContentsDebounced","selectInnerNode","start","end","document","body","focusTimeout","clearInterval","setTimeout","focus","renderMain","props","innerRef","tabIndex","placeholder","align","borderless","width","size","error","warning","onValueChange","disabled","prefix","suffix","leftIcon","rightIcon","value","onMouseDragStart","onMouseDragEnd","takeContentWidth","ariaDescribedby","rest","leftSide","theme","renderLeftSide","rightSide","renderRightSide","className","getSizeClassName","hovering","blink","focusFallback","warningFallback","errorFallback","hideBlinkingCursor","wrapperClass","wrapper","userSelectContain","context","Object","assign","resetFocus","textAlign","undefined","handleFocus","handleBlur","handleKeyDown","handleMouseDown","absolute","inputFocus","inputDisabled","children","renderPlaceholder","hiddenInputRef","renderLeftIcon","renderIcon","getIconClassname","renderRightIcon","icon","iconNode","useDefaultColor","iconDisabled","renderPrefix","prefixDisabled","renderSuffix","suffixDisabled","sideContainer","rightContainer","hasValue","placeholderDisabled","placeholderFocus","handleDocumentMouseDown","e","target","Node","contains","defrost","handleDocumentKeyDown","onKeyDown","handleMouseDragStart","documentElement","classList","add","userSelectNone","handleMouseDragEnd","remove","setAttribute","version","search","flushSync","setState","onFocus","cancel","removeAttribute","stopPropagation","onBlur","el","sizeLarge","sizeLargeFallback","sizeMedium","sizeMediumFallback","sizeSmall","sizeSmallFallback","blur","blinkTimeout","getNode","componentDidMount","listen","addEventListener","componentWillUnmount","clearTimeout","stop","removeEventListener","render","setRootNode","right","rightIconLarge","leftIconLarge","rightIconMedium","leftIconMedium","rightIconSmall","leftIconSmall","Component","__KONTUR_REACT_UI__","displayName"],"mappings":"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","sourcesContent":["// TODO: Enable this rule in functional components.\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport debounce from 'lodash.debounce';\nimport { globalObject, SafeTimer } from '@skbkontur/global-object';\n\nimport { isFunction, isNonNullable } from '../../lib/utils';\nimport { isKeyTab, isShortcutPaste } from '../../lib/events/keyboard/identifiers';\nimport { MouseDrag, MouseDragEventHandler } from '../../lib/events/MouseDrag';\nimport { isEdge, isIE11, isMobile } from '../../lib/client';\nimport { removeAllSelections, selectNodeContents } from '../../lib/dom/selectionHelpers';\nimport { InputIconType, InputProps, InputState } from '../../components/Input';\nimport { styles as jsInputStyles } from '../../components/Input/Input.styles';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { findRenderContainer } from '../../lib/listenFocusOutside';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { InputLayoutAside } from '../../components/Input/InputLayout/InputLayoutAside';\nimport { InputLayoutContext, InputLayoutContextDefault } from '../../components/Input/InputLayout/InputLayoutContext';\nimport { isInstanceOf } from '../../lib/isInstanceOf';\nimport { FocusControlWrapper } from '../FocusControlWrapper';\n\nimport { HiddenInput } from './HiddenInput';\nimport { styles } from './InputLikeText.styles';\n\nexport interface InputLikeTextProps extends CommonProps, InputProps {\n children?: React.ReactNode;\n innerRef?: (el: HTMLElement | null) => void;\n onFocus?: React.FocusEventHandler<HTMLElement>;\n onBlur?: React.FocusEventHandler<HTMLElement>;\n onMouseDragStart?: MouseDragEventHandler;\n onMouseDragEnd?: MouseDragEventHandler;\n takeContentWidth?: boolean;\n}\n\nexport type InputLikeTextState = Omit<InputState, 'needsPolyfillPlaceholder'>;\n\nexport const InputLikeTextDataTids = {\n root: 'InputLikeText__root',\n input: 'InputLikeText__input',\n nativeInput: 'InputLikeText__nativeInput',\n} as const;\n\ntype DefaultProps = Required<Pick<InputLikeTextProps, 'size'>>;\n\n@rootNode\nexport class InputLikeText extends React.Component<InputLikeTextProps, InputLikeTextState> {\n public static __KONTUR_REACT_UI__ = 'InputLikeText';\n public static displayName = 'InputLikeText';\n\n public static defaultProps: DefaultProps = { size: 'small' };\n\n private getProps = createPropsGetter(InputLikeText.defaultProps);\n\n public state = { blinking: false, focused: false };\n\n private theme!: Theme;\n private node: HTMLElement | null = null;\n private hiddenInput: HTMLInputElement | null = null;\n private lastSelectedInnerNode: [HTMLElement, number, number] | null = null;\n private frozen = false;\n private frozenBlur = false;\n private dragging = false;\n private focusTimeout: SafeTimer;\n private blinkTimeout: SafeTimer;\n private setRootNode!: TSetRootNode;\n\n /**\n * @public\n */\n public focus() {\n if (this.node) {\n this.node.focus();\n }\n }\n\n /**\n * @public\n */\n public blur() {\n if (this.node) {\n this.node.blur();\n }\n }\n\n /**\n * @public\n */\n public blink() {\n if (this.props.disabled) {\n return;\n }\n this.setState({ blinking: true }, () => {\n this.blinkTimeout = globalObject.setTimeout(() => this.setState({ blinking: false }), 150);\n });\n }\n\n public getNode(): HTMLElement | null {\n return this.node;\n }\n\n // Async call required for Firefox\n private selectNodeContentsDebounced = debounce(selectNodeContents, 0);\n\n public selectInnerNode = (node: HTMLElement | null, start = 0, end = 1) => {\n if (this.dragging || !node) {\n return;\n }\n if (isIE11 && globalObject.document && findRenderContainer(node, globalObject.document.body)) {\n // Code below causes Popup to close after triggering the focus event on the body in IE11\n return;\n }\n this.frozen = true;\n this.frozenBlur = true;\n\n this.lastSelectedInnerNode = [node, start, end];\n this.selectNodeContentsDebounced(node, start, end);\n\n if (this.focusTimeout) {\n globalObject.clearInterval(this.focusTimeout);\n }\n this.focusTimeout = globalObject.setTimeout(() => (isIE11 || isEdge) && this.node && this.node.focus(), 0);\n };\n\n public componentDidMount() {\n if (this.node) {\n MouseDrag.listen(this.node).onMouseDragStart(this.handleMouseDragStart).onMouseDragEnd(this.handleMouseDragEnd);\n }\n globalObject.document?.addEventListener('mousedown', this.handleDocumentMouseDown);\n globalObject.document?.addEventListener('keydown', this.handleDocumentKeyDown);\n }\n\n public componentWillUnmount() {\n if (this.blinkTimeout) {\n globalObject.clearTimeout(this.blinkTimeout);\n }\n MouseDrag.stop(this.node);\n globalObject.document?.removeEventListener('mousedown', this.handleDocumentMouseDown);\n globalObject.document?.removeEventListener('keydown', this.handleDocumentKeyDown);\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain = (props: CommonWrapperRestProps<InputLikeTextProps>) => {\n const {\n innerRef,\n tabIndex,\n placeholder,\n align,\n borderless,\n width,\n size,\n error,\n warning,\n onValueChange,\n disabled,\n prefix,\n suffix,\n leftIcon,\n rightIcon,\n value,\n onMouseDragStart,\n onMouseDragEnd,\n takeContentWidth,\n 'aria-describedby': ariaDescribedby,\n ...rest\n } = props;\n\n const { focused, blinking } = this.state;\n\n const leftSide = isTheme2022(this.theme) ? (\n <InputLayoutAside icon={leftIcon} text={prefix} side=\"left\" />\n ) : (\n this.renderLeftSide()\n );\n const rightSide = isTheme2022(this.theme) ? (\n <InputLayoutAside icon={rightIcon} text={suffix} side=\"right\" />\n ) : (\n this.renderRightSide()\n );\n\n const className = cx(styles.root(), jsInputStyles.root(this.theme), this.getSizeClassName(), {\n [jsInputStyles.disabled(this.theme)]: !!disabled,\n [jsInputStyles.borderless()]: !!borderless,\n [jsInputStyles.focus(this.theme)]: focused,\n [jsInputStyles.hovering(this.theme)]: !focused && !disabled && !warning && !error && !borderless,\n [jsInputStyles.blink(this.theme)]: blinking,\n [jsInputStyles.warning(this.theme)]: !!warning,\n [jsInputStyles.error(this.theme)]: !!error,\n [jsInputStyles.focusFallback(this.theme)]: focused && (isIE11 || isEdge),\n [jsInputStyles.warningFallback(this.theme)]: !!warning && (isIE11 || isEdge),\n [jsInputStyles.errorFallback(this.theme)]: !!error && (isIE11 || isEdge),\n [jsInputStyles.hideBlinkingCursor()]: isMobile,\n });\n\n const wrapperClass = cx(jsInputStyles.wrapper(), {\n [styles.userSelectContain()]: focused,\n });\n\n const context = InputLayoutContextDefault;\n Object.assign(context, { disabled, focused, size });\n\n return (\n <FocusControlWrapper disabled={disabled} onBlurWhenDisabled={this.resetFocus}>\n <span\n data-tid={InputLikeTextDataTids.root}\n {...rest}\n className={className}\n style={{ width, textAlign: align }}\n tabIndex={disabled ? undefined : 0}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n ref={this.innerRef}\n onKeyDown={this.handleKeyDown}\n onMouseDown={this.handleMouseDown}\n >\n <InputLayoutContext.Provider value={context}>\n <input\n data-tid={InputLikeTextDataTids.nativeInput}\n type=\"hidden\"\n value={value}\n disabled={disabled}\n aria-describedby={ariaDescribedby}\n />\n {leftSide}\n <span className={wrapperClass}>\n <span\n data-tid={InputLikeTextDataTids.input}\n className={cx(jsInputStyles.input(this.theme), {\n [styles.absolute()]: !takeContentWidth,\n [jsInputStyles.inputFocus(this.theme)]: focused,\n [jsInputStyles.inputDisabled(this.theme)]: disabled,\n })}\n >\n {this.props.children}\n </span>\n {this.renderPlaceholder()}\n </span>\n {rightSide}\n {isIE11 && focused && <HiddenInput nodeRef={this.hiddenInputRef} />}\n </InputLayoutContext.Provider>\n </span>\n </FocusControlWrapper>\n );\n };\n\n private getIconClassname(right = false) {\n switch (this.getProps().size) {\n case 'large':\n return right ? jsInputStyles.rightIconLarge(this.theme) : jsInputStyles.leftIconLarge(this.theme);\n case 'medium':\n return right ? jsInputStyles.rightIconMedium(this.theme) : jsInputStyles.leftIconMedium(this.theme);\n case 'small':\n default:\n return right ? jsInputStyles.rightIconSmall(this.theme) : jsInputStyles.leftIconSmall(this.theme);\n }\n }\n\n private renderLeftIcon = () => {\n return this.renderIcon(this.props.leftIcon, this.getIconClassname());\n };\n\n private renderRightIcon = () => {\n return this.renderIcon(this.props.rightIcon, this.getIconClassname(true));\n };\n\n private renderIcon = (icon: InputIconType, className: string): JSX.Element | null => {\n if (!icon) {\n return null;\n }\n\n const { disabled } = this.props;\n const iconNode = isFunction(icon) ? icon() : icon;\n\n return (\n <span\n className={cx(jsInputStyles.icon(), className, jsInputStyles.useDefaultColor(this.theme), {\n [jsInputStyles.iconDisabled()]: disabled,\n })}\n >\n {iconNode}\n </span>\n );\n };\n\n private renderPrefix = (): JSX.Element | null => {\n const { prefix, disabled } = this.props;\n\n if (!prefix) {\n return null;\n }\n\n return (\n <span className={cx(jsInputStyles.prefix(this.theme), { [jsInputStyles.prefixDisabled(this.theme)]: disabled })}>\n {prefix}\n </span>\n );\n };\n\n private renderSuffix = (): JSX.Element | null => {\n const { suffix, disabled } = this.props;\n\n if (!suffix) {\n return null;\n }\n\n return (\n <span className={cx(jsInputStyles.suffix(this.theme), { [jsInputStyles.suffixDisabled(this.theme)]: disabled })}>\n {suffix}\n </span>\n );\n };\n\n private renderLeftSide = (): JSX.Element | null => {\n const leftIcon = this.renderLeftIcon();\n const prefix = this.renderPrefix();\n\n if (!leftIcon && !prefix) {\n return null;\n }\n\n return (\n <span className={jsInputStyles.sideContainer()}>\n {leftIcon}\n {prefix}\n </span>\n );\n };\n\n private renderRightSide = (): JSX.Element | null => {\n const rightIcon = this.renderRightIcon();\n const suffix = this.renderSuffix();\n\n if (!rightIcon && !suffix) {\n return null;\n }\n\n return (\n <span className={cx(jsInputStyles.sideContainer(), jsInputStyles.rightContainer())}>\n {rightIcon}\n {suffix}\n </span>\n );\n };\n\n private renderPlaceholder = (): JSX.Element | null => {\n const { children, placeholder, disabled } = this.props;\n const { focused } = this.state;\n const hasValue = isNonNullable(children) && children !== '';\n\n if (!hasValue && placeholder) {\n return (\n <span\n className={cx(jsInputStyles.placeholder(this.theme), {\n [jsInputStyles.placeholderDisabled(this.theme)]: disabled,\n [jsInputStyles.placeholderFocus(this.theme)]: focused,\n })}\n >\n {placeholder}\n </span>\n );\n }\n return null;\n };\n\n private handleDocumentMouseDown = (e: MouseEvent) => {\n if (this.state.focused && this.node && isInstanceOf(e.target, globalObject.Node) && !this.node.contains(e.target)) {\n this.defrost();\n }\n };\n\n private handleDocumentKeyDown = (e: KeyboardEvent) => {\n if (this.state.focused && isKeyTab(e)) {\n this.defrost();\n }\n };\n\n private handleMouseDown = () => {\n this.frozen = true;\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (this.props.disabled) {\n return;\n }\n\n if (isIE11 && isShortcutPaste(e) && this.hiddenInput) {\n this.frozen = true;\n globalObject.setTimeout(() => {\n if (this.lastSelectedInnerNode) {\n this.selectInnerNode(...this.lastSelectedInnerNode);\n }\n if (this.node) {\n this.node.focus();\n }\n }, 0);\n\n this.hiddenInput.focus();\n }\n\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e as React.KeyboardEvent<HTMLInputElement>);\n }\n };\n\n private handleMouseDragStart: MouseDragEventHandler = (e) => {\n this.dragging = true;\n globalObject.document?.documentElement.classList.add(styles.userSelectNone());\n\n if (this.props.onMouseDragStart) {\n this.props.onMouseDragStart(e);\n }\n };\n\n private handleMouseDragEnd: MouseDragEventHandler = (e) => {\n // Дожидаемся onMouseUp\n globalObject.setTimeout(() => {\n this.dragging = false;\n\n if (this.props.onMouseDragEnd) {\n this.props.onMouseDragEnd(e);\n }\n }, 0);\n\n globalObject.document?.documentElement.classList.remove(styles.userSelectNone());\n };\n\n private handleFocus = (e: React.FocusEvent<HTMLElement>) => {\n if (isMobile) {\n this.node?.setAttribute('contenteditable', 'true');\n }\n\n if (this.props.disabled) {\n if (isIE11 && globalObject.document) {\n selectNodeContents(globalObject.document.body, 0, 0);\n }\n return;\n }\n\n if ((isIE11 || isEdge) && this.frozen) {\n this.frozen = false;\n if (this.state.focused) {\n return;\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(() => this.setState({ focused: true }));\n } else {\n this.setState({ focused: true });\n }\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n };\n\n private resetFocus = () => {\n this.selectNodeContentsDebounced.cancel();\n if (isMobile) {\n this.node?.removeAttribute('contenteditable');\n }\n if ((isIE11 || isEdge) && this.frozenBlur) {\n this.frozenBlur = false;\n }\n removeAllSelections();\n this.setState({ focused: false });\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLElement>) => {\n this.selectNodeContentsDebounced.cancel();\n if (isMobile) {\n this.node?.removeAttribute('contenteditable');\n }\n\n if (this.props.disabled) {\n e.stopPropagation();\n return;\n }\n\n if ((isIE11 || isEdge) && this.frozenBlur) {\n this.frozenBlur = false;\n return;\n }\n if ((isIE11 || isEdge) && this.frozen) {\n return;\n }\n\n removeAllSelections();\n this.setState({ focused: false });\n\n this.props.onBlur?.(e);\n };\n\n private hiddenInputRef = (el: HTMLInputElement | null) => {\n this.hiddenInput = el;\n };\n\n private innerRef = (el: HTMLElement | null) => {\n if (this.props.innerRef) {\n this.props.innerRef(el);\n }\n this.node = el;\n };\n\n private defrost = (): void => {\n this.frozen = false;\n this.frozenBlur = false;\n };\n\n private getSizeClassName = () => {\n switch (this.getProps().size) {\n case 'large':\n return cx({\n [jsInputStyles.sizeLarge(this.theme)]: true,\n [jsInputStyles.sizeLargeFallback(this.theme)]: isIE11 || isEdge,\n });\n case 'medium':\n return cx({\n [jsInputStyles.sizeMedium(this.theme)]: true,\n [jsInputStyles.sizeMediumFallback(this.theme)]: isIE11 || isEdge,\n });\n case 'small':\n default:\n return cx({\n [jsInputStyles.sizeSmall(this.theme)]: true,\n [jsInputStyles.sizeSmallFallback(this.theme)]: isIE11 || isEdge,\n });\n }\n };\n}\n"]}
|
|
@@ -72,6 +72,7 @@ export declare class InputLikeText extends React.Component<InputLikeTextProps, I
|
|
|
72
72
|
private handleMouseDragStart;
|
|
73
73
|
private handleMouseDragEnd;
|
|
74
74
|
private handleFocus;
|
|
75
|
+
private resetFocus;
|
|
75
76
|
private handleBlur;
|
|
76
77
|
private hiddenInputRef;
|
|
77
78
|
private innerRef;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["selectionHelpers.tsx"],"names":["globalObject","isBrowser","selectNodeContents","node","start","end","document","selection","getSelection","range","createRange","undefined","setStart","setEnd","removeAllRanges","addRange","e","body","createTextRange","moveToElementText","select","removeAllSelections"],"mappings":"AAAA,SAASA,YAAT,EAAuBC,SAAvB,QAAwC,0BAAxC;;AAEA,OAAO,IAAMC,kBAAkB,GAAG,SAArBA,kBAAqB,CAACC,IAAD,EAA2BC,KAA3B,EAA2CC,GAA3C,EAA4D;AAC5F,MAAI,CAACF,IAAL,EAAW;AACT;AACD;AACD,MAAIF,SAAS,CAACD,YAAD,CAAT,IAA2B,iBAAiBA,YAAY,CAACM,QAA7D,EAAuE;AACrE,QAAI;AACF,UAAMC,SAAS,GAAGP,YAAY,CAACQ,YAAb,EAAlB;AACA,UAAMC,KAAK,GAAGT,YAAY,CAACM,QAAb,CAAsBI,WAAtB,EAAd;AACA,UAAIN,KAAK,KAAKO,SAAV,IAAuBN,GAAG,KAAKM,SAAnC,EAA8C;AAC5CF,QAAAA,KAAK,CAACG,QAAN,CAAeT,IAAf,EAAqBC,KAArB;AACAK,QAAAA,KAAK,CAACI,MAAN,CAAaV,IAAb,EAAmBE,GAAnB;AACD,OAHD,MAGO;AACLI,QAAAA,KAAK,CAACP,kBAAN,CAAyBC,IAAzB;AACD;AACD,UAAII,SAAS,KAAK,IAAlB,EAAwB;AACtB;AACAA,QAAAA,SAAS,CAACO,eAAV;AACAP,QAAAA,SAAS,CAACQ,QAAV,CAAmBN,KAAnB;AACA;AACD;AACF,KAfD,CAeE,OAAOO,CAAP,EAAU;AACV;AACD;AACF;;AAED,MAAIf,SAAS,CAACD,YAAD,CAAT,IAA2B,qBAAqBA,YAAY,CAACM,QAAb,CAAsBW,IAA1E,EAAgF;AAC9E;AACA,QAAMR,MAAK,GAAGT,YAAY,CAACM,QAAb,CAAsBW,IAAtB,CAA2BC,eAA3B,EAAd;AACAT,IAAAA,MAAK,CAACU,iBAAN,CAAwBhB,IAAxB;AACA,QAAI,OAAOM,MAAK,CAACW,MAAb,KAAwB,UAA5B,EAAwC;AACtCX,MAAAA,MAAK,CAACW,MAAN;AACD;AACD;AACD;AACF,CAlCM;;AAoCP,OAAO,IAAMC,mBAAmB,GAAG,SAAtBA,mBAAsB,GAAM;AACvC,MAAMd,SAAS,GAAGP,YAAY,CAACQ,YAAhB,oBAAGR,YAAY,CAACQ,YAAb,EAAlB;AACA,MAAID,SAAJ,EAAe;AACb,QAAI;AACF;AACAA,MAAAA,SAAS,CAACO,eAAV;AACD,KAHD,CAGE,OAAOE,CAAP,EAAU;AACV;AACD;AACF;AACF,CAVM","sourcesContent":["import { globalObject, isBrowser } from '@skbkontur/global-object';\n\nexport const selectNodeContents = (node: HTMLElement | null, start?: number, end?: number) => {\n if (!node) {\n return;\n }\n if (isBrowser(globalObject) && 'createRange' in globalObject.document) {\n try {\n const selection = globalObject.getSelection();\n const range = globalObject.document.createRange();\n if (start !== undefined && end !== undefined) {\n range.setStart(node, start);\n range.setEnd(node, end);\n } else {\n range.selectNodeContents(node);\n }\n if (selection !== null) {\n // Fix IE from issue not working (https://github.com/skbkontur/retail-ui/issues/1205)\n selection.removeAllRanges();\n selection.addRange(range);\n return;\n }\n } catch (e) {\n // empty block\n }\n }\n\n if (isBrowser(globalObject) && 'createTextRange' in globalObject.document.body) {\n // @ts-expect-error: IE-specific API.\n const range = globalObject.document.body.createTextRange();\n range.moveToElementText(node);\n if (typeof range.select === 'function') {\n range.select();\n }\n return;\n }\n};\n\nexport const removeAllSelections = () => {\n const selection = globalObject.getSelection?.();\n if (selection) {\n try {\n // Fix IE from issue not working (https://github.com/skbkontur/retail-ui/issues/1205)\n selection.removeAllRanges();\n } catch (e) {\n // empty block\n }\n }\n};\n"]}
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skbkontur/react-ui",
|
|
3
|
-
"version": "4.22.
|
|
3
|
+
"version": "4.22.3",
|
|
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/4.22.
|
|
8
|
+
"homepage": "https://tech.skbkontur.ru/react-ui/4.22.3/",
|
|
9
9
|
"repository": {
|
|
10
10
|
"type": "git",
|
|
11
11
|
"url": "git@github.com:skbkontur/retail-ui.git"
|
|
@@ -154,6 +154,6 @@
|
|
|
154
154
|
"react-dom": ">=16.9"
|
|
155
155
|
},
|
|
156
156
|
"publishConfig": {
|
|
157
|
-
"tag": "
|
|
157
|
+
"tag": "old-version"
|
|
158
158
|
}
|
|
159
159
|
}
|
/package/cjs/{components/DateInput/helpers/SelectionHelpers.d.ts → lib/dom/selectionHelpers.d.ts}
RENAMED
|
File without changes
|
/package/cjs/{components/DateInput/helpers/SelectionHelpers.js → lib/dom/selectionHelpers.js}
RENAMED
|
File without changes
|
|
File without changes
|
/package/{components/DateInput/helpers/SelectionHelpers.d.ts → lib/dom/selectionHelpers.d.ts}
RENAMED
|
File without changes
|