|
1 | | -import React, {useEffect, useState} from 'react'; |
2 | | -import {useLibrary} from '@strapi/helper-plugin'; |
| 1 | +import React, {useState} from 'react'; |
| 2 | +import {prefixFileUrlWithBackendUrl, useLibrary} from '@strapi/helper-plugin'; |
3 | 3 | import PropTypes from 'prop-types'; |
4 | 4 |
|
5 | | -const MediaLibComponent = ({isOpen, onChange, toggle}) => { |
| 5 | +const MediaLibComponent = ({isOpen, onChange, onToggle}) => { |
6 | 6 |
|
7 | 7 | const { components } = useLibrary(); |
8 | 8 | const [data, setData] = useState(null); |
9 | | - const [isDisplayed, setIsDisplayed] = useState(false); |
10 | 9 |
|
11 | | - useEffect(() => { |
12 | | - if (isOpen) { |
13 | | - setIsDisplayed(true); |
14 | | - } |
15 | | - }, [isOpen]); |
16 | | - |
17 | | - const Component = components['media-library']; |
| 10 | + const MediaLibraryDialog = components['media-library']; |
18 | 11 |
|
19 | 12 | const handleInputChange = data => { |
20 | 13 | if (data) { |
| 14 | + console.log(data); |
21 | 15 | setData(data); |
22 | 16 | } |
23 | 17 | }; |
24 | 18 |
|
25 | | - const handleClosed = () => { |
26 | | - if (data) { |
27 | | - onChange(data); |
28 | | - } |
29 | | - |
30 | | - setData(null); |
31 | | - setIsDisplayed(false); |
| 19 | + const handleSelectAssets = files => { |
| 20 | + const formattedFiles = files.map(f => ({ |
| 21 | + alt: f.alternativeText || f.name, |
| 22 | + url: prefixFileUrlWithBackendUrl(f.url), |
| 23 | + mime: f.mime, |
| 24 | + })); |
| 25 | + console.log('handleSelectAssets'); |
| 26 | + onChange(formattedFiles); |
32 | 27 | }; |
33 | 28 |
|
34 | | - if (Component && isDisplayed) { |
35 | | - return ( |
36 | | - <Component |
37 | | - allowedTypes={['images']} |
38 | | - isOpen={isOpen} |
39 | | - multiple={true} |
40 | | - onClosed={handleClosed} |
41 | | - onInputMediaChange={handleInputChange} |
42 | | - onToggle={toggle} |
43 | | - /> |
44 | | - ); |
| 29 | + if(!isOpen) { |
| 30 | + return null; |
45 | 31 | } |
46 | 32 |
|
47 | | - return null; |
| 33 | + return ( |
| 34 | + <MediaLibraryDialog |
| 35 | + allowedTypes={['images']} |
| 36 | + onClose={onToggle} |
| 37 | + onInputMediaChange={[handleInputChange, onToggle]} |
| 38 | + onSelectAssets={handleSelectAssets} |
| 39 | + /> |
| 40 | + ); |
| 41 | + |
48 | 42 | }; |
49 | 43 |
|
50 | 44 | MediaLibComponent.defaultProps = { |
51 | 45 | isOpen: false, |
| 46 | + onChange: () => {}, |
| 47 | + onToggle: () => {}, |
52 | 48 | }; |
53 | 49 |
|
54 | 50 | MediaLibComponent.propTypes = { |
55 | 51 | isOpen: PropTypes.bool, |
56 | 52 | onChange: PropTypes.func, |
57 | | - toggle: PropTypes.func, |
| 53 | + onToggle: PropTypes.func, |
58 | 54 | }; |
59 | 55 |
|
60 | 56 | export default MediaLibComponent; |
0 commit comments