@xaypay/tui 0.0.72 → 0.0.74
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/dist/index.es.js +481 -268
- package/dist/index.js +481 -268
- package/package.json +1 -1
- package/src/components/icon/Close.js +19 -0
- package/src/components/icon/index.js +1 -2
- package/src/components/modal/index.js +231 -66
- package/src/components/modal/modal.stories.js +22 -7
- package/src/components/newAutocomplete/NewAutocomplete.stories.js +3 -2
- package/src/components/newAutocomplete/index.js +12 -2
- package/src/components/newFile/index.js +12 -6
- package/src/components/newFile/newFile.stories.js +1 -1
- package/src/components/pagination/index.js +74 -3
- package/src/components/pagination/pagination.module.css +13 -1
- package/src/components/pagination/pagination.stories.js +4 -2
- package/src/components/select/index.js +9 -2
- package/src/components/select/select.stories.js +0 -1
- package/src/components/typography/index.js +1 -1
- package/src/components/typography/typography.stories.js +2 -1
- package/src/stories/configuration.stories.mdx +3 -0
- package/tui.config.js +11 -17
package/package.json
CHANGED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
const SvgClose = ({ title, titleId, ...props }) => (
|
|
3
|
+
<svg
|
|
4
|
+
width="18"
|
|
5
|
+
height="18"
|
|
6
|
+
viewBox="0 0 18 18"
|
|
7
|
+
fill="none"
|
|
8
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
9
|
+
aria-labelledby={titleId}
|
|
10
|
+
{...props}
|
|
11
|
+
>
|
|
12
|
+
{title ? <title id={titleId}>{title}</title> : null}
|
|
13
|
+
<path
|
|
14
|
+
d="m10.47 8.95 7.29-7.29A1 1 0 0 0 16.35.25L9.06 7.54 1.77.24A1 1 0 0 0 .36 1.65l7.29 7.3-7.3 7.29a.999.999 0 1 0 1.41 1.41l7.3-7.29 7.29 7.29a1 1 0 0 0 1.41-1.41l-7.29-7.29Z"
|
|
15
|
+
fill="#3C393E"
|
|
16
|
+
/>
|
|
17
|
+
</svg>
|
|
18
|
+
);
|
|
19
|
+
export default SvgClose;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { default as Png } from "./Png";
|
|
1
|
+
|
|
@@ -1,95 +1,260 @@
|
|
|
1
|
-
import React, { useState } from
|
|
2
|
-
import PropTypes from
|
|
3
|
-
import classnames from
|
|
4
|
-
|
|
5
|
-
import
|
|
6
|
-
import
|
|
1
|
+
import React, { useState, useEffect } from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import classnames from 'classnames';
|
|
4
|
+
|
|
5
|
+
import SvgCloseIcon from './../icon/CloseIcon';
|
|
6
|
+
import SvgNextarrow from './../icon/Nextarrow';
|
|
7
7
|
|
|
8
8
|
export const Modal = ({
|
|
9
|
-
setShow,
|
|
10
|
-
headerText,
|
|
11
|
-
className,
|
|
12
9
|
type,
|
|
13
10
|
data,
|
|
11
|
+
setShow,
|
|
14
12
|
selected,
|
|
15
13
|
children,
|
|
14
|
+
className,
|
|
15
|
+
headerText,
|
|
16
16
|
}) => {
|
|
17
|
-
const classProps = classnames(
|
|
18
|
-
|
|
17
|
+
const classProps = classnames(className);
|
|
18
|
+
|
|
19
|
+
const [select, setSelect] = useState(0);
|
|
20
|
+
const [innerData, setInnerData] = useState([]);
|
|
21
|
+
|
|
22
|
+
const handleCloseModal = () => {
|
|
23
|
+
setShow(false)
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
const handleStopClosing = (e) => {
|
|
27
|
+
e.stopPropagation();
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
const handleGoTo = (e) => {
|
|
31
|
+
const goTo = e.target.getAttribute('data-go');
|
|
32
|
+
if (goTo === 'next') {
|
|
33
|
+
if (select >= data.length - 1) {
|
|
34
|
+
setSelect(0);
|
|
35
|
+
} else {
|
|
36
|
+
setSelect(select + 1);
|
|
37
|
+
}
|
|
38
|
+
} else {
|
|
39
|
+
if (select <= 0) {
|
|
40
|
+
setSelect(data.length - 1);
|
|
41
|
+
} else {
|
|
42
|
+
setSelect(select - 1);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
useEffect(() => {
|
|
48
|
+
if (type === 'images') {
|
|
49
|
+
if (data) {
|
|
50
|
+
if (data.length === 0) {
|
|
51
|
+
alert('Please fill data prop');
|
|
52
|
+
} else {
|
|
53
|
+
setInnerData(data);
|
|
54
|
+
}
|
|
55
|
+
} else {
|
|
56
|
+
alert('Please add data prop on Modal component');
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}, [type, data, data?.length]);
|
|
60
|
+
|
|
61
|
+
useEffect(() => {
|
|
62
|
+
if (selected) {
|
|
63
|
+
if (selected <= 0) {
|
|
64
|
+
setSelect(0);
|
|
65
|
+
} else if (selected >= data.length - 1) {
|
|
66
|
+
setSelect(data.length - 1);
|
|
67
|
+
} else {
|
|
68
|
+
setSelect(selected);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}, [selected]);
|
|
72
|
+
|
|
73
|
+
useEffect(() => {
|
|
74
|
+
return () => {
|
|
75
|
+
setSelect(0);
|
|
76
|
+
setInnerData([]);
|
|
77
|
+
}
|
|
78
|
+
}, []);
|
|
79
|
+
|
|
19
80
|
return (
|
|
20
|
-
<div
|
|
21
|
-
{
|
|
81
|
+
<div
|
|
82
|
+
onClick={handleCloseModal}
|
|
83
|
+
style={{
|
|
84
|
+
position: 'fixed',
|
|
85
|
+
top: '0px',
|
|
86
|
+
left: '0px',
|
|
87
|
+
zIndex: 999,
|
|
88
|
+
width: '100%',
|
|
89
|
+
height: '100vh',
|
|
90
|
+
backgroundColor: 'rgba(0,0,0,0.4)' // TODO: config
|
|
91
|
+
}}
|
|
92
|
+
>
|
|
93
|
+
<div
|
|
94
|
+
style={{
|
|
95
|
+
position: 'relative',
|
|
96
|
+
width: '100%',
|
|
97
|
+
height: '100vh'
|
|
98
|
+
}}
|
|
99
|
+
>
|
|
22
100
|
<div
|
|
23
|
-
className={
|
|
24
|
-
onClick={
|
|
25
|
-
|
|
101
|
+
className={classProps}
|
|
102
|
+
onClick={handleStopClosing}
|
|
103
|
+
style={{
|
|
104
|
+
position: 'absolute',
|
|
105
|
+
top: '0px',
|
|
106
|
+
left: '0px',
|
|
107
|
+
right: '0px',
|
|
108
|
+
bottom: '0px',
|
|
109
|
+
margin: 'auto',
|
|
110
|
+
maxWidth: '95%',
|
|
111
|
+
overflow: 'auto',
|
|
112
|
+
maxHeight: '95vh',
|
|
113
|
+
width: 'fit-content',
|
|
114
|
+
borderRadius: '14px',
|
|
115
|
+
height: 'fit-content',
|
|
116
|
+
boxSizing: 'border-box',
|
|
117
|
+
backgroundColor: 'white',
|
|
118
|
+
padding: '10px 20px 20px',
|
|
119
|
+
// TODO: animation
|
|
26
120
|
}}
|
|
27
121
|
>
|
|
28
|
-
<div
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
122
|
+
<div
|
|
123
|
+
style={{
|
|
124
|
+
display: 'flex',
|
|
125
|
+
width: '100%',
|
|
126
|
+
height: '27px',
|
|
127
|
+
alignItems: 'center',
|
|
128
|
+
backgroundColor: '#fbfbfb',
|
|
129
|
+
justifyContent: headerText && type === 'content' ? 'space-between' : 'flex-end'
|
|
130
|
+
}}
|
|
131
|
+
>
|
|
132
|
+
{
|
|
133
|
+
headerText && type === 'content' && <p
|
|
134
|
+
style={{
|
|
135
|
+
color: '#00236a',
|
|
136
|
+
fontSize: '20px',
|
|
137
|
+
fontWeight: '600',
|
|
138
|
+
overflow: 'hidden',
|
|
139
|
+
whiteSpace: 'nowrap',
|
|
140
|
+
textOverflow: 'ellipsis',
|
|
141
|
+
margin: '0px 16px 0px 0px',
|
|
142
|
+
maxWidth: 'calc(100% - 30px)'
|
|
143
|
+
}}
|
|
144
|
+
>{headerText}</p>
|
|
145
|
+
}
|
|
32
146
|
<div
|
|
33
|
-
|
|
34
|
-
|
|
147
|
+
onClick={handleCloseModal}
|
|
148
|
+
style={{
|
|
149
|
+
width: '14px',
|
|
150
|
+
height: '14px',
|
|
151
|
+
cursor: 'pointer'
|
|
152
|
+
}}
|
|
35
153
|
>
|
|
36
|
-
<
|
|
154
|
+
<SvgCloseIcon />
|
|
37
155
|
</div>
|
|
38
156
|
</div>
|
|
39
|
-
|
|
40
|
-
</div>
|
|
41
|
-
) : type == "images" ? (
|
|
42
|
-
<div
|
|
43
|
-
className={`${styles["modal-content"]} modal-content-rem`}
|
|
44
|
-
onClick={(e) => {
|
|
45
|
-
e.stopPropagation();
|
|
46
|
-
}}
|
|
47
|
-
>
|
|
157
|
+
|
|
48
158
|
<div
|
|
49
|
-
|
|
50
|
-
|
|
159
|
+
style={{
|
|
160
|
+
display: 'flex',
|
|
161
|
+
paddingTop: '10px',
|
|
162
|
+
alignItems: 'center',
|
|
163
|
+
boxSizing: 'border-box',
|
|
164
|
+
justifyContent: 'center'
|
|
165
|
+
}}
|
|
51
166
|
>
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
{data.map((elem) => {
|
|
61
|
-
if (select == elem.id) {
|
|
62
|
-
return (
|
|
63
|
-
<img
|
|
64
|
-
width="600px"
|
|
65
|
-
key={elem.id}
|
|
66
|
-
src={elem.url}
|
|
67
|
-
/>
|
|
68
|
-
);
|
|
69
|
-
}
|
|
70
|
-
})}
|
|
71
|
-
{select < data.length ? (
|
|
72
|
-
<h1
|
|
73
|
-
onClick={() => {
|
|
74
|
-
setSelect(select + 1);
|
|
167
|
+
{
|
|
168
|
+
type === 'content'
|
|
169
|
+
?
|
|
170
|
+
children ? children : ''
|
|
171
|
+
:
|
|
172
|
+
<div
|
|
173
|
+
style={{
|
|
174
|
+
width: '100%'
|
|
75
175
|
}}
|
|
76
176
|
>
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
177
|
+
{
|
|
178
|
+
innerData && innerData.length > 0 && innerData.map((item, index) => {
|
|
179
|
+
if (select === index) {
|
|
180
|
+
if (!item.hasOwnProperty('url')) {
|
|
181
|
+
alert('Please add url property in data prop on each element');
|
|
182
|
+
} else {
|
|
183
|
+
return (
|
|
184
|
+
<img
|
|
185
|
+
style={{
|
|
186
|
+
width: '600px',
|
|
187
|
+
height: '300px',
|
|
188
|
+
objectFit: 'cover',
|
|
189
|
+
objectPosition: 'center'
|
|
190
|
+
}}
|
|
191
|
+
src={item.url}
|
|
192
|
+
/>
|
|
193
|
+
)
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
})
|
|
197
|
+
}
|
|
198
|
+
<div
|
|
199
|
+
style={{
|
|
200
|
+
marginTop: '10px'
|
|
201
|
+
}}
|
|
202
|
+
>
|
|
203
|
+
<button
|
|
204
|
+
onClick={handleGoTo}
|
|
205
|
+
data-go='prev'
|
|
206
|
+
style={{
|
|
207
|
+
padding: '8px',
|
|
208
|
+
outline: 'none',
|
|
209
|
+
cursor: 'pointer',
|
|
210
|
+
marginRight: '10px',
|
|
211
|
+
borderRadius: '6px',
|
|
212
|
+
alignItems: 'center',
|
|
213
|
+
display: 'inline-flex',
|
|
214
|
+
justifyContent: 'center',
|
|
215
|
+
backgroundColor: 'white',
|
|
216
|
+
transform: 'rotate(180deg)',
|
|
217
|
+
border: '1px solid #979090'
|
|
218
|
+
}}
|
|
219
|
+
>
|
|
220
|
+
<SvgNextarrow />
|
|
221
|
+
</button>
|
|
222
|
+
<button
|
|
223
|
+
onClick={handleGoTo}
|
|
224
|
+
data-go='next'
|
|
225
|
+
style={{
|
|
226
|
+
padding: '8px',
|
|
227
|
+
outline: 'none',
|
|
228
|
+
cursor: 'pointer',
|
|
229
|
+
borderRadius: '6px',
|
|
230
|
+
alignItems: 'center',
|
|
231
|
+
display: 'inline-flex',
|
|
232
|
+
justifyContent: 'center',
|
|
233
|
+
backgroundColor: 'white',
|
|
234
|
+
border: '1px solid #979090'
|
|
235
|
+
}}
|
|
236
|
+
>
|
|
237
|
+
<SvgNextarrow />
|
|
238
|
+
</button>
|
|
239
|
+
</div>
|
|
240
|
+
</div>
|
|
241
|
+
}
|
|
81
242
|
</div>
|
|
82
243
|
</div>
|
|
83
|
-
|
|
244
|
+
</div>
|
|
84
245
|
</div>
|
|
85
246
|
);
|
|
86
247
|
};
|
|
87
248
|
|
|
88
249
|
Modal.propTypes = {
|
|
250
|
+
data: PropTypes.array,
|
|
251
|
+
type: PropTypes.string,
|
|
89
252
|
setShow: PropTypes.func,
|
|
90
|
-
|
|
253
|
+
selected: PropTypes.number,
|
|
91
254
|
className: PropTypes.string,
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
255
|
+
headerText: PropTypes.string,
|
|
256
|
+
};
|
|
257
|
+
|
|
258
|
+
Modal.defaultProps = {
|
|
259
|
+
type: 'content'
|
|
95
260
|
};
|
|
@@ -8,6 +8,7 @@ export default {
|
|
|
8
8
|
|
|
9
9
|
const Template = ({ headerText, className }) => {
|
|
10
10
|
const [show, setShow] = useState(false);
|
|
11
|
+
const [type, setType] = useState('content');
|
|
11
12
|
const data = [
|
|
12
13
|
{
|
|
13
14
|
url: 'https://images.pexels.com/photos/268533/pexels-photo-268533.jpeg?cs=srgb&dl=pexels-pixabay-268533.jpg&fm=jpg',
|
|
@@ -29,18 +30,32 @@ const Template = ({ headerText, className }) => {
|
|
|
29
30
|
url: 'https://media.istockphoto.com/id/500221043/photo/cascade-yerevan.jpg?s=612x612&w=0&k=20&c=vaULCkIZaIbetZlkFnP20ELnD8cyhlc9cRsvt-X5YAk=',
|
|
30
31
|
id: 5
|
|
31
32
|
}
|
|
32
|
-
]
|
|
33
|
+
];
|
|
34
|
+
|
|
33
35
|
const handleClick = () => {
|
|
34
36
|
setShow(true);
|
|
35
37
|
};
|
|
38
|
+
|
|
39
|
+
const handleChangeType = () => {
|
|
40
|
+
if (type === 'content') {
|
|
41
|
+
setType('images');
|
|
42
|
+
} else {
|
|
43
|
+
setType('content');
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
|
|
36
47
|
return (
|
|
37
48
|
<>
|
|
38
|
-
<button
|
|
49
|
+
<button
|
|
50
|
+
onClick={handleClick}
|
|
51
|
+
style={{ cursor: 'pointer', padding: '8px', fontSize: '16px', marginRight: '10px' }}
|
|
52
|
+
>Click</button>
|
|
53
|
+
<button
|
|
54
|
+
onClick={handleChangeType}
|
|
55
|
+
style={{ cursor: 'pointer', padding: '8px', fontSize: '16px' }}
|
|
56
|
+
>Change type to {type === 'content' ? 'images' : 'content'}</button>
|
|
39
57
|
{show && (
|
|
40
|
-
|
|
41
|
-
<Modal type='content' headerText="test">
|
|
42
|
-
<div>TEst</div>
|
|
43
|
-
</Modal>
|
|
58
|
+
<Modal type={type} selected={0} data={data} setShow={setShow} headerText={headerText} className={className}></Modal>
|
|
44
59
|
)}
|
|
45
60
|
</>
|
|
46
61
|
);
|
|
@@ -49,6 +64,6 @@ const Template = ({ headerText, className }) => {
|
|
|
49
64
|
export const Default = Template.bind({});
|
|
50
65
|
|
|
51
66
|
Default.args = {
|
|
52
|
-
headerText: "
|
|
67
|
+
headerText: "Modal header text",
|
|
53
68
|
className: "Modal",
|
|
54
69
|
};
|
|
@@ -28,7 +28,7 @@ const Template = (args) => {
|
|
|
28
28
|
method: 'GET',
|
|
29
29
|
headers: {
|
|
30
30
|
'Content-Type': 'application/json',
|
|
31
|
-
'Authorization': 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.
|
|
31
|
+
'Authorization': 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiIwMjE0NzEyYTllNzQwZWMyMjNhYzE2MGQyNGVkY2UzNyIsImp0aSI6IjRlZTI2OGU3NjhkMjA0YTdiMWM1NjU4NzE2Mjg0OTdjNTlmMmZjYjc4YzdiZTRjYTYzZGUyYjZmNjZjMzU3YjI0MzMwZjRhOTc5OGRjZDY4IiwiaWF0IjoxNjgxMzYzNDI2LjE0NDc0NywibmJmIjoxNjgxMzYzNDI2LjE0NDc1NCwiZXhwIjoxNjgxMzg4NjI2LjExODkzNywic3ViIjoibWluYXNAbWFpbC5ydSIsInNjb3BlcyI6WyJlbWFpbCJdfQ.nGU1Jf4XeVEqOHCXfDsjL-q--jTDrjlACMolSISUpviSaEDVLCI6BpY5_YYjOWRBUr4Utl_guFqpnb9jxbWdugL6_uFBANj1v0bi_g-RlzzeqF0FqlUqf1YZ_8S4c-l8nLsqfSDzPJs3nRB6oJVo7Di2O3fS_ka5MCkTXShzI6UJUZEvV4j60_QD7SmqmnDiij2rnfWt76YrNXZpDHt-zWMw6d7gD_pnX5RJ0YHUaXi2-M9ip-OcJfX4e_w7iMnckecaCfUolIO_rYNnHy6mleHX6Dimu6_niyMr0dj1ph9glv7fOHrIDwXx69AfJ4nuUQBa-G_AE9abot8cVzlPXAkwVa8WVkvH2mtzDgQuBLbQDM2VISqxO8j5jZhC9JDuXKN8TGukiBbePkWmpd9ASYaLQC02OqzZxqCaBBXCd72XMrwIynyjyTAW9t-VeraxFJgZwlqCnwZ7eTiIWSpPT7B5CLVumC24kz_ll8Tdbz4tMo0xdHNggD-hdPhciyVsaLk0q0Hx-vyIlKMS0KPez4EULQT2C3HaR5t81Pf4Qq06zLPXnKXXnoFc_p3u8TGDdqVXQBPdV1W8ck_3-hwIe-QzM5TbqTJjehiiH64QMcFTsJs--2APXNy3nBmU0D98is_eBGgHbgLJgck5v7MgYBaAaPjPf2lxtS-DF76ynQQ',
|
|
32
32
|
},
|
|
33
33
|
}).then((res)=> {
|
|
34
34
|
return res.json()
|
|
@@ -46,5 +46,6 @@ const Template = (args) => {
|
|
|
46
46
|
};
|
|
47
47
|
export const Default = Template.bind({});
|
|
48
48
|
Default.args = {
|
|
49
|
-
searchCount: 3
|
|
49
|
+
searchCount: 3,
|
|
50
|
+
selected: 'Jhon'
|
|
50
51
|
}
|
|
@@ -12,6 +12,7 @@ export const NewAutocomplete = ({
|
|
|
12
12
|
getItem,
|
|
13
13
|
required,
|
|
14
14
|
disabled,
|
|
15
|
+
selected,
|
|
15
16
|
errorSize,
|
|
16
17
|
labelSize,
|
|
17
18
|
errorColor,
|
|
@@ -140,7 +141,7 @@ export const NewAutocomplete = ({
|
|
|
140
141
|
const optionList = (
|
|
141
142
|
<>
|
|
142
143
|
{
|
|
143
|
-
show && innerOptions
|
|
144
|
+
show && innerOptions && !disabled
|
|
144
145
|
?
|
|
145
146
|
innerOptions.length > 0
|
|
146
147
|
?
|
|
@@ -248,7 +249,7 @@ export const NewAutocomplete = ({
|
|
|
248
249
|
}
|
|
249
250
|
|
|
250
251
|
options && setInnerOptions(options);
|
|
251
|
-
}, [options, options
|
|
252
|
+
}, [options, options?.length, getItem]);
|
|
252
253
|
|
|
253
254
|
useEffect(() => {
|
|
254
255
|
if (!change) {
|
|
@@ -256,6 +257,14 @@ export const NewAutocomplete = ({
|
|
|
256
257
|
}
|
|
257
258
|
}, [change]);
|
|
258
259
|
|
|
260
|
+
useEffect(() => {
|
|
261
|
+
if (selected) {
|
|
262
|
+
setInnerValue(selected);
|
|
263
|
+
} else {
|
|
264
|
+
setInnerValue('');
|
|
265
|
+
}
|
|
266
|
+
}, [selected, selected?.length]);
|
|
267
|
+
|
|
259
268
|
return (
|
|
260
269
|
<>
|
|
261
270
|
{
|
|
@@ -354,6 +363,7 @@ NewAutocomplete.propTypes = {
|
|
|
354
363
|
label: PropTypes.string,
|
|
355
364
|
required: PropTypes.bool,
|
|
356
365
|
disabled: PropTypes.bool,
|
|
366
|
+
selected: PropTypes.string,
|
|
357
367
|
errorSize: PropTypes.string,
|
|
358
368
|
labelSize: PropTypes.string,
|
|
359
369
|
errorColor: PropTypes.string,
|
|
@@ -39,9 +39,12 @@ export const NewFile = ({
|
|
|
39
39
|
borderColor,
|
|
40
40
|
uploadColor,
|
|
41
41
|
defaultData,
|
|
42
|
+
formatError,
|
|
42
43
|
errorMessage,
|
|
43
44
|
fileSizeText,
|
|
45
|
+
maxSizeError,
|
|
44
46
|
progressColor,
|
|
47
|
+
noChoosenFile,
|
|
45
48
|
fileExtensions,
|
|
46
49
|
listItemHeight,
|
|
47
50
|
backgroundColor,
|
|
@@ -106,20 +109,20 @@ export const NewFile = ({
|
|
|
106
109
|
change({
|
|
107
110
|
file: file[ix],
|
|
108
111
|
uuid: uuidv4(),
|
|
109
|
-
check:
|
|
112
|
+
check: formatError
|
|
110
113
|
});
|
|
111
114
|
}
|
|
112
115
|
} else {
|
|
113
116
|
change({
|
|
114
117
|
file: file[ix],
|
|
115
118
|
uuid: uuidv4(),
|
|
116
|
-
check:
|
|
119
|
+
check: maxSizeError
|
|
117
120
|
});
|
|
118
121
|
}
|
|
119
122
|
}
|
|
120
123
|
}
|
|
121
124
|
if (file.length === 0 && memoizedItems.length === 0) {
|
|
122
|
-
setError(
|
|
125
|
+
setError(noChoosenFile);
|
|
123
126
|
}
|
|
124
127
|
} else {
|
|
125
128
|
if (file[0]) {
|
|
@@ -135,16 +138,16 @@ export const NewFile = ({
|
|
|
135
138
|
}
|
|
136
139
|
} else {
|
|
137
140
|
setImage(null);
|
|
138
|
-
setError(
|
|
141
|
+
setError(formatError);
|
|
139
142
|
}
|
|
140
143
|
} else {
|
|
141
144
|
setImage(null);
|
|
142
|
-
setError(
|
|
145
|
+
setError(maxSizeError);
|
|
143
146
|
}
|
|
144
147
|
}
|
|
145
148
|
if (file.length === 0) {
|
|
146
149
|
setImage(null);
|
|
147
|
-
setError(
|
|
150
|
+
setError(noChoosenFile);
|
|
148
151
|
}
|
|
149
152
|
}
|
|
150
153
|
};
|
|
@@ -450,12 +453,15 @@ NewFile.propTypes = {
|
|
|
450
453
|
labelSize: PropTypes.string,
|
|
451
454
|
labelColor: PropTypes.string,
|
|
452
455
|
errorColor: PropTypes.string,
|
|
456
|
+
formatError: PropTypes.string,
|
|
453
457
|
putFileHere: PropTypes.string,
|
|
454
458
|
borderColor: PropTypes.string,
|
|
455
459
|
uploadColor: PropTypes.string,
|
|
456
460
|
defaultData: PropTypes.object,
|
|
461
|
+
maxSizeError: PropTypes.string,
|
|
457
462
|
errorMessage: PropTypes.string,
|
|
458
463
|
fileSizeText: PropTypes.string,
|
|
464
|
+
noChoosenFile: PropTypes.string,
|
|
459
465
|
progressColor: PropTypes.string,
|
|
460
466
|
deleteComponent: PropTypes.bool,
|
|
461
467
|
listItemHeight: PropTypes.string,
|
|
@@ -33,7 +33,7 @@ const Template = (args) => {
|
|
|
33
33
|
export const Default = Template.bind({});
|
|
34
34
|
Default.args = {
|
|
35
35
|
label: 'File component',
|
|
36
|
-
deleteComponent:
|
|
36
|
+
deleteComponent: false,
|
|
37
37
|
disabled: false,
|
|
38
38
|
defaultData: {
|
|
39
39
|
url: 'https://images.pexels.com/photos/753626/pexels-photo-753626.jpeg?auto=compress&cs=tinysrgb&w=1600',
|