Skip to content
This repository was archived by the owner on Dec 23, 2023. It is now read-only.

Commit fb5a907

Browse files
committed
fix: fixed the image tool. Now able to add images from the media library, and automatically shuts the media library window after saving.
1 parent f84d3a0 commit fb5a907

3 files changed

Lines changed: 32 additions & 36 deletions

File tree

admin/src/components/editorjs/index.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@ const Editor = ({ onChange, name, value }) => {
2020
}), []);
2121

2222
const handleMediaLibChange = useCallback((data) => {
23-
2423
changeFunc({
2524
indexStateSetter: setMediaLibBlockIndex,
2625
data,
2726
index: mediaLibBlockIndex,
2827
editor: editorInstance
2928
});
29+
mediaLibToggleFunc();
3030
}, [mediaLibBlockIndex, editorInstance]);
3131

3232
const customImageTool = {
@@ -52,17 +52,17 @@ const Editor = ({ onChange, name, value }) => {
5252
}}
5353
onChange={(api, newData) => {
5454
if (newData.blocks.length) {
55-
onChange({target: {name, value: JSON.stringify(newData)}})
55+
onChange({target: {name, value: JSON.stringify(newData)}});
5656
}
5757
}}
5858
tools={{...requiredTools, ...customTools, ...customImageTool}}
5959
instanceRef={instance => setEditorInstance(instance)}
6060
/>
6161
</div>
6262
<MediaLibComponent
63-
toggle={mediaLibToggleFunc}
6463
isOpen={isMediaLibOpen}
6564
onChange={handleMediaLibChange}
65+
onToggle={mediaLibToggleFunc}
6666
/>
6767
</>
6868
);
@@ -74,4 +74,4 @@ Editor.propTypes = {
7474
value: PropTypes.string,
7575
};
7676

77-
export default Editor;
77+
export default Editor;
Lines changed: 27 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,56 @@
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';
33
import PropTypes from 'prop-types';
44

5-
const MediaLibComponent = ({isOpen, onChange, toggle}) => {
5+
const MediaLibComponent = ({isOpen, onChange, onToggle}) => {
66

77
const { components } = useLibrary();
88
const [data, setData] = useState(null);
9-
const [isDisplayed, setIsDisplayed] = useState(false);
109

11-
useEffect(() => {
12-
if (isOpen) {
13-
setIsDisplayed(true);
14-
}
15-
}, [isOpen]);
16-
17-
const Component = components['media-library'];
10+
const MediaLibraryDialog = components['media-library'];
1811

1912
const handleInputChange = data => {
2013
if (data) {
14+
console.log(data);
2115
setData(data);
2216
}
2317
};
2418

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);
3227
};
3328

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;
4531
}
4632

47-
return null;
33+
return (
34+
<MediaLibraryDialog
35+
allowedTypes={['images']}
36+
onClose={onToggle}
37+
onInputMediaChange={[handleInputChange, onToggle]}
38+
onSelectAssets={handleSelectAssets}
39+
/>
40+
);
41+
4842
};
4943

5044
MediaLibComponent.defaultProps = {
5145
isOpen: false,
46+
onChange: () => {},
47+
onToggle: () => {},
5248
};
5349

5450
MediaLibComponent.propTypes = {
5551
isOpen: PropTypes.bool,
5652
onChange: PropTypes.func,
57-
toggle: PropTypes.func,
53+
onToggle: PropTypes.func,
5854
};
5955

6056
export default MediaLibComponent;

admin/src/components/medialib/utils.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,4 @@ export const changeFunc = ({indexStateSetter, editor, data, index}) => {
3232

3333
editor.blocks.delete(index + insertedBlocksCount);
3434
indexStateSetter(-1);
35-
};
35+
};

0 commit comments

Comments
 (0)