@abtnode/ux 1.16.18-beta-adeeb0b3 → 1.16.18-beta-aa01bd8e
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/es/blocklet/component/add-component-core.js +1317 -0
- package/es/blocklet/component/add.js +14 -1246
- package/es/blocklet/component/select-store.js +21 -7
- package/es/blocklet/component/store-blocklet-list.js +20 -6
- package/es/blocklet/publish/create-project.js +6 -2
- package/es/blocklet/publish/create-release.js +3 -2
- package/es/blocklet/publish/index.js +26 -2
- package/es/blocklet/publish/project-list.js +6 -2
- package/es/hooks/use-navigation.js +1 -1
- package/es/locales/en.js +1 -0
- package/es/locales/zh.js +1 -0
- package/lib/blocklet/component/add-component-core.js +1131 -0
- package/lib/blocklet/component/add.js +18 -1058
- package/lib/blocklet/component/select-store.js +25 -7
- package/lib/blocklet/component/store-blocklet-list.js +22 -8
- package/lib/blocklet/publish/create-project.js +5 -1
- package/lib/blocklet/publish/create-release.js +3 -2
- package/lib/blocklet/publish/index.js +27 -1
- package/lib/blocklet/publish/project-list.js +5 -1
- package/lib/hooks/use-navigation.js +1 -1
- package/lib/locales/en.js +1 -0
- package/lib/locales/zh.js +1 -0
- package/package.json +19 -19
|
@@ -9,7 +9,7 @@ import Button from '@arcblock/ux/lib/Button';
|
|
|
9
9
|
import ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';
|
|
10
10
|
import Typography from '@mui/material/Typography';
|
|
11
11
|
import useLocalStorage from 'react-use/lib/useLocalStorage';
|
|
12
|
-
import
|
|
12
|
+
import uniqBy from 'lodash/uniqBy';
|
|
13
13
|
import { useNodeContext } from '../../contexts/node';
|
|
14
14
|
import { useBlockletContext } from '../../contexts/blocklet';
|
|
15
15
|
import AddStore from '../../store/add';
|
|
@@ -22,7 +22,9 @@ export default function SelectStore({
|
|
|
22
22
|
onChange,
|
|
23
23
|
loading,
|
|
24
24
|
children,
|
|
25
|
-
extra
|
|
25
|
+
extra,
|
|
26
|
+
stores: customStores,
|
|
27
|
+
storageKey
|
|
26
28
|
}) {
|
|
27
29
|
const {
|
|
28
30
|
t
|
|
@@ -36,16 +38,21 @@ export default function SelectStore({
|
|
|
36
38
|
} = useBlockletContext();
|
|
37
39
|
const [open, setOpen] = useState(false);
|
|
38
40
|
const storeSelectRef = useRef(null);
|
|
39
|
-
const
|
|
40
|
-
const [
|
|
41
|
+
const [storeUrlMem, setStoreUrlMem] = useState();
|
|
42
|
+
const [storeUrlLs, setStoreUrlLs] = useLocalStorage(storageKey || 'tmp');
|
|
43
|
+
const [storeUrl, setStoreUrl] = storageKey ? [storeUrlLs, setStoreUrlLs] : [storeUrlMem, setStoreUrlMem];
|
|
41
44
|
const {
|
|
42
|
-
storeList,
|
|
45
|
+
storeList: appStoreList,
|
|
43
46
|
teamDid
|
|
44
47
|
} = getStoreList({
|
|
45
48
|
fromBlocklet: inService,
|
|
46
49
|
blocklet,
|
|
47
50
|
nodeInfo
|
|
48
51
|
});
|
|
52
|
+
const storeList = uniqBy([...customStores.map(x => ({
|
|
53
|
+
...x,
|
|
54
|
+
protected: true
|
|
55
|
+
})), ...appStoreList], 'url');
|
|
49
56
|
const currentRegistry = storeUrl && storeList.find(x => storeUrl === x.url) || storeList[0];
|
|
50
57
|
const isServerlessMode = nodeInfo.mode === NODE_MODES.SERVERLESS;
|
|
51
58
|
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
@@ -134,12 +141,19 @@ SelectStore.propTypes = {
|
|
|
134
141
|
onChange: PropTypes.func,
|
|
135
142
|
loading: PropTypes.bool,
|
|
136
143
|
children: PropTypes.any.isRequired,
|
|
137
|
-
extra: PropTypes.node
|
|
144
|
+
extra: PropTypes.node,
|
|
145
|
+
storageKey: PropTypes.string,
|
|
146
|
+
stores: PropTypes.arrayOf(PropTypes.shape({
|
|
147
|
+
name: PropTypes.string.isRequired,
|
|
148
|
+
url: PropTypes.string.isRequired
|
|
149
|
+
}))
|
|
138
150
|
};
|
|
139
151
|
SelectStore.defaultProps = {
|
|
140
152
|
onChange: () => {},
|
|
141
153
|
loading: false,
|
|
142
|
-
extra: ''
|
|
154
|
+
extra: '',
|
|
155
|
+
stores: [],
|
|
156
|
+
storageKey: ''
|
|
143
157
|
};
|
|
144
158
|
const SelectStoreTitle = styled.div`
|
|
145
159
|
display: flex;
|
|
@@ -134,25 +134,36 @@ export default function BlockletList({
|
|
|
134
134
|
handleBlockletRender,
|
|
135
135
|
extraFilter,
|
|
136
136
|
serverVersion,
|
|
137
|
+
resourceType,
|
|
137
138
|
...rest
|
|
138
139
|
}) {
|
|
139
140
|
const {
|
|
140
141
|
locale
|
|
141
142
|
} = useLocaleContext();
|
|
143
|
+
const [initialized, setInitialized] = useState(false);
|
|
142
144
|
const [filters, setFilters] = useState({});
|
|
143
145
|
const handleChange = changeData => {
|
|
144
146
|
setFilters(changeData);
|
|
145
147
|
};
|
|
146
148
|
const endpoint = storeUrl;
|
|
147
149
|
useEffect(() => {
|
|
148
|
-
setFilters({
|
|
149
|
-
|
|
150
|
+
setFilters({
|
|
151
|
+
resourceType
|
|
152
|
+
});
|
|
153
|
+
}, [endpoint, resourceType]);
|
|
154
|
+
useEffect(() => {
|
|
155
|
+
setInitialized(true);
|
|
156
|
+
setFilters({
|
|
157
|
+
resourceType
|
|
158
|
+
});
|
|
159
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
160
|
+
}, []);
|
|
150
161
|
return /*#__PURE__*/_jsx(ErrorBoundary, {
|
|
151
162
|
FallbackComponent: ErrorFallback,
|
|
152
163
|
resetKeys: [endpoint],
|
|
153
164
|
children: /*#__PURE__*/_jsx("div", {
|
|
154
165
|
...rest,
|
|
155
|
-
children: /*#__PURE__*/_jsx(InnerList, {
|
|
166
|
+
children: initialized && /*#__PURE__*/_jsx(InnerList, {
|
|
156
167
|
blockletRender: blockletRenderProps => {
|
|
157
168
|
const defaultProps = {
|
|
158
169
|
...blockletRenderProps,
|
|
@@ -173,7 +184,8 @@ export default function BlockletList({
|
|
|
173
184
|
onSearchSelect: handleSearchSelect,
|
|
174
185
|
filters: filters,
|
|
175
186
|
extraFilter: extraFilter,
|
|
176
|
-
serverVersion: serverVersion
|
|
187
|
+
serverVersion: serverVersion,
|
|
188
|
+
fetchCategoryDelay: 500
|
|
177
189
|
})
|
|
178
190
|
})
|
|
179
191
|
});
|
|
@@ -184,14 +196,16 @@ BlockletList.propTypes = {
|
|
|
184
196
|
handleSearchSelect: PropTypes.func,
|
|
185
197
|
handleBlockletRender: PropTypes.func,
|
|
186
198
|
extraFilter: PropTypes.func,
|
|
187
|
-
serverVersion: PropTypes.string
|
|
199
|
+
serverVersion: PropTypes.string,
|
|
200
|
+
resourceType: PropTypes.string
|
|
188
201
|
};
|
|
189
202
|
BlockletList.defaultProps = {
|
|
190
203
|
handleButtonClick: null,
|
|
191
204
|
handleSearchSelect: null,
|
|
192
205
|
handleBlockletRender: null,
|
|
193
206
|
extraFilter: undefined,
|
|
194
|
-
serverVersion: ''
|
|
207
|
+
serverVersion: '',
|
|
208
|
+
resourceType: ''
|
|
195
209
|
};
|
|
196
210
|
const StyledBlocklet = styled(Blocklet)`
|
|
197
211
|
.ms-highlight {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useState } from 'react';
|
|
2
|
-
import { Link, useNavigate } from 'react-router-dom';
|
|
2
|
+
import { Link, useNavigate, useParams } from 'react-router-dom';
|
|
3
3
|
import MenuItem from '@mui/material/MenuItem';
|
|
4
4
|
import TextField from '@mui/material/TextField';
|
|
5
5
|
import Typography from '@mui/material/Typography';
|
|
@@ -52,6 +52,9 @@ export default function CreateProject({
|
|
|
52
52
|
} = useNodeContext();
|
|
53
53
|
const [blockletDid, setBlockletDid] = useState();
|
|
54
54
|
const [openConnect, setOpenConnect] = useState(false);
|
|
55
|
+
const {
|
|
56
|
+
componentDid
|
|
57
|
+
} = useParams();
|
|
55
58
|
const handleCreateBlockletDidError = err => {
|
|
56
59
|
Toast.error(err.message);
|
|
57
60
|
setOpenConnect(false);
|
|
@@ -80,7 +83,8 @@ export default function CreateProject({
|
|
|
80
83
|
did: blocklet.meta.did,
|
|
81
84
|
blockletTitle: blockletTitle || '',
|
|
82
85
|
blockletDid,
|
|
83
|
-
type
|
|
86
|
+
type,
|
|
87
|
+
componentDid
|
|
84
88
|
}
|
|
85
89
|
}).then(() => {
|
|
86
90
|
setLoading(false);
|
|
@@ -108,7 +108,8 @@ export default function CreateRelease({
|
|
|
108
108
|
const navigate = useNavigate();
|
|
109
109
|
const {
|
|
110
110
|
projectId,
|
|
111
|
-
releaseId: inputReleaseId
|
|
111
|
+
releaseId: inputReleaseId,
|
|
112
|
+
componentDid
|
|
112
113
|
} = useParams();
|
|
113
114
|
const {
|
|
114
115
|
t
|
|
@@ -128,7 +129,7 @@ export default function CreateRelease({
|
|
|
128
129
|
const releaseId = inputReleaseId === 'create' ? '' : inputReleaseId;
|
|
129
130
|
const mode = inputReleaseId === 'create' ? 'create' : 'edit';
|
|
130
131
|
const tabs = [];
|
|
131
|
-
const resourceComponents = (blocklet?.children || []).filter(x => x.meta.capabilities.resourceExportApi);
|
|
132
|
+
const resourceComponents = (blocklet?.children || []).filter(x => x.meta.capabilities.resourceExportApi).filter(x => !componentDid || x.meta.did === componentDid);
|
|
132
133
|
resourceComponents.forEach(item => {
|
|
133
134
|
addComponentTabs({
|
|
134
135
|
tabs,
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { Routes, Route } from 'react-router-dom';
|
|
1
|
+
import React, { useEffect } from 'react';
|
|
2
|
+
import { Routes, Route, useLocation, useParams } from 'react-router-dom';
|
|
3
3
|
import styled from '@emotion/styled';
|
|
4
4
|
import Box from '@mui/material/Box';
|
|
5
|
+
import { useBlockletContext } from '../../contexts/blocklet';
|
|
5
6
|
import ProjectList from './project-list';
|
|
6
7
|
import CreateProject from './create-project';
|
|
7
8
|
import ReleasesList from './release-list';
|
|
@@ -9,6 +10,29 @@ import CreateRelease from './create-release';
|
|
|
9
10
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
11
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
12
|
export default function BlockletPublish() {
|
|
13
|
+
const {
|
|
14
|
+
blocklet
|
|
15
|
+
} = useBlockletContext();
|
|
16
|
+
const location = useLocation();
|
|
17
|
+
|
|
18
|
+
// post message to parent window when route changed
|
|
19
|
+
const {
|
|
20
|
+
componentDid
|
|
21
|
+
} = useParams();
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
if (componentDid && window.parent) {
|
|
24
|
+
const path = `${location.pathname}${location.search}`;
|
|
25
|
+
window.parent.postMessage({
|
|
26
|
+
event: 'popstate',
|
|
27
|
+
page: 'publish',
|
|
28
|
+
componentDid,
|
|
29
|
+
path
|
|
30
|
+
}, '*');
|
|
31
|
+
}
|
|
32
|
+
}, [componentDid, location]);
|
|
33
|
+
if (!blocklet) {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
12
36
|
return /*#__PURE__*/_jsx(Main, {
|
|
13
37
|
children: /*#__PURE__*/_jsxs(Routes, {
|
|
14
38
|
children: [/*#__PURE__*/_jsx(Route, {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* eslint-disable react/no-unstable-nested-components */
|
|
2
2
|
import React, { useState, useEffect } from 'react';
|
|
3
|
-
import { Link } from 'react-router-dom';
|
|
3
|
+
import { Link, useParams } from 'react-router-dom';
|
|
4
4
|
import styled from '@emotion/styled';
|
|
5
5
|
import { useLocaleContext } from '@arcblock/ux/lib/Locale/context';
|
|
6
6
|
import Box from '@mui/material/Box';
|
|
@@ -31,11 +31,15 @@ export default function ProjectList() {
|
|
|
31
31
|
blocklet
|
|
32
32
|
} = useBlockletContext();
|
|
33
33
|
const [deleteConfirm, setDeleteConfirm] = useState(null);
|
|
34
|
+
const {
|
|
35
|
+
componentDid = ''
|
|
36
|
+
} = useParams();
|
|
34
37
|
const [projects, setProjects] = useState(null);
|
|
35
38
|
const getProjects = () => {
|
|
36
39
|
api.getProjects({
|
|
37
40
|
input: {
|
|
38
|
-
did: blocklet.meta.did
|
|
41
|
+
did: blocklet.meta.did,
|
|
42
|
+
componentDid
|
|
39
43
|
}
|
|
40
44
|
}).then(res => {
|
|
41
45
|
const list = res?.projects || [];
|
package/es/locales/en.js
CHANGED