@skbkontur/react-ui 4.3.0 → 4.3.1
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 +16 -0
- package/cjs/components/CurrencyInput/CurrencyInput.js +4 -0
- package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
- package/cjs/components/CurrencyInput/CurrencyInputKeyboardActions.d.ts +2 -0
- package/cjs/components/CurrencyInput/CurrencyInputKeyboardActions.js +14 -2
- package/cjs/components/CurrencyInput/CurrencyInputKeyboardActions.js.map +1 -1
- package/cjs/components/DateInput/DateFragmentsView.js +1 -1
- package/cjs/components/DateInput/DateFragmentsView.js.map +1 -1
- package/cjs/components/DatePicker/DatePicker.d.ts +1 -1
- package/cjs/components/FileUploader/FileUploader.md +8 -1
- package/cjs/components/Hint/Hint.d.ts +1 -1
- package/cjs/components/Hint/Hint.js.map +1 -1
- package/cjs/components/Hint/Hint.md +14 -0
- package/cjs/components/ScrollContainer/ScrollContainer.d.ts +1 -1
- package/cjs/components/ScrollContainer/ScrollContainer.helpers.js +4 -4
- package/cjs/components/ScrollContainer/ScrollContainer.helpers.js.map +1 -1
- package/cjs/components/ScrollContainer/ScrollContainer.js +1 -1
- package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
- package/cjs/components/Toast/Toast.js.map +1 -1
- package/cjs/components/Tooltip/Tooltip.d.ts +2 -2
- package/cjs/components/Tooltip/Tooltip.js +2 -2
- package/cjs/components/Tooltip/Tooltip.js.map +1 -1
- package/cjs/internal/CommonWrapper/CommonWrapper.d.ts +1 -1
- package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
- package/cjs/internal/DropdownContainer/DropdownContainer.d.ts +1 -1
- package/cjs/internal/DropdownContainer/DropdownContainer.js.map +1 -1
- package/cjs/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.js +2 -1
- package/cjs/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.js.map +1 -1
- package/cjs/internal/InternalMenu/InternalMenu.js +20 -8
- package/cjs/internal/InternalMenu/InternalMenu.js.map +1 -1
- package/cjs/internal/MaskedInput/MaskedInput.d.ts +1 -0
- package/cjs/internal/MaskedInput/MaskedInput.js +10 -4
- package/cjs/internal/MaskedInput/MaskedInput.js.map +1 -1
- package/cjs/internal/Menu/Menu.js +7 -3
- package/cjs/internal/Menu/Menu.js.map +1 -1
- package/cjs/internal/Popup/Popup.d.ts +1 -1
- package/cjs/internal/Popup/Popup.js +20 -15
- package/cjs/internal/Popup/Popup.js.map +1 -1
- package/cjs/internal/Popup/PopupHelper.d.ts +1 -1
- package/cjs/internal/Popup/PopupHelper.js.map +1 -1
- package/cjs/internal/Popup/PopupPin.d.ts +1 -1
- package/cjs/internal/Popup/PopupPin.js.map +1 -1
- package/cjs/internal/RenderLayer/RenderLayer.d.ts +1 -1
- package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
- package/cjs/internal/themes/DefaultTheme.js +1 -1
- package/cjs/internal/themes/DefaultTheme.js.map +1 -1
- package/cjs/lib/InstanceWithAnchorElement.d.ts +1 -1
- package/cjs/lib/InstanceWithAnchorElement.js.map +1 -1
- package/cjs/lib/SSRSafe.d.ts +2 -1
- package/cjs/lib/SSRSafe.js +9 -1
- package/cjs/lib/SSRSafe.js.map +1 -1
- package/cjs/lib/listenFocusOutside.d.ts +1 -1
- package/cjs/lib/listenFocusOutside.js.map +1 -1
- package/cjs/lib/rootNode/getRootNode.d.ts +3 -3
- package/cjs/lib/rootNode/getRootNode.js +7 -7
- package/cjs/lib/rootNode/getRootNode.js.map +1 -1
- package/cjs/lib/rootNode/rootNodeDecorator.d.ts +7 -7
- package/cjs/lib/rootNode/rootNodeDecorator.js.map +1 -1
- package/cjs/typings/event-types.d.ts +2 -2
- package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +7 -0
- package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
- package/components/CurrencyInput/CurrencyInputKeyboardActions/CurrencyInputKeyboardActions.js +4 -2
- package/components/CurrencyInput/CurrencyInputKeyboardActions/CurrencyInputKeyboardActions.js.map +1 -1
- package/components/CurrencyInput/CurrencyInputKeyboardActions.d.ts +2 -0
- package/components/DateInput/DateFragmentsView/DateFragmentsView.js +1 -0
- package/components/DateInput/DateFragmentsView/DateFragmentsView.js.map +1 -1
- package/components/DatePicker/DatePicker.d.ts +1 -1
- package/components/FileUploader/FileUploader.md +8 -1
- package/components/Hint/Hint/Hint.js.map +1 -1
- package/components/Hint/Hint.d.ts +1 -1
- package/components/Hint/Hint.md +14 -0
- package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +1 -1
- package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
- package/components/ScrollContainer/ScrollContainer.d.ts +1 -1
- package/components/ScrollContainer/ScrollContainer.helpers/ScrollContainer.helpers.js +4 -4
- package/components/ScrollContainer/ScrollContainer.helpers/ScrollContainer.helpers.js.map +1 -1
- package/components/Toast/Toast/Toast.js.map +1 -1
- package/components/Tooltip/Tooltip/Tooltip.js +2 -2
- package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
- package/components/Tooltip/Tooltip.d.ts +2 -2
- package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
- package/internal/CommonWrapper/CommonWrapper.d.ts +1 -1
- package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js.map +1 -1
- package/internal/DropdownContainer/DropdownContainer.d.ts +1 -1
- package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll/HideBodyVerticalScroll.js +2 -1
- package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll/HideBodyVerticalScroll.js.map +1 -1
- package/internal/InternalMenu/InternalMenu/InternalMenu.js +16 -6
- package/internal/InternalMenu/InternalMenu/InternalMenu.js.map +1 -1
- package/internal/MaskedInput/MaskedInput/MaskedInput.js +9 -5
- package/internal/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
- package/internal/MaskedInput/MaskedInput.d.ts +1 -0
- package/internal/Menu/Menu/Menu.js +6 -1
- package/internal/Menu/Menu/Menu.js.map +1 -1
- package/internal/Popup/Popup/Popup.js +20 -12
- package/internal/Popup/Popup/Popup.js.map +1 -1
- package/internal/Popup/Popup.d.ts +1 -1
- package/internal/Popup/PopupHelper/PopupHelper.js.map +1 -1
- package/internal/Popup/PopupHelper.d.ts +1 -1
- package/internal/Popup/PopupPin/PopupPin.js.map +1 -1
- package/internal/Popup/PopupPin.d.ts +1 -1
- package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
- package/internal/RenderLayer/RenderLayer.d.ts +1 -1
- package/internal/themes/DefaultTheme/DefaultTheme.js +6 -6
- package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
- package/lib/InstanceWithAnchorElement/InstanceWithAnchorElement.js.map +1 -1
- package/lib/InstanceWithAnchorElement.d.ts +1 -1
- package/lib/SSRSafe/SSRSafe.js +7 -0
- package/lib/SSRSafe/SSRSafe.js.map +1 -1
- package/lib/SSRSafe.d.ts +2 -1
- package/lib/listenFocusOutside/listenFocusOutside.js.map +1 -1
- package/lib/listenFocusOutside.d.ts +1 -1
- package/lib/rootNode/getRootNode/getRootNode.js +8 -8
- package/lib/rootNode/getRootNode/getRootNode.js.map +1 -1
- package/lib/rootNode/getRootNode.d.ts +3 -3
- package/lib/rootNode/rootNodeDecorator/rootNodeDecorator.js.map +1 -1
- package/lib/rootNode/rootNodeDecorator.d.ts +7 -7
- package/package.json +2 -2
- package/typings/event-types.d.ts +2 -2
package/cjs/lib/SSRSafe.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";exports.__esModule = true;exports.globalThat = void 0;exports.isHTMLElement = isHTMLElement;exports.isNode = isNode;exports.safePropTypesInstanceOf = safePropTypesInstanceOf;var PropTypes = _interopRequireWildcard(require("prop-types"));
|
|
1
|
+
"use strict";exports.__esModule = true;exports.globalThat = void 0;exports.isElement = isElement;exports.isHTMLElement = isHTMLElement;exports.isNode = isNode;exports.safePropTypesInstanceOf = safePropTypesInstanceOf;var PropTypes = _interopRequireWildcard(require("prop-types"));
|
|
2
2
|
|
|
3
3
|
var _client = require("./client");function _getRequireWildcardCache(nodeInterop) {if (typeof WeakMap !== "function") return null;var cacheBabelInterop = new WeakMap();var cacheNodeInterop = new WeakMap();return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {return nodeInterop ? cacheNodeInterop : cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj, nodeInterop) {if (!nodeInterop && obj && obj.__esModule) {return obj;}if (obj === null || typeof obj !== "object" && typeof obj !== "function") {return { default: obj };}var cache = _getRequireWildcardCache(nodeInterop);if (cache && cache.has(obj)) {return cache.get(obj);}var newObj = {};var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;for (var key in obj) {if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;if (desc && (desc.get || desc.set)) {Object.defineProperty(newObj, key, desc);} else {newObj[key] = obj[key];}}}newObj.default = obj;if (cache) {cache.set(obj, newObj);}return newObj;}
|
|
4
4
|
|
|
@@ -12,6 +12,14 @@ getExpectedClass)
|
|
|
12
12
|
return PropTypes.any;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
+
function isElement(el) {
|
|
16
|
+
if (_client.isBrowser) {
|
|
17
|
+
return el instanceof Element;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
|
|
15
23
|
function isHTMLElement(el) {
|
|
16
24
|
if (_client.isBrowser) {
|
|
17
25
|
return el instanceof HTMLElement;
|
package/cjs/lib/SSRSafe.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["SSRSafe.ts"],"names":["safePropTypesInstanceOf","getExpectedClass","isBrowser","PropTypes","instanceOf","any","
|
|
1
|
+
{"version":3,"sources":["SSRSafe.ts"],"names":["safePropTypesInstanceOf","getExpectedClass","isBrowser","PropTypes","instanceOf","any","isElement","el","Element","isHTMLElement","HTMLElement","isNode","node","Node","globalThat","globalThis","global","window","Function"],"mappings":"yNAAA;;AAEA,kC;;AAEO,SAASA,uBAAT;AACLC,gBADK;AAEqB;AAC1B,MAAIC,iBAAJ,EAAe;AACb,WAAOC,SAAS,CAACC,UAAV,CAAqBH,gBAAgB,EAArC,CAAP;AACD;;AAED,SAAOE,SAAS,CAACE,GAAjB;AACD;;AAEM,SAASC,SAAT,CAAmBC,EAAnB,EAA+C;AACpD,MAAIL,iBAAJ,EAAe;AACb,WAAOK,EAAE,YAAYC,OAArB;AACD;;AAED,SAAO,KAAP;AACD;;AAEM,SAASC,aAAT,CAAuBF,EAAvB,EAAuD;AAC5D,MAAIL,iBAAJ,EAAe;AACb,WAAOK,EAAE,YAAYG,WAArB;AACD;;AAED,SAAO,KAAP;AACD;;AAEM,SAASC,MAAT,CAAgBC,IAAhB,EAA6C;AAClD,MAAIV,iBAAJ,EAAe;AACb,WAAOU,IAAI,YAAYC,IAAvB;AACD;;AAED,SAAO,KAAP;AACD;;AAEM,IAAMC,UAA6B;AACvC,OAAOC,UAAP,KAAsB,QAAtB,IAAkCA,UAAnC;AACC,OAAOC,MAAP,KAAkB,QAAlB,IAA8BA,MAD/B;AAEC,OAAOC,MAAP,KAAkB,QAAlB,IAA8BA,MAF/B;AAGAC,QAAQ,CAAC,aAAD,CAAR,EAJK,C","sourcesContent":["import * as PropTypes from 'prop-types';\n\nimport { isBrowser } from './client';\n\nexport function safePropTypesInstanceOf<T>(\n getExpectedClass: () => new (...args: any[]) => T,\n): PropTypes.Requireable<T> {\n if (isBrowser) {\n return PropTypes.instanceOf(getExpectedClass());\n }\n\n return PropTypes.any;\n}\n\nexport function isElement(el: unknown): el is Element {\n if (isBrowser) {\n return el instanceof Element;\n }\n\n return false;\n}\n\nexport function isHTMLElement(el: unknown): el is HTMLElement {\n if (isBrowser) {\n return el instanceof HTMLElement;\n }\n\n return false;\n}\n\nexport function isNode(node: unknown): node is Node {\n if (isBrowser) {\n return node instanceof Node;\n }\n\n return false;\n}\n\nexport const globalThat: typeof globalThis =\n (typeof globalThis === 'object' && globalThis) ||\n (typeof global === 'object' && global) ||\n (typeof window === 'object' && window) ||\n Function('return this')();\n"]}
|
|
@@ -3,6 +3,6 @@ export declare function containsTargetOrRenderContainer(target: Element): (eleme
|
|
|
3
3
|
* Searches RenderContainer placed in "rootNode" for "node"
|
|
4
4
|
*/
|
|
5
5
|
export declare function findRenderContainer(node: Element, rootNode: Element, container?: Element): Element | null;
|
|
6
|
-
export declare function listen(elements:
|
|
6
|
+
export declare function listen(elements: Element[] | (() => Element[]), callback: (event: Event) => void): {
|
|
7
7
|
remove(): void;
|
|
8
8
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["listenFocusOutside.ts"],"names":["handlers","addHandleEvent","document","body","addEventListener","isFirefox","handleNativeFocus","leading","trailing","capture","isBrowser","readyState","window","event","target","srcElement","forEach","handler","elements","some","containsTargetOrRenderContainer","ReactDOM","unstable_batchedUpdates","callback","element","contains","container","findRenderContainer","node","rootNode","currentNode","parentNode","documentElement","Element","newContainerId","getAttribute","nextNode","querySelector","Error","listen","push","remove","index","indexOf","splice"],"mappings":"gRAAA;AACA;;AAEA;;;;;;;AAOA,IAAMA,QAAoC,GAAG,EAA7C;;AAEA,SAASC,cAAT,GAA0B;AACxB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACEC,EAAAA,QAAQ,CAACC,IAAT,CAAcC,gBAAd;AACEC,sBAAY,OAAZ,GAAuB,SADzB;AAEEA,sBAAY,qBAASC,iBAAT,EAA4B,CAA5B,EAA+B,EAAEC,OAAO,EAAE,IAAX,EAAiBC,QAAQ,EAAE,KAA3B,EAA/B,CAAZ,GAAiFF,iBAFnF;AAGE,IAAEG,OAAO,EAAE,IAAX,EAHF;;AAKD;;AAED,IAAIC,iBAAJ,EAAe;AACb,MAAIR,QAAQ,CAACS,UAAT,KAAwB,UAA5B,EAAwC;AACtCV,IAAAA,cAAc;AACf,GAFD,MAEO;AACLW,IAAAA,MAAM,CAACR,gBAAP,CAAwB,MAAxB,EAAgCH,cAAhC;AACD;AACF;;AAED,SAASK,iBAAT,CAA2BO,KAA3B,EAA2C;AACzC;AACA,MAAMC,
|
|
1
|
+
{"version":3,"sources":["listenFocusOutside.ts"],"names":["handlers","addHandleEvent","document","body","addEventListener","isFirefox","handleNativeFocus","leading","trailing","capture","isBrowser","readyState","window","event","target","srcElement","forEach","handler","elements","some","containsTargetOrRenderContainer","ReactDOM","unstable_batchedUpdates","callback","element","contains","container","findRenderContainer","node","rootNode","currentNode","parentNode","documentElement","Element","newContainerId","getAttribute","nextNode","querySelector","Error","listen","push","remove","index","indexOf","splice"],"mappings":"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","sourcesContent":["import ReactDOM from 'react-dom';\nimport debounce from 'lodash.debounce';\n\nimport { isBrowser, isFirefox } from './client';\n\ninterface FocusOutsideEventHandler {\n elements: Element[] | (() => Element[]);\n callback: (event: Event) => void;\n}\n\nconst handlers: FocusOutsideEventHandler[] = [];\n\nfunction addHandleEvent() {\n /**\n * Firefox do not supports 'focusin' event.\n * Focus events bubbles multiple time\n * without possibilty to cancell bubbling.\n * Using debounce to capture only first focus event\n * Mozilla Firefix\n * ¯\\_(ツ)_/¯\n */\n document.body.addEventListener(\n isFirefox ? 'focus' : ('focusin' as 'focus'),\n isFirefox ? debounce(handleNativeFocus, 0, { leading: true, trailing: false }) : handleNativeFocus,\n { capture: true },\n );\n}\n\nif (isBrowser) {\n if (document.readyState === 'complete') {\n addHandleEvent();\n } else {\n window.addEventListener('load', addHandleEvent);\n }\n}\n\nfunction handleNativeFocus(event: UIEvent) {\n // FIXME: not safe casting\n const target: Element = (event.target || event.srcElement) as Element;\n\n handlers.forEach((handler) => {\n let elements = handler.elements;\n if (typeof elements === 'function') {\n elements = elements();\n }\n\n if (elements.some(containsTargetOrRenderContainer(target))) {\n return;\n }\n ReactDOM.unstable_batchedUpdates(() => handler.callback(event));\n });\n}\n\nexport function containsTargetOrRenderContainer(target: Element) {\n return (element: Element) => {\n if (!element) {\n return false;\n }\n if (element.contains(target)) {\n return true;\n }\n const container = findRenderContainer(target, element);\n return !!container && element.contains(container);\n };\n}\n\n/**\n * Searches RenderContainer placed in \"rootNode\" for \"node\"\n */\nexport function findRenderContainer(node: Element, rootNode: Element, container?: Element): Element | null {\n const currentNode = node.parentNode;\n if (\n !currentNode ||\n node === rootNode ||\n currentNode === rootNode ||\n currentNode === document.body ||\n currentNode === document.documentElement ||\n !(currentNode instanceof Element)\n ) {\n return container ? container : null;\n }\n\n const newContainerId = currentNode.getAttribute('data-rendered-container-id');\n if (newContainerId) {\n const nextNode = document.querySelector(`[data-render-container-id~=\"${newContainerId}\"]`);\n\n if (!nextNode) {\n throw Error(`Origin node for render container was not found`);\n }\n\n return findRenderContainer(nextNode, rootNode, nextNode);\n }\n\n return findRenderContainer(currentNode, rootNode, container);\n}\n\nexport function listen(elements: Element[] | (() => Element[]), callback: (event: Event) => void) {\n const handler = {\n elements,\n callback,\n };\n handlers.push(handler);\n\n return {\n remove() {\n const index = handlers.indexOf(handler);\n if (index > -1) {\n handlers.splice(index, 1);\n }\n },\n };\n}\n"]}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { Nullable } from '../../typings/utility-types';
|
|
3
3
|
/**
|
|
4
|
-
* Extracts component's root
|
|
4
|
+
* Extracts component's root `Element` out of it's instance
|
|
5
5
|
* following the "StrictMode support convention" (@see README.md#strictmode, #2518).
|
|
6
6
|
*
|
|
7
7
|
* Replaces findDOMNode but falls back to it if "convention" is not respected.
|
|
8
8
|
*
|
|
9
9
|
* @param instance Component's instance provided by React.Ref or `this` inside class-components.
|
|
10
|
-
* @returns Component's root
|
|
10
|
+
* @returns Component's root `Element` or null
|
|
11
11
|
*/
|
|
12
|
-
export declare const getRootNode: (instance: Nullable<React.ReactInstance>) => Nullable<
|
|
12
|
+
export declare const getRootNode: (instance: Nullable<React.ReactInstance>) => Nullable<Element>;
|
|
@@ -9,13 +9,13 @@ var _client = require("../client");
|
|
|
9
9
|
var _rootNodeDecorator = require("./rootNodeDecorator"); /* eslint-disable react/no-find-dom-node */
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
|
-
* Extracts component's root
|
|
12
|
+
* Extracts component's root `Element` out of it's instance
|
|
13
13
|
* following the "StrictMode support convention" (@see README.md#strictmode, #2518).
|
|
14
14
|
*
|
|
15
15
|
* Replaces findDOMNode but falls back to it if "convention" is not respected.
|
|
16
16
|
*
|
|
17
17
|
* @param instance Component's instance provided by React.Ref or `this` inside class-components.
|
|
18
|
-
* @returns Component's root
|
|
18
|
+
* @returns Component's root `Element` or null
|
|
19
19
|
*/
|
|
20
20
|
|
|
21
21
|
var getRootNode = function getRootNode(instance) {
|
|
@@ -25,8 +25,8 @@ var getRootNode = function getRootNode(instance) {
|
|
|
25
25
|
return null;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
if ((0, _SSRSafe.
|
|
29
|
-
// instance can be a
|
|
28
|
+
if ((0, _SSRSafe.isElement)(instance)) {
|
|
29
|
+
// instance can be a `Element` already if comming
|
|
30
30
|
// from Refs of intrinsic elements (<div />, <button />, etc.)
|
|
31
31
|
return instance;
|
|
32
32
|
}
|
|
@@ -36,7 +36,7 @@ var getRootNode = function getRootNode(instance) {
|
|
|
36
36
|
if ((0, _rootNodeDecorator.isInstanceWithRootNode)(instance)) {
|
|
37
37
|
// it happened to be that native Node interface also has
|
|
38
38
|
// the "getRootNode" method, but we can ignore it here
|
|
39
|
-
// because we'd already checked the instance on being an
|
|
39
|
+
// because we'd already checked the instance on being an `Element`
|
|
40
40
|
// which is a subclass of Node, so, just fixing types here
|
|
41
41
|
if (!(0, _SSRSafe.isNode)(instance)) {
|
|
42
42
|
rootNode = instance.getRootNode();
|
|
@@ -44,7 +44,7 @@ var getRootNode = function getRootNode(instance) {
|
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
if (rootNode !== undefined) {
|
|
47
|
-
// at this point, it is rather
|
|
47
|
+
// at this point, it is rather `Element` (what we are looking for)
|
|
48
48
|
// or null (which is also OK, e.g. Popup/Tooltip/Hint before opening), so, just return it
|
|
49
49
|
return rootNode;
|
|
50
50
|
}
|
|
@@ -55,5 +55,5 @@ var getRootNode = function getRootNode(instance) {
|
|
|
55
55
|
rootNode = (0, _reactDom.findDOMNode)(instance);
|
|
56
56
|
|
|
57
57
|
// the findDOMNode can also return Text, but we are only intrested in HTMLElements, so just filter it
|
|
58
|
-
return (0, _SSRSafe.
|
|
58
|
+
return (0, _SSRSafe.isElement)(rootNode) ? rootNode : null;
|
|
59
59
|
};exports.getRootNode = getRootNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["getRootNode.ts"],"names":["getRootNode","instance","canUseDOM","rootNode","undefined"],"mappings":";AACA;;;;AAIA;AACA;;AAEA,wD,CARA;;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO,IAAMA,WAAW,GAAG,SAAdA,WAAc,CAACC,QAAD,
|
|
1
|
+
{"version":3,"sources":["getRootNode.ts"],"names":["getRootNode","instance","canUseDOM","rootNode","undefined"],"mappings":";AACA;;;;AAIA;AACA;;AAEA,wD,CARA;;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO,IAAMA,WAAW,GAAG,SAAdA,WAAc,CAACC,QAAD,EAAgE;AACzF,MAAI,CAACC,iBAAD,IAAc,CAACD,QAAnB,EAA6B;AAC3B;AACA;AACA,WAAO,IAAP;AACD;;AAED,MAAI,wBAAUA,QAAV,CAAJ,EAAyB;AACvB;AACA;AACA,WAAOA,QAAP;AACD;;AAED,MAAIE,QAAJ;;AAEA,MAAI,+CAAuBF,QAAvB,CAAJ,EAAsC;AACpC;AACA;AACA;AACA;AACA,QAAI,CAAC,qBAAOA,QAAP,CAAL,EAAuB;AACrBE,MAAAA,QAAQ,GAAGF,QAAQ,CAACD,WAAT,EAAX;AACD;AACF;;AAED,MAAIG,QAAQ,KAAKC,SAAjB,EAA4B;AAC1B;AACA;AACA,WAAOD,QAAP;AACD;;AAED;AACA;AACA;AACAA,EAAAA,QAAQ,GAAG,2BAAYF,QAAZ,CAAX;;AAEA;AACA,SAAO,wBAAUE,QAAV,IAAsBA,QAAtB,GAAiC,IAAxC;AACD,CAtCM,C","sourcesContent":["/* eslint-disable react/no-find-dom-node */\nimport { findDOMNode } from 'react-dom';\nimport React from 'react';\n\nimport { Nullable } from '../../typings/utility-types';\nimport { isElement, isNode } from '../SSRSafe';\nimport { canUseDOM } from '../client';\n\nimport { isInstanceWithRootNode } from './rootNodeDecorator';\n\n/**\n * Extracts component's root `Element` out of it's instance\n * following the \"StrictMode support convention\" (@see README.md#strictmode, #2518).\n *\n * Replaces findDOMNode but falls back to it if \"convention\" is not respected.\n *\n * @param instance Component's instance provided by React.Ref or `this` inside class-components.\n * @returns Component's root `Element` or null\n */\n\nexport const getRootNode = (instance: Nullable<React.ReactInstance>): Nullable<Element> => {\n if (!canUseDOM || !instance) {\n // instance can be `null` if component was unmounted\n // also checking undefined for convinient usage\n return null;\n }\n\n if (isElement(instance)) {\n // instance can be a `Element` already if comming\n // from Refs of intrinsic elements (<div />, <button />, etc.)\n return instance;\n }\n\n let rootNode;\n\n if (isInstanceWithRootNode(instance)) {\n // it happened to be that native Node interface also has\n // the \"getRootNode\" method, but we can ignore it here\n // because we'd already checked the instance on being an `Element`\n // which is a subclass of Node, so, just fixing types here\n if (!isNode(instance)) {\n rootNode = instance.getRootNode();\n }\n }\n\n if (rootNode !== undefined) {\n // at this point, it is rather `Element` (what we are looking for)\n // or null (which is also OK, e.g. Popup/Tooltip/Hint before opening), so, just return it\n return rootNode;\n }\n\n // node is undefined, which means that the instance's root node getter doesn't exists or returns the undefined\n // anyway, it tell us that the convention is not respected (by the component itself or its children),\n // so, we have to fall back to the deprecated findDOMNode, which always works but breaks StrictMode\n rootNode = findDOMNode(instance);\n\n // the findDOMNode can also return Text, but we are only intrested in HTMLElements, so just filter it\n return isElement(rootNode) ? rootNode : null;\n};\n"]}
|
|
@@ -6,22 +6,22 @@ export declare type TRootNodeSubscription = {
|
|
|
6
6
|
remove: () => void;
|
|
7
7
|
};
|
|
8
8
|
export interface InstanceWithRootNode {
|
|
9
|
-
getRootNode: () => Nullable<
|
|
10
|
-
addRootNodeChangeListener?: (callback: (node: Nullable<
|
|
9
|
+
getRootNode: () => Nullable<Element>;
|
|
10
|
+
addRootNodeChangeListener?: (callback: (node: Nullable<Element>) => void) => TRootNodeSubscription;
|
|
11
11
|
}
|
|
12
12
|
interface ComponentWithDefaultRootNode {
|
|
13
|
-
defaultRootNode?:
|
|
13
|
+
defaultRootNode?: Element | null;
|
|
14
14
|
}
|
|
15
15
|
interface DecoratableClassComponent extends ComponentWithDefaultRootNode {
|
|
16
16
|
new (...args: any[]): React.Component;
|
|
17
17
|
}
|
|
18
18
|
export declare function rootNode<T extends DecoratableClassComponent>(Component: T): {
|
|
19
19
|
new (...args: any[]): {
|
|
20
|
-
rootNode: Nullable<
|
|
20
|
+
rootNode: Nullable<Element>;
|
|
21
21
|
rootNodeEmitter: EventEmitter<string | symbol, any>;
|
|
22
22
|
setRootNode: (instance: Nullable<React.ReactInstance>) => void;
|
|
23
|
-
getRootNode: () => Nullable<
|
|
24
|
-
addRootNodeChangeListener: (callback: (node: Nullable<
|
|
23
|
+
getRootNode: () => Nullable<Element>;
|
|
24
|
+
addRootNodeChangeListener: (callback: (node: Nullable<Element>) => void) => TRootNodeSubscription;
|
|
25
25
|
context: any;
|
|
26
26
|
setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<{}>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
|
|
27
27
|
forceUpdate(callback?: (() => void) | undefined): void;
|
|
@@ -46,7 +46,7 @@ export declare function rootNode<T extends DecoratableClassComponent>(Component:
|
|
|
46
46
|
componentWillUpdate?(nextProps: Readonly<{}>, nextState: Readonly<{}>, nextContext: any): void;
|
|
47
47
|
UNSAFE_componentWillUpdate?(nextProps: Readonly<{}>, nextState: Readonly<{}>, nextContext: any): void;
|
|
48
48
|
};
|
|
49
|
-
defaultRootNode?:
|
|
49
|
+
defaultRootNode?: Element | null | undefined;
|
|
50
50
|
} & T;
|
|
51
51
|
export declare const isInstanceWithRootNode: (instance: unknown) => instance is InstanceWithRootNode;
|
|
52
52
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["rootNodeDecorator.tsx"],"names":["rootNode","Component","defaultRootNode","rootNodeEmitter","EventEmitter","setRootNode","instance","emit","getRootNode","addRootNodeChangeListener","callback","addListener","remove","removeListener","nameDescriptor","Object","getOwnPropertyDescriptor","configurable","defineProperty","value","name","isInstanceWithRootNode","Boolean","prototype","hasOwnProperty","call"],"mappings":";;AAEA;;;;AAIA,4C,CANA;;;;;;;;;;;;;;;;;;;;;AA2BO,SAASA,QAAT,CAAuDC,SAAvD,EAAqE;AAC1E,MAAMD,QAAQ;;;AAGZ,wBAAmC;AACjC,8FADiC,MAF5BA,QAE4B,
|
|
1
|
+
{"version":3,"sources":["rootNodeDecorator.tsx"],"names":["rootNode","Component","defaultRootNode","rootNodeEmitter","EventEmitter","setRootNode","instance","emit","getRootNode","addRootNodeChangeListener","callback","addListener","remove","removeListener","nameDescriptor","Object","getOwnPropertyDescriptor","configurable","defineProperty","value","name","isInstanceWithRootNode","Boolean","prototype","hasOwnProperty","call"],"mappings":";;AAEA;;;;AAIA,4C,CANA;;;;;;;;;;;;;;;;;;;;;AA2BO,SAASA,QAAT,CAAuDC,SAAvD,EAAqE;AAC1E,MAAMD,QAAQ;;;AAGZ,wBAAmC;AACjC,8FADiC,MAF5BA,QAE4B,GAFEC,SAAS,CAACC,eAEZ,OAD5BC,eAC4B,GADV,IAAIC,qBAAJ,EACU;;;AAI5BC,MAAAA,WAJ4B,GAId,UAACC,QAAD,EAA6C;AAChE,YAAMN,SAAQ,GAAG,8BAAYM,QAAZ,CAAjB;AACA,YAAIN,SAAQ,KAAK,MAAKA,QAAtB,EAAgC;AAC9B,gBAAKA,QAAL,GAAgBA,SAAhB;AACA,gBAAKG,eAAL,CAAqBI,IAArB,CAA0B,QAA1B,EAAoCP,SAApC;AACD;AACF,OAVkC;;AAY5BQ,MAAAA,WAZ4B,GAYd,YAAyB;AAC5C,eAAO,MAAKR,QAAZ;AACD,OAdkC;;AAgB5BS,MAAAA,yBAhB4B,GAgBA,UAACC,QAAD,EAAwE;AACzG,cAAKP,eAAL,CAAqBQ,WAArB,CAAiC,QAAjC,EAA2CD,QAA3C;AACA,eAAO;AACLE,UAAAA,MAAM,EAAE,kBAAM;AACZ,kBAAKT,eAAL,CAAqBU,cAArB,CAAoC,QAApC,EAA8CH,QAA9C;AACD,WAHI,EAAP;;AAKD,OAvBkC,cAElC,CALW,kBAAiBT,SAAjB,CAAd;;;AA6BA,MAAMa,cAAc,GAAGC,MAAM,CAACC,wBAAP,CAAgChB,QAAhC,EAA0C,MAA1C,CAAvB;AACA,MAAI,CAACc,cAAD,IAAmBA,cAAc,CAACG,YAAtC,EAAoD;AAClDF,IAAAA,MAAM,CAACG,cAAP,CAAsBlB,QAAtB,EAAgC,MAAhC,EAAwC,EAAEmB,KAAK,EAAElB,SAAS,CAACmB,IAAnB,EAAxC;AACD;;AAED,SAAOpB,QAAP;AACD;;AAEM,IAAMqB,sBAAsB,GAAG,SAAzBA,sBAAyB,CAACf,QAAD,EAAyD;AAC7F,SAAOgB,OAAO,CAAChB,QAAD,CAAP,IAAqBS,MAAM,CAACQ,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCnB,QAArC,EAA+C,aAA/C,CAA5B;AACD,CAFM,C","sourcesContent":["/* eslint-disable react/display-name */\nimport React from 'react';\nimport EventEmitter from 'eventemitter3';\n\nimport { Nullable } from '../../typings/utility-types';\n\nimport { getRootNode } from './getRootNode';\n\nexport type TSetRootNode = (e: Nullable<React.ReactNode>) => void;\n\nexport type TRootNodeSubscription = {\n remove: () => void;\n};\n\nexport interface InstanceWithRootNode {\n getRootNode: () => Nullable<Element>;\n addRootNodeChangeListener?: (callback: (node: Nullable<Element>) => void) => TRootNodeSubscription;\n}\n\ninterface ComponentWithDefaultRootNode {\n defaultRootNode?: Element | null;\n}\n\ninterface DecoratableClassComponent extends ComponentWithDefaultRootNode {\n new (...args: any[]): React.Component;\n}\n\nexport function rootNode<T extends DecoratableClassComponent>(Component: T) {\n const rootNode = class extends Component implements InstanceWithRootNode {\n public rootNode: Nullable<Element> = Component.defaultRootNode;\n public rootNodeEmitter = new EventEmitter();\n public constructor(...args: any[]) {\n super(args[0]);\n }\n\n public setRootNode = (instance: Nullable<React.ReactInstance>) => {\n const rootNode = getRootNode(instance);\n if (rootNode !== this.rootNode) {\n this.rootNode = rootNode;\n this.rootNodeEmitter.emit('change', rootNode);\n }\n };\n\n public getRootNode = (): Nullable<Element> => {\n return this.rootNode;\n };\n\n public addRootNodeChangeListener = (callback: (node: Nullable<Element>) => void): TRootNodeSubscription => {\n this.rootNodeEmitter.addListener('change', callback);\n return {\n remove: () => {\n this.rootNodeEmitter.removeListener('change', callback);\n },\n };\n };\n };\n\n const nameDescriptor = Object.getOwnPropertyDescriptor(rootNode, 'name');\n if (!nameDescriptor || nameDescriptor.configurable) {\n Object.defineProperty(rootNode, 'name', { value: Component.name });\n }\n\n return rootNode;\n}\n\nexport const isInstanceWithRootNode = (instance: unknown): instance is InstanceWithRootNode => {\n return Boolean(instance) && Object.prototype.hasOwnProperty.call(instance, 'getRootNode');\n};\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
|
|
3
|
-
export type MouseEventType<T extends
|
|
4
|
-
export type FocusEventType<T extends
|
|
3
|
+
export type MouseEventType<T extends Element = Element> = React.MouseEvent<T> | MouseEvent;
|
|
4
|
+
export type FocusEventType<T extends Element = Element> = React.FocusEvent<T> | FocusEvent;
|
|
@@ -223,6 +223,13 @@ var CurrencyInput = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (
|
|
|
223
223
|
selection: SelectionHelper.forward(selection.start, inputEnd)
|
|
224
224
|
});
|
|
225
225
|
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
case CURRENCY_INPUT_ACTIONS.Comma:
|
|
230
|
+
{
|
|
231
|
+
_this.inputValue(selection.start, selection.end, ',');
|
|
232
|
+
|
|
226
233
|
return;
|
|
227
234
|
}
|
|
228
235
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["CurrencyInput.tsx"],"names":["React","PropTypes","warning","debounce","isNonNullable","isNullable","isIE11","Input","CommonWrapper","rootNode","createPropsGetter","MAX_SAFE_DIGITS","SelectionHelper","CurrencyHelper","CurrencyInputHelper","CURRENCY_INPUT_ACTIONS","extractAction","CurrencyInputDataTids","root","CurrencyInput","getProps","defaultProps","state","getState","value","fractionDigits","hideTrailingZeros","focused","tempSelectionForOnChange","fromPosition","renderMain","props","signed","onSubmit","integerDigits","rest","align","formatted","handleBlur","handleFocus","handleMouseUp","handleKeyDown","handleValueChange","handlePaste","handleCopy","handleCut","onMouseEnter","onMouseLeave","onMouseOver","refInput","getPlaceholder","focus","input","blur","debouncedSetSelectionFromEvent","setSelectionFromEvent","event","persist","selection","getSelection","target","onKeyDown","defaultPrevented","action","Ignore","Unknown","preventDefault","Submit","Backspace","inputValue","moveCursor","end","Delete","start","MoveCursorLeft","MoveCursorRight","Home","setState","End","length","ExtendSelectionLeft","extendSelection","ExtendSelectionRight","FullSelection","forward","ExtendSelectionToStart","backward","ExtendSelectionToEnd","inputEnd","scrollInput","node","getNode","scrollWidth","clientWidth","PAD","SHIFT","selected","position","direction","charsCount","charWidth","frame","Math","ceil","frameStart","scrollLeft","frameEnd","getInputSelectionFromEvent","step","extended","result","safeInsert","unsigned","parsedValue","parse","onValueChange","blink","getOnChangeDelta","oldValue","substring","substr","delta","data","clipboardData","getData","formatForClipboard","setData","selectionStart","selectionEnd","selectionDirection","valueLength","onFocus","onBlur","element","componentDidMount","maxLength","undefined","componentDidUpdate","prevProps","prevState","isValidNumber","isNumeric","Number","setSelectionRange","render","setRootNode","format","normilized","normalizeSelection","PureComponent","__KONTUR_REACT_UI__","propTypes","oneOf","autoFocus","bool","borderless","disabled","error","number","leftIcon","placeholder","string","size","width","oneOfType","func","isRequired","inputMode","HTMLInputElement","Error","isNaN","parseFloat","isFinite"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport warning from 'warning';\nimport debounce from 'lodash.debounce';\n\nimport { isNonNullable, isNullable } from '../../lib/utils';\nimport { isIE11 } from '../../lib/client';\nimport { Input, InputProps } from '../Input';\nimport { Nullable, Override } from '../../typings/utility-types';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { TSetRootNode, rootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { MAX_SAFE_DIGITS } from './constants';\nimport { Selection, SelectionDirection, SelectionHelper } from './SelectionHelper';\nimport { CurrencyHelper } from './CurrencyHelper';\nimport { CurrencyInputHelper } from './CurrencyInputHelper';\nimport { CURRENCY_INPUT_ACTIONS, extractAction } from './CurrencyInputKeyboardActions';\n\nexport interface CurrencyInputProps\n extends CommonProps,\n Override<\n InputProps,\n {\n /** Значение */\n value?: Nullable<number>;\n /** Убрать лишние нули после запятой */\n hideTrailingZeros?: boolean;\n /** Кол-во цифр после запятой */\n fractionDigits?: Nullable<number>;\n /** Отрицательные значения */\n signed?: boolean;\n /**\n * Допустимое кол-во цифр целой части.\n * Если передан **0**, или `fractionDigits=15`, то и в целой части допускается только **0**.\n */\n integerDigits?: Nullable<number>;\n /** Вызывается при изменении `value` */\n onValueChange: (value: Nullable<number>) => void;\n /** onSubmit */\n onSubmit?: () => void;\n }\n > {}\n\nexport interface CurrencyInputState {\n formatted: string;\n selection: Selection;\n focused: boolean;\n}\n\nexport const CurrencyInputDataTids = {\n root: 'CurrencyInput__root',\n} as const;\n\ntype DefaultProps = Required<\n Pick<CurrencyInputProps, 'align' | 'fractionDigits' | 'hideTrailingZeros' | 'value' | 'inputMode'>\n>;\n\n/**\n * Поле для денежных сумм (и других числовых значений).\n * Принимает любые свойства `Input`.\n *\n * Максимальная длина числа - **15 цифр** (с десятичным разделителем в любом месте).\n * <br/>\n * Если `fractionDigits=15`, то в целой части допускается **0**.\n */\n@rootNode\nexport class CurrencyInput extends React.PureComponent<CurrencyInputProps, CurrencyInputState> {\n public static __KONTUR_REACT_UI__ = 'CurrencyInput';\n\n public static propTypes = {\n align: PropTypes.oneOf(['left', 'center', 'right']),\n autoFocus: PropTypes.bool,\n borderless: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n fractionDigits: PropTypes.number,\n hideTrailingZeros: PropTypes.bool,\n leftIcon: PropTypes.element,\n placeholder: PropTypes.string,\n signed: PropTypes.bool,\n size: PropTypes.oneOf(['small', 'medium', 'large']),\n value: (props: CurrencyInputProps) => {\n warning(isValidNumber(props.value), `[CurrencyInput]: Prop value is not a valid number`);\n },\n warning: PropTypes.bool,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n onBlur: PropTypes.func,\n onValueChange: PropTypes.func.isRequired,\n onFocus: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseOver: PropTypes.func,\n onSubmit: PropTypes.func,\n };\n\n public static defaultProps: DefaultProps = {\n align: 'right',\n fractionDigits: 2,\n hideTrailingZeros: false,\n value: null,\n inputMode: 'decimal',\n };\n\n private getProps = createPropsGetter(CurrencyInput.defaultProps);\n\n public state: CurrencyInputState = {\n ...this.getState(this.getProps().value, this.getProps().fractionDigits, this.getProps().hideTrailingZeros),\n focused: false,\n };\n\n private input: Nullable<Input>;\n private tempSelectionForOnChange: Selection = SelectionHelper.fromPosition(0);\n private setRootNode!: TSetRootNode;\n\n public componentDidMount(): void {\n const { maxLength, integerDigits } = this.props;\n const fractionDigits = this.getProps().fractionDigits;\n warning(\n maxLength === undefined,\n `[CurrencyInput]: Prop 'maxLength' has been deprecated. See 'integerDigits' and 'fractionDigits'`,\n );\n warning(\n (integerDigits || 0) + (fractionDigits || 0) <= MAX_SAFE_DIGITS,\n `[CurrencyInput]: Sum of 'integerDigits' and 'fractionDigits' exceeds ${MAX_SAFE_DIGITS}.` +\n `\\nSee https://tech.skbkontur.ru/react-ui/#/CurrencyInput?id=why15`,\n );\n }\n\n public componentDidUpdate(prevProps: CurrencyInputProps, prevState: CurrencyInputState) {\n const { value, fractionDigits, hideTrailingZeros } = this.getProps();\n if (\n (isValidNumber(value) && isNumeric(value) && Number(value) !== CurrencyHelper.parse(prevState.formatted)) ||\n prevProps.fractionDigits !== fractionDigits\n ) {\n this.setState(this.getState(value, fractionDigits, hideTrailingZeros));\n }\n if (this.state.focused && this.input) {\n const { start, end } = this.state.selection;\n\n this.input.setSelectionRange(start, end);\n }\n if (prevState.selection !== this.state.selection) {\n this.scrollInput();\n }\n }\n\n public render() {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }\n\n public renderMain = (props: CommonWrapperRestProps<CurrencyInputProps>) => {\n const { fractionDigits, signed, onSubmit, integerDigits, hideTrailingZeros, ...rest } = props;\n\n return (\n <Input\n data-tid={CurrencyInputDataTids.root}\n {...rest}\n align={this.getProps().align}\n value={this.state.formatted}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onMouseUp={this.handleMouseUp}\n onKeyDown={this.handleKeyDown}\n onValueChange={this.handleValueChange}\n onPaste={this.handlePaste}\n onCopy={this.handleCopy}\n onCut={this.handleCut}\n onMouseEnter={this.props.onMouseEnter}\n onMouseLeave={this.props.onMouseLeave}\n onMouseOver={this.props.onMouseOver}\n ref={this.refInput}\n placeholder={this.state.focused ? '' : getPlaceholder(props)}\n />\n );\n };\n\n /**\n * @public\n */\n public focus = () => {\n if (this.input) {\n this.input.focus();\n }\n };\n\n /**\n * @public\n */\n public blur = () => {\n if (this.input) {\n this.input.blur();\n }\n };\n\n private getState(value: Nullable<number>, fractionDigits: Nullable<number>, hideTrailingZeros: boolean) {\n return {\n formatted: CurrencyHelper.format(value, { fractionDigits, hideTrailingZeros }),\n selection: SelectionHelper.fromPosition(0),\n };\n }\n\n private setSelectionFromEvent(event: React.MouseEvent<HTMLInputElement>) {\n const selection = getInputSelectionFromEvent(event.target);\n const normilized = CurrencyInputHelper.normalizeSelection(this.state.formatted, selection);\n this.setState({ selection: normilized });\n }\n\n // for IE11\n private readonly debouncedSetSelectionFromEvent = debounce(this.setSelectionFromEvent, 300);\n\n private handleMouseUp = (event: React.MouseEvent<HTMLInputElement>) => {\n if (isIE11) {\n event.persist();\n this.debouncedSetSelectionFromEvent(event);\n } else {\n this.setSelectionFromEvent(event);\n }\n };\n\n private handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n const selection = this.getSelection(event.target);\n this.tempSelectionForOnChange = selection;\n\n if (this.props.onKeyDown) {\n this.props.onKeyDown(event);\n if (event.defaultPrevented) {\n return;\n }\n }\n\n const action = extractAction(event);\n\n if (action === CURRENCY_INPUT_ACTIONS.Ignore) {\n return;\n }\n\n if (action !== CURRENCY_INPUT_ACTIONS.Unknown) {\n event.preventDefault();\n }\n\n switch (action) {\n case CURRENCY_INPUT_ACTIONS.Submit: {\n if (this.props.onSubmit) {\n this.props.onSubmit();\n }\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Backspace: {\n this.inputValue(CurrencyInputHelper.moveCursor(this.state.formatted, selection, -1), selection.end, '');\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Delete: {\n this.inputValue(selection.start, CurrencyInputHelper.moveCursor(this.state.formatted, selection, +1), '');\n return;\n }\n case CURRENCY_INPUT_ACTIONS.MoveCursorLeft: {\n this.moveCursor(selection, -1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.MoveCursorRight: {\n this.moveCursor(selection, +1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Home: {\n this.setState({ selection: SelectionHelper.fromPosition(0) });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.End: {\n const end = this.state.formatted.length;\n this.setState({ selection: SelectionHelper.fromPosition(end) });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionLeft: {\n this.extendSelection(selection, -1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionRight: {\n this.extendSelection(selection, +1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.FullSelection: {\n this.setState({\n selection: SelectionHelper.forward(0, this.state.formatted.length),\n });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionToStart: {\n this.setState({\n selection: SelectionHelper.backward(0, selection.start),\n });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionToEnd: {\n const inputEnd = this.state.formatted.length;\n this.setState({\n selection: SelectionHelper.forward(selection.start, inputEnd),\n });\n return;\n }\n }\n };\n\n private scrollInput = () => {\n const node = this.input?.getNode();\n if (!node || node.scrollWidth === node.clientWidth) {\n return;\n }\n const PAD = 1;\n const SHIFT = 3;\n\n const selection = this.state.selection;\n const selected = selection.start !== selection.end;\n const position = selected && selection.direction === 'forward' ? selection.end : selection.start;\n const charsCount = this.state.formatted.length;\n const charWidth = node.scrollWidth / charsCount;\n const frame = Math.ceil(node.clientWidth / charWidth);\n const frameStart = Math.ceil(node.scrollLeft / charWidth);\n const frameEnd = frameStart + frame;\n\n if (position < frameStart + PAD) {\n node.scrollLeft = (position - SHIFT) * charWidth;\n }\n if (position > frameEnd - PAD) {\n node.scrollLeft = (position - frame + SHIFT) * charWidth;\n }\n };\n\n private getSelection = (input: EventTarget): Selection => {\n const selection = getInputSelectionFromEvent(input);\n return {\n start: selection.start,\n end: selection.end,\n direction: this.state.selection.direction,\n };\n };\n\n private moveCursor = (selection: Selection, step: number) => {\n const position = CurrencyInputHelper.moveCursor(this.state.formatted, selection, step);\n this.setState({ selection: SelectionHelper.fromPosition(position) });\n };\n\n private extendSelection = (selection: Selection, step: number) => {\n const extended = CurrencyInputHelper.extendSelection(this.state.formatted, selection, step);\n this.setState({ selection: extended });\n };\n\n private inputValue = (start: number, end: number, value: string) => {\n const result = CurrencyInputHelper.safeInsert(this.state.formatted, start, end, value, {\n integerDigits: this.props.integerDigits,\n fractionDigits: this.getProps().fractionDigits,\n unsigned: !this.props.signed,\n });\n if (result) {\n const formatted = result.value;\n const selection = SelectionHelper.fromPosition(result.position);\n this.setState({ formatted, selection }, () => {\n const parsedValue = CurrencyHelper.parse(formatted);\n if (this.props.value !== parsedValue) {\n this.props.onValueChange(parsedValue);\n }\n });\n return true;\n }\n\n if (this.input) {\n this.input.blink();\n }\n return false;\n };\n\n private getOnChangeDelta = (value: string) => {\n const selection = this.tempSelectionForOnChange;\n const oldValue = this.state.formatted;\n if (selection.start !== selection.end) {\n return value.substring(selection.start, value.length - (oldValue.length - selection.end));\n } else if (value.length > oldValue.length) {\n return value.substr(selection.start, value.length - oldValue.length);\n }\n return null;\n };\n\n private handleValueChange = (value: string): void => {\n const selection = this.tempSelectionForOnChange;\n const delta = this.getOnChangeDelta(value);\n if (isNonNullable(delta) && !this.inputValue(selection.start, selection.end, delta)) {\n this.setState({ selection });\n }\n };\n\n private handlePaste = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const data = event.clipboardData.getData('text');\n const selection = this.getSelection(event.target);\n this.inputValue(selection.start, selection.end, data);\n event.preventDefault();\n };\n\n private handleCopy = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const selection = this.getSelection(event.target);\n if (selection.start !== selection.end) {\n const substring = this.state.formatted.substring(selection.start, selection.end);\n const data = CurrencyHelper.formatForClipboard(substring);\n event.clipboardData.setData('text', data);\n }\n event.preventDefault();\n };\n\n private handleCut = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const selection = this.getSelection(event.target);\n if (selection.start !== selection.end) {\n const substring = this.state.formatted.substring(selection.start, selection.end);\n const data = CurrencyHelper.formatForClipboard(substring);\n event.clipboardData.setData('text', data);\n this.inputValue(selection.start, selection.end, '');\n }\n event.preventDefault();\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n const { selectionStart, selectionEnd, selectionDirection } = event.target;\n const valueLength = event.target.value.length;\n\n const selection = {\n start: selectionStart !== selectionEnd ? selectionStart || 0 : selectionStart || valueLength,\n end: selectionEnd !== selectionStart ? selectionEnd || 0 : selectionEnd || valueLength,\n direction: (selectionDirection as SelectionDirection) || 'none',\n };\n\n this.setState({\n focused: true,\n selection,\n });\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n const value = CurrencyHelper.parse(this.state.formatted);\n\n this.setState({\n ...this.getState(value, this.getProps().fractionDigits, this.getProps().hideTrailingZeros),\n focused: false,\n });\n\n if (this.props.onBlur) {\n this.props.onBlur(event);\n }\n };\n\n private refInput = (element: Nullable<Input>) => {\n this.input = element;\n };\n}\n\nfunction getInputSelectionFromEvent(input: EventTarget): Selection {\n if (!(input instanceof HTMLInputElement)) {\n throw new Error('input is not HTMLInputElement');\n }\n\n return {\n start: input.selectionStart!,\n end: input.selectionEnd!,\n direction: input.selectionDirection as SelectionDirection,\n };\n}\n\nfunction isNumeric(value: unknown): value is number | string {\n return !isNaN(parseFloat(value as string)) && isFinite(value as number);\n}\n\nfunction isValidNumber(value: unknown): boolean {\n return !isNaN(Number(value));\n}\n\nconst getPlaceholder = (props: CurrencyInputProps) => {\n if (isNullable(props.placeholder)) {\n return CurrencyHelper.format(0, {\n fractionDigits: props.fractionDigits,\n hideTrailingZeros: props.hideTrailingZeros,\n });\n }\n\n return props.placeholder;\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["CurrencyInput.tsx"],"names":["React","PropTypes","warning","debounce","isNonNullable","isNullable","isIE11","Input","CommonWrapper","rootNode","createPropsGetter","MAX_SAFE_DIGITS","SelectionHelper","CurrencyHelper","CurrencyInputHelper","CURRENCY_INPUT_ACTIONS","extractAction","CurrencyInputDataTids","root","CurrencyInput","getProps","defaultProps","state","getState","value","fractionDigits","hideTrailingZeros","focused","tempSelectionForOnChange","fromPosition","renderMain","props","signed","onSubmit","integerDigits","rest","align","formatted","handleBlur","handleFocus","handleMouseUp","handleKeyDown","handleValueChange","handlePaste","handleCopy","handleCut","onMouseEnter","onMouseLeave","onMouseOver","refInput","getPlaceholder","focus","input","blur","debouncedSetSelectionFromEvent","setSelectionFromEvent","event","persist","selection","getSelection","target","onKeyDown","defaultPrevented","action","Ignore","Unknown","preventDefault","Submit","Backspace","inputValue","moveCursor","end","Delete","start","MoveCursorLeft","MoveCursorRight","Home","setState","End","length","ExtendSelectionLeft","extendSelection","ExtendSelectionRight","FullSelection","forward","ExtendSelectionToStart","backward","ExtendSelectionToEnd","inputEnd","Comma","scrollInput","node","getNode","scrollWidth","clientWidth","PAD","SHIFT","selected","position","direction","charsCount","charWidth","frame","Math","ceil","frameStart","scrollLeft","frameEnd","getInputSelectionFromEvent","step","extended","result","safeInsert","unsigned","parsedValue","parse","onValueChange","blink","getOnChangeDelta","oldValue","substring","substr","delta","data","clipboardData","getData","formatForClipboard","setData","selectionStart","selectionEnd","selectionDirection","valueLength","onFocus","onBlur","element","componentDidMount","maxLength","undefined","componentDidUpdate","prevProps","prevState","isValidNumber","isNumeric","Number","setSelectionRange","render","setRootNode","format","normilized","normalizeSelection","PureComponent","__KONTUR_REACT_UI__","propTypes","oneOf","autoFocus","bool","borderless","disabled","error","number","leftIcon","placeholder","string","size","width","oneOfType","func","isRequired","inputMode","HTMLInputElement","Error","isNaN","parseFloat","isFinite"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport warning from 'warning';\nimport debounce from 'lodash.debounce';\n\nimport { isNonNullable, isNullable } from '../../lib/utils';\nimport { isIE11 } from '../../lib/client';\nimport { Input, InputProps } from '../Input';\nimport { Nullable, Override } from '../../typings/utility-types';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { TSetRootNode, rootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { MAX_SAFE_DIGITS } from './constants';\nimport { Selection, SelectionDirection, SelectionHelper } from './SelectionHelper';\nimport { CurrencyHelper } from './CurrencyHelper';\nimport { CurrencyInputHelper } from './CurrencyInputHelper';\nimport { CURRENCY_INPUT_ACTIONS, extractAction } from './CurrencyInputKeyboardActions';\n\nexport interface CurrencyInputProps\n extends CommonProps,\n Override<\n InputProps,\n {\n /** Значение */\n value?: Nullable<number>;\n /** Убрать лишние нули после запятой */\n hideTrailingZeros?: boolean;\n /** Кол-во цифр после запятой */\n fractionDigits?: Nullable<number>;\n /** Отрицательные значения */\n signed?: boolean;\n /**\n * Допустимое кол-во цифр целой части.\n * Если передан **0**, или `fractionDigits=15`, то и в целой части допускается только **0**.\n */\n integerDigits?: Nullable<number>;\n /** Вызывается при изменении `value` */\n onValueChange: (value: Nullable<number>) => void;\n /** onSubmit */\n onSubmit?: () => void;\n }\n > {}\n\nexport interface CurrencyInputState {\n formatted: string;\n selection: Selection;\n focused: boolean;\n}\n\nexport const CurrencyInputDataTids = {\n root: 'CurrencyInput__root',\n} as const;\n\ntype DefaultProps = Required<\n Pick<CurrencyInputProps, 'align' | 'fractionDigits' | 'hideTrailingZeros' | 'value' | 'inputMode'>\n>;\n\n/**\n * Поле для денежных сумм (и других числовых значений).\n * Принимает любые свойства `Input`.\n *\n * Максимальная длина числа - **15 цифр** (с десятичным разделителем в любом месте).\n * <br/>\n * Если `fractionDigits=15`, то в целой части допускается **0**.\n */\n@rootNode\nexport class CurrencyInput extends React.PureComponent<CurrencyInputProps, CurrencyInputState> {\n public static __KONTUR_REACT_UI__ = 'CurrencyInput';\n\n public static propTypes = {\n align: PropTypes.oneOf(['left', 'center', 'right']),\n autoFocus: PropTypes.bool,\n borderless: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n fractionDigits: PropTypes.number,\n hideTrailingZeros: PropTypes.bool,\n leftIcon: PropTypes.element,\n placeholder: PropTypes.string,\n signed: PropTypes.bool,\n size: PropTypes.oneOf(['small', 'medium', 'large']),\n value: (props: CurrencyInputProps) => {\n warning(isValidNumber(props.value), `[CurrencyInput]: Prop value is not a valid number`);\n },\n warning: PropTypes.bool,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n onBlur: PropTypes.func,\n onValueChange: PropTypes.func.isRequired,\n onFocus: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseOver: PropTypes.func,\n onSubmit: PropTypes.func,\n };\n\n public static defaultProps: DefaultProps = {\n align: 'right',\n fractionDigits: 2,\n hideTrailingZeros: false,\n value: null,\n inputMode: 'decimal',\n };\n\n private getProps = createPropsGetter(CurrencyInput.defaultProps);\n\n public state: CurrencyInputState = {\n ...this.getState(this.getProps().value, this.getProps().fractionDigits, this.getProps().hideTrailingZeros),\n focused: false,\n };\n\n private input: Nullable<Input>;\n private tempSelectionForOnChange: Selection = SelectionHelper.fromPosition(0);\n private setRootNode!: TSetRootNode;\n\n public componentDidMount(): void {\n const { maxLength, integerDigits } = this.props;\n const fractionDigits = this.getProps().fractionDigits;\n warning(\n maxLength === undefined,\n `[CurrencyInput]: Prop 'maxLength' has been deprecated. See 'integerDigits' and 'fractionDigits'`,\n );\n warning(\n (integerDigits || 0) + (fractionDigits || 0) <= MAX_SAFE_DIGITS,\n `[CurrencyInput]: Sum of 'integerDigits' and 'fractionDigits' exceeds ${MAX_SAFE_DIGITS}.` +\n `\\nSee https://tech.skbkontur.ru/react-ui/#/CurrencyInput?id=why15`,\n );\n }\n\n public componentDidUpdate(prevProps: CurrencyInputProps, prevState: CurrencyInputState) {\n const { value, fractionDigits, hideTrailingZeros } = this.getProps();\n if (\n (isValidNumber(value) && isNumeric(value) && Number(value) !== CurrencyHelper.parse(prevState.formatted)) ||\n prevProps.fractionDigits !== fractionDigits\n ) {\n this.setState(this.getState(value, fractionDigits, hideTrailingZeros));\n }\n if (this.state.focused && this.input) {\n const { start, end } = this.state.selection;\n\n this.input.setSelectionRange(start, end);\n }\n if (prevState.selection !== this.state.selection) {\n this.scrollInput();\n }\n }\n\n public render() {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }\n\n public renderMain = (props: CommonWrapperRestProps<CurrencyInputProps>) => {\n const { fractionDigits, signed, onSubmit, integerDigits, hideTrailingZeros, ...rest } = props;\n\n return (\n <Input\n data-tid={CurrencyInputDataTids.root}\n {...rest}\n align={this.getProps().align}\n value={this.state.formatted}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onMouseUp={this.handleMouseUp}\n onKeyDown={this.handleKeyDown}\n onValueChange={this.handleValueChange}\n onPaste={this.handlePaste}\n onCopy={this.handleCopy}\n onCut={this.handleCut}\n onMouseEnter={this.props.onMouseEnter}\n onMouseLeave={this.props.onMouseLeave}\n onMouseOver={this.props.onMouseOver}\n ref={this.refInput}\n placeholder={this.state.focused ? '' : getPlaceholder(props)}\n />\n );\n };\n\n /**\n * @public\n */\n public focus = () => {\n if (this.input) {\n this.input.focus();\n }\n };\n\n /**\n * @public\n */\n public blur = () => {\n if (this.input) {\n this.input.blur();\n }\n };\n\n private getState(value: Nullable<number>, fractionDigits: Nullable<number>, hideTrailingZeros: boolean) {\n return {\n formatted: CurrencyHelper.format(value, { fractionDigits, hideTrailingZeros }),\n selection: SelectionHelper.fromPosition(0),\n };\n }\n\n private setSelectionFromEvent(event: React.MouseEvent<HTMLInputElement>) {\n const selection = getInputSelectionFromEvent(event.target);\n const normilized = CurrencyInputHelper.normalizeSelection(this.state.formatted, selection);\n this.setState({ selection: normilized });\n }\n\n // for IE11\n private readonly debouncedSetSelectionFromEvent = debounce(this.setSelectionFromEvent, 300);\n\n private handleMouseUp = (event: React.MouseEvent<HTMLInputElement>) => {\n if (isIE11) {\n event.persist();\n this.debouncedSetSelectionFromEvent(event);\n } else {\n this.setSelectionFromEvent(event);\n }\n };\n\n private handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n const selection = this.getSelection(event.target);\n this.tempSelectionForOnChange = selection;\n\n if (this.props.onKeyDown) {\n this.props.onKeyDown(event);\n if (event.defaultPrevented) {\n return;\n }\n }\n\n const action = extractAction(event);\n\n if (action === CURRENCY_INPUT_ACTIONS.Ignore) {\n return;\n }\n\n if (action !== CURRENCY_INPUT_ACTIONS.Unknown) {\n event.preventDefault();\n }\n\n switch (action) {\n case CURRENCY_INPUT_ACTIONS.Submit: {\n if (this.props.onSubmit) {\n this.props.onSubmit();\n }\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Backspace: {\n this.inputValue(CurrencyInputHelper.moveCursor(this.state.formatted, selection, -1), selection.end, '');\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Delete: {\n this.inputValue(selection.start, CurrencyInputHelper.moveCursor(this.state.formatted, selection, +1), '');\n return;\n }\n case CURRENCY_INPUT_ACTIONS.MoveCursorLeft: {\n this.moveCursor(selection, -1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.MoveCursorRight: {\n this.moveCursor(selection, +1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Home: {\n this.setState({ selection: SelectionHelper.fromPosition(0) });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.End: {\n const end = this.state.formatted.length;\n this.setState({ selection: SelectionHelper.fromPosition(end) });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionLeft: {\n this.extendSelection(selection, -1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionRight: {\n this.extendSelection(selection, +1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.FullSelection: {\n this.setState({\n selection: SelectionHelper.forward(0, this.state.formatted.length),\n });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionToStart: {\n this.setState({\n selection: SelectionHelper.backward(0, selection.start),\n });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionToEnd: {\n const inputEnd = this.state.formatted.length;\n this.setState({\n selection: SelectionHelper.forward(selection.start, inputEnd),\n });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Comma: {\n this.inputValue(selection.start, selection.end, ',');\n return;\n }\n }\n };\n\n private scrollInput = () => {\n const node = this.input?.getNode();\n if (!node || node.scrollWidth === node.clientWidth) {\n return;\n }\n const PAD = 1;\n const SHIFT = 3;\n\n const selection = this.state.selection;\n const selected = selection.start !== selection.end;\n const position = selected && selection.direction === 'forward' ? selection.end : selection.start;\n const charsCount = this.state.formatted.length;\n const charWidth = node.scrollWidth / charsCount;\n const frame = Math.ceil(node.clientWidth / charWidth);\n const frameStart = Math.ceil(node.scrollLeft / charWidth);\n const frameEnd = frameStart + frame;\n\n if (position < frameStart + PAD) {\n node.scrollLeft = (position - SHIFT) * charWidth;\n }\n if (position > frameEnd - PAD) {\n node.scrollLeft = (position - frame + SHIFT) * charWidth;\n }\n };\n\n private getSelection = (input: EventTarget): Selection => {\n const selection = getInputSelectionFromEvent(input);\n return {\n start: selection.start,\n end: selection.end,\n direction: this.state.selection.direction,\n };\n };\n\n private moveCursor = (selection: Selection, step: number) => {\n const position = CurrencyInputHelper.moveCursor(this.state.formatted, selection, step);\n this.setState({ selection: SelectionHelper.fromPosition(position) });\n };\n\n private extendSelection = (selection: Selection, step: number) => {\n const extended = CurrencyInputHelper.extendSelection(this.state.formatted, selection, step);\n this.setState({ selection: extended });\n };\n\n private inputValue = (start: number, end: number, value: string) => {\n const result = CurrencyInputHelper.safeInsert(this.state.formatted, start, end, value, {\n integerDigits: this.props.integerDigits,\n fractionDigits: this.getProps().fractionDigits,\n unsigned: !this.props.signed,\n });\n if (result) {\n const formatted = result.value;\n const selection = SelectionHelper.fromPosition(result.position);\n this.setState({ formatted, selection }, () => {\n const parsedValue = CurrencyHelper.parse(formatted);\n if (this.props.value !== parsedValue) {\n this.props.onValueChange(parsedValue);\n }\n });\n return true;\n }\n\n if (this.input) {\n this.input.blink();\n }\n return false;\n };\n\n private getOnChangeDelta = (value: string) => {\n const selection = this.tempSelectionForOnChange;\n const oldValue = this.state.formatted;\n if (selection.start !== selection.end) {\n return value.substring(selection.start, value.length - (oldValue.length - selection.end));\n } else if (value.length > oldValue.length) {\n return value.substr(selection.start, value.length - oldValue.length);\n }\n return null;\n };\n\n private handleValueChange = (value: string): void => {\n const selection = this.tempSelectionForOnChange;\n const delta = this.getOnChangeDelta(value);\n if (isNonNullable(delta) && !this.inputValue(selection.start, selection.end, delta)) {\n this.setState({ selection });\n }\n };\n\n private handlePaste = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const data = event.clipboardData.getData('text');\n const selection = this.getSelection(event.target);\n this.inputValue(selection.start, selection.end, data);\n event.preventDefault();\n };\n\n private handleCopy = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const selection = this.getSelection(event.target);\n if (selection.start !== selection.end) {\n const substring = this.state.formatted.substring(selection.start, selection.end);\n const data = CurrencyHelper.formatForClipboard(substring);\n event.clipboardData.setData('text', data);\n }\n event.preventDefault();\n };\n\n private handleCut = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const selection = this.getSelection(event.target);\n if (selection.start !== selection.end) {\n const substring = this.state.formatted.substring(selection.start, selection.end);\n const data = CurrencyHelper.formatForClipboard(substring);\n event.clipboardData.setData('text', data);\n this.inputValue(selection.start, selection.end, '');\n }\n event.preventDefault();\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n const { selectionStart, selectionEnd, selectionDirection } = event.target;\n const valueLength = event.target.value.length;\n\n const selection = {\n start: selectionStart !== selectionEnd ? selectionStart || 0 : selectionStart || valueLength,\n end: selectionEnd !== selectionStart ? selectionEnd || 0 : selectionEnd || valueLength,\n direction: (selectionDirection as SelectionDirection) || 'none',\n };\n\n this.setState({\n focused: true,\n selection,\n });\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n const value = CurrencyHelper.parse(this.state.formatted);\n\n this.setState({\n ...this.getState(value, this.getProps().fractionDigits, this.getProps().hideTrailingZeros),\n focused: false,\n });\n\n if (this.props.onBlur) {\n this.props.onBlur(event);\n }\n };\n\n private refInput = (element: Nullable<Input>) => {\n this.input = element;\n };\n}\n\nfunction getInputSelectionFromEvent(input: EventTarget): Selection {\n if (!(input instanceof HTMLInputElement)) {\n throw new Error('input is not HTMLInputElement');\n }\n\n return {\n start: input.selectionStart!,\n end: input.selectionEnd!,\n direction: input.selectionDirection as SelectionDirection,\n };\n}\n\nfunction isNumeric(value: unknown): value is number | string {\n return !isNaN(parseFloat(value as string)) && isFinite(value as number);\n}\n\nfunction isValidNumber(value: unknown): boolean {\n return !isNaN(Number(value));\n}\n\nconst getPlaceholder = (props: CurrencyInputProps) => {\n if (isNullable(props.placeholder)) {\n return CurrencyHelper.format(0, {\n fractionDigits: props.fractionDigits,\n hideTrailingZeros: props.hideTrailingZeros,\n });\n }\n\n return props.placeholder;\n};\n"]}
|
package/components/CurrencyInput/CurrencyInputKeyboardActions/CurrencyInputKeyboardActions.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as Keyboard from "../../../lib/events/keyboard/identifiers";
|
|
2
2
|
import { KeyboardActionExctracterBuilder } from "../../../lib/extractKeyboardAction";
|
|
3
|
+
export var commaAliases = [Keyboard.isCodeComma, Keyboard.isCodePeriod, Keyboard.isCodeSlash, Keyboard.isCodeBackslash, Keyboard.isCodeIntlBackslash, Keyboard.isCodeNumpadDivide];
|
|
3
4
|
export var CURRENCY_INPUT_ACTIONS = {
|
|
4
5
|
Unknown: 0,
|
|
5
6
|
Ignore: 1,
|
|
@@ -14,8 +15,9 @@ export var CURRENCY_INPUT_ACTIONS = {
|
|
|
14
15
|
ExtendSelectionToEnd: 25,
|
|
15
16
|
Backspace: 31,
|
|
16
17
|
Delete: 32,
|
|
17
|
-
Submit: 33
|
|
18
|
+
Submit: 33,
|
|
19
|
+
Comma: 34
|
|
18
20
|
};
|
|
19
21
|
export var extractAction = new KeyboardActionExctracterBuilder().add(CURRENCY_INPUT_ACTIONS.Submit, Keyboard.isKeyEnter).add(CURRENCY_INPUT_ACTIONS.ExtendSelectionLeft, Keyboard.isModShift(Keyboard.isKeyArrowLeft)).add(CURRENCY_INPUT_ACTIONS.ExtendSelectionRight, Keyboard.isModShift(Keyboard.isKeyArrowRight)).add(CURRENCY_INPUT_ACTIONS.FullSelection, Keyboard.isShortcutSelectAll).add(CURRENCY_INPUT_ACTIONS.ExtendSelectionToStart, Keyboard.isModShift(Keyboard.isKeyHome)).add(CURRENCY_INPUT_ACTIONS.ExtendSelectionToEnd, Keyboard.isModShift(Keyboard.isKeyEnd)).add(CURRENCY_INPUT_ACTIONS.MoveCursorLeft, Keyboard.isKeyArrowLeft).add(CURRENCY_INPUT_ACTIONS.MoveCursorRight, Keyboard.isKeyArrowRight).add(CURRENCY_INPUT_ACTIONS.Home, Keyboard.isUnmodified(Keyboard.isKeyHome)).add(CURRENCY_INPUT_ACTIONS.End, Keyboard.isUnmodified(Keyboard.isKeyEnd)).add(CURRENCY_INPUT_ACTIONS.Backspace, Keyboard.isKeyBackspace).add(CURRENCY_INPUT_ACTIONS.Delete, Keyboard.isKeyDelete).add(CURRENCY_INPUT_ACTIONS.Ignore, function (e) {
|
|
20
22
|
return Keyboard.isModified()(e) || Keyboard.isKeyTab(e);
|
|
21
|
-
}).build(CURRENCY_INPUT_ACTIONS.Unknown);
|
|
23
|
+
}).add(CURRENCY_INPUT_ACTIONS.Comma, Keyboard.someKeys.apply(Keyboard, commaAliases)).build(CURRENCY_INPUT_ACTIONS.Unknown);
|
package/components/CurrencyInput/CurrencyInputKeyboardActions/CurrencyInputKeyboardActions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["CurrencyInputKeyboardActions.tsx"],"names":["Keyboard","KeyboardActionExctracterBuilder","CURRENCY_INPUT_ACTIONS","Unknown","Ignore","MoveCursorLeft","MoveCursorRight","Home","End","ExtendSelectionLeft","ExtendSelectionRight","FullSelection","ExtendSelectionToStart","ExtendSelectionToEnd","Backspace","Delete","Submit","extractAction","add","isKeyEnter","isModShift","isKeyArrowLeft","isKeyArrowRight","isShortcutSelectAll","isKeyHome","isKeyEnd","isUnmodified","isKeyBackspace","isKeyDelete","e","isModified","isKeyTab","build"],"mappings":"AAAA,OAAO,KAAKA,QAAZ,MAA0B,uCAA1B;AACA,SAASC,+BAAT,QAAgD,iCAAhD;;AAEA,OAAO,IAAMC,sBAAsB,GAAG;AACpCC,EAAAA,OAAO,EAAE,CAD2B;AAEpCC,EAAAA,MAAM,EAAE,CAF4B;;AAIpCC,EAAAA,cAAc,EAAE,EAJoB;AAKpCC,EAAAA,eAAe,EAAE,EALmB;AAMpCC,EAAAA,IAAI,EAAE,EAN8B;AAOpCC,EAAAA,GAAG,EAAE,EAP+B;;AASpCC,EAAAA,mBAAmB,EAAE,EATe;AAUpCC,EAAAA,oBAAoB,EAAE,EAVc;AAWpCC,EAAAA,aAAa,EAAE,EAXqB;AAYpCC,EAAAA,sBAAsB,EAAE,EAZY;AAapCC,EAAAA,oBAAoB,EAAE,EAbc;;AAepCC,EAAAA,SAAS,EAAE,EAfyB;AAgBpCC,EAAAA,MAAM,EAAE,EAhB4B;AAiBpCC,EAAAA,MAAM,EAAE,EAjB4B,EAA/B;;;
|
|
1
|
+
{"version":3,"sources":["CurrencyInputKeyboardActions.tsx"],"names":["Keyboard","KeyboardActionExctracterBuilder","commaAliases","isCodeComma","isCodePeriod","isCodeSlash","isCodeBackslash","isCodeIntlBackslash","isCodeNumpadDivide","CURRENCY_INPUT_ACTIONS","Unknown","Ignore","MoveCursorLeft","MoveCursorRight","Home","End","ExtendSelectionLeft","ExtendSelectionRight","FullSelection","ExtendSelectionToStart","ExtendSelectionToEnd","Backspace","Delete","Submit","Comma","extractAction","add","isKeyEnter","isModShift","isKeyArrowLeft","isKeyArrowRight","isShortcutSelectAll","isKeyHome","isKeyEnd","isUnmodified","isKeyBackspace","isKeyDelete","e","isModified","isKeyTab","someKeys","build"],"mappings":"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","sourcesContent":["import * as Keyboard from '../../lib/events/keyboard/identifiers';\nimport { KeyboardActionExctracterBuilder } from '../../lib/extractKeyboardAction';\n\nexport const commaAliases = [\n Keyboard.isCodeComma,\n Keyboard.isCodePeriod,\n Keyboard.isCodeSlash,\n Keyboard.isCodeBackslash,\n Keyboard.isCodeIntlBackslash,\n Keyboard.isCodeNumpadDivide,\n];\n\nexport const CURRENCY_INPUT_ACTIONS = {\n Unknown: 0,\n Ignore: 1,\n\n MoveCursorLeft: 11,\n MoveCursorRight: 12,\n Home: 13,\n End: 14,\n\n ExtendSelectionLeft: 21,\n ExtendSelectionRight: 22,\n FullSelection: 23,\n ExtendSelectionToStart: 24,\n ExtendSelectionToEnd: 25,\n\n Backspace: 31,\n Delete: 32,\n Submit: 33,\n\n Comma: 34,\n};\n\nexport const extractAction = new KeyboardActionExctracterBuilder()\n .add(CURRENCY_INPUT_ACTIONS.Submit, Keyboard.isKeyEnter)\n .add(CURRENCY_INPUT_ACTIONS.ExtendSelectionLeft, Keyboard.isModShift(Keyboard.isKeyArrowLeft))\n .add(CURRENCY_INPUT_ACTIONS.ExtendSelectionRight, Keyboard.isModShift(Keyboard.isKeyArrowRight))\n .add(CURRENCY_INPUT_ACTIONS.FullSelection, Keyboard.isShortcutSelectAll)\n .add(CURRENCY_INPUT_ACTIONS.ExtendSelectionToStart, Keyboard.isModShift(Keyboard.isKeyHome))\n .add(CURRENCY_INPUT_ACTIONS.ExtendSelectionToEnd, Keyboard.isModShift(Keyboard.isKeyEnd))\n .add(CURRENCY_INPUT_ACTIONS.MoveCursorLeft, Keyboard.isKeyArrowLeft)\n .add(CURRENCY_INPUT_ACTIONS.MoveCursorRight, Keyboard.isKeyArrowRight)\n .add(CURRENCY_INPUT_ACTIONS.Home, Keyboard.isUnmodified(Keyboard.isKeyHome))\n .add(CURRENCY_INPUT_ACTIONS.End, Keyboard.isUnmodified(Keyboard.isKeyEnd))\n .add(CURRENCY_INPUT_ACTIONS.Backspace, Keyboard.isKeyBackspace)\n .add(CURRENCY_INPUT_ACTIONS.Delete, Keyboard.isKeyDelete)\n .add(CURRENCY_INPUT_ACTIONS.Ignore, (e) => Keyboard.isModified()(e) || Keyboard.isKeyTab(e))\n .add(CURRENCY_INPUT_ACTIONS.Comma, Keyboard.someKeys(...commaAliases))\n .build(CURRENCY_INPUT_ACTIONS.Unknown);\n"]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
+
export declare const commaAliases: ((e: import("react").KeyboardEvent<HTMLElement> | KeyboardEvent) => boolean)[];
|
|
2
3
|
export declare const CURRENCY_INPUT_ACTIONS: {
|
|
3
4
|
Unknown: number;
|
|
4
5
|
Ignore: number;
|
|
@@ -14,5 +15,6 @@ export declare const CURRENCY_INPUT_ACTIONS: {
|
|
|
14
15
|
Backspace: number;
|
|
15
16
|
Delete: number;
|
|
16
17
|
Submit: number;
|
|
18
|
+
Comma: number;
|
|
17
19
|
};
|
|
18
20
|
export declare const extractAction: (x0: import("react").KeyboardEvent<HTMLElement>) => unknown;
|
|
@@ -97,6 +97,7 @@ export var DateFragmentsView = /*#__PURE__*/function (_React$Component) {
|
|
|
97
97
|
"data-fragment": "",
|
|
98
98
|
onMouseUp: handleMouseUp
|
|
99
99
|
}, valueMask, /*#__PURE__*/React.createElement("span", {
|
|
100
|
+
"data-tid": "DateFragmentsView__placeholder",
|
|
100
101
|
className: styles.mask(this.theme)
|
|
101
102
|
}, Array(lengthMask).fill('').map(function (_, i) {
|
|
102
103
|
return /*#__PURE__*/React.createElement(MaskCharLowLine, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["DateFragmentsView.tsx"],"names":["React","MaskCharLowLine","InternalDateValidator","InternalDateComponentType","ThemeContext","cx","styles","DateFragmentsView","rootNode","isFragment","el","fragments","Array","from","querySelectorAll","some","fragment","contains","getRootNode","rootRef","render","theme","renderMain","root","props","map","index","type","Separator","renderSeparator","renderDateComponent","separatorClassName","mask","delimiterFilled","value","inputMode","onSelectDateComponent","selected","length","valueWithPad","valueMask","lengthMask","testParseToNumber","Math","max","toString","handleMouseUp","e","document","activeElement","currentTarget","fill","_","i","Component"],"mappings":"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
|
|
1
|
+
{"version":3,"sources":["DateFragmentsView.tsx"],"names":["React","MaskCharLowLine","InternalDateValidator","InternalDateComponentType","ThemeContext","cx","styles","DateFragmentsView","rootNode","isFragment","el","fragments","Array","from","querySelectorAll","some","fragment","contains","getRootNode","rootRef","render","theme","renderMain","root","props","map","index","type","Separator","renderSeparator","renderDateComponent","separatorClassName","mask","delimiterFilled","value","inputMode","onSelectDateComponent","selected","length","valueWithPad","valueMask","lengthMask","testParseToNumber","Math","max","toString","handleMouseUp","e","document","activeElement","currentTarget","fill","_","i","Component"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { MaskCharLowLine } from '../../internal/MaskCharLowLine';\nimport { InternalDateValidator } from '../../lib/date/InternalDateValidator';\nimport { InternalDateComponentType, InternalDateFragment } from '../../lib/date/types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './DateFragmentsView.styles';\n\ninterface DateFragmentViewProps {\n selected: InternalDateComponentType | null;\n fragments: InternalDateFragment[];\n inputMode: boolean;\n onSelectDateComponent: (type: InternalDateComponentType, e: React.MouseEvent<HTMLSpanElement>) => void;\n}\n\nexport class DateFragmentsView extends React.Component<DateFragmentViewProps, {}> {\n private theme!: Theme;\n private rootNode: HTMLSpanElement | null = null;\n\n public isFragment = (el: HTMLElement | EventTarget): boolean => {\n if (this.rootNode) {\n // NOTE: NodeList doesn't support method 'forEach' in IE11\n const fragments: HTMLSpanElement[] = Array.from(this.rootNode.querySelectorAll('[data-fragment]'));\n return fragments.some((fragment) => fragment === el || fragment.contains(el as HTMLSpanElement));\n }\n return false;\n };\n\n public getRootNode = () => this.rootNode;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n return (\n <span ref={this.rootRef} className={styles.root(this.theme)}>\n {this.props.fragments.map((fragment, index) =>\n fragment.type === InternalDateComponentType.Separator\n ? this.renderSeparator(fragment, index)\n : this.renderDateComponent(fragment, index),\n )}\n </span>\n );\n }\n\n private renderSeparator(fragment: InternalDateFragment, index: number): JSX.Element {\n const separatorClassName = cx({\n [styles.mask(this.theme)]: true,\n [styles.delimiterFilled()]: this.props.fragments[index + 1].value !== null,\n });\n\n return (\n <span key={index} className={separatorClassName}>\n {fragment.value}\n </span>\n );\n }\n\n private renderDateComponent(fragment: InternalDateFragment, index: number): JSX.Element {\n const { inputMode, onSelectDateComponent, selected } = this.props;\n const { type, value, length, valueWithPad } = fragment;\n\n const valueMask = value === null || (selected === type && inputMode) ? value : valueWithPad || value;\n const lengthMask = InternalDateValidator.testParseToNumber(valueMask)\n ? Math.max(length - valueMask!.toString().length, 0)\n : length;\n\n const handleMouseUp = (e: React.MouseEvent<HTMLSpanElement>) => {\n if (document.activeElement && document.activeElement.contains(e.currentTarget)) {\n onSelectDateComponent(type, e);\n }\n };\n\n return (\n <span key={index} data-fragment=\"\" onMouseUp={handleMouseUp}>\n {valueMask}\n <span data-tid=\"DateFragmentsView__placeholder\" className={styles.mask(this.theme)}>\n {Array(lengthMask)\n .fill('')\n .map((_, i) => (\n <MaskCharLowLine key={i} />\n ))}\n </span>\n </span>\n );\n }\n\n private rootRef = (el: HTMLSpanElement | null) => {\n this.rootNode = el;\n };\n}\n"]}
|
|
@@ -121,7 +121,7 @@ export declare class DatePicker extends React.PureComponent<DatePickerProps<Date
|
|
|
121
121
|
close(): void;
|
|
122
122
|
render(): JSX.Element;
|
|
123
123
|
renderMain: (props: CommonWrapperRestProps<DatePickerProps<DatePickerValue>>) => JSX.Element;
|
|
124
|
-
getParent: () => Nullable<
|
|
124
|
+
getParent: () => Nullable<Element>;
|
|
125
125
|
private getRootStyle;
|
|
126
126
|
private getInputRef;
|
|
127
127
|
private parseValueToDate;
|
|
@@ -27,11 +27,18 @@ const request = () => Promise.reject();
|
|
|
27
27
|
<FileUploader request={request} multiple />
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
+
Использование `accept`
|
|
31
|
+
```jsx harmony
|
|
32
|
+
import { FileUploader } from '@skbkontur/react-ui';
|
|
33
|
+
|
|
34
|
+
<FileUploader multiple accept="image/*" />
|
|
35
|
+
```
|
|
36
|
+
|
|
30
37
|
Валидация файла в списке
|
|
31
38
|
```jsx harmony
|
|
32
39
|
import { FileUploader } from '@skbkontur/react-ui';
|
|
33
40
|
|
|
34
|
-
<FileUploader multiple
|
|
41
|
+
<FileUploader multiple validateBeforeUpload={({originalFile}) => `У файла ${originalFile.name} неверный формат`} />
|
|
35
42
|
```
|
|
36
43
|
|
|
37
44
|
Валидация контрола
|