@salutejs/plasma-new-hope 0.325.0-canary.1715.15255555914.0 → 0.325.0-canary.1941.15255593421.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/cjs/components/CodeField/CodeField.css +14 -0
- package/cjs/components/CodeField/CodeField.js +290 -0
- package/cjs/components/CodeField/CodeField.js.map +1 -0
- package/cjs/components/CodeField/CodeField.styles.js +57 -0
- package/cjs/components/CodeField/CodeField.styles.js.map +1 -0
- package/cjs/components/CodeField/CodeField.styles_7zxgpc.css +6 -0
- package/cjs/components/CodeField/CodeField.tokens.js +59 -0
- package/cjs/components/CodeField/CodeField.tokens.js.map +1 -0
- package/cjs/components/CodeField/utils/constants.js +18 -0
- package/cjs/components/CodeField/utils/constants.js.map +1 -0
- package/cjs/components/CodeField/utils/handleCodeError.js +55 -0
- package/cjs/components/CodeField/utils/handleCodeError.js.map +1 -0
- package/cjs/components/CodeField/utils/handleItemError.js +53 -0
- package/cjs/components/CodeField/utils/handleItemError.js.map +1 -0
- package/cjs/components/CodeField/utils/initialValuesHelper.js +33 -0
- package/cjs/components/CodeField/utils/initialValuesHelper.js.map +1 -0
- package/cjs/components/CodeField/variations/_disabled/base.js +9 -0
- package/cjs/components/CodeField/variations/_disabled/base.js.map +1 -0
- package/cjs/components/CodeField/variations/_disabled/base_obsae2.css +1 -0
- package/cjs/components/CodeField/variations/_shape/base.js +9 -0
- package/cjs/components/CodeField/variations/_shape/base.js.map +1 -0
- package/cjs/components/CodeField/variations/_shape/base_1scsyya.css +1 -0
- package/cjs/components/CodeField/variations/_size/base.js +9 -0
- package/cjs/components/CodeField/variations/_size/base.js.map +1 -0
- package/cjs/components/CodeField/variations/_size/base_1wrvbr5.css +1 -0
- package/cjs/components/CodeField/variations/_view/base.js +9 -0
- package/cjs/components/CodeField/variations/_view/base.js.map +1 -0
- package/cjs/components/CodeField/variations/_view/base_9a5yza.css +1 -0
- package/cjs/components/NumberInput/ui/Input/Input.js +0 -3
- package/cjs/components/NumberInput/ui/Input/Input.js.map +1 -1
- package/cjs/index.css +15 -0
- package/cjs/index.js +10 -0
- package/cjs/index.js.map +1 -1
- package/emotion/cjs/components/CodeField/CodeField.js +299 -0
- package/emotion/cjs/components/CodeField/CodeField.styles.js +65 -0
- package/emotion/cjs/components/CodeField/CodeField.template-doc.mdx +150 -0
- package/emotion/cjs/components/CodeField/CodeField.tokens.js +57 -0
- package/emotion/cjs/components/CodeField/CodeField.types.js +5 -0
- package/emotion/cjs/components/CodeField/index.js +50 -0
- package/emotion/cjs/components/CodeField/utils/constants.js +12 -0
- package/emotion/cjs/components/CodeField/utils/handleCodeError.js +58 -0
- package/emotion/cjs/components/CodeField/utils/handleItemError.js +56 -0
- package/emotion/cjs/components/CodeField/utils/index.js +38 -0
- package/emotion/cjs/components/CodeField/utils/initialValuesHelper.js +30 -0
- package/emotion/cjs/components/CodeField/variations/_disabled/base.js +9 -0
- package/emotion/cjs/components/CodeField/variations/_disabled/tokens.json +4 -0
- package/emotion/cjs/components/CodeField/variations/_shape/base.js +10 -0
- package/emotion/cjs/components/CodeField/variations/_shape/tokens.json +1 -0
- package/emotion/cjs/components/CodeField/variations/_size/base.js +10 -0
- package/emotion/cjs/components/CodeField/variations/_size/tokens.json +19 -0
- package/emotion/cjs/components/CodeField/variations/_view/base.js +10 -0
- package/emotion/cjs/components/CodeField/variations/_view/tokens.json +0 -0
- package/emotion/cjs/components/NumberInput/ui/Input/Input.js +0 -3
- package/emotion/cjs/examples/plasma_b2c/components/CodeField/CodeField.config.js +31 -0
- package/emotion/cjs/examples/plasma_b2c/components/CodeField/CodeField.js +11 -0
- package/emotion/cjs/examples/plasma_b2c/components/CodeField/CodeField.stories.tsx +107 -0
- package/emotion/cjs/examples/plasma_b2c/components/TextField/TextField.config.js +22 -23
- package/emotion/cjs/examples/plasma_b2c/components/TextField/TextField.stories.tsx +3 -4
- package/emotion/cjs/examples/plasma_web/components/CodeField/CodeField.config.js +31 -0
- package/emotion/cjs/examples/plasma_web/components/CodeField/CodeField.js +11 -0
- package/emotion/cjs/examples/plasma_web/components/CodeField/CodeField.stories.tsx +107 -0
- package/emotion/cjs/examples/plasma_web/components/TextField/TextField.config.js +22 -23
- package/emotion/cjs/examples/plasma_web/components/TextField/TextField.stories.tsx +4 -5
- package/emotion/cjs/index.js +11 -0
- package/emotion/es/components/CodeField/CodeField.js +290 -0
- package/emotion/es/components/CodeField/CodeField.styles.js +58 -0
- package/emotion/es/components/CodeField/CodeField.template-doc.mdx +150 -0
- package/emotion/es/components/CodeField/CodeField.tokens.js +51 -0
- package/emotion/es/components/CodeField/CodeField.types.js +1 -0
- package/emotion/es/components/CodeField/index.js +3 -0
- package/emotion/es/components/CodeField/utils/constants.js +6 -0
- package/emotion/es/components/CodeField/utils/handleCodeError.js +52 -0
- package/emotion/es/components/CodeField/utils/handleItemError.js +50 -0
- package/emotion/es/components/CodeField/utils/index.js +3 -0
- package/emotion/es/components/CodeField/utils/initialValuesHelper.js +24 -0
- package/emotion/es/components/CodeField/variations/_disabled/base.js +3 -0
- package/emotion/es/components/CodeField/variations/_disabled/tokens.json +4 -0
- package/emotion/es/components/CodeField/variations/_shape/base.js +4 -0
- package/emotion/es/components/CodeField/variations/_shape/tokens.json +1 -0
- package/emotion/es/components/CodeField/variations/_size/base.js +4 -0
- package/emotion/es/components/CodeField/variations/_size/tokens.json +19 -0
- package/emotion/es/components/CodeField/variations/_view/base.js +4 -0
- package/emotion/es/components/CodeField/variations/_view/tokens.json +0 -0
- package/emotion/es/components/NumberInput/ui/Input/Input.js +0 -3
- package/emotion/es/examples/plasma_b2c/components/CodeField/CodeField.config.js +25 -0
- package/emotion/es/examples/plasma_b2c/components/CodeField/CodeField.js +5 -0
- package/emotion/es/examples/plasma_b2c/components/CodeField/CodeField.stories.tsx +107 -0
- package/emotion/es/examples/plasma_b2c/components/TextField/TextField.config.js +22 -23
- package/emotion/es/examples/plasma_b2c/components/TextField/TextField.stories.tsx +3 -4
- package/emotion/es/examples/plasma_web/components/CodeField/CodeField.config.js +25 -0
- package/emotion/es/examples/plasma_web/components/CodeField/CodeField.js +5 -0
- package/emotion/es/examples/plasma_web/components/CodeField/CodeField.stories.tsx +107 -0
- package/emotion/es/examples/plasma_web/components/TextField/TextField.config.js +22 -23
- package/emotion/es/examples/plasma_web/components/TextField/TextField.stories.tsx +4 -5
- package/emotion/es/index.js +2 -1
- package/es/components/CodeField/CodeField.css +14 -0
- package/es/components/CodeField/CodeField.js +280 -0
- package/es/components/CodeField/CodeField.js.map +1 -0
- package/es/components/CodeField/CodeField.styles.js +48 -0
- package/es/components/CodeField/CodeField.styles.js.map +1 -0
- package/es/components/CodeField/CodeField.styles_7zxgpc.css +6 -0
- package/es/components/CodeField/CodeField.tokens.js +54 -0
- package/es/components/CodeField/CodeField.tokens.js.map +1 -0
- package/es/components/CodeField/utils/constants.js +9 -0
- package/es/components/CodeField/utils/constants.js.map +1 -0
- package/es/components/CodeField/utils/handleCodeError.js +51 -0
- package/es/components/CodeField/utils/handleCodeError.js.map +1 -0
- package/es/components/CodeField/utils/handleItemError.js +49 -0
- package/es/components/CodeField/utils/handleItemError.js.map +1 -0
- package/es/components/CodeField/utils/initialValuesHelper.js +27 -0
- package/es/components/CodeField/utils/initialValuesHelper.js.map +1 -0
- package/es/components/CodeField/variations/_disabled/base.js +5 -0
- package/es/components/CodeField/variations/_disabled/base.js.map +1 -0
- package/es/components/CodeField/variations/_disabled/base_obsae2.css +1 -0
- package/es/components/CodeField/variations/_shape/base.js +5 -0
- package/es/components/CodeField/variations/_shape/base.js.map +1 -0
- package/es/components/CodeField/variations/_shape/base_1scsyya.css +1 -0
- package/es/components/CodeField/variations/_size/base.js +5 -0
- package/es/components/CodeField/variations/_size/base.js.map +1 -0
- package/es/components/CodeField/variations/_size/base_1wrvbr5.css +1 -0
- package/es/components/CodeField/variations/_view/base.js +5 -0
- package/es/components/CodeField/variations/_view/base.js.map +1 -0
- package/es/components/CodeField/variations/_view/base_9a5yza.css +1 -0
- package/es/components/NumberInput/ui/Input/Input.js +0 -3
- package/es/components/NumberInput/ui/Input/Input.js.map +1 -1
- package/es/index.css +15 -0
- package/es/index.js +3 -0
- package/es/index.js.map +1 -1
- package/package.json +2 -2
- package/styled-components/cjs/components/CodeField/CodeField.js +299 -0
- package/styled-components/cjs/components/CodeField/CodeField.styles.js +38 -0
- package/styled-components/cjs/components/CodeField/CodeField.template-doc.mdx +150 -0
- package/styled-components/cjs/components/CodeField/CodeField.tokens.js +57 -0
- package/styled-components/cjs/components/CodeField/CodeField.types.js +5 -0
- package/styled-components/cjs/components/CodeField/index.js +50 -0
- package/styled-components/cjs/components/CodeField/utils/constants.js +12 -0
- package/styled-components/cjs/components/CodeField/utils/handleCodeError.js +58 -0
- package/styled-components/cjs/components/CodeField/utils/handleItemError.js +56 -0
- package/styled-components/cjs/components/CodeField/utils/index.js +38 -0
- package/styled-components/cjs/components/CodeField/utils/initialValuesHelper.js +30 -0
- package/styled-components/cjs/components/CodeField/variations/_disabled/base.js +9 -0
- package/styled-components/cjs/components/CodeField/variations/_disabled/tokens.json +4 -0
- package/styled-components/cjs/components/CodeField/variations/_shape/base.js +10 -0
- package/styled-components/cjs/components/CodeField/variations/_shape/tokens.json +1 -0
- package/styled-components/cjs/components/CodeField/variations/_size/base.js +10 -0
- package/styled-components/cjs/components/CodeField/variations/_size/tokens.json +19 -0
- package/styled-components/cjs/components/CodeField/variations/_view/base.js +10 -0
- package/styled-components/cjs/components/CodeField/variations/_view/tokens.json +0 -0
- package/styled-components/cjs/components/NumberInput/ui/Input/Input.js +0 -3
- package/styled-components/cjs/examples/plasma_b2c/components/CodeField/CodeField.config.js +31 -0
- package/styled-components/cjs/examples/plasma_b2c/components/CodeField/CodeField.js +11 -0
- package/styled-components/cjs/examples/plasma_b2c/components/CodeField/CodeField.stories.tsx +107 -0
- package/styled-components/cjs/examples/plasma_b2c/components/TextField/TextField.config.js +1 -2
- package/styled-components/cjs/examples/plasma_b2c/components/TextField/TextField.stories.tsx +3 -4
- package/styled-components/cjs/examples/plasma_web/components/CodeField/CodeField.config.js +31 -0
- package/styled-components/cjs/examples/plasma_web/components/CodeField/CodeField.js +11 -0
- package/styled-components/cjs/examples/plasma_web/components/CodeField/CodeField.stories.tsx +107 -0
- package/styled-components/cjs/examples/plasma_web/components/TextField/TextField.config.js +6 -7
- package/styled-components/cjs/examples/plasma_web/components/TextField/TextField.stories.tsx +4 -5
- package/styled-components/cjs/index.js +11 -0
- package/styled-components/es/components/CodeField/CodeField.js +290 -0
- package/styled-components/es/components/CodeField/CodeField.styles.js +30 -0
- package/styled-components/es/components/CodeField/CodeField.template-doc.mdx +150 -0
- package/styled-components/es/components/CodeField/CodeField.tokens.js +51 -0
- package/styled-components/es/components/CodeField/CodeField.types.js +1 -0
- package/styled-components/es/components/CodeField/index.js +3 -0
- package/styled-components/es/components/CodeField/utils/constants.js +6 -0
- package/styled-components/es/components/CodeField/utils/handleCodeError.js +52 -0
- package/styled-components/es/components/CodeField/utils/handleItemError.js +50 -0
- package/styled-components/es/components/CodeField/utils/index.js +3 -0
- package/styled-components/es/components/CodeField/utils/initialValuesHelper.js +24 -0
- package/styled-components/es/components/CodeField/variations/_disabled/base.js +3 -0
- package/styled-components/es/components/CodeField/variations/_disabled/tokens.json +4 -0
- package/styled-components/es/components/CodeField/variations/_shape/base.js +4 -0
- package/styled-components/es/components/CodeField/variations/_shape/tokens.json +1 -0
- package/styled-components/es/components/CodeField/variations/_size/base.js +4 -0
- package/styled-components/es/components/CodeField/variations/_size/tokens.json +19 -0
- package/styled-components/es/components/CodeField/variations/_view/base.js +4 -0
- package/styled-components/es/components/CodeField/variations/_view/tokens.json +0 -0
- package/styled-components/es/components/NumberInput/ui/Input/Input.js +0 -3
- package/styled-components/es/examples/plasma_b2c/components/CodeField/CodeField.config.js +25 -0
- package/styled-components/es/examples/plasma_b2c/components/CodeField/CodeField.js +5 -0
- package/styled-components/es/examples/plasma_b2c/components/CodeField/CodeField.stories.tsx +107 -0
- package/styled-components/es/examples/plasma_b2c/components/TextField/TextField.config.js +1 -2
- package/styled-components/es/examples/plasma_b2c/components/TextField/TextField.stories.tsx +3 -4
- package/styled-components/es/examples/plasma_web/components/CodeField/CodeField.config.js +25 -0
- package/styled-components/es/examples/plasma_web/components/CodeField/CodeField.js +5 -0
- package/styled-components/es/examples/plasma_web/components/CodeField/CodeField.stories.tsx +107 -0
- package/styled-components/es/examples/plasma_web/components/TextField/TextField.config.js +6 -7
- package/styled-components/es/examples/plasma_web/components/TextField/TextField.stories.tsx +4 -5
- package/styled-components/es/index.js +2 -1
- package/types/components/CodeField/CodeField.d.ts +69 -0
- package/types/components/CodeField/CodeField.d.ts.map +1 -0
- package/types/components/CodeField/CodeField.styles.d.ts +11 -0
- package/types/components/CodeField/CodeField.styles.d.ts.map +1 -0
- package/types/components/CodeField/CodeField.tokens.d.ts +52 -0
- package/types/components/CodeField/CodeField.tokens.d.ts.map +1 -0
- package/types/components/CodeField/CodeField.types.d.ts +93 -0
- package/types/components/CodeField/CodeField.types.d.ts.map +1 -0
- package/types/components/CodeField/index.d.ts +4 -0
- package/types/components/CodeField/index.d.ts.map +1 -0
- package/types/components/CodeField/utils/constants.d.ts +7 -0
- package/types/components/CodeField/utils/constants.d.ts.map +1 -0
- package/types/components/CodeField/utils/handleCodeError.d.ts +15 -0
- package/types/components/CodeField/utils/handleCodeError.d.ts.map +1 -0
- package/types/components/CodeField/utils/handleItemError.d.ts +14 -0
- package/types/components/CodeField/utils/handleItemError.d.ts.map +1 -0
- package/types/components/CodeField/utils/index.d.ts +4 -0
- package/types/components/CodeField/utils/index.d.ts.map +1 -0
- package/types/components/CodeField/utils/initialValuesHelper.d.ts +4 -0
- package/types/components/CodeField/utils/initialValuesHelper.d.ts.map +1 -0
- package/types/components/CodeField/variations/_disabled/base.d.ts +2 -0
- package/types/components/CodeField/variations/_disabled/base.d.ts.map +1 -0
- package/types/components/CodeField/variations/_shape/base.d.ts +2 -0
- package/types/components/CodeField/variations/_shape/base.d.ts.map +1 -0
- package/types/components/CodeField/variations/_size/base.d.ts +2 -0
- package/types/components/CodeField/variations/_size/base.d.ts.map +1 -0
- package/types/components/CodeField/variations/_view/base.d.ts +2 -0
- package/types/components/CodeField/variations/_view/base.d.ts.map +1 -0
- package/types/components/NumberInput/ui/Input/Input.d.ts.map +1 -1
- package/types/index.d.ts +1 -0
- package/types/index.d.ts.map +1 -1
@@ -0,0 +1,150 @@
|
|
1
|
+
---
|
2
|
+
id: codefield
|
3
|
+
title: CodeField
|
4
|
+
---
|
5
|
+
|
6
|
+
import { PropsTable, Description } from '@site/src/components';
|
7
|
+
|
8
|
+
# CodeField
|
9
|
+
Компонент `CodeField` используется для ввода OTP-кодов.
|
10
|
+
|
11
|
+
<Description name="CodeField" />
|
12
|
+
<PropsTable name="CodeField" />
|
13
|
+
|
14
|
+
## Примеры
|
15
|
+
|
16
|
+
### Размер
|
17
|
+
Размер задается с помощью свойства `size`.
|
18
|
+
Ширина компонента так же может регулироваться при помощи свойства `width`:
|
19
|
+
|
20
|
+
```tsx live
|
21
|
+
import React from 'react';
|
22
|
+
import { CodeField } from '@salutejs/{{ package }}';
|
23
|
+
|
24
|
+
export function App() {
|
25
|
+
return (
|
26
|
+
<div style=\{{ flexDirection: 'column', gap: '2rem' }}>
|
27
|
+
<CodeField
|
28
|
+
size="l"
|
29
|
+
caption="Осталось попыток: 4"
|
30
|
+
captionAlign="center"
|
31
|
+
/>
|
32
|
+
<CodeField
|
33
|
+
size="m"
|
34
|
+
caption="Чтобы выслать вам код повторно подождите: 20 секунд"
|
35
|
+
captionAlign="left"
|
36
|
+
/>
|
37
|
+
<CodeField
|
38
|
+
width="25"
|
39
|
+
caption="Не передавайте никому код из СМС. Иначе ваш аккаунт могут взломать"
|
40
|
+
captionAlign="center"
|
41
|
+
/>
|
42
|
+
</div>
|
43
|
+
);
|
44
|
+
}
|
45
|
+
```
|
46
|
+
|
47
|
+
### Форма компонента и длина кода
|
48
|
+
Форма компонента задается с помощью свойства `shape`, а длина кода с помощью `codeLength`:
|
49
|
+
|
50
|
+
```tsx live
|
51
|
+
import React from 'react';
|
52
|
+
import { CodeField } from '@salutejs/{{ package }}';
|
53
|
+
|
54
|
+
export function App() {
|
55
|
+
return (
|
56
|
+
<div style=\{{ flexDirection: 'column', gap: '2rem' }}>
|
57
|
+
<div style=\{{ display: 'flex', gap: '2rem' }}>
|
58
|
+
<CodeField shape="default" codeLength={4} />
|
59
|
+
<CodeField shape="segmented" codeLength={4} />
|
60
|
+
</div>
|
61
|
+
<div style=\{{ display: 'flex', gap: '2rem' }}>
|
62
|
+
<CodeField shape="default" codeLength={5} />
|
63
|
+
<CodeField shape="segmented" codeLength={5} />
|
64
|
+
</div>
|
65
|
+
<div style=\{{ display: 'flex', gap: '2rem' }}>
|
66
|
+
<CodeField shape="default" codeLength={6} />
|
67
|
+
<CodeField shape="segmented" codeLength={6} />
|
68
|
+
</div>
|
69
|
+
</div>
|
70
|
+
);
|
71
|
+
}
|
72
|
+
```
|
73
|
+
|
74
|
+
### Допустимые символы и поведение ячейки при вводе некорректного символа
|
75
|
+
За допустимые символы для ввода отвечает свойство `allowedSymbols`. Задается строкой или регулярным выражением.
|
76
|
+
Библиотека экспортирует наиболее используемые вариации допустимых символов:
|
77
|
+
`import { ONLY_DIGITS_PATTERN, ONLY_CHARS_PATTERN, ONLY_DIGITS_AND_CHARS_PATTERN } from '@salutejs/{{ package }}';`
|
78
|
+
|
79
|
+
Поведение ячейки при вводе некорректного символа регулируется свойством `itemErrorBehavior`:
|
80
|
+
|
81
|
+
```tsx live
|
82
|
+
import React from 'react';
|
83
|
+
import { CodeField } from '@salutejs/{{ package }}';
|
84
|
+
|
85
|
+
export function App() {
|
86
|
+
return (
|
87
|
+
<div>
|
88
|
+
<CodeField value="123" itemErrorBehavior="remove-symbol" />
|
89
|
+
<CodeField value="123" itemErrorBehavior="keep" />
|
90
|
+
<CodeField value="123" itemErrorBehavior="forbid-enter" />
|
91
|
+
</div>
|
92
|
+
);
|
93
|
+
}
|
94
|
+
```
|
95
|
+
|
96
|
+
### Поведение компонента при вводе некорректного кода и индикация ошибки
|
97
|
+
При заполнении всех полей ввода срабатывает колбэк `onFullCodeEnter`.
|
98
|
+
При неверном вводе кода, поведние компонента управляется с помощью свойства `codeErrorBehavior`.
|
99
|
+
Индикация ошибки происходит с помощью флага `isError` и колбека `setIsError`:
|
100
|
+
|
101
|
+
```tsx live
|
102
|
+
import React, { useState, useRef, Dispatch, SetStateAction } from 'react';
|
103
|
+
import { CodeField } from '@salutejs/{{ package }}';
|
104
|
+
|
105
|
+
export function App() {
|
106
|
+
const [disabledFirst, setDisabledFirst] = useState(false);
|
107
|
+
const [isErrorFirst, setIsErrorFirst] = useState(false);
|
108
|
+
|
109
|
+
const [disabledSecond, setDisabledSecond] = useState(false);
|
110
|
+
const [isErrorSecond, setIsErrorSecond] = useState(false);
|
111
|
+
|
112
|
+
const onFullCodeEnter = (
|
113
|
+
code: string,
|
114
|
+
errorSetter: Dispatch<SetStateAction<boolean>>,
|
115
|
+
disableSetter: Dispatch<SetStateAction<boolean>>
|
116
|
+
) => {
|
117
|
+
disableSetter(true);
|
118
|
+
|
119
|
+
// имитация запроса на сервер
|
120
|
+
setTimeout(() => {
|
121
|
+
disableSetter(false);
|
122
|
+
|
123
|
+
if (code !== '123456') {
|
124
|
+
errorSetter(true);
|
125
|
+
}
|
126
|
+
}, 3000)
|
127
|
+
}
|
128
|
+
|
129
|
+
return (
|
130
|
+
<div style=\{{ flexDirection: 'column', gap: '2rem' }}>
|
131
|
+
<CodeField
|
132
|
+
itemErrorBehavior="remove-symbol"
|
133
|
+
codeErrorBehavior="remove-code"
|
134
|
+
disabled={disabledFirst}
|
135
|
+
isError={isErrorFirst}
|
136
|
+
setIsError={setIsErrorFirst}
|
137
|
+
onFullCodeEnter={(code) => onFullCodeEnter(code, setIsErrorFirst, setDisabledFirst)}
|
138
|
+
/>
|
139
|
+
<CodeField
|
140
|
+
itemErrorBehavior="remove-symbol"
|
141
|
+
codeErrorBehavior="keep"
|
142
|
+
disabled={disabledSecond}
|
143
|
+
isError={isErrorSecond}
|
144
|
+
setIsError={setIsErrorSecond}
|
145
|
+
onFullCodeEnter={(code) => onFullCodeEnter(code, setIsErrorSecond, setDisabledSecond)}
|
146
|
+
/>
|
147
|
+
</div>
|
148
|
+
);
|
149
|
+
}
|
150
|
+
```
|
@@ -0,0 +1,51 @@
|
|
1
|
+
export var classes = {
|
2
|
+
itemError: 'codefield-item-error',
|
3
|
+
itemErrorAnimation: 'codefield-item-error-animation',
|
4
|
+
itemErrorFade: 'codefield-item-error-fade',
|
5
|
+
captionError: 'codefield-caption-error',
|
6
|
+
codeError: 'codefield-code-error',
|
7
|
+
codeErrorAnimation: 'codefield-code-error-animation',
|
8
|
+
codeErrorFade: 'codefield-code-error-fade',
|
9
|
+
captionAlignLeft: 'codefield-caption-align-left',
|
10
|
+
hoverEnabled: 'codefield-item-hover-enabled',
|
11
|
+
segmented: 'codefield-shape-segmented',
|
12
|
+
"default": 'codefield-shape-default',
|
13
|
+
disabled: 'codefield-disabled'
|
14
|
+
};
|
15
|
+
export var tokens = {
|
16
|
+
captionGap: '--plasma-codefield-caption-gap',
|
17
|
+
codeItemsGap: '--plasma-codefield-code-item-gap',
|
18
|
+
separatorWidth: '--plasma-codefield-separator-width',
|
19
|
+
codeItemWidth: '--plasma-codefield-item-width',
|
20
|
+
codeItemHeight: '--plasma-codefield-item-height',
|
21
|
+
fontFamily: '--plasma-codefield-font-family',
|
22
|
+
fontStyle: '--plasma-codefield-font-style',
|
23
|
+
fontSize: '--plasma-codefield-font-size',
|
24
|
+
fontWeight: '--plasma-codefield-font-weight',
|
25
|
+
letterSpacing: '--plasma-codefield-letter-spacing',
|
26
|
+
lineHeight: '--plasma-codefield-line-height',
|
27
|
+
captionFontFamily: '--plasma-codefield-caption-font-family',
|
28
|
+
captionFontSize: '--plasma-codefield-caption-font-style',
|
29
|
+
captionFontStyle: '--plasma-codefield-caption-font-size',
|
30
|
+
captionFontWeight: '--plasma-codefield-caption-font-weight',
|
31
|
+
captionLetterSpacing: '--plasma-codefield-caption-letter-spacing',
|
32
|
+
captionLineHeight: '--plasma-codefield-caption-line-height',
|
33
|
+
borderRadius: '--plasma-codefield-code-item-border-radius',
|
34
|
+
borderRadiusSegmented: '--plasma-codefield-code-item-border-radius-segmented',
|
35
|
+
segmentedSideBorderRadius: '--plasma-codefield-code-item-segmented-side-border-radius',
|
36
|
+
captionColor: '--plasma-codefield-caption-color',
|
37
|
+
captionColorError: '--plasma-codefield-caption-color-error',
|
38
|
+
codeColor: '--plasma-codefield-code-color',
|
39
|
+
codeColorError: '--plasma-codefield-code-color-error',
|
40
|
+
backgroundColor: '--plasma-codefield-background-color',
|
41
|
+
backgroundColorHover: '--plasma-codefield-background-color-hover',
|
42
|
+
backgroundColorFocus: '--plasma-codefield-background-color-focus',
|
43
|
+
backgroundErrorColor: '--plasma-codefield-background-error-color',
|
44
|
+
borderWidth: '--plasma-codefield-border-width',
|
45
|
+
borderColor: '--plasma-codefield-border-color',
|
46
|
+
borderColorHover: '--plasma-codefield-border-color-hover',
|
47
|
+
borderColorFocus: '--plasma-codefield-border-color-focus',
|
48
|
+
borderErrorColor: '--plasma-codefield-border-error-color',
|
49
|
+
caretColor: '--plasma-codefield-caret-color',
|
50
|
+
disabledOpacity: '--plasma-codefield-disabled-opacity'
|
51
|
+
};
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -0,0 +1,6 @@
|
|
1
|
+
export var ONLY_DIGITS_PATTERN = '^\\d+$';
|
2
|
+
export var ONLY_CHARS_PATTERN = '^[a-zA-Z]+$';
|
3
|
+
export var ONLY_DIGITS_AND_CHARS_PATTERN = '^[a-zA-Z0-9]+$';
|
4
|
+
export var FORBIDDEN_KEYS = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Delete'];
|
5
|
+
export var BACKSPACE_KEY = 'Backspace';
|
6
|
+
export var ANIMATION_TIMEOUT = 300;
|
@@ -0,0 +1,52 @@
|
|
1
|
+
function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
|
2
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
3
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
4
|
+
function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
|
5
|
+
function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
|
6
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
7
|
+
import { classes } from "../CodeField.tokens";
|
8
|
+
import { ANIMATION_TIMEOUT } from "./constants";
|
9
|
+
import { getCodeValue } from "./initialValuesHelper";
|
10
|
+
export var handleCodeError = function handleCodeError(_ref) {
|
11
|
+
var _captionRef$current, _captionRef$current2;
|
12
|
+
var codeLength = _ref.codeLength,
|
13
|
+
codeErrorBehavior = _ref.codeErrorBehavior,
|
14
|
+
currentCode = _ref.currentCode,
|
15
|
+
inputRefs = _ref.inputRefs,
|
16
|
+
inputContainerRef = _ref.inputContainerRef,
|
17
|
+
captionRef = _ref.captionRef,
|
18
|
+
setCode = _ref.setCode,
|
19
|
+
codeSetter = _ref.codeSetter;
|
20
|
+
if (!inputContainerRef.current) {
|
21
|
+
return;
|
22
|
+
}
|
23
|
+
switch (codeErrorBehavior) {
|
24
|
+
case 'keep':
|
25
|
+
inputContainerRef.current.classList.add(classes.codeError, classes.codeErrorAnimation);
|
26
|
+
(_captionRef$current = captionRef.current) === null || _captionRef$current === void 0 || _captionRef$current.classList.add(classes.captionError);
|
27
|
+
setTimeout(function () {
|
28
|
+
var _inputContainerRef$cu;
|
29
|
+
var newCode = _toConsumableArray(currentCode);
|
30
|
+
newCode.pop();
|
31
|
+
codeSetter(newCode);
|
32
|
+
setCode(currentCode);
|
33
|
+
(_inputContainerRef$cu = inputContainerRef.current) === null || _inputContainerRef$cu === void 0 || _inputContainerRef$cu.classList.remove(classes.codeErrorAnimation);
|
34
|
+
setTimeout(function () {
|
35
|
+
var _inputRefs$current, _inputRefs$current2;
|
36
|
+
(_inputRefs$current = inputRefs.current[inputRefs.current.length - 1]) === null || _inputRefs$current === void 0 || _inputRefs$current.setSelectionRange(0, 1);
|
37
|
+
(_inputRefs$current2 = inputRefs.current[inputRefs.current.length - 1]) === null || _inputRefs$current2 === void 0 || _inputRefs$current2.focus();
|
38
|
+
}, 0);
|
39
|
+
}, ANIMATION_TIMEOUT);
|
40
|
+
break;
|
41
|
+
case 'remove-code':
|
42
|
+
default:
|
43
|
+
inputContainerRef.current.classList.add(classes.codeError, classes.codeErrorAnimation, classes.codeErrorFade);
|
44
|
+
(_captionRef$current2 = captionRef.current) === null || _captionRef$current2 === void 0 || _captionRef$current2.classList.add(classes.captionError);
|
45
|
+
setTimeout(function () {
|
46
|
+
var _inputRefs$current$, _inputContainerRef$cu2;
|
47
|
+
codeSetter(getCodeValue(codeLength, ''));
|
48
|
+
(_inputRefs$current$ = inputRefs.current[0]) === null || _inputRefs$current$ === void 0 || _inputRefs$current$.focus();
|
49
|
+
(_inputContainerRef$cu2 = inputContainerRef.current) === null || _inputContainerRef$cu2 === void 0 || _inputContainerRef$cu2.classList.remove(classes.codeError, classes.codeErrorAnimation, classes.codeErrorFade);
|
50
|
+
}, ANIMATION_TIMEOUT);
|
51
|
+
}
|
52
|
+
};
|
@@ -0,0 +1,50 @@
|
|
1
|
+
function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
|
2
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
3
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
4
|
+
function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
|
5
|
+
function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
|
6
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
7
|
+
import { classes } from "../CodeField.tokens";
|
8
|
+
import { ANIMATION_TIMEOUT } from "./constants";
|
9
|
+
export var handleItemError = function handleItemError(_ref) {
|
10
|
+
var _inputRefs$current$in, _inputRefs$current$in4;
|
11
|
+
var currentSymbol = _ref.currentSymbol,
|
12
|
+
itemErrorBehavior = _ref.itemErrorBehavior,
|
13
|
+
index = _ref.index,
|
14
|
+
newCode = _ref.newCode,
|
15
|
+
inputRefs = _ref.inputRefs,
|
16
|
+
setCode = _ref.setCode,
|
17
|
+
codeSetter = _ref.codeSetter;
|
18
|
+
if (!inputRefs.current[index] || currentSymbol === ' ') {
|
19
|
+
return;
|
20
|
+
}
|
21
|
+
switch (itemErrorBehavior) {
|
22
|
+
case 'keep':
|
23
|
+
setCode(newCode);
|
24
|
+
(_inputRefs$current$in = inputRefs.current[index]) === null || _inputRefs$current$in === void 0 || _inputRefs$current$in.classList.add(classes.itemError, classes.itemErrorAnimation);
|
25
|
+
setTimeout(function () {
|
26
|
+
var _inputRefs$current$in2;
|
27
|
+
(_inputRefs$current$in2 = inputRefs.current[index]) === null || _inputRefs$current$in2 === void 0 || _inputRefs$current$in2.classList.remove(classes.itemErrorAnimation);
|
28
|
+
setTimeout(function () {
|
29
|
+
var _inputRefs$current$in3;
|
30
|
+
return (_inputRefs$current$in3 = inputRefs.current[index]) === null || _inputRefs$current$in3 === void 0 ? void 0 : _inputRefs$current$in3.setSelectionRange(0, 1);
|
31
|
+
}, 0);
|
32
|
+
}, ANIMATION_TIMEOUT);
|
33
|
+
break;
|
34
|
+
case 'forbid-enter':
|
35
|
+
newCode[index] = '';
|
36
|
+
codeSetter(newCode);
|
37
|
+
break;
|
38
|
+
case 'remove-symbol':
|
39
|
+
default:
|
40
|
+
setCode(newCode);
|
41
|
+
(_inputRefs$current$in4 = inputRefs.current[index]) === null || _inputRefs$current$in4 === void 0 || _inputRefs$current$in4.classList.add(classes.itemError, classes.itemErrorFade, classes.itemErrorAnimation);
|
42
|
+
setTimeout(function () {
|
43
|
+
var _inputRefs$current$in5;
|
44
|
+
var updatedCode = _toConsumableArray(newCode);
|
45
|
+
updatedCode[index] = '';
|
46
|
+
codeSetter(updatedCode);
|
47
|
+
(_inputRefs$current$in5 = inputRefs.current[index]) === null || _inputRefs$current$in5 === void 0 || _inputRefs$current$in5.classList.remove(classes.itemError, classes.itemErrorFade, classes.itemErrorAnimation);
|
48
|
+
}, ANIMATION_TIMEOUT);
|
49
|
+
}
|
50
|
+
};
|
@@ -0,0 +1,24 @@
|
|
1
|
+
export var getFieldPattern = function getFieldPattern(allowedSymbols) {
|
2
|
+
if (!allowedSymbols) {
|
3
|
+
return null;
|
4
|
+
}
|
5
|
+
if (typeof allowedSymbols === 'string') {
|
6
|
+
return new RegExp(allowedSymbols, 'g');
|
7
|
+
}
|
8
|
+
return allowedSymbols;
|
9
|
+
};
|
10
|
+
export var getCodeValue = function getCodeValue(codeLength, value) {
|
11
|
+
if (!value.length) {
|
12
|
+
return new Array(codeLength).fill('');
|
13
|
+
}
|
14
|
+
return value.slice(0, codeLength).split('');
|
15
|
+
};
|
16
|
+
export var getPlaceholderValue = function getPlaceholderValue(codeLength, placeholder) {
|
17
|
+
if (!placeholder || typeof placeholder !== 'string') {
|
18
|
+
return null;
|
19
|
+
}
|
20
|
+
if (placeholder.length === 1) {
|
21
|
+
return Array(codeLength).fill(placeholder);
|
22
|
+
}
|
23
|
+
return placeholder.slice(0, codeLength).split('');
|
24
|
+
};
|
@@ -0,0 +1,4 @@
|
|
1
|
+
import { css } from 'styled-components';
|
2
|
+
import { tokens, classes } from "../../CodeField.tokens";
|
3
|
+
import { ItemInput } from "../../CodeField.styles";
|
4
|
+
export var base = /*#__PURE__*/css(["", "{border-radius:var(", ");&.", "{border-radius:var(", ");&:first-child{border-top-left-radius:var(", ");border-bottom-left-radius:var(", ");}&:last-child{border-top-right-radius:var(", ");border-bottom-right-radius:var(", ");}}}"], ItemInput, tokens.borderRadius, classes.segmented, tokens.borderRadiusSegmented, tokens.segmentedSideBorderRadius, tokens.segmentedSideBorderRadius, tokens.segmentedSideBorderRadius, tokens.segmentedSideBorderRadius);
|
@@ -0,0 +1 @@
|
|
1
|
+
["--plasma-codefield-code-item-border-radius", "--plasma-codefield-code-item-segmented-side-border-radius"]
|
@@ -0,0 +1,4 @@
|
|
1
|
+
import { css } from 'styled-components';
|
2
|
+
import { CaptionWrapper, CodeGroup, CodeWrapper, ItemInput } from "../../CodeField.styles";
|
3
|
+
import { tokens } from "../../CodeField.tokens";
|
4
|
+
export var base = /*#__PURE__*/css(["gap:var(", ");", ",", "{gap:var(", ");}", "{width:var(", ");height:var(", ");font-family:var(", ");font-size:var(", ");font-style:var(", ");font-weight:var(", ");letter-spacing:var(", ");line-height:var(", ");}", "{font-family:var(", ");font-size:var(", ");font-style:var(", ");font-weight:var(", ");letter-spacing:var(", ");line-height:var(", ");}"], tokens.captionGap, CodeWrapper, CodeGroup, tokens.codeItemsGap, ItemInput, tokens.codeItemWidth, tokens.codeItemHeight, tokens.fontFamily, tokens.fontSize, tokens.fontStyle, tokens.fontWeight, tokens.letterSpacing, tokens.lineHeight, CaptionWrapper, tokens.captionFontFamily, tokens.captionFontSize, tokens.captionFontStyle, tokens.captionFontWeight, tokens.captionLetterSpacing, tokens.captionLineHeight);
|
@@ -0,0 +1,19 @@
|
|
1
|
+
[
|
2
|
+
"--plasma-codefield-caption-gap",
|
3
|
+
"--plasma-codefield-code-item-gap",
|
4
|
+
"--plasma-codefield-separator-width",
|
5
|
+
"--plasma-codefield-item-width",
|
6
|
+
"--plasma-codefield-item-height",
|
7
|
+
"--plasma-codefield-font-family",
|
8
|
+
"--plasma-codefield-font-style",
|
9
|
+
"--plasma-codefield-font-size",
|
10
|
+
"--plasma-codefield-font-weight",
|
11
|
+
"--plasma-codefield-letter-spacing",
|
12
|
+
"--plasma-codefield-line-height",
|
13
|
+
"--plasma-codefield-caption-font-family",
|
14
|
+
"--plasma-codefield-caption-font-style",
|
15
|
+
"--plasma-codefield-caption-font-size",
|
16
|
+
"--plasma-codefield-caption-font-weight",
|
17
|
+
"--plasma-codefield-caption-letter-spacing",
|
18
|
+
"--plasma-codefield-caption-line-height"
|
19
|
+
]
|
@@ -0,0 +1,4 @@
|
|
1
|
+
import { css } from 'styled-components';
|
2
|
+
import { CaptionWrapper, ItemInput } from "../../CodeField.styles";
|
3
|
+
import { classes, tokens } from "../../CodeField.tokens";
|
4
|
+
export var base = /*#__PURE__*/css(["", "{color:var(", ");&.", "{color:var(", ");}}", "{color:var(", ");caret-color:var(", ");background-color:var(", ");box-shadow:inset 0 0 0 var(", ") var(", ");}&:hover{.", "{background-color:var(", ");box-shadow:inset 0 0 0 var(", ") var(", ");}}&:focus-within{", ":focus-within{background-color:var(", ");box-shadow:inset 0 0 0 var(", ") var(", ");}}&& .", "{animation:shakingError 0.3s forwards;}&& .", "{", "{color:var(", ");background-color:var(", ");box-shadow:inset 0 0 0 var(", ") var(", ");}&:focus-within{", "{background-color:var(", ");box-shadow:inset 0 0 0 var(", ") var(", ");}}&.", "{", "{animation:fadeError 0.3s forwards;}}}&& .", "{animation:shakingError 0.3s forwards;}&& .", ",&& .", ":focus-within{color:var(", ");background-color:var(", ");box-shadow:inset 0 0 0 var(", ") var(", ");&.", "{animation:shakingError 0.3s forwards fadeError 0.3s forwards;}}@keyframes shakingError{14%{transform:translateX(-0.125rem);}28%{transform:translateX(0.125rem);}42%{transform:translateX(-0.125rem);}57%{transform:translateX(0.125rem);}71%{transform:translateX(-0.125rem);}85%{transform:translateX(0.125rem);}100%{transform:translateX(-0.125rem);}}@keyframes fadeError{50%{color:var(", ");}100%{color:transparent;}}"], CaptionWrapper, tokens.captionColor, classes.captionError, tokens.captionColorError, ItemInput, tokens.codeColor, tokens.caretColor, tokens.backgroundColor, tokens.borderWidth, tokens.borderColor, classes.hoverEnabled, tokens.backgroundColorHover, tokens.borderWidth, tokens.borderColorHover, ItemInput, tokens.backgroundColorFocus, tokens.borderWidth, tokens.borderColorFocus, classes.codeErrorAnimation, classes.codeError, ItemInput, tokens.codeColorError, tokens.backgroundErrorColor, tokens.borderWidth, tokens.borderErrorColor, ItemInput, tokens.backgroundErrorColor, tokens.borderWidth, tokens.borderErrorColor, classes.codeErrorFade, ItemInput, classes.itemErrorAnimation, classes.itemError, classes.itemError, tokens.codeColorError, tokens.backgroundErrorColor, tokens.borderWidth, tokens.borderErrorColor, classes.codeErrorFade, tokens.codeColorError);
|
File without changes
|
@@ -131,14 +131,11 @@ export var NumberInput = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
131
131
|
}
|
132
132
|
return;
|
133
133
|
}
|
134
|
-
console.log('here');
|
135
134
|
var isValid = numberSchema.test(cleanValue);
|
136
135
|
if (!isValid) {
|
137
|
-
console.log('not valid', cleanValue);
|
138
136
|
setValues(event, lastValidValue);
|
139
137
|
return;
|
140
138
|
}
|
141
|
-
console.log('valid!', cleanValue);
|
142
139
|
if (textWrapperRef !== null && textWrapperRef !== void 0 && textWrapperRef.current && wrapperRef !== null && wrapperRef !== void 0 && wrapperRef.current && (textWrapperRef === null || textWrapperRef === void 0 || (_textWrapperRef$curre = textWrapperRef.current) === null || _textWrapperRef$curre === void 0 ? void 0 : _textWrapperRef$curre.clientWidth) > (wrapperRef === null || wrapperRef === void 0 || (_wrapperRef$current = wrapperRef.current) === null || _wrapperRef$current === void 0 ? void 0 : _wrapperRef$current.clientWidth)) {
|
143
140
|
wrapperRef.current.scrollLeft = textWrapperRef.current.offsetWidth - textWrapperRef.current.offsetLeft || 0;
|
144
141
|
}
|
@@ -0,0 +1,25 @@
|
|
1
|
+
import { css } from 'styled-components';
|
2
|
+
import { codeFieldTokens as tokens } from "../../../../components/CodeField";
|
3
|
+
export var config = {
|
4
|
+
defaults: {
|
5
|
+
view: 'default',
|
6
|
+
size: 'l',
|
7
|
+
shape: 'default'
|
8
|
+
},
|
9
|
+
variations: {
|
10
|
+
view: {
|
11
|
+
"default": /*#__PURE__*/css(["", ":var(--surface-accent);", ":var(--text-secondary);", ":var(--text-negative);", ":var(--text-primary);", ":var(--text-negative);", ":var(--surface-transparent-primary);", ":var(--surface-transparent-primary-hover);", ":var(--surface-transparent-secondary);", ":var(--surface-transparent-negative);"], tokens.caretColor, tokens.captionColor, tokens.captionColorError, tokens.codeColor, tokens.codeColorError, tokens.backgroundColor, tokens.backgroundColorHover, tokens.backgroundColorFocus, tokens.backgroundErrorColor)
|
12
|
+
},
|
13
|
+
size: {
|
14
|
+
l: /*#__PURE__*/css(["", ":0.875rem;", ":0.125rem;", ":0.25rem;", ":2.75rem;", ":3.5rem;", ":var(--plasma-typo-body-l-font-family);", ":var(--plasma-typo-body-l-font-size);", ":var(--plasma-typo-body-l-font-style);", ":var(--plasma-typo-body-l-bold-font-weight);", ":var(--plasma-typo-body-l-letter-spacing);", ":var(--plasma-typo-body-l-line-height);", ":var(--plasma-typo-body-s-font-family);", ":var(--plasma-typo-body-s-font-size);", ":var(--plasma-typo-body-s-font-style);", ":var(--plasma-typo-body-s-font-weight);", ":var(--plasma-typo-body-s-letter-spacing);", ":var(--plasma-typo-body-s-line-height);", ":0.875rem;", ":0.375rem;", ":0.875rem;"], tokens.captionGap, tokens.codeItemsGap, tokens.separatorWidth, tokens.codeItemWidth, tokens.codeItemHeight, tokens.fontFamily, tokens.fontSize, tokens.fontStyle, tokens.fontWeight, tokens.letterSpacing, tokens.lineHeight, tokens.captionFontFamily, tokens.captionFontSize, tokens.captionFontStyle, tokens.captionFontWeight, tokens.captionLetterSpacing, tokens.captionLineHeight, tokens.borderRadius, tokens.borderRadiusSegmented, tokens.segmentedSideBorderRadius),
|
15
|
+
m: /*#__PURE__*/css(["", ":0.75rem;", ":0.125rem;", ":0.25rem;", ":2.375rem;", ":3rem;", ":var(--plasma-typo-body-m-font-family);", ":var(--plasma-typo-body-m-font-size);", ":var(--plasma-typo-body-m-font-style);", ":var(--plasma-typo-body-m-bold-font-weight);", ":var(--plasma-typo-body-m-letter-spacing);", ":var(--plasma-typo-body-m-line-height);", ":var(--plasma-typo-body-xs-font-family);", ":var(--plasma-typo-body-xs-font-size);", ":var(--plasma-typo-body-xs-font-style);", ":var(--plasma-typo-body-xs-font-weight);", ":var(--plasma-typo-body-xs-letter-spacing);", ":var(--plasma-typo-body-xs-line-height);", ":0.75rem;", ":0.25rem;", ":0.75rem;"], tokens.captionGap, tokens.codeItemsGap, tokens.separatorWidth, tokens.codeItemWidth, tokens.codeItemHeight, tokens.fontFamily, tokens.fontSize, tokens.fontStyle, tokens.fontWeight, tokens.letterSpacing, tokens.lineHeight, tokens.captionFontFamily, tokens.captionFontSize, tokens.captionFontStyle, tokens.captionFontWeight, tokens.captionLetterSpacing, tokens.captionLineHeight, tokens.borderRadius, tokens.borderRadiusSegmented, tokens.segmentedSideBorderRadius)
|
16
|
+
},
|
17
|
+
shape: {
|
18
|
+
"default": /*#__PURE__*/css([""]),
|
19
|
+
segmented: /*#__PURE__*/css([""])
|
20
|
+
},
|
21
|
+
disabled: {
|
22
|
+
"true": /*#__PURE__*/css(["", ":0.4;"], tokens.disabledOpacity)
|
23
|
+
}
|
24
|
+
}
|
25
|
+
};
|
@@ -0,0 +1,5 @@
|
|
1
|
+
import { codeFieldConfig } from "../../../../components/CodeField";
|
2
|
+
import { component, mergeConfig } from "../../../../engines";
|
3
|
+
import { config } from "./CodeField.config";
|
4
|
+
var mergedConfig = /*#__PURE__*/mergeConfig(codeFieldConfig, config);
|
5
|
+
export var CodeField = /*#__PURE__*/component(mergedConfig);
|
@@ -0,0 +1,107 @@
|
|
1
|
+
import React, { ComponentProps, useState } from 'react';
|
2
|
+
import type { StoryObj, Meta } from '@storybook/react';
|
3
|
+
import { action } from '@storybook/addon-actions';
|
4
|
+
import { getConfigVariations } from '@salutejs/plasma-sb-utils';
|
5
|
+
|
6
|
+
import { WithTheme } from '../../../_helpers';
|
7
|
+
|
8
|
+
import { CodeField } from './CodeField';
|
9
|
+
import { config } from './CodeField.config';
|
10
|
+
|
11
|
+
const onChange = action('onChange');
|
12
|
+
const onFullCodeEnter = action('onFullCodeEnter');
|
13
|
+
|
14
|
+
const { views, sizes } = getConfigVariations(config);
|
15
|
+
const codeLengths = [4, 5, 6];
|
16
|
+
const shapes = ['default', 'segmented'];
|
17
|
+
const captionAlignVariants = ['left', 'center'];
|
18
|
+
const itemErrorBehaviorVariants = ['remove-symbol', 'keep', 'forbid-enter'];
|
19
|
+
const codeErrorBehaviorVariants = ['remove-code', 'keep'];
|
20
|
+
|
21
|
+
const meta: Meta<typeof CodeField> = {
|
22
|
+
title: 'b2c/Data Entry/CodeField',
|
23
|
+
component: CodeField,
|
24
|
+
decorators: [WithTheme],
|
25
|
+
argTypes: {
|
26
|
+
view: {
|
27
|
+
options: views,
|
28
|
+
control: {
|
29
|
+
type: 'select',
|
30
|
+
},
|
31
|
+
},
|
32
|
+
size: {
|
33
|
+
options: sizes,
|
34
|
+
control: {
|
35
|
+
type: 'inline-radio',
|
36
|
+
},
|
37
|
+
},
|
38
|
+
shape: {
|
39
|
+
options: shapes,
|
40
|
+
control: {
|
41
|
+
type: 'inline-radio',
|
42
|
+
},
|
43
|
+
},
|
44
|
+
captionAlign: {
|
45
|
+
options: captionAlignVariants,
|
46
|
+
control: {
|
47
|
+
type: 'inline-radio',
|
48
|
+
},
|
49
|
+
},
|
50
|
+
codeLength: {
|
51
|
+
options: codeLengths,
|
52
|
+
control: {
|
53
|
+
type: 'inline-radio',
|
54
|
+
},
|
55
|
+
},
|
56
|
+
itemErrorBehavior: {
|
57
|
+
options: itemErrorBehaviorVariants,
|
58
|
+
control: {
|
59
|
+
type: 'inline-radio',
|
60
|
+
},
|
61
|
+
},
|
62
|
+
codeErrorBehavior: {
|
63
|
+
options: codeErrorBehaviorVariants,
|
64
|
+
control: {
|
65
|
+
type: 'inline-radio',
|
66
|
+
},
|
67
|
+
},
|
68
|
+
},
|
69
|
+
parameters: {
|
70
|
+
controls: {
|
71
|
+
exclude: ['view'],
|
72
|
+
},
|
73
|
+
},
|
74
|
+
};
|
75
|
+
|
76
|
+
export default meta;
|
77
|
+
|
78
|
+
type StoryPropsDefault = ComponentProps<typeof CodeField>;
|
79
|
+
|
80
|
+
const StoryDefault = (args: StoryPropsDefault) => {
|
81
|
+
const [value, setValue] = useState('');
|
82
|
+
|
83
|
+
const handleChange = (newValue: string) => {
|
84
|
+
setValue(newValue);
|
85
|
+
onChange(newValue);
|
86
|
+
};
|
87
|
+
|
88
|
+
return <CodeField {...args} value={value} onChange={handleChange} onFullCodeEnter={onFullCodeEnter} />;
|
89
|
+
};
|
90
|
+
|
91
|
+
export const Default: StoryObj<StoryPropsDefault> = {
|
92
|
+
args: {
|
93
|
+
view: 'default',
|
94
|
+
size: 'm',
|
95
|
+
shape: 'default',
|
96
|
+
codeLength: 6,
|
97
|
+
caption: 'Caption',
|
98
|
+
captionAlign: 'center',
|
99
|
+
width: '',
|
100
|
+
isError: false,
|
101
|
+
itemErrorBehavior: 'remove-symbol',
|
102
|
+
codeErrorBehavior: 'keep',
|
103
|
+
autoFocus: true,
|
104
|
+
disabled: false,
|
105
|
+
},
|
106
|
+
render: StoryDefault,
|
107
|
+
};
|