@salutejs/plasma-new-hope 0.146.0-canary.1436.10882554984.0 → 0.147.0-canary.1418.10899581491.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (136) hide show
  1. package/cjs/components/Mask/Mask.js +209 -0
  2. package/cjs/components/Mask/Mask.js.map +1 -0
  3. package/cjs/components/Mask/utils/constants.js +33 -0
  4. package/cjs/components/Mask/utils/constants.js.map +1 -0
  5. package/cjs/components/Mask/utils/createMask.js +53 -0
  6. package/cjs/components/Mask/utils/createMask.js.map +1 -0
  7. package/cjs/components/Mask/utils/mask.js +244 -0
  8. package/cjs/components/Mask/utils/mask.js.map +1 -0
  9. package/cjs/components/Mask/utils/parseMask.js +38 -0
  10. package/cjs/components/Mask/utils/parseMask.js.map +1 -0
  11. package/cjs/components/Mask/utils/processInput.js +54 -0
  12. package/cjs/components/Mask/utils/processInput.js.map +1 -0
  13. package/cjs/components/Mask/utils/processMask.js +101 -0
  14. package/cjs/components/Mask/utils/processMask.js.map +1 -0
  15. package/cjs/components/Mask/utils/selection.js +50 -0
  16. package/cjs/components/Mask/utils/selection.js.map +1 -0
  17. package/cjs/components/TextField/TextField.js +3 -1
  18. package/cjs/components/TextField/TextField.js.map +1 -1
  19. package/cjs/index.js +2 -0
  20. package/cjs/index.js.map +1 -1
  21. package/emotion/cjs/components/Mask/Mask.js +220 -0
  22. package/emotion/cjs/components/Mask/Mask.template-doc.mdx +126 -0
  23. package/emotion/cjs/components/Mask/Mask.types.js +5 -0
  24. package/emotion/cjs/components/Mask/index.js +12 -0
  25. package/emotion/cjs/components/Mask/utils/constants.js +29 -0
  26. package/emotion/cjs/components/Mask/utils/createMask.js +50 -0
  27. package/emotion/cjs/components/Mask/utils/mask.js +247 -0
  28. package/emotion/cjs/components/Mask/utils/parseMask.js +36 -0
  29. package/emotion/cjs/components/Mask/utils/processInput.js +52 -0
  30. package/emotion/cjs/components/Mask/utils/processMask.js +99 -0
  31. package/emotion/cjs/components/Mask/utils/selection.js +48 -0
  32. package/emotion/cjs/components/TextField/TextField.js +4 -2
  33. package/emotion/cjs/examples/plasma_b2c/components/Mask/Mask.js +9 -0
  34. package/emotion/cjs/examples/plasma_b2c/components/Mask/Mask.stories.tsx +127 -0
  35. package/emotion/cjs/examples/plasma_web/components/Mask/Mask.js +9 -0
  36. package/emotion/cjs/examples/plasma_web/components/Mask/Mask.stories.tsx +125 -0
  37. package/emotion/cjs/index.js +11 -0
  38. package/emotion/es/components/Mask/Mask.js +212 -0
  39. package/emotion/es/components/Mask/Mask.template-doc.mdx +126 -0
  40. package/emotion/es/components/Mask/Mask.types.js +1 -0
  41. package/emotion/es/components/Mask/index.js +1 -0
  42. package/emotion/es/components/Mask/utils/constants.js +23 -0
  43. package/emotion/es/components/Mask/utils/createMask.js +44 -0
  44. package/emotion/es/components/Mask/utils/mask.js +243 -0
  45. package/emotion/es/components/Mask/utils/parseMask.js +30 -0
  46. package/emotion/es/components/Mask/utils/processInput.js +46 -0
  47. package/emotion/es/components/Mask/utils/processMask.js +93 -0
  48. package/emotion/es/components/Mask/utils/selection.js +42 -0
  49. package/emotion/es/components/TextField/TextField.js +4 -2
  50. package/emotion/es/examples/plasma_b2c/components/Mask/Mask.js +3 -0
  51. package/emotion/es/examples/plasma_b2c/components/Mask/Mask.stories.tsx +127 -0
  52. package/emotion/es/examples/plasma_web/components/Mask/Mask.js +3 -0
  53. package/emotion/es/examples/plasma_web/components/Mask/Mask.stories.tsx +125 -0
  54. package/emotion/es/index.js +2 -1
  55. package/es/components/Mask/Mask.js +205 -0
  56. package/es/components/Mask/Mask.js.map +1 -0
  57. package/es/components/Mask/utils/constants.js +26 -0
  58. package/es/components/Mask/utils/constants.js.map +1 -0
  59. package/es/components/Mask/utils/createMask.js +48 -0
  60. package/es/components/Mask/utils/createMask.js.map +1 -0
  61. package/es/components/Mask/utils/mask.js +240 -0
  62. package/es/components/Mask/utils/mask.js.map +1 -0
  63. package/es/components/Mask/utils/parseMask.js +34 -0
  64. package/es/components/Mask/utils/parseMask.js.map +1 -0
  65. package/es/components/Mask/utils/processInput.js +50 -0
  66. package/es/components/Mask/utils/processInput.js.map +1 -0
  67. package/es/components/Mask/utils/processMask.js +97 -0
  68. package/es/components/Mask/utils/processMask.js.map +1 -0
  69. package/es/components/Mask/utils/selection.js +46 -0
  70. package/es/components/Mask/utils/selection.js.map +1 -0
  71. package/es/components/TextField/TextField.js +3 -1
  72. package/es/components/TextField/TextField.js.map +1 -1
  73. package/es/index.js +1 -0
  74. package/es/index.js.map +1 -1
  75. package/package.json +2 -2
  76. package/styled-components/cjs/components/Mask/Mask.js +220 -0
  77. package/styled-components/cjs/components/Mask/Mask.template-doc.mdx +126 -0
  78. package/styled-components/cjs/components/Mask/Mask.types.js +5 -0
  79. package/styled-components/cjs/components/Mask/index.js +12 -0
  80. package/styled-components/cjs/components/Mask/utils/constants.js +29 -0
  81. package/styled-components/cjs/components/Mask/utils/createMask.js +50 -0
  82. package/styled-components/cjs/components/Mask/utils/mask.js +247 -0
  83. package/styled-components/cjs/components/Mask/utils/parseMask.js +36 -0
  84. package/styled-components/cjs/components/Mask/utils/processInput.js +52 -0
  85. package/styled-components/cjs/components/Mask/utils/processMask.js +99 -0
  86. package/styled-components/cjs/components/Mask/utils/selection.js +48 -0
  87. package/styled-components/cjs/components/TextField/TextField.js +3 -1
  88. package/styled-components/cjs/examples/plasma_b2c/components/Mask/Mask.js +9 -0
  89. package/styled-components/cjs/examples/plasma_b2c/components/Mask/Mask.stories.tsx +127 -0
  90. package/styled-components/cjs/examples/plasma_web/components/Mask/Mask.js +9 -0
  91. package/styled-components/cjs/examples/plasma_web/components/Mask/Mask.stories.tsx +125 -0
  92. package/styled-components/cjs/index.js +11 -0
  93. package/styled-components/es/components/Mask/Mask.js +212 -0
  94. package/styled-components/es/components/Mask/Mask.template-doc.mdx +126 -0
  95. package/styled-components/es/components/Mask/Mask.types.js +1 -0
  96. package/styled-components/es/components/Mask/index.js +1 -0
  97. package/styled-components/es/components/Mask/utils/constants.js +23 -0
  98. package/styled-components/es/components/Mask/utils/createMask.js +44 -0
  99. package/styled-components/es/components/Mask/utils/mask.js +243 -0
  100. package/styled-components/es/components/Mask/utils/parseMask.js +30 -0
  101. package/styled-components/es/components/Mask/utils/processInput.js +46 -0
  102. package/styled-components/es/components/Mask/utils/processMask.js +93 -0
  103. package/styled-components/es/components/Mask/utils/selection.js +42 -0
  104. package/styled-components/es/components/TextField/TextField.js +3 -1
  105. package/styled-components/es/examples/plasma_b2c/components/Mask/Mask.js +3 -0
  106. package/styled-components/es/examples/plasma_b2c/components/Mask/Mask.stories.tsx +127 -0
  107. package/styled-components/es/examples/plasma_web/components/Mask/Mask.js +3 -0
  108. package/styled-components/es/examples/plasma_web/components/Mask/Mask.stories.tsx +125 -0
  109. package/styled-components/es/index.js +2 -1
  110. package/types/components/Mask/Mask.d.ts +5 -0
  111. package/types/components/Mask/Mask.d.ts.map +1 -0
  112. package/types/components/Mask/Mask.types.d.ts +84 -0
  113. package/types/components/Mask/Mask.types.d.ts.map +1 -0
  114. package/types/components/Mask/index.d.ts +2 -0
  115. package/types/components/Mask/index.d.ts.map +1 -0
  116. package/types/components/Mask/utils/constants.d.ts +15 -0
  117. package/types/components/Mask/utils/constants.d.ts.map +1 -0
  118. package/types/components/Mask/utils/createMask.d.ts +19 -0
  119. package/types/components/Mask/utils/createMask.d.ts.map +1 -0
  120. package/types/components/Mask/utils/mask.d.ts +48 -0
  121. package/types/components/Mask/utils/mask.d.ts.map +1 -0
  122. package/types/components/Mask/utils/parseMask.d.ts +3 -0
  123. package/types/components/Mask/utils/parseMask.d.ts.map +1 -0
  124. package/types/components/Mask/utils/processInput.d.ts +13 -0
  125. package/types/components/Mask/utils/processInput.d.ts.map +1 -0
  126. package/types/components/Mask/utils/processMask.d.ts +7 -0
  127. package/types/components/Mask/utils/processMask.d.ts.map +1 -0
  128. package/types/components/Mask/utils/selection.d.ts +10 -0
  129. package/types/components/Mask/utils/selection.d.ts.map +1 -0
  130. package/types/components/TextField/TextField.d.ts.map +1 -1
  131. package/types/examples/plasma_b2c/components/Mask/Mask.d.ts +191 -0
  132. package/types/examples/plasma_b2c/components/Mask/Mask.d.ts.map +1 -0
  133. package/types/examples/plasma_web/components/Mask/Mask.d.ts +191 -0
  134. package/types/examples/plasma_web/components/Mask/Mask.d.ts.map +1 -0
  135. package/types/index.d.ts +1 -0
  136. package/types/index.d.ts.map +1 -1
@@ -0,0 +1,220 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.composeMask = void 0;
8
+ var _react = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("react"));
9
+ var _plasmaCore = /*#__PURE__*/require("@salutejs/plasma-core");
10
+ var _hooks = /*#__PURE__*/require("../../hooks");
11
+ var _createMask = /*#__PURE__*/require("./utils/createMask");
12
+ var _constants = /*#__PURE__*/require("./utils/constants");
13
+ var _excluded = ["mask", "maskChar", "alwaysShowMask", "maskString", "showPrefix", "value", "defaultValue", "showMask", "onChange", "onBlur", "onFocus", "reformat"];
14
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
15
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
16
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
17
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
18
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
19
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
20
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
21
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
22
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
23
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
24
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
25
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
26
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
27
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
28
+ var composeMask = exports.composeMask = function composeMask(InputComponent) {
29
+ return /*#__PURE__*/(0, _react.forwardRef)(function (props, outerRef) {
30
+ var maskValue = props.mask,
31
+ maskChar = props.maskChar,
32
+ alwaysShowMask = props.alwaysShowMask,
33
+ maskString = props.maskString,
34
+ showPrefix = props.showPrefix,
35
+ value = props.value,
36
+ defaultValue = props.defaultValue,
37
+ showMaskedValue = props.showMask,
38
+ onChange = props.onChange,
39
+ onBlur = props.onBlur,
40
+ onFocus = props.onFocus,
41
+ reformat = props.reformat,
42
+ rest = _objectWithoutProperties(props, _excluded);
43
+ var _useState = (0, _react.useState)(alwaysShowMask || showMaskedValue),
44
+ _useState2 = _slicedToArray(_useState, 2),
45
+ showMask = _useState2[0],
46
+ setShowMask = _useState2[1];
47
+ var _useState3 = (0, _react.useState)(''),
48
+ _useState4 = _slicedToArray(_useState3, 2),
49
+ innerValue = _useState4[0],
50
+ setInnerValue = _useState4[1];
51
+ var mask = (0, _react.useMemo)(function () {
52
+ return (0, _createMask.createMask)({
53
+ value: String(value) || String(defaultValue) || '',
54
+ mask: maskValue,
55
+ maskChar: maskChar || _createMask.defaults.maskChar,
56
+ maskString: maskString,
57
+ showPrefix: showPrefix || _createMask.defaults.showPrefix,
58
+ reformat: reformat
59
+ });
60
+ }, []);
61
+ var canSetSelection = (0, _react.useRef)(false);
62
+ var inputRef = (0, _react.useRef)(null);
63
+ var innerRef = (0, _plasmaCore.useForkRef)(inputRef, outerRef);
64
+ var getSelection = function getSelection() {
65
+ var _inputRef$current, _inputRef$current2;
66
+ mask.setSelection = {
67
+ start: (inputRef === null || inputRef === void 0 || (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.selectionStart) || 0,
68
+ end: (inputRef === null || inputRef === void 0 || (_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 ? void 0 : _inputRef$current2.selectionEnd) || 0
69
+ };
70
+ };
71
+ var setSelection = function setSelection() {
72
+ var _inputRef$current3;
73
+ if (!canSetSelection.current) {
74
+ return;
75
+ }
76
+ var selection = mask.getSelection;
77
+ inputRef === null || inputRef === void 0 || (_inputRef$current3 = inputRef.current) === null || _inputRef$current3 === void 0 || _inputRef$current3.setSelectionRange(selection.start, selection.end);
78
+ setTimeout(function () {
79
+ var _inputRef$current4;
80
+ return inputRef === null || inputRef === void 0 || (_inputRef$current4 = inputRef.current) === null || _inputRef$current4 === void 0 ? void 0 : _inputRef$current4.setSelectionRange(selection.start, selection.end);
81
+ }, 0);
82
+ };
83
+ var showValue = function showValue() {
84
+ if (!(inputRef !== null && inputRef !== void 0 && inputRef.current)) {
85
+ return;
86
+ }
87
+ if (showMask && (canSetSelection.current || alwaysShowMask)) {
88
+ inputRef.current.value = mask.getState.maskedValue;
89
+ setInnerValue(mask.getState.maskedValue);
90
+ return;
91
+ }
92
+ setInnerValue(mask.getState.visibleValue);
93
+ inputRef.current.value = mask.getState.visibleValue;
94
+ };
95
+ var keyPressPropName = function keyPressPropName() {
96
+ if (typeof navigator !== 'undefined' && navigator.userAgent.match(/Android/i)) {
97
+ return 'onBeforeInput';
98
+ }
99
+ return 'onKeyPress';
100
+ };
101
+ var dispatchEvent = function dispatchEvent(e) {
102
+ var _mask$getState = mask.getState,
103
+ maskedValue = _mask$getState.maskedValue,
104
+ visibleValue = _mask$getState.visibleValue;
105
+ if (onChange) {
106
+ onChange(e, {
107
+ maskedValue: maskedValue,
108
+ value: visibleValue
109
+ });
110
+ }
111
+ };
112
+ var onPaste = function onPaste(e) {
113
+ e.preventDefault();
114
+ getSelection();
115
+ if (!(e !== null && e !== void 0 && e.clipboardData)) {
116
+ return;
117
+ }
118
+ mask.paste(e.clipboardData.getData('Text'));
119
+ setTimeout(setSelection, 0);
120
+ dispatchEvent(e);
121
+ };
122
+ var handleChange = function handleChange(e) {
123
+ var currentValue;
124
+ if (showMask && (canSetSelection.current || alwaysShowMask)) {
125
+ currentValue = mask.getState.maskedValue;
126
+ } else {
127
+ currentValue = mask.getState.visibleValue;
128
+ }
129
+ if (e.target.value !== currentValue) {
130
+ getSelection();
131
+ mask.updateValue(e.target.value);
132
+ setTimeout(setSelection, 0);
133
+ }
134
+ dispatchEvent(e);
135
+ };
136
+ var onKeyPress = function onKeyPress(e) {
137
+ if (e.metaKey || e.altKey || e.ctrlKey || e.key === 'Enter') {
138
+ return;
139
+ }
140
+ e.preventDefault();
141
+ getSelection();
142
+ mask.input(e.key || String.fromCharCode(e.which));
143
+ setSelection();
144
+ dispatchEvent(e);
145
+ };
146
+ var onKeyDown = function onKeyDown(e) {
147
+ if (e.code === _constants.keyboardCode.Backspace) {
148
+ e.preventDefault();
149
+ getSelection();
150
+ mask.removePreviousOrSelected();
151
+ setSelection();
152
+ dispatchEvent(e);
153
+ }
154
+ if (e.code === _constants.keyboardCode.Delete) {
155
+ e.preventDefault();
156
+ getSelection();
157
+ mask.removeNextOrSelected();
158
+ setSelection();
159
+ dispatchEvent(e);
160
+ }
161
+ };
162
+ var handleFocus = function handleFocus(e) {
163
+ canSetSelection.current = true;
164
+ if (onFocus) {
165
+ onFocus(e);
166
+ }
167
+ };
168
+ var handleBlur = function handleBlur(e) {
169
+ canSetSelection.current = false;
170
+ if (onBlur) {
171
+ onBlur(e);
172
+ }
173
+ };
174
+ var keyPressEvent = _defineProperty({}, keyPressPropName(), onKeyPress);
175
+ (0, _hooks.useDidMountEffect)(function () {
176
+ setShowMask(alwaysShowMask || showMask);
177
+ }, [alwaysShowMask, showMask]);
178
+ (0, _hooks.useDidMountEffect)(function () {
179
+ if (reformat) {
180
+ mask.updateReformat(reformat);
181
+ }
182
+ }, [reformat]);
183
+ (0, _hooks.useDidMountEffect)(function () {
184
+ mask.updateMask(String(mask));
185
+ }, [mask]);
186
+ (0, _hooks.useDidMountEffect)(function () {
187
+ mask.updateMaskString(String(maskString));
188
+ }, [maskString]);
189
+ (0, _hooks.useDidMountEffect)(function () {
190
+ mask.updateMaskChar(String(maskChar));
191
+ }, [maskChar]);
192
+ (0, _react.useEffect)(function () {
193
+ mask.updateValue(String(value));
194
+ }, [value]);
195
+ (0, _react.useEffect)(function () {
196
+ showValue();
197
+ }, [showValue, mask]);
198
+ (0, _react.useEffect)(function () {
199
+ var subscriber = function subscriber() {
200
+ showValue();
201
+ setSelection();
202
+ };
203
+ mask.subscribe(subscriber);
204
+ return function () {
205
+ mask.unsubscribe(subscriber);
206
+ };
207
+ }, [mask, showValue, setSelection]);
208
+ return /*#__PURE__*/_react["default"].createElement(InputComponent, _extends({}, rest, {
209
+ onChange: handleChange,
210
+ onKeyDown: onKeyDown,
211
+ onPaste: onPaste,
212
+ onFocus: handleFocus,
213
+ onBlur: handleBlur
214
+ }, keyPressEvent, {
215
+ value: innerValue,
216
+ ref: innerRef,
217
+ autoComplete: "off"
218
+ }));
219
+ });
220
+ };
@@ -0,0 +1,126 @@
1
+ ---
2
+ id: mask
3
+ title: Mask
4
+ ---
5
+
6
+ import { PropsTable, Description, StorybookLink } from '@site/src/components';
7
+
8
+ import Tabs from '@theme/Tabs';
9
+ import TabItem from '@theme/TabItem';
10
+
11
+ # Mask
12
+ <Description name="Mask" />
13
+ <PropsTable name="Mask" exclude={['css']} />
14
+ <StorybookLink name="Mask" />
15
+
16
+ ## Использование
17
+ Компонент `Mask` представляет собой поле ввода с возможностью маскирования значения.
18
+ Он реализован на компоненте [TextField](https://plasma.sberdevices.ru/b2c/components/textfield/)
19
+ и наследует практически все его свойства (`size`, `view`, `disabled`, `label` и тд.)
20
+
21
+ ```tsx live
22
+ import React from 'react';
23
+ import { Mask } from '@salutejs/{{ package }}';
24
+ import { IconDone } from '@salutejs/plasma-icons';
25
+
26
+ export function App() {
27
+ return (
28
+ <div>
29
+ <Mask
30
+ label="Лейбл"
31
+ leftHelper="Подсказка к полю"
32
+ placeholder="Введите дату"
33
+ mask="00/00/0000"
34
+ maskString="DD/MM/YYYY"
35
+ size="l"
36
+ />
37
+ </div>
38
+ );
39
+ }
40
+ ```
41
+
42
+ ### Маска
43
+ Маска задается с помощью свойства `mask`.
44
+ Поддерживает следующие символы:
45
+
46
+ | Обозначение | Описание |
47
+ |-------------|---------------------------------------|
48
+ | 0 | любая цифра от 0 до 9 |
49
+ | a (англ.) | A-Z, a-z |
50
+ | я | А-Я, а-я, ё, Ё |
51
+ | q | буква "q" |
52
+ | 2 | цифра "2" |
53
+ | * | любой символ |
54
+ | \ | символ экранирования "\a" - буква "a" |
55
+
56
+
57
+ <Tabs>
58
+ <TabItem value="phone" label="Маска телефона">
59
+ Пример маски для ввода телефона
60
+
61
+ ```tsx live
62
+ import React from 'react';
63
+ import { Mask } from '@salutejs/{{ package }}';
64
+
65
+ export function App() {
66
+ return (
67
+ <div>
68
+ <Mask
69
+ label="Маска телефона"
70
+ placeholder="Введите телефон"
71
+ mask="+7 (000) 000 - 00 - 00"
72
+ maskChar="_"
73
+ size="l"
74
+ alwaysShowMask
75
+ />
76
+ </div>
77
+ );
78
+ }
79
+ ```
80
+ </TabItem>
81
+ <TabItem value="date" label="Маска даты">
82
+ Пример маски для ввода даты
83
+
84
+ ```tsx live
85
+ import React from 'react';
86
+ import { Mask } from '@salutejs/{{ package }}';
87
+
88
+ export function App() {
89
+ return (
90
+ <div>
91
+ <Mask
92
+ label="Маска даты"
93
+ placeholder="Введите дату"
94
+ mask="00/00/0000"
95
+ maskString="DD/MM/YYYY"
96
+ size="l"
97
+ />
98
+ </div>
99
+ );
100
+ }
101
+ ```
102
+ </TabItem>
103
+ <TabItem value="time" label="Маска времени">
104
+ Пример маски для ввода даты
105
+
106
+ ```tsx live
107
+ import React from 'react';
108
+ import { Mask } from '@salutejs/{{ package }}';
109
+
110
+ export function App() {
111
+ return (
112
+ <div>
113
+ <Mask
114
+ label="Маска времени"
115
+ placeholder="Введите время"
116
+ mask="1\0:00"
117
+ maskChar="_"
118
+ size="l"
119
+ showPrefix
120
+ />
121
+ </div>
122
+ );
123
+ }
124
+ ```
125
+ </TabItem>
126
+ </Tabs>
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "composeMask", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _Mask.composeMask;
10
+ }
11
+ });
12
+ var _Mask = /*#__PURE__*/require("./Mask");
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.keyboardCode = exports.escapeChar = exports.defaultFormatChars = exports.charType = void 0;
7
+ var charType = exports.charType = {
8
+ User: 1,
9
+ Char: 2,
10
+ Mask: 3
11
+ };
12
+ var keyboardCode = exports.keyboardCode = {
13
+ Backspace: 'Backspace',
14
+ Delete: 'Delete'
15
+ };
16
+ var escapeChar = exports.escapeChar = '\\';
17
+ var defaultFormatChars = exports.defaultFormatChars = [{
18
+ str: '0',
19
+ regexp: /[0-9]/
20
+ }, {
21
+ str: '*',
22
+ regexp: /./
23
+ }, {
24
+ str: 'a',
25
+ regexp: /[a-zA-Z]/
26
+ }, {
27
+ str: 'я',
28
+ regexp: /[а-яА-ЯёЁ]/
29
+ }];
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.defaults = exports.createMask = void 0;
7
+ var _constants = /*#__PURE__*/require("./constants");
8
+ var _mask = /*#__PURE__*/require("./mask");
9
+ var _selection = /*#__PURE__*/require("./selection");
10
+ var defaults = exports.defaults = {
11
+ maskFormat: _constants.defaultFormatChars,
12
+ maskChar: '',
13
+ showMask: false,
14
+ removeSelectedRange: _selection.removeSelectedRange,
15
+ showPrefix: false
16
+ };
17
+ var createMask = exports.createMask = function createMask(params) {
18
+ var _params$mask;
19
+ var maskString = params.maskString,
20
+ _params$showPrefix = params.showPrefix,
21
+ showPrefix = _params$showPrefix === void 0 ? defaults.showPrefix : _params$showPrefix,
22
+ _params$maskChar = params.maskChar,
23
+ maskChar = _params$maskChar === void 0 ? defaults.maskChar : _params$maskChar,
24
+ reformat = params.reformat;
25
+ var resReformat = reformat;
26
+ if (!reformat && !params.mask) {
27
+ resReformat = function resReformat(args) {
28
+ var str = args.value.map(function (item) {
29
+ return item["char"];
30
+ }).join('');
31
+ return {
32
+ value: args.value,
33
+ visibleValue: str,
34
+ maskedValue: str,
35
+ selection: args.selection
36
+ };
37
+ };
38
+ } else if (reformat && params.mask) {
39
+ params.mask = undefined;
40
+ }
41
+ if (maskString && maskString.length !== (params === null || params === void 0 || (_params$mask = params.mask) === null || _params$mask === void 0 ? void 0 : _params$mask.length)) {
42
+ throw new Error('maskString должна быть такой же длины, как и mask');
43
+ }
44
+ if (maskChar.length > 1) {
45
+ throw new Error('maskChar должен содержать только 1 символ');
46
+ }
47
+ var mask = new _mask.Mask(showPrefix, maskChar, maskString, resReformat);
48
+ mask.updateMask(params.mask);
49
+ return mask;
50
+ };