ydb-embedded-ui 14.10.0 → 14.12.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/dist/components/EmptyFilter/EmptyFilter.d.ts +1 -0
- package/dist/components/EmptyFilter/EmptyFilter.js +14 -4
- package/dist/components/EmptyFilter/EmptyFilter.js.map +1 -1
- package/dist/components/EmptyState/EmptyState.d.ts +2 -1
- package/dist/components/EmptyState/EmptyState.js +2 -2
- package/dist/components/EmptyState/EmptyState.js.map +1 -1
- package/dist/components/EmptyState/EmptyState.scss +16 -0
- package/dist/components/ErrorBoundary/ErrorBoundary.js +3 -2
- package/dist/components/ErrorBoundary/ErrorBoundary.js.map +1 -1
- package/dist/components/Errors/401/Unauthenticated.d.ts +6 -0
- package/dist/components/Errors/401/Unauthenticated.js +10 -0
- package/dist/components/Errors/401/Unauthenticated.js.map +1 -0
- package/dist/components/Errors/401/index.d.ts +1 -0
- package/dist/components/Errors/401/index.js +2 -0
- package/dist/components/Errors/401/index.js.map +1 -0
- package/dist/components/Errors/403/AccessDenied.js +4 -2
- package/dist/components/Errors/403/AccessDenied.js.map +1 -1
- package/dist/components/Errors/PageError/PageError.d.ts +6 -2
- package/dist/components/Errors/PageError/PageError.js +52 -9
- package/dist/components/Errors/PageError/PageError.js.map +1 -1
- package/dist/components/Errors/PageError/PageError.scss +5 -1
- package/dist/components/Errors/PageError/utils.d.ts +15 -0
- package/dist/components/Errors/PageError/utils.js +11 -0
- package/dist/components/Errors/PageError/utils.js.map +1 -0
- package/dist/components/Errors/ResponseError/ErrorDetails.d.ts +8 -0
- package/dist/components/Errors/ResponseError/ErrorDetails.js +33 -0
- package/dist/components/Errors/ResponseError/ErrorDetails.js.map +1 -0
- package/dist/components/Errors/ResponseError/ErrorDetails.scss +57 -0
- package/dist/components/Errors/ResponseError/ResponseError.d.ts +15 -0
- package/dist/components/Errors/ResponseError/ResponseError.js +49 -4
- package/dist/components/Errors/ResponseError/ResponseError.js.map +1 -1
- package/dist/components/Errors/ResponseError/ResponseError.scss +16 -0
- package/dist/components/Errors/ResponseError/index.d.ts +1 -1
- package/dist/components/Errors/ResponseError/index.js +1 -1
- package/dist/components/Errors/ResponseError/index.js.map +1 -1
- package/dist/components/Errors/i18n/en.json +20 -2
- package/dist/components/Errors/i18n/index.d.ts +1 -1
- package/dist/components/Errors/i18n/index.js +1 -2
- package/dist/components/Errors/i18n/index.js.map +1 -1
- package/dist/components/Errors/shared/ErrorFieldsList.d.ts +10 -0
- package/dist/components/Errors/shared/ErrorFieldsList.js +38 -0
- package/dist/components/Errors/shared/ErrorFieldsList.js.map +1 -0
- package/dist/components/Errors/shared/IssuesSection.d.ts +8 -0
- package/dist/components/Errors/shared/IssuesSection.js +9 -0
- package/dist/components/Errors/shared/IssuesSection.js.map +1 -0
- package/dist/components/Errors/shared/ResponseBodySection.d.ts +6 -0
- package/dist/components/Errors/shared/ResponseBodySection.js +21 -0
- package/dist/components/Errors/shared/ResponseBodySection.js.map +1 -0
- package/dist/components/Errors/shared/ResponseBodySection.scss +38 -0
- package/dist/components/PaginatedTable/PaginatedTable.d.ts +2 -1
- package/dist/components/PaginatedTable/PaginatedTable.js +2 -2
- package/dist/components/PaginatedTable/PaginatedTable.js.map +1 -1
- package/dist/components/PaginatedTable/PaginatedTableWithLayout.d.ts +2 -1
- package/dist/components/PaginatedTable/PaginatedTableWithLayout.js +8 -2
- package/dist/components/PaginatedTable/PaginatedTableWithLayout.js.map +1 -1
- package/dist/components/PaginatedTable/TableChunksRenderer.d.ts +2 -1
- package/dist/components/PaginatedTable/TableChunksRenderer.js +2 -1
- package/dist/components/PaginatedTable/TableChunksRenderer.js.map +1 -1
- package/dist/components/PaginatedTable/useScrollBasedChunks.d.ts +1 -1
- package/dist/components/PaginatedTable/useScrollBasedChunks.js +12 -2
- package/dist/components/PaginatedTable/useScrollBasedChunks.js.map +1 -1
- package/dist/components/TableWithControlsLayout/TableWithControlsLayout.d.ts +4 -0
- package/dist/components/TableWithControlsLayout/TableWithControlsLayout.js +3 -0
- package/dist/components/TableWithControlsLayout/TableWithControlsLayout.js.map +1 -1
- package/dist/components/TableWithControlsLayout/TableWithControlsLayout.scss +22 -0
- package/dist/containers/App/Content.js +6 -2
- package/dist/containers/App/Content.js.map +1 -1
- package/dist/containers/AsideNavigation/AsideNavigation.d.ts +1 -0
- package/dist/containers/AsideNavigation/AsideNavigation.js +1 -1
- package/dist/containers/AsideNavigation/AsideNavigation.js.map +1 -1
- package/dist/containers/AsideNavigation/Navigation.d.ts +1 -0
- package/dist/containers/AsideNavigation/Navigation.js +39 -8
- package/dist/containers/AsideNavigation/Navigation.js.map +1 -1
- package/dist/containers/AsideNavigation/Navigation.scss +188 -0
- package/dist/containers/GetUserWrapper/GetUserWrapper.js +1 -1
- package/dist/containers/GetUserWrapper/GetUserWrapper.js.map +1 -1
- package/dist/containers/HomePage/HomePage.js +1 -1
- package/dist/containers/HomePage/HomePage.js.map +1 -1
- package/dist/containers/Nodes/NodesTable.js +3 -2
- package/dist/containers/Nodes/NodesTable.js.map +1 -1
- package/dist/containers/Operations/Operations.d.ts +1 -1
- package/dist/containers/Operations/Operations.js +14 -4
- package/dist/containers/Operations/Operations.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/Network/Nodes/Nodes.js +3 -2
- package/dist/containers/Tenant/Diagnostics/Network/Nodes/Nodes.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopQueries.js +1 -2
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopQueries.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopShards.js +1 -2
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopShards.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TopTables.js +1 -2
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TopTables.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TopQueries/RunningQueriesData.js +1 -2
- package/dist/containers/Tenant/Diagnostics/TopQueries/RunningQueriesData.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TopQueries/TopQueriesData.js +1 -2
- package/dist/containers/Tenant/Diagnostics/TopQueries/TopQueriesData.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TopShards/TopShards.js +1 -2
- package/dist/containers/Tenant/Diagnostics/TopShards/TopShards.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicData.js +70 -135
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicData.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicDataControls/TopicDataControls.d.ts +1 -2
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicDataControls/TopicDataControls.js +3 -3
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicDataControls/TopicDataControls.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TopicData/__test__/getData.test.js +140 -3
- package/dist/containers/Tenant/Diagnostics/TopicData/__test__/getData.test.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TopicData/getData.d.ts +3 -1
- package/dist/containers/Tenant/Diagnostics/TopicData/getData.js +7 -3
- package/dist/containers/Tenant/Diagnostics/TopicData/getData.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TopicData/i18n/en.json +1 -2
- package/dist/containers/Tenant/Diagnostics/TopicData/i18n/index.d.ts +1 -1
- package/dist/containers/Tenant/Diagnostics/TopicData/useTopicPagination.d.ts +15 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/useTopicPagination.js +45 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/useTopicPagination.js.map +1 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/useTopicPartitions.d.ts +21 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/useTopicPartitions.js +48 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/useTopicPartitions.js.map +1 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/useTopicProbeQuery.d.ts +20 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/useTopicProbeQuery.js +42 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/useTopicProbeQuery.js.map +1 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/useTopicScroll.d.ts +23 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/useTopicScroll.js +105 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/useTopicScroll.js.map +1 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/utils/constants.d.ts +3 -1
- package/dist/containers/Tenant/Diagnostics/TopicData/utils/constants.js +4 -1
- package/dist/containers/Tenant/Diagnostics/TopicData/utils/constants.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TopicData/utils/types.d.ts +1 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/utils/types.js.map +1 -1
- package/dist/containers/Tenant/GrantAccess/GrantAccess.js +16 -12
- package/dist/containers/Tenant/GrantAccess/GrantAccess.js.map +1 -1
- package/dist/containers/Tenant/Healthcheck/Healthcheck.js +3 -2
- package/dist/containers/Tenant/Healthcheck/Healthcheck.js.map +1 -1
- package/dist/containers/Tenant/Healthcheck/components/HealthcheckIssues.js +3 -2
- package/dist/containers/Tenant/Healthcheck/components/HealthcheckIssues.js.map +1 -1
- package/dist/containers/Tenant/Query/Preview/components/PreviewView.js +2 -2
- package/dist/containers/Tenant/Query/Preview/components/PreviewView.js.map +1 -1
- package/dist/containers/Tenant/Query/QueryEditor/QueryEditor.js +22 -1
- package/dist/containers/Tenant/Query/QueryEditor/QueryEditor.js.map +1 -1
- package/dist/containers/Tenant/Query/QueryEditorControls/QueryEditorControls.d.ts +2 -1
- package/dist/containers/Tenant/Query/QueryEditorControls/QueryEditorControls.js +3 -20
- package/dist/containers/Tenant/Query/QueryEditorControls/QueryEditorControls.js.map +1 -1
- package/dist/containers/Tenant/Query/QueryResult/QueryResultViewer.js +12 -42
- package/dist/containers/Tenant/Query/QueryResult/QueryResultViewer.js.map +1 -1
- package/dist/containers/Tenant/Query/QueryResult/components/PlanSection/PlanSection.d.ts +14 -0
- package/dist/containers/Tenant/Query/QueryResult/components/PlanSection/PlanSection.js +48 -0
- package/dist/containers/Tenant/Query/QueryResult/components/PlanSection/PlanSection.js.map +1 -0
- package/dist/containers/Tenant/Query/QueryResult/components/QueryResultError/QueryResultError.js +6 -7
- package/dist/containers/Tenant/Query/QueryResult/components/QueryResultError/QueryResultError.js.map +1 -1
- package/dist/containers/Tenant/Query/QueryResult/constants.d.ts +10 -0
- package/dist/containers/Tenant/Query/QueryResult/constants.js +9 -0
- package/dist/containers/Tenant/Query/QueryResult/constants.js.map +1 -0
- package/dist/containers/Tenant/Tenant.js +1 -1
- package/dist/containers/Tenant/Tenant.js.map +1 -1
- package/dist/containers/Tenant/TenantNavigation/useTenantNavigation.js +4 -5
- package/dist/containers/Tenant/TenantNavigation/useTenantNavigation.js.map +1 -1
- package/dist/containers/Tenants/TenantsTable.js +3 -2
- package/dist/containers/Tenants/TenantsTable.js.map +1 -1
- package/dist/lib.d.ts +1 -0
- package/dist/lib.js.map +1 -1
- package/dist/services/api/index.js +10 -1
- package/dist/services/api/index.js.map +1 -1
- package/dist/services/api/streaming.js +118 -41
- package/dist/services/api/streaming.js.map +1 -1
- package/dist/types/api/error.d.ts +1 -1
- package/dist/uiFactory/types.d.ts +9 -0
- package/dist/utils/__test__/query.test.d.ts +1 -0
- package/dist/utils/__test__/query.test.js +55 -0
- package/dist/utils/__test__/query.test.js.map +1 -0
- package/dist/utils/__test__/response.test.js +70 -1
- package/dist/utils/__test__/response.test.js.map +1 -1
- package/dist/utils/errors/__test__/extractErrorDetails.test.d.ts +1 -0
- package/dist/utils/errors/__test__/extractErrorDetails.test.js +455 -0
- package/dist/utils/errors/__test__/extractErrorDetails.test.js.map +1 -0
- package/dist/utils/errors/__test__/prepareCommonErrorMessage.test.d.ts +1 -0
- package/dist/utils/errors/__test__/prepareCommonErrorMessage.test.js +148 -0
- package/dist/utils/errors/__test__/prepareCommonErrorMessage.test.js.map +1 -0
- package/dist/utils/errors/extractErrorDetails.d.ts +58 -0
- package/dist/utils/errors/extractErrorDetails.js +295 -0
- package/dist/utils/errors/extractErrorDetails.js.map +1 -0
- package/dist/utils/errors/index.d.ts +2 -0
- package/dist/utils/errors/index.js +14 -18
- package/dist/utils/errors/index.js.map +1 -1
- package/dist/utils/illustrations.d.ts +2 -0
- package/dist/utils/illustrations.js +14 -0
- package/dist/utils/illustrations.js.map +1 -0
- package/dist/utils/networkInfo.d.ts +7 -0
- package/dist/utils/networkInfo.js +20 -0
- package/dist/utils/networkInfo.js.map +1 -0
- package/dist/utils/query.d.ts +0 -1
- package/dist/utils/query.js +0 -8
- package/dist/utils/query.js.map +1 -1
- package/dist/utils/renderPaginatedTableErrorMessage.js +8 -0
- package/dist/utils/renderPaginatedTableErrorMessage.js.map +1 -1
- package/dist/utils/response.d.ts +2 -0
- package/dist/utils/response.js +21 -5
- package/dist/utils/response.js.map +1 -1
- package/package.json +1 -1
- package/dist/assets/illustrations/dark/403.svg +0 -18
- package/dist/assets/illustrations/dark/error.svg +0 -32
- package/dist/assets/illustrations/dark/thumbsUp.svg +0 -16
- package/dist/assets/illustrations/light/403.svg +0 -16
- package/dist/assets/illustrations/light/error.svg +0 -32
- package/dist/assets/illustrations/light/thumbsUp.svg +0 -16
- package/dist/components/Errors/i18n/ru.json +0 -6
- package/dist/components/Illustration/Illustration.d.ts +0 -8
- package/dist/components/Illustration/Illustration.js +0 -52
- package/dist/components/Illustration/Illustration.js.map +0 -1
- package/dist/components/Illustration/Illustration.scss +0 -9
- package/dist/components/Illustration/index.d.ts +0 -1
- package/dist/components/Illustration/index.js +0 -2
- package/dist/components/Illustration/index.js.map +0 -1
|
@@ -1,9 +1,19 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
2
3
|
import { Button } from '@gravity-ui/uikit';
|
|
4
|
+
import { getIllustration } from '../../utils/illustrations';
|
|
3
5
|
import { EmptyState } from '../EmptyState';
|
|
4
|
-
import { Illustration } from '../Illustration';
|
|
5
6
|
import i18n from './i18n';
|
|
6
|
-
export const EmptyFilter = ({ title, message = i18n('default_message'), showAll = i18n('default_button_label'), onShowAll, image
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
export const EmptyFilter = ({ title, message = i18n('default_message'), showAll = i18n('default_button_label'), onShowAll, image, }) => {
|
|
8
|
+
const SuccessImage = getIllustration('SuccessOperation');
|
|
9
|
+
const resolvedImage = React.useMemo(() => {
|
|
10
|
+
if (image !== undefined) {
|
|
11
|
+
return image;
|
|
12
|
+
}
|
|
13
|
+
return _jsx(SuccessImage, { width: 200, height: 200 });
|
|
14
|
+
}, [image, SuccessImage]);
|
|
15
|
+
return (_jsx(EmptyState, { image: resolvedImage, position: "left", title: title, description: message, actions: onShowAll && [
|
|
16
|
+
_jsx(Button, { onClick: onShowAll, children: showAll }, "show-all"),
|
|
17
|
+
] }));
|
|
18
|
+
};
|
|
9
19
|
//# sourceMappingURL=EmptyFilter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmptyFilter.js","sourceRoot":"","sources":["../../../src/components/EmptyFilter/EmptyFilter.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,mBAAmB,CAAC;AAEzC,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"EmptyFilter.js","sourceRoot":"","sources":["../../../src/components/EmptyFilter/EmptyFilter.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,MAAM,EAAC,MAAM,mBAAmB,CAAC;AAEzC,OAAO,EAAC,eAAe,EAAC,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AAEzC,OAAO,IAAI,MAAM,QAAQ,CAAC;AAU1B,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EACxB,KAAK,EACL,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,EACjC,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,EACtC,SAAS,EACT,KAAK,GACU,EAAE,EAAE;IACnB,MAAM,YAAY,GAAG,eAAe,CAAC,kBAAkB,CAAC,CAAC;IAEzD,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACrC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,KAAC,YAAY,IAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,GAAI,CAAC;IACrD,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;IAE1B,OAAO,CACH,KAAC,UAAU,IACP,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAC,MAAM,EACf,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,OAAO,EACpB,OAAO,EACH,SAAS,IAAI;YACT,KAAC,MAAM,IAAgB,OAAO,EAAE,SAAS,YACpC,OAAO,IADA,UAAU,CAEb;SACZ,GAEP,CACL,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -12,10 +12,11 @@ export interface EmptyStateProps {
|
|
|
12
12
|
actions?: React.ReactNode[];
|
|
13
13
|
size?: keyof typeof EMPTY_STATE_SIZES;
|
|
14
14
|
position?: 'left' | 'center';
|
|
15
|
+
contentPosition?: 'center' | 'top';
|
|
15
16
|
pageTitle?: string;
|
|
16
17
|
className?: string;
|
|
17
18
|
}
|
|
18
|
-
export declare const EmptyState: ({ image, title, description, actions, size, position, pageTitle, className, }: EmptyStateProps) => import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
export declare const EmptyState: ({ image, title, description, actions, size, position, contentPosition, pageTitle, className, }: EmptyStateProps) => import("react/jsx-runtime").JSX.Element;
|
|
19
20
|
interface EmptyStateWrapperProps extends EmptyStateProps {
|
|
20
21
|
isEmpty?: boolean;
|
|
21
22
|
children: React.ReactNode;
|
|
@@ -10,8 +10,8 @@ export const EMPTY_STATE_SIZES = {
|
|
|
10
10
|
m: 230,
|
|
11
11
|
l: 350,
|
|
12
12
|
};
|
|
13
|
-
export const EmptyState = ({ image, title, description, actions, size = 'm', position = 'center', pageTitle, className, }) => {
|
|
14
|
-
return (_jsxs("div", { className: block({ size }, className), children: [pageTitle ? _jsx(Text, { variant: "header-1", children: pageTitle }) : null, _jsxs("div", { className: block('wrapper', { size, position }), children: [_jsx("div", { className: block('image'), children: image ? (image) : (_jsx(Icon, { data: emptyStateIcon, width: EMPTY_STATE_SIZES[size], height: EMPTY_STATE_SIZES[size] })) }), _jsxs(Flex, { gap: 5, className: block('content'), direction: "column", children: [_jsxs(Flex, { gap: 3, direction: "column", children: [_jsx("div", { className: block('title', { size }), children: title }), description ? (_jsx("div", { className: block('description'), children: description })) : null] }), actions ? _jsx(Flex, { gap: 2, children: actions }) : null] })] })] }));
|
|
13
|
+
export const EmptyState = ({ image, title, description, actions, size = 'm', position = 'center', contentPosition = 'center', pageTitle, className, }) => {
|
|
14
|
+
return (_jsxs("div", { className: block({ size }, className), children: [pageTitle ? _jsx(Text, { variant: "header-1", children: pageTitle }) : null, _jsxs("div", { className: block('wrapper', { size, position }), children: [_jsx("div", { className: block('image'), children: image ? (image) : (_jsx(Icon, { data: emptyStateIcon, width: EMPTY_STATE_SIZES[size], height: EMPTY_STATE_SIZES[size] })) }), _jsxs(Flex, { gap: 5, className: block('content', { 'position-top': contentPosition === 'top' }), direction: "column", children: [_jsxs(Flex, { gap: 3, direction: "column", children: [_jsx("div", { className: block('title', { size }), children: title }), description ? (_jsx("div", { className: block('description'), children: description })) : null] }), actions ? _jsx(Flex, { gap: 2, children: actions }) : null] })] })] }));
|
|
15
15
|
};
|
|
16
16
|
export function EmptyStateWrapper({ isEmpty, children, className, ...rest }) {
|
|
17
17
|
if (isEmpty) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmptyState.js","sourceRoot":"","sources":["../../../src/components/EmptyState/EmptyState.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAC,EAAE,EAAC,MAAM,gBAAgB,CAAC;AAElC,OAAO,cAAc,MAAM,mCAAmC,CAAC;AAE/D,OAAO,mBAAmB,CAAC;AAE3B,MAAM,KAAK,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC;AAEhC,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC7B,EAAE,EAAE,GAAG;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;CACT,CAAC;
|
|
1
|
+
{"version":3,"file":"EmptyState.js","sourceRoot":"","sources":["../../../src/components/EmptyState/EmptyState.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAC,EAAE,EAAC,MAAM,gBAAgB,CAAC;AAElC,OAAO,cAAc,MAAM,mCAAmC,CAAC;AAE/D,OAAO,mBAAmB,CAAC;AAE3B,MAAM,KAAK,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC;AAEhC,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC7B,EAAE,EAAE,GAAG;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;CACT,CAAC;AAcF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EACvB,KAAK,EACL,KAAK,EACL,WAAW,EACX,OAAO,EACP,IAAI,GAAG,GAAG,EACV,QAAQ,GAAG,QAAQ,EACnB,eAAe,GAAG,QAAQ,EAC1B,SAAS,EACT,SAAS,GACK,EAAE,EAAE;IAClB,OAAO,CACH,eAAK,SAAS,EAAE,KAAK,CAAC,EAAC,IAAI,EAAC,EAAE,SAAS,CAAC,aACnC,SAAS,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,OAAO,EAAC,UAAU,YAAE,SAAS,GAAQ,CAAC,CAAC,CAAC,IAAI,EAC/D,eAAK,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,aAC9C,cAAK,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,YACzB,KAAK,CAAC,CAAC,CAAC,CACL,KAAK,CACR,CAAC,CAAC,CAAC,CACA,KAAC,IAAI,IACD,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,iBAAiB,CAAC,IAAI,CAAC,EAC9B,MAAM,EAAE,iBAAiB,CAAC,IAAI,CAAC,GACjC,CACL,GACC,EACN,MAAC,IAAI,IACD,GAAG,EAAE,CAAC,EACN,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,EAAC,cAAc,EAAE,eAAe,KAAK,KAAK,EAAC,CAAC,EACxE,SAAS,EAAC,QAAQ,aAElB,MAAC,IAAI,IAAC,GAAG,EAAE,CAAC,EAAE,SAAS,EAAC,QAAQ,aAC5B,cAAK,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE,EAAC,IAAI,EAAC,CAAC,YAAG,KAAK,GAAO,EACpD,WAAW,CAAC,CAAC,CAAC,CACX,cAAK,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,YAAG,WAAW,GAAO,CAC5D,CAAC,CAAC,CAAC,IAAI,IACL,EACN,OAAO,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,GAAG,EAAE,CAAC,YAAG,OAAO,GAAQ,CAAC,CAAC,CAAC,IAAI,IAC7C,IACL,IACJ,CACT,CAAC;AACN,CAAC,CAAC;AAQF,MAAM,UAAU,iBAAiB,CAAC,EAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,EAAyB;IAC7F,IAAI,OAAO,EAAE,CAAC;QACV,OAAO,CACH,cAAK,SAAS,EAAE,SAAS,YACrB,KAAC,UAAU,OAAK,IAAI,GAAI,GACtB,CACT,CAAC;IACN,CAAC;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC"}
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
&__wrapper {
|
|
12
12
|
display: grid;
|
|
13
13
|
grid-template-areas: 'image content';
|
|
14
|
+
grid-template-columns: auto 1fr;
|
|
14
15
|
|
|
15
16
|
&_size_xs {
|
|
16
17
|
width: 321px;
|
|
@@ -29,6 +30,11 @@
|
|
|
29
30
|
height: 230px;
|
|
30
31
|
}
|
|
31
32
|
|
|
33
|
+
&_size_l {
|
|
34
|
+
width: 900px;
|
|
35
|
+
min-height: 280px;
|
|
36
|
+
}
|
|
37
|
+
|
|
32
38
|
&_position_center {
|
|
33
39
|
position: relative;
|
|
34
40
|
|
|
@@ -62,6 +68,10 @@
|
|
|
62
68
|
&_size_m {
|
|
63
69
|
@include mixins.header-2-typography();
|
|
64
70
|
}
|
|
71
|
+
|
|
72
|
+
&_size_l {
|
|
73
|
+
@include mixins.subheader-3-typography();
|
|
74
|
+
}
|
|
65
75
|
}
|
|
66
76
|
|
|
67
77
|
&__description {
|
|
@@ -71,5 +81,11 @@
|
|
|
71
81
|
&__content {
|
|
72
82
|
align-self: center;
|
|
73
83
|
grid-area: content;
|
|
84
|
+
|
|
85
|
+
&_position-top {
|
|
86
|
+
align-self: start;
|
|
87
|
+
|
|
88
|
+
padding-top: 50px;
|
|
89
|
+
}
|
|
74
90
|
}
|
|
75
91
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import React from 'react';
|
|
3
|
-
import { InternalError } from '@gravity-ui/illustrations';
|
|
4
3
|
import { DefinitionList, Flex, Text } from '@gravity-ui/uikit';
|
|
5
4
|
import QRCode from 'qrcode';
|
|
6
5
|
import { ErrorBoundary as ErrorBoundaryBase } from 'react-error-boundary';
|
|
7
6
|
import { cn } from '../../utils/cn';
|
|
7
|
+
import { getIllustration } from '../../utils/illustrations';
|
|
8
8
|
import { registerError } from '../../utils/registerError';
|
|
9
9
|
import { useComponent } from '../ComponentsProvider/ComponentsProvider';
|
|
10
10
|
import i18n from './i18n';
|
|
@@ -30,7 +30,8 @@ export function ErrorBoundaryFallback({ error }) {
|
|
|
30
30
|
setDiagnosticsData(data);
|
|
31
31
|
});
|
|
32
32
|
}, [error]);
|
|
33
|
-
|
|
33
|
+
const InternalErrorImage = getIllustration('InternalError');
|
|
34
|
+
return (_jsxs(Flex, { direction: "column", gap: 4, className: b(null), children: [_jsxs(Flex, { direction: "row", alignItems: "center", gap: 10, children: [_jsx(InternalErrorImage, { width: 230, height: 230 }), _jsxs(Flex, { direction: "column", gap: 5, children: [_jsxs(Flex, { direction: "column", gap: 2, children: [_jsx(Text, { variant: "subheader-3", children: i18n('error-title') }), _jsx(Text, { variant: "body-1", color: "complementary", children: i18n('error-description') })] }), _jsx(DiagnosticsDataList, { data: diagnosticsData })] })] }), _jsxs(Flex, { direction: "row", alignItems: "start", gap: 8, children: [_jsx(ErrorStack, { stack: error.stack }), _jsxs(Flex, { direction: "column", gap: 3, children: [_jsx(Text, { variant: "body-1", color: "complementary", className: b('qr-help-text'), children: i18n('send-qr-message') }), _jsx(DiagnosticsDataQR, { data: diagnosticsData })] })] })] }));
|
|
34
35
|
}
|
|
35
36
|
function DiagnosticsDataList({ data }) {
|
|
36
37
|
return (_jsxs(DefinitionList, { nameMaxWidth: 200, children: [(data === null || data === void 0 ? void 0 : data.uiVersion) && typeof data.uiVersion === 'string' && (_jsx(DefinitionList.Item, { name: i18n('ui-version'), children: data.uiVersion })), (data === null || data === void 0 ? void 0 : data.backendVersion) && typeof data.backendVersion === 'string' && (_jsx(DefinitionList.Item, { name: i18n('backend-version'), children: data.backendVersion })), _jsx(DefinitionList.Item, { name: i18n('error'), children: data === null || data === void 0 ? void 0 : data.error.message })] }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorBoundary.js","sourceRoot":"","sources":["../../../src/components/ErrorBoundary/ErrorBoundary.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"ErrorBoundary.js","sourceRoot":"","sources":["../../../src/components/ErrorBoundary/ErrorBoundary.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { EmptyStateProps } from '../../EmptyState';
|
|
2
|
+
interface UnauthenticatedProps extends Omit<EmptyStateProps, 'title'> {
|
|
3
|
+
title?: React.ReactNode;
|
|
4
|
+
}
|
|
5
|
+
export declare const Unauthenticated: ({ title, description, image, size, ...restProps }: UnauthenticatedProps) => import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { getIllustration } from '../../../utils/illustrations';
|
|
3
|
+
import { EMPTY_STATE_SIZES, EmptyState } from '../../EmptyState';
|
|
4
|
+
import i18n from '../i18n';
|
|
5
|
+
export const Unauthenticated = ({ title, description, image, size = 'm', ...restProps }) => {
|
|
6
|
+
const UnauthenticatedImage = getIllustration('Unauthenticated');
|
|
7
|
+
const illustrationSize = EMPTY_STATE_SIZES[size];
|
|
8
|
+
return (_jsx(EmptyState, { image: image || _jsx(UnauthenticatedImage, { width: illustrationSize, height: illustrationSize }), title: title || i18n('401.title'), description: description || i18n('401.description'), size: size, ...restProps }));
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=Unauthenticated.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Unauthenticated.js","sourceRoot":"","sources":["../../../../src/components/Errors/401/Unauthenticated.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,8BAA8B,CAAC;AAE7D,OAAO,EAAC,iBAAiB,EAAE,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAC/D,OAAO,IAAI,MAAM,SAAS,CAAC;AAM3B,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAC5B,KAAK,EACL,WAAW,EACX,KAAK,EACL,IAAI,GAAG,GAAG,EACV,GAAG,SAAS,EACO,EAAE,EAAE;IACvB,MAAM,oBAAoB,GAAG,eAAe,CAAC,iBAAiB,CAAC,CAAC;IAChE,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACjD,OAAO,CACH,KAAC,UAAU,IACP,KAAK,EACD,KAAK,IAAI,KAAC,oBAAoB,IAAC,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,gBAAgB,GAAI,EAExF,KAAK,EAAE,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,EACjC,WAAW,EAAE,WAAW,IAAI,IAAI,CAAC,iBAAiB,CAAC,EACnD,IAAI,EAAE,IAAI,KACN,SAAS,GACf,CACL,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Unauthenticated } from './Unauthenticated';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/Errors/401/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { getIllustration } from '../../../utils/illustrations';
|
|
2
3
|
import { EMPTY_STATE_SIZES, EmptyState } from '../../EmptyState';
|
|
3
|
-
import { Illustration } from '../../Illustration';
|
|
4
4
|
import i18n from '../i18n';
|
|
5
5
|
export const AccessDenied = ({ title, description, image, size = 'm', ...restProps }) => {
|
|
6
|
-
|
|
6
|
+
const AccessDeniedImage = getIllustration('AccessDenied');
|
|
7
|
+
const illustrationSize = EMPTY_STATE_SIZES[size];
|
|
8
|
+
return (_jsx(EmptyState, { image: image || _jsx(AccessDeniedImage, { width: illustrationSize, height: illustrationSize }), title: title || i18n('403.title'), description: description || i18n('403.description'), size: size, ...restProps }));
|
|
7
9
|
};
|
|
8
10
|
//# sourceMappingURL=AccessDenied.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccessDenied.js","sourceRoot":"","sources":["../../../../src/components/Errors/403/AccessDenied.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"AccessDenied.js","sourceRoot":"","sources":["../../../../src/components/Errors/403/AccessDenied.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,8BAA8B,CAAC;AAE7D,OAAO,EAAC,iBAAiB,EAAE,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAC/D,OAAO,IAAI,MAAM,SAAS,CAAC;AAM3B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EACzB,KAAK,EACL,WAAW,EACX,KAAK,EACL,IAAI,GAAG,GAAG,EACV,GAAG,SAAS,EACI,EAAE,EAAE;IACpB,MAAM,iBAAiB,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;IAC1D,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACjD,OAAO,CACH,KAAC,UAAU,IACP,KAAK,EACD,KAAK,IAAI,KAAC,iBAAiB,IAAC,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,gBAAgB,GAAI,EAErF,KAAK,EAAE,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,EACjC,WAAW,EAAE,WAAW,IAAI,IAAI,CAAC,iBAAiB,CAAC,EACnD,IAAI,EAAE,IAAI,KACN,SAAS,GACf,CACL,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { EmptyStateProps } from '../../EmptyState';
|
|
3
|
+
import { EMPTY_STATE_SIZES } from '../../EmptyState';
|
|
3
4
|
import './PageError.scss';
|
|
4
|
-
|
|
5
|
+
type PageErrorIllustrationSize = keyof typeof EMPTY_STATE_SIZES;
|
|
6
|
+
interface PageErrorProps extends Omit<EmptyStateProps, 'image' | 'title' | 'contentPosition'> {
|
|
5
7
|
title?: React.ReactNode;
|
|
6
8
|
error: unknown;
|
|
7
9
|
children?: React.ReactNode;
|
|
8
10
|
errorPageTitle?: string;
|
|
11
|
+
defaultMessage?: string;
|
|
12
|
+
illustrationSize?: PageErrorIllustrationSize;
|
|
9
13
|
}
|
|
10
|
-
export declare function PageError({ title, description, error, children, size, errorPageTitle, ...restProps }: PageErrorProps): import("react/jsx-runtime").JSX.Element | null;
|
|
14
|
+
export declare function PageError({ title, description, error, children, size, illustrationSize, errorPageTitle, defaultMessage, className, pageTitle: callerPageTitle, ...restProps }: PageErrorProps): import("react/jsx-runtime").JSX.Element | null;
|
|
11
15
|
export {};
|
|
@@ -1,25 +1,68 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import React from 'react';
|
|
3
|
+
import { ArrowShapeUpFromLine } from '@gravity-ui/icons';
|
|
4
|
+
import { Button, Icon } from '@gravity-ui/uikit';
|
|
5
|
+
import { uiFactory } from '../../../uiFactory/uiFactory';
|
|
3
6
|
import { cn } from '../../../utils/cn';
|
|
4
|
-
import {
|
|
7
|
+
import { getIllustration } from '../../../utils/illustrations';
|
|
8
|
+
import { isForbiddenError, isRedirectToAuth, isUnauthenticatedError } from '../../../utils/response';
|
|
5
9
|
import { EMPTY_STATE_SIZES, EmptyState } from '../../EmptyState';
|
|
6
|
-
import {
|
|
10
|
+
import { Unauthenticated } from '../401';
|
|
7
11
|
import { AccessDenied } from '../403';
|
|
8
|
-
import {
|
|
12
|
+
import { ResponseErrorMessage, useErrorInfo } from '../ResponseError';
|
|
9
13
|
import i18n from '../i18n';
|
|
14
|
+
import { resolvePageErrorSubtitle } from './utils';
|
|
10
15
|
import './PageError.scss';
|
|
11
16
|
const b = cn('ydb-page-error');
|
|
12
|
-
export function PageError({ title, description, error, children, size = 'm', errorPageTitle, ...restProps }) {
|
|
17
|
+
export function PageError({ title, description, error, children, size = 'm', illustrationSize, errorPageTitle, defaultMessage, className, pageTitle: callerPageTitle, ...restProps }) {
|
|
18
|
+
const resolvedPageTitle = errorPageTitle !== null && errorPageTitle !== void 0 ? errorPageTitle : callerPageTitle;
|
|
13
19
|
if (isRedirectToAuth(error)) {
|
|
14
|
-
// Do not show an error, because we redirect to auth anyway.
|
|
15
20
|
return null;
|
|
16
21
|
}
|
|
17
|
-
if (
|
|
18
|
-
return (_jsx(
|
|
22
|
+
if (isUnauthenticatedError(error)) {
|
|
23
|
+
return (_jsx(Unauthenticated, { title: title, description: description, ...restProps, pageTitle: resolvedPageTitle, className: b(null, className) }));
|
|
24
|
+
}
|
|
25
|
+
if (isForbiddenError(error)) {
|
|
26
|
+
return (_jsx(AccessDenied, { title: title, description: description, ...restProps, pageTitle: resolvedPageTitle, className: b(null, className) }));
|
|
19
27
|
}
|
|
20
28
|
if (error || description) {
|
|
21
|
-
return (_jsx(
|
|
29
|
+
return (_jsx(PageErrorContent, { title: title, description: description, error: error, size: size, illustrationSize: illustrationSize, errorPageTitle: resolvedPageTitle, defaultMessage: defaultMessage, className: className, ...restProps }));
|
|
22
30
|
}
|
|
23
31
|
return _jsx(React.Fragment, { children: children });
|
|
24
32
|
}
|
|
33
|
+
function PageErrorContent({ title: titleProp, description, error, size = 'm', illustrationSize, errorPageTitle, defaultMessage, className, actions: callerActions, ...restProps }) {
|
|
34
|
+
const { title: errorTitle, subtitle, showSubtitle, details, } = useErrorInfo(error, defaultMessage);
|
|
35
|
+
const resolvedTitle = titleProp || errorTitle || i18n('error.title');
|
|
36
|
+
const { resolvedSubtitle, resolvedShowSubtitle } = resolvePageErrorSubtitle({
|
|
37
|
+
hasTitleOverride: Boolean(titleProp),
|
|
38
|
+
errorTitle,
|
|
39
|
+
resolvedTitleString: typeof resolvedTitle === 'string' ? resolvedTitle : undefined,
|
|
40
|
+
subtitle,
|
|
41
|
+
showSubtitle,
|
|
42
|
+
details,
|
|
43
|
+
});
|
|
44
|
+
const reportProblemUrl = React.useMemo(() => {
|
|
45
|
+
if (!uiFactory.getReportProblemUrl) {
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
return uiFactory.getReportProblemUrl({
|
|
49
|
+
errorTitle: typeof resolvedTitle === 'string' ? resolvedTitle : undefined,
|
|
50
|
+
requestUrl: details === null || details === void 0 ? void 0 : details.requestUrl,
|
|
51
|
+
traceId: details === null || details === void 0 ? void 0 : details.traceId,
|
|
52
|
+
});
|
|
53
|
+
}, [resolvedTitle, details === null || details === void 0 ? void 0 : details.requestUrl, details === null || details === void 0 ? void 0 : details.traceId]);
|
|
54
|
+
const mergedActions = React.useMemo(() => {
|
|
55
|
+
const result = [];
|
|
56
|
+
if (callerActions) {
|
|
57
|
+
result.push(...callerActions);
|
|
58
|
+
}
|
|
59
|
+
if (reportProblemUrl) {
|
|
60
|
+
result.push(_jsxs(Button, { view: "normal", size: "m", href: reportProblemUrl, target: "_blank", children: [_jsx(Icon, { data: ArrowShapeUpFromLine, size: 16 }), i18n('error-details.button_report-problem')] }, "report"));
|
|
61
|
+
}
|
|
62
|
+
return result.length > 0 ? result : undefined;
|
|
63
|
+
}, [callerActions, reportProblemUrl]);
|
|
64
|
+
const resolvedIllustrationSize = EMPTY_STATE_SIZES[illustrationSize !== null && illustrationSize !== void 0 ? illustrationSize : size];
|
|
65
|
+
const InternalErrorImage = getIllustration('InternalError');
|
|
66
|
+
return (_jsx(EmptyState, { image: _jsx(InternalErrorImage, { width: resolvedIllustrationSize, height: resolvedIllustrationSize }), title: resolvedTitle, description: error ? (_jsx(ResponseErrorMessage, { subtitle: resolvedSubtitle, showSubtitle: resolvedShowSubtitle, details: details, renderedTitle: typeof resolvedTitle === 'string' ? resolvedTitle : undefined })) : (description), ...restProps, actions: mergedActions, size: size, contentPosition: "top", pageTitle: errorPageTitle, className: b(null, className) }));
|
|
67
|
+
}
|
|
25
68
|
//# sourceMappingURL=PageError.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PageError.js","sourceRoot":"","sources":["../../../../src/components/Errors/PageError/PageError.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,EAAE,EAAC,MAAM,mBAAmB,CAAC;AACrC,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"PageError.js","sourceRoot":"","sources":["../../../../src/components/Errors/PageError/PageError.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ErrorDetails } from '../../../utils/errors/extractErrorDetails';
|
|
2
|
+
interface ResolveSubtitleParams {
|
|
3
|
+
hasTitleOverride: boolean;
|
|
4
|
+
errorTitle?: string;
|
|
5
|
+
resolvedTitleString?: string;
|
|
6
|
+
subtitle?: string;
|
|
7
|
+
showSubtitle: boolean;
|
|
8
|
+
details: ErrorDetails | null;
|
|
9
|
+
}
|
|
10
|
+
interface ResolvedSubtitle {
|
|
11
|
+
resolvedSubtitle?: string;
|
|
12
|
+
resolvedShowSubtitle: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare function resolvePageErrorSubtitle({ hasTitleOverride, errorTitle, resolvedTitleString, subtitle, showSubtitle, details, }: ResolveSubtitleParams): ResolvedSubtitle;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export function resolvePageErrorSubtitle({ hasTitleOverride, errorTitle, resolvedTitleString, subtitle, showSubtitle, details, }) {
|
|
2
|
+
const shouldShowHttpSubtitle = hasTitleOverride &&
|
|
3
|
+
(details === null || details === void 0 ? void 0 : details.status) !== undefined &&
|
|
4
|
+
Boolean(errorTitle) &&
|
|
5
|
+
errorTitle !== resolvedTitleString;
|
|
6
|
+
return {
|
|
7
|
+
resolvedSubtitle: shouldShowHttpSubtitle ? errorTitle : subtitle,
|
|
8
|
+
resolvedShowSubtitle: shouldShowHttpSubtitle || showSubtitle,
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/components/Errors/PageError/utils.ts"],"names":[],"mappings":"AAgBA,MAAM,UAAU,wBAAwB,CAAC,EACrC,gBAAgB,EAChB,UAAU,EACV,mBAAmB,EACnB,QAAQ,EACR,YAAY,EACZ,OAAO,GACa;IACpB,MAAM,sBAAsB,GACxB,gBAAgB;QAChB,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,MAAK,SAAS;QAC7B,OAAO,CAAC,UAAU,CAAC;QACnB,UAAU,KAAK,mBAAmB,CAAC;IAEvC,OAAO;QACH,gBAAgB,EAAE,sBAAsB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ;QAChE,oBAAoB,EAAE,sBAAsB,IAAI,YAAY;KAC/D,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ErrorDetails as ErrorDetailsData } from '../../../utils/errors/extractErrorDetails';
|
|
2
|
+
import './ErrorDetails.scss';
|
|
3
|
+
interface ErrorDetailsProps {
|
|
4
|
+
details: ErrorDetailsData;
|
|
5
|
+
renderedTitle?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function ErrorDetailsContent({ details, renderedTitle }: ErrorDetailsProps): import("react/jsx-runtime").JSX.Element | null;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { ChevronDown, ChevronUp } from '@gravity-ui/icons';
|
|
3
|
+
import { Button, Disclosure, Flex, Icon } from '@gravity-ui/uikit';
|
|
4
|
+
import { cn } from '../../../utils/cn';
|
|
5
|
+
import i18n from '../i18n';
|
|
6
|
+
import { ErrorFieldsList, hasVisibleFields } from '../shared/ErrorFieldsList';
|
|
7
|
+
import { IssuesSection } from '../shared/IssuesSection';
|
|
8
|
+
import { ResponseBodySection } from '../shared/ResponseBodySection';
|
|
9
|
+
import './ErrorDetails.scss';
|
|
10
|
+
const b = cn('ydb-error-details');
|
|
11
|
+
function getExpandableContent(details) {
|
|
12
|
+
var _a;
|
|
13
|
+
const { responseBody, title, dataMessage, hasIssues, issues } = details;
|
|
14
|
+
const issueCount = (_a = issues === null || issues === void 0 ? void 0 : issues.length) !== null && _a !== void 0 ? _a : 0;
|
|
15
|
+
const hasIssueData = Boolean(hasIssues && issues && issueCount > 0);
|
|
16
|
+
const redundantValues = [title, dataMessage].filter(Boolean);
|
|
17
|
+
const isBodyRedundant = Boolean(responseBody) && redundantValues.some((v) => v === responseBody);
|
|
18
|
+
const visibleResponseBody = responseBody && !hasIssueData && !isBodyRedundant ? responseBody : undefined;
|
|
19
|
+
return { visibleResponseBody, hasIssueData };
|
|
20
|
+
}
|
|
21
|
+
export function ErrorDetailsContent({ details, renderedTitle }) {
|
|
22
|
+
const hasFields = hasVisibleFields(details, renderedTitle);
|
|
23
|
+
const { visibleResponseBody, hasIssueData } = getExpandableContent(details);
|
|
24
|
+
const hasExpandableContent = Boolean(visibleResponseBody) || hasIssueData;
|
|
25
|
+
const expandButtonLabel = hasIssueData
|
|
26
|
+
? i18n('error-details.button_issues')
|
|
27
|
+
: i18n('error-details.button_response');
|
|
28
|
+
if (!hasFields && !hasExpandableContent) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
return (_jsxs(Flex, { direction: "column", gap: 2, className: b(), children: [hasFields && (_jsx(ErrorFieldsList, { details: details, renderedTitle: renderedTitle, className: b('fields'), valueClassName: b('field-value') })), hasExpandableContent && (_jsxs(Disclosure, { children: [_jsx(Disclosure.Summary, { children: (props) => (_jsxs(Button, { view: "outlined", size: "m", onClick: props.onClick, children: [expandButtonLabel, _jsx(Icon, { data: props.expanded ? ChevronUp : ChevronDown, size: 16 })] })) }), _jsxs("div", { className: b('expandable-content'), children: [visibleResponseBody && _jsx(ResponseBodySection, { body: visibleResponseBody }), hasIssueData && details.issues && (_jsx(IssuesSection, { issues: details.issues, triggerClassName: b('details-trigger'), disclosureClassName: b('issues') }))] })] }))] }));
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=ErrorDetails.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorDetails.js","sourceRoot":"","sources":["../../../../src/components/Errors/ResponseError/ErrorDetails.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
@use '../../../styles/mixins.scss';
|
|
2
|
+
|
|
3
|
+
.ydb-error-details {
|
|
4
|
+
min-width: 0;
|
|
5
|
+
margin-top: var(--g-spacing-3);
|
|
6
|
+
|
|
7
|
+
color: var(--g-color-text-primary);
|
|
8
|
+
|
|
9
|
+
@include mixins.body-1-typography();
|
|
10
|
+
|
|
11
|
+
&__fields {
|
|
12
|
+
min-width: 0;
|
|
13
|
+
|
|
14
|
+
.g-definition-list {
|
|
15
|
+
padding-inline-end: 0;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.g-definition-list__copy-button {
|
|
19
|
+
position: static;
|
|
20
|
+
|
|
21
|
+
opacity: 1;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.g-definition-list__copy-container {
|
|
25
|
+
align-items: center;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
&__field-value {
|
|
30
|
+
word-break: break-all;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
&__details-trigger {
|
|
34
|
+
all: unset;
|
|
35
|
+
|
|
36
|
+
display: inline-flex;
|
|
37
|
+
align-items: center;
|
|
38
|
+
|
|
39
|
+
padding: var(--g-spacing-half) 0;
|
|
40
|
+
|
|
41
|
+
cursor: pointer;
|
|
42
|
+
|
|
43
|
+
color: var(--g-color-text-secondary);
|
|
44
|
+
|
|
45
|
+
&:hover {
|
|
46
|
+
color: var(--g-color-text-primary);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
&__expandable-content {
|
|
51
|
+
padding-top: var(--g-spacing-2);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
&__issues {
|
|
55
|
+
margin-top: var(--g-spacing-2);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -1,7 +1,22 @@
|
|
|
1
|
+
import type { ErrorDetails } from '../../../utils/errors/extractErrorDetails';
|
|
2
|
+
import './ResponseError.scss';
|
|
1
3
|
interface ResponseErrorProps {
|
|
2
4
|
error?: unknown;
|
|
3
5
|
className?: string;
|
|
4
6
|
defaultMessage?: string;
|
|
5
7
|
}
|
|
8
|
+
export declare function useErrorInfo(error: unknown, defaultMessage?: string): {
|
|
9
|
+
title: string;
|
|
10
|
+
subtitle: string | undefined;
|
|
11
|
+
showSubtitle: boolean;
|
|
12
|
+
details: ErrorDetails | null;
|
|
13
|
+
};
|
|
14
|
+
interface ResponseErrorMessageProps {
|
|
15
|
+
subtitle?: string;
|
|
16
|
+
showSubtitle: boolean;
|
|
17
|
+
details?: ErrorDetails | null;
|
|
18
|
+
renderedTitle?: string;
|
|
19
|
+
}
|
|
20
|
+
export declare function ResponseErrorMessage({ subtitle, showSubtitle, details, renderedTitle, }: ResponseErrorMessageProps): import("react/jsx-runtime").JSX.Element;
|
|
6
21
|
export declare const ResponseError: ({ error, className, defaultMessage, }: ResponseErrorProps) => import("react/jsx-runtime").JSX.Element;
|
|
7
22
|
export {};
|
|
@@ -1,8 +1,53 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { Alert, Flex, Text } from '@gravity-ui/uikit';
|
|
4
|
+
import { cn } from '../../../utils/cn';
|
|
5
|
+
import { extractErrorDetails, prepareCommonErrorMessage } from '../../../utils/errors';
|
|
6
|
+
import { getNetworkContext } from '../../../utils/networkInfo';
|
|
7
|
+
import { isNetworkError } from '../../../utils/response';
|
|
3
8
|
import i18n from '../i18n';
|
|
9
|
+
import { ErrorDetailsContent } from './ErrorDetails';
|
|
10
|
+
import './ResponseError.scss';
|
|
11
|
+
const b = cn('ydb-response-error');
|
|
12
|
+
function enrichWithNetworkContext(details, error) {
|
|
13
|
+
if (!details || details.status) {
|
|
14
|
+
return details;
|
|
15
|
+
}
|
|
16
|
+
const isNetworkErr = details.errorCode === 'ERR_NETWORK' || isNetworkError(error);
|
|
17
|
+
if (!isNetworkErr) {
|
|
18
|
+
return details;
|
|
19
|
+
}
|
|
20
|
+
const networkCtx = getNetworkContext();
|
|
21
|
+
const extra = {};
|
|
22
|
+
if (!networkCtx.online) {
|
|
23
|
+
extra.networkOnline = false;
|
|
24
|
+
}
|
|
25
|
+
if (networkCtx.effectiveType && networkCtx.effectiveType !== '4g') {
|
|
26
|
+
extra.networkEffectiveType = networkCtx.effectiveType;
|
|
27
|
+
}
|
|
28
|
+
return Object.keys(extra).length > 0 ? { ...details, ...extra } : details;
|
|
29
|
+
}
|
|
30
|
+
export function useErrorInfo(error, defaultMessage) {
|
|
31
|
+
const fallback = defaultMessage !== null && defaultMessage !== void 0 ? defaultMessage : i18n('responseError.defaultMessage');
|
|
32
|
+
const fallbackMessage = prepareCommonErrorMessage(error, fallback);
|
|
33
|
+
const baseDetails = React.useMemo(() => extractErrorDetails(error), [error]);
|
|
34
|
+
const details = React.useMemo(() => enrichWithNetworkContext(baseDetails, error), [baseDetails, error]);
|
|
35
|
+
const offlineTitle = (details === null || details === void 0 ? void 0 : details.networkOnline) === false ? i18n('error-details.network_offline') : undefined;
|
|
36
|
+
const title = offlineTitle || (details === null || details === void 0 ? void 0 : details.title) || fallbackMessage;
|
|
37
|
+
const subtitle = (details === null || details === void 0 ? void 0 : details.dataMessage) ||
|
|
38
|
+
((details === null || details === void 0 ? void 0 : details.title) &&
|
|
39
|
+
fallbackMessage !== details.title &&
|
|
40
|
+
fallbackMessage !== details.statusText
|
|
41
|
+
? fallbackMessage
|
|
42
|
+
: undefined);
|
|
43
|
+
const showSubtitle = Boolean(subtitle) && subtitle !== title;
|
|
44
|
+
return { title, subtitle, showSubtitle, details };
|
|
45
|
+
}
|
|
46
|
+
export function ResponseErrorMessage({ subtitle, showSubtitle, details, renderedTitle, }) {
|
|
47
|
+
return (_jsxs(Flex, { direction: "column", gap: 2, className: b('message'), children: [showSubtitle && (_jsx(Text, { variant: "body-1", className: b('data-message'), children: subtitle })), details && _jsx(ErrorDetailsContent, { details: details, renderedTitle: renderedTitle })] }));
|
|
48
|
+
}
|
|
4
49
|
export const ResponseError = ({ error, className, defaultMessage = i18n('responseError.defaultMessage'), }) => {
|
|
5
|
-
const
|
|
6
|
-
return _jsx("
|
|
50
|
+
const { title, subtitle, showSubtitle, details } = useErrorInfo(error, defaultMessage);
|
|
51
|
+
return (_jsx(Alert, { theme: "danger", title: title, message: _jsx(ResponseErrorMessage, { subtitle: subtitle, showSubtitle: showSubtitle, details: details, renderedTitle: title }), className: b(null, className) }));
|
|
7
52
|
};
|
|
8
53
|
//# sourceMappingURL=ResponseError.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResponseError.js","sourceRoot":"","sources":["../../../../src/components/Errors/ResponseError/ResponseError.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"ResponseError.js","sourceRoot":"","sources":["../../../../src/components/Errors/ResponseError/ResponseError.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAC,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAC,EAAE,EAAC,MAAM,mBAAmB,CAAC;AACrC,OAAO,EAAC,mBAAmB,EAAE,yBAAyB,EAAC,MAAM,uBAAuB,CAAC;AAErF,OAAO,EAAC,iBAAiB,EAAC,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAC,cAAc,EAAC,MAAM,yBAAyB,CAAC;AACvD,OAAO,IAAI,MAAM,SAAS,CAAC;AAE3B,OAAO,EAAC,mBAAmB,EAAC,MAAM,gBAAgB,CAAC;AAEnD,OAAO,sBAAsB,CAAC;AAE9B,MAAM,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,CAAC;AAQnC,SAAS,wBAAwB,CAC7B,OAA4B,EAC5B,KAAc;IAEd,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QAC7B,OAAO,OAAO,CAAC;IACnB,CAAC;IACD,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,KAAK,aAAa,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC;IAClF,IAAI,CAAC,YAAY,EAAE,CAAC;QAChB,OAAO,OAAO,CAAC;IACnB,CAAC;IACD,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACvC,MAAM,KAAK,GAA0B,EAAE,CAAC;IACxC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QACrB,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC;IAChC,CAAC;IACD,IAAI,UAAU,CAAC,aAAa,IAAI,UAAU,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;QAChE,KAAK,CAAC,oBAAoB,GAAG,UAAU,CAAC,aAAa,CAAC;IAC1D,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAC,GAAG,OAAO,EAAE,GAAG,KAAK,EAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAc,EAAE,cAAuB;IAChE,MAAM,QAAQ,GAAG,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,IAAI,CAAC,8BAA8B,CAAC,CAAC;IACxE,MAAM,eAAe,GAAG,yBAAyB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACnE,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7E,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CACzB,GAAG,EAAE,CAAC,wBAAwB,CAAC,WAAW,EAAE,KAAK,CAAC,EAClD,CAAC,WAAW,EAAE,KAAK,CAAC,CACvB,CAAC;IAEF,MAAM,YAAY,GACd,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,aAAa,MAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACzF,MAAM,KAAK,GAAG,YAAY,KAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,CAAA,IAAI,eAAe,CAAC;IAChE,MAAM,QAAQ,GACV,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW;QACpB,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK;YACf,eAAe,KAAK,OAAO,CAAC,KAAK;YACjC,eAAe,KAAK,OAAO,CAAC,UAAU;YAClC,CAAC,CAAC,eAAe;YACjB,CAAC,CAAC,SAAS,CAAC,CAAC;IACrB,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,KAAK,KAAK,CAAC;IAE7D,OAAO,EAAC,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAC,CAAC;AACpD,CAAC;AASD,MAAM,UAAU,oBAAoB,CAAC,EACjC,QAAQ,EACR,YAAY,EACZ,OAAO,EACP,aAAa,GACW;IACxB,OAAO,CACH,MAAC,IAAI,IAAC,SAAS,EAAC,QAAQ,EAAC,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,aACnD,YAAY,IAAI,CACb,KAAC,IAAI,IAAC,OAAO,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,CAAC,cAAc,CAAC,YAC9C,QAAQ,GACN,CACV,EACA,OAAO,IAAI,KAAC,mBAAmB,IAAC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,GAAI,IAChF,CACV,CAAC;AACN,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAC1B,KAAK,EACL,SAAS,EACT,cAAc,GAAG,IAAI,CAAC,8BAA8B,CAAC,GACpC,EAAE,EAAE;IACrB,MAAM,EAAC,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAC,GAAG,YAAY,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAErF,OAAO,CACH,KAAC,KAAK,IACF,KAAK,EAAC,QAAQ,EACd,KAAK,EAAE,KAAK,EACZ,OAAO,EACH,KAAC,oBAAoB,IACjB,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,KAAK,GACtB,EAEN,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,GAC/B,CACL,CAAC;AACN,CAAC,CAAC"}
|