mirror of
https://github.com/dbeaver/cloudbeaver.git
synced 2026-10-28 03:41:48 +08:00
CB-2501 refactor: plugins structure
This commit is contained in:
+2
-4
@@ -10,11 +10,9 @@ import { observer } from 'mobx-react-lite';
|
||||
import { useEffect } from 'react';
|
||||
import styled, { css } from 'reshadow';
|
||||
|
||||
import { Placeholder, useObjectRef, useExecutor, BASE_CONTAINERS_STYLES, IconOrImage } from '@cloudbeaver/core-blocks';
|
||||
import { Placeholder, useObjectRef, useExecutor, BASE_CONTAINERS_STYLES, IconOrImage, useTranslate, useStyles } from '@cloudbeaver/core-blocks';
|
||||
import { useService } from '@cloudbeaver/core-di';
|
||||
import { useTranslate } from '@cloudbeaver/core-localization';
|
||||
import type { AdminAuthProviderConfiguration } from '@cloudbeaver/core-sdk';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
import { TabsState, TabList, UNDERLINE_TAB_STYLES, TabPanelList, BASE_TAB_STYLES } from '@cloudbeaver/core-ui';
|
||||
|
||||
import { AuthConfigurationFormService } from './AuthConfigurationFormService';
|
||||
@@ -110,7 +108,7 @@ export const AuthConfigurationForm = observer<Props>(function AuthConfigurationF
|
||||
}) {
|
||||
const translate = useTranslate();
|
||||
const props = useObjectRef({ onSave });
|
||||
const style = [BASE_TAB_STYLES, tabsStyles, UNDERLINE_TAB_STYLES];
|
||||
const style = useStyles(BASE_TAB_STYLES, tabsStyles, UNDERLINE_TAB_STYLES);
|
||||
const styles = useStyles(style, BASE_CONTAINERS_STYLES, topBarStyles, formStyles);
|
||||
const service = useService(AuthConfigurationFormService);
|
||||
|
||||
|
||||
+2
-2
@@ -8,8 +8,8 @@
|
||||
|
||||
import { observer } from 'mobx-react-lite';
|
||||
|
||||
import { Button, PlaceholderComponent } from '@cloudbeaver/core-blocks';
|
||||
import { useTranslate } from '@cloudbeaver/core-localization';
|
||||
import { Button, PlaceholderComponent, useTranslate } from '@cloudbeaver/core-blocks';
|
||||
|
||||
|
||||
import type { IAuthConfigurationFormProps } from './IAuthConfigurationFormProps';
|
||||
|
||||
|
||||
+3
-3
@@ -10,10 +10,10 @@ import { observer } from 'mobx-react-lite';
|
||||
import styled, { css } from 'reshadow';
|
||||
|
||||
import { AdministrationItemContentComponent, ADMINISTRATION_TOOLS_PANEL_STYLES } from '@cloudbeaver/core-administration';
|
||||
import { BASE_CONTAINERS_STYLES, ToolsAction, Loader, ToolsPanel, BASE_LAYOUT_GRID_STYLES } from '@cloudbeaver/core-blocks';
|
||||
import { BASE_CONTAINERS_STYLES, ToolsAction, Loader, ToolsPanel, BASE_LAYOUT_GRID_STYLES, useTranslate, useStyles } from '@cloudbeaver/core-blocks';
|
||||
import { useService } from '@cloudbeaver/core-di';
|
||||
import { useTranslate } from '@cloudbeaver/core-localization';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
|
||||
|
||||
|
||||
import { AuthConfigurationsTable } from './AuthConfigurationsTable/AuthConfigurationsTable';
|
||||
import { useConfigurationsTable } from './AuthConfigurationsTable/useConfigurationsTable';
|
||||
|
||||
+3
-2
@@ -9,9 +9,10 @@
|
||||
import styled from 'reshadow';
|
||||
|
||||
import type { AdministrationItemDrawerProps } from '@cloudbeaver/core-administration';
|
||||
import { Translate, useStyles } from '@cloudbeaver/core-blocks';
|
||||
import { Tab, TabTitle, TabIcon } from '@cloudbeaver/core-ui';
|
||||
import { Translate } from '@cloudbeaver/core-localization';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
|
||||
|
||||
|
||||
export const AuthConfigurationsDrawerItem: React.FC<AdministrationItemDrawerProps> = function AuthConfigurationsDrawerItem({
|
||||
item, onSelect, style, disabled,
|
||||
|
||||
+1
-2
@@ -16,7 +16,6 @@ import {
|
||||
} from '@cloudbeaver/core-blocks';
|
||||
import { useService } from '@cloudbeaver/core-di';
|
||||
import type { AdminAuthProviderConfiguration } from '@cloudbeaver/core-sdk';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
|
||||
import { AuthConfigurationsAdministrationService } from '../AuthConfigurationsAdministrationService';
|
||||
import { AuthConfigurationEdit } from './AuthConfigurationEdit';
|
||||
@@ -48,7 +47,7 @@ export const AuthConfiguration = observer<Props>(function AuthConfiguration({ co
|
||||
|
||||
const icon = configuration.iconURL || resource.data?.icon;
|
||||
|
||||
return styled(useStyles(styles))(
|
||||
return styled(styles)(
|
||||
<TableItem item={configuration.id} expandElement={AuthConfigurationEdit}>
|
||||
<TableColumnValue centerContent flex>
|
||||
<TableItemSelect />
|
||||
|
||||
+2
-2
@@ -11,9 +11,9 @@ import { useRef, useEffect, useContext, useCallback } from 'react';
|
||||
import styled, { css } from 'reshadow';
|
||||
|
||||
import { AuthConfigurationsResource } from '@cloudbeaver/core-authentication';
|
||||
import { TableContext } from '@cloudbeaver/core-blocks';
|
||||
import { TableContext, useStyles } from '@cloudbeaver/core-blocks';
|
||||
import { useService } from '@cloudbeaver/core-di';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
|
||||
|
||||
import { AuthConfigurationForm } from '../AuthConfigurationForm';
|
||||
import { useAuthConfigurationFormState } from '../useAuthConfigurationFormState';
|
||||
|
||||
+2
-3
@@ -9,10 +9,9 @@
|
||||
import { observer } from 'mobx-react-lite';
|
||||
import styled, { css } from 'reshadow';
|
||||
|
||||
import { Table, TableHeader, TableColumnHeader, TableBody, TableSelect } from '@cloudbeaver/core-blocks';
|
||||
import { useTranslate } from '@cloudbeaver/core-localization';
|
||||
import { Table, TableHeader, TableColumnHeader, TableBody, TableSelect, useTranslate, useStyles } from '@cloudbeaver/core-blocks';
|
||||
import type { AdminAuthProviderConfiguration } from '@cloudbeaver/core-sdk';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
|
||||
|
||||
import { AuthConfiguration } from './AuthConfiguration';
|
||||
|
||||
|
||||
+2
-2
@@ -9,11 +9,11 @@
|
||||
import { computed, observable } from 'mobx';
|
||||
|
||||
import { AuthConfigurationsResource, compareAuthConfigurations } from '@cloudbeaver/core-authentication';
|
||||
import { TableState, useObservableRef } from '@cloudbeaver/core-blocks';
|
||||
import { TableState, useObservableRef, useTranslate } from '@cloudbeaver/core-blocks';
|
||||
import { useService } from '@cloudbeaver/core-di';
|
||||
import { CommonDialogService, ConfirmationDialogDelete, DialogueStateResult } from '@cloudbeaver/core-dialogs';
|
||||
import { NotificationService } from '@cloudbeaver/core-events';
|
||||
import { useTranslate } from '@cloudbeaver/core-localization';
|
||||
|
||||
import { AdminAuthProviderConfiguration, resourceKeyList } from '@cloudbeaver/core-sdk';
|
||||
|
||||
interface State {
|
||||
|
||||
+2
-5
@@ -9,10 +9,8 @@
|
||||
import { observer } from 'mobx-react-lite';
|
||||
import styled, { css } from 'reshadow';
|
||||
|
||||
import { IconButton } from '@cloudbeaver/core-blocks';
|
||||
import { IconButton, Translate } from '@cloudbeaver/core-blocks';
|
||||
import { useService } from '@cloudbeaver/core-di';
|
||||
import { Translate } from '@cloudbeaver/core-localization';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
|
||||
import { AuthConfigurationForm } from './AuthConfigurationForm';
|
||||
import { CreateAuthConfigurationService } from './CreateAuthConfigurationService';
|
||||
@@ -50,14 +48,13 @@ const styles = css`
|
||||
`;
|
||||
|
||||
export const CreateAuthConfiguration: React.FC = observer(function CreateAuthConfiguration() {
|
||||
const style = useStyles(styles);
|
||||
const service = useService(CreateAuthConfigurationService);
|
||||
|
||||
if (!service.data) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return styled(style)(
|
||||
return styled(styles)(
|
||||
<configuration-create>
|
||||
<title-bar>
|
||||
<Translate token='administration_identity_providers_configuration_add' />
|
||||
|
||||
+2
-2
@@ -7,9 +7,9 @@
|
||||
*/
|
||||
|
||||
import type { ServiceDescriptionComponent } from '@cloudbeaver/core-authentication';
|
||||
import { Link } from '@cloudbeaver/core-blocks';
|
||||
import { Link, Translate } from '@cloudbeaver/core-blocks';
|
||||
import { useService } from '@cloudbeaver/core-di';
|
||||
import { Translate } from '@cloudbeaver/core-localization';
|
||||
|
||||
|
||||
import { AuthConfigurationsAdministrationNavService } from './AuthConfigurationsAdministrationNavService';
|
||||
|
||||
|
||||
+1
-3
@@ -14,11 +14,9 @@ import { AuthConfigurationParametersResource, AuthProvidersResource } from '@clo
|
||||
import {
|
||||
BASE_CONTAINERS_STYLES, ColoredContainer, Combobox, FieldCheckbox, Group, GroupTitle,
|
||||
InputField, Link, ObjectPropertyInfoForm, SubmittingForm,
|
||||
Textarea, useClipboard, useMapResource, useObjectPropertyCategories
|
||||
Textarea, useClipboard, useMapResource, useObjectPropertyCategories, useStyles, useTranslate
|
||||
} from '@cloudbeaver/core-blocks';
|
||||
import { useTranslate } from '@cloudbeaver/core-localization';
|
||||
import { AuthProviderConfigurationParametersFragment, CachedMapAllKey } from '@cloudbeaver/core-sdk';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
import type { TabContainerPanelComponent } from '@cloudbeaver/core-ui';
|
||||
|
||||
import type { IAuthConfigurationFormProps } from '../IAuthConfigurationFormProps';
|
||||
|
||||
+1
-3
@@ -11,11 +11,9 @@ import React, { useContext } from 'react';
|
||||
import styled from 'reshadow';
|
||||
|
||||
import { AuthProviderService, AuthProvidersResource, AuthSettingsService, AUTH_PROVIDER_LOCAL_ID } from '@cloudbeaver/core-authentication';
|
||||
import { BASE_CONTAINERS_STYLES, FormContext, Group, GroupTitle, Loader, PlaceholderComponent, Switch, useExecutor, useMapResource } from '@cloudbeaver/core-blocks';
|
||||
import { BASE_CONTAINERS_STYLES, FormContext, Group, GroupTitle, Loader, PlaceholderComponent, Switch, useExecutor, useMapResource, useTranslate, useStyles } from '@cloudbeaver/core-blocks';
|
||||
import { useService } from '@cloudbeaver/core-di';
|
||||
import { useTranslate } from '@cloudbeaver/core-localization';
|
||||
import { CachedMapAllKey } from '@cloudbeaver/core-sdk';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
import type { IConfigurationPlaceholderProps } from '@cloudbeaver/plugin-administration';
|
||||
|
||||
import { ServerConfigurationAdminForm } from './ServerConfigurationAdminForm';
|
||||
|
||||
+3
-3
@@ -10,10 +10,10 @@
|
||||
import { observer } from 'mobx-react-lite';
|
||||
import styled from 'reshadow';
|
||||
|
||||
import { BASE_CONTAINERS_STYLES, Group, GroupTitle, InputField } from '@cloudbeaver/core-blocks';
|
||||
import { useTranslate } from '@cloudbeaver/core-localization';
|
||||
import { BASE_CONTAINERS_STYLES, Group, GroupTitle, InputField, useTranslate, useStyles } from '@cloudbeaver/core-blocks';
|
||||
|
||||
import type { ServerConfigInput } from '@cloudbeaver/core-sdk';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
|
||||
|
||||
interface Props {
|
||||
serverConfig: ServerConfigInput;
|
||||
|
||||
+4
-3
@@ -8,9 +8,10 @@
|
||||
|
||||
import styled, { css } from 'reshadow';
|
||||
|
||||
import { Translate } from '@cloudbeaver/core-localization';
|
||||
|
||||
import { Translate } from '@cloudbeaver/core-blocks';
|
||||
import type { AdminUserInfo } from '@cloudbeaver/core-sdk';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
|
||||
|
||||
import { UserForm } from '../UserForm/UserForm';
|
||||
|
||||
@@ -53,7 +54,7 @@ export const CreateMetaParameter: React.FC<Props> = function CreateMetaParameter
|
||||
user,
|
||||
onCancel,
|
||||
}) {
|
||||
return styled(useStyles(styles))(
|
||||
return styled(styles)(
|
||||
<user-create>
|
||||
<title-bar><Translate token='authentication_administration_user_connections_user_add' /></title-bar>
|
||||
<user-create-content>
|
||||
|
||||
+1
-3
@@ -9,10 +9,8 @@
|
||||
import { observer } from 'mobx-react-lite';
|
||||
import styled, { css } from 'reshadow';
|
||||
|
||||
import { BASE_CONTAINERS_STYLES, IconOrImage } from '@cloudbeaver/core-blocks';
|
||||
import { useTranslate } from '@cloudbeaver/core-localization';
|
||||
import { BASE_CONTAINERS_STYLES, IconOrImage, useTranslate, useStyles } from '@cloudbeaver/core-blocks';
|
||||
import type { UserInfo } from '@cloudbeaver/core-sdk';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
import { UNDERLINE_TAB_STYLES, TabList, TabsState, BASE_TAB_STYLES } from '@cloudbeaver/core-ui';
|
||||
|
||||
import type { IUserProfileFormState } from './IUserProfileFormState';
|
||||
|
||||
+3
-3
@@ -11,10 +11,10 @@ import styled from 'reshadow';
|
||||
|
||||
import { UserMetaParametersResource } from '@cloudbeaver/core-authentication';
|
||||
import { TabPanel } from '@cloudbeaver/core-ui';
|
||||
import { BASE_CONTAINERS_STYLES, ColoredContainer, Container, Group, InputField, Loader, ObjectPropertyInfoForm, useDataResource } from '@cloudbeaver/core-blocks';
|
||||
import { useTranslate } from '@cloudbeaver/core-localization';
|
||||
import { BASE_CONTAINERS_STYLES, ColoredContainer, Container, Group, InputField, Loader, ObjectPropertyInfoForm, useDataResource, useTranslate, useStyles } from '@cloudbeaver/core-blocks';
|
||||
|
||||
import type { UserInfo } from '@cloudbeaver/core-sdk';
|
||||
import { ComponentStyle, useStyles } from '@cloudbeaver/core-theming';
|
||||
import type { ComponentStyle } from '@cloudbeaver/core-theming';
|
||||
|
||||
import { AuthProvidersList } from '../AuthProviders/ConfigurationsList';
|
||||
|
||||
|
||||
+2
-2
@@ -10,8 +10,8 @@ import { observer } from 'mobx-react-lite';
|
||||
import styled from 'reshadow';
|
||||
|
||||
import { Tab } from '@cloudbeaver/core-ui';
|
||||
import { useTranslate } from '@cloudbeaver/core-localization';
|
||||
import { ComponentStyle, useStyles } from '@cloudbeaver/core-theming';
|
||||
|
||||
import type { ComponentStyle } from '@cloudbeaver/core-theming';
|
||||
|
||||
interface Props {
|
||||
className?: string;
|
||||
|
||||
+3
-3
@@ -11,10 +11,10 @@ import styled, { css, use } from 'reshadow';
|
||||
|
||||
import type { IAdministrationItemSubItem } from '@cloudbeaver/core-administration';
|
||||
import { UserMetaParametersResource } from '@cloudbeaver/core-authentication';
|
||||
import { Table, TableHeader, TableColumnHeader, TableBody, TableSelect, useDataResource, ToolsPanel, ToolsAction, Loader, BASE_LAYOUT_GRID_STYLES } from '@cloudbeaver/core-blocks';
|
||||
import { Table, TableHeader, TableColumnHeader, TableBody, TableSelect, useDataResource, ToolsPanel, ToolsAction, Loader, BASE_LAYOUT_GRID_STYLES, useTranslate, useStyles } from '@cloudbeaver/core-blocks';
|
||||
import { useController, useService } from '@cloudbeaver/core-di';
|
||||
import { useTranslate } from '@cloudbeaver/core-localization';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
|
||||
|
||||
|
||||
import { CreateMetaParameter } from './CreateMetaParameter';
|
||||
import { CreateMetaParameterService } from './CreateMetaParameterService';
|
||||
|
||||
+2
-2
@@ -13,7 +13,7 @@ import {
|
||||
TableItem, TableColumnValue, TableItemSelect, TableItemExpand
|
||||
} from '@cloudbeaver/core-blocks';
|
||||
import type { ObjectPropertyInfo } from '@cloudbeaver/core-sdk';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
|
||||
|
||||
const styles = css`
|
||||
TableColumnValue[expand] {
|
||||
@@ -27,7 +27,7 @@ interface Props {
|
||||
}
|
||||
|
||||
export const MetadataParam = observer<Props>(function MetadataParam({ param, selectable }) {
|
||||
return styled(useStyles(styles))(
|
||||
return styled(styles)(
|
||||
<TableItem item={param.id} selectDisabled={!selectable}>
|
||||
{selectable && (
|
||||
<TableColumnValue centerContent flex>
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@ import {
|
||||
TableContext
|
||||
} from '@cloudbeaver/core-blocks';
|
||||
import { useController } from '@cloudbeaver/core-di';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
|
||||
|
||||
import { UserForm } from '../UserForm/UserForm';
|
||||
import { UserEditController } from './UserEditController';
|
||||
|
||||
+4
-5
@@ -9,10 +9,10 @@
|
||||
import { observer } from 'mobx-react-lite';
|
||||
import styled, { css } from 'reshadow';
|
||||
|
||||
import { IconButton } from '@cloudbeaver/core-blocks';
|
||||
import { IconButton, Translate } from '@cloudbeaver/core-blocks';
|
||||
import { useService } from '@cloudbeaver/core-di';
|
||||
import { Translate } from '@cloudbeaver/core-localization';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
|
||||
|
||||
|
||||
import { CreateRoleService } from './CreateRoleService';
|
||||
import { RoleForm } from './RoleForm';
|
||||
@@ -50,14 +50,13 @@ const styles = css`
|
||||
`;
|
||||
|
||||
export const CreateRole: React.FC = observer(function CreateRole() {
|
||||
const style = useStyles(styles);
|
||||
const service = useService(CreateRoleService);
|
||||
|
||||
if (!service.data) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return styled(style)(
|
||||
return styled(styles)(
|
||||
<role-create>
|
||||
<title-bar>
|
||||
<Translate token='administration_roles_role_creation' />
|
||||
|
||||
+4
-3
@@ -9,7 +9,7 @@
|
||||
import { observable } from 'mobx';
|
||||
import { observer } from 'mobx-react-lite';
|
||||
import { useCallback, useState } from 'react';
|
||||
import styled, { css, use } from 'reshadow';
|
||||
import styled, { css } from 'reshadow';
|
||||
|
||||
import {
|
||||
Table,
|
||||
@@ -22,12 +22,13 @@ import {
|
||||
useObjectRef,
|
||||
getComputed,
|
||||
getSelectedItems,
|
||||
useTranslate,
|
||||
useStyles,
|
||||
} from '@cloudbeaver/core-blocks';
|
||||
import { DBDriverResource } from '@cloudbeaver/core-connections';
|
||||
import { useService } from '@cloudbeaver/core-di';
|
||||
import { useTranslate } from '@cloudbeaver/core-localization';
|
||||
import type { DatabaseConnectionFragment } from '@cloudbeaver/core-sdk';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
|
||||
|
||||
import { getFilteredConnections } from './getFilteredConnections';
|
||||
import { GrantedConnectionsTableHeader, IFilterState } from './GrantedConnectionsTableHeader/GrantedConnectionsTableHeader';
|
||||
|
||||
+2
-3
@@ -13,13 +13,12 @@ import styled, { css } from 'reshadow';
|
||||
|
||||
import {
|
||||
BASE_CONTAINERS_STYLES, ColoredContainer, Container, Group,
|
||||
InfoItem, Loader, TextPlaceholder, useMapResource
|
||||
InfoItem, Loader, TextPlaceholder, useMapResource, useStyles, useTranslate
|
||||
} from '@cloudbeaver/core-blocks';
|
||||
import { ConnectionInfoProjectKey, ConnectionInfoResource, DBDriverResource, isCloudConnection } from '@cloudbeaver/core-connections';
|
||||
import { TLocalizationToken, useTranslate } from '@cloudbeaver/core-localization';
|
||||
import type { TLocalizationToken } from '@cloudbeaver/core-localization';
|
||||
import { PROJECT_GLOBAL_ID } from '@cloudbeaver/core-projects';
|
||||
import { CachedMapAllKey } from '@cloudbeaver/core-sdk';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
import { TabContainerPanelComponent, useTab } from '@cloudbeaver/core-ui';
|
||||
|
||||
import type { IRoleFormProps } from '../IRoleFormProps';
|
||||
|
||||
+5
-3
@@ -21,13 +21,15 @@ import {
|
||||
Button,
|
||||
useObjectRef,
|
||||
getSelectedItems,
|
||||
getComputed
|
||||
getComputed,
|
||||
useTranslate,
|
||||
useStyles
|
||||
} from '@cloudbeaver/core-blocks';
|
||||
import { DBDriverResource } from '@cloudbeaver/core-connections';
|
||||
import { useService } from '@cloudbeaver/core-di';
|
||||
import { TLocalizationToken, useTranslate } from '@cloudbeaver/core-localization';
|
||||
import type { TLocalizationToken } from '@cloudbeaver/core-localization';
|
||||
import type { DatabaseConnectionFragment } from '@cloudbeaver/core-sdk';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
|
||||
|
||||
import { getFilteredConnections } from './getFilteredConnections';
|
||||
import { GrantedConnectionsTableHeader, IFilterState } from './GrantedConnectionsTableHeader/GrantedConnectionsTableHeader';
|
||||
|
||||
+3
-3
@@ -9,9 +9,9 @@
|
||||
import { observer } from 'mobx-react-lite';
|
||||
import styled, { css } from 'reshadow';
|
||||
|
||||
import { Filter } from '@cloudbeaver/core-blocks';
|
||||
import { useTranslate } from '@cloudbeaver/core-localization';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
import { Filter, useTranslate, useStyles } from '@cloudbeaver/core-blocks';
|
||||
|
||||
|
||||
|
||||
export interface IFilterState {
|
||||
filterValue: string;
|
||||
|
||||
+3
-3
@@ -9,9 +9,9 @@
|
||||
import { observer } from 'mobx-react-lite';
|
||||
import styled, { css } from 'reshadow';
|
||||
|
||||
import { TableColumnHeader, TableHeader, TableSelect } from '@cloudbeaver/core-blocks';
|
||||
import { useTranslate } from '@cloudbeaver/core-localization';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
import { TableColumnHeader, TableHeader, TableSelect, useTranslate, useStyles } from '@cloudbeaver/core-blocks';
|
||||
|
||||
|
||||
|
||||
interface Props {
|
||||
disabled?: boolean;
|
||||
|
||||
+5
-3
@@ -22,12 +22,14 @@ import {
|
||||
Button,
|
||||
useObjectRef,
|
||||
getComputed,
|
||||
getSelectedItems
|
||||
getSelectedItems,
|
||||
useTranslate,
|
||||
useStyles
|
||||
} from '@cloudbeaver/core-blocks';
|
||||
import { useService } from '@cloudbeaver/core-di';
|
||||
import { TLocalizationToken, useTranslate } from '@cloudbeaver/core-localization';
|
||||
import type { TLocalizationToken } from '@cloudbeaver/core-localization';
|
||||
import type { AdminUserInfoFragment } from '@cloudbeaver/core-sdk';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
|
||||
|
||||
import { getFilteredUsers } from './getFilteredUsers';
|
||||
import { GrantedUsersTableHeader, IFilterState } from './GrantedUsersTableHeader/GrantedUsersTableHeader';
|
||||
|
||||
+3
-4
@@ -12,14 +12,13 @@ import { useEffect, useMemo } from 'react';
|
||||
import styled, { css } from 'reshadow';
|
||||
|
||||
import { UsersResource } from '@cloudbeaver/core-authentication';
|
||||
import { TabContainerPanelComponent, useTab } from '@cloudbeaver/core-ui';
|
||||
import {
|
||||
BASE_CONTAINERS_STYLES, ColoredContainer, Container, Group,
|
||||
InfoItem, Loader, TextPlaceholder, useMapResource
|
||||
InfoItem, Loader, TextPlaceholder, useMapResource, useStyles, useTranslate
|
||||
} from '@cloudbeaver/core-blocks';
|
||||
import { useTranslate } from '@cloudbeaver/core-localization';
|
||||
import { CachedMapAllKey } from '@cloudbeaver/core-sdk';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
import { TabContainerPanelComponent, useTab } from '@cloudbeaver/core-ui';
|
||||
|
||||
|
||||
import type { IRoleFormProps } from '../IRoleFormProps';
|
||||
import { GrantedUserList } from './GrantedUserList';
|
||||
|
||||
+3
-3
@@ -9,9 +9,9 @@
|
||||
import { observer } from 'mobx-react-lite';
|
||||
import styled, { css } from 'reshadow';
|
||||
|
||||
import { Filter } from '@cloudbeaver/core-blocks';
|
||||
import { useTranslate } from '@cloudbeaver/core-localization';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
import { Filter, useTranslate, useStyles } from '@cloudbeaver/core-blocks';
|
||||
|
||||
|
||||
|
||||
export interface IFilterState {
|
||||
filterValue: string;
|
||||
|
||||
+3
-3
@@ -9,9 +9,9 @@
|
||||
import { observer } from 'mobx-react-lite';
|
||||
import styled, { css } from 'reshadow';
|
||||
|
||||
import { TableColumnHeader, TableHeader, TableSelect } from '@cloudbeaver/core-blocks';
|
||||
import { useTranslate } from '@cloudbeaver/core-localization';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
import { TableColumnHeader, TableHeader, TableSelect, useTranslate, useStyles } from '@cloudbeaver/core-blocks';
|
||||
|
||||
|
||||
|
||||
interface Props {
|
||||
disabled?: boolean;
|
||||
|
||||
+3
-2
@@ -23,11 +23,12 @@ import {
|
||||
useObjectRef,
|
||||
getComputed,
|
||||
getSelectedItems,
|
||||
useTranslate,
|
||||
useStyles,
|
||||
} from '@cloudbeaver/core-blocks';
|
||||
import { useService } from '@cloudbeaver/core-di';
|
||||
import { useTranslate } from '@cloudbeaver/core-localization';
|
||||
import type { AdminUserInfoFragment } from '@cloudbeaver/core-sdk';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
|
||||
|
||||
import { getFilteredUsers } from './getFilteredUsers';
|
||||
import { GrantedUsersTableHeader, IFilterState } from './GrantedUsersTableHeader/GrantedUsersTableHeader';
|
||||
|
||||
+3
-3
@@ -11,10 +11,10 @@ import { useRef } from 'react';
|
||||
import styled, { css } from 'reshadow';
|
||||
|
||||
import { PermissionsResource } from '@cloudbeaver/core-administration';
|
||||
import { BASE_CONTAINERS_STYLES, ColoredContainer, FieldCheckbox, Group, GroupTitle, InputField, SubmittingForm, Textarea, useMapResource } from '@cloudbeaver/core-blocks';
|
||||
import { useTranslate } from '@cloudbeaver/core-localization';
|
||||
import { BASE_CONTAINERS_STYLES, ColoredContainer, FieldCheckbox, Group, GroupTitle, InputField, SubmittingForm, Textarea, useMapResource, useTranslate, useStyles } from '@cloudbeaver/core-blocks';
|
||||
|
||||
import { CachedMapAllKey } from '@cloudbeaver/core-sdk';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
|
||||
import type { TabContainerPanelComponent } from '@cloudbeaver/core-ui';
|
||||
|
||||
import type { IRoleFormProps } from '../IRoleFormProps';
|
||||
|
||||
+3
-3
@@ -11,10 +11,10 @@ import { useEffect } from 'react';
|
||||
import styled, { css } from 'reshadow';
|
||||
|
||||
import type { RoleInfo } from '@cloudbeaver/core-authentication';
|
||||
import { Placeholder, useObjectRef, useExecutor, BASE_CONTAINERS_STYLES, IconOrImage } from '@cloudbeaver/core-blocks';
|
||||
import { Placeholder, useObjectRef, useExecutor, BASE_CONTAINERS_STYLES, IconOrImage, useTranslate, useStyles } from '@cloudbeaver/core-blocks';
|
||||
import { useService } from '@cloudbeaver/core-di';
|
||||
import { useTranslate } from '@cloudbeaver/core-localization';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
|
||||
|
||||
import { TabsState, TabList, UNDERLINE_TAB_STYLES, TabPanelList, BASE_TAB_STYLES } from '@cloudbeaver/core-ui';
|
||||
|
||||
import { roleContext } from './Contexts/roleContext';
|
||||
|
||||
+2
-2
@@ -8,8 +8,8 @@
|
||||
|
||||
import { observer } from 'mobx-react-lite';
|
||||
|
||||
import { Button, PlaceholderComponent } from '@cloudbeaver/core-blocks';
|
||||
import { useTranslate } from '@cloudbeaver/core-localization';
|
||||
import { Button, PlaceholderComponent, useTranslate } from '@cloudbeaver/core-blocks';
|
||||
|
||||
|
||||
import type { IRoleFormProps } from './IRoleFormProps';
|
||||
|
||||
|
||||
+2
-2
@@ -10,8 +10,8 @@ import styled from 'reshadow';
|
||||
|
||||
import type { AdministrationItemDrawerProps } from '@cloudbeaver/core-administration';
|
||||
import { Tab, TabTitle, TabIcon } from '@cloudbeaver/core-ui';
|
||||
import { Translate } from '@cloudbeaver/core-localization';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
|
||||
|
||||
|
||||
export const RolesDrawerItem: React.FC<AdministrationItemDrawerProps> = function RolesDrawerItem({
|
||||
item,
|
||||
|
||||
+3
-3
@@ -10,10 +10,10 @@ import { observer } from 'mobx-react-lite';
|
||||
import styled, { css, use } from 'reshadow';
|
||||
|
||||
import { ADMINISTRATION_TOOLS_PANEL_STYLES, IAdministrationItemSubItem } from '@cloudbeaver/core-administration';
|
||||
import { BASE_CONTAINERS_STYLES, BASE_LAYOUT_GRID_STYLES, ToolsAction, ToolsPanel } from '@cloudbeaver/core-blocks';
|
||||
import { BASE_CONTAINERS_STYLES, BASE_LAYOUT_GRID_STYLES, ToolsAction, ToolsPanel, useTranslate, useStyles } from '@cloudbeaver/core-blocks';
|
||||
import { useService } from '@cloudbeaver/core-di';
|
||||
import { useTranslate } from '@cloudbeaver/core-localization';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
|
||||
|
||||
|
||||
import { CreateRole } from './CreateRole';
|
||||
import { CreateRoleService } from './CreateRoleService';
|
||||
|
||||
+2
-2
@@ -10,9 +10,9 @@ import { observer } from 'mobx-react-lite';
|
||||
import styled, { css, use } from 'reshadow';
|
||||
|
||||
import type { RoleInfo } from '@cloudbeaver/core-authentication';
|
||||
import { TableItem, TableColumnValue, TableItemSelect, TableItemExpand, Placeholder } from '@cloudbeaver/core-blocks';
|
||||
import { TableItem, TableColumnValue, TableItemSelect, TableItemExpand, Placeholder, useStyles } from '@cloudbeaver/core-blocks';
|
||||
import { useService } from '@cloudbeaver/core-di';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
|
||||
|
||||
import { RolesAdministrationService } from '../RolesAdministrationService';
|
||||
import { RoleEdit } from './RoleEdit';
|
||||
|
||||
+2
-2
@@ -11,9 +11,9 @@ import { useRef, useEffect, useContext, useCallback } from 'react';
|
||||
import styled, { css } from 'reshadow';
|
||||
|
||||
import { RolesResource } from '@cloudbeaver/core-authentication';
|
||||
import { TableContext } from '@cloudbeaver/core-blocks';
|
||||
import { TableContext, useStyles } from '@cloudbeaver/core-blocks';
|
||||
import { useService } from '@cloudbeaver/core-di';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
|
||||
|
||||
import { RoleForm } from '../RoleForm';
|
||||
import { useRoleFormState } from '../useRoleFormState';
|
||||
|
||||
+3
-3
@@ -10,9 +10,9 @@ import { observer } from 'mobx-react-lite';
|
||||
import styled, { css } from 'reshadow';
|
||||
|
||||
import type { RoleInfo } from '@cloudbeaver/core-authentication';
|
||||
import { Table, TableHeader, TableColumnHeader, TableBody, TableSelect, Loader, ILoadableState } from '@cloudbeaver/core-blocks';
|
||||
import { useTranslate } from '@cloudbeaver/core-localization';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
import { Table, TableHeader, TableColumnHeader, TableBody, TableSelect, Loader, ILoadableState, useTranslate, useStyles } from '@cloudbeaver/core-blocks';
|
||||
|
||||
|
||||
|
||||
import { Role } from './Role';
|
||||
|
||||
|
||||
+2
-2
@@ -9,11 +9,11 @@
|
||||
import { computed, observable } from 'mobx';
|
||||
|
||||
import { compareRoles, RoleInfo, RolesResource } from '@cloudbeaver/core-authentication';
|
||||
import { ILoadableState, TableState, useMapResource, useObservableRef } from '@cloudbeaver/core-blocks';
|
||||
import { ILoadableState, TableState, useMapResource, useObservableRef, useTranslate } from '@cloudbeaver/core-blocks';
|
||||
import { useService } from '@cloudbeaver/core-di';
|
||||
import { CommonDialogService, ConfirmationDialogDelete, DialogueStateResult } from '@cloudbeaver/core-dialogs';
|
||||
import { NotificationService } from '@cloudbeaver/core-events';
|
||||
import { useTranslate } from '@cloudbeaver/core-localization';
|
||||
|
||||
import { CachedMapAllKey, resourceKeyList } from '@cloudbeaver/core-sdk';
|
||||
|
||||
interface State {
|
||||
|
||||
+1
-3
@@ -14,13 +14,11 @@ import styled, { css } from 'reshadow';
|
||||
import {
|
||||
Table, TableHeader, TableColumnHeader, TableBody,
|
||||
TableItem, TableColumnValue, TableItemSelect, StaticImage,
|
||||
TextPlaceholder, ColoredContainer, BASE_CONTAINERS_STYLES, Group
|
||||
TextPlaceholder, ColoredContainer, BASE_CONTAINERS_STYLES, Group, useTranslate, useStyles
|
||||
} from '@cloudbeaver/core-blocks';
|
||||
import { DBDriverResource, isCloudConnection } from '@cloudbeaver/core-connections';
|
||||
import { useService } from '@cloudbeaver/core-di';
|
||||
import { useTranslate } from '@cloudbeaver/core-localization';
|
||||
import { AdminSubjectType } from '@cloudbeaver/core-sdk';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
import type { TabContainerPanelComponent } from '@cloudbeaver/core-ui';
|
||||
|
||||
import type { IUserFormProps } from './UserFormService';
|
||||
|
||||
+3
-3
@@ -10,11 +10,11 @@ import { observer } from 'mobx-react-lite';
|
||||
import styled from 'reshadow';
|
||||
|
||||
import { AUTH_PROVIDER_LOCAL_ID, UsersResource } from '@cloudbeaver/core-authentication';
|
||||
import { TextPlaceholder, Loader, ExceptionMessage, BASE_CONTAINERS_STYLES, ColoredContainer, ObjectPropertyInfoForm, Group } from '@cloudbeaver/core-blocks';
|
||||
import { TextPlaceholder, Loader, ExceptionMessage, BASE_CONTAINERS_STYLES, ColoredContainer, ObjectPropertyInfoForm, Group, useTranslate, useStyles } from '@cloudbeaver/core-blocks';
|
||||
import { useService } from '@cloudbeaver/core-di';
|
||||
import { useTranslate } from '@cloudbeaver/core-localization';
|
||||
|
||||
import type { ObjectPropertyInfo } from '@cloudbeaver/core-sdk';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
|
||||
import { TabContainerPanelComponent, useTab, useTabState } from '@cloudbeaver/core-ui';
|
||||
|
||||
import { getOriginTabId } from './getOriginTabId';
|
||||
|
||||
+1
-2
@@ -9,8 +9,7 @@
|
||||
import { observer } from 'mobx-react-lite';
|
||||
import styled from 'reshadow';
|
||||
|
||||
import { Translate } from '@cloudbeaver/core-localization';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
import { Translate, useStyles } from '@cloudbeaver/core-blocks';
|
||||
import { TabTitle, Tab, TabContainerTabComponent } from '@cloudbeaver/core-ui';
|
||||
|
||||
import { getOriginTabId } from './getOriginTabId';
|
||||
|
||||
+2
-4
@@ -9,11 +9,9 @@
|
||||
import { observer } from 'mobx-react-lite';
|
||||
import styled, { css } from 'reshadow';
|
||||
|
||||
import { Loader, SubmittingForm, Button, useFocus, StatusMessage } from '@cloudbeaver/core-blocks';
|
||||
import { Loader, SubmittingForm, Button, useFocus, StatusMessage, useTranslate, useStyles } from '@cloudbeaver/core-blocks';
|
||||
import { useController, useService } from '@cloudbeaver/core-di';
|
||||
import { useTranslate } from '@cloudbeaver/core-localization';
|
||||
import type { AdminUserInfo } from '@cloudbeaver/core-sdk';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
import { TabsState, TabList, TabPanelList, UNDERLINE_TAB_STYLES, BASE_TAB_STYLES } from '@cloudbeaver/core-ui';
|
||||
|
||||
import { UserFormController } from './UserFormController';
|
||||
@@ -109,7 +107,7 @@ export const UserForm = observer<Props>(function UserForm({
|
||||
|
||||
controller.update(user, editing, onCancel);
|
||||
|
||||
return styled(useStyles(styles))(
|
||||
return styled(styles)(
|
||||
<TabsState container={service.tabsContainer} user={user} controller={controller} editing={editing}>
|
||||
<box>
|
||||
<connection-top-bar>
|
||||
|
||||
+3
-3
@@ -11,9 +11,9 @@ import { useCallback } from 'react';
|
||||
import styled, { css } from 'reshadow';
|
||||
|
||||
import { UserMetaParametersResource } from '@cloudbeaver/core-authentication';
|
||||
import { BASE_CONTAINERS_STYLES, ColoredContainer, Container, FieldCheckbox, Group, GroupTitle, InputField, Loader, ObjectPropertyInfoForm, useDataResource } from '@cloudbeaver/core-blocks';
|
||||
import { useTranslate } from '@cloudbeaver/core-localization';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
import { BASE_CONTAINERS_STYLES, ColoredContainer, Container, FieldCheckbox, Group, GroupTitle, InputField, Loader, ObjectPropertyInfoForm, useDataResource, useTranslate, useStyles } from '@cloudbeaver/core-blocks';
|
||||
|
||||
|
||||
import type { TabContainerPanelComponent } from '@cloudbeaver/core-ui';
|
||||
|
||||
import type { IUserFormProps } from './UserFormService';
|
||||
|
||||
+3
-3
@@ -10,10 +10,10 @@ import { observer } from 'mobx-react-lite';
|
||||
import styled, { css } from 'reshadow';
|
||||
|
||||
import { AdministrationItemContentComponent, ADMINISTRATION_TOOLS_PANEL_STYLES } from '@cloudbeaver/core-administration';
|
||||
import { ToolsPanel } from '@cloudbeaver/core-blocks';
|
||||
import { ToolsPanel, useTranslate, useStyles } from '@cloudbeaver/core-blocks';
|
||||
import { useService } from '@cloudbeaver/core-di';
|
||||
import { useTranslate } from '@cloudbeaver/core-localization';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
|
||||
|
||||
import { BASE_TAB_STYLES, ITabData, Tab, TabList, TabPanel, TabsState, UNDERLINE_TAB_STYLES } from '@cloudbeaver/core-ui';
|
||||
|
||||
import { MetaParameters } from './MetaParameters/MetaParameters';
|
||||
|
||||
+1
-2
@@ -9,8 +9,7 @@
|
||||
import styled from 'reshadow';
|
||||
|
||||
import type { AdministrationItemDrawerProps } from '@cloudbeaver/core-administration';
|
||||
import { Translate } from '@cloudbeaver/core-localization';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
import { Translate, useStyles } from '@cloudbeaver/core-blocks';
|
||||
import { Tab, TabTitle, TabIcon } from '@cloudbeaver/core-ui';
|
||||
|
||||
export const UsersDrawerItem: React.FC<AdministrationItemDrawerProps> = function UsersDrawerItem({
|
||||
|
||||
+4
-3
@@ -8,9 +8,10 @@
|
||||
|
||||
import styled, { css } from 'reshadow';
|
||||
|
||||
import { Translate } from '@cloudbeaver/core-localization';
|
||||
|
||||
import { Translate } from '@cloudbeaver/core-blocks';
|
||||
import type { AdminUserInfo } from '@cloudbeaver/core-sdk';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
|
||||
|
||||
import { UserForm } from '../UserForm/UserForm';
|
||||
|
||||
@@ -54,7 +55,7 @@ export const CreateUser: React.FC<Props> = function CreateUser({
|
||||
user,
|
||||
onCancel,
|
||||
}) {
|
||||
return styled(useStyles(styles))(
|
||||
return styled(styles)(
|
||||
<user-create>
|
||||
<title-bar><Translate token='authentication_administration_user_connections_user_add' /></title-bar>
|
||||
<user-create-content>
|
||||
|
||||
+4
-4
@@ -11,12 +11,12 @@ import styled, { css, use } from 'reshadow';
|
||||
|
||||
import { AdminUser, UsersResource } from '@cloudbeaver/core-authentication';
|
||||
import {
|
||||
TableItem, TableColumnValue, TableItemSelect, TableItemExpand, Placeholder, Checkbox
|
||||
TableItem, TableColumnValue, TableItemSelect, TableItemExpand, Placeholder, Checkbox, useTranslate
|
||||
} from '@cloudbeaver/core-blocks';
|
||||
import { useService } from '@cloudbeaver/core-di';
|
||||
import { NotificationService } from '@cloudbeaver/core-events';
|
||||
import { useTranslate } from '@cloudbeaver/core-localization';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
|
||||
|
||||
|
||||
import { UsersAdministrationService } from '../UsersAdministrationService';
|
||||
import { UserEdit } from './UserEdit';
|
||||
@@ -53,7 +53,7 @@ export const User = observer<Props>(function User({ user, selectable }) {
|
||||
const enabledCheckboxTitle = usersService.isActiveUser(user.userId)
|
||||
? translate('administration_roles_role_granted_users_permission_denied') : undefined;
|
||||
|
||||
return styled(useStyles(styles))(
|
||||
return styled(styles)(
|
||||
<TableItem item={user.userId} expandElement={UserEdit} selectDisabled={!selectable}>
|
||||
{selectable && (
|
||||
<TableColumnValue centerContent flex>
|
||||
|
||||
+2
-2
@@ -15,7 +15,7 @@ import {
|
||||
TableContext
|
||||
} from '@cloudbeaver/core-blocks';
|
||||
import { useController } from '@cloudbeaver/core-di';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
|
||||
|
||||
import { UserForm } from '../UserForm/UserForm';
|
||||
import { UserEditController } from './UserEditController';
|
||||
@@ -50,7 +50,7 @@ export const UserEdit = observer<Props>(function UserEdit({
|
||||
});
|
||||
}, []);
|
||||
|
||||
return styled(useStyles(styles))(
|
||||
return styled(styles)(
|
||||
<box ref={boxRef} as='div'>
|
||||
{controller.user ? (
|
||||
<UserForm user={controller.user} editing onCancel={collapse} />
|
||||
|
||||
+3
-3
@@ -11,11 +11,11 @@ import styled, { css, use } from 'reshadow';
|
||||
|
||||
import { ADMINISTRATION_TOOLS_PANEL_STYLES, IAdministrationItemSubItem } from '@cloudbeaver/core-administration';
|
||||
import { AdminUser, UsersResource } from '@cloudbeaver/core-authentication';
|
||||
import { Table, TableHeader, TableColumnHeader, TableBody, TableSelect, useMapResource, ToolsAction, ToolsPanel, Loader, BASE_LAYOUT_GRID_STYLES } from '@cloudbeaver/core-blocks';
|
||||
import { Table, TableHeader, TableColumnHeader, TableBody, TableSelect, useMapResource, ToolsAction, ToolsPanel, Loader, BASE_LAYOUT_GRID_STYLES, useTranslate, useStyles } from '@cloudbeaver/core-blocks';
|
||||
import { useController, useService } from '@cloudbeaver/core-di';
|
||||
import { useTranslate } from '@cloudbeaver/core-localization';
|
||||
|
||||
import { CachedMapAllKey } from '@cloudbeaver/core-sdk';
|
||||
import { useStyles } from '@cloudbeaver/core-theming';
|
||||
|
||||
import { filterUndefined } from '@cloudbeaver/core-utils';
|
||||
|
||||
import { CreateUser } from './CreateUser';
|
||||
|
||||
Reference in New Issue
Block a user