Merge remote-tracking branch 'origin/devel' into devel

This commit is contained in:
Serge Rider
2022-02-02 18:37:16 +03:00
25 changed files with 542 additions and 10 deletions
@@ -328,4 +328,7 @@
<path fill-rule="evenodd" clip-rule="evenodd" d="M18.5254 21.0865C18.8214 21.1315 19.1284 21.1535 19.4624 21.1535C23.1294 21.1535 26.1114 18.1865 26.1114 14.5395C26.1114 14.3495 26.1024 14.1585 26.0864 13.9675C26.8884 15.1425 27.3234 16.5335 27.3234 17.9725C27.3234 21.9015 24.1074 25.0985 20.1544 25.0985C19.6974 25.0985 19.2504 25.0565 18.8244 24.9745C18.5624 24.9255 18.2964 24.9955 18.0884 25.1675C17.8834 25.3365 17.7664 25.5865 17.7664 25.8505V27.2845L13.4744 23.0125L17.7664 18.7405V20.2065C17.7664 20.6465 18.0934 21.0255 18.5254 21.0865ZM24.2904 10.0775C23.9094 9.8755 23.4664 9.9635 23.1934 10.2995C22.9194 10.6385 22.9214 11.1075 23.1994 11.4395C23.9284 12.3065 24.3314 13.4075 24.3314 14.5395C24.3314 17.1775 22.1654 19.3295 19.4864 19.3735V16.5995C19.4864 16.2275 19.2984 15.9255 18.9834 15.7945C18.6624 15.6595 18.2714 15.7315 18.0284 15.9685L11.5834 22.3815C11.4144 22.5495 11.3204 22.7735 11.3204 23.0125C11.3204 23.2505 11.4144 23.4745 11.5834 23.6445L18.0314 30.0585C18.1954 30.2185 18.4204 30.3045 18.6474 30.3045C18.7644 30.3045 18.8824 30.2815 18.9944 30.2345C19.3154 30.0985 19.5064 29.7955 19.5064 29.4245V26.8575C19.7144 26.8715 19.9394 26.8785 20.1544 26.8785C25.0884 26.8785 29.1034 22.8835 29.1034 17.9725C29.1034 14.6435 27.2584 11.6185 24.2904 10.0775Z" fill="#338ECC"/>
</g>
</symbol>
<symbol id="info" width="24" height="24" viewBox="0 0 24 24" fill="none">
<path d="M12 24C5.3724 24 0 18.6276 0 12C0 5.3724 5.3724 0 12 0C18.6276 0 24 5.3724 24 12C24 18.6276 18.6276 24 12 24ZM12 21.6C14.5461 21.6 16.9879 20.5886 18.7882 18.7882C20.5886 16.9879 21.6 14.5461 21.6 12C21.6 9.45392 20.5886 7.01212 18.7882 5.21178C16.9879 3.41143 14.5461 2.4 12 2.4C9.45392 2.4 7.01212 3.41143 5.21178 5.21178C3.41143 7.01212 2.4 9.45392 2.4 12C2.4 14.5461 3.41143 16.9879 5.21178 18.7882C7.01212 20.5886 9.45392 21.6 12 21.6V21.6ZM10.8 15.6H13.2V18H10.8V15.6ZM13.2 13.626V14.4H10.8V12.6C10.8 12.2817 10.9264 11.9765 11.1515 11.7515C11.3765 11.5264 11.6817 11.4 12 11.4C12.3409 11.4 12.6748 11.3032 12.9628 11.1208C13.2508 10.9384 13.4811 10.678 13.6269 10.3699C13.7727 10.0618 13.828 9.71856 13.7864 9.38021C13.7448 9.04187 13.6079 8.7223 13.3918 8.45869C13.1757 8.19509 12.8891 7.99828 12.5655 7.89116C12.2418 7.78405 11.8944 7.77104 11.5637 7.85365C11.233 7.93625 10.9325 8.11108 10.6972 8.35778C10.462 8.60448 10.3016 8.91292 10.2348 9.2472L7.8804 8.7756C8.02636 8.0461 8.36341 7.36845 8.8571 6.8119C9.3508 6.25536 9.98342 5.8399 10.6903 5.60798C11.3972 5.37607 12.153 5.33602 12.8804 5.49194C13.6079 5.64785 14.2808 5.99414 14.8306 6.49539C15.3803 6.99664 15.7871 7.63489 16.0093 8.34488C16.2316 9.05487 16.2613 9.81113 16.0954 10.5364C15.9296 11.2616 15.5741 11.9298 15.0654 12.4726C14.5567 13.0155 13.913 13.4135 13.2 13.626V13.626Z" fill="white"/>
</symbol>
</svg>

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 39 KiB

+17 -1
View File
@@ -8,12 +8,16 @@
import styled, { css, use } from 'reshadow';
import { IconOrImage } from './IconOrImage';
interface Props extends React.AnchorHTMLAttributes<HTMLAnchorElement> {
wrapper?: boolean;
indicator?: boolean;
}
const styles = css`
a {
position: relative;
cursor: pointer;
}
a[|wrapper] {
@@ -23,17 +27,29 @@ const styles = css`
outline: none;
}
}
IconOrImage {
position: absolute;
width: 8px;
left: calc(100% + 4px);
}
`;
export const Link: React.FC<Props> = function Link({
wrapper,
indicator,
className,
children,
...rest
}) {
return styled(styles)(
<div className={className}>
<a {...use({ wrapper })} {...rest}>{children}</a>
<a
{...use({ wrapper })}
{...rest}
>
{indicator && <IconOrImage icon='external-link' />}
{children}
</a>
</div>
);
};
@@ -66,6 +66,7 @@ export const defaultENLocale = [
['ui_close_others', 'Close others'],
['ui_close_all_to_the_right', 'Close all to the Right'],
['ui_close_all_to_the_left', 'Close all to the Left'],
['ui_or', 'Or'],
['root_permission_denied', "You don't have permissions"],
['root_permission_no_permission', "You don't have permission for this action"],
@@ -45,6 +45,7 @@ export const defaultITLocale = [
['ui_close_others', 'Close others'],
['ui_close_all_to_the_right', 'Close all to the Right'],
['ui_close_all_to_the_left', 'Close all to the Left'],
['ui_or', 'Or'],
['root_permission_denied', 'Non hai i permessi'],
['app_root_session_expire_warning_title', 'La sessione sta per scadere'],
@@ -64,6 +64,7 @@ export const defaultRULocale = [
['ui_close_others', 'Закрыть другие'],
['ui_close_all_to_the_right', 'Закрыть все справа'],
['ui_close_all_to_the_left', 'Закрыть все слева'],
['ui_or', 'Или'],
['root_permission_denied', 'Отказано в доступе'],
['root_permission_no_permission', 'У вас нет разрешения на это действие'],
@@ -43,7 +43,7 @@ export const defaultZHLocale = [
['ui_rename', '重命名'],
['ui_rename_processing', '重命名中...'],
['ui_name', '名称'],
['ui_cant_delete_item', "此项目不能删除"],
['ui_cant_delete_item', '此项目不能删除'],
['ui_no_items_placeholder', '还没有项目'],
['ui_search_no_result_placeholder', '没有找到结果'],
['ui_save_reminder', '您有未保存的更改'],
@@ -66,9 +66,10 @@ export const defaultZHLocale = [
['ui_close_others', 'Close others'],
['ui_close_all_to_the_right', 'Close all to the Right'],
['ui_close_all_to_the_left', 'Close all to the Left'],
['ui_or', 'Or'],
['root_permission_denied', "您没有权限"],
['root_permission_no_permission', "您没有权限执行此操作"],
['root_permission_denied', '您没有权限'],
['root_permission_no_permission', '您没有权限执行此操作'],
['app_root_session_expire_warning_title', '会话即将过期'],
['app_root_session_expire_warning_message', '您的会话将在5分钟内到期。要继续工作,请关闭此弹出窗口。'],
['app_root_session_expire_warning_button', '我在'],
+17
View File
@@ -0,0 +1,17 @@
# dependencies
/node_modules
# testing
/coverage
# production
/lib
# misc
.DS_Store
.env*
# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
+46
View File
@@ -0,0 +1,46 @@
{
"name": "@cloudbeaver/plugin-help",
"sideEffects": false,
"version": "0.1.0",
"description": "",
"license": "Apache-2.0",
"main": "lib/index.js",
"module": "lib/index.js",
"types": "src/index.ts",
"scripts": {
"prebuild": "rimraf lib/*",
"build": "webpack --config ../../configs/webpack.plugin.config.js",
"postbuild": "tsc",
"lint": "eslint ./src/ --ext .ts,.tsx",
"lint-fix": "eslint ./src/ --ext .ts,.tsx --fix"
},
"peerDependencies": {
"@cloudbeaver/core-administration": "^0.1.0",
"@cloudbeaver/core-app": "^0.1.0",
"@cloudbeaver/core-authentication": "^0.1.0",
"@cloudbeaver/core-blocks": "^0.1.0",
"@cloudbeaver/core-connections": "^0.1.0",
"@cloudbeaver/core-di": "^0.1.0",
"@cloudbeaver/core-dialogs": "^0.1.0",
"@cloudbeaver/core-events": "^0.1.0",
"@cloudbeaver/core-executor": "^0.1.0",
"@cloudbeaver/core-extensions": "^0.1.0",
"@cloudbeaver/core-localization": "^0.1.0",
"@cloudbeaver/core-notifications": "^0.1.0",
"@cloudbeaver/core-plugin": "^0.1.0",
"@cloudbeaver/core-product": "^0.1.0",
"@cloudbeaver/core-root": "^0.1.0",
"@cloudbeaver/core-routing": "^0.1.0",
"@cloudbeaver/core-sdk": "^0.1.0",
"@cloudbeaver/core-settings": "^0.1.0",
"@cloudbeaver/core-theming": "^0.1.0",
"@cloudbeaver/core-ui": "^0.1.0",
"@cloudbeaver/core-utils": "^0.1.0",
"@cloudbeaver/core-version-update": "^0.1.0",
"@cloudbeaver/core-view": "^0.1.0",
"mobx": "^6.x.x",
"mobx-react-lite": "^3.x.x",
"react": "^17.x.x",
"reshadow": "^0.x.x"
}
}
+48
View File
@@ -0,0 +1,48 @@
/*
* CloudBeaver - Cloud Database Manager
* Copyright (C) 2020-2022 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0.
* you may not use this file except in compliance with the License.
*/
import { observer } from 'mobx-react-lite';
import styled, { css } from 'reshadow';
import { IconOrImage } from '@cloudbeaver/core-blocks';
import { useService } from '@cloudbeaver/core-di';
import { CommonDialogService } from '@cloudbeaver/core-dialogs';
import { composes, useStyles } from '@cloudbeaver/core-theming';
import { ShortcutsDialog } from './Shortcuts/ShortcutsDialog';
const styles = composes(
css`
container {
composes: theme-ripple from global;
}
`,
css`
container {
height: 100%;
display: flex;
align-items: center;
padding: 0 16px;
cursor: pointer;
& IconOrImage {
width: 24px;
}
}
`
);
export const Help = observer(function Help() {
const style = useStyles(styles);
const commonDialogService = useService(CommonDialogService);
return styled(style)(
<container onClick={() => commonDialogService.open(ShortcutsDialog, null)}>
<IconOrImage icon='info' viewBox='0 0 24 24' />
</container>
);
});
@@ -0,0 +1,36 @@
/*
* CloudBeaver - Cloud Database Manager
* Copyright (C) 2020-2022 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0.
* you may not use this file except in compliance with the License.
*/
import { Bootstrap, injectable } from '@cloudbeaver/core-di';
import { LocalizationService } from '@cloudbeaver/core-localization';
@injectable()
export class LocaleService extends Bootstrap {
constructor(private readonly localizationService: LocalizationService) {
super();
}
register(): void | Promise<void> {
this.localizationService.addProvider(this.provider.bind(this));
}
load(): void | Promise<void> { }
private async provider(locale: string) {
switch (locale) {
case 'ru':
return (await import('./locales/ru')).default;
case 'it':
return (await import('./locales/it')).default;
case 'zh':
return (await import('./locales/zh')).default;
default:
return (await import('./locales/en')).default;
}
}
}
@@ -0,0 +1,27 @@
/*
* CloudBeaver - Cloud Database Manager
* Copyright (C) 2020-2022 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0.
* you may not use this file except in compliance with the License.
*/
import { TopNavService } from '@cloudbeaver/core-app';
import { Bootstrap, injectable } from '@cloudbeaver/core-di';
import { Help } from './Help';
@injectable()
export class PluginBootstrap extends Bootstrap {
constructor(
private readonly topNavService: TopNavService
) {
super();
}
async load(): Promise<void> { }
register(): void {
this.topNavService.placeholder.add(Help, 4);
}
}
@@ -0,0 +1,14 @@
/*
* CloudBeaver - Cloud Database Manager
* Copyright (C) 2020-2022 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0.
* you may not use this file except in compliance with the License.
*/
import type { TLocalizationToken } from '@cloudbeaver/core-localization';
export interface IShortcut {
label: TLocalizationToken;
code: string[];
}
@@ -0,0 +1,63 @@
/*
* CloudBeaver - Cloud Database Manager
* Copyright (C) 2020-2022 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0.
* you may not use this file except in compliance with the License.
*/
import type { IShortcut } from './IShortcut';
export const DATA_VIEWER_SHORTCUTS: IShortcut[] = [
{
label: 'data_viewer_shortcut_start_inline_editing',
code: ['Enter', 'Backspace'],
},
{
label: 'data_viewer_shortcut_add_new_row',
code: ['Alt + Insert'],
},
{
label: 'data_viewer_shortcut_duplicate_row',
code: ['Ctrl + Alt + Insert'],
},
{
label: 'data_viewer_shortcut_delete_row',
code: ['Delete'],
},
{
label: 'data_viewer_shortcut_revert_inline_editor_changes',
code: ['Escape'],
},
{
label: 'data_viewer_shortcut_past_value',
code: ['Ctrl + V'],
},
{
label: 'data_viewer_shortcut_copy_value',
code: ['Ctrl + C'],
},
];
export const SQL_EDITOR_SHORTCUTS: IShortcut[] = [
{
label: 'sql_editor_shortcut_execute_statement',
code: ['Ctrl + Enter'],
},
{
label: 'sql_editor_shortcut_execute_statement_new_tab',
code: ['Ctrl + \\', 'Ctrl + Shift + Enter'],
},
{
label: 'sql_editor_shortcut_execute_script',
code: ['Alt + X'],
},
{
label: 'sql_editor_shortcut_show_execution_plan',
code: ['Shift + Ctrl + E'],
},
{
label: 'sql_editor_shortcut_open_editor_in_new_tab',
code: ['Alt + T'],
},
];
@@ -0,0 +1,74 @@
/*
* CloudBeaver - Cloud Database Manager
* Copyright (C) 2020-2022 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0.
* you may not use this file except in compliance with the License.
*/
import styled, { css } from 'reshadow';
import { useTranslate } from '@cloudbeaver/core-localization';
import { composes, useStyles } from '@cloudbeaver/core-theming';
import type { IShortcut } from './IShortcut';
interface Props {
shortcut: IShortcut;
}
const style = composes(
css`
shortcut-code {
composes: theme-background-secondary theme-text-on-secondary from global;
}
`,
css`
shortcut-container {
display: flex;
align-items: center;
justify-content: space-between;
}
shortcut-label {
margin-right: 8px;
}
shortcut-content {
display: flex;
align-items: center;
gap: 4px;
}
shortcut-code {
flex-shrink: 0;
font-family: monospace;
font-weight: bold;
border-radius: 4px;
width: max-content;
padding: 4px 8px;
}
span {
white-space: nowrap;
text-transform: lowercase;
}
`);
export const Shortcut: React.FC<Props> = function Shortcut({ shortcut }) {
const translate = useTranslate();
return styled(useStyles(style))(
<shortcut-container>
<shortcut-label>
{translate(shortcut.label)}
</shortcut-label>
<shortcut-content>
{shortcut.code.map((code, index) => (
<>
{index > 0 && <span>{translate('ui_or')}</span>}
<shortcut-code>
{code}
</shortcut-code>
</>
))}
</shortcut-content>
</shortcut-container>
);
};
@@ -0,0 +1,76 @@
/*
* CloudBeaver - Cloud Database Manager
* Copyright (C) 2020-2022 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0.
* you may not use this file except in compliance with the License.
*/
import styled, { css } from 'reshadow';
import { BASE_CONTAINERS_STYLES, Button, Container, Group, GroupTitle, Link } from '@cloudbeaver/core-blocks';
import { CommonDialogWrapper, DialogComponent } from '@cloudbeaver/core-dialogs';
import { useTranslate } from '@cloudbeaver/core-localization';
import { useStyles } from '@cloudbeaver/core-theming';
import { Shortcut } from './Shortcut';
import { DATA_VIEWER_SHORTCUTS, SQL_EDITOR_SHORTCUTS } from './SHORTCUTS_DATA';
const style = css`
CommonDialogWrapper {
max-width: 1100px;
}
Button {
margin-left: auto;
}
Container {
composes: theme-typography--body2 from global;
gap: 16px;
}
Group {
gap: 16px;
}
GroupTitle, Group {
padding: 0 !important;
}
`;
export const ShortcutsDialog: DialogComponent<null> = function ShortcutsDialog({
rejectDialog,
}) {
const translate = useTranslate();
const styles = useStyles(BASE_CONTAINERS_STYLES, style);
return styled(styles)(
<CommonDialogWrapper
title={translate('shortcuts_title')}
footer={(
<Button type='button' mod={['outlined']} onClick={rejectDialog}>
{translate('ui_close')}
</Button>
)}
size='large'
onReject={rejectDialog}
>
<Container wrap overflow>
<Group medium overflow>
<GroupTitle>
<Link href='https://github.com/dbeaver/cloudbeaver/wiki/Data-editor' target='_blank' wrapper indicator>
Data Viewer
</Link>
</GroupTitle>
{DATA_VIEWER_SHORTCUTS.map(shortcut => <Shortcut key={shortcut.label} shortcut={shortcut} />)}
</Group>
<Group medium overflow>
<GroupTitle>
<Link href='https://github.com/dbeaver/cloudbeaver/wiki/SQL-Editor' target='_blank' wrapper indicator>
SQL Editor
</Link>
</GroupTitle>
{SQL_EDITOR_SHORTCUTS.map(shortcut => <Shortcut key={shortcut.label} shortcut={shortcut} />)}
</Group>
</Container>
</CommonDialogWrapper>
);
};
+3
View File
@@ -0,0 +1,3 @@
import { manifest } from './manifest';
export default manifest;
@@ -0,0 +1,17 @@
export default [
['shortcuts_title', 'Shortcuts'],
['data_viewer_shortcut_start_inline_editing', 'Open Inline Editor for the selected Cell'],
['data_viewer_shortcut_add_new_row', 'Add a new Row'],
['data_viewer_shortcut_duplicate_row', 'Duplicate row'],
['data_viewer_shortcut_delete_row', 'Delete row'],
['data_viewer_shortcut_revert_inline_editor_changes', 'Revert Inline Editor changes'],
['data_viewer_shortcut_past_value', 'Past value to the Cell from the Clipboard'],
['data_viewer_shortcut_copy_value', 'Copy Cell value to the Clipboard'],
['sql_editor_shortcut_execute_statement', 'Execute SQL statement'],
['sql_editor_shortcut_execute_statement_new_tab', 'Execute SQL statement in the new Tab'],
['sql_editor_shortcut_execute_script', 'Execute script'],
['sql_editor_shortcut_show_execution_plan', 'Show Execution plan'],
['sql_editor_shortcut_open_editor_in_new_tab', 'Open SQL Editor in the separate browser Tab'],
];
@@ -0,0 +1,17 @@
export default [
['shortcuts_title', 'Shortcuts'],
['data_viewer_shortcut_start_inline_editing', 'Open Inline Editor for the selected Cell'],
['data_viewer_shortcut_add_new_row', 'Add a new Row'],
['data_viewer_shortcut_duplicate_row', 'Duplicate row'],
['data_viewer_shortcut_delete_row', 'Delete row'],
['data_viewer_shortcut_revert_inline_editor_changes', 'Revert Inline Editor changes'],
['data_viewer_shortcut_past_value', 'Past value to the Cell from the Clipboard'],
['data_viewer_shortcut_copy_value', 'Copy Cell value to the Clipboard'],
['sql_editor_shortcut_execute_statement', 'Execute SQL statement'],
['sql_editor_shortcut_execute_statement_new_tab', 'Execute SQL statement in the new Tab'],
['sql_editor_shortcut_execute_script', 'Execute script'],
['sql_editor_shortcut_show_execution_plan', 'Show Execution plan'],
['sql_editor_shortcut_open_editor_in_new_tab', 'Open SQL Editor in the separate browser Tab'],
];
@@ -0,0 +1,17 @@
export default [
['shortcuts_title', 'Горячие клавиши'],
['data_viewer_shortcut_start_inline_editing', 'Начать редактирование ячейки во встроенном редакторе'],
['data_viewer_shortcut_add_new_row', 'Добавить новую строку'],
['data_viewer_shortcut_duplicate_row', 'Продублировать строку'],
['data_viewer_shortcut_delete_row', 'Удалить строку'],
['data_viewer_shortcut_revert_inline_editor_changes', 'Отменить изменения во встроенном редакторе'],
['data_viewer_shortcut_past_value', 'Вставить значение из буфера обмена в ячейку'],
['data_viewer_shortcut_copy_value', 'Скопировать значение ячейки в буфер обмена'],
['sql_editor_shortcut_execute_statement', 'Выполнить SQL выражение'],
['sql_editor_shortcut_execute_statement_new_tab', 'Выполнить SQL выражение в новой вкладке'],
['sql_editor_shortcut_execute_script', 'Выполнить скрипт'],
['sql_editor_shortcut_show_execution_plan', 'Показать план выполнения'],
['sql_editor_shortcut_open_editor_in_new_tab', 'Открыть SQL редактор в новой бразуерной вкладке'],
];
@@ -0,0 +1,17 @@
export default [
['shortcuts_title', 'Shortcuts'],
['data_viewer_shortcut_start_inline_editing', 'Open Inline Editor for the selected Cell'],
['data_viewer_shortcut_add_new_row', 'Add a new Row'],
['data_viewer_shortcut_duplicate_row', 'Duplicate row'],
['data_viewer_shortcut_delete_row', 'Delete row'],
['data_viewer_shortcut_revert_inline_editor_changes', 'Revert Inline Editor changes'],
['data_viewer_shortcut_past_value', 'Past value to the Cell from the Clipboard'],
['data_viewer_shortcut_copy_value', 'Copy Cell value to the Clipboard'],
['sql_editor_shortcut_execute_statement', 'Execute SQL statement'],
['sql_editor_shortcut_execute_statement_new_tab', 'Execute SQL statement in the new Tab'],
['sql_editor_shortcut_execute_script', 'Execute script'],
['sql_editor_shortcut_show_execution_plan', 'Show Execution plan'],
['sql_editor_shortcut_open_editor_in_new_tab', 'Open SQL Editor in the separate browser Tab'],
];
@@ -0,0 +1,23 @@
/*
* CloudBeaver - Cloud Database Manager
* Copyright (C) 2020-2022 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0.
* you may not use this file except in compliance with the License.
*/
import type { PluginManifest } from '@cloudbeaver/core-di';
import { LocaleService } from './LocaleService';
import { PluginBootstrap } from './PluginBootstrap';
export const manifest: PluginManifest = {
info: {
name: 'Help plugin',
},
providers: [
PluginBootstrap,
LocaleService,
],
};
+11
View File
@@ -0,0 +1,11 @@
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"rootDir": "src",
"outDir": "lib",
"composite": true
},
"include": ["src"],
"exclude": ["**/node_modules", "**/.*/"],
"references": [{ "path": "../*" }]
}
@@ -8,6 +8,7 @@
import { TopNavService } from '@cloudbeaver/core-app';
import { Bootstrap, injectable } from '@cloudbeaver/core-di';
import { SettingsMenu } from './SettingsMenu/SettingsMenu';
@injectable()
@@ -19,7 +20,7 @@ export class PluginBootstrap extends Bootstrap {
}
register(): void | Promise<void> {
this.topNavService.placeholder.add(SettingsMenu, 5);
this.topNavService.placeholder.add(SettingsMenu, 6);
}
load(): void | Promise<void> { }
@@ -20,7 +20,7 @@ export class PluginBootstrap extends Bootstrap {
}
register(): void {
this.topNavService.placeholder.add(UserMenu, 4);
this.topNavService.placeholder.add(UserMenu, 5);
}
load(): void { }
+6 -4
View File
@@ -5,8 +5,6 @@ import type { PluginManifest } from '@cloudbeaver/core-di';
import administration from '@cloudbeaver/plugin-administration';
import authentication from '@cloudbeaver/plugin-authentication';
import authenticationAdministration from '@cloudbeaver/plugin-authentication-administration';
import theme from '@cloudbeaver/plugin-theme';
import localization from '@cloudbeaver/plugin-localization';
import connectionCustom from '@cloudbeaver/plugin-connection-custom';
import connectionTemplate from '@cloudbeaver/plugin-connection-template';
import connectionPlugin from '@cloudbeaver/plugin-connections';
@@ -16,16 +14,19 @@ import spreadsheetNew from '@cloudbeaver/plugin-data-spreadsheet-new';
import dataViewer from '@cloudbeaver/plugin-data-viewer';
import ddlViewer from '@cloudbeaver/plugin-ddl-viewer';
import gisViewer from '@cloudbeaver/plugin-gis-viewer';
import help from '@cloudbeaver/plugin-help';
import localization from '@cloudbeaver/plugin-localization';
import objectViewer from '@cloudbeaver/plugin-object-viewer';
import productPlugin from '@cloudbeaver/plugin-product';
import settingsMenu from '@cloudbeaver/plugin-settings-menu';
import settingsMenuAdministration from '@cloudbeaver/plugin-settings-menu-administration';
import sqlEditor from '@cloudbeaver/plugin-sql-editor';
import sqlEditorTab from '@cloudbeaver/plugin-sql-editor-navigation-tab';
import sqlEditorScreen from '@cloudbeaver/plugin-sql-editor-screen';
import theme from '@cloudbeaver/plugin-theme';
import userProfile from '@cloudbeaver/plugin-user-profile';
import userProfileAdministration from '@cloudbeaver/plugin-user-profile-administration';
import versionUpdate from '@cloudbeaver/plugin-version-update-administration';
import settingsMenu from '@cloudbeaver/plugin-settings-menu';
import settingsMenuAdministration from '@cloudbeaver/plugin-settings-menu-administration';
import { defaultProductManifest } from './manifest';
@@ -55,6 +56,7 @@ const PLUGINS: PluginManifest[] = [
productPlugin,
settingsMenu,
settingsMenuAdministration,
help,
];
bootstrap(PLUGINS);