@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.
@@ -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 { STORAGE_KEY_STORE_BLOCKLET, STORAGE_KEY_STORE_SERVER } from '../../util/constants';
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 storageKey = inService ? STORAGE_KEY_STORE_BLOCKLET : STORAGE_KEY_STORE_SERVER;
40
- const [storeUrl, setStoreUrl] = useLocalStorage(storageKey);
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
- }, [endpoint]);
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 || [];
@@ -28,7 +28,7 @@ const injectNavigationData = {
28
28
  from: 'tmpl'
29
29
  }],
30
30
  dashboard: [{
31
- id: '/access',
31
+ id: '/team',
32
32
  title: {
33
33
  en: 'Access',
34
34
  zh: '访问控制'
package/es/locales/en.js CHANGED
@@ -568,6 +568,7 @@ module.exports = {
568
568
  fromUrl: 'Add Component From Url'
569
569
  },
570
570
  addNext: 'Add {name}',
571
+ upgradeNext: 'Upgrade {name}',
571
572
  setting: 'Settings'
572
573
  },
573
574
  router: {
package/es/locales/zh.js CHANGED
@@ -575,6 +575,7 @@ module.exports = {
575
575
  fromUrl: '通过 URL 选择组件'
576
576
  },
577
577
  addNext: '添加 {name}',
578
+ upgradeNext: '升级 {name}',
578
579
  setting: '参数设置'
579
580
  },
580
581
  router: {