@skbkontur/react-ui 4.21.0-next.2 → 4.21.0
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 +22 -0
- package/cjs/components/Input/Input.d.ts +22 -5
- package/cjs/components/Input/Input.js +33 -14
- package/cjs/components/Input/Input.js.map +1 -1
- package/cjs/components/Input/Input.typings.d.ts +7 -0
- package/cjs/components/Input/Input.typings.js +1 -0
- package/cjs/components/Input/Input.typings.js.map +1 -0
- package/cjs/components/Input/index.d.ts +1 -0
- package/cjs/components/Input/index.js +2 -1
- package/cjs/components/Input/index.js.map +1 -1
- package/cjs/components/MaskedInput/MaskedInput.d.ts +24 -0
- package/cjs/components/MaskedInput/MaskedInput.js +78 -0
- package/cjs/components/MaskedInput/MaskedInput.js.map +1 -0
- package/cjs/components/MaskedInput/MaskedInput.md +21 -0
- package/cjs/components/MaskedInput/index.js.map +1 -0
- package/cjs/components/Token/Token.js +1 -1
- package/cjs/components/Token/Token.js.map +1 -1
- package/cjs/internal/{MaskedInput/MaskedInput.d.ts → InternalMaskedInput/InternalMaskedInput.d.ts} +8 -5
- package/cjs/internal/{MaskedInput/MaskedInput.js → InternalMaskedInput/InternalMaskedInput.js} +11 -8
- package/cjs/internal/InternalMaskedInput/InternalMaskedInput.js.map +1 -0
- package/cjs/internal/InternalMaskedInput/InternalMaskedInput.styles.js.map +1 -0
- package/cjs/internal/InternalMaskedInput/index.d.ts +1 -0
- package/cjs/internal/InternalMaskedInput/index.js +1 -0
- package/cjs/internal/InternalMaskedInput/index.js.map +1 -0
- package/cjs/internal/MaskedInputElement/MaskedInputElement.d.ts +14 -0
- package/cjs/internal/MaskedInputElement/MaskedInputElement.helpers.d.ts +16 -0
- package/cjs/internal/MaskedInputElement/MaskedInputElement.helpers.js +52 -0
- package/cjs/internal/MaskedInputElement/MaskedInputElement.helpers.js.map +1 -0
- package/cjs/internal/MaskedInputElement/MaskedInputElement.js +196 -0
- package/cjs/internal/MaskedInputElement/MaskedInputElement.js.map +1 -0
- package/cjs/internal/MaskedInputElement/MaskedInputElement.styles.js +29 -0
- package/cjs/internal/MaskedInputElement/MaskedInputElement.styles.js.map +1 -0
- package/cjs/internal/MaskedInputElement/index.d.ts +1 -0
- package/cjs/internal/MaskedInputElement/index.js +1 -0
- package/cjs/internal/MaskedInputElement/index.js.map +1 -0
- package/cjs/lib/utils.d.ts +7 -0
- package/cjs/lib/utils.js +25 -2
- package/cjs/lib/utils.js.map +1 -1
- package/components/Input/Input/Input.js +14 -5
- package/components/Input/Input/Input.js.map +1 -1
- package/components/Input/Input.d.ts +22 -5
- package/components/Input/Input.typings/Input.typings.js +1 -0
- package/components/Input/Input.typings/Input.typings.js.map +1 -0
- package/components/Input/Input.typings/package.json +6 -0
- package/components/Input/Input.typings.d.ts +7 -0
- package/components/Input/index/index.js +2 -1
- package/components/Input/index/index.js.map +1 -1
- package/components/Input/index.d.ts +1 -0
- package/components/MaskedInput/MaskedInput/MaskedInput.js +62 -0
- package/components/MaskedInput/MaskedInput/MaskedInput.js.map +1 -0
- package/{internal → components}/MaskedInput/MaskedInput/package.json +1 -1
- package/components/MaskedInput/MaskedInput.d.ts +24 -0
- package/components/MaskedInput/MaskedInput.md +21 -0
- package/components/MaskedInput/index/index.js.map +1 -0
- package/{internal → components}/MaskedInput/index/package.json +1 -1
- package/{internal → components}/MaskedInput/package.json +1 -1
- package/components/Token/Token/Token.js +4 -3
- package/components/Token/Token/Token.js.map +1 -1
- package/internal/{MaskedInput/MaskedInput/MaskedInput.js → InternalMaskedInput/InternalMaskedInput/InternalMaskedInput.js} +13 -9
- package/internal/InternalMaskedInput/InternalMaskedInput/InternalMaskedInput.js.map +1 -0
- package/internal/InternalMaskedInput/InternalMaskedInput/package.json +6 -0
- package/internal/{MaskedInput/MaskedInput.d.ts → InternalMaskedInput/InternalMaskedInput.d.ts} +8 -5
- package/{cjs/internal/MaskedInput/MaskedInput.styles.js.map → internal/InternalMaskedInput/InternalMaskedInput.styles/InternalMaskedInput.styles.js.map} +1 -1
- package/internal/InternalMaskedInput/InternalMaskedInput.styles/package.json +6 -0
- package/internal/InternalMaskedInput/InternalMaskedInput.styles.d.ts +6 -0
- package/internal/InternalMaskedInput/index/index.js +1 -0
- package/internal/InternalMaskedInput/index/index.js.map +1 -0
- package/internal/InternalMaskedInput/index/package.json +6 -0
- package/internal/InternalMaskedInput/index.d.ts +1 -0
- package/internal/InternalMaskedInput/package.json +6 -0
- package/internal/MaskedInputElement/MaskedInputElement/MaskedInputElement.js +206 -0
- package/internal/MaskedInputElement/MaskedInputElement/MaskedInputElement.js.map +1 -0
- package/internal/MaskedInputElement/MaskedInputElement/package.json +6 -0
- package/internal/MaskedInputElement/MaskedInputElement.d.ts +14 -0
- package/internal/MaskedInputElement/MaskedInputElement.helpers/MaskedInputElement.helpers.js +43 -0
- package/internal/MaskedInputElement/MaskedInputElement.helpers/MaskedInputElement.helpers.js.map +1 -0
- package/internal/MaskedInputElement/MaskedInputElement.helpers/package.json +6 -0
- package/internal/MaskedInputElement/MaskedInputElement.helpers.d.ts +16 -0
- package/internal/MaskedInputElement/MaskedInputElement.styles/MaskedInputElement.styles.js +16 -0
- package/internal/MaskedInputElement/MaskedInputElement.styles/MaskedInputElement.styles.js.map +1 -0
- package/internal/MaskedInputElement/MaskedInputElement.styles/package.json +6 -0
- package/internal/MaskedInputElement/MaskedInputElement.styles.d.ts +6 -0
- package/internal/MaskedInputElement/index/index.js +1 -0
- package/internal/MaskedInputElement/index/index.js.map +1 -0
- package/internal/MaskedInputElement/index/package.json +6 -0
- package/internal/MaskedInputElement/index.d.ts +1 -0
- package/internal/MaskedInputElement/package.json +6 -0
- package/lib/utils/utils.js +27 -1
- package/lib/utils/utils.js.map +1 -1
- package/lib/utils.d.ts +7 -0
- package/package.json +4 -3
- package/cjs/internal/MaskedInput/MaskedInput.js.map +0 -1
- package/cjs/internal/MaskedInput/index.js.map +0 -1
- package/internal/MaskedInput/MaskedInput/MaskedInput.js.map +0 -1
- package/internal/MaskedInput/MaskedInput.styles/MaskedInput.styles.js.map +0 -1
- package/internal/MaskedInput/MaskedInput.styles/package.json +0 -6
- package/internal/MaskedInput/index/index.js.map +0 -1
- /package/cjs/{internal → components}/MaskedInput/index.d.ts +0 -0
- /package/cjs/{internal → components}/MaskedInput/index.js +0 -0
- /package/cjs/internal/{MaskedInput/MaskedInput.styles.d.ts → InternalMaskedInput/InternalMaskedInput.styles.d.ts} +0 -0
- /package/cjs/internal/{MaskedInput/MaskedInput.styles.js → InternalMaskedInput/InternalMaskedInput.styles.js} +0 -0
- /package/{internal/MaskedInput/MaskedInput.styles.d.ts → cjs/internal/MaskedInputElement/MaskedInputElement.styles.d.ts} +0 -0
- /package/{internal → components}/MaskedInput/index/index.js +0 -0
- /package/{internal → components}/MaskedInput/index.d.ts +0 -0
- /package/internal/{MaskedInput/MaskedInput.styles/MaskedInput.styles.js → InternalMaskedInput/InternalMaskedInput.styles/InternalMaskedInput.styles.js} +0 -0
|
@@ -165,4 +165,4 @@ Token = (_dec = (0, _decorators.locale)('Token', _locale.TokenLocaleHelper), (0,
|
|
|
165
165
|
}
|
|
166
166
|
|
|
167
167
|
onRemove(event);
|
|
168
|
-
};return _this;}var _proto = Token.prototype;_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return _this2.renderMain();});};_proto.renderMain = function renderMain() {var _this$props2 = this.props,children = _this$props2.children,isActive = _this$props2.isActive,_this$props2$colors = _this$props2.colors,colors = _this$props2$colors === void 0 ? { idle: 'defaultIdle', active: 'defaultActive' } : _this$props2$colors,error = _this$props2.error,warning = _this$props2.warning,disabled = _this$props2.disabled,ariaDescribedby = _this$props2['aria-describedby'],_this$props2$onClick = _this$props2.onClick,onClick = _this$props2$onClick === void 0 ? _utils.emptyHandler : _this$props2$onClick,_this$props2$onDouble = _this$props2.onDoubleClick,onDoubleClick = _this$props2$onDouble === void 0 ? _utils.emptyHandler : _this$props2$onDouble,_this$props2$onMouseE = _this$props2.onMouseEnter,onMouseEnter = _this$props2$onMouseE === void 0 ? _utils.emptyHandler : _this$props2$onMouseE,_this$props2$onMouseL = _this$props2.onMouseLeave,onMouseLeave = _this$props2$onMouseL === void 0 ? _utils.emptyHandler : _this$props2$onMouseL,_this$props2$onFocus = _this$props2.onFocus,onFocus = _this$props2$onFocus === void 0 ? _utils.emptyHandler : _this$props2$onFocus,_this$props2$onBlur = _this$props2.onBlur,onBlur = _this$props2$onBlur === void 0 ? _utils.emptyHandler : _this$props2$onBlur;var theme = this.theme;var validation = getValidation(error, warning);var removeButtonAriaLabel = this.locale.removeButtonAriaLabel + ' ' + children;var icon = (0, _ThemeHelpers.isTheme2022)(theme) ? /*#__PURE__*/_react.default.createElement(_CloseButtonIcon.CloseButtonIcon, { side: 16, color: "inherit", colorHover: "inherit", role: "none" }) : /*#__PURE__*/_react.default.createElement(_CrossIcon.CrossIcon, null);var classNames = '';if ((0, _ThemeHelpers.isTheme2022)(theme)) {classNames = (0, _Emotion.cx)(_Token.styles.tokenDefaultIdle2022(theme), !isActive && !warning && !error && !disabled && _Token.styles.tokenDefaultIdleHovering2022(theme), isActive && _Token.styles.tokenDefaultActive2022(theme), warning && _Token.styles.tokenWarning2022(theme), error && _Token.styles.tokenError2022(theme), disabled && _Token.styles.tokenDisabled2022(theme));} else {classNames = (0, _Emotion.cx)(_Token.colorStyles[colors.idle](theme, validation), !!isActive && _Token.colorStyles[colors.active || colors.idle](theme, validation), !!disabled && _Token.styles.disabled(theme), !!disabled && _Token.colorStyles.defaultDisabled(theme), !!disabled && warning && _Token.colorStyles.defaultDisabledWarning(theme), !!disabled && error && _Token.colorStyles.defaultDisabledError(theme));}var tokenClassNames = (0, _Emotion.cx)(_Token.styles.token(this.theme), classNames);return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: this.setRootNode }, this.props), /*#__PURE__*/_react.default.createElement("div", { "data-tid": TokenDataTids.root, className: tokenClassNames, "aria-describedby": ariaDescribedby, onClick: onClick, onDoubleClick: onDoubleClick, onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave, onFocus: onFocus, onBlur: onBlur }, /*#__PURE__*/_react.default.createElement("span", { className: _Token.styles.text(this.theme) }, children), /*#__PURE__*/_react.default.createElement("span", { role: (0, _ThemeHelpers.isTheme2022)(theme) ? undefined : 'button', "aria-label": (0, _ThemeHelpers.isTheme2022)(theme) ? undefined : removeButtonAriaLabel, className: (0, _Emotion.cx)(_Token.styles.removeIcon(this.theme), _Token.globalClasses.removeIcon), onClick: this.onRemoveClick, "data-tid": TokenDataTids.removeIcon }, icon)));};return Token;}(_react.default.Component), _class2.__KONTUR_REACT_UI__ = 'Token', _temp)) || _class) || _class);exports.Token = Token;
|
|
168
|
+
};return _this;}var _proto = Token.prototype;_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return _this2.renderMain();});};_proto.renderMain = function renderMain() {var _this$props2 = this.props,children = _this$props2.children,isActive = _this$props2.isActive,_this$props2$colors = _this$props2.colors,colors = _this$props2$colors === void 0 ? { idle: 'defaultIdle', active: 'defaultActive' } : _this$props2$colors,error = _this$props2.error,warning = _this$props2.warning,disabled = _this$props2.disabled,ariaDescribedby = _this$props2['aria-describedby'],_this$props2$onClick = _this$props2.onClick,onClick = _this$props2$onClick === void 0 ? _utils.emptyHandler : _this$props2$onClick,_this$props2$onDouble = _this$props2.onDoubleClick,onDoubleClick = _this$props2$onDouble === void 0 ? _utils.emptyHandler : _this$props2$onDouble,_this$props2$onMouseE = _this$props2.onMouseEnter,onMouseEnter = _this$props2$onMouseE === void 0 ? _utils.emptyHandler : _this$props2$onMouseE,_this$props2$onMouseL = _this$props2.onMouseLeave,onMouseLeave = _this$props2$onMouseL === void 0 ? _utils.emptyHandler : _this$props2$onMouseL,_this$props2$onFocus = _this$props2.onFocus,onFocus = _this$props2$onFocus === void 0 ? _utils.emptyHandler : _this$props2$onFocus,_this$props2$onBlur = _this$props2.onBlur,onBlur = _this$props2$onBlur === void 0 ? _utils.emptyHandler : _this$props2$onBlur;var theme = this.theme;var validation = getValidation(error, warning);var removeButtonAriaLabel = this.locale.removeButtonAriaLabel + ' ' + (0, _utils.getChildrenText)(children);var icon = (0, _ThemeHelpers.isTheme2022)(theme) ? /*#__PURE__*/_react.default.createElement(_CloseButtonIcon.CloseButtonIcon, { side: 16, color: "inherit", colorHover: "inherit", role: "none", tabbable: false }) : /*#__PURE__*/_react.default.createElement(_CrossIcon.CrossIcon, null);var classNames = '';if ((0, _ThemeHelpers.isTheme2022)(theme)) {classNames = (0, _Emotion.cx)(_Token.styles.tokenDefaultIdle2022(theme), !isActive && !warning && !error && !disabled && _Token.styles.tokenDefaultIdleHovering2022(theme), isActive && _Token.styles.tokenDefaultActive2022(theme), warning && _Token.styles.tokenWarning2022(theme), error && _Token.styles.tokenError2022(theme), disabled && _Token.styles.tokenDisabled2022(theme));} else {classNames = (0, _Emotion.cx)(_Token.colorStyles[colors.idle](theme, validation), !!isActive && _Token.colorStyles[colors.active || colors.idle](theme, validation), !!disabled && _Token.styles.disabled(theme), !!disabled && _Token.colorStyles.defaultDisabled(theme), !!disabled && warning && _Token.colorStyles.defaultDisabledWarning(theme), !!disabled && error && _Token.colorStyles.defaultDisabledError(theme));}var tokenClassNames = (0, _Emotion.cx)(_Token.styles.token(this.theme), classNames);return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: this.setRootNode }, this.props), /*#__PURE__*/_react.default.createElement("div", { "data-tid": TokenDataTids.root, className: tokenClassNames, "aria-describedby": ariaDescribedby, onClick: onClick, onDoubleClick: onDoubleClick, onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave, onFocus: onFocus, onBlur: onBlur }, /*#__PURE__*/_react.default.createElement("span", { className: _Token.styles.text(this.theme) }, children), /*#__PURE__*/_react.default.createElement("span", { role: (0, _ThemeHelpers.isTheme2022)(theme) ? undefined : 'button', "aria-label": (0, _ThemeHelpers.isTheme2022)(theme) ? undefined : removeButtonAriaLabel, className: (0, _Emotion.cx)(_Token.styles.removeIcon(this.theme), _Token.globalClasses.removeIcon), onClick: this.onRemoveClick, "data-tid": TokenDataTids.removeIcon }, icon)));};return Token;}(_react.default.Component), _class2.__KONTUR_REACT_UI__ = 'Token', _temp)) || _class) || _class);exports.Token = Token;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Token.tsx"],"names":["getValidation","error","warning","TokenDataTids","root","removeIcon","Token","TokenLocaleHelper","rootNode","onRemoveClick","event","props","disabled","onRemove","emptyHandler","preventDefault","render","theme","renderMain","children","isActive","colors","idle","active","ariaDescribedby","onClick","onDoubleClick","onMouseEnter","onMouseLeave","onFocus","onBlur","validation","removeButtonAriaLabel","locale","icon","classNames","styles","tokenDefaultIdle2022","tokenDefaultIdleHovering2022","tokenDefaultActive2022","tokenWarning2022","tokenError2022","tokenDisabled2022","colorStyles","defaultDisabled","defaultDisabledWarning","defaultDisabledError","tokenClassNames","token","setRootNode","text","undefined","globalClasses","React","Component","__KONTUR_REACT_UI__"],"mappings":"2VAAA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,kC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BA,IAAMA,aAAa,GAAG,SAAhBA,aAAgB,CAACC,KAAD,EAA6BC,OAA7B,EAAgE;AACpF,MAAID,KAAJ,EAAW;AACT,WAAO,OAAP;AACD,GAFD,MAEO,IAAIC,OAAJ,EAAa;AAClB,WAAO,SAAP;AACD;;AAED,SAAO,IAAP;AACD,CARD;;AAUO,IAAMC,aAAa,GAAG;AAC3BC,EAAAA,IAAI,EAAE,aADqB;AAE3BC,EAAAA,UAAU,EAAE,mBAFe,EAAtB,C;;;;;AAOMC,K,WADZ,wBAAO,OAAP,EAAgBC,yBAAhB,C,MADAC,kB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmGSC,IAAAA,a,GAAgB,UAACC,KAAD,EAAsD;AAC5E,wBAA8C,MAAKC,KAAnD,CAAQC,QAAR,eAAQA,QAAR,oCAAkBC,QAAlB,CAAkBA,QAAlB,qCAA6BC,mBAA7B;;AAEA,UAAIF,QAAJ,EAAc;AACZF,QAAAA,KAAK,CAACK,cAAN;AACA;AACD;;AAEDF,MAAAA,QAAQ,CAACH,KAAD,CAAR;AACD,K,mDAnGMM,M,GAAP,kBAAgB,mBACd,oBACE,6BAAC,0BAAD,CAAc,QAAd,QACG,UAACC,KAAD,EAAW,CACV,MAAI,CAACA,KAAL,GAAaA,KAAb,CACA,OAAO,MAAI,CAACC,UAAL,EAAP,CACD,CAJH,CADF,CAQD,C,QAEOA,U,GAAR,sBAAqB,CACnB,mBAcI,KAAKP,KAdT,CACEQ,QADF,gBACEA,QADF,CAEEC,QAFF,gBAEEA,QAFF,oCAGEC,MAHF,CAGEA,MAHF,oCAGW,EAAEC,IAAI,EAAE,aAAR,EAAuBC,MAAM,EAAE,eAA/B,EAHX,uBAIEtB,KAJF,gBAIEA,KAJF,CAKEC,OALF,gBAKEA,OALF,CAMEU,QANF,gBAMEA,QANF,CAOsBY,eAPtB,gBAOE,kBAPF,sCAQEC,OARF,CAQEA,OARF,qCAQYX,mBARZ,6DASEY,aATF,CASEA,aATF,sCASkBZ,mBATlB,8DAUEa,YAVF,CAUEA,YAVF,sCAUiBb,mBAVjB,8DAWEc,YAXF,CAWEA,YAXF,sCAWiBd,mBAXjB,6DAYEe,OAZF,CAYEA,OAZF,qCAYYf,mBAZZ,2DAaEgB,MAbF,CAaEA,MAbF,oCAaWhB,mBAbX,uBAgBA,IAAMG,KAAK,GAAG,KAAKA,KAAnB,CAEA,IAAMc,UAAU,GAAG/B,aAAa,CAACC,KAAD,EAAQC,OAAR,CAAhC,CACA,IAAM8B,qBAAqB,GAAG,KAAKC,MAAL,CAAYD,qBAAZ,GAAoC,GAApC,
|
|
1
|
+
{"version":3,"sources":["Token.tsx"],"names":["getValidation","error","warning","TokenDataTids","root","removeIcon","Token","TokenLocaleHelper","rootNode","onRemoveClick","event","props","disabled","onRemove","emptyHandler","preventDefault","render","theme","renderMain","children","isActive","colors","idle","active","ariaDescribedby","onClick","onDoubleClick","onMouseEnter","onMouseLeave","onFocus","onBlur","validation","removeButtonAriaLabel","locale","icon","classNames","styles","tokenDefaultIdle2022","tokenDefaultIdleHovering2022","tokenDefaultActive2022","tokenWarning2022","tokenError2022","tokenDisabled2022","colorStyles","defaultDisabled","defaultDisabledWarning","defaultDisabledError","tokenClassNames","token","setRootNode","text","undefined","globalClasses","React","Component","__KONTUR_REACT_UI__"],"mappings":"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","sourcesContent":["import React, { AriaAttributes } from 'react';\n\nimport { locale } from '../../lib/locale/decorators';\nimport { CrossIcon } from '../../internal/icons/CrossIcon';\nimport { emptyHandler, getChildrenText } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { CloseButtonIcon } from '../../internal/CloseButtonIcon/CloseButtonIcon';\n\nimport { styles, colorStyles, globalClasses } from './Token.styles';\nimport { TokenLocale, TokenLocaleHelper } from './locale';\n\nexport type TokenColorName = keyof typeof colorStyles;\n\nexport interface TokenColors {\n idle: TokenColorName;\n active?: TokenColorName;\n}\n\nexport interface TokenProps extends Pick<AriaAttributes, 'aria-describedby'>, CommonProps {\n colors?: TokenColors;\n isActive?: boolean;\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n disabled?: boolean;\n onClick?: React.MouseEventHandler<HTMLDivElement>;\n onDoubleClick?: React.MouseEventHandler<HTMLDivElement>;\n onRemove?: React.MouseEventHandler<HTMLElement>;\n onMouseEnter?: React.MouseEventHandler<HTMLDivElement>;\n onMouseLeave?: React.MouseEventHandler<HTMLDivElement>;\n onFocus?: React.FocusEventHandler<HTMLDivElement>;\n onBlur?: React.FocusEventHandler<HTMLDivElement>;\n}\n\nconst getValidation = (error: TokenProps['error'], warning: TokenProps['warning']) => {\n if (error) {\n return 'error';\n } else if (warning) {\n return 'warning';\n }\n\n return null;\n};\n\nexport const TokenDataTids = {\n root: 'Token__root',\n removeIcon: 'Token__removeIcon',\n} as const;\n\n@rootNode\n@locale('Token', TokenLocaleHelper)\nexport class Token extends React.Component<TokenProps> {\n public static __KONTUR_REACT_UI__ = 'Token';\n\n private theme!: Theme;\n private setRootNode!: TSetRootNode;\n private readonly locale!: TokenLocale;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const {\n children,\n isActive,\n colors = { idle: 'defaultIdle', active: 'defaultActive' },\n error,\n warning,\n disabled,\n 'aria-describedby': ariaDescribedby,\n onClick = emptyHandler,\n onDoubleClick = emptyHandler,\n onMouseEnter = emptyHandler,\n onMouseLeave = emptyHandler,\n onFocus = emptyHandler,\n onBlur = emptyHandler,\n } = this.props;\n\n const theme = this.theme;\n\n const validation = getValidation(error, warning);\n const removeButtonAriaLabel = this.locale.removeButtonAriaLabel + ' ' + getChildrenText(children);\n\n const icon = isTheme2022(theme) ? (\n <CloseButtonIcon side={16} color=\"inherit\" colorHover=\"inherit\" role=\"none\" tabbable={false} />\n ) : (\n <CrossIcon />\n );\n\n let classNames = '';\n if (isTheme2022(theme)) {\n classNames = cx(\n styles.tokenDefaultIdle2022(theme),\n !isActive && !warning && !error && !disabled && styles.tokenDefaultIdleHovering2022(theme),\n isActive && styles.tokenDefaultActive2022(theme),\n warning && styles.tokenWarning2022(theme),\n error && styles.tokenError2022(theme),\n disabled && styles.tokenDisabled2022(theme),\n );\n } else {\n classNames = cx(\n colorStyles[colors.idle](theme, validation),\n !!isActive && colorStyles[colors.active || colors.idle](theme, validation),\n !!disabled && styles.disabled(theme),\n !!disabled && colorStyles.defaultDisabled(theme),\n !!disabled && warning && colorStyles.defaultDisabledWarning(theme),\n !!disabled && error && colorStyles.defaultDisabledError(theme),\n );\n }\n\n const tokenClassNames = cx(styles.token(this.theme), classNames);\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div\n data-tid={TokenDataTids.root}\n className={tokenClassNames}\n aria-describedby={ariaDescribedby}\n onClick={onClick}\n onDoubleClick={onDoubleClick}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onFocus={onFocus}\n onBlur={onBlur}\n >\n <span className={styles.text(this.theme)}>{children}</span>\n <span\n role={isTheme2022(theme) ? undefined : 'button'}\n aria-label={isTheme2022(theme) ? undefined : removeButtonAriaLabel}\n className={cx(styles.removeIcon(this.theme), globalClasses.removeIcon)}\n onClick={this.onRemoveClick}\n data-tid={TokenDataTids.removeIcon}\n >\n {icon}\n </span>\n </div>\n </CommonWrapper>\n );\n }\n\n private onRemoveClick = (event: React.MouseEvent<HTMLElement, MouseEvent>) => {\n const { disabled, onRemove = emptyHandler } = this.props;\n\n if (disabled) {\n event.preventDefault();\n return;\n }\n\n onRemove(event);\n };\n}\n"]}
|
package/cjs/internal/{MaskedInput/MaskedInput.d.ts → InternalMaskedInput/InternalMaskedInput.d.ts}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
export interface
|
|
2
|
+
export interface InternalMaskedInputProps extends React.InputHTMLAttributes<HTMLInputElement> {
|
|
3
3
|
mask: string;
|
|
4
4
|
maskChar?: string | null;
|
|
5
5
|
formatChars?: {
|
|
@@ -17,20 +17,23 @@ interface MaskedInputState {
|
|
|
17
17
|
emptyValue: string;
|
|
18
18
|
focused: boolean;
|
|
19
19
|
}
|
|
20
|
-
declare type DefaultProps = Required<Pick<
|
|
20
|
+
declare type DefaultProps = Required<Pick<InternalMaskedInputProps, 'maskChar'>>;
|
|
21
21
|
export declare const MaskedInputDataTids: {
|
|
22
22
|
readonly root: "MaskedInput__root";
|
|
23
23
|
};
|
|
24
|
-
|
|
24
|
+
/** @deprecated Со следующей мажорной версии Input перестанет поддерживать маску.
|
|
25
|
+
* todo: выпилить в 5 версии библиотеки.
|
|
26
|
+
* */
|
|
27
|
+
export declare class InternalMaskedInput extends React.PureComponent<InternalMaskedInputProps, MaskedInputState> {
|
|
25
28
|
static __KONTUR_REACT_UI__: string;
|
|
26
29
|
static defaultProps: DefaultProps;
|
|
27
30
|
private getProps;
|
|
28
31
|
input: HTMLInputElement | null;
|
|
29
32
|
private theme;
|
|
30
33
|
private reactInputMask;
|
|
31
|
-
constructor(props:
|
|
34
|
+
constructor(props: InternalMaskedInputProps);
|
|
32
35
|
componentDidMount(): void;
|
|
33
|
-
componentDidUpdate(prevProps:
|
|
36
|
+
componentDidUpdate(prevProps: InternalMaskedInputProps): void;
|
|
34
37
|
render(): JSX.Element;
|
|
35
38
|
private renderMain;
|
|
36
39
|
private getValue;
|
package/cjs/internal/{MaskedInput/MaskedInput.js → InternalMaskedInput/InternalMaskedInput.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.MaskedInputDataTids = exports.
|
|
1
|
+
"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.MaskedInputDataTids = exports.InternalMaskedInput = void 0;var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
|
|
2
2
|
|
|
3
3
|
var _react = _interopRequireDefault(require("react"));
|
|
4
4
|
var _reactInputMask = _interopRequireDefault(require("react-input-mask"));
|
|
@@ -10,7 +10,7 @@ var _MaskCharLowLine = require("../MaskCharLowLine");
|
|
|
10
10
|
var _Emotion = require("../../lib/theming/Emotion");
|
|
11
11
|
var _createPropsGetter = require("../../lib/createPropsGetter");
|
|
12
12
|
|
|
13
|
-
var
|
|
13
|
+
var _InternalMaskedInput = require("./InternalMaskedInput.styles");var _excluded = ["maskChar", "alwaysShowMask", "hasLeftIcon", "hasRightIcon", "maxLength", "onValueChange", "onUnexpectedInput", "defaultValue", "style"];
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
|
|
@@ -36,10 +36,13 @@ var _MaskedInput = require("./MaskedInput.styles");var _excluded = ["maskChar",
|
|
|
36
36
|
|
|
37
37
|
|
|
38
38
|
var MaskedInputDataTids = {
|
|
39
|
-
root: 'MaskedInput__root' };
|
|
39
|
+
root: 'MaskedInput__root' };
|
|
40
40
|
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
/** @deprecated Со следующей мажорной версии Input перестанет поддерживать маску.
|
|
43
|
+
* todo: выпилить в 5 версии библиотеки.
|
|
44
|
+
* */exports.MaskedInputDataTids = MaskedInputDataTids;var
|
|
45
|
+
InternalMaskedInput = /*#__PURE__*/function (_React$PureComponent) {(0, _inheritsLoose2.default)(InternalMaskedInput, _React$PureComponent);
|
|
43
46
|
|
|
44
47
|
|
|
45
48
|
|
|
@@ -52,8 +55,8 @@ MaskedInput = /*#__PURE__*/function (_React$PureComponent) {(0, _inheritsLoose2.
|
|
|
52
55
|
|
|
53
56
|
|
|
54
57
|
|
|
55
|
-
function
|
|
56
|
-
_this = _React$PureComponent.call(this, _props) || this;_this.getProps = (0, _createPropsGetter.createPropsGetter)(
|
|
58
|
+
function InternalMaskedInput(_props) {var _this;
|
|
59
|
+
_this = _React$PureComponent.call(this, _props) || this;_this.getProps = (0, _createPropsGetter.createPropsGetter)(InternalMaskedInput.defaultProps);_this.input = null;_this.reactInputMask = null;_this.
|
|
57
60
|
|
|
58
61
|
|
|
59
62
|
|
|
@@ -231,5 +234,5 @@ MaskedInput = /*#__PURE__*/function (_React$PureComponent) {(0, _inheritsLoose2.
|
|
|
231
234
|
if (_this.props.onUnexpectedInput) {
|
|
232
235
|
_this.props.onUnexpectedInput(_this.state.value);
|
|
233
236
|
}
|
|
234
|
-
};_this.state = { value: _this.getValue(_props), originValue: _this.getValue(_props), emptyValue: '', focused: false };return _this;}var _proto =
|
|
235
|
-
this.reactInputMask.forceUpdate();}};_proto.componentDidUpdate = function componentDidUpdate(prevProps) {if (this.props.value !== prevProps.value) {this.setState({ value: this.props.value ? this.props.value.toString() : '' });}};_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return _this2.renderMain();});};_proto.renderMain = function renderMain() {var _this$props = this.props,maskChar = _this$props.maskChar,alwaysShowMask = _this$props.alwaysShowMask,hasLeftIcon = _this$props.hasLeftIcon,hasRightIcon = _this$props.hasRightIcon,maxLength = _this$props.maxLength,onValueChange = _this$props.onValueChange,onUnexpectedInput = _this$props.onUnexpectedInput,defaultValue = _this$props.defaultValue,style = _this$props.style,inputProps = (0, _objectWithoutPropertiesLoose2.default)(_this$props, _excluded);var _this$state = this.state,emptyValue = _this$state.emptyValue,value = _this$state.value,originValue = _this$state.originValue;var leftHelper = (style == null ? void 0 : style.textAlign) !== 'right' && /*#__PURE__*/_react.default.createElement("span", { style: { color: 'transparent' } }, emptyValue.slice(0, originValue.length));var leftClass = (style == null ? void 0 : style.textAlign) !== 'right' &&
|
|
237
|
+
};_this.state = { value: _this.getValue(_props), originValue: _this.getValue(_props), emptyValue: '', focused: false };return _this;}var _proto = InternalMaskedInput.prototype;_proto.componentDidMount = function componentDidMount() {if (this.reactInputMask) {// FIXME: принудительно вызываем beforeMaskedValueChange, чтобы получить emptyValue
|
|
238
|
+
this.reactInputMask.forceUpdate();}};_proto.componentDidUpdate = function componentDidUpdate(prevProps) {if (this.props.value !== prevProps.value) {this.setState({ value: this.props.value ? this.props.value.toString() : '' });}};_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return _this2.renderMain();});};_proto.renderMain = function renderMain() {var _this$props = this.props,maskChar = _this$props.maskChar,alwaysShowMask = _this$props.alwaysShowMask,hasLeftIcon = _this$props.hasLeftIcon,hasRightIcon = _this$props.hasRightIcon,maxLength = _this$props.maxLength,onValueChange = _this$props.onValueChange,onUnexpectedInput = _this$props.onUnexpectedInput,defaultValue = _this$props.defaultValue,style = _this$props.style,inputProps = (0, _objectWithoutPropertiesLoose2.default)(_this$props, _excluded);var _this$state = this.state,emptyValue = _this$state.emptyValue,value = _this$state.value,originValue = _this$state.originValue;var leftHelper = (style == null ? void 0 : style.textAlign) !== 'right' && /*#__PURE__*/_react.default.createElement("span", { style: { color: 'transparent' } }, emptyValue.slice(0, originValue.length));var leftClass = (style == null ? void 0 : style.textAlign) !== 'right' && _InternalMaskedInput.styles.inputMaskLeft();var rightHelper = emptyValue.slice(originValue.length).split('').map(function (_char, i) {return _char === '_' ? /*#__PURE__*/_react.default.createElement(_MaskCharLowLine.MaskCharLowLine, { key: i }) : _char;});return /*#__PURE__*/_react.default.createElement("span", { "data-tid": MaskedInputDataTids.root, className: _InternalMaskedInput.styles.container(), "x-ms-format-detection": "none" }, /*#__PURE__*/_react.default.createElement(_reactInputMask.default, (0, _extends2.default)({}, inputProps, { maskChar: null, beforeMaskedValueChange: this.preprocess, alwaysShowMask: false, onChange: this.handleChange, onFocus: this.handleFocus, onBlur: this.handleBlur, value: value, inputRef: this.refInput, ref: this.refMaskedInput, style: (0, _extends2.default)({}, style) })), this.isMaskVisible() && /*#__PURE__*/_react.default.createElement("span", { className: (0, _Emotion.cx)(_InternalMaskedInput.styles.inputMask(this.theme), leftClass) }, leftHelper, rightHelper));};return InternalMaskedInput;}(_react.default.PureComponent);exports.InternalMaskedInput = InternalMaskedInput;InternalMaskedInput.__KONTUR_REACT_UI__ = 'MaskedInput';InternalMaskedInput.defaultProps = { maskChar: '_' };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["InternalMaskedInput.tsx"],"names":["MaskedInputDataTids","root","InternalMaskedInput","props","getProps","defaultProps","input","reactInputMask","getValue","value","toString","defaultValue","refInput","refMaskedInput","handleChange","event","target","state","handleUnexpectedInput","setState","originValue","onValueChange","onChange","handleFocus","focused","onFocus","handleBlur","onBlur","preprocess","newState","oldState","userInput","options","visibleMaskChars","Array","mask","length","fill","maskChar","split","forEach","char","index","permanents","includes","emptyValue","join","isMaskVisible","alwaysShowMask","onUnexpectedInput","componentDidMount","forceUpdate","componentDidUpdate","prevProps","render","theme","renderMain","hasLeftIcon","hasRightIcon","maxLength","style","inputProps","leftHelper","textAlign","color","slice","leftClass","styles","inputMaskLeft","rightHelper","map","_char","i","container","inputMask","React","PureComponent","__KONTUR_REACT_UI__"],"mappings":";;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,mE;;;;;;;;;;;;;;;;;;;;;;;;;AAyBO,IAAMA,mBAAmB,GAAG;AACjCC,EAAAA,IAAI,EAAE,mBAD2B,EAA5B;;;AAIP;AACA;AACA,K;AACaC,mB;;;;;;;;;;;;;AAaX,+BAAmBC,MAAnB,EAAoD;AAClD,4CAAMA,MAAN,UADkD,MAN5CC,QAM4C,GANjC,0CAAkBF,mBAAmB,CAACG,YAAtC,CAMiC,OAJ7CC,KAI6C,GAJZ,IAIY,OAF5CC,cAE4C,GAFJ,IAEI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuF5CC,IAAAA,QAvF4C,GAuFjC,UAACL,KAAD,EAA6C;AAC9D,UAAI,0BAAcA,KAAK,CAACM,KAApB,CAAJ,EAAgC;AAC9B,eAAON,KAAK,CAACM,KAAN,CAAYC,QAAZ,EAAP;AACD;;AAED,UAAI,0BAAcP,KAAK,CAACQ,YAApB,CAAJ,EAAuC;AACrC,eAAOR,KAAK,CAACQ,YAAN,CAAmBD,QAAnB,EAAP;AACD;;AAED,aAAO,EAAP;AACD,KAjGmD;;AAmG5CE,IAAAA,QAnG4C,GAmGjC,UAACN,KAAD,EAAoC;AACrD,YAAKA,KAAL,GAAaA,KAAb;AACD,KArGmD;;AAuG5CO,IAAAA,cAvG4C,GAuG3B,UAACN,cAAD,EAAoC;AAC3D,YAAKA,cAAL,GAAsBA,cAAtB;AACD,KAzGmD;;AA2G5CO,IAAAA,YA3G4C,GA2G7B,UAACC,KAAD,EAAgD;AACrE,UAAIA,KAAK,CAACC,MAAN,CAAaP,KAAb,KAAuB,MAAKQ,KAAL,CAAWR,KAAtC,EAA6C;AAC3C,cAAKS,qBAAL;AACD,OAFD,MAEO;AACL,cAAKC,QAAL,CAAc,EAAEV,KAAK,EAAEM,KAAK,CAACC,MAAN,CAAaP,KAAtB,EAA6BW,WAAW,EAAEL,KAAK,CAACC,MAAN,CAAaP,KAAvD,EAAd;AACA,YAAI,MAAKN,KAAL,CAAWkB,aAAf,EAA8B;AAC5B,gBAAKlB,KAAL,CAAWkB,aAAX,CAAyBN,KAAK,CAACC,MAAN,CAAaP,KAAtC;AACD;AACD,YAAI,MAAKN,KAAL,CAAWmB,QAAf,EAAyB;AACvB,gBAAKnB,KAAL,CAAWmB,QAAX,CAAoBP,KAApB;AACD;AACF;AACF,KAvHmD;;AAyH5CQ,IAAAA,WAzH4C,GAyH9B,UAACR,KAAD,EAA+C;AACnE,YAAKI,QAAL,CAAc,EAAEK,OAAO,EAAE,IAAX,EAAd;;AAEA,UAAI,MAAKrB,KAAL,CAAWsB,OAAf,EAAwB;AACtB,cAAKtB,KAAL,CAAWsB,OAAX,CAAmBV,KAAnB;AACD;AACF,KA/HmD;;AAiI5CW,IAAAA,UAjI4C,GAiI/B,UAACX,KAAD,EAA+C;AAClE,YAAKI,QAAL,CAAc,EAAEK,OAAO,EAAE,KAAX,EAAd;;AAEA,UAAI,MAAKrB,KAAL,CAAWwB,MAAf,EAAuB;AACrB,cAAKxB,KAAL,CAAWwB,MAAX,CAAkBZ,KAAlB;AACD;AACF,KAvImD;;AAyI5Ca,IAAAA,UAzI4C,GAyI/B;AACnBC,IAAAA,QADmB;AAEnBC,IAAAA,QAFmB;AAGnBC,IAAAA,SAHmB;AAInBC,IAAAA,OAJmB;AAKhB;AACH,UAAMC,gBAAgB,GAAG,IAAIC,KAAJ,CAAUF,OAAO,CAACG,IAAR,CAAaC,MAAvB,EAA+BC,IAA/B,CAAoC,MAAKjC,QAAL,GAAgBkC,QAApD,CAAzB;;AAEA,UAAIT,QAAQ,CAACpB,KAAT,KAAmBqB,QAAQ,CAACrB,KAA5B,IAAqCsB,SAAS,KAAK,IAAvD,EAA6D;AAC3D,cAAKZ,QAAL,CAAc;AACZV,UAAAA,KAAK,EAAEoB,QAAQ,CAACpB,KADJ;AAEZW,UAAAA,WAAW,EAAES,QAAQ,CAACpB,KAFV,EAAd;;AAID;;AAEDuB,MAAAA,OAAO,CAACG,IAAR,CAAaI,KAAb,CAAmB,EAAnB,EAAuBC,OAAvB,CAA+B,UAACC,IAAD,EAAeC,KAAf,EAAiC;AAC9D,YAAIV,OAAO,CAACW,UAAR,CAAmBC,QAAnB,CAA4BF,KAA5B,CAAJ,EAAwC;AACtCT,UAAAA,gBAAgB,CAACS,KAAD,CAAhB,GAA0BD,IAA1B;AACD;;AAED,YAAIZ,QAAQ,CAACpB,KAAT,CAAeiC,KAAf,CAAJ,EAA2B;AACzBT,UAAAA,gBAAgB,CAACS,KAAD,CAAhB,GAA0Bb,QAAQ,CAACpB,KAAT,CAAeiC,KAAf,CAA1B;AACD;AACF,OARD;;AAUA,UAAMG,UAAU,GAAGZ,gBAAgB,CAACa,IAAjB,CAAsB,EAAtB,CAAnB;;AAEA,UAAI,MAAK7B,KAAL,CAAW4B,UAAX,KAA0BA,UAA9B,EAA0C;AACxC,cAAK1B,QAAL,CAAc;AACZ0B,UAAAA,UAAU,EAAVA,UADY,EAAd;;AAGD;;AAED,aAAOhB,QAAP;AACD,KA3KmD;;AA6K5CkB,IAAAA,aA7K4C,GA6K5B,oBAAM,MAAK5C,KAAL,CAAW6C,cAAX,IAA6B,MAAK/B,KAAL,CAAWO,OAA9C,EA7K4B;;AA+K5CN,IAAAA,qBA/K4C,GA+KpB,YAAM;AACpC,UAAI,MAAKf,KAAL,CAAW8C,iBAAf,EAAkC;AAChC,cAAK9C,KAAL,CAAW8C,iBAAX,CAA6B,MAAKhC,KAAL,CAAWR,KAAxC;AACD;AACF,KAnLmD,CAGlD,MAAKQ,KAAL,GAAa,EACXR,KAAK,EAAE,MAAKD,QAAL,CAAcL,MAAd,CADI,EAEXiB,WAAW,EAAE,MAAKZ,QAAL,CAAcL,MAAd,CAFF,EAGX0C,UAAU,EAAE,EAHD,EAIXrB,OAAO,EAAE,KAJE,EAAb,CAHkD,aASnD,C,kDAEM0B,iB,GAAP,6BAA2B,CACzB,IAAI,KAAK3C,cAAT,EAAyB,CACvB;AACA,WAAKA,cAAL,CAAoB4C,WAApB,GACD,CACF,C,QAEMC,kB,GAAP,4BAA0BC,SAA1B,EAA+D,CAC7D,IAAI,KAAKlD,KAAL,CAAWM,KAAX,KAAqB4C,SAAS,CAAC5C,KAAnC,EAA0C,CACxC,KAAKU,QAAL,CAAc,EACZV,KAAK,EAAE,KAAKN,KAAL,CAAWM,KAAX,GAAmB,KAAKN,KAAL,CAAWM,KAAX,CAAiBC,QAAjB,EAAnB,GAAiD,EAD5C,EAAd,EAGD,CACF,C,QAEM4C,M,GAAP,kBAAgB,mBACd,oBACE,6BAAC,0BAAD,CAAc,QAAd,QACG,UAACC,KAAD,EAAW,CACV,MAAI,CAACA,KAAL,GAAaA,KAAb,CACA,OAAO,MAAI,CAACC,UAAL,EAAP,CACD,CAJH,CADF,CAQD,C,QAEOA,U,GAAR,sBAAqB,CACnB,kBAWI,KAAKrD,KAXT,CACEmC,QADF,eACEA,QADF,CAEEU,cAFF,eAEEA,cAFF,CAGES,WAHF,eAGEA,WAHF,CAIEC,YAJF,eAIEA,YAJF,CAKEC,SALF,eAKEA,SALF,CAMEtC,aANF,eAMEA,aANF,CAOE4B,iBAPF,eAOEA,iBAPF,CAQEtC,YARF,eAQEA,YARF,CASEiD,KATF,eASEA,KATF,CAUKC,UAVL,uEAYA,kBAA2C,KAAK5C,KAAhD,CAAQ4B,UAAR,eAAQA,UAAR,CAAoBpC,KAApB,eAAoBA,KAApB,CAA2BW,WAA3B,eAA2BA,WAA3B,CAEA,IAAM0C,UAAU,GAAG,CAAAF,KAAK,QAAL,YAAAA,KAAK,CAAEG,SAAP,MAAqB,OAArB,iBACjB,uCAAM,KAAK,EAAE,EAAEC,KAAK,EAAE,aAAT,EAAb,IAAwCnB,UAAU,CAACoB,KAAX,CAAiB,CAAjB,EAAoB7C,WAAW,CAACgB,MAAhC,CAAxC,CADF,CAGA,IAAM8B,SAAS,GAAG,CAAAN,KAAK,QAAL,YAAAA,KAAK,CAAEG,SAAP,MAAqB,OAArB,IAAgCI,4BAAOC,aAAP,EAAlD,CAEA,IAAMC,WAAW,GAAGxB,UAAU,CAC3BoB,KADiB,CACX7C,WAAW,CAACgB,MADD,EAEjBG,KAFiB,CAEX,EAFW,EAGjB+B,GAHiB,CAGb,UAACC,KAAD,EAAQC,CAAR,UAAeD,KAAK,KAAK,GAAV,gBAAgB,6BAAC,gCAAD,IAAiB,GAAG,EAAEC,CAAtB,GAAhB,GAA8CD,KAA7D,EAHa,CAApB,CAKA,oBACE,uCAAM,YAAUvE,mBAAmB,CAACC,IAApC,EAA0C,SAAS,EAAEkE,4BAAOM,SAAP,EAArD,EAAyE,yBAAsB,MAA/F,iBACE,6BAAC,uBAAD,6BACMZ,UADN,IAEE,QAAQ,EAAE,IAFZ,EAGE,uBAAuB,EAAE,KAAKjC,UAHhC,EAIE,cAAc,EAAE,KAJlB,EAKE,QAAQ,EAAE,KAAKd,YALjB,EAME,OAAO,EAAE,KAAKS,WANhB,EAOE,MAAM,EAAE,KAAKG,UAPf,EAQE,KAAK,EAAEjB,KART,EASE,QAAQ,EAAE,KAAKG,QATjB,EAUE,GAAG,EAAE,KAAKC,cAVZ,EAWE,KAAK,6BAAO+C,KAAP,CAXP,IADF,EAcG,KAAKb,aAAL,mBACC,uCAAM,SAAS,EAAE,iBAAGoB,4BAAOO,SAAP,CAAiB,KAAKnB,KAAtB,CAAH,EAAiCW,SAAjC,CAAjB,IACGJ,UADH,EAEGO,WAFH,CAfJ,CADF,CAuBD,C,8BAlGsCM,eAAMC,a,oDAAlC1E,mB,CACG2E,mB,GAAsB,a,CADzB3E,mB,CAGGG,Y,GAA6B,EACzCiC,QAAQ,EAAE,GAD+B,E","sourcesContent":["// TODO: Enable this rule in functional components.\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport React from 'react';\nimport ReactInputMask, { InputState, MaskOptions } from 'react-input-mask';\n\nimport { isNonNullable } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { MaskCharLowLine } from '../MaskCharLowLine';\nimport { cx } from '../../lib/theming/Emotion';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { styles } from './InternalMaskedInput.styles';\n\nexport interface InternalMaskedInputProps extends React.InputHTMLAttributes<HTMLInputElement> {\n mask: string;\n maskChar?: string | null;\n formatChars?: { [key: string]: string };\n alwaysShowMask?: boolean;\n hasLeftIcon?: boolean;\n hasRightIcon?: boolean;\n onUnexpectedInput?: (value: string) => void;\n onValueChange?: (value: string) => void;\n}\n\ninterface MaskedInputState {\n value: string;\n\n // Users can unmask value themselves. In these cases we take origin value length\n originValue: string;\n\n emptyValue: string;\n focused: boolean;\n}\n\ntype DefaultProps = Required<Pick<InternalMaskedInputProps, 'maskChar'>>;\n\nexport const MaskedInputDataTids = {\n root: 'MaskedInput__root',\n} as const;\n\n/** @deprecated Со следующей мажорной версии Input перестанет поддерживать маску.\n * todo: выпилить в 5 версии библиотеки.\n * */\nexport class InternalMaskedInput extends React.PureComponent<InternalMaskedInputProps, MaskedInputState> {\n public static __KONTUR_REACT_UI__ = 'MaskedInput';\n\n public static defaultProps: DefaultProps = {\n maskChar: '_',\n };\n\n private getProps = createPropsGetter(InternalMaskedInput.defaultProps);\n\n public input: HTMLInputElement | null = null;\n private theme!: Theme;\n private reactInputMask: ReactInputMask | null = null;\n\n public constructor(props: InternalMaskedInputProps) {\n super(props);\n\n this.state = {\n value: this.getValue(props),\n originValue: this.getValue(props),\n emptyValue: '',\n focused: false,\n };\n }\n\n public componentDidMount() {\n if (this.reactInputMask) {\n // FIXME: принудительно вызываем beforeMaskedValueChange, чтобы получить emptyValue\n this.reactInputMask.forceUpdate();\n }\n }\n\n public componentDidUpdate(prevProps: InternalMaskedInputProps) {\n if (this.props.value !== prevProps.value) {\n this.setState({\n value: this.props.value ? this.props.value.toString() : '',\n });\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const {\n maskChar,\n alwaysShowMask,\n hasLeftIcon,\n hasRightIcon,\n maxLength,\n onValueChange,\n onUnexpectedInput,\n defaultValue,\n style,\n ...inputProps\n } = this.props;\n const { emptyValue, value, originValue } = this.state;\n\n const leftHelper = style?.textAlign !== 'right' && (\n <span style={{ color: 'transparent' }}>{emptyValue.slice(0, originValue.length)}</span>\n );\n const leftClass = style?.textAlign !== 'right' && styles.inputMaskLeft();\n\n const rightHelper = emptyValue\n .slice(originValue.length)\n .split('')\n .map((_char, i) => (_char === '_' ? <MaskCharLowLine key={i} /> : _char));\n\n return (\n <span data-tid={MaskedInputDataTids.root} className={styles.container()} x-ms-format-detection=\"none\">\n <ReactInputMask\n {...inputProps}\n maskChar={null}\n beforeMaskedValueChange={this.preprocess}\n alwaysShowMask={false}\n onChange={this.handleChange}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n value={value}\n inputRef={this.refInput}\n ref={this.refMaskedInput}\n style={{ ...style }}\n />\n {this.isMaskVisible() && (\n <span className={cx(styles.inputMask(this.theme), leftClass)}>\n {leftHelper}\n {rightHelper}\n </span>\n )}\n </span>\n );\n }\n\n private getValue = (props: InternalMaskedInputProps): string => {\n if (isNonNullable(props.value)) {\n return props.value.toString();\n }\n\n if (isNonNullable(props.defaultValue)) {\n return props.defaultValue.toString();\n }\n\n return '';\n };\n\n private refInput = (input: HTMLInputElement | null) => {\n this.input = input;\n };\n\n private refMaskedInput = (reactInputMask: ReactInputMask) => {\n this.reactInputMask = reactInputMask;\n };\n\n private handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (event.target.value === this.state.value) {\n this.handleUnexpectedInput();\n } else {\n this.setState({ value: event.target.value, originValue: event.target.value });\n if (this.props.onValueChange) {\n this.props.onValueChange(event.target.value);\n }\n if (this.props.onChange) {\n this.props.onChange(event);\n }\n }\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n this.setState({ focused: true });\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n this.setState({ focused: false });\n\n if (this.props.onBlur) {\n this.props.onBlur(event);\n }\n };\n\n private preprocess = (\n newState: InputState,\n oldState: InputState,\n userInput: string,\n options: MaskOptions & Pick<InternalMaskedInputProps, 'mask'>,\n ) => {\n const visibleMaskChars = new Array(options.mask.length).fill(this.getProps().maskChar);\n\n if (newState.value !== oldState.value && userInput === null) {\n this.setState({\n value: newState.value,\n originValue: newState.value,\n });\n }\n\n options.mask.split('').forEach((char: string, index: number) => {\n if (options.permanents.includes(index)) {\n visibleMaskChars[index] = char;\n }\n\n if (newState.value[index]) {\n visibleMaskChars[index] = newState.value[index];\n }\n });\n\n const emptyValue = visibleMaskChars.join('');\n\n if (this.state.emptyValue !== emptyValue) {\n this.setState({\n emptyValue,\n });\n }\n\n return newState;\n };\n\n private isMaskVisible = () => this.props.alwaysShowMask || this.state.focused;\n\n private handleUnexpectedInput = () => {\n if (this.props.onUnexpectedInput) {\n this.props.onUnexpectedInput(this.state.value);\n }\n };\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["InternalMaskedInput.styles.ts"],"names":["styles","container","css","inputMask","t","placeholderColor","inputMaskLeft"],"mappings":"4QAAA,oD;;;AAGO,IAAMA,MAAM,GAAG,2BAAa;AACjCC,EAAAA,SADiC,uBACrB;AACV,eAAOC,YAAP;;;;;;AAMD,GARgC;AASjCC,EAAAA,SATiC,qBASvBC,CATuB,EASb;AAClB,eAAOF,YAAP;AACWE,IAAAA,CAAC,CAACC,gBADb;;;;;;AAOD,GAjBgC;AAkBjCC,EAAAA,aAlBiC,2BAkBjB;AACd,eAAOJ,YAAP;;;;;;AAMD,GAzBgC,EAAb,CAAf,C","sourcesContent":["import { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const styles = memoizeStyle({\n container() {\n return css`\n display: inline-flex;\n position: relative;\n font-size: inherit;\n flex: 100% 1 1;\n `;\n },\n inputMask(t: Theme) {\n return css`\n color: ${t.placeholderColor};\n pointer-events: none;\n font-size: inherit;\n z-index: 5;\n user-select: none;\n `;\n },\n inputMaskLeft() {\n return css`\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n `;\n },\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './InternalMaskedInput';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.__esModule = true;var _InternalMaskedInput = require("./InternalMaskedInput");Object.keys(_InternalMaskedInput).forEach(function (key) {if (key === "default" || key === "__esModule") return;if (key in exports && exports[key] === _InternalMaskedInput[key]) return;exports[key] = _InternalMaskedInput[key];});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["index.tsx"],"names":[],"mappings":"uCAAA","sourcesContent":["export * from './InternalMaskedInput';\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { InputElement, InputElementProps } from '../../components/Input';
|
|
2
|
+
export interface MaskedInputElementProps extends InputElementProps {
|
|
3
|
+
mask: string;
|
|
4
|
+
maskChar?: string | null;
|
|
5
|
+
formatChars?: {
|
|
6
|
+
[key: string]: string;
|
|
7
|
+
};
|
|
8
|
+
alwaysShowMask?: boolean;
|
|
9
|
+
onUnexpectedInput: (value: string) => void;
|
|
10
|
+
}
|
|
11
|
+
export declare const MaskedInputElementDataTids: {
|
|
12
|
+
readonly root: "MaskedInput__root";
|
|
13
|
+
};
|
|
14
|
+
export declare const MaskedInputElement: import("../../lib/forwardRefAndName").ReactUIComponentWithRef<InputElement, MaskedInputElementProps> & Record<never, never>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare const DEFAULT_MASK_CHAR = "_";
|
|
2
|
+
export declare const DEFINITIONS: {
|
|
3
|
+
'9': RegExp;
|
|
4
|
+
a: RegExp;
|
|
5
|
+
'*': RegExp;
|
|
6
|
+
};
|
|
7
|
+
export declare function getDefinitions(formatChars: Record<string, string> | undefined): Record<string, RegExp>;
|
|
8
|
+
export declare function getMaskChar(maskChar: string | null | undefined): string;
|
|
9
|
+
interface MaskedInputValues {
|
|
10
|
+
originValue: string;
|
|
11
|
+
value: string;
|
|
12
|
+
emptyValue: string;
|
|
13
|
+
}
|
|
14
|
+
export declare function getFocusPrefix(emptyValue: string, maskChar: string | null | undefined): string;
|
|
15
|
+
export declare function getCurrentValue(values: MaskedInputValues, focused: boolean, maskChar: string | null | undefined): [currentValue: string, left: string, right: string];
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";exports.__esModule = true;exports.DEFINITIONS = exports.DEFAULT_MASK_CHAR = void 0;exports.getCurrentValue = getCurrentValue;exports.getDefinitions = getDefinitions;exports.getFocusPrefix = getFocusPrefix;exports.getMaskChar = getMaskChar;var _utils = require("../../lib/utils");
|
|
2
|
+
|
|
3
|
+
var DEFAULT_MASK_CHAR = '_';exports.DEFAULT_MASK_CHAR = DEFAULT_MASK_CHAR;
|
|
4
|
+
var DEFINITIONS = { '9': /[0-9]/, a: /[A-Za-z]/, '*': /[A-Za-z0-9]/ };exports.DEFINITIONS = DEFINITIONS;
|
|
5
|
+
|
|
6
|
+
function getDefinitions(formatChars) {
|
|
7
|
+
if ((0, _utils.isNonNullable)(formatChars)) {
|
|
8
|
+
var chars = {};
|
|
9
|
+
|
|
10
|
+
for (var key in formatChars) {
|
|
11
|
+
chars[key] = new RegExp(formatChars[key]);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
return chars;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
return DEFINITIONS;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function getMaskChar(maskChar) {
|
|
21
|
+
if (maskChar === null) {
|
|
22
|
+
return '';
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
return maskChar === undefined ? DEFAULT_MASK_CHAR : maskChar;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
function getFocusPrefix(emptyValue, maskChar) {
|
|
36
|
+
return emptyValue.slice(0, emptyValue.indexOf(getMaskChar(maskChar)));
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function getCurrentValue(
|
|
40
|
+
values,
|
|
41
|
+
focused,
|
|
42
|
+
maskChar)
|
|
43
|
+
{
|
|
44
|
+
var emptyValue = values.emptyValue,value = values.value,originValue = values.originValue;
|
|
45
|
+
|
|
46
|
+
if (focused && originValue.length === 0 && emptyValue.length > 0) {
|
|
47
|
+
var _currentValue = getFocusPrefix(emptyValue, maskChar);
|
|
48
|
+
return [_currentValue, _currentValue, emptyValue.slice(_currentValue.length)];
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return [value, originValue, emptyValue.slice(originValue.length)];
|
|
52
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["MaskedInputElement.helpers.ts"],"names":["DEFAULT_MASK_CHAR","DEFINITIONS","a","getDefinitions","formatChars","chars","key","RegExp","getMaskChar","maskChar","undefined","getFocusPrefix","emptyValue","slice","indexOf","getCurrentValue","values","focused","value","originValue","length","currentValue"],"mappings":"4PAAA;;AAEO,IAAMA,iBAAiB,GAAG,GAA1B,C;AACA,IAAMC,WAAW,GAAG,EAAE,KAAK,OAAP,EAAgBC,CAAC,EAAE,UAAnB,EAA+B,KAAK,aAApC,EAApB,C;;AAEA,SAASC,cAAT,CAAwBC,WAAxB,EAAiG;AACtG,MAAI,0BAAcA,WAAd,CAAJ,EAAgC;AAC9B,QAAMC,KAA6B,GAAG,EAAtC;;AAEA,SAAK,IAAMC,GAAX,IAAkBF,WAAlB,EAA+B;AAC7BC,MAAAA,KAAK,CAACC,GAAD,CAAL,GAAa,IAAIC,MAAJ,CAAWH,WAAW,CAACE,GAAD,CAAtB,CAAb;AACD;;AAED,WAAOD,KAAP;AACD;;AAED,SAAOJ,WAAP;AACD;;AAEM,SAASO,WAAT,CAAqBC,QAArB,EAAkE;AACvE,MAAIA,QAAQ,KAAK,IAAjB,EAAuB;AACrB,WAAO,EAAP;AACD;;AAED,SAAOA,QAAQ,KAAKC,SAAb,GAAyBV,iBAAzB,GAA6CS,QAApD;AACD;;;;;;;;;AASM,SAASE,cAAT,CAAwBC,UAAxB,EAA4CH,QAA5C,EAAyF;AAC9F,SAAOG,UAAU,CAACC,KAAX,CAAiB,CAAjB,EAAoBD,UAAU,CAACE,OAAX,CAAmBN,WAAW,CAACC,QAAD,CAA9B,CAApB,CAAP;AACD;;AAEM,SAASM,eAAT;AACLC,MADK;AAELC,OAFK;AAGLR,QAHK;AAIgD;AACrD,MAAQG,UAAR,GAA2CI,MAA3C,CAAQJ,UAAR,CAAoBM,KAApB,GAA2CF,MAA3C,CAAoBE,KAApB,CAA2BC,WAA3B,GAA2CH,MAA3C,CAA2BG,WAA3B;;AAEA,MAAIF,OAAO,IAAIE,WAAW,CAACC,MAAZ,KAAuB,CAAlC,IAAuCR,UAAU,CAACQ,MAAX,GAAoB,CAA/D,EAAkE;AAChE,QAAMC,aAAY,GAAGV,cAAc,CAACC,UAAD,EAAaH,QAAb,CAAnC;AACA,WAAO,CAACY,aAAD,EAAeA,aAAf,EAA6BT,UAAU,CAACC,KAAX,CAAiBQ,aAAY,CAACD,MAA9B,CAA7B,CAAP;AACD;;AAED,SAAO,CAACF,KAAD,EAAQC,WAAR,EAAqBP,UAAU,CAACC,KAAX,CAAiBM,WAAW,CAACC,MAA7B,CAArB,CAAP;AACD","sourcesContent":["import { isNonNullable } from '../../lib/utils';\n\nexport const DEFAULT_MASK_CHAR = '_';\nexport const DEFINITIONS = { '9': /[0-9]/, a: /[A-Za-z]/, '*': /[A-Za-z0-9]/ };\n\nexport function getDefinitions(formatChars: Record<string, string> | undefined): Record<string, RegExp> {\n if (isNonNullable(formatChars)) {\n const chars: Record<string, RegExp> = {};\n\n for (const key in formatChars) {\n chars[key] = new RegExp(formatChars[key]);\n }\n\n return chars;\n }\n\n return DEFINITIONS;\n}\n\nexport function getMaskChar(maskChar: string | null | undefined): string {\n if (maskChar === null) {\n return '';\n }\n\n return maskChar === undefined ? DEFAULT_MASK_CHAR : maskChar;\n}\n\ninterface MaskedInputValues {\n // Users can unmask value themselves. In these cases we take origin value length\n originValue: string;\n value: string;\n emptyValue: string;\n}\n\nexport function getFocusPrefix(emptyValue: string, maskChar: string | null | undefined): string {\n return emptyValue.slice(0, emptyValue.indexOf(getMaskChar(maskChar)));\n}\n\nexport function getCurrentValue(\n values: MaskedInputValues,\n focused: boolean,\n maskChar: string | null | undefined,\n): [currentValue: string, left: string, right: string] {\n const { emptyValue, value, originValue } = values;\n\n if (focused && originValue.length === 0 && emptyValue.length > 0) {\n const currentValue = getFocusPrefix(emptyValue, maskChar);\n return [currentValue, currentValue, emptyValue.slice(currentValue.length)];\n }\n\n return [value, originValue, emptyValue.slice(originValue.length)];\n}\n"]}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.MaskedInputElementDataTids = exports.MaskedInputElement = void 0;var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));var _react = _interopRequireWildcard(require("react"));
|
|
2
|
+
var _reactImask = require("react-imask");
|
|
3
|
+
|
|
4
|
+
var _ThemeContext = require("../../lib/theming/ThemeContext");
|
|
5
|
+
var _MaskCharLowLine = require("../MaskCharLowLine");
|
|
6
|
+
var _Emotion = require("../../lib/theming/Emotion");
|
|
7
|
+
|
|
8
|
+
var _forwardRefAndName = require("../../lib/forwardRefAndName");
|
|
9
|
+
|
|
10
|
+
var _MaskedInputElement = require("./MaskedInputElement.styles");
|
|
11
|
+
var _MaskedInputElement2 = require("./MaskedInputElement.helpers");var _excluded = ["mask", "maskChar", "formatChars", "alwaysShowMask", "maxLength", "onUnexpectedInput", "defaultValue", "style"];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;}
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
var MaskedInputElementDataTids = {
|
|
22
|
+
root: 'MaskedInput__root' };exports.MaskedInputElementDataTids = MaskedInputElementDataTids;
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
var MaskedInputElement = (0, _forwardRefAndName.forwardRefAndName)(
|
|
26
|
+
'MaskedInputElement',
|
|
27
|
+
function MaskedInputElement(props, ref) {
|
|
28
|
+
var _useState = (0, _react.useState)(function () {
|
|
29
|
+
var value = getValue(props);
|
|
30
|
+
return { value: value, originValue: value };
|
|
31
|
+
}),values = _useState[0],setValues = _useState[1];
|
|
32
|
+
var value = values.value,originValue = values.originValue;
|
|
33
|
+
|
|
34
|
+
var _useState2 = (0, _react.useState)(''),emptyValue = _useState2[0],setEmptyValue = _useState2[1];
|
|
35
|
+
var _useState3 = (0, _react.useState)(false),focused = _useState3[0],setFocused = _useState3[1];
|
|
36
|
+
var inputRef = (0, _react.useRef)(null);
|
|
37
|
+
var rootNodeRef = _react.default.useRef(null);
|
|
38
|
+
var theme = (0, _react.useContext)(_ThemeContext.ThemeContext);
|
|
39
|
+
var expectedChangesRef = (0, _react.useRef)(false);
|
|
40
|
+
var isFirstRender = (0, _react.useRef)(true);
|
|
41
|
+
|
|
42
|
+
(0, _react.useImperativeHandle)(
|
|
43
|
+
ref,
|
|
44
|
+
function () {return {
|
|
45
|
+
input: inputRef.current,
|
|
46
|
+
getRootNode: function getRootNode() {return rootNodeRef.current;} };},
|
|
47
|
+
|
|
48
|
+
[]);
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
(0, _react.useEffect)(function () {
|
|
52
|
+
setEmptyValue(getEmptyValue(props.mask, props.maskChar, props.formatChars));
|
|
53
|
+
}, [props.mask, props.maskChar]);
|
|
54
|
+
|
|
55
|
+
(0, _react.useEffect)(function () {
|
|
56
|
+
if (isFirstRender.current) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
var value = props.value ? props.value.toString() : '';
|
|
61
|
+
setValues(function (values) {return (0, _extends2.default)({}, values, { value: value });});
|
|
62
|
+
}, [props.value]);
|
|
63
|
+
|
|
64
|
+
(0, _react.useEffect)(function () {
|
|
65
|
+
isFirstRender.current = false;
|
|
66
|
+
}, []);
|
|
67
|
+
|
|
68
|
+
var
|
|
69
|
+
mask =
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
props.mask,maskChar = props.maskChar,formatChars = props.formatChars,alwaysShowMask = props.alwaysShowMask,maxLength = props.maxLength,onUnexpectedInput = props.onUnexpectedInput,defaultValue = props.defaultValue,style = props.style,inputProps = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
|
|
79
|
+
|
|
80
|
+
var leftClass = (style == null ? void 0 : style.textAlign) !== 'right' && _MaskedInputElement.styles.inputMaskLeft();
|
|
81
|
+
var _getCurrentValue = (0, _MaskedInputElement2.getCurrentValue)({ value: value, originValue: originValue, emptyValue: emptyValue }, focused, maskChar),currentValue = _getCurrentValue[0],left = _getCurrentValue[1],right = _getCurrentValue[2];
|
|
82
|
+
|
|
83
|
+
/* В rightHelper не DEFAULT_MASK_CHAR, а специальная логика для обработки подчркивания('_').
|
|
84
|
+
* Не менять на DEFAULT_MASK_CHAR
|
|
85
|
+
*/
|
|
86
|
+
var rightHelper = right.split('').map(function (_char, i) {return _char === '_' ? /*#__PURE__*/_react.default.createElement(_MaskCharLowLine.MaskCharLowLine, { key: i }) : _char;});
|
|
87
|
+
var leftHelper = (style == null ? void 0 : style.textAlign) !== 'right' && /*#__PURE__*/_react.default.createElement("span", { style: { color: 'transparent' } }, left);
|
|
88
|
+
var isMaskVisible = alwaysShowMask || focused;
|
|
89
|
+
|
|
90
|
+
return /*#__PURE__*/(
|
|
91
|
+
_react.default.createElement("span", {
|
|
92
|
+
"data-tid": MaskedInputElementDataTids.root,
|
|
93
|
+
ref: rootNodeRef,
|
|
94
|
+
className: _MaskedInputElement.styles.container(),
|
|
95
|
+
"x-ms-format-detection": "none" }, /*#__PURE__*/
|
|
96
|
+
|
|
97
|
+
_react.default.createElement(_reactImask.IMaskInput, (0, _extends2.default)({},
|
|
98
|
+
inputProps, {
|
|
99
|
+
mask: mask,
|
|
100
|
+
definitions: (0, _MaskedInputElement2.getDefinitions)(formatChars),
|
|
101
|
+
eager: true,
|
|
102
|
+
overwrite: 'shift',
|
|
103
|
+
onAccept: handleAccept,
|
|
104
|
+
onInput: handleInput,
|
|
105
|
+
onFocus: handleFocus,
|
|
106
|
+
onBlur: handleBlur,
|
|
107
|
+
value: currentValue,
|
|
108
|
+
inputRef: inputRef,
|
|
109
|
+
style: (0, _extends2.default)({}, style) })),
|
|
110
|
+
|
|
111
|
+
isMaskVisible && /*#__PURE__*/
|
|
112
|
+
_react.default.createElement("span", { className: (0, _Emotion.cx)(_MaskedInputElement.styles.inputMask(theme), leftClass) },
|
|
113
|
+
leftHelper,
|
|
114
|
+
rightHelper)));
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
function getValue(props) {var _ref, _props$value;
|
|
121
|
+
return ((_ref = (_props$value = props.value) != null ? _props$value : props.defaultValue) != null ? _ref : '').toString();
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/** В imask вызывается только когда значение с маской меняется*/
|
|
125
|
+
function handleAccept(value) {
|
|
126
|
+
expectedChangesRef.current = true;
|
|
127
|
+
// Если разделить на 2 setState - между первым и вторым происходит рендер и иногда символы "съедаются"
|
|
128
|
+
setValues({ value: value, originValue: value });
|
|
129
|
+
|
|
130
|
+
setTimeout(function () {
|
|
131
|
+
/** При вводе с клавиатуры срабатывает handleAccept, за ним handleInput
|
|
132
|
+
* expectedChanges - нужен чтобы сообщить из handleAccept в handleInput, что значение с маской изменилось.
|
|
133
|
+
* Если маска не изменилась и сработал handleInput, вызываем handleUnexpectedInput. Ввели значение не по маске.
|
|
134
|
+
* setTimeout нужен чтобы сбросить expectedChanges, например, если изменилось значение в пропах.
|
|
135
|
+
* Маска изменится, вызовется handleAccept, но не handleInput
|
|
136
|
+
*/
|
|
137
|
+
expectedChangesRef.current = false;
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/** Отслеживаем неправильные нажатия,
|
|
142
|
+
* handleAccept не вызывается когда значение с маской не меняется, а handleInput вызывается
|
|
143
|
+
* Сначала вызывается handleAccept, затем handleInput
|
|
144
|
+
* */
|
|
145
|
+
function handleInput(e) {
|
|
146
|
+
var value = e.target.value;
|
|
147
|
+
|
|
148
|
+
if (!expectedChangesRef.current && value === originValue) {
|
|
149
|
+
handleUnexpectedInput();
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
expectedChangesRef.current = false;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
function handleFocus(event) {
|
|
156
|
+
setFocused(true);
|
|
157
|
+
|
|
158
|
+
expectedChangesRef.current = false;
|
|
159
|
+
|
|
160
|
+
if (props.onFocus) {
|
|
161
|
+
props.onFocus(event);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
function handleBlur(event) {
|
|
166
|
+
if (value === (0, _MaskedInputElement2.getFocusPrefix)(emptyValue, maskChar)) {
|
|
167
|
+
setValues({ value: '', originValue: '' });
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
setFocused(false);
|
|
171
|
+
|
|
172
|
+
if (props.onBlur) {
|
|
173
|
+
props.onBlur(event);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
function handleUnexpectedInput() {
|
|
178
|
+
if (props.onUnexpectedInput) {
|
|
179
|
+
props.onUnexpectedInput(value);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
function getEmptyValue(
|
|
184
|
+
mask,
|
|
185
|
+
maskChar,
|
|
186
|
+
formatChars)
|
|
187
|
+
{
|
|
188
|
+
var maskPattern = _reactImask.IMask.createMask({
|
|
189
|
+
mask: mask,
|
|
190
|
+
definitions: (0, _MaskedInputElement2.getDefinitions)(formatChars),
|
|
191
|
+
lazy: false,
|
|
192
|
+
placeholderChar: (0, _MaskedInputElement2.getMaskChar)(maskChar) });
|
|
193
|
+
|
|
194
|
+
return maskPattern.appendTail('').inserted;
|
|
195
|
+
}
|
|
196
|
+
});exports.MaskedInputElement = MaskedInputElement;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["MaskedInputElement.tsx"],"names":["MaskedInputElementDataTids","root","MaskedInputElement","props","ref","value","getValue","originValue","values","setValues","emptyValue","setEmptyValue","focused","setFocused","inputRef","rootNodeRef","React","useRef","theme","ThemeContext","expectedChangesRef","isFirstRender","input","current","getRootNode","getEmptyValue","mask","maskChar","formatChars","toString","alwaysShowMask","maxLength","onUnexpectedInput","defaultValue","style","inputProps","leftClass","textAlign","styles","inputMaskLeft","currentValue","left","right","rightHelper","split","map","_char","i","leftHelper","color","isMaskVisible","container","handleAccept","handleInput","handleFocus","handleBlur","inputMask","setTimeout","e","target","handleUnexpectedInput","event","onFocus","onBlur","maskPattern","IMask","createMask","definitions","lazy","placeholderChar","appendTail","inserted"],"mappings":"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","sourcesContent":["import React, { ForwardedRef, useContext, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport { IMaskInput, IMask } from 'react-imask';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { MaskCharLowLine } from '../MaskCharLowLine';\nimport { cx } from '../../lib/theming/Emotion';\nimport { InputElement, InputElementProps } from '../../components/Input';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\n\nimport { styles } from './MaskedInputElement.styles';\nimport { getCurrentValue, getDefinitions, getFocusPrefix, getMaskChar } from './MaskedInputElement.helpers';\n\nexport interface MaskedInputElementProps extends InputElementProps {\n mask: string;\n maskChar?: string | null;\n formatChars?: { [key: string]: string };\n alwaysShowMask?: boolean;\n onUnexpectedInput: (value: string) => void;\n}\n\nexport const MaskedInputElementDataTids = {\n root: 'MaskedInput__root',\n} as const;\n\nexport const MaskedInputElement = forwardRefAndName(\n 'MaskedInputElement',\n function MaskedInputElement(props: MaskedInputElementProps, ref: ForwardedRef<InputElement>) {\n const [values, setValues] = useState<{ value: string; originValue: string }>(() => {\n const value = getValue(props);\n return { value, originValue: value };\n });\n const { value, originValue } = values;\n\n const [emptyValue, setEmptyValue] = useState('');\n const [focused, setFocused] = useState(false);\n const inputRef = useRef<HTMLInputElement | null>(null);\n const rootNodeRef = React.useRef<HTMLDivElement>(null);\n const theme = useContext(ThemeContext);\n const expectedChangesRef = useRef(false);\n const isFirstRender = useRef(true);\n\n useImperativeHandle(\n ref,\n () => ({\n input: inputRef.current,\n getRootNode: () => rootNodeRef.current,\n }),\n [],\n );\n\n useEffect(() => {\n setEmptyValue(getEmptyValue(props.mask, props.maskChar, props.formatChars));\n }, [props.mask, props.maskChar]);\n\n useEffect(() => {\n if (isFirstRender.current) {\n return;\n }\n\n const value = props.value ? props.value.toString() : '';\n setValues((values) => ({ ...values, value }));\n }, [props.value]);\n\n useEffect(() => {\n isFirstRender.current = false;\n }, []);\n\n const {\n mask,\n maskChar,\n formatChars,\n alwaysShowMask,\n maxLength,\n onUnexpectedInput,\n defaultValue,\n style,\n ...inputProps\n } = props;\n\n const leftClass = style?.textAlign !== 'right' && styles.inputMaskLeft();\n const [currentValue, left, right] = getCurrentValue({ value, originValue, emptyValue }, focused, maskChar);\n\n /* В rightHelper не DEFAULT_MASK_CHAR, а специальная логика для обработки подчркивания('_').\n * Не менять на DEFAULT_MASK_CHAR\n */\n const rightHelper = right.split('').map((_char, i) => (_char === '_' ? <MaskCharLowLine key={i} /> : _char));\n const leftHelper = style?.textAlign !== 'right' && <span style={{ color: 'transparent' }}>{left}</span>;\n const isMaskVisible = alwaysShowMask || focused;\n\n return (\n <span\n data-tid={MaskedInputElementDataTids.root}\n ref={rootNodeRef}\n className={styles.container()}\n x-ms-format-detection=\"none\"\n >\n <IMaskInput\n {...inputProps}\n mask={mask}\n definitions={getDefinitions(formatChars)}\n eager\n overwrite={'shift'}\n onAccept={handleAccept}\n onInput={handleInput}\n onFocus={handleFocus}\n onBlur={handleBlur}\n value={currentValue}\n inputRef={inputRef}\n style={{ ...style }}\n />\n {isMaskVisible && (\n <span className={cx(styles.inputMask(theme), leftClass)}>\n {leftHelper}\n {rightHelper}\n </span>\n )}\n </span>\n );\n\n function getValue(props: MaskedInputElementProps): string {\n return (props.value ?? props.defaultValue ?? '').toString();\n }\n\n /** В imask вызывается только когда значение с маской меняется*/\n function handleAccept(value: string) {\n expectedChangesRef.current = true;\n // Если разделить на 2 setState - между первым и вторым происходит рендер и иногда символы \"съедаются\"\n setValues({ value, originValue: value });\n\n setTimeout(() => {\n /** При вводе с клавиатуры срабатывает handleAccept, за ним handleInput\n * expectedChanges - нужен чтобы сообщить из handleAccept в handleInput, что значение с маской изменилось.\n * Если маска не изменилась и сработал handleInput, вызываем handleUnexpectedInput. Ввели значение не по маске.\n * setTimeout нужен чтобы сбросить expectedChanges, например, если изменилось значение в пропах.\n * Маска изменится, вызовется handleAccept, но не handleInput\n */\n expectedChangesRef.current = false;\n });\n }\n\n /** Отслеживаем неправильные нажатия,\n * handleAccept не вызывается когда значение с маской не меняется, а handleInput вызывается\n * Сначала вызывается handleAccept, затем handleInput\n * */\n function handleInput(e: React.ChangeEvent<HTMLInputElement>) {\n const value = e.target.value;\n\n if (!expectedChangesRef.current && value === originValue) {\n handleUnexpectedInput();\n }\n\n expectedChangesRef.current = false;\n }\n\n function handleFocus(event: React.FocusEvent<HTMLInputElement>) {\n setFocused(true);\n\n expectedChangesRef.current = false;\n\n if (props.onFocus) {\n props.onFocus(event);\n }\n }\n\n function handleBlur(event: React.FocusEvent<HTMLInputElement>) {\n if (value === getFocusPrefix(emptyValue, maskChar)) {\n setValues({ value: '', originValue: '' });\n }\n\n setFocused(false);\n\n if (props.onBlur) {\n props.onBlur(event);\n }\n }\n\n function handleUnexpectedInput() {\n if (props.onUnexpectedInput) {\n props.onUnexpectedInput(value);\n }\n }\n\n function getEmptyValue(\n mask: MaskedInputElementProps['mask'],\n maskChar: MaskedInputElementProps['maskChar'],\n formatChars: MaskedInputElementProps['formatChars'],\n ): string {\n const maskPattern = IMask.createMask({\n mask,\n definitions: getDefinitions(formatChars),\n lazy: false,\n placeholderChar: getMaskChar(maskChar),\n });\n return maskPattern.appendTail('').inserted;\n }\n },\n);\n"]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.styles = void 0;var _taggedTemplateLiteralLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteralLoose"));var _Emotion = require("../../lib/theming/Emotion");var _templateObject, _templateObject2, _templateObject3;
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
var styles = (0, _Emotion.memoizeStyle)({
|
|
5
|
+
container: function container() {
|
|
6
|
+
return (0, _Emotion.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteralLoose2.default)(["\n display: inline-flex;\n position: relative;\n font-size: inherit;\n flex: 100% 1 1;\n "])));
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
},
|
|
13
|
+
inputMask: function inputMask(t) {
|
|
14
|
+
return (0, _Emotion.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteralLoose2.default)(["\n color: ", ";\n pointer-events: none;\n font-size: inherit;\n z-index: 5;\n user-select: none;\n "])),
|
|
15
|
+
t.placeholderColor);
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
},
|
|
22
|
+
inputMaskLeft: function inputMaskLeft() {
|
|
23
|
+
return (0, _Emotion.css)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteralLoose2.default)(["\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n "])));
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
} });exports.styles = styles;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["MaskedInputElement.styles.ts"],"names":["styles","container","css","inputMask","t","placeholderColor","inputMaskLeft"],"mappings":"4QAAA,oD;;;AAGO,IAAMA,MAAM,GAAG,2BAAa;AACjCC,EAAAA,SADiC,uBACrB;AACV,eAAOC,YAAP;;;;;;AAMD,GARgC;AASjCC,EAAAA,SATiC,qBASvBC,CATuB,EASb;AAClB,eAAOF,YAAP;AACWE,IAAAA,CAAC,CAACC,gBADb;;;;;;AAOD,GAjBgC;AAkBjCC,EAAAA,aAlBiC,2BAkBjB;AACd,eAAOJ,YAAP;;;;;;AAMD,GAzBgC,EAAb,CAAf,C","sourcesContent":["import { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const styles = memoizeStyle({\n container() {\n return css`\n display: inline-flex;\n position: relative;\n font-size: inherit;\n flex: 100% 1 1;\n `;\n },\n inputMask(t: Theme) {\n return css`\n color: ${t.placeholderColor};\n pointer-events: none;\n font-size: inherit;\n z-index: 5;\n user-select: none;\n `;\n },\n inputMaskLeft() {\n return css`\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n `;\n },\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './MaskedInputElement';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.__esModule = true;var _MaskedInputElement = require("./MaskedInputElement");Object.keys(_MaskedInputElement).forEach(function (key) {if (key === "default" || key === "__esModule") return;if (key in exports && exports[key] === _MaskedInputElement[key]) return;exports[key] = _MaskedInputElement[key];});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":[],"mappings":"uCAAA","sourcesContent":["export * from './MaskedInputElement';\n"]}
|
package/cjs/lib/utils.d.ts
CHANGED
|
@@ -81,3 +81,10 @@ export declare const extractDataProps: <T>(props: T) => {
|
|
|
81
81
|
export declare const startsWithOneOf: (searchKeys: string[], inputString: string) => boolean;
|
|
82
82
|
export declare const isInputLike: (child: React.ReactNode) => child is React.ReactElement<InputProps, string | React.JSXElementConstructor<any>>;
|
|
83
83
|
export declare const isKonturIcon: (icon: React.ReactElement) => boolean;
|
|
84
|
+
/**
|
|
85
|
+
* Allows to get text of all nested children as a string
|
|
86
|
+
*
|
|
87
|
+
* @param children React's children
|
|
88
|
+
* @returns Nested child text or an empty string
|
|
89
|
+
*/
|
|
90
|
+
export declare function getChildrenText(children: React.ReactNode): string;
|