openvsx-webui-test 0.20.1-rc.0 → 0.20.2-dev.0
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/lib/components/sidepanel/navigation-item.d.ts +0 -1
- package/lib/components/sidepanel/navigation-item.d.ts.map +1 -1
- package/lib/components/sidepanel/navigation-item.js +22 -8
- package/lib/components/sidepanel/navigation-item.js.map +1 -1
- package/lib/components/sidepanel/sidebar-context.d.ts +16 -0
- package/lib/components/sidepanel/sidebar-context.d.ts.map +1 -0
- package/lib/components/sidepanel/sidebar-context.js +15 -0
- package/lib/components/sidepanel/sidebar-context.js.map +1 -0
- package/lib/components/sidepanel/sidepanel.d.ts +4 -4
- package/lib/components/sidepanel/sidepanel.d.ts.map +1 -1
- package/lib/components/sidepanel/sidepanel.js +47 -10
- package/lib/components/sidepanel/sidepanel.js.map +1 -1
- package/lib/extension-registry-service.d.ts +6 -0
- package/lib/extension-registry-service.d.ts.map +1 -1
- package/lib/extension-registry-service.js +17 -0
- package/lib/extension-registry-service.js.map +1 -1
- package/lib/hooks/use-local-storage.d.ts +23 -0
- package/lib/hooks/use-local-storage.d.ts.map +1 -0
- package/lib/hooks/use-local-storage.js +62 -0
- package/lib/hooks/use-local-storage.js.map +1 -0
- package/lib/pages/admin-dashboard/admin-dashboard.d.ts.map +1 -1
- package/lib/pages/admin-dashboard/admin-dashboard.js +39 -95
- package/lib/pages/admin-dashboard/admin-dashboard.js.map +1 -1
- package/lib/pages/admin-dashboard/admin-header.d.ts +19 -0
- package/lib/pages/admin-dashboard/admin-header.d.ts.map +1 -0
- package/lib/pages/admin-dashboard/admin-header.js +16 -0
- package/lib/pages/admin-dashboard/admin-header.js.map +1 -0
- package/lib/pages/admin-dashboard/admin-sidepanel.d.ts +19 -0
- package/lib/pages/admin-dashboard/admin-sidepanel.d.ts.map +1 -0
- package/lib/pages/admin-dashboard/admin-sidepanel.js +17 -0
- package/lib/pages/admin-dashboard/admin-sidepanel.js.map +1 -0
- package/lib/pages/admin-dashboard/namespace-admin.d.ts.map +1 -1
- package/lib/pages/admin-dashboard/namespace-admin.js +4 -1
- package/lib/pages/admin-dashboard/namespace-admin.js.map +1 -1
- package/lib/pages/admin-dashboard/namespace-change-dialog.d.ts.map +1 -1
- package/lib/pages/admin-dashboard/namespace-change-dialog.js +6 -1
- package/lib/pages/admin-dashboard/namespace-change-dialog.js.map +1 -1
- package/lib/pages/admin-dashboard/namespace-delete-dialog.d.ts +23 -0
- package/lib/pages/admin-dashboard/namespace-delete-dialog.d.ts.map +1 -0
- package/lib/pages/admin-dashboard/namespace-delete-dialog.js +53 -0
- package/lib/pages/admin-dashboard/namespace-delete-dialog.js.map +1 -0
- package/lib/pages/admin-dashboard/nav-types.d.ts +27 -0
- package/lib/pages/admin-dashboard/nav-types.d.ts.map +1 -0
- package/lib/pages/admin-dashboard/nav-types.js +14 -0
- package/lib/pages/admin-dashboard/nav-types.js.map +1 -0
- package/lib/pages/admin-dashboard/scan-admin.d.ts.map +1 -1
- package/lib/pages/admin-dashboard/scan-admin.js +2 -5
- package/lib/pages/admin-dashboard/scan-admin.js.map +1 -1
- package/lib/pages/admin-dashboard/welcome.d.ts +5 -1
- package/lib/pages/admin-dashboard/welcome.d.ts.map +1 -1
- package/lib/pages/admin-dashboard/welcome.js +18 -16
- package/lib/pages/admin-dashboard/welcome.js.map +1 -1
- package/lib/pages/user/user-setting-tabs.d.ts.map +1 -1
- package/lib/pages/user/user-setting-tabs.js +1 -1
- package/lib/pages/user/user-setting-tabs.js.map +1 -1
- package/lib/pages/user/user-settings-namespace-detail.d.ts +1 -0
- package/lib/pages/user/user-settings-namespace-detail.d.ts.map +1 -1
- package/lib/pages/user/user-settings-namespace-detail.js +18 -2
- package/lib/pages/user/user-settings-namespace-detail.js.map +1 -1
- package/lib/pages/user/user-settings-namespaces.js.map +1 -1
- package/package.json +1 -1
- package/src/components/sidepanel/navigation-item.tsx +79 -23
- package/src/components/sidepanel/sidebar-context.tsx +17 -0
- package/src/components/sidepanel/sidepanel.tsx +57 -29
- package/src/extension-registry-service.ts +18 -0
- package/src/hooks/use-local-storage.ts +67 -0
- package/src/pages/admin-dashboard/admin-dashboard.tsx +48 -197
- package/src/pages/admin-dashboard/admin-header.tsx +59 -0
- package/src/pages/admin-dashboard/admin-sidepanel.tsx +59 -0
- package/src/pages/admin-dashboard/namespace-admin.tsx +5 -0
- package/src/pages/admin-dashboard/namespace-change-dialog.tsx +55 -46
- package/src/pages/admin-dashboard/namespace-delete-dialog.tsx +89 -0
- package/src/pages/admin-dashboard/nav-types.ts +31 -0
- package/src/pages/admin-dashboard/scan-admin.tsx +2 -5
- package/src/pages/admin-dashboard/welcome.tsx +80 -48
- package/src/pages/user/user-setting-tabs.tsx +3 -2
- package/src/pages/user/user-settings-namespace-detail.tsx +37 -4
- package/src/pages/user/user-settings-namespaces.tsx +1 -1
|
@@ -8,5 +8,9 @@
|
|
|
8
8
|
* SPDX-License-Identifier: EPL-2.0
|
|
9
9
|
********************************************************************************/
|
|
10
10
|
import { FunctionComponent } from 'react';
|
|
11
|
-
|
|
11
|
+
import { NavEntry } from './nav-types';
|
|
12
|
+
export interface WelcomeProps {
|
|
13
|
+
items: NavEntry[];
|
|
14
|
+
}
|
|
15
|
+
export declare const Welcome: FunctionComponent<WelcomeProps>;
|
|
12
16
|
//# sourceMappingURL=welcome.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"welcome.d.ts","sourceRoot":"","sources":["../../../src/pages/admin-dashboard/welcome.tsx"],"names":[],"mappings":"AAAA;;;;;;;;kFAQkF;AAElF,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"welcome.d.ts","sourceRoot":"","sources":["../../../src/pages/admin-dashboard/welcome.tsx"],"names":[],"mappings":"AAAA;;;;;;;;kFAQkF;AAElF,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,EAAc,QAAQ,EAAc,MAAM,aAAa,CAAC;AAyC/D,MAAM,WAAW,YAAY;IACzB,KAAK,EAAE,QAAQ,EAAE,CAAC;CACrB;AAED,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,YAAY,CAmCnD,CAAC"}
|
|
@@ -1,19 +1,21 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Card, CardActionArea, CardContent, Divider, Grid, Typography } from '@mui/material';
|
|
3
|
+
import { useNavigate } from 'react-router-dom';
|
|
4
|
+
import { isNavGroup } from './nav-types';
|
|
5
|
+
/** Preserve the original group structure: ungrouped items come first as a section without a title. */
|
|
6
|
+
function buildSections(items) {
|
|
7
|
+
const ungrouped = items.filter((e) => !isNavGroup(e));
|
|
8
|
+
const groups = items
|
|
9
|
+
.filter(isNavGroup)
|
|
10
|
+
.map(group => ({ groupName: group.name, entries: group.children }));
|
|
11
|
+
return ungrouped.length > 0 ? [{ entries: ungrouped }, ...groups] : groups;
|
|
12
|
+
}
|
|
13
|
+
const NavCard = ({ entry }) => {
|
|
14
|
+
const navigate = useNavigate();
|
|
15
|
+
return (_jsx(Card, { variant: 'outlined', sx: { height: '100%' }, children: _jsxs(CardActionArea, { onClick: () => navigate(entry.path), sx: { height: '100%', display: 'flex', flexDirection: 'column', alignItems: 'center', py: 3, px: 2 }, children: [_jsx(Box, { sx: { fontSize: 40, color: 'primary.main', mb: 1, display: 'flex' }, children: entry.icon }), _jsxs(CardContent, { sx: { textAlign: 'center', p: 1 }, children: [_jsx(Typography, { variant: 'h6', gutterBottom: true, children: entry.name }), entry.description && (_jsx(Typography, { variant: 'body2', color: 'text.secondary', children: entry.description }))] })] }) }));
|
|
8
16
|
};
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
'&:hover': {
|
|
13
|
-
textDecoration: 'underline'
|
|
14
|
-
}
|
|
15
|
-
}));
|
|
16
|
-
const WelcomeLinkItem = props => {
|
|
17
|
-
return _jsxs(Grid, { container: true, item: true, xs: 8, sx: { mb: 2 }, children: [_jsx(Grid, { container: true, alignItems: 'center', item: true, xs: 12, md: 4, children: _jsx(Typography, { children: _jsx(StyledLink, { to: props.route, children: props.label }) }) }), _jsx(Grid, { item: true, xs: 12, md: 8, children: _jsx(Typography, { variant: 'body1', style: { lineHeight: 1.5 }, children: props.description }) })] });
|
|
17
|
+
export const Welcome = ({ items }) => {
|
|
18
|
+
const sections = buildSections(items);
|
|
19
|
+
return (_jsxs(Box, { sx: { py: 4, px: 2 }, children: [_jsx(Typography, { variant: 'h5', gutterBottom: true, children: "Welcome to the Admin Dashboard" }), _jsx(Typography, { variant: 'body1', color: 'text.secondary', sx: { mb: 4 }, children: "Select a section below to get started" }), _jsx(Box, { sx: { display: 'flex', flexDirection: 'column', gap: 5 }, children: sections.map((section, i) => (_jsxs(Box, { children: [section.groupName && (_jsxs(_Fragment, { children: [_jsx(Typography, { variant: 'overline', color: 'text.secondary', sx: { mb: 1, display: 'block' }, children: section.groupName }), _jsx(Divider, { sx: { mb: 2 } })] })), !section.groupName && i > 0 && _jsx(Divider, { sx: { mb: 2 } }), _jsx(Grid, { container: true, spacing: 3, children: section.entries.map(entry => (_jsx(Grid, { item: true, xs: 12, sm: 6, md: 4, lg: 3, children: _jsx(NavCard, { entry: entry }) }, entry.path))) })] }, section.groupName ?? '__root__'))) })] }));
|
|
18
20
|
};
|
|
19
21
|
//# sourceMappingURL=welcome.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"welcome.js","sourceRoot":"","sources":["../../../src/pages/admin-dashboard/welcome.tsx"],"names":[],"mappings":";AAWA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"welcome.js","sourceRoot":"","sources":["../../../src/pages/admin-dashboard/welcome.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-setting-tabs.d.ts","sourceRoot":"","sources":["../../../src/pages/user/user-setting-tabs.tsx"],"names":[],"mappings":"AAAA;;;;;;;;kFAQkF;AAElF,OAAO,EAAe,YAAY,EAAE,MAAM,OAAO,CAAC;AAMlD,eAAO,MAAM,eAAe,QAAO,
|
|
1
|
+
{"version":3,"file":"user-setting-tabs.d.ts","sourceRoot":"","sources":["../../../src/pages/user/user-setting-tabs.tsx"],"names":[],"mappings":"AAAA;;;;;;;;kFAQkF;AAElF,OAAO,EAAe,YAAY,EAAE,MAAM,OAAO,CAAC;AAMlD,eAAO,MAAM,eAAe,QAAO,YAgClC,CAAC"}
|
|
@@ -15,6 +15,6 @@ export const UserSettingTabs = () => {
|
|
|
15
15
|
const generateRoute = (tab) => {
|
|
16
16
|
return createRoute([UserSettingsRoutes.ROOT, tab]);
|
|
17
17
|
};
|
|
18
|
-
return (_jsxs(Tabs, { value: tab, onChange: handleChange, orientation: isATablet ? 'horizontal' : 'vertical', centered: isAMobile
|
|
18
|
+
return (_jsxs(Tabs, { value: tab ?? 'extensions', onChange: handleChange, orientation: isATablet ? 'horizontal' : 'vertical', centered: isAMobile, indicatorColor: 'secondary', children: [_jsx(Tab, { value: 'profile', label: 'Profile' }), _jsx(Tab, { value: 'tokens', label: 'Access Tokens' }), _jsx(Tab, { value: 'namespaces', label: 'Namespaces' }), _jsx(Tab, { value: 'extensions', label: 'Extensions' }), _jsx(Tab, { value: 'customers', label: 'Rate Limiting' })] }));
|
|
19
19
|
};
|
|
20
20
|
//# sourceMappingURL=user-setting-tabs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-setting-tabs.js","sourceRoot":"","sources":["../../../src/pages/user/user-setting-tabs.tsx"],"names":[],"mappings":";AAWA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,MAAM,CAAC,MAAM,eAAe,GAAG,GAAiB,EAAE;IAE9C,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,MAAM,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"user-setting-tabs.js","sourceRoot":"","sources":["../../../src/pages/user/user-setting-tabs.tsx"],"names":[],"mappings":";AAWA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,MAAM,CAAC,MAAM,eAAe,GAAG,GAAiB,EAAE;IAE9C,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,MAAM,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC;IAE5B,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,MAAM,YAAY,GAAG,CAAC,KAAkB,EAAE,MAAc,EAAE,EAAE;QACxD,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,GAAW,EAAE,EAAE;QAClC,OAAO,WAAW,CAAC,CAAC,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC;IAEF,OAAO,CACH,MAAC,IAAI,IACD,KAAK,EAAE,GAAG,IAAI,YAAY,EAC1B,QAAQ,EAAE,YAAY,EACtB,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,EAClD,QAAQ,EAAE,SAAS,EACnB,cAAc,EAAC,WAAW,aAE1B,KAAC,GAAG,IAAC,KAAK,EAAC,SAAS,EAAC,KAAK,EAAC,SAAS,GAAG,EACvC,KAAC,GAAG,IAAC,KAAK,EAAC,QAAQ,EAAC,KAAK,EAAC,eAAe,GAAG,EAC5C,KAAC,GAAG,IAAC,KAAK,EAAC,YAAY,EAAC,KAAK,EAAC,YAAY,GAAG,EAC7C,KAAC,GAAG,IAAC,KAAK,EAAC,YAAY,EAAC,KAAK,EAAC,YAAY,GAAG,EAC7C,KAAC,GAAG,IAAC,KAAK,EAAC,WAAW,EAAC,KAAK,EAAC,eAAe,GAAG,IAC5C,CACV,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-settings-namespace-detail.d.ts","sourceRoot":"","sources":["../../../src/pages/user/user-settings-namespace-detail.tsx"],"names":[],"mappings":"AAAA;;;;;;;;kFAQkF;AAElF,OAAO,EAAE,iBAAiB,EAA2B,MAAM,OAAO,CAAC;AAOnE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"user-settings-namespace-detail.d.ts","sourceRoot":"","sources":["../../../src/pages/user/user-settings-namespace-detail.tsx"],"names":[],"mappings":"AAAA;;;;;;;;kFAQkF;AAElF,OAAO,EAAE,iBAAiB,EAA2B,MAAM,OAAO,CAAC;AAOnE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAMrE,MAAM,WAAW,qBAAqB;IAClC,iBAAiB,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC;CAC/C;AAGD,eAAO,MAAM,4BAA4B,gDAA2C,CAAC;AAkCrF,eAAO,MAAM,eAAe,EAAE,iBAAiB,CAAC,oBAAoB,CA8GnE,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACjC,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB"}
|
|
@@ -16,6 +16,7 @@ import WarningIcon from '@mui/icons-material/Warning';
|
|
|
16
16
|
import { UserNamespaceExtensionListContainer } from './user-namespace-extension-list';
|
|
17
17
|
import { AdminDashboardRoutes } from '../admin-dashboard/admin-dashboard-routes';
|
|
18
18
|
import { NamespaceChangeDialog } from '../admin-dashboard/namespace-change-dialog';
|
|
19
|
+
import { NamespaceDeleteDialog } from '../admin-dashboard/namespace-delete-dialog';
|
|
19
20
|
import { UserNamespaceMemberList } from './user-namespace-member-list';
|
|
20
21
|
import { UserNamespaceDetails } from './user-namespace-details';
|
|
21
22
|
// eslint-disable-next-line react-refresh/only-export-components
|
|
@@ -51,6 +52,7 @@ const NamespaceHeader = styled(Box)(({ theme }) => ({
|
|
|
51
52
|
}));
|
|
52
53
|
export const NamespaceDetail = props => {
|
|
53
54
|
const [changeDialogIsOpen, setChangeDialogIsOpen] = useState(false);
|
|
55
|
+
const [deleteDialogIsOpen, setDeleteDialogIsOpen] = useState(false);
|
|
54
56
|
const { pathname } = useLocation();
|
|
55
57
|
const handleCloseChangeDialog = async () => {
|
|
56
58
|
setChangeDialogIsOpen(false);
|
|
@@ -58,6 +60,18 @@ export const NamespaceDetail = props => {
|
|
|
58
60
|
const handleOpenChangeDialog = () => {
|
|
59
61
|
setChangeDialogIsOpen(true);
|
|
60
62
|
};
|
|
63
|
+
const handleCloseDeleteDialog = async () => {
|
|
64
|
+
setDeleteDialogIsOpen(false);
|
|
65
|
+
};
|
|
66
|
+
const handleDeletedNamespace = async () => {
|
|
67
|
+
setDeleteDialogIsOpen(false);
|
|
68
|
+
if (props.onDelete !== undefined) {
|
|
69
|
+
props.onDelete();
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
const handleOpenDeleteDialog = () => {
|
|
73
|
+
setDeleteDialogIsOpen(true);
|
|
74
|
+
};
|
|
61
75
|
const warningColor = props.theme === 'dark' ? '#fff' : '#151515';
|
|
62
76
|
return _jsxs(_Fragment, { children: [_jsxs(NamespaceDetailContainer, { container: true, direction: 'column', spacing: 4, children: [!props.namespace.verified && props.namespaceAccessUrl
|
|
63
77
|
? _jsx(Grid, { item: true, children: _jsxs(WarningPaper, { sx: {
|
|
@@ -69,11 +83,13 @@ export const NamespaceDetail = props => {
|
|
|
69
83
|
}
|
|
70
84
|
}, children: [_jsx(WarningIcon, { fontSize: 'large' }), _jsxs(Box, { ml: 1, children: ["This namespace is not verified. ", _jsx(Link, { href: props.namespaceAccessUrl, target: '_blank', children: "See the documentation" }), " to learn about claiming namespaces."] })] }) })
|
|
71
85
|
: null, _jsx(Grid, { item: true, children: _jsxs(NamespaceHeader, { children: [_jsx(Typography, { variant: 'h4', children: props.namespace.name }), pathname.startsWith(AdminDashboardRoutes.NAMESPACE_ADMIN)
|
|
72
|
-
?
|
|
86
|
+
?
|
|
87
|
+
_jsxs(Box, { children: [_jsx(Button, { sx: { ml: { xs: 2, sm: 2, md: 2, lg: 0, xl: 0 } }, variant: 'outlined', onClick: handleOpenChangeDialog, children: "Change Namespace" }), Object.keys(props.namespace.extensions).length === 0 &&
|
|
88
|
+
_jsx(Button, { variant: 'outlined', sx: { color: 'error.main', height: 36, ml: { xs: 2 } }, onClick: handleOpenDeleteDialog, children: "Delete" })] })
|
|
73
89
|
: null] }) }), props.namespace.membersUrl
|
|
74
90
|
? _jsx(Grid, { item: true, children: _jsx(UserNamespaceMemberList, { setLoadingState: props.setLoadingState, namespace: props.namespace, filterUsers: props.filterUsers, fixSelf: props.fixSelf }) })
|
|
75
91
|
: null, props.namespace.detailsUrl
|
|
76
92
|
? _jsx(Grid, { item: true, children: _jsx(UserNamespaceDetails, { namespace: props.namespace }) })
|
|
77
|
-
: null, _jsx(Grid, { item: true, children: _jsx(UserNamespaceExtensionListContainer, { namespace: props.namespace }) })] }), _jsx(NamespaceChangeDialog, { open: changeDialogIsOpen, onClose: handleCloseChangeDialog, namespace: props.namespace, setLoadingState: props.setLoadingState })] });
|
|
93
|
+
: null, _jsx(Grid, { item: true, children: _jsx(UserNamespaceExtensionListContainer, { namespace: props.namespace }) })] }), _jsx(NamespaceChangeDialog, { open: changeDialogIsOpen, onClose: handleCloseChangeDialog, namespace: props.namespace, setLoadingState: props.setLoadingState }), _jsx(NamespaceDeleteDialog, { open: deleteDialogIsOpen, onClose: handleCloseDeleteDialog, onDelete: handleDeletedNamespace, namespace: props.namespace, setLoadingState: props.setLoadingState })] });
|
|
78
94
|
};
|
|
79
95
|
//# sourceMappingURL=user-settings-namespace-detail.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-settings-namespace-detail.js","sourceRoot":"","sources":["../../../src/pages/user/user-settings-namespace-detail.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"user-settings-namespace-detail.js","sourceRoot":"","sources":["../../../src/pages/user/user-settings-namespace-detail.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-settings-namespaces.js","sourceRoot":"","sources":["../../../src/pages/user/user-settings-namespaces.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"user-settings-namespaces.js","sourceRoot":"","sources":["../../../src/pages/user/user-settings-namespaces.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -8,42 +8,99 @@
|
|
|
8
8
|
* SPDX-License-Identifier: EPL-2.0
|
|
9
9
|
********************************************************************************/
|
|
10
10
|
|
|
11
|
-
import { FunctionComponent, PropsWithChildren, ReactNode, useState } from 'react';
|
|
12
|
-
import {
|
|
11
|
+
import { FunctionComponent, PropsWithChildren, ReactNode, useContext, useRef, useState } from 'react';
|
|
12
|
+
import {
|
|
13
|
+
Collapse, List, ListItemButton, ListItemIcon, ListItemText,
|
|
14
|
+
Popover, Tooltip,
|
|
15
|
+
} from '@mui/material';
|
|
13
16
|
import ExpandLess from '@mui/icons-material/ExpandLess';
|
|
14
17
|
import ExpandMore from '@mui/icons-material/ExpandMore';
|
|
15
18
|
import { useNavigate } from 'react-router';
|
|
19
|
+
import { SidebarContext } from './sidebar-context';
|
|
20
|
+
|
|
21
|
+
const EXPANDED_CONTEXT = { collapsed: false };
|
|
16
22
|
|
|
17
23
|
export const NavigationItem: FunctionComponent<PropsWithChildren<NavigationProps>> = props => {
|
|
18
|
-
const [
|
|
24
|
+
const [groupExpanded, setGroupExpanded] = useState(false);
|
|
25
|
+
const [popoverOpen, setPopoverOpen] = useState(false);
|
|
26
|
+
const anchorRef = useRef<HTMLDivElement>(null);
|
|
27
|
+
const { collapsed } = useContext(SidebarContext);
|
|
19
28
|
const navigate = useNavigate();
|
|
20
29
|
|
|
30
|
+
const isGroup = !!props.children;
|
|
31
|
+
|
|
21
32
|
const handleClick = () => {
|
|
22
|
-
if (
|
|
23
|
-
|
|
33
|
+
if (isGroup) {
|
|
34
|
+
if (collapsed) {
|
|
35
|
+
setPopoverOpen(true);
|
|
36
|
+
} else {
|
|
37
|
+
setGroupExpanded(prev => !prev);
|
|
38
|
+
}
|
|
24
39
|
} else if (props.route) {
|
|
25
|
-
props.onOpenRoute?.call(this, props.route);
|
|
26
40
|
navigate(props.route);
|
|
27
41
|
}
|
|
28
42
|
};
|
|
29
43
|
|
|
30
|
-
|
|
31
|
-
<ListItemButton
|
|
32
|
-
{
|
|
33
|
-
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
|
|
44
|
+
const button = (
|
|
45
|
+
<ListItemButton
|
|
46
|
+
ref={anchorRef}
|
|
47
|
+
selected={props.active}
|
|
48
|
+
onClick={handleClick}
|
|
49
|
+
sx={{
|
|
50
|
+
minHeight: 48,
|
|
51
|
+
px: 2.5,
|
|
52
|
+
justifyContent: collapsed ? 'center' : 'initial',
|
|
53
|
+
}}
|
|
54
|
+
>
|
|
55
|
+
{props.icon && (
|
|
56
|
+
<ListItemIcon sx={{ minWidth: 0, mr: collapsed ? 'auto' : 3, justifyContent: 'center' }}>
|
|
57
|
+
{props.icon}
|
|
58
|
+
</ListItemIcon>
|
|
59
|
+
)}
|
|
60
|
+
{!collapsed && <ListItemText primary={props.label} />}
|
|
61
|
+
{!collapsed && isGroup && (groupExpanded ? <ExpandLess /> : <ExpandMore />)}
|
|
37
62
|
</ListItemButton>
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
63
|
+
);
|
|
64
|
+
|
|
65
|
+
return (
|
|
66
|
+
<>
|
|
67
|
+
{collapsed ? (
|
|
68
|
+
<Tooltip title={props.label} placement='right'>
|
|
69
|
+
{button}
|
|
70
|
+
</Tooltip>
|
|
71
|
+
) : (
|
|
72
|
+
button
|
|
73
|
+
)}
|
|
74
|
+
|
|
75
|
+
{/* Inline expand for groups when sidebar is open */}
|
|
76
|
+
{!collapsed && isGroup && (
|
|
77
|
+
<Collapse in={groupExpanded} timeout='auto' unmountOnExit>
|
|
78
|
+
<List sx={{ pl: 2 }} disablePadding>
|
|
79
|
+
{props.children}
|
|
80
|
+
</List>
|
|
81
|
+
</Collapse>
|
|
82
|
+
)}
|
|
83
|
+
|
|
84
|
+
{/* Floating popover for groups when sidebar is collapsed */}
|
|
85
|
+
{isGroup && (
|
|
86
|
+
<Popover
|
|
87
|
+
open={popoverOpen}
|
|
88
|
+
anchorEl={anchorRef.current}
|
|
89
|
+
onClose={() => setPopoverOpen(false)}
|
|
90
|
+
anchorOrigin={{ vertical: 'top', horizontal: 'right' }}
|
|
91
|
+
transformOrigin={{ vertical: 'top', horizontal: 'left' }}
|
|
92
|
+
disableRestoreFocus
|
|
93
|
+
elevation={2}
|
|
94
|
+
>
|
|
95
|
+
<SidebarContext.Provider value={EXPANDED_CONTEXT}>
|
|
96
|
+
<List disablePadding onClick={() => setPopoverOpen(false)}>
|
|
97
|
+
{props.children}
|
|
98
|
+
</List>
|
|
99
|
+
</SidebarContext.Provider>
|
|
100
|
+
</Popover>
|
|
101
|
+
)}
|
|
102
|
+
</>
|
|
103
|
+
);
|
|
47
104
|
};
|
|
48
105
|
|
|
49
106
|
export interface NavigationProps {
|
|
@@ -51,5 +108,4 @@ export interface NavigationProps {
|
|
|
51
108
|
icon?: ReactNode;
|
|
52
109
|
label: string;
|
|
53
110
|
active?: boolean;
|
|
54
|
-
onOpenRoute?: (route: string) => void;
|
|
55
111
|
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/******************************************************************************
|
|
2
|
+
* Copyright (c) 2026 Contributors to the Eclipse Foundation.
|
|
3
|
+
*
|
|
4
|
+
* See the NOTICE file(s) distributed with this work for additional
|
|
5
|
+
* information regarding copyright ownership.
|
|
6
|
+
*
|
|
7
|
+
* This program and the accompanying materials are made available under the
|
|
8
|
+
* terms of the Eclipse Public License 2.0 which is available at
|
|
9
|
+
* https://www.eclipse.org/legal/epl-2.0.
|
|
10
|
+
*
|
|
11
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
12
|
+
*****************************************************************************/
|
|
13
|
+
|
|
14
|
+
import { createContext } from 'react';
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
export const SidebarContext = createContext<{ collapsed: boolean; }>({ collapsed: false });
|
|
@@ -8,43 +8,71 @@
|
|
|
8
8
|
* SPDX-License-Identifier: EPL-2.0
|
|
9
9
|
********************************************************************************/
|
|
10
10
|
|
|
11
|
-
import { FunctionComponent, PropsWithChildren } from 'react';
|
|
11
|
+
import { FunctionComponent, PropsWithChildren, useMemo } from 'react';
|
|
12
12
|
import { Divider, Drawer, IconButton, List } from '@mui/material';
|
|
13
|
+
import { styled, Theme, CSSObject } from '@mui/material/styles';
|
|
13
14
|
import ChevronLeftIcon from '@mui/icons-material/ChevronLeft';
|
|
15
|
+
import ChevronRightIcon from '@mui/icons-material/ChevronRight';
|
|
14
16
|
import { DrawerHeader } from './drawer-header';
|
|
17
|
+
import { SidebarContext } from './sidebar-context';
|
|
15
18
|
|
|
16
|
-
export const
|
|
17
|
-
|
|
19
|
+
export const DRAWER_WIDTH = 240;
|
|
20
|
+
export const COLLAPSED_WIDTH = 57;
|
|
18
21
|
|
|
22
|
+
const openedMixin = (theme: Theme): CSSObject => ({
|
|
23
|
+
width: DRAWER_WIDTH,
|
|
24
|
+
transition: theme.transitions.create('width', {
|
|
25
|
+
easing: theme.transitions.easing.sharp,
|
|
26
|
+
duration: theme.transitions.duration.enteringScreen,
|
|
27
|
+
}),
|
|
28
|
+
overflowX: 'hidden',
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
const closedMixin = (theme: Theme): CSSObject => ({
|
|
32
|
+
width: COLLAPSED_WIDTH,
|
|
33
|
+
transition: theme.transitions.create('width', {
|
|
34
|
+
easing: theme.transitions.easing.sharp,
|
|
35
|
+
duration: theme.transitions.duration.leavingScreen,
|
|
36
|
+
}),
|
|
37
|
+
overflowX: 'hidden',
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
const StyledDrawer = styled(Drawer, { shouldForwardProp: (prop) => prop !== 'open' })(
|
|
41
|
+
({ theme, open }) => ({
|
|
42
|
+
width: DRAWER_WIDTH,
|
|
43
|
+
flexShrink: 0,
|
|
44
|
+
whiteSpace: 'nowrap',
|
|
45
|
+
boxSizing: 'border-box',
|
|
46
|
+
...(open ? {
|
|
47
|
+
...openedMixin(theme),
|
|
48
|
+
'& .MuiDrawer-paper': openedMixin(theme),
|
|
49
|
+
} : {
|
|
50
|
+
...closedMixin(theme),
|
|
51
|
+
'& .MuiDrawer-paper': closedMixin(theme),
|
|
52
|
+
}),
|
|
53
|
+
})
|
|
54
|
+
);
|
|
55
|
+
|
|
56
|
+
export const Sidepanel: FunctionComponent<PropsWithChildren<SidepanelProps>> = ({ open, onToggle, children }) => {
|
|
57
|
+
const contextValue = useMemo(() => ({ collapsed: !open }), [open]);
|
|
19
58
|
return (
|
|
20
|
-
<
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
>
|
|
33
|
-
<DrawerHeader>
|
|
34
|
-
<IconButton onClick={props.handleDrawerClose}>
|
|
35
|
-
<ChevronLeftIcon />
|
|
36
|
-
</IconButton>
|
|
37
|
-
</DrawerHeader>
|
|
38
|
-
<Divider />
|
|
39
|
-
<List>
|
|
40
|
-
{props.children}
|
|
41
|
-
</List>
|
|
42
|
-
</Drawer>
|
|
59
|
+
<SidebarContext.Provider value={contextValue}>
|
|
60
|
+
<StyledDrawer variant='permanent' anchor='left' open={open}>
|
|
61
|
+
<DrawerHeader>
|
|
62
|
+
<IconButton onClick={onToggle} aria-label={open ? 'collapse sidebar' : 'expand sidebar'}>
|
|
63
|
+
{open ? <ChevronLeftIcon /> : <ChevronRightIcon />}
|
|
64
|
+
</IconButton>
|
|
65
|
+
</DrawerHeader>
|
|
66
|
+
<Divider />
|
|
67
|
+
<List disablePadding>
|
|
68
|
+
{children}
|
|
69
|
+
</List>
|
|
70
|
+
</StyledDrawer>
|
|
71
|
+
</SidebarContext.Provider>
|
|
43
72
|
);
|
|
44
73
|
};
|
|
45
74
|
|
|
46
|
-
interface SidepanelProps {
|
|
47
|
-
width: number;
|
|
75
|
+
export interface SidepanelProps {
|
|
48
76
|
open: boolean;
|
|
49
|
-
|
|
77
|
+
onToggle: () => void;
|
|
50
78
|
}
|
|
@@ -504,6 +504,7 @@ export interface AdminService {
|
|
|
504
504
|
deleteExtensions(abortController: AbortController, req: { namespace: string, extension: string, targetPlatformVersions?: object[] }): Promise<Readonly<SuccessResult | ErrorResult>>
|
|
505
505
|
getNamespace(abortController: AbortController, name: string): Promise<Readonly<Namespace>>
|
|
506
506
|
createNamespace(abortController: AbortController, namespace: { name: string }): Promise<Readonly<SuccessResult | ErrorResult>>
|
|
507
|
+
deleteNamespace(abortController: AbortController, namespace: { name: string }): Promise<Readonly<SuccessResult | ErrorResult>>
|
|
507
508
|
changeNamespace(abortController: AbortController, req: {oldNamespace: string, newNamespace: string, removeOldNamespace: boolean, mergeIfNewNamespaceAlreadyExists: boolean}): Promise<Readonly<SuccessResult | ErrorResult>>
|
|
508
509
|
getPublisherInfo(abortController: AbortController, provider: string, login: string): Promise<Readonly<PublisherInfo>>
|
|
509
510
|
revokePublisherContributions(abortController: AbortController, provider: string, login: string): Promise<Readonly<SuccessResult | ErrorResult>>
|
|
@@ -601,6 +602,23 @@ export class AdminServiceImpl implements AdminService {
|
|
|
601
602
|
});
|
|
602
603
|
}
|
|
603
604
|
|
|
605
|
+
async deleteNamespace(abortController: AbortController, namespace: { name: string }): Promise<Readonly<SuccessResult | ErrorResult>> {
|
|
606
|
+
const csrfResponse = await this.registry.getCsrfToken(abortController);
|
|
607
|
+
const headers: Record<string, string> = {
|
|
608
|
+
'Content-Type': 'application/json;charset=UTF-8'
|
|
609
|
+
};
|
|
610
|
+
if (!isError(csrfResponse)) {
|
|
611
|
+
const csrfToken = csrfResponse as CsrfTokenJson;
|
|
612
|
+
headers[csrfToken.header] = csrfToken.value;
|
|
613
|
+
}
|
|
614
|
+
return sendRequest({
|
|
615
|
+
abortController,
|
|
616
|
+
credentials: true,
|
|
617
|
+
endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'namespace', namespace.name]),
|
|
618
|
+
method: 'DELETE',
|
|
619
|
+
headers
|
|
620
|
+
});
|
|
621
|
+
}
|
|
604
622
|
async changeNamespace(abortController: AbortController, req: {oldNamespace: string, newNamespace: string, removeOldNamespace: boolean, mergeIfNewNamespaceAlreadyExists: boolean}): Promise<Readonly<SuccessResult | ErrorResult>> {
|
|
605
623
|
const csrfResponse = await this.registry.getCsrfToken(abortController);
|
|
606
624
|
const headers: Record<string, string> = {
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 Contributors to the Eclipse Foundation.
|
|
3
|
+
*
|
|
4
|
+
* See the NOTICE file(s) distributed with this work for additional
|
|
5
|
+
* information regarding copyright ownership.
|
|
6
|
+
*
|
|
7
|
+
* This program and the accompanying materials are made available under the
|
|
8
|
+
* terms of the Eclipse Public License 2.0 which is available at
|
|
9
|
+
* https://www.eclipse.org/legal/epl-2.0.
|
|
10
|
+
*
|
|
11
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
12
|
+
*****************************************************************************/
|
|
13
|
+
|
|
14
|
+
import { Dispatch, SetStateAction, useCallback, useEffect, useState } from 'react';
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Reads a value from localStorage and deserializes it.
|
|
18
|
+
* Returns `fallback` when the key is missing or the stored value cannot be parsed.
|
|
19
|
+
*/
|
|
20
|
+
function readStorage<T>(key: string, fallback: T): T {
|
|
21
|
+
try {
|
|
22
|
+
const raw = localStorage.getItem(key);
|
|
23
|
+
return raw === null ? fallback : (JSON.parse(raw) as T);
|
|
24
|
+
} catch {
|
|
25
|
+
return fallback;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* A useState-compatible hook that persists its value in localStorage.
|
|
31
|
+
*
|
|
32
|
+
* - Initialises from localStorage (falling back to `initialValue`).
|
|
33
|
+
* - Keeps multiple tabs in sync by listening to the `storage` event.
|
|
34
|
+
* - The setter accepts both a direct value and an updater function, matching
|
|
35
|
+
* the full useState API.
|
|
36
|
+
*/
|
|
37
|
+
export function useLocalStorage<T>(key: string, initialValue: T): [T, Dispatch<SetStateAction<T>>] {
|
|
38
|
+
const [state, setState] = useState<T>(() => readStorage(key, initialValue));
|
|
39
|
+
|
|
40
|
+
// Persist every state change to localStorage.
|
|
41
|
+
useEffect(() => {
|
|
42
|
+
try {
|
|
43
|
+
localStorage.setItem(key, JSON.stringify(state));
|
|
44
|
+
} catch {
|
|
45
|
+
// Quota exceeded or private-browsing restrictions — silently ignore.
|
|
46
|
+
}
|
|
47
|
+
}, [key, state]);
|
|
48
|
+
|
|
49
|
+
// Keep tabs in sync: when another tab writes to the same key, update state.
|
|
50
|
+
useEffect(() => {
|
|
51
|
+
const onStorage = (event: StorageEvent) => {
|
|
52
|
+
if (event.key !== key || event.storageArea !== localStorage) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
setState(event.newValue === null ? initialValue : (JSON.parse(event.newValue) as T));
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
globalThis.addEventListener('storage', onStorage);
|
|
59
|
+
return () => globalThis.removeEventListener('storage', onStorage);
|
|
60
|
+
}, [key, initialValue]);
|
|
61
|
+
|
|
62
|
+
const setValue: Dispatch<SetStateAction<T>> = useCallback((action) => {
|
|
63
|
+
setState(prev => (typeof action === 'function' ? (action as (prev: T) => T)(prev) : action));
|
|
64
|
+
}, []);
|
|
65
|
+
|
|
66
|
+
return [state, setValue];
|
|
67
|
+
}
|