@alfalab/core-components-bank-card 5.8.21 → 6.0.0-snapshot-6a9d3fc

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.
Files changed (104) hide show
  1. package/Component.d.ts +4 -7
  2. package/Component.js +11 -12
  3. package/Component.js.map +1 -0
  4. package/cssm/Component.d.ts +4 -7
  5. package/cssm/Component.js +5 -4
  6. package/cssm/Component.js.map +1 -0
  7. package/cssm/enums.d.ts +1 -2
  8. package/cssm/enums.js +1 -0
  9. package/cssm/enums.js.map +1 -0
  10. package/cssm/helpers/getDefaultInputLabel.d.ts +2 -3
  11. package/cssm/helpers/getDefaultInputLabel.js +1 -0
  12. package/cssm/helpers/getDefaultInputLabel.js.map +1 -0
  13. package/cssm/index.d.ts +1 -1
  14. package/cssm/index.js +1 -0
  15. package/cssm/index.js.map +1 -0
  16. package/cssm/index.module.css +10 -37
  17. package/cssm/types.d.ts +1 -2
  18. package/cssm/types.js +1 -0
  19. package/cssm/types.js.map +1 -0
  20. package/cssm/utils.d.ts +1 -2
  21. package/cssm/utils.js +1 -0
  22. package/cssm/utils.js.map +1 -0
  23. package/enums.d.ts +1 -2
  24. package/enums.js +1 -0
  25. package/enums.js.map +1 -0
  26. package/esm/Component.d.ts +4 -7
  27. package/esm/Component.js +2 -3
  28. package/esm/Component.js.map +1 -0
  29. package/esm/enums.d.ts +1 -2
  30. package/esm/enums.js +1 -0
  31. package/esm/enums.js.map +1 -0
  32. package/esm/helpers/getDefaultInputLabel.d.ts +2 -3
  33. package/esm/helpers/getDefaultInputLabel.js +1 -0
  34. package/esm/helpers/getDefaultInputLabel.js.map +1 -0
  35. package/esm/index.css +28 -56
  36. package/esm/index.d.ts +1 -1
  37. package/esm/index.js +1 -0
  38. package/esm/index.js.map +1 -0
  39. package/esm/index.module.css.js +6 -0
  40. package/esm/index.module.css.js.map +1 -0
  41. package/esm/types.d.ts +1 -2
  42. package/esm/types.js +1 -0
  43. package/esm/types.js.map +1 -0
  44. package/esm/utils.d.ts +1 -2
  45. package/esm/utils.js +1 -0
  46. package/esm/utils.js.map +1 -0
  47. package/helpers/getDefaultInputLabel.d.ts +2 -3
  48. package/helpers/getDefaultInputLabel.js +1 -0
  49. package/helpers/getDefaultInputLabel.js.map +1 -0
  50. package/index.css +28 -56
  51. package/index.d.ts +1 -1
  52. package/index.js +1 -0
  53. package/index.js.map +1 -0
  54. package/index.module.css.js +8 -0
  55. package/index.module.css.js.map +1 -0
  56. package/modern/Component.d.ts +4 -7
  57. package/modern/Component.js +2 -3
  58. package/modern/Component.js.map +1 -0
  59. package/modern/enums.d.ts +1 -2
  60. package/modern/enums.js +1 -0
  61. package/modern/enums.js.map +1 -0
  62. package/modern/helpers/getDefaultInputLabel.d.ts +2 -3
  63. package/modern/helpers/getDefaultInputLabel.js +1 -0
  64. package/modern/helpers/getDefaultInputLabel.js.map +1 -0
  65. package/modern/index.css +28 -56
  66. package/modern/index.d.ts +1 -1
  67. package/modern/index.js +1 -0
  68. package/modern/index.js.map +1 -0
  69. package/modern/index.module.css.js +6 -0
  70. package/modern/index.module.css.js.map +1 -0
  71. package/modern/types.d.ts +1 -2
  72. package/modern/types.js +1 -0
  73. package/modern/types.js.map +1 -0
  74. package/modern/utils.d.ts +1 -2
  75. package/modern/utils.js +1 -0
  76. package/modern/utils.js.map +1 -0
  77. package/moderncssm/Component.d.ts +4 -7
  78. package/moderncssm/Component.js +1 -0
  79. package/moderncssm/Component.js.map +1 -0
  80. package/moderncssm/enums.d.ts +1 -2
  81. package/moderncssm/enums.js +1 -0
  82. package/moderncssm/enums.js.map +1 -0
  83. package/moderncssm/helpers/getDefaultInputLabel.d.ts +2 -3
  84. package/moderncssm/helpers/getDefaultInputLabel.js +1 -0
  85. package/moderncssm/helpers/getDefaultInputLabel.js.map +1 -0
  86. package/moderncssm/index.d.ts +1 -1
  87. package/moderncssm/index.js +1 -0
  88. package/moderncssm/index.js.map +1 -0
  89. package/moderncssm/index.module.css +1 -12
  90. package/moderncssm/types.d.ts +1 -2
  91. package/moderncssm/types.js +1 -0
  92. package/moderncssm/types.js.map +1 -0
  93. package/moderncssm/utils.d.ts +1 -2
  94. package/moderncssm/utils.js +1 -0
  95. package/moderncssm/utils.js.map +1 -0
  96. package/package.json +4 -4
  97. package/types.d.ts +1 -2
  98. package/types.js +1 -0
  99. package/types.js.map +1 -0
  100. package/utils.d.ts +1 -2
  101. package/utils.js +1 -0
  102. package/utils.js.map +1 -0
  103. package/cssm/docs/preview.module.css +0 -3
  104. package/moderncssm/docs/preview.module.css +0 -3
package/Component.d.ts CHANGED
@@ -1,8 +1,6 @@
1
- /// <reference types="react" />
2
- import React from 'react';
3
- import { ChangeEvent, MouseEvent, ReactNode } from "react";
4
- import { MaskType } from "./types";
5
- type BankCardProps = {
1
+ import React, { ChangeEvent, MouseEvent, ReactNode } from 'react';
2
+ import { MaskType } from './types';
3
+ export declare type BankCardProps = {
6
4
  /**
7
5
  * Дополнительный класс
8
6
  */
@@ -43,5 +41,4 @@ type BankCardProps = {
43
41
  */
44
42
  maskType?: MaskType;
45
43
  };
46
- declare const BankCard: React.ForwardRefExoticComponent<BankCardProps & React.RefAttributes<HTMLInputElement>>;
47
- export { BankCardProps, BankCard };
44
+ export declare const BankCard: React.ForwardRefExoticComponent<BankCardProps & React.RefAttributes<HTMLInputElement>>;
package/Component.js CHANGED
@@ -10,18 +10,16 @@ var AlfaBankSignMIcon = require('@alfalab/icons-logo/AlfaBankSignMIcon');
10
10
  var MastercardLIcon = require('@alfalab/icons-logotype/MastercardLIcon');
11
11
  var MirXxlIcon = require('@alfalab/icons-logotype/MirXxlIcon');
12
12
  var VisaXxlIcon = require('@alfalab/icons-logotype/VisaXxlIcon');
13
- var helpers_getDefaultInputLabel = require('./helpers/getDefaultInputLabel.js');
13
+ var getDefaultInputLabel = require('./helpers/getDefaultInputLabel.js');
14
14
  var enums = require('./enums.js');
15
15
  var utils = require('./utils.js');
16
+ var index_module = require('./index.module.css.js');
16
17
 
17
18
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
18
19
 
19
20
  var React__default = /*#__PURE__*/_interopDefaultCompat(React);
20
21
  var cn__default = /*#__PURE__*/_interopDefaultCompat(cn);
21
22
 
22
- var styles = {"component":"bank-card__component_rieqn","aspectRatioContainer":"bank-card__aspectRatioContainer_rieqn","content":"bank-card__content_rieqn","label":"bank-card__label_rieqn","focused":"bank-card__focused_rieqn","filled":"bank-card__filled_rieqn","input":"bank-card__input_rieqn","bankLogo":"bank-card__bankLogo_rieqn","brandLogo":"bank-card__brandLogo_rieqn","usePhoto":"bank-card__usePhoto_rieqn"};
23
- require('./index.css')
24
-
25
23
  // prettier-ignore
26
24
  var cardMask = [/\d/, /\d/, /\d/, /\d/, ' ', /\d/, /\d/, /\d/, /\d/, ' ', /\d/, /\d/, /\d/, /\d/, ' ', /\d/, /\d/, /\d/, /\d/];
27
25
  // prettier-ignore
@@ -42,7 +40,7 @@ var getBrandIcon = function (value) {
42
40
  return null;
43
41
  };
44
42
  var BankCard = React.forwardRef(function (_a, ref) {
45
- var _b = _a.bankLogo, bankLogo = _b === void 0 ? React__default.default.createElement(AlfaBankSignMIcon.AlfaBankSignMIcon, { width: 30, height: 40 }) : _b, _c = _a.backgroundColor, backgroundColor = _c === void 0 ? '#EF3124' : _c, value = _a.value, className = _a.className, onUsePhoto = _a.onUsePhoto, onChange = _a.onChange, dataTestId = _a.dataTestId, _d = _a.maskType, maskType = _d === void 0 ? enums.MaskTypeEnum.Default : _d, _e = _a.inputLabel, inputLabel = _e === void 0 ? helpers_getDefaultInputLabel.getDefaultInputLabel(maskType) : _e;
43
+ var _b = _a.bankLogo, bankLogo = _b === void 0 ? React__default.default.createElement(AlfaBankSignMIcon.AlfaBankSignMIcon, { width: 30, height: 40 }) : _b, _c = _a.backgroundColor, backgroundColor = _c === void 0 ? '#EF3124' : _c, value = _a.value, className = _a.className, onUsePhoto = _a.onUsePhoto, onChange = _a.onChange, dataTestId = _a.dataTestId, _d = _a.maskType, maskType = _d === void 0 ? enums.MaskTypeEnum.Default : _d, _e = _a.inputLabel, inputLabel = _e === void 0 ? getDefaultInputLabel.getDefaultInputLabel(maskType) : _e;
46
44
  var uncontrolled = value === undefined;
47
45
  var _f = React.useState(getBrandIcon(value)), brandIcon = _f[0], setBrandIcon = _f[1];
48
46
  var getMask = React.useCallback(function (newValue) {
@@ -64,18 +62,19 @@ var BankCard = React.forwardRef(function (_a, ref) {
64
62
  onChange(event, payload);
65
63
  }
66
64
  }, [onChange, uncontrolled]);
67
- var renderRightAddons = React.useCallback(function () { return (React__default.default.createElement("button", { type: 'button', className: styles.usePhoto, onClick: onUsePhoto },
65
+ var renderRightAddons = React.useCallback(function () { return (React__default.default.createElement("button", { type: 'button', className: index_module.usePhoto, onClick: onUsePhoto },
68
66
  React__default.default.createElement(CameraMIcon.CameraMIcon, null))); }, [onUsePhoto]);
69
67
  React.useEffect(function () {
70
68
  setBrandIcon(getBrandIcon(value));
71
69
  }, [value]);
72
- return (React__default.default.createElement("div", { className: cn__default.default(styles.component, className) },
73
- React__default.default.createElement("div", { className: styles.aspectRatioContainer },
74
- React__default.default.createElement("div", { className: styles.content, style: { backgroundColor: backgroundColor } },
75
- React__default.default.createElement("div", { className: styles.bankLogo }, bankLogo),
76
- React__default.default.createElement(coreComponentsMaskedInput.MaskedInput, { ref: ref, value: value, mask: getMask, block: true, label: inputLabel, size: 'm', rightAddons: renderRightAddons(), inputClassName: styles.input, labelClassName: styles.label, filledClassName: styles.filled, focusedClassName: styles.focused, onChange: handleInputChange, dataTestId: dataTestId, inputMode: 'numeric', pattern: '[0-9]*', breakpoint: 1 }),
77
- brandIcon && React__default.default.createElement("div", { className: styles.brandLogo }, brandIcon)))));
70
+ return (React__default.default.createElement("div", { className: cn__default.default(index_module.component, className) },
71
+ React__default.default.createElement("div", { className: index_module.aspectRatioContainer },
72
+ React__default.default.createElement("div", { className: index_module.content, style: { backgroundColor: backgroundColor } },
73
+ React__default.default.createElement("div", { className: index_module.bankLogo }, bankLogo),
74
+ React__default.default.createElement(coreComponentsMaskedInput.MaskedInput, { ref: ref, value: value, mask: getMask, block: true, label: inputLabel, size: 'm', rightAddons: renderRightAddons(), inputClassName: index_module.input, labelClassName: index_module.label, filledClassName: index_module.filled, focusedClassName: index_module.focused, onChange: handleInputChange, dataTestId: dataTestId, inputMode: 'numeric', pattern: '[0-9]*', breakpoint: 1 }),
75
+ brandIcon && React__default.default.createElement("div", { className: index_module.brandLogo }, brandIcon)))));
78
76
  });
79
77
  BankCard.displayName = 'BankCard';
80
78
 
81
79
  exports.BankCard = BankCard;
80
+ //# sourceMappingURL=Component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Component.js","sources":["src/Component.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n forwardRef,\n MouseEvent,\n ReactNode,\n useCallback,\n useEffect,\n useState,\n} from 'react';\nimport cn from 'classnames';\n\nimport { MaskedInput } from '@alfalab/core-components-masked-input';\nimport { CameraMIcon } from '@alfalab/icons-glyph/CameraMIcon';\nimport { AlfaBankSignMIcon } from '@alfalab/icons-logo/AlfaBankSignMIcon';\nimport { MastercardLIcon } from '@alfalab/icons-logotype/MastercardLIcon';\nimport { MirXxlIcon } from '@alfalab/icons-logotype/MirXxlIcon';\nimport { VisaXxlIcon } from '@alfalab/icons-logotype/VisaXxlIcon';\n\nimport { getDefaultInputLabel } from './helpers/getDefaultInputLabel';\nimport { MaskTypeEnum } from './enums';\nimport { MaskType } from './types';\nimport { validateCardNumber } from './utils';\n\nimport styles from './index.module.css';\n\nexport type BankCardProps = {\n /**\n * Дополнительный класс\n */\n className?: string;\n\n /**\n * Цвет фона карты\n */\n backgroundColor?: string;\n\n /**\n * Иконка логотипа банка (размер L)\n */\n bankLogo?: ReactNode;\n\n /**\n * Лэйбл поля ввода\n */\n inputLabel?: string;\n\n /**\n * Значение поля ввода\n */\n value?: string;\n\n /**\n * Обработчик ввода\n */\n onChange?: (event: ChangeEvent<HTMLInputElement>, payload: { value: string }) => void;\n\n /**\n * Обработчик вызова камеры\n */\n onUsePhoto?: (event: MouseEvent<HTMLButtonElement>) => void;\n\n /**\n * Идентификатор для систем автоматизированного тестирования\n */\n dataTestId?: string;\n\n /**\n * Тип вводимой маски. Позволяет устанавливать необходимый тип номера (номер карты или номер счёта)\n * Если параметр не передавать - работает с обоими типами номеров\n */\n maskType?: MaskType;\n};\n\n// prettier-ignore\nconst cardMask = [/\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/];\n// prettier-ignore\nconst accountNumberMask = [/\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/];\n\nconst getBrandIcon = (value = '') => {\n // Показываем логотип только после ввода всех цифр карты\n if (value.replace(/\\s/g, '').length === 16 && validateCardNumber(value)) {\n if (value.startsWith('2')) return <MirXxlIcon />;\n if (value.startsWith('4')) return <VisaXxlIcon />;\n if (value.startsWith('5')) return <MastercardLIcon />;\n if (value.startsWith('6')) return <MastercardLIcon />;\n }\n\n return null;\n};\n\nexport const BankCard = forwardRef<HTMLInputElement, BankCardProps>(\n (\n {\n bankLogo = <AlfaBankSignMIcon width={30} height={40} />,\n backgroundColor = '#EF3124',\n value,\n className,\n onUsePhoto,\n onChange,\n dataTestId,\n maskType = MaskTypeEnum.Default,\n inputLabel = getDefaultInputLabel(maskType),\n },\n ref,\n ) => {\n const uncontrolled = value === undefined;\n\n const [brandIcon, setBrandIcon] = useState<ReactNode>(getBrandIcon(value));\n\n const getMask = useCallback(\n (newValue: string) => {\n switch (maskType) {\n case MaskTypeEnum.Card:\n return cardMask;\n case MaskTypeEnum.AccountNumber:\n return accountNumberMask;\n case MaskTypeEnum.Default:\n default:\n return newValue.length <= cardMask.length ? cardMask : accountNumberMask;\n }\n },\n [maskType],\n );\n\n const handleInputChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>, payload: { value: string }) => {\n if (uncontrolled) {\n setBrandIcon(getBrandIcon(event.target.value));\n }\n\n if (onChange) {\n onChange(event, payload);\n }\n },\n [onChange, uncontrolled],\n );\n\n const renderRightAddons = useCallback(\n () => (\n <button type='button' className={styles.usePhoto} onClick={onUsePhoto}>\n <CameraMIcon />\n </button>\n ),\n [onUsePhoto],\n );\n\n useEffect(() => {\n setBrandIcon(getBrandIcon(value));\n }, [value]);\n\n return (\n <div className={cn(styles.component, className)}>\n <div className={styles.aspectRatioContainer}>\n <div className={styles.content} style={{ backgroundColor }}>\n <div className={styles.bankLogo}>{bankLogo}</div>\n\n <MaskedInput\n ref={ref}\n value={value}\n mask={getMask}\n block={true}\n label={inputLabel}\n size='m'\n rightAddons={renderRightAddons()}\n inputClassName={styles.input}\n labelClassName={styles.label}\n filledClassName={styles.filled}\n focusedClassName={styles.focused}\n onChange={handleInputChange}\n dataTestId={dataTestId}\n inputMode='numeric'\n pattern='[0-9]*'\n breakpoint={1}\n />\n\n {brandIcon && <div className={styles.brandLogo}>{brandIcon}</div>}\n </div>\n </div>\n </div>\n );\n },\n);\n\nBankCard.displayName = 'BankCard';\n"],"names":["validateCardNumber","React","MirXxlIcon","VisaXxlIcon","MastercardLIcon","forwardRef","AlfaBankSignMIcon","MaskTypeEnum","getDefaultInputLabel","useState","useCallback","styles","CameraMIcon","useEffect","cn","MaskedInput"],"mappings":"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"}
@@ -1,8 +1,6 @@
1
- /// <reference types="react" />
2
- import React from 'react';
3
- import { ChangeEvent, MouseEvent, ReactNode } from "react";
4
- import { MaskType } from "./types";
5
- type BankCardProps = {
1
+ import React, { ChangeEvent, MouseEvent, ReactNode } from 'react';
2
+ import { MaskType } from './types';
3
+ export declare type BankCardProps = {
6
4
  /**
7
5
  * Дополнительный класс
8
6
  */
@@ -43,5 +41,4 @@ type BankCardProps = {
43
41
  */
44
42
  maskType?: MaskType;
45
43
  };
46
- declare const BankCard: React.ForwardRefExoticComponent<BankCardProps & React.RefAttributes<HTMLInputElement>>;
47
- export { BankCardProps, BankCard };
44
+ export declare const BankCard: React.ForwardRefExoticComponent<BankCardProps & React.RefAttributes<HTMLInputElement>>;
package/cssm/Component.js CHANGED
@@ -4,13 +4,13 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var React = require('react');
6
6
  var cn = require('classnames');
7
- var coreComponentsMaskedInput = require('@alfalab/core-components-masked-input/cssm');
7
+ var cssm = require('@alfalab/core-components-masked-input/cssm');
8
8
  var CameraMIcon = require('@alfalab/icons-glyph/CameraMIcon');
9
9
  var AlfaBankSignMIcon = require('@alfalab/icons-logo/AlfaBankSignMIcon');
10
10
  var MastercardLIcon = require('@alfalab/icons-logotype/MastercardLIcon');
11
11
  var MirXxlIcon = require('@alfalab/icons-logotype/MirXxlIcon');
12
12
  var VisaXxlIcon = require('@alfalab/icons-logotype/VisaXxlIcon');
13
- var helpers_getDefaultInputLabel = require('./helpers/getDefaultInputLabel.js');
13
+ var getDefaultInputLabel = require('./helpers/getDefaultInputLabel.js');
14
14
  var enums = require('./enums.js');
15
15
  var utils = require('./utils.js');
16
16
  var styles = require('./index.module.css');
@@ -41,7 +41,7 @@ var getBrandIcon = function (value) {
41
41
  return null;
42
42
  };
43
43
  var BankCard = React.forwardRef(function (_a, ref) {
44
- var _b = _a.bankLogo, bankLogo = _b === void 0 ? React__default.default.createElement(AlfaBankSignMIcon.AlfaBankSignMIcon, { width: 30, height: 40 }) : _b, _c = _a.backgroundColor, backgroundColor = _c === void 0 ? '#EF3124' : _c, value = _a.value, className = _a.className, onUsePhoto = _a.onUsePhoto, onChange = _a.onChange, dataTestId = _a.dataTestId, _d = _a.maskType, maskType = _d === void 0 ? enums.MaskTypeEnum.Default : _d, _e = _a.inputLabel, inputLabel = _e === void 0 ? helpers_getDefaultInputLabel.getDefaultInputLabel(maskType) : _e;
44
+ var _b = _a.bankLogo, bankLogo = _b === void 0 ? React__default.default.createElement(AlfaBankSignMIcon.AlfaBankSignMIcon, { width: 30, height: 40 }) : _b, _c = _a.backgroundColor, backgroundColor = _c === void 0 ? '#EF3124' : _c, value = _a.value, className = _a.className, onUsePhoto = _a.onUsePhoto, onChange = _a.onChange, dataTestId = _a.dataTestId, _d = _a.maskType, maskType = _d === void 0 ? enums.MaskTypeEnum.Default : _d, _e = _a.inputLabel, inputLabel = _e === void 0 ? getDefaultInputLabel.getDefaultInputLabel(maskType) : _e;
45
45
  var uncontrolled = value === undefined;
46
46
  var _f = React.useState(getBrandIcon(value)), brandIcon = _f[0], setBrandIcon = _f[1];
47
47
  var getMask = React.useCallback(function (newValue) {
@@ -72,9 +72,10 @@ var BankCard = React.forwardRef(function (_a, ref) {
72
72
  React__default.default.createElement("div", { className: styles__default.default.aspectRatioContainer },
73
73
  React__default.default.createElement("div", { className: styles__default.default.content, style: { backgroundColor: backgroundColor } },
74
74
  React__default.default.createElement("div", { className: styles__default.default.bankLogo }, bankLogo),
75
- React__default.default.createElement(coreComponentsMaskedInput.MaskedInput, { ref: ref, value: value, mask: getMask, block: true, label: inputLabel, size: 'm', rightAddons: renderRightAddons(), inputClassName: styles__default.default.input, labelClassName: styles__default.default.label, filledClassName: styles__default.default.filled, focusedClassName: styles__default.default.focused, onChange: handleInputChange, dataTestId: dataTestId, inputMode: 'numeric', pattern: '[0-9]*', breakpoint: 1 }),
75
+ React__default.default.createElement(cssm.MaskedInput, { ref: ref, value: value, mask: getMask, block: true, label: inputLabel, size: 'm', rightAddons: renderRightAddons(), inputClassName: styles__default.default.input, labelClassName: styles__default.default.label, filledClassName: styles__default.default.filled, focusedClassName: styles__default.default.focused, onChange: handleInputChange, dataTestId: dataTestId, inputMode: 'numeric', pattern: '[0-9]*', breakpoint: 1 }),
76
76
  brandIcon && React__default.default.createElement("div", { className: styles__default.default.brandLogo }, brandIcon)))));
77
77
  });
78
78
  BankCard.displayName = 'BankCard';
79
79
 
80
80
  exports.BankCard = BankCard;
81
+ //# sourceMappingURL=Component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Component.js","sources":["../src/Component.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n forwardRef,\n MouseEvent,\n ReactNode,\n useCallback,\n useEffect,\n useState,\n} from 'react';\nimport cn from 'classnames';\n\nimport { MaskedInput } from '@alfalab/core-components-masked-input';\nimport { CameraMIcon } from '@alfalab/icons-glyph/CameraMIcon';\nimport { AlfaBankSignMIcon } from '@alfalab/icons-logo/AlfaBankSignMIcon';\nimport { MastercardLIcon } from '@alfalab/icons-logotype/MastercardLIcon';\nimport { MirXxlIcon } from '@alfalab/icons-logotype/MirXxlIcon';\nimport { VisaXxlIcon } from '@alfalab/icons-logotype/VisaXxlIcon';\n\nimport { getDefaultInputLabel } from './helpers/getDefaultInputLabel';\nimport { MaskTypeEnum } from './enums';\nimport { MaskType } from './types';\nimport { validateCardNumber } from './utils';\n\nimport styles from './index.module.css';\n\nexport type BankCardProps = {\n /**\n * Дополнительный класс\n */\n className?: string;\n\n /**\n * Цвет фона карты\n */\n backgroundColor?: string;\n\n /**\n * Иконка логотипа банка (размер L)\n */\n bankLogo?: ReactNode;\n\n /**\n * Лэйбл поля ввода\n */\n inputLabel?: string;\n\n /**\n * Значение поля ввода\n */\n value?: string;\n\n /**\n * Обработчик ввода\n */\n onChange?: (event: ChangeEvent<HTMLInputElement>, payload: { value: string }) => void;\n\n /**\n * Обработчик вызова камеры\n */\n onUsePhoto?: (event: MouseEvent<HTMLButtonElement>) => void;\n\n /**\n * Идентификатор для систем автоматизированного тестирования\n */\n dataTestId?: string;\n\n /**\n * Тип вводимой маски. Позволяет устанавливать необходимый тип номера (номер карты или номер счёта)\n * Если параметр не передавать - работает с обоими типами номеров\n */\n maskType?: MaskType;\n};\n\n// prettier-ignore\nconst cardMask = [/\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/];\n// prettier-ignore\nconst accountNumberMask = [/\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/];\n\nconst getBrandIcon = (value = '') => {\n // Показываем логотип только после ввода всех цифр карты\n if (value.replace(/\\s/g, '').length === 16 && validateCardNumber(value)) {\n if (value.startsWith('2')) return <MirXxlIcon />;\n if (value.startsWith('4')) return <VisaXxlIcon />;\n if (value.startsWith('5')) return <MastercardLIcon />;\n if (value.startsWith('6')) return <MastercardLIcon />;\n }\n\n return null;\n};\n\nexport const BankCard = forwardRef<HTMLInputElement, BankCardProps>(\n (\n {\n bankLogo = <AlfaBankSignMIcon width={30} height={40} />,\n backgroundColor = '#EF3124',\n value,\n className,\n onUsePhoto,\n onChange,\n dataTestId,\n maskType = MaskTypeEnum.Default,\n inputLabel = getDefaultInputLabel(maskType),\n },\n ref,\n ) => {\n const uncontrolled = value === undefined;\n\n const [brandIcon, setBrandIcon] = useState<ReactNode>(getBrandIcon(value));\n\n const getMask = useCallback(\n (newValue: string) => {\n switch (maskType) {\n case MaskTypeEnum.Card:\n return cardMask;\n case MaskTypeEnum.AccountNumber:\n return accountNumberMask;\n case MaskTypeEnum.Default:\n default:\n return newValue.length <= cardMask.length ? cardMask : accountNumberMask;\n }\n },\n [maskType],\n );\n\n const handleInputChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>, payload: { value: string }) => {\n if (uncontrolled) {\n setBrandIcon(getBrandIcon(event.target.value));\n }\n\n if (onChange) {\n onChange(event, payload);\n }\n },\n [onChange, uncontrolled],\n );\n\n const renderRightAddons = useCallback(\n () => (\n <button type='button' className={styles.usePhoto} onClick={onUsePhoto}>\n <CameraMIcon />\n </button>\n ),\n [onUsePhoto],\n );\n\n useEffect(() => {\n setBrandIcon(getBrandIcon(value));\n }, [value]);\n\n return (\n <div className={cn(styles.component, className)}>\n <div className={styles.aspectRatioContainer}>\n <div className={styles.content} style={{ backgroundColor }}>\n <div className={styles.bankLogo}>{bankLogo}</div>\n\n <MaskedInput\n ref={ref}\n value={value}\n mask={getMask}\n block={true}\n label={inputLabel}\n size='m'\n rightAddons={renderRightAddons()}\n inputClassName={styles.input}\n labelClassName={styles.label}\n filledClassName={styles.filled}\n focusedClassName={styles.focused}\n onChange={handleInputChange}\n dataTestId={dataTestId}\n inputMode='numeric'\n pattern='[0-9]*'\n breakpoint={1}\n />\n\n {brandIcon && <div className={styles.brandLogo}>{brandIcon}</div>}\n </div>\n </div>\n </div>\n );\n },\n);\n\nBankCard.displayName = 'BankCard';\n"],"names":["validateCardNumber","React","MirXxlIcon","VisaXxlIcon","MastercardLIcon","forwardRef","AlfaBankSignMIcon","MaskTypeEnum","getDefaultInputLabel","useState","useCallback","styles","CameraMIcon","useEffect","cn","MaskedInput"],"mappings":"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"}
package/cssm/enums.d.ts CHANGED
@@ -1,6 +1,5 @@
1
- declare enum MaskTypeEnum {
1
+ export declare enum MaskTypeEnum {
2
2
  Card = "card",
3
3
  AccountNumber = "account-number",
4
4
  Default = "default"
5
5
  }
6
- export { MaskTypeEnum };
package/cssm/enums.js CHANGED
@@ -8,3 +8,4 @@ exports.MaskTypeEnum = void 0;
8
8
  MaskTypeEnum["AccountNumber"] = "account-number";
9
9
  MaskTypeEnum["Default"] = "default";
10
10
  })(exports.MaskTypeEnum || (exports.MaskTypeEnum = {}));
11
+ //# sourceMappingURL=enums.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enums.js","sources":["../src/enums.ts"],"sourcesContent":["export enum MaskTypeEnum {\n Card = 'card',\n AccountNumber = 'account-number',\n Default = 'default',\n}\n"],"names":["MaskTypeEnum"],"mappings":";;;;AAAYA;AAAZ,CAAA,UAAY,YAAY,EAAA;AACpB,IAAA,YAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,YAAA,CAAA,eAAA,CAAA,GAAA,gBAAgC;AAChC,IAAA,YAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACvB,CAAC,EAJWA,oBAAY,KAAZA,oBAAY,GAIvB,EAAA,CAAA,CAAA;;"}
@@ -1,3 +1,2 @@
1
- import { MaskType } from "../types";
2
- declare const getDefaultInputLabel: (maskType: MaskType) => "Номер карты" | "Номер счёта" | "Номер карты или счёта";
3
- export { getDefaultInputLabel };
1
+ import { MaskType } from '../types';
2
+ export declare const getDefaultInputLabel: (maskType: MaskType) => "Номер карты" | "Номер счёта" | "Номер карты или счёта";
@@ -17,3 +17,4 @@ var getDefaultInputLabel = function (maskType) {
17
17
  };
18
18
 
19
19
  exports.getDefaultInputLabel = getDefaultInputLabel;
20
+ //# sourceMappingURL=getDefaultInputLabel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getDefaultInputLabel.js","sources":["../../src/helpers/getDefaultInputLabel.tsx"],"sourcesContent":["import { MaskTypeEnum } from '../enums';\nimport { MaskType } from '../types';\n\nexport const getDefaultInputLabel = (maskType: MaskType) => {\n switch (maskType) {\n case MaskTypeEnum.Card:\n return 'Номер карты';\n case MaskTypeEnum.AccountNumber:\n return 'Номер счёта';\n case MaskTypeEnum.Default:\n default:\n return 'Номер карты или счёта';\n }\n};\n"],"names":["MaskTypeEnum"],"mappings":";;;;;;AAGO,IAAM,oBAAoB,GAAG,UAAC,QAAkB,EAAA;AACnD,IAAA,QAAQ,QAAQ;QACZ,KAAKA,kBAAY,CAAC,IAAI;AAClB,YAAA,OAAO,aAAa;QACxB,KAAKA,kBAAY,CAAC,aAAa;AAC3B,YAAA,OAAO,aAAa;QACxB,KAAKA,kBAAY,CAAC,OAAO;AACzB,QAAA;AACI,YAAA,OAAO,uBAAuB;AACrC;AACL;;;;"}
package/cssm/index.d.ts CHANGED
@@ -1 +1 @@
1
- export * from "./Component";
1
+ export * from './Component';
package/cssm/index.js CHANGED
@@ -7,3 +7,4 @@ var Component = require('./Component.js');
7
7
 
8
8
 
9
9
  exports.BankCard = Component.BankCard;
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
@@ -1,31 +1,14 @@
1
- :root { /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
2
- } /* deprecated */ :root {
1
+ :root {
3
2
  --color-light-neutral-translucent-1300: rgba(3, 3, 6, 0.88);
4
- --color-light-text-secondary: rgba(4, 4, 19, 0.55); /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
5
- } :root { /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
6
- } :root { /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
3
+ --color-light-text-secondary: rgba(4, 4, 19, 0.55);
7
4
  } :root {
8
-
9
- /* Hard */
10
-
11
- /* Up */
12
-
13
- /* Hard up */
14
- } :root { /* deprecated */ /* deprecated */ /* deprecated */
15
- --border-radius-l: 12px; /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
16
-
17
- /* новые значения, используйте их */
5
+ --border-radius-l: 12px;
18
6
  --border-radius-12: var(--border-radius-l);
19
- } :root { /* deprecated */
20
- --gap-2xs: 4px; /* deprecated */ /* deprecated */
21
- --gap-s: 12px; /* deprecated */ /* deprecated */
22
- --gap-m: 16px; /* deprecated */
23
- --gap-l: 20px; /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
24
-
25
- /* новые значения, используйте их */
26
-
27
- /* no-unit может приводить к проблемам в calc (#1559) */
28
- /* stylelint-disable-next-line length-zero-no-unit */
7
+ } :root {
8
+ --gap-2xs: 4px;
9
+ --gap-s: 12px;
10
+ --gap-m: 16px;
11
+ --gap-l: 20px;
29
12
  --gap-0: 0px;
30
13
  --gap-4: var(--gap-2xs);
31
14
  --gap-12: var(--gap-s);
@@ -34,18 +17,12 @@
34
17
  } :root {
35
18
  --font-family-styrene: 'Styrene UI', system-ui, -apple-system, 'Segoe UI', Roboto,
36
19
  'Helvetica Neue', Helvetica, sans-serif;
37
- } /* @deprecated */ /* @deprecated */ /* @deprecated */ /* @deprecated */ /* @deprecated */ :root {
38
- } /* сбрасывает синюю подсветку при нажатии */ .component {
39
- /* TODO: как это будет собираться и работать в webView */
20
+ } .component {
40
21
  --form-control-border-radius: 0;
41
22
  --form-control-border-bottom: 1px solid var(--color-light-neutral-translucent-700);
42
23
  --form-control-bg-color: transparent;
43
-
44
- /* focus */
45
24
  --form-control-focus-border-bottom: 1px solid var(--color-light-neutral-translucent-1300);
46
25
  --form-control-focus-shadow: transparent;
47
-
48
- /* hover */
49
26
  --form-control-hover-bg-color: transparent;
50
27
  --form-control-focus-bg-color: transparent;
51
28
  --form-control-font-family: var(--font-family-styrene);
@@ -55,7 +32,6 @@
55
32
 
56
33
  font-family: var(--font-family-styrene);
57
34
  } .aspectRatioContainer {
58
- /* Эталонный размер 343x216 */
59
35
  padding-bottom: 63%;
60
36
  } .content {
61
37
  position: absolute;
@@ -97,8 +73,6 @@
97
73
 
98
74
  color: var(--color-light-neutral-translucent-1300);
99
75
  caret-color: var(--color-light-neutral-translucent-1300);
100
-
101
- /* TODO: обсудить с дизайнером, почему инпут не соответствует дизайн-системе, либо уменьшить каскад в form-control */
102
76
  padding-left: var(--gap-0) !important;
103
77
  padding-bottom: var(--gap-4) !important
104
78
  } @media (max-width: 360px) { .input {
@@ -128,13 +102,12 @@
128
102
  border: 0;
129
103
  box-shadow: none;
130
104
  -webkit-user-select: none;
105
+ -moz-user-select: none;
131
106
  user-select: none;
132
107
  cursor: pointer;
133
108
  outline: none;
134
109
  margin-bottom: var(--gap-4);
135
110
  align-self: flex-end;
136
-
137
- /* В макете иконка прилегает к правому краю поля, а по дизайн-системе там должен быть отступ */
138
111
  margin-right: calc(var(--gap-12) * -1)
139
112
  } .usePhoto svg {
140
113
  fill: var(--color-light-neutral-translucent-1300);
package/cssm/types.d.ts CHANGED
@@ -1,2 +1 @@
1
- type MaskType = 'default' | 'card' | 'account-number';
2
- export { MaskType };
1
+ export declare type MaskType = 'default' | 'card' | 'account-number';
package/cssm/types.js CHANGED
@@ -1,2 +1,3 @@
1
1
  'use strict';
2
2
 
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
package/cssm/utils.d.ts CHANGED
@@ -4,5 +4,4 @@
4
4
  * @param cardNumber - номер карты
5
5
  *
6
6
  */
7
- declare function validateCardNumber(cardNumber: string): boolean;
8
- export { validateCardNumber };
7
+ export declare function validateCardNumber(cardNumber: string): boolean;
package/cssm/utils.js CHANGED
@@ -27,3 +27,4 @@ function validateCardNumber(cardNumber) {
27
27
  }
28
28
 
29
29
  exports.validateCardNumber = validateCardNumber;
30
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sources":["../src/utils.ts"],"sourcesContent":["/**\n * Проверяет номер карты по алгоритму Луна\n *\n * @param cardNumber - номер карты\n *\n */\nexport function validateCardNumber(cardNumber: string) {\n const digits = cardNumber.replace(/\\s+/g, '');\n let sum = 0;\n\n for (let i = 0; i < digits.length; i++) {\n let cardNum = parseInt(digits[i], 10);\n\n if (cardNum > 9) return false;\n\n if ((digits.length - i) % 2 === 0) {\n cardNum *= 2;\n\n if (cardNum > 9) {\n cardNum -= 9;\n }\n }\n\n sum += cardNum;\n }\n\n return sum % 10 === 0;\n}\n"],"names":[],"mappings":";;;;AAAA;;;;;AAKG;AACG,SAAU,kBAAkB,CAAC,UAAkB,EAAA;IACjD,IAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAC7C,IAAI,GAAG,GAAG,CAAC;AAEX,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACpC,IAAI,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAErC,IAAI,OAAO,GAAG,CAAC;AAAE,YAAA,OAAO,KAAK;QAE7B,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC/B,OAAO,IAAI,CAAC;YAEZ,IAAI,OAAO,GAAG,CAAC,EAAE;gBACb,OAAO,IAAI,CAAC;AACf;AACJ;QAED,GAAG,IAAI,OAAO;AACjB;AAED,IAAA,OAAO,GAAG,GAAG,EAAE,KAAK,CAAC;AACzB;;;;"}
package/enums.d.ts CHANGED
@@ -1,6 +1,5 @@
1
- declare enum MaskTypeEnum {
1
+ export declare enum MaskTypeEnum {
2
2
  Card = "card",
3
3
  AccountNumber = "account-number",
4
4
  Default = "default"
5
5
  }
6
- export { MaskTypeEnum };
package/enums.js CHANGED
@@ -8,3 +8,4 @@ exports.MaskTypeEnum = void 0;
8
8
  MaskTypeEnum["AccountNumber"] = "account-number";
9
9
  MaskTypeEnum["Default"] = "default";
10
10
  })(exports.MaskTypeEnum || (exports.MaskTypeEnum = {}));
11
+ //# sourceMappingURL=enums.js.map
package/enums.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enums.js","sources":["src/enums.ts"],"sourcesContent":["export enum MaskTypeEnum {\n Card = 'card',\n AccountNumber = 'account-number',\n Default = 'default',\n}\n"],"names":["MaskTypeEnum"],"mappings":";;;;AAAYA;AAAZ,CAAA,UAAY,YAAY,EAAA;AACpB,IAAA,YAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,YAAA,CAAA,eAAA,CAAA,GAAA,gBAAgC;AAChC,IAAA,YAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACvB,CAAC,EAJWA,oBAAY,KAAZA,oBAAY,GAIvB,EAAA,CAAA,CAAA;;"}
@@ -1,8 +1,6 @@
1
- /// <reference types="react" />
2
- import React from 'react';
3
- import { ChangeEvent, MouseEvent, ReactNode } from "react";
4
- import { MaskType } from "./types";
5
- type BankCardProps = {
1
+ import React, { ChangeEvent, MouseEvent, ReactNode } from 'react';
2
+ import { MaskType } from './types';
3
+ export declare type BankCardProps = {
6
4
  /**
7
5
  * Дополнительный класс
8
6
  */
@@ -43,5 +41,4 @@ type BankCardProps = {
43
41
  */
44
42
  maskType?: MaskType;
45
43
  };
46
- declare const BankCard: React.ForwardRefExoticComponent<BankCardProps & React.RefAttributes<HTMLInputElement>>;
47
- export { BankCardProps, BankCard };
44
+ export declare const BankCard: React.ForwardRefExoticComponent<BankCardProps & React.RefAttributes<HTMLInputElement>>;
package/esm/Component.js CHANGED
@@ -9,9 +9,7 @@ import { VisaXxlIcon } from '@alfalab/icons-logotype/VisaXxlIcon';
9
9
  import { getDefaultInputLabel } from './helpers/getDefaultInputLabel.js';
10
10
  import { MaskTypeEnum } from './enums.js';
11
11
  import { validateCardNumber } from './utils.js';
12
-
13
- var styles = {"component":"bank-card__component_rieqn","aspectRatioContainer":"bank-card__aspectRatioContainer_rieqn","content":"bank-card__content_rieqn","label":"bank-card__label_rieqn","focused":"bank-card__focused_rieqn","filled":"bank-card__filled_rieqn","input":"bank-card__input_rieqn","bankLogo":"bank-card__bankLogo_rieqn","brandLogo":"bank-card__brandLogo_rieqn","usePhoto":"bank-card__usePhoto_rieqn"};
14
- require('./index.css')
12
+ import styles from './index.module.css.js';
15
13
 
16
14
  // prettier-ignore
17
15
  var cardMask = [/\d/, /\d/, /\d/, /\d/, ' ', /\d/, /\d/, /\d/, /\d/, ' ', /\d/, /\d/, /\d/, /\d/, ' ', /\d/, /\d/, /\d/, /\d/];
@@ -70,3 +68,4 @@ var BankCard = forwardRef(function (_a, ref) {
70
68
  BankCard.displayName = 'BankCard';
71
69
 
72
70
  export { BankCard };
71
+ //# sourceMappingURL=Component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Component.js","sources":["../src/Component.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n forwardRef,\n MouseEvent,\n ReactNode,\n useCallback,\n useEffect,\n useState,\n} from 'react';\nimport cn from 'classnames';\n\nimport { MaskedInput } from '@alfalab/core-components-masked-input';\nimport { CameraMIcon } from '@alfalab/icons-glyph/CameraMIcon';\nimport { AlfaBankSignMIcon } from '@alfalab/icons-logo/AlfaBankSignMIcon';\nimport { MastercardLIcon } from '@alfalab/icons-logotype/MastercardLIcon';\nimport { MirXxlIcon } from '@alfalab/icons-logotype/MirXxlIcon';\nimport { VisaXxlIcon } from '@alfalab/icons-logotype/VisaXxlIcon';\n\nimport { getDefaultInputLabel } from './helpers/getDefaultInputLabel';\nimport { MaskTypeEnum } from './enums';\nimport { MaskType } from './types';\nimport { validateCardNumber } from './utils';\n\nimport styles from './index.module.css';\n\nexport type BankCardProps = {\n /**\n * Дополнительный класс\n */\n className?: string;\n\n /**\n * Цвет фона карты\n */\n backgroundColor?: string;\n\n /**\n * Иконка логотипа банка (размер L)\n */\n bankLogo?: ReactNode;\n\n /**\n * Лэйбл поля ввода\n */\n inputLabel?: string;\n\n /**\n * Значение поля ввода\n */\n value?: string;\n\n /**\n * Обработчик ввода\n */\n onChange?: (event: ChangeEvent<HTMLInputElement>, payload: { value: string }) => void;\n\n /**\n * Обработчик вызова камеры\n */\n onUsePhoto?: (event: MouseEvent<HTMLButtonElement>) => void;\n\n /**\n * Идентификатор для систем автоматизированного тестирования\n */\n dataTestId?: string;\n\n /**\n * Тип вводимой маски. Позволяет устанавливать необходимый тип номера (номер карты или номер счёта)\n * Если параметр не передавать - работает с обоими типами номеров\n */\n maskType?: MaskType;\n};\n\n// prettier-ignore\nconst cardMask = [/\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/];\n// prettier-ignore\nconst accountNumberMask = [/\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/];\n\nconst getBrandIcon = (value = '') => {\n // Показываем логотип только после ввода всех цифр карты\n if (value.replace(/\\s/g, '').length === 16 && validateCardNumber(value)) {\n if (value.startsWith('2')) return <MirXxlIcon />;\n if (value.startsWith('4')) return <VisaXxlIcon />;\n if (value.startsWith('5')) return <MastercardLIcon />;\n if (value.startsWith('6')) return <MastercardLIcon />;\n }\n\n return null;\n};\n\nexport const BankCard = forwardRef<HTMLInputElement, BankCardProps>(\n (\n {\n bankLogo = <AlfaBankSignMIcon width={30} height={40} />,\n backgroundColor = '#EF3124',\n value,\n className,\n onUsePhoto,\n onChange,\n dataTestId,\n maskType = MaskTypeEnum.Default,\n inputLabel = getDefaultInputLabel(maskType),\n },\n ref,\n ) => {\n const uncontrolled = value === undefined;\n\n const [brandIcon, setBrandIcon] = useState<ReactNode>(getBrandIcon(value));\n\n const getMask = useCallback(\n (newValue: string) => {\n switch (maskType) {\n case MaskTypeEnum.Card:\n return cardMask;\n case MaskTypeEnum.AccountNumber:\n return accountNumberMask;\n case MaskTypeEnum.Default:\n default:\n return newValue.length <= cardMask.length ? cardMask : accountNumberMask;\n }\n },\n [maskType],\n );\n\n const handleInputChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>, payload: { value: string }) => {\n if (uncontrolled) {\n setBrandIcon(getBrandIcon(event.target.value));\n }\n\n if (onChange) {\n onChange(event, payload);\n }\n },\n [onChange, uncontrolled],\n );\n\n const renderRightAddons = useCallback(\n () => (\n <button type='button' className={styles.usePhoto} onClick={onUsePhoto}>\n <CameraMIcon />\n </button>\n ),\n [onUsePhoto],\n );\n\n useEffect(() => {\n setBrandIcon(getBrandIcon(value));\n }, [value]);\n\n return (\n <div className={cn(styles.component, className)}>\n <div className={styles.aspectRatioContainer}>\n <div className={styles.content} style={{ backgroundColor }}>\n <div className={styles.bankLogo}>{bankLogo}</div>\n\n <MaskedInput\n ref={ref}\n value={value}\n mask={getMask}\n block={true}\n label={inputLabel}\n size='m'\n rightAddons={renderRightAddons()}\n inputClassName={styles.input}\n labelClassName={styles.label}\n filledClassName={styles.filled}\n focusedClassName={styles.focused}\n onChange={handleInputChange}\n dataTestId={dataTestId}\n inputMode='numeric'\n pattern='[0-9]*'\n breakpoint={1}\n />\n\n {brandIcon && <div className={styles.brandLogo}>{brandIcon}</div>}\n </div>\n </div>\n </div>\n );\n },\n);\n\nBankCard.displayName = 'BankCard';\n"],"names":[],"mappings":"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"}
package/esm/enums.d.ts CHANGED
@@ -1,6 +1,5 @@
1
- declare enum MaskTypeEnum {
1
+ export declare enum MaskTypeEnum {
2
2
  Card = "card",
3
3
  AccountNumber = "account-number",
4
4
  Default = "default"
5
5
  }
6
- export { MaskTypeEnum };
package/esm/enums.js CHANGED
@@ -6,3 +6,4 @@ var MaskTypeEnum;
6
6
  })(MaskTypeEnum || (MaskTypeEnum = {}));
7
7
 
8
8
  export { MaskTypeEnum };
9
+ //# sourceMappingURL=enums.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enums.js","sources":["../src/enums.ts"],"sourcesContent":["export enum MaskTypeEnum {\n Card = 'card',\n AccountNumber = 'account-number',\n Default = 'default',\n}\n"],"names":[],"mappings":"IAAY;AAAZ,CAAA,UAAY,YAAY,EAAA;AACpB,IAAA,YAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,YAAA,CAAA,eAAA,CAAA,GAAA,gBAAgC;AAChC,IAAA,YAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACvB,CAAC,EAJW,YAAY,KAAZ,YAAY,GAIvB,EAAA,CAAA,CAAA;;;;"}
@@ -1,3 +1,2 @@
1
- import { MaskType } from "../types";
2
- declare const getDefaultInputLabel: (maskType: MaskType) => "Номер карты" | "Номер счёта" | "Номер карты или счёта";
3
- export { getDefaultInputLabel };
1
+ import { MaskType } from '../types';
2
+ export declare const getDefaultInputLabel: (maskType: MaskType) => "Номер карты" | "Номер счёта" | "Номер карты или счёта";
@@ -13,3 +13,4 @@ var getDefaultInputLabel = function (maskType) {
13
13
  };
14
14
 
15
15
  export { getDefaultInputLabel };
16
+ //# sourceMappingURL=getDefaultInputLabel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getDefaultInputLabel.js","sources":["../../src/helpers/getDefaultInputLabel.tsx"],"sourcesContent":["import { MaskTypeEnum } from '../enums';\nimport { MaskType } from '../types';\n\nexport const getDefaultInputLabel = (maskType: MaskType) => {\n switch (maskType) {\n case MaskTypeEnum.Card:\n return 'Номер карты';\n case MaskTypeEnum.AccountNumber:\n return 'Номер счёта';\n case MaskTypeEnum.Default:\n default:\n return 'Номер карты или счёта';\n }\n};\n"],"names":[],"mappings":";;AAGO,IAAM,oBAAoB,GAAG,UAAC,QAAkB,EAAA;AACnD,IAAA,QAAQ,QAAQ;QACZ,KAAK,YAAY,CAAC,IAAI;AAClB,YAAA,OAAO,aAAa;QACxB,KAAK,YAAY,CAAC,aAAa;AAC3B,YAAA,OAAO,aAAa;QACxB,KAAK,YAAY,CAAC,OAAO;AACzB,QAAA;AACI,YAAA,OAAO,uBAAuB;AACrC;AACL;;;;"}